def small

stelliferous@0.0.2.0 · proofs/nat_division.bend:37

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

37def small(+r: Nat,+b: Nat,h: {Nat.is_lt(r,b) == True{} : Bool}) -> {Nat.divmod(r,b) == (0n,r) : Nat & Nat}:
38  match b:
39    case 0n:
40      Empty.absurd({Nat.divmod(r,0n) == (0n,r) : Nat & Nat},WordEncoding.false_true(Equal.trans(Bool,False{},Nat.is_lt(r,0n),True{},
41            Equal.sym(Bool,Nat.is_lt(r,0n),False{},lt_zero(r)),h)))
42    case 1n+ +p:
43      %Addition.zero_right(r) : {Nat.divmod.go(r,p,0n,0n) == (0n,_) : Nat & Nat}
44      go_small(r,p,0n,0n,lt_succ_le(r,p,h))

Uses (15)

Used by (1)