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)) ∧ (ModEq(p,A,1) → QRes(p,a))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
6 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 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))))Proof neighborhood
Direct theorem prerequisites
PA00BN bounded_euler_criterion_dichotomy PA00BP odd_prime_one_not_mod_predecessor PA003L mod_eq_symm PA0024 mod_eq_transDirect 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 (4)
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 hdichotomyL12–21
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply bounded euler criterion dichotomy.
- L12
have hdichotomy : QRes(p,a) ∧ ModEq(p,A,1) ∨ ¬QRes(p,a) ∧ ModEq(p,A,n)Definitions: QRes(p,a)ModEq(p,A,1)ModEq(p,A,n)Original native command in the exact edition - L13
specialize bounded_euler_criterion_dichotomy p - L14
specialize bounded_euler_criterion_dichotomy a - L15
specialize bounded_euler_criterion_dichotomy n - L16
specialize bounded_euler_criterion_dichotomy h - L17
specialize bounded_euler_criterion_dichotomy A - L18
apply bounded_euler_criterion_dichotomy - L19
exact hpn - L20
exact hp - L21
exact ha0
04Use earlier factsL22–24
05Establish hdistinctL25–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply odd prime one not mod predecessor.
06Separate the logical casesL35–35
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L35
split
07Fix variables and assumptionsL36–36
Work with arbitrary variables or the premises of the current implication.
- L36
intro hqres
08Separate the logical casesL37–38
09Use earlier factsL39–39
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L39
exact hdichotomy_left_right
10Separate the logical casesL40–41
11Use earlier factsL42–43
12Fix variables and assumptionsL44–44
Work with arbitrary variables or the premises of the current implication.
- L44
intro hone
13Separate the logical casesL45–46
14Use earlier factsL47–47
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L47
exact hdichotomy_left_left
15Separate the logical casesL48–49
16Use earlier factsL50–50
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L50
apply hdistinct
17Establish hone_backL51–60
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq symm.
Original defined command ledger · 63 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 hdichotomy : QRes(p,a) ∧ ModEq(p,A,1) ∨ ¬QRes(p,a) ∧ ModEq(p,A,n)Exact native replay line
have hdichotomy : (((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))) - 0013
specialize bounded_euler_criterion_dichotomy p - 0014
specialize bounded_euler_criterion_dichotomy a - 0015
specialize bounded_euler_criterion_dichotomy n - 0016
specialize bounded_euler_criterion_dichotomy h - 0017
specialize bounded_euler_criterion_dichotomy A - 0018
apply bounded_euler_criterion_dichotomy - 0019
exact hpn - 0020
exact hp - 0021
exact ha0 - 0022
exact hap - 0023
exact heven - 0024
exact hpower - 0025
have hdistinct : ¬ModEq(p,1,n)Exact native replay line
have hdistinct : ~(exists wpp_mod_left_ecb_one_mod_predecessor wpp_mod_right_ecb_one_mod_predecessor. (1) + p * wpp_mod_left_ecb_one_mod_predecessor = (n) + p * wpp_mod_right_ecb_one_mod_predecessor) - 0026
intro hcollision - 0027
specialize odd_prime_one_not_mod_predecessor p - 0028
specialize odd_prime_one_not_mod_predecessor n - 0029
specialize odd_prime_one_not_mod_predecessor h - 0030
apply odd_prime_one_not_mod_predecessor - 0031
exact hpn - 0032
exact hp - 0033
exact heven - 0034
exact hcollision - 0035
split - 0036
intro hqres - 0037
cases hdichotomy - 0038
cases hdichotomy_left - 0039
exact hdichotomy_left_right - 0040
cases hdichotomy_right - 0041
exfalso - 0042
apply hdichotomy_right_left - 0043
exact hqres - 0044
intro hone - 0045
cases hdichotomy - 0046
cases hdichotomy_left - 0047
exact hdichotomy_left_left - 0048
cases hdichotomy_right - 0049
exfalso - 0050
apply hdistinct - 0051
have hone_back : ModEq(p,1,A)Exact native replay line
have hone_back : exists wpp_mod_left_ecb_one_back wpp_mod_right_ecb_one_back. (1) + p * wpp_mod_left_ecb_one_back = (A) + p * wpp_mod_right_ecb_one_back - 0052
specialize mod_eq_symm p - 0053
specialize mod_eq_symm A - 0054
specialize mod_eq_symm 1 - 0055
apply mod_eq_symm - 0056
exact hone - 0057
specialize mod_eq_trans p - 0058
specialize mod_eq_trans 1 - 0059
specialize mod_eq_trans A - 0060
specialize mod_eq_trans n - 0061
apply mod_eq_trans - 0062
exact hone_back - 0063
exact hdichotomy_right_right