def restore
stelliferous@0.0.2.0 · proofs/word_subtraction.bend:94
import stelliferous@0.0.2.0/proofs/word_subtraction.bend as WordSubtraction
import Base
import stelliferous@0.0.2.0/proofs/natural_addition.bend as Addition
import stelliferous@0.0.2.0/proofs/word_encoding.bend as WordEncoding
94def restore(+a: Nat,+b: Nat,h: {Nat.is_le(b,a) == True{} : Bool}) -> {Nat.add(Nat.sub(a,b),b) == a : Nat}:
95 match a b:
96 case 0n 0n:
97 {==}
98 case 0n 1n+b:
99 Empty.absurd({Nat.add(Nat.sub(0n,1n+b),1n+b) == 0n : Nat},WordEncoding.false_true(h))
100 case 1n+ +a 0n:
101 Addition.zero_right(1n+a)
102 case 1n+ +a 1n+ +b:
103 %Equal.sym(Nat,Nat.add(Nat.sub(a,b),1n+b),1n+Nat.add(Nat.sub(a,b),b),Addition.successor_right(Nat.sub(a,b),b)) : {_ == 1n+a : Nat}
104 %restore(a,b,h) : {1n+Nat.add(Nat.sub(a,b),b) == 1n+_ : Nat}
105 {==}