kernel-Nat.totient_gcd_mul_totient_mul
- Kind
- kernel-term
- Status
- checked
Supports: totient(gcd a b) * totient(a*b) = totient(a) * totient(b) * gcd(a,b), with the whole rendered type pinned.
test "$(cargo run -q -p axeyum-lean-kernel --example nat_theorem_inventory -- totient_gcd_mul_totient_mul 2>/dev/null | tr '\t' ' ' | grep -Fc 'Nat.totient_gcd_mul_totient_mul 2 ((x0 : AxNat) -> ((x1 : AxNat) -> Eq.{1} AxNat (AxNat.mul (AxNat.totient (AxNat.gcd x0 x1)) (AxNat.totient (AxNat.mul x0 x1))) (AxNat.mul (AxNat.mul (AxNat.totient x0) (AxNat.totient x1)) (AxNat.gcd x0 x1))))')" -ge 1 Evidence notes
The grep pins the WHOLE rendered type, not just the name. Verified both directions with /usr/bin/grep -Fc explicitly (not the interactive-shell ugrep): the real name gives count 1, and `totient_gcd_mul_totient_mul_nonexistent_xyz` makes `nat_theorem_inventory` exit 1 with `error: no Nat theorem matches ...` (an absent theorem is a failed check, not an empty report), so `test ... -ge 1` fails as required either way. `nat_theorem_inventory` keeps only the LAST of several name arguments if more than one is passed (measured 2026-08-30), so exactly one name is passed here.