kernel-Nat.prime_coprime_descFactorial_of_lt_of_le
- Kind
- kernel-term
- Status
- checked
Supports: ∀ {p n k : ℕ}, Nat.Prime p → n < p → k ≤ n → p.Coprime (n.descFactorial k)
test "$(cargo run -q -p axeyum-lean-kernel --example nat_theorem_inventory -- prime_coprime_descFactorial_of_lt_of_le 2>/dev/null | grep -Ec '^Nat\.prime_coprime_descFactorial_of_lt_of_le[[:space:]]')" -ge 1 Evidence notes
`declare_prime_coprime_desc_factorial_of_lt_of_le` (`nat_prelude/prime_dvd_factorial_lcm.rs`) admits `Nat.prime_coprime_descFactorial_of_lt_of_le` through the trusted `Kernel::add_declaration` gate. Same induction shape as `prime_coprime_factorial_of_lt`, this time on `k` with `n` and `p` (and the `n < p` hypothesis) held fixed against `Nat.descFactorial`'s own recursion. At `k = 0`, `n.descFactorial 0 == 1` (defeq), same `gcd_dvd_right`/`eq_one_of_dvd_one` base case. At `k = succ j`, the induction hypothesis is weakened from `succ j <= n` to `j <= n` (`le_of_lt`, since `Le (succ j) n` is defeq `Lt j n`); `coprime_of_lt_prime` needs `0 < n - j` (a locally-copied `sub_pos_of_lt`, built from `sub_add_cancel`/`add_comm`/`pos_of_lt_add_left` per this crate's own per-file local-helper convention) and `n - j < p` (`sub_le` bounding `n - j <= n`, then `lt_of_le_of_lt` against `n < p`); `coprime_mul_of_coprime` combines it with the induction hypothesis, and `desc_factorial_succ` (`n.descFactorial (succ j) == (n-j) * n.descFactorial j`, defeq) identifies the product.