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 b c F. p = S n -> ((~(p = 1) /\ forall frp_prime_left_prime_p frp_prime_right_prime_p. p = frp_prime_left_prime_p * frp_prime_right_prime_p -> frp_prime_left_prime_p = 1 \/ frp_prime_right_prime_p = 1)) -> (forall ff_i_frp_range_prime_range. (exists ff_lt_frp_range_prime_range_bound. ff_lt_frp_range_prime_range_bound + S ff_i_frp_range_prime_range = n) -> (((exists ff_h_frp_range_prime_range_decoded. ff_h_frp_range_prime_range_decoded + S (1 + ff_i_frp_range_prime_range) = S ((S (ff_i_frp_range_prime_range)) * c)) /\ exists ff_q_frp_range_prime_range_decoded. b = ff_q_frp_range_prime_range_decoded * S ((S (ff_i_frp_range_prime_range)) * c) + (1 + ff_i_frp_range_prime_range)))) -> (exists ff_u_prime_product ff_v_prime_product. ((((exists ff_h_prime_product_start. ff_h_prime_product_start + S (1) = S ((S (0)) * ff_v_prime_product)) /\ exists ff_q_prime_product_start. ff_u_prime_product = ff_q_prime_product_start * S ((S (0)) * ff_v_prime_product) + (1))) /\ ((((exists ff_h_prime_product_terminal. ff_h_prime_product_terminal + S (F) = S ((S (n)) * ff_v_prime_product)) /\ exists ff_q_prime_product_terminal. ff_u_prime_product = ff_q_prime_product_terminal * S ((S (n)) * ff_v_prime_product) + (F))) /\ forall ff_i_prime_product. (exists ff_lt_prime_product_bound. ff_lt_prime_product_bound + S ff_i_prime_product = n) -> exists ff_p_prime_product ff_r_prime_product ff_s_prime_product. ((((exists ff_h_prime_product_factor. ff_h_prime_product_factor + S (ff_p_prime_product) = S ((S (ff_i_prime_product)) * c)) /\ exists ff_q_prime_product_factor. b = ff_q_prime_product_factor * S ((S (ff_i_prime_product)) * c) + (ff_p_prime_product))) /\ ((((exists ff_h_prime_product_partial. ff_h_prime_product_partial + S (ff_r_prime_product) = S ((S (ff_i_prime_product)) * ff_v_prime_product)) /\ exists ff_q_prime_product_partial. ff_u_prime_product = ff_q_prime_product_partial * S ((S (ff_i_prime_product)) * ff_v_prime_product) + (ff_r_prime_product))) /\ ((((exists ff_h_prime_product_successor. ff_h_prime_product_successor + S (ff_s_prime_product) = S ((S (S ff_i_prime_product)) * ff_v_prime_product)) /\ exists ff_q_prime_product_successor. ff_u_prime_product = ff_q_prime_product_successor * S ((S (S ff_i_prime_product)) * ff_v_prime_product) + (ff_s_prime_product))) /\ ff_s_prime_product = ff_r_prime_product * ff_p_prime_product)))))) -> (forall frp_divisor_prime_product_result. (exists frp_left_factor_prime_product_result. F = frp_divisor_prime_product_result * frp_left_factor_prime_product_result) -> (exists frp_right_factor_prime_product_result. p = frp_divisor_prime_product_result * frp_right_factor_prime_product_result) -> frp_divisor_prime_product_result = 1)Structural proof guide
Generated structural guide
The product 1*...*(p-1) is coprime to a prime p.
Use the direct prerequisites beta_range_one_entry_eq_succ, beta_product_pointwise_coprime, succ_ne_zero, succ_le_succ, divisor_le_nonzero, lt_not_le, prime_not_divides_coprime, coprime_symm as previously established PA formulas.
The proof proceeds by intermediate claims (7), equality transport (2).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA008F beta_range_one_entry_eq_succ PA0081 beta_product_pointwise_coprime PA0005 succ_ne_zero PA002K succ_le_succ PA0039 divisor_le_nonzero PA003A lt_not_le PA003N prime_not_divides_coprime PA003O coprime_symmDirect 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 (8)
01Fix variables and assumptionsL1–9
02Establish hpointwiseL10–14
Establish this local claim before using it. It is not an additional assumption.
03Establish hvalueL15–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta range one entry eq succ.
- L15
have hvalue : x = S i - L16
specialize beta_range_one_entry_eq_succ b - L17
specialize beta_range_one_entry_eq_succ c - L18
specialize beta_range_one_entry_eq_succ n - L19
specialize beta_range_one_entry_eq_succ i - L20
specialize beta_range_one_entry_eq_succ x - L21
apply beta_range_one_entry_eq_succ - L22
exact hrange - L23
exact hi - L24
exact hx
04Establish hx0L25–32
05Establish hxltpL33–39
06Establish hnotdivL40–41
07Establish hleL42–51
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor le nonzero.
08Use earlier factsL52–52
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L52
exact hle
09Establish hpxL53–62
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime not divides coprime.
- L53
have hpx : forall frp_divisor_prime_factor. (exists frp_left_factor_prime_factor. p = frp_divisor_prime_factor * frp_left_factor_prime_factor) -> (exists frp_right_factor_prime_factor. x = frp_divisor_prime_factor * frp_right_factor_prime_factor) -> frp_divisor_prime_factor = 1 - L54
specialize prime_not_divides_coprime p - L55
specialize prime_not_divides_coprime x - L56
apply prime_not_divides_coprime - L57
exact hp - L58
exact hnotdiv - L59
specialize coprime_symm p - L60
specialize coprime_symm x - L61
apply coprime_symm - L62
exact hpx
10Use earlier factsL63–70
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L63
specialize beta_product_pointwise_coprime p - L64
specialize beta_product_pointwise_coprime b - L65
specialize beta_product_pointwise_coprime c - L66
specialize beta_product_pointwise_coprime n - L67
specialize beta_product_pointwise_coprime F - L68
apply beta_product_pointwise_coprime - L69
exact hpointwise - L70
exact hproduct
Original exact command ledger · 70 lines
- 0001
intro p - 0002
intro n - 0003
intro b - 0004
intro c - 0005
intro F - 0006
intro hpn - 0007
intro hp - 0008
intro hrange - 0009
intro hproduct - 0010
have hpointwise : forall frp_index_prime_pointwise frp_factor_prime_pointwise. (exists frp_gap_prime_pointwise_bound. frp_gap_prime_pointwise_bound + S frp_index_prime_pointwise = n) -> (((exists ff_h_frp_prime_pointwise_decoded. ff_h_frp_prime_pointwise_decoded + S (frp_factor_prime_pointwise) = S ((S (frp_index_prime_pointwise)) * c)) /\ exists ff_q_frp_prime_pointwise_decoded. b = ff_q_frp_prime_pointwise_decoded * S ((S (frp_index_prime_pointwise)) * c) + (frp_factor_prime_pointwise))) -> (forall frp_divisor_prime_pointwise_coprime. (exists frp_left_factor_prime_pointwise_coprime. frp_factor_prime_pointwise = frp_divisor_prime_pointwise_coprime * frp_left_factor_prime_pointwise_coprime) -> (exists frp_right_factor_prime_pointwise_coprime. p = frp_divisor_prime_pointwise_coprime * frp_right_factor_prime_pointwise_coprime) -> frp_divisor_prime_pointwise_coprime = 1) - 0011
intro i - 0012
intro x - 0013
intro hi - 0014
intro hx - 0015
have hvalue : x = S i - 0016
specialize beta_range_one_entry_eq_succ b - 0017
specialize beta_range_one_entry_eq_succ c - 0018
specialize beta_range_one_entry_eq_succ n - 0019
specialize beta_range_one_entry_eq_succ i - 0020
specialize beta_range_one_entry_eq_succ x - 0021
apply beta_range_one_entry_eq_succ - 0022
exact hrange - 0023
exact hi - 0024
exact hx - 0025
have hx0 : ~(x = 0) - 0026
intro hxzero - 0027
specialize succ_ne_zero i - 0028
apply succ_ne_zero - 0029
trans x - 0030
symm - 0031
exact hvalue - 0032
exact hxzero - 0033
have hxltp : exists h. h + S x = p - 0034
rewrite hvalue - 0035
rewrite hpn - 0036
specialize succ_le_succ (S i) - 0037
specialize succ_le_succ n - 0038
apply succ_le_succ - 0039
exact hi - 0040
have hnotdiv : ~(exists k. x = p * k) - 0041
intro hdiv - 0042
have hle : exists k. k + p = x - 0043
specialize divisor_le_nonzero p - 0044
specialize divisor_le_nonzero x - 0045
apply divisor_le_nonzero - 0046
exact hx0 - 0047
exact hdiv - 0048
specialize lt_not_le x - 0049
specialize lt_not_le p - 0050
apply lt_not_le - 0051
exact hxltp - 0052
exact hle - 0053
have hpx : forall frp_divisor_prime_factor. (exists frp_left_factor_prime_factor. p = frp_divisor_prime_factor * frp_left_factor_prime_factor) -> (exists frp_right_factor_prime_factor. x = frp_divisor_prime_factor * frp_right_factor_prime_factor) -> frp_divisor_prime_factor = 1 - 0054
specialize prime_not_divides_coprime p - 0055
specialize prime_not_divides_coprime x - 0056
apply prime_not_divides_coprime - 0057
exact hp - 0058
exact hnotdiv - 0059
specialize coprime_symm p - 0060
specialize coprime_symm x - 0061
apply coprime_symm - 0062
exact hpx - 0063
specialize beta_product_pointwise_coprime p - 0064
specialize beta_product_pointwise_coprime b - 0065
specialize beta_product_pointwise_coprime c - 0066
specialize beta_product_pointwise_coprime n - 0067
specialize beta_product_pointwise_coprime F - 0068
apply beta_product_pointwise_coprime - 0069
exact hpointwise - 0070
exact hproduct