law gsv

lawful-arrays@0.1.0.0 · proof_index.bend:252

import lawful-arrays@0.1.0.0/proof_index.bend as ProofIndex
import Base
import lawful-arrays@0.1.0.0/defs.bend as D
import lawful-arrays@0.1.0.0/proof_tree.bend as P

252# A swap writes leaf i of the list of leaves.
253law gsv:
254  for -T: Data
255  for +d: Nat
256  for +t: P.Tree<T>
257  for +n: U32
258  for +i: U32
259  for +v: T
260  for +z: Bool
261  for +hf: {D.full(T, P.fromT(T, t), d) == True{} : Bool}
262  for +hn: {U32.to_nat(n) == Nat.pow(2n, d) : Nat}
263  for +hi: {Nat.is_lt(U32.to_nat(i), Nat.pow(2n, d)) == True{} : Bool}
264  for +hz: {U32.is_lt(i, U32.shr(n)) == z : Bool}
265  {D.view(T, Pair.fst(Array<T>, T, Array.swap.go(T, P.fromT(T, t), n, i, v, z)))
266    == List.set(&2, T, D.view(T, P.fromT(T, t)), U32.to_nat(i), v) : List<&2, T>}

Uses (40)

Used by (2)