def AP.nc

bend-osdev-array@0.1.0.1 · PROOF.bend:123

import bend-osdev-array@0.1.0.1/PROOF.bend as PROOF
import Base

123def AP.nc(x: Nat, y: Nat, a: Bool, b: Bool) -> {Nat.cmp(AP.bv(a, x), AP.bv(b, y)) == Word.cmp.fin(a, b, Nat.cmp(x, y)) : Cmp}:
124  match x y:
125    case 0n 0n:
126      match a b:
127        case False{} False{}:
128          {==}
129        case False{} True{}:
130          {==}
131        case True{} False{}:
132          {==}
133        case True{} True{}:
134          {==}
135    case 0n 1n+q:
136      match a b:
137        case False{} False{}:
138          {==}
139        case False{} True{}:
140          {==}
141        case True{} False{}:
142          {==}
143        case True{} True{}:
144          {==}
145    case 1n+p 0n:
146      match a b:
147        case False{} False{}:
148          {==}
149        case False{} True{}:
150          {==}
151        case True{} False{}:
152          {==}
153        case True{} True{}:
154          {==}
155    case 1n+p 1n+q:
156      match a b:
157        case False{} False{}:
158          AP.nc(p, q, False{}, False{})
159        case False{} True{}:
160          AP.nc(p, q, False{}, True{})
161        case True{} False{}:
162          AP.nc(p, q, True{}, False{})
163        case True{} True{}:
164          AP.nc(p, q, True{}, True{})

Uses (6)

Used by (4)