kernel-Nat.totient_even
- Kind
- kernel-term
- Status
- checked
Supports: 2 < n -> Even (totient n)
test "$(cargo run -q -p axeyum-lean-kernel --example nat_theorem_inventory -- totient_even 2>/dev/null | grep -Ec '^Nat\.totient_even[[:space:]]')" -ge 1 Evidence notes
`build_nat_prelude` admits this theorem through the trusted `Kernel::add_declaration` gate, which re-checks the constructed proof term against the stated type. Route: peel index 0 off `[0,n)` via `countRange_split(f,1,n-1)` (`f 0 = false` since `n > 1`, via `gcd_zero_left` + `beq_eq_false_of_ne`), reducing the goal to `Even (countRange h (n-1))` for the shifted predicate `h(k) := f(1+k)`. Apply the general, `totient`-independent `Nat.countRange_reversal_even` (`count_range_reversal.rs`, landed by the prior `totient-even-exec` lane) at `L := n-1`: the reflection-invariance hypothesis chains `gcd(k1,n) = 1 <-> gcd(k2,n) = 1` for `k1+k2=n` through THREE already-declared `Iff`s (`coprime_self_add_right` twice plus `coprime_symmetric`, no new gcd fact); the no-fixed-point hypothesis derives `False` from a would-be fixed point directly -- `gcd k1 n = 1` plus `k1 | (k1+k1) = n` gives `k1 | gcd k1 n = 1` so `k1 = 1`, forcing `n = 2`, contradicting `2 < n` via `lt_irrefl`. `nat_theorem_inventory` exits non-zero for a name that does not exist, and the `grep -c` requires the admitted declaration to be printed (confirmed 1 for the real name, 0 for a fabricated one).