law nv

lawful-fields@0.1.1.0 · proof_num.bend:492

import lawful-fields@0.1.1.0/proof_num.bend as ProofNum
import Base
import lawful-bytes@0.1.1.0/defs.bend as D
import lawful-bytes@0.1.1.0/bytes.bend as B
import lawful-fields@0.1.1.0/defs.bend as F
import lawful-fields@0.1.1.0/fields.bend as C
import lawful-bytes@0.1.1.0/proof_core.bend as K
import lawful-arrays@0.1.0.0/proof_tree.bend as P

492law nv:
493  for +n: Nat
494  for +len: U32
495  for +t: P.Tree<U32>
496  for +d: Nat
497  for +j: U32
498  for +ok: Bool
499  for +acc: U32
500  for +m: Maybe<&2, Nat>
501  for +M: Nat
502  for +q: Nat
503  for +hm: {Nat.pow(2n, 32n) == M : Nat}
504  for +hcq: {U32.to_nat(429496729) == q : Nat}
505  for +hq: {Nat.add(Nat.mul(q, 10n), 6n) == M : Nat}
506  for +h: {D.ok(K.BT(len, t), d) == True{} : Bool}
507  for +hjn: {Nat.is_le(Nat.add(U32.to_nat(j), n), U32.to_nat(len)) == True{} : Bool}
508  for +hi: Inv(ok, acc, m, M)
509  {F.nat_of(Pair.snd(D.Bytes, Maybe<&2, U32>, C.num.go(n, B.at(K.BT(len, t), j), j, acc, ok))) == F.decb.of(F.dec.go(D.slice(D.view(K.BT(len, t)), U32.to_nat(j), n), m), M) : Maybe<&2, Nat>}

Uses (48)

Used by (1)