kernel-Nat.coprime_factorial_of_lt_prime
- Kind
- kernel-term
- Status
- checked
Supports: ∀ {p n : ℕ}, Nat.Prime p → n < p → p.Coprime n.factorial
test "$(cargo run -q -p axeyum-lean-kernel --example nat_theorem_inventory -- coprime_factorial_of_lt_prime 2>/dev/null | grep -Ec '^Nat\.coprime_factorial_of_lt_prime[[:space:]]')" -ge 1 Evidence notes
`declare_coprime_factorial_of_lt_prime` (`nat_prelude/gauss_lemma.rs`) admits `Nat.coprime_factorial_of_lt_prime` through the trusted `Kernel::add_declaration` gate. REPOINTED 2026-09-02 by the daily retrieval audit: this fact previously named `Nat.prime_coprime_factorial_of_lt` (`nat_prelude/prime_dvd_factorial_lcm.rs`), a SECOND declaration of the identical proposition -- `shape_search --include-constructed --duplicates` reported the pair, and the two rendered types are byte-identical in `kernel_declaration_projection`. The later declaration was deleted and this fact repointed at the earlier one (ADR-0608's survivor rule: `gauss_lemma`'s landed first, under ADR-1070, and is already consumed by `int_prelude/gauss_factorial_coprime.rs`). The proposition proved is unchanged. `Coprime` has no separate name over `Nat` in this prelude (matching `coprime_of_lt_prime`'s own convention); it is spelled `gcd p n! = 1` directly. Induction on `n`, `p` and the primality hypothesis held fixed: at `n = 0`, `factorial 0 == 1` (defeq), and `gcd p 1 = 1` unconditionally (`gcd_dvd_right` + `eq_one_of_dvd_one`); at `n = succ k`, the induction hypothesis is weakened from `succ k < p` to `k < p` (`le_succ` + `le_trans`), `coprime_of_lt_prime` (flipped by `gcd_comm`) gives `gcd p (succ k) = 1` directly from `succ k < p`, and `coprime_mul_of_coprime` combines the two coprimality facts, with `factorial (succ k)` defeq `mul (factorial k) (succ k)`.