law win

lawful-bytes@0.1.1.0 · proof_fast_append.bend:655

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

655# The first m bytes of a merged word are the m src bytes from 4 si + r.
656law win:
657  for +ts: P.Tree<U32>
658  for +e: Nat
659  for +si: U32
660  for +p: U32
661  for +lo: U32
662  for +r: Nat
663  for +m: Nat
664  for +hf: {A.full(U32, P.fromT(U32, ts), e) == True{} : Bool}
665  for +he: {Nat.is_le(e, 29n) == True{} : Bool}
666  for +hlo: {lo == C.WD(ts, si) : U32}
667  for +hp: {U32.to_nat(p) == Nat.add(U32.to_nat(si), 1n) : Nat}
668  for +hr: {Nat.is_lt(r, 4n) == True{} : Bool}
669  for +hm: {Nat.is_le(m, 4n) == True{} : Bool}
670  for +hb: {Nat.is_le(Nat.add(Nat.add(Nat.mul(U32.to_nat(si), 4n), r), m), Nat.mul(4n, Nat.pow(2n, e))) == True{} : Bool}
671  {List.take(&2, U32, C.L4(W.merge(lo, C.WD(ts, p), r)), m) == List.take(&2, U32, List.drop(&2, U32, US(ts), Nat.add(Nat.mul(U32.to_nat(si), 4n), r)), m) : List<&2, U32>}

Uses (23)

Used by (1)