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      {==}

Uses (8)

Used by (1)