nat-factorization-prime-1
- Kind
- kernel-term
- Status
- checked
Supports: Nat.factorization_prime is admitted by the trusted kernel gate with the type recorded in formal.statement.
out=$(cargo run -q -p axeyum-lean-kernel --example nat_theorem_inventory -- factorization_prime 2>&1) && test "$(printf "%s\n" "$out" | grep -cE '^Nat\.factorization_prime.5.\(\(x0 : AxNat\) -> \(\(x1 : AxNat\) -> \(\(x2 : AxNat\.lt AxNat\.zero \(AxNat\.Multiset\.count \(AxNat\.factorization x0\) x1\)\) -> And \(AxNat\.le \(AxNat\.succ \(AxNat\.succ AxNat\.zero\)\) x1\) \(\(\(x3 : AxNat\) -> \(\(x4 : AxNat\.dvd x3 x1\) -> Or \(Eq\.\{1\} AxNat x3 \(AxNat\.succ AxNat\.zero\)\) \(Eq\.\{1\} AxNat x3 x1\)\)\)\)\)\)\)$')" = 1 Evidence notes
`build_nat_prelude` admits this theorem only through the trusted kernel gate, so a successful build IS the type-check. The pattern pins the ARITY and the FULL rendered type, not the theorem's presence: `scripts/new-fact.py` rejected a name-only pattern as population-only, because it catches the row disappearing but not the statement changing inside a row that is still there.