law fgo_view

lawful-bytes@0.1.1.0 · proof_find.bend:263

import lawful-bytes@0.1.1.0/proof_find.bend as ProofFind
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-bytes@0.1.1.0/proof_core.bend as C
import lawful-arrays@0.1.0.0/proof_tree.bend as P

263# hit says byte j is c, r holds byte j + 1, j + n = to.
264law fgo_view:
265  for +n: Nat
266  for +hit: Bool
267  for +len: U32
268  for +t: P.Tree<U32>
269  for +d: Nat
270  for +j: U32
271  for +to: U32
272  for +c: U32
273  for +hh: {U32.is_eq(C.AT(len, t, j), c) == hit : Bool}
274  for +hn: {Nat.add(U32.to_nat(j), n) == U32.to_nat(to) : Nat}
275  for +hto: {Nat.is_le(U32.to_nat(to), U32.to_nat(len)) == True{} : Bool}
276  for +h: {D.ok(C.BT(len, t), d) == True{} : Bool}
277  {U32.to_nat(Pair.snd(D.Bytes, U32, B.find.go(n, hit, (C.BT(len, t), C.AT(len, t, (j + 1 : U32))), j, to, c))) == Nat.add(U32.to_nat(j), D.run_len(D.slice(D.view(C.BT(len, t)), U32.to_nat(j), n), c)) : Nat}

Uses (38)

Used by (1)