law avc

lawful-bytes@0.1.1.0 · proof_fast_append.bend:1469

import lawful-bytes@0.1.1.0/proof_fast_append.bend as ProofFastAppend
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

1469# What the word loop leaves: the bytes in use after the prefix, then src from q.
1470law avc:
1471  for +b0: Bool
1472  for +ld: U32
1473  for +td: P.Tree<U32>
1474  for +ls: U32
1475  for +ts: P.Tree<U32>
1476  for +d: Nat
1477  for +e: Nat
1478  for +s: U32
1479  for +n: U32
1480  for +l1: U32
1481  for +t1: P.Tree<U32>
1482  for +hb0: {Nat.is_lt(U32.to_nat(H0(ld)), U32.to_nat(n)) == b0 : Bool}
1483  for +e1: {C.BT(l1, t1) == D1(ld, td, ls, ts, s, n) : D.Bytes}
1484  for +hd: {D.ok(C.BT(ld, td), d) == True{} : Bool}
1485  for +he: {D.ok(C.BT(ls, ts), e) == True{} : Bool}
1486  for +hs: {Nat.is_le(Nat.add(U32.to_nat(s), U32.to_nat(n)), D.size(C.BT(ls, ts))) == True{} : Bool}
1487  for +hc: {Nat.is_le(Nat.add(D.size(C.BT(ld, td)), U32.to_nat(n)), D.cap(C.BT(ld, td))) == True{} : Bool}
1488  {List.take(&2, U32, US(TF(ld, ts, s, n, l1, t1)), Nat.add(U32.to_nat(l1), U32.to_nat(NPw(ld, n)))) == List.append(&2, U32, D.view(C.BT(l1, t1)), List.take(&2, U32, List.drop(&2, U32, US(ts), U32.to_nat(QQ(ld, s, n))), U32.to_nat(NPw(ld, n)))) : List<&2, U32>}

Uses (79)

Used by (1)