Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved. Exact original first-admission records.
Exact expanded PA statement
forall p n a A. p = S n -> ((~(p = 1) /\ forall frm_prime_left_predecessor_prime frm_prime_right_predecessor_prime. p = frm_prime_left_predecessor_prime * frm_prime_right_predecessor_prime -> frm_prime_left_predecessor_prime = 1 \/ frm_prime_right_predecessor_prime = 1)) -> (~(exists frm_factor_predecessor_multiplier. a = p * frm_factor_predecessor_multiplier)) -> (exists ff_b_predecessor_power ff_c_predecessor_power. ((forall ff_i_predecessor_power_repeat. (exists ff_lt_predecessor_power_repeat_bound. ff_lt_predecessor_power_repeat_bound + S ff_i_predecessor_power_repeat = n) -> (((exists ff_h_predecessor_power_repeat_decoded. ff_h_predecessor_power_repeat_decoded + S (a) = S ((S (ff_i_predecessor_power_repeat)) * ff_c_predecessor_power)) /\ exists ff_q_predecessor_power_repeat_decoded. ff_b_predecessor_power = ff_q_predecessor_power_repeat_decoded * S ((S (ff_i_predecessor_power_repeat)) * ff_c_predecessor_power) + (a)))) /\ (exists ff_u_predecessor_power_product ff_v_predecessor_power_product. ((((exists ff_h_predecessor_power_product_start. ff_h_predecessor_power_product_start + S (1) = S ((S (0)) * ff_v_predecessor_power_product)) /\ exists ff_q_predecessor_power_product_start. ff_u_predecessor_power_product = ff_q_predecessor_power_product_start * S ((S (0)) * ff_v_predecessor_power_product) + (1))) /\ ((((exists ff_h_predecessor_power_product_terminal. ff_h_predecessor_power_product_terminal + S (A) = S ((S (n)) * ff_v_predecessor_power_product)) /\ exists ff_q_predecessor_power_product_terminal. ff_u_predecessor_power_product = ff_q_predecessor_power_product_terminal * S ((S (n)) * ff_v_predecessor_power_product) + (A))) /\ forall ff_i_predecessor_power_product. (exists ff_lt_predecessor_power_product_bound. ff_lt_predecessor_power_product_bound + S ff_i_predecessor_power_product = n) -> exists ff_p_predecessor_power_product ff_r_predecessor_power_product ff_s_predecessor_power_product. ((((exists ff_h_predecessor_power_product_factor. ff_h_predecessor_power_product_factor + S (ff_p_predecessor_power_product) = S ((S (ff_i_predecessor_power_product)) * ff_c_predecessor_power)) /\ exists ff_q_predecessor_power_product_factor. ff_b_predecessor_power = ff_q_predecessor_power_product_factor * S ((S (ff_i_predecessor_power_product)) * ff_c_predecessor_power) + (ff_p_predecessor_power_product))) /\ ((((exists ff_h_predecessor_power_product_partial. ff_h_predecessor_power_product_partial + S (ff_r_predecessor_power_product) = S ((S (ff_i_predecessor_power_product)) * ff_v_predecessor_power_product)) /\ exists ff_q_predecessor_power_product_partial. ff_u_predecessor_power_product = ff_q_predecessor_power_product_partial * S ((S (ff_i_predecessor_power_product)) * ff_v_predecessor_power_product) + (ff_r_predecessor_power_product))) /\ ((((exists ff_h_predecessor_power_product_successor. ff_h_predecessor_power_product_successor + S (ff_s_predecessor_power_product) = S ((S (S ff_i_predecessor_power_product)) * ff_v_predecessor_power_product)) /\ exists ff_q_predecessor_power_product_successor. ff_u_predecessor_power_product = ff_q_predecessor_power_product_successor * S ((S (S ff_i_predecessor_power_product)) * ff_v_predecessor_power_product) + (ff_s_predecessor_power_product))) /\ ff_s_predecessor_power_product = ff_r_predecessor_power_product * ff_p_predecessor_power_product)))))))) -> (exists fep_mod_left_predecessor_result fep_mod_right_predecessor_result. A + p * fep_mod_left_predecessor_result = 1 + p * fep_mod_right_predecessor_result)Structural proof guide
Generated structural guide
Fermat's theorem for the native predecessor exponent p-1.
Use the direct prerequisites factorial_exists, prime_mul_residue_product_balance, prime_range_product_coprime, prime_nonzero, mod_eq_cancel_coprime, mul_comm, mul_one as previously established PA formulas.
The proof proceeds by case analysis (6), intermediate claims (4).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA0060 factorial_exists PA008J prime_mul_residue_product_balance PA008K prime_range_product_coprime PA0031 prime_nonzero PA003R mod_eq_cancel_coprime PA000H mul_comm PA0002 mul_oneDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Alpha-v25 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.
Read the argument
Proof checkpoints
This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.
Named ingredients (7)
01Fix variables and assumptionsL1–8
02Use earlier factsL9–9
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L9
specialize factorial_exists n
03Separate the logical casesL10–13
04Establish hbalanceL14–23
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime mul residue product balance.
- L14
have hbalance : exists fsp_product_mod_left_predecessor_balance fsp_product_mod_right_predecessor_balance. (A * x) + p * fsp_product_mod_left_predecessor_balance = x + p * fsp_product_mod_right_predecessor_balance - L15
specialize prime_mul_residue_product_balance p - L16
specialize prime_mul_residue_product_balance n - L17
specialize prime_mul_residue_product_balance a - L18
specialize prime_mul_residue_product_balance x1 - L19
specialize prime_mul_residue_product_balance x2 - L20
specialize prime_mul_residue_product_balance x - L21
specialize prime_mul_residue_product_balance A - L22
apply prime_mul_residue_product_balance - L23
exact hpn
05Use earlier factsL24–28
06Establish hcopL29–38
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime range product coprime.
- L29
have hcop : forall frp_divisor_predecessor_coprime. (exists frp_left_factor_predecessor_coprime. x = frp_divisor_predecessor_coprime * frp_left_factor_predecessor_coprime) -> (exists frp_right_factor_predecessor_coprime. p = frp_divisor_predecessor_coprime * frp_right_factor_predecessor_coprime) -> frp_divisor_predecessor_coprime = 1 - L30
specialize prime_range_product_coprime p - L31
specialize prime_range_product_coprime n - L32
specialize prime_range_product_coprime x1 - L33
specialize prime_range_product_coprime x2 - L34
specialize prime_range_product_coprime x - L35
apply prime_range_product_coprime - L36
exact hpn - L37
exact hp - L38
exact factorial_exists_witness_witness_witness_left
07Use earlier factsL39–39
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L39
exact factorial_exists_witness_witness_witness_right
08Establish hp0L40–45
09Establish hscaledL46–46
Establish this local claim before using it. It is not an additional assumption.
- L46
have hscaled : exists fep_product_mod_left_predecessor_normalized fep_product_mod_right_predecessor_normalized. (x * A) + p * fep_product_mod_left_predecessor_normalized = (x * 1) + p * fep_product_mod_right_predecessor_normalized
10Separate the logical casesL47–48
11Construct an explicit witnessL49–50
12Calculate and transport equalitiesL51–52
13Use earlier factsL53–53
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L53
apply mul_comm
14Calculate and transport equalitiesL54–55
15Use earlier factsL56–56
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L56
exact hbalance_witness_witness
16Calculate and transport equalitiesL57–58
17Use earlier factsL59–59
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L59
apply mul_one
18Calculate and transport equalitiesL60–60
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L60
refl
19Use earlier factsL61–68
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original exact command ledger · 68 lines
- 0001
intro p - 0002
intro n - 0003
intro a - 0004
intro A - 0005
intro hpn - 0006
intro hp - 0007
intro hnotdiv - 0008
intro hA - 0009
specialize factorial_exists n - 0010
cases factorial_exists - 0011
cases factorial_exists_witness - 0012
cases factorial_exists_witness_witness - 0013
cases factorial_exists_witness_witness_witness - 0014
have hbalance : exists fsp_product_mod_left_predecessor_balance fsp_product_mod_right_predecessor_balance. (A * x) + p * fsp_product_mod_left_predecessor_balance = x + p * fsp_product_mod_right_predecessor_balance - 0015
specialize prime_mul_residue_product_balance p - 0016
specialize prime_mul_residue_product_balance n - 0017
specialize prime_mul_residue_product_balance a - 0018
specialize prime_mul_residue_product_balance x1 - 0019
specialize prime_mul_residue_product_balance x2 - 0020
specialize prime_mul_residue_product_balance x - 0021
specialize prime_mul_residue_product_balance A - 0022
apply prime_mul_residue_product_balance - 0023
exact hpn - 0024
exact hp - 0025
exact hnotdiv - 0026
exact factorial_exists_witness_witness_witness_left - 0027
exact factorial_exists_witness_witness_witness_right - 0028
exact hA - 0029
have hcop : forall frp_divisor_predecessor_coprime. (exists frp_left_factor_predecessor_coprime. x = frp_divisor_predecessor_coprime * frp_left_factor_predecessor_coprime) -> (exists frp_right_factor_predecessor_coprime. p = frp_divisor_predecessor_coprime * frp_right_factor_predecessor_coprime) -> frp_divisor_predecessor_coprime = 1 - 0030
specialize prime_range_product_coprime p - 0031
specialize prime_range_product_coprime n - 0032
specialize prime_range_product_coprime x1 - 0033
specialize prime_range_product_coprime x2 - 0034
specialize prime_range_product_coprime x - 0035
apply prime_range_product_coprime - 0036
exact hpn - 0037
exact hp - 0038
exact factorial_exists_witness_witness_witness_left - 0039
exact factorial_exists_witness_witness_witness_right - 0040
have hp0 : ~(p = 0) - 0041
intro hpzero - 0042
specialize prime_nonzero p - 0043
apply prime_nonzero - 0044
exact hp - 0045
exact hpzero - 0046
have hscaled : exists fep_product_mod_left_predecessor_normalized fep_product_mod_right_predecessor_normalized. (x * A) + p * fep_product_mod_left_predecessor_normalized = (x * 1) + p * fep_product_mod_right_predecessor_normalized - 0047
cases hbalance - 0048
cases hbalance_witness - 0049
exists x3 - 0050
exists x4 - 0051
trans (A * x) + p * x3 - 0052
congr - 0053
apply mul_comm - 0054
refl - 0055
trans x + p * x4 - 0056
exact hbalance_witness_witness - 0057
congr - 0058
symm - 0059
apply mul_one - 0060
refl - 0061
specialize mod_eq_cancel_coprime p - 0062
specialize mod_eq_cancel_coprime x - 0063
specialize mod_eq_cancel_coprime A - 0064
specialize mod_eq_cancel_coprime 1 - 0065
apply mod_eq_cancel_coprime - 0066
exact hp0 - 0067
exact hcop - 0068
exact hscaled