law gsel
lawful-bytes@0.1.1.0 · proof_fast_append.bend:599
import lawful-bytes@0.1.1.0/proof_fast_append.bend as ProofFastAppend
import Base
import lawful-bytes@0.1.1.0/proof_core.bend as C
import lawful-words@0.1.0.0/defs.bend as W
import lawful-arrays@0.1.0.0/defs.bend as A
import lawful-arrays@0.1.0.0/proof_tree.bend as P
599law gsel:
600 for +ts: P.Tree<U32>
601 for +e: Nat
602 for +si: U32
603 for +p: U32
604 for +lo: U32
605 for +r: Nat
606 for +j: Nat
607 for +b: Bool
608 for +hf: {A.full(U32, P.fromT(U32, ts), e) == True{} : Bool}
609 for +he: {Nat.is_le(e, 29n) == True{} : Bool}
610 for +hlo: {lo == C.WD(ts, si) : U32}
611 for +hp: {U32.to_nat(p) == Nat.add(U32.to_nat(si), 1n) : Nat}
612 for +hr: {Nat.is_lt(r, 4n) == True{} : Bool}
613 for +hj: {Nat.is_lt(j, 4n) == True{} : Bool}
614 for +hb: {Nat.is_lt(Nat.add(Nat.mul(U32.to_nat(si), 4n), Nat.add(r, j)), Nat.mul(4n, Nat.pow(2n, e))) == True{} : Bool}
615 for +hq: {Nat.is_lt(Nat.add(r, j), 4n) == b : Bool}
616 {List.get(&2, U32, US(ts), Nat.add(Nat.mul(U32.to_nat(si), 4n), Nat.add(r, j))) == Some{W.byte(W.merge(lo, C.WD(ts, p), r), j)} : Maybe<&2, U32>}