def add_divisor

stelliferous@0.0.2.0 · proofs/nat_division.bend:85

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

85def add_divisor(+a: Nat,+b: Nat,h: {Nat.is_lt(0n,b) == True{} : Bool}) -> {Nat.divmod(Nat.add(b,a),b) == bump(Nat.divmod(a,b)) : Nat & Nat}:
86  match b:
87    case 0n:
88      Empty.absurd({Nat.divmod(a,0n) == bump(Nat.divmod(a,0n)) : Nat & Nat},WordEncoding.false_true(h))
89    case 1n+ +p:
90      %Equal.sym(Nat & Nat,Nat.divmod.go(Nat.add(1n+p,a),p,0n,0n),Nat.divmod.go(a,Nat.add(p,0n),1n,0n),cycle(p,a,0n,
91          0n)) : {_ == bump(Nat.divmod.go(a,p,0n,0n)) : Nat & Nat}
92      %Equal.sym(Nat,Nat.add(p,0n),p,Addition.zero_right(p)) : {Nat.divmod.go(a,_,1n,0n) == bump(Nat.divmod.go(a,p,0n,0n)) : Nat & Nat}
93      bump_go(a,p,0n,0n)

Uses (14)

Used by (1)