def bit_split_val
bend-collections-laws-crypto@1.0.0.0 · proofs/lib/nat.bend:372
import bend-collections-laws-crypto@1.0.0.0/proofs/lib/nat.bend as Nat
import Base
import bend-collections-laws-crypto@1.0.0.0/proofs/lib/lemmas/spec/numeric.bend as S
372def bit_split_val(+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}) -> {u == v : Nat}:
373 match b c:
374 case False{} False{}:
375 double_inj(u, v, e)
376 case True{} True{}:
377 double_inj(u, v, succ_inj(Nat.double(u), Nat.double(v), e))
378 case False{} True{}:
379 Empty.absurd({u == v : Nat}, even_odd(u, v, e))
380 case True{} False{}:
381 Empty.absurd({u == v : Nat}, even_odd(v, u, Equal.sym(Nat, 1n+Nat.double(u), Nat.double(v), e)))