def cn_mono

bend-collections-laws-math@1.0.0.0 · proofs/math/typed/combnat.bend:77

import bend-collections-laws-math@1.0.0.0/proofs/math/typed/combnat.bend as Combnat
import Base
import bend-collections-laws-math@1.0.0.0/spec/math/natural.bend as S
import bend-collections-laws-math@1.0.0.0/proofs/lib/nat.bend as N
import bend-collections-laws-math@1.0.0.0/proofs/lib/logic.bend as L

77def cn_mono(+m: Nat, +j: Nat) -> {Nat.is_le(S.choose(m, j), S.choose(1n+m, j)) == True{} : Bool}:
78  match m j:
79    case 0n 0n:
80      {==}
81    case 0n 1n+jp:
82      N.zero_le(S.choose(1n, 1n+jp))
83    case 1n+mp 0n:
84      {==}
85    case 1n+ +mp 1n+ +jp:
86      +a = S.choose(1n+mp, jp)
87      +b = S.choose(1n+mp, 1n+jp)
88      L.subst(Nat, z => {Nat.is_le(b, z) == True{} : Bool}, Nat.add(b, a), Nat.add(a, b), N.add_comm(b, a), N.le_add_right(b, a))

Uses (9)

Used by (2)