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-v16 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.
- 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