Exact expanded PA statement
forall p b c l F. ((~(p = 1) /\ forall frp_prime_left_prime_product_prime frp_prime_right_prime_product_prime. p = frp_prime_left_prime_product_prime * frp_prime_right_prime_product_prime -> frp_prime_left_prime_product_prime = 1 \/ frp_prime_right_prime_product_prime = 1)) -> (forall fppc_index_prime_product_bounds fppc_factor_prime_product_bounds. (exists frp_gap_prime_product_bounds_index_bound. frp_gap_prime_product_bounds_index_bound + S fppc_index_prime_product_bounds = l) -> (((exists ff_h_fppc_prime_product_bounds_decoded. ff_h_fppc_prime_product_bounds_decoded + S (fppc_factor_prime_product_bounds) = S ((S (fppc_index_prime_product_bounds)) * c)) /\ exists ff_q_fppc_prime_product_bounds_decoded. b = ff_q_fppc_prime_product_bounds_decoded * S ((S (fppc_index_prime_product_bounds)) * c) + (fppc_factor_prime_product_bounds))) -> (~(fppc_factor_prime_product_bounds = 0) /\ (exists frp_gap_prime_product_bounds_factor_bound. frp_gap_prime_product_bounds_factor_bound + S fppc_factor_prime_product_bounds = p))) -> (exists ff_u_prime_product_product ff_v_prime_product_product. ((((exists ff_h_prime_product_product_start. ff_h_prime_product_product_start + S (1) = S ((S (0)) * ff_v_prime_product_product)) /\ exists ff_q_prime_product_product_start. ff_u_prime_product_product = ff_q_prime_product_product_start * S ((S (0)) * ff_v_prime_product_product) + (1))) /\ ((((exists ff_h_prime_product_product_terminal. ff_h_prime_product_product_terminal + S (F) = S ((S (l)) * ff_v_prime_product_product)) /\ exists ff_q_prime_product_product_terminal. ff_u_prime_product_product = ff_q_prime_product_product_terminal * S ((S (l)) * ff_v_prime_product_product) + (F))) /\ forall ff_i_prime_product_product. (exists ff_lt_prime_product_product_bound. ff_lt_prime_product_product_bound + S ff_i_prime_product_product = l) -> exists ff_p_prime_product_product ff_r_prime_product_product ff_s_prime_product_product. ((((exists ff_h_prime_product_product_factor. ff_h_prime_product_product_factor + S (ff_p_prime_product_product) = S ((S (ff_i_prime_product_product)) * c)) /\ exists ff_q_prime_product_product_factor. b = ff_q_prime_product_product_factor * S ((S (ff_i_prime_product_product)) * c) + (ff_p_prime_product_product))) /\ ((((exists ff_h_prime_product_product_partial. ff_h_prime_product_product_partial + S (ff_r_prime_product_product) = S ((S (ff_i_prime_product_product)) * ff_v_prime_product_product)) /\ exists ff_q_prime_product_product_partial. ff_u_prime_product_product = ff_q_prime_product_product_partial * S ((S (ff_i_prime_product_product)) * ff_v_prime_product_product) + (ff_r_prime_product_product))) /\ ((((exists ff_h_prime_product_product_successor. ff_h_prime_product_product_successor + S (ff_s_prime_product_product) = S ((S (S ff_i_prime_product_product)) * ff_v_prime_product_product)) /\ exists ff_q_prime_product_product_successor. ff_u_prime_product_product = ff_q_prime_product_product_successor * S ((S (S ff_i_prime_product_product)) * ff_v_prime_product_product) + (ff_s_prime_product_product))) /\ ff_s_prime_product_product = ff_r_prime_product_product * ff_p_prime_product_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
A product of positive residues below a prime is coprime to that prime.
Use the direct prerequisites divisor_le_nonzero, lt_not_le, prime_not_divides_coprime, coprime_symm, beta_product_pointwise_coprime as previously established PA formulas.
The proof proceeds by case analysis (1), intermediate claims (5).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA0039 divisor_le_nonzero PA003A lt_not_le PA003N prime_not_divides_coprime PA003O coprime_symm PA0081 beta_product_pointwise_coprimeDirect 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 b - 0003
intro c - 0004
intro l - 0005
intro F - 0006
intro hp - 0007
intro hbounded - 0008
intro hproduct - 0009
have hpointwise : forall frp_index_prime_product_pointwise frp_factor_prime_product_pointwise. (exists frp_gap_prime_product_pointwise_bound. frp_gap_prime_product_pointwise_bound + S frp_index_prime_product_pointwise = l) -> (((exists ff_h_frp_prime_product_pointwise_decoded. ff_h_frp_prime_product_pointwise_decoded + S (frp_factor_prime_product_pointwise) = S ((S (frp_index_prime_product_pointwise)) * c)) /\ exists ff_q_frp_prime_product_pointwise_decoded. b = ff_q_frp_prime_product_pointwise_decoded * S ((S (frp_index_prime_product_pointwise)) * c) + (frp_factor_prime_product_pointwise))) -> (forall frp_divisor_prime_product_pointwise_coprime. (exists frp_left_factor_prime_product_pointwise_coprime. frp_factor_prime_product_pointwise = frp_divisor_prime_product_pointwise_coprime * frp_left_factor_prime_product_pointwise_coprime) -> (exists frp_right_factor_prime_product_pointwise_coprime. p = frp_divisor_prime_product_pointwise_coprime * frp_right_factor_prime_product_pointwise_coprime) -> frp_divisor_prime_product_pointwise_coprime = 1) - 0010
intro i - 0011
intro x - 0012
intro hi - 0013
intro hx - 0014
have hbounds : (~(x = 0) /\ (exists frp_gap_prime_product_local_bound. frp_gap_prime_product_local_bound + S x = p)) - 0015
specialize hbounded i - 0016
specialize hbounded x - 0017
apply hbounded - 0018
exact hi - 0019
exact hx - 0020
cases hbounds - 0021
have hnotdiv : ~(exists k. x = p * k) - 0022
intro hdiv - 0023
have hle : exists k. k + p = x - 0024
specialize divisor_le_nonzero p - 0025
specialize divisor_le_nonzero x - 0026
apply divisor_le_nonzero - 0027
exact hbounds_left - 0028
exact hdiv - 0029
specialize lt_not_le x - 0030
specialize lt_not_le p - 0031
apply lt_not_le - 0032
exact hbounds_right - 0033
exact hle - 0034
have hprimecop : forall frp_divisor_prime_product_factor. (exists frp_left_factor_prime_product_factor. p = frp_divisor_prime_product_factor * frp_left_factor_prime_product_factor) -> (exists frp_right_factor_prime_product_factor. x = frp_divisor_prime_product_factor * frp_right_factor_prime_product_factor) -> frp_divisor_prime_product_factor = 1 - 0035
specialize prime_not_divides_coprime p - 0036
specialize prime_not_divides_coprime x - 0037
apply prime_not_divides_coprime - 0038
exact hp - 0039
exact hnotdiv - 0040
specialize coprime_symm p - 0041
specialize coprime_symm x - 0042
apply coprime_symm - 0043
exact hprimecop - 0044
specialize beta_product_pointwise_coprime p - 0045
specialize beta_product_pointwise_coprime b - 0046
specialize beta_product_pointwise_coprime c - 0047
specialize beta_product_pointwise_coprime l - 0048
specialize beta_product_pointwise_coprime F - 0049
apply beta_product_pointwise_coprime - 0050
exact hpointwise - 0051
exact hproduct