kernel-Nat.five_le_of_ne_two_of_ne_three
- Kind
- kernel-term
- Status
- checked
Supports: prime_condition p -> p != 2 -> p != 3 -> 5 <= p
test "$(cargo run -q -p axeyum-lean-kernel --release --example nat_theorem_inventory -- five_le_of_ne_two_of_ne_three 2>/dev/null | grep -xFc 'Nat.five_le_of_ne_two_of_ne_three 6 ((x0 : AxNat) -> ((x1 : And (AxNat.le (AxNat.succ (AxNat.succ AxNat.zero)) x0) (((x1 : AxNat) -> ((x2 : AxNat.dvd x1 x0) -> Or (Eq.{1} AxNat x1 (AxNat.succ AxNat.zero)) (Eq.{1} AxNat x1 x0))))) -> ((x2 : Not (Eq.{1} AxNat x0 (AxNat.succ (AxNat.succ AxNat.zero)))) -> ((x3 : Not (Eq.{1} AxNat x0 (AxNat.succ (AxNat.succ (AxNat.succ AxNat.zero))))) -> AxNat.le (AxNat.succ (AxNat.succ (AxNat.succ (AxNat.succ (AxNat.succ AxNat.zero))))) x0))))')" -ge 1 Evidence notes
The kernel re-infers the theorem type from the constructed term, matching Mathlib's `Prime p -> p != 2 -> p != 3 -> 5 <= p`. Primality is spelled inline (2 <= x /\ forall c, c|x -> c=1 \/ c=x), matching this prelude's convention (no bare `Prime` predicate; see primes.rs module doc). Proved by splitting at Nat.lt_or_ge p 5 (ops::cases_lt_or_ge): the Le 5 p side is the hypothesis itself; the Lt p 5 side is a genuine 5-way case split to concrete p in {0,1,2,3,4} (ops::cases_lt_bound_absurd, a new finite-cases eliminator whose branches discharge a FIXED goal by contradiction) -- p=0,1 contradict the primality lower bound 2<=p, p=2,3 contradict the two Not hypotheses directly, p=4 is refuted as composite (4=2*2) via the already-declared not_prime_of_dvd_of_ne.