Exact expanded PA statement
forall p. ((~(p = 1) /\ forall wip_prime_left_wer_shape_prime wip_prime_right_wer_shape_prime. p = wip_prime_left_wer_shape_prime * wip_prime_right_wer_shape_prime -> wip_prime_left_wer_shape_prime = 1 \/ wip_prime_right_wer_shape_prime = 1)) -> p = 2 \/ exists m. p = S (S (S (m + m)))Structural proof guide
Generated structural guide
A prime is two or has exactly the doubled terminal PairOrder shape.
Use the direct prerequisites eq_decidable, prime_ne_two_is_odd, nonzero_is_succ, mul_succ_left, mul_zero_left, zero_add, add_succ_left, add_assoc, add_comm as previously established PA formulas.
The proof proceeds by case analysis (4), intermediate claims (5), equality transport (2), certified simplification (2).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA004G eq_decidable PA0064 prime_ne_two_is_odd PA001V nonzero_is_succ PA000G mul_succ_left PA000D mul_zero_left PA0001 zero_add PA000E add_succ_left PA0009 add_assoc PA000F add_commDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Alpha-v16 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.
- 0001
intro p - 0002
intro hp - 0003
have hcases : p = 2 \/ ~(p = 2) - 0004
specialize eq_decidable p - 0005
specialize eq_decidable 2 - 0006
exact eq_decidable - 0007
cases hcases - 0008
left - 0009
exact hcases_left - 0010
right - 0011
have hodd : exists h. p = 2 * h + 1 - 0012
specialize prime_ne_two_is_odd p - 0013
apply prime_ne_two_is_odd - 0014
exact hp - 0015
exact hcases_right - 0016
cases hodd - 0017
have hparts : (~(p = 1) /\ forall wip_prime_left_wer_shape_prime wip_prime_right_wer_shape_prime. p = wip_prime_left_wer_shape_prime * wip_prime_right_wer_shape_prime -> wip_prime_left_wer_shape_prime = 1 \/ wip_prime_right_wer_shape_prime = 1) - 0018
exact hp - 0019
cases hparts - 0020
have hh : ~(x = 0) - 0021
intro hxzero - 0022
apply hparts_left - 0023
trans 2 * x + 1 - 0024
exact hodd_witness - 0025
rewrite hxzero - 0026
simp [mul_succ_left, mul_zero_left, zero_add, add_succ_left] - 0027
have hsucc : exists m. x = S m - 0028
specialize nonzero_is_succ x - 0029
apply nonzero_is_succ - 0030
exact hh - 0031
cases hsucc - 0032
exists x1 - 0033
trans 2 * S x1 + 1 - 0034
rewrite <- hsucc_witness - 0035
exact hodd_witness - 0036
simp [mul_succ_left, mul_zero_left, zero_add, add_succ_left, add_assoc, add_comm]