def go_small
stelliferous@0.0.2.0 · proofs/nat_division.bend:25
import stelliferous@0.0.2.0/proofs/nat_division.bend as NatDivision
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
25def go_small(+n: Nat,+m: Nat,+d: Nat,+r: Nat,h: {Nat.is_le(n,m) == True{} : Bool}) -> {Nat.divmod.go(n,m,d,r) == (d,Nat.add(n,r)) : Nat & Nat}:
26 match n:
27 case 0n:
28 {==}
29 case 1n+ +p:
30 match m:
31 case 0n:
32 Empty.absurd({Nat.divmod.go(1n+p,0n,d,r) == (d,Nat.add(1n+p,r)) : Nat & Nat},WordEncoding.false_true(h))
33 case 1n+ +q:
34 %Addition.successor_right(p,r) : {Nat.divmod.go(p,q,d,1n+r) == (d,_) : Nat & Nat}
35 go_small(p,q,d,1n+r,h)