def ns.double_inj

bend-osdev-word64@0.1.1.0 · proof_shift.bend:126

import bend-osdev-word64@0.1.1.0/proof_shift.bend as ProofShift
import Base
import bend-osdev-word64@0.1.1.0/proof_value.bend as P

126def ns.double_inj(a: Nat, b: Nat, e: {Nat.double(a) == Nat.double(b) : Nat}) -> {a == b : Nat}:
127  match a b:
128    case 0n 0n:
129      {==}
130    case 0n 1n+ +q:
131      Empty.absurd({0n == 1n+q : Nat}, ns.sz(1n+Nat.double(q), Equal.sym(Nat, 0n, 2n+Nat.double(q), e)))
132    case 1n+ +p 0n:
133      Empty.absurd({1n+p == 0n : Nat}, ns.sz(1n+Nat.double(p), e))
134    case 1n+ +p 1n+ +q:
135      P.wn.succ_cong(p, q, ns.double_inj(p, q, ns.succ_inj(Nat.double(p), Nat.double(q), ns.succ_inj(1n+Nat.double(p), 1n+Nat.double(q), e))))

Uses (7)

Used by (1)