def h.route_w

bend-kit-collections@0.1.4.1 · PROOF.bend:1948

import bend-kit-collections@0.1.4.1/PROOF.bend as PROOF
import Base

1948def h.route_w(
1949  +n: Nat, x: Word(n), y: Word(n), m: Word(n),
1950  em: {h.at1(n, m) == True{} : Bool},
1951  ex: {Cmp.is_eq(Word.cmp(n, Word.and(n, x, m), Word.zero(n))) == False{} : Bool},
1952  ey: {Cmp.is_eq(Word.cmp(n, Word.and(n, y, m), Word.zero(n))) == False{} : Bool}
1953) -> {Cmp.is_eq(Word.cmp(n, Word.and(n, x, m), Word.and(n, y, m))) == True{} : Bool}:
1954  match n:
1955    case 0n:
1956      {==}
1957    case 1n+p:
1958      match x y m:
1959        case WCon{+a, +xt} WCon{+c, +yt} WCon{True{}, +mt}:
1960          h.route_t(a, c, p, xt, yt, mt, em, ex, ey)
1961        case WCon{+a, +xt} WCon{+c, +yt} WCon{False{}, +mt}:
1962          h.lift(a, c, Word.cmp(p, Word.and(p, xt, mt), Word.and(p, yt, mt)),
1963            h.route_w(p, xt, yt, mt, em,
1964              h.low(a, Word.cmp(p, Word.and(p, xt, mt), Word.zero(p)), ex),
1965              h.low(c, Word.cmp(p, Word.and(p, yt, mt), Word.zero(p)), ey)))

Uses (12)

Used by (1)