def truncate_encode
stelliferous@0.0.2.0 · proofs/word_multiplication.bend:34
import stelliferous@0.0.2.0/proofs/word_multiplication.bend as WordMultiplication
import Base
import stelliferous@0.0.2.0/proofs/word_arithmetic.bend as WordArithmetic
34def truncate_encode(+a: Nat,+n: Nat) -> {truncate(n,WordArithmetic.encode(a,1n+n)) == WordArithmetic.encode(a,n) : Word(n)}:
35 match a:
36 case 0n:
37 truncate_zero(n)
38 case 1n+ +p:
39 %Equal.sym(Word(n),truncate(n,Word.inc(1n+n,WordArithmetic.encode(p,1n+n))),Word.inc(n,truncate(n,WordArithmetic.encode(p,1n+n))),
40 truncate_inc(n,WordArithmetic.encode(p,1n+n))) : {_ == Word.inc(n,WordArithmetic.encode(p,n)) : Word(n)}
41 %truncate_encode(p,n) : {Word.inc(n,truncate(n,WordArithmetic.encode(p,1n+n))) == Word.inc(n,_) : Word(n)}
42 {==}