law lists_step

lawful-bytes@0.1.1.0 · proof_same.bend:425

import lawful-bytes@0.1.1.0/proof_same.bend as ProofSame
import Base
import lawful-bytes@0.1.1.0/defs.bend as D

425# One step of a comparison loop: the two slices from x and y, with the
426# accumulated test rebracketed.
427law lists_step:
428  for +acc: Bool
429  for +xs: List<&2, U32>
430  for +ys: List<&2, U32>
431  for +i: Nat
432  for +j: Nat
433  for +i1: U32
434  for +j1: U32
435  for +k: Nat
436  for +x: U32
437  for +y: U32
438  for +hx: {List.get(&2, U32, xs, i) == Some{x} : Maybe<&2, U32>}
439  for +hy: {List.get(&2, U32, ys, j) == Some{y} : Maybe<&2, U32>}
440  for +ei: {U32.to_nat(i1) == Nat.add(i, 1n) : Nat}
441  for +ej: {U32.to_nat(j1) == Nat.add(j, 1n) : Nat}
442  {Bool.and(Bool.and(acc, U32.is_eq(x, y)), D.list_eq(D.slice(xs, U32.to_nat(i1), k), D.slice(ys, U32.to_nat(j1), k)))
443    == Bool.and(acc, D.list_eq(D.slice(xs, i, 1n+k), D.slice(ys, j, 1n+k))) : Bool}

Uses (15)

Used by (2)