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. ∀ a. ∀ n. ∀ h. ∀ A. p = S n → Prime(p) → ¬a = 0 → Lt(a,p) → n = h + h → Pow(a,h,A) → QRes(p,a) ∧ ModEq(p,A,1) ∨ ¬QRes(p,a) ∧ ModEq(p,A,n)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
7 occurrences
In local proof propositions
3 occurrences
Exact expanded native-PA statement
forall p a n h A. p = S n -> ((~(p = 1) /\ forall esi_prime_left_ecb_prime esi_prime_right_ecb_prime. p = esi_prime_left_ecb_prime * esi_prime_right_ecb_prime -> esi_prime_left_ecb_prime = 1 \/ esi_prime_right_ecb_prime = 1)) -> ~(a = 0) -> (exists wpo_gap_ecb_a_lt_p. wpo_gap_ecb_a_lt_p + S (a) = p) -> n = h + h -> (exists ff_b_ecb_power ff_c_ecb_power. ((forall ff_i_ecb_power_repeat. (exists ff_lt_ecb_power_repeat_bound. ff_lt_ecb_power_repeat_bound + S ff_i_ecb_power_repeat = h) -> (((exists ff_h_ecb_power_repeat_decoded. ff_h_ecb_power_repeat_decoded + S (a) = S ((S (ff_i_ecb_power_repeat)) * ff_c_ecb_power)) /\ exists ff_q_ecb_power_repeat_decoded. ff_b_ecb_power = ff_q_ecb_power_repeat_decoded * S ((S (ff_i_ecb_power_repeat)) * ff_c_ecb_power) + (a)))) /\ (exists ff_u_ecb_power_product ff_v_ecb_power_product. ((((exists ff_h_ecb_power_product_start. ff_h_ecb_power_product_start + S (1) = S ((S (0)) * ff_v_ecb_power_product)) /\ exists ff_q_ecb_power_product_start. ff_u_ecb_power_product = ff_q_ecb_power_product_start * S ((S (0)) * ff_v_ecb_power_product) + (1))) /\ ((((exists ff_h_ecb_power_product_terminal. ff_h_ecb_power_product_terminal + S (A) = S ((S (h)) * ff_v_ecb_power_product)) /\ exists ff_q_ecb_power_product_terminal. ff_u_ecb_power_product = ff_q_ecb_power_product_terminal * S ((S (h)) * ff_v_ecb_power_product) + (A))) /\ forall ff_i_ecb_power_product. (exists ff_lt_ecb_power_product_bound. ff_lt_ecb_power_product_bound + S ff_i_ecb_power_product = h) -> exists ff_p_ecb_power_product ff_r_ecb_power_product ff_s_ecb_power_product. ((((exists ff_h_ecb_power_product_factor. ff_h_ecb_power_product_factor + S (ff_p_ecb_power_product) = S ((S (ff_i_ecb_power_product)) * ff_c_ecb_power)) /\ exists ff_q_ecb_power_product_factor. ff_b_ecb_power = ff_q_ecb_power_product_factor * S ((S (ff_i_ecb_power_product)) * ff_c_ecb_power) + (ff_p_ecb_power_product))) /\ ((((exists ff_h_ecb_power_product_partial. ff_h_ecb_power_product_partial + S (ff_r_ecb_power_product) = S ((S (ff_i_ecb_power_product)) * ff_v_ecb_power_product)) /\ exists ff_q_ecb_power_product_partial. ff_u_ecb_power_product = ff_q_ecb_power_product_partial * S ((S (ff_i_ecb_power_product)) * ff_v_ecb_power_product) + (ff_r_ecb_power_product))) /\ ((((exists ff_h_ecb_power_product_successor. ff_h_ecb_power_product_successor + S (ff_s_ecb_power_product) = S ((S (S ff_i_ecb_power_product)) * ff_v_ecb_power_product)) /\ exists ff_q_ecb_power_product_successor. ff_u_ecb_power_product = ff_q_ecb_power_product_successor * S ((S (S ff_i_ecb_power_product)) * ff_v_ecb_power_product) + (ff_s_ecb_power_product))) /\ ff_s_ecb_power_product = ff_r_ecb_power_product * ff_p_ecb_power_product)))))))) -> ((((exists qr_x_ecb_qres. exists qr_u_ecb_qres qr_v_ecb_qres. qr_x_ecb_qres * qr_x_ecb_qres + p * qr_u_ecb_qres = a + p * qr_v_ecb_qres) /\ (exists wpp_mod_left_ecb_mod_one wpp_mod_right_ecb_mod_one. (A) + p * wpp_mod_left_ecb_mod_one = (1) + p * wpp_mod_right_ecb_mod_one)) \/ ((~(exists qr_x_ecb_qres. exists qr_u_ecb_qres qr_v_ecb_qres. qr_x_ecb_qres * qr_x_ecb_qres + p * qr_u_ecb_qres = a + p * qr_v_ecb_qres)) /\ (exists wpp_mod_left_ecb_mod_predecessor wpp_mod_right_ecb_mod_predecessor. (A) + p * wpp_mod_left_ecb_mod_predecessor = (n) + p * wpp_mod_right_ecb_mod_predecessor))))Proof neighborhood
Direct theorem prerequisites
PA0031 prime_nonzero PA0089 bounded_nonzero_not_divides PA005S quadratic_residue_decidable_nonzero PA008M quadratic_residue_half_power_mod_one PA00BM quadratic_nonresidue_half_power_mod_predecessor PA000E add_succ_left PA000H mul_comm PA0001 zero_addDirect 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 (6)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–11
Work with arbitrary variables or the premises of the current implication.
- L11
intro hpower
03Establish hp0L12–17
04Establish hnotdivL18–25
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply bounded nonzero not divides.
05Establish hdoubleL26–31
06Establish hoddL32–37
07Establish hdecL38–42
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply quadratic residue decidable nonzero.
08Separate the logical casesL43–45
09Use earlier factsL46–55
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L46
exact hdec_left - L47
specialize quadratic_residue_half_power_mod_one p - L48
specialize quadratic_residue_half_power_mod_one h - L49
specialize quadratic_residue_half_power_mod_one a - L50
specialize quadratic_residue_half_power_mod_one A - L51
apply quadratic_residue_half_power_mod_one - L52
exact hodd - L53
exact hp - L54
exact hnotdiv - L55
exact hdec_left
10Use earlier factsL56–56
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L56
exact hpower
11Separate the logical casesL57–58
12Use earlier factsL59–68
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L59
exact hdec_right - L60
specialize quadratic_nonresidue_half_power_mod_predecessor p - L61
specialize quadratic_nonresidue_half_power_mod_predecessor a - L62
specialize quadratic_nonresidue_half_power_mod_predecessor n - L63
specialize quadratic_nonresidue_half_power_mod_predecessor h - L64
specialize quadratic_nonresidue_half_power_mod_predecessor A - L65
apply quadratic_nonresidue_half_power_mod_predecessor - L66
exact hpn - L67
exact hp - L68
exact ha0
Original defined command ledger · 72 lines
- 0001
intro p - 0002
intro a - 0003
intro n - 0004
intro h - 0005
intro A - 0006
intro hpn - 0007
intro hp - 0008
intro ha0 - 0009
intro hap - 0010
intro heven - 0011
intro hpower - 0012
have hp0 : ~(p = 0) - 0013
intro hpzero - 0014
specialize prime_nonzero p - 0015
apply prime_nonzero - 0016
exact hp - 0017
exact hpzero - 0018
have hnotdiv : ¬Dvd(p,a)Exact native replay line
have hnotdiv : ~(exists frm_factor_ecb_not_divisor. a = p * frm_factor_ecb_not_divisor) - 0019
intro hdiv - 0020
specialize bounded_nonzero_not_divides p - 0021
specialize bounded_nonzero_not_divides a - 0022
apply bounded_nonzero_not_divides - 0023
exact ha0 - 0024
exact hap - 0025
exact hdiv - 0026
have hdouble : h + h = 2 * h - 0027
trans h * 2 - 0028
simp [zero_add] - 0029
specialize mul_comm h - 0030
specialize mul_comm 2 - 0031
apply mul_comm - 0032
have hodd : p = 2 * h + 1 - 0033
trans S n - 0034
exact hpn - 0035
rewrite heven - 0036
rewrite hdouble - 0037
simp [add_succ_left] - 0038
have hdec : QRes(p,a) ∨ ¬QRes(p,a)Exact native replay line
have hdec : (exists qr_x_ecb_qres. exists qr_u_ecb_qres qr_v_ecb_qres. qr_x_ecb_qres * qr_x_ecb_qres + p * qr_u_ecb_qres = a + p * qr_v_ecb_qres) \/ ~(exists qr_x_ecb_qres. exists qr_u_ecb_qres qr_v_ecb_qres. qr_x_ecb_qres * qr_x_ecb_qres + p * qr_u_ecb_qres = a + p * qr_v_ecb_qres) - 0039
specialize quadratic_residue_decidable_nonzero p - 0040
specialize quadratic_residue_decidable_nonzero a - 0041
apply quadratic_residue_decidable_nonzero - 0042
exact hp0 - 0043
cases hdec - 0044
left - 0045
split - 0046
exact hdec_left - 0047
specialize quadratic_residue_half_power_mod_one p - 0048
specialize quadratic_residue_half_power_mod_one h - 0049
specialize quadratic_residue_half_power_mod_one a - 0050
specialize quadratic_residue_half_power_mod_one A - 0051
apply quadratic_residue_half_power_mod_one - 0052
exact hodd - 0053
exact hp - 0054
exact hnotdiv - 0055
exact hdec_left - 0056
exact hpower - 0057
right - 0058
split - 0059
exact hdec_right - 0060
specialize quadratic_nonresidue_half_power_mod_predecessor p - 0061
specialize quadratic_nonresidue_half_power_mod_predecessor a - 0062
specialize quadratic_nonresidue_half_power_mod_predecessor n - 0063
specialize quadratic_nonresidue_half_power_mod_predecessor h - 0064
specialize quadratic_nonresidue_half_power_mod_predecessor A - 0065
apply quadratic_nonresidue_half_power_mod_predecessor - 0066
exact hpn - 0067
exact hp - 0068
exact ha0 - 0069
exact hap - 0070
exact hdec_right - 0071
exact heven - 0072
exact hpower