def bit_split_bit
bend-collections-laws-math@1.0.0.0 · proofs/lib/nat.bend:360
import bend-collections-laws-math@1.0.0.0/proofs/lib/nat.bend as Nat
import Base
import bend-collections-laws-math@1.0.0.0/proofs/lib/lemmas/spec/numeric.bend as S
360
361def bit_split_bit(+b: Bool, +c: Bool, +u: Nat, +v: Nat, e: {Nat.add(S.bit_value(b), Nat.double(u)) == Nat.add(S.bit_value(c), Nat.double(v)) : Nat}) -> {b == c : Bool}:
362 match b c:
363 case False{} False{}:
364 {==}
365 case True{} True{}:
366 {==}
367 case False{} True{}:
368 Empty.absurd({False{} == True{} : Bool}, even_odd(u, v, e))
369 case True{} False{}:
370 Empty.absurd({True{} == False{} : Bool}, even_odd(v, u, Equal.sym(Nat, 1n+Nat.double(u), Nat.double(v), e)))