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.
Statement with defined notation
∀ p. ∀ b. ∀ c. ∀ l. ∀ F. Prime(p) → (∀ x. ∀ y. Lt(x,l) → BetaAt(b,c,x,y) → UnitResidue(p,y)) → Product(b,c,l,F) → Coprime(F,p)Every purple notation token opens its conservative definition. This is a reading surface; the compiler expands the statement before the unchanged kernel checks it.
Definitions used by this theorem
In the theorem statement
6 occurrences
In local proof propositions
7 occurrences
Exact expanded native-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)Proof neighborhood
Direct theorem prerequisites
PA0039 divisor_le_nonzero PA003A lt_not_le PA003N prime_not_divides_coprime PA003O coprime_symm PA0081 beta_product_pointwise_coprimeDirect theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. The untrusted compiler re-expands each one before the original tactic script is replayed; defined notation is never accepted by the kernel. Open the exact replay line beneath every changed command.
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 (5)
01Fix variables and assumptionsL1–8
02Establish hpointwiseL9–13
Establish this local claim before using it. It is not an additional assumption.
- L9
have hpointwise : ∀ frp_index_prime_product_pointwise. ∀ frp_factor_prime_product_pointwise. Lt(frp_index_prime_product_pointwise,l) → BetaAt(b,c,frp_index_prime_product_pointwise,frp_factor_prime_product_pointwise) → Coprime(frp_factor_prime_product_pointwise,p)Definitions: Lt(frp_index_prime_product_pointwise,l)BetaAt(b,c,frp_index_prime_product_pointwise,frp_factor_prime_product_pointwise)Coprime(frp_factor_prime_product_pointwise,p)Original native command in the exact edition - L10
intro i - L11
intro x - L12
intro hi - L13
intro hx
03Establish hboundsL14–19
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hbounded.
- L14
have hbounds : UnitResidue(p,x)Definitions: UnitResidue(p,x)Original native command in the exact edition - L15
specialize hbounded i - L16
specialize hbounded x - L17
apply hbounded - L18
exact hi - L19
exact hx
04Separate the logical casesL20–20
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L20
cases hbounds
05Establish hnotdivL21–22
Establish this local claim before using it. It is not an additional assumption.
06Establish hleL23–32
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor le nonzero.
07Use earlier factsL33–33
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L33
exact hle
08Establish hprimecopL34–43
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime not divides coprime.
09Use earlier factsL44–51
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L44
specialize beta_product_pointwise_coprime p - L45
specialize beta_product_pointwise_coprime b - L46
specialize beta_product_pointwise_coprime c - L47
specialize beta_product_pointwise_coprime l - L48
specialize beta_product_pointwise_coprime F - L49
apply beta_product_pointwise_coprime - L50
exact hpointwise - L51
exact hproduct
Original defined command ledger · 51 lines
- 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 : ∀ frp_index_prime_product_pointwise. ∀ frp_factor_prime_product_pointwise. Lt(frp_index_prime_product_pointwise,l) → BetaAt(b,c,frp_index_prime_product_pointwise,frp_factor_prime_product_pointwise) → Coprime(frp_factor_prime_product_pointwise,p)Exact native replay line
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 : UnitResidue(p,x)Exact native replay line
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 : ¬Dvd(p,x)Exact native replay line
have hnotdiv : ~(exists k. x = p * k) - 0022
intro hdiv - 0023
have hle : Le(p,x)Exact native replay line
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 : Coprime(p,x)Exact native replay line
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