law sv_x

lawful-bytes@0.1.1.0 · proof_shift.bend:352

import lawful-bytes@0.1.1.0/proof_shift.bend as ProofShift
import Base
import lawful-bytes@0.1.1.0/defs.bend as D
import lawful-bytes@0.1.1.0/proof_core.bend as C
import lawful-arrays@0.1.0.0/proof_tree.bend as P

352# The byte read at p is element j of drop(xs, k).
353law sv_x:
354  for +len: U32
355  for +t: P.Tree<U32>
356  for +d: Nat
357  for +k: U32
358  for +tb: P.Tree<U32>
359  for +j: U32
360  for +p: U32
361  for +h0: {D.ok(C.BT(len, t), d) == True{} : Bool}
362  for +hb: {D.ok(C.BT(len, tb), d) == True{} : Bool}
363  for +hp: {U32.to_nat(p) == Nat.add(U32.to_nat(j), U32.to_nat(k)) : Nat}
364  for +hv: {D.view(C.BT(len, tb)) == SV(D.view(C.BT(len, t)), U32.to_nat(k), U32.to_nat(j)) : List<&2, U32>}
365  for +hlt: {Nat.is_lt(Nat.add(U32.to_nat(j), U32.to_nat(k)), U32.to_nat(len)) == True{} : Bool}
366  {List.get(&2, U32, List.drop(&2, U32, D.view(C.BT(len, t)), U32.to_nat(k)), U32.to_nat(j)) == Some{C.AT(len, tb, p)} : Maybe<&2, U32>}

Uses (24)

Used by (1)