def comb_small

bend-collections-laws-math@1.0.0.0 · proofs/math/natural/fact.bend:268

import bend-collections-laws-math@1.0.0.0/proofs/math/natural/fact.bend as Fact
import Base
import bend-collections-laws-math@1.0.0.0/proofs/lib/nat.bend as N
import bend-collections-laws-math@1.0.0.0/src/math/natural.bend as M
import bend-collections-laws-math@1.0.0.0/spec/math/natural.bend as S

268def comb_small(+n: Nat, +k: Nat, +b: Bool, +hb: {Nat.is_lt(n, k) == b : Bool}) -> {M.comb_small(n, k, b) == S.choose(n, k) : Nat}:
269  match b:
270    case True{}:
271      Equal.sym(Nat, S.choose(n, k), 0n, choose_eq_zero(n, k, hb))
272    case False{}:
273      +m = Nat.min(k, Nat.sub(n, k))
274      %Equal.sym(Nat, 1n, S.choose(n, 0n), Equal.sym(Nat, S.choose(n, 0n), 1n, choose_zero_right(n))) : {M.comb_go(m, n, 0n, _) == S.choose(n, k) : Nat}
275      Equal.trans(Nat, M.comb_go(m, n, 0n, S.choose(n, 0n)), S.choose(n, m), S.choose(n, k), comb_go(m, n, 0n), comb_min(n, k, N.not_lt_le(n, k, hb), Nat.is_lt(k, Nat.sub(n, k)), {==}))

Uses (15)

Used by (1)