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. ∀ q. Prime(p) → Prime(q) → ¬p = q → Odd(p) → Odd(q) → (Mod4One(p) ∨ Mod4One(q) → QRes(p,q) ∧ QRes(q,p) ∨ ¬QRes(p,q) ∧ ¬QRes(q,p)) ∧ (Mod4Three(p) ∧ Mod4Three(q) → QRes(p,q) ∧ ¬QRes(q,p) ∨ ¬QRes(p,q) ∧ QRes(q,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
16 occurrences
In local proof propositions
18 occurrences
Exact expanded native-PA statement
forall p q. (~(p = 1) /\ forall qr_factor_a_prime_p qr_factor_b_prime_p. p = qr_factor_a_prime_p * qr_factor_b_prime_p -> qr_factor_a_prime_p = 1 \/ qr_factor_b_prime_p = 1) -> (~(q = 1) /\ forall qr_factor_a_prime_q qr_factor_b_prime_q. q = qr_factor_a_prime_q * qr_factor_b_prime_q -> qr_factor_a_prime_q = 1 \/ qr_factor_b_prime_q = 1) -> ~(p = q) -> (exists qr_half_odd_p. p = 2 * qr_half_odd_p + 1) -> (exists qr_half_odd_q. q = 2 * qr_half_odd_q + 1) -> ((((exists qr_mod4_one_p. p = 4 * qr_mod4_one_p + 1) \/ (exists qr_mod4_one_q. q = 4 * qr_mod4_one_q + 1)) -> (((exists qr_x_p_q. exists qr_u_p_q qr_v_p_q. qr_x_p_q * qr_x_p_q + p * qr_u_p_q = q + p * qr_v_p_q) /\ (exists qr_x_q_p. exists qr_u_q_p qr_v_q_p. qr_x_q_p * qr_x_q_p + q * qr_u_q_p = p + q * qr_v_q_p)) \/ (~(exists qr_x_p_q. exists qr_u_p_q qr_v_p_q. qr_x_p_q * qr_x_p_q + p * qr_u_p_q = q + p * qr_v_p_q) /\ ~(exists qr_x_q_p. exists qr_u_q_p qr_v_q_p. qr_x_q_p * qr_x_q_p + q * qr_u_q_p = p + q * qr_v_q_p)))) /\ ((((exists qr_mod4_three_p. p = 4 * qr_mod4_three_p + 3) /\ (exists qr_mod4_three_q. q = 4 * qr_mod4_three_q + 3)) -> (((exists qr_x_p_q. exists qr_u_p_q qr_v_p_q. qr_x_p_q * qr_x_p_q + p * qr_u_p_q = q + p * qr_v_p_q) /\ ~(exists qr_x_q_p. exists qr_u_q_p qr_v_q_p. qr_x_q_p * qr_x_q_p + q * qr_u_q_p = p + q * qr_v_q_p)) \/ (~(exists qr_x_p_q. exists qr_u_p_q qr_v_p_q. qr_x_p_q * qr_x_p_q + p * qr_u_p_q = q + p * qr_v_p_q) /\ (exists qr_x_q_p. exists qr_u_q_p qr_v_q_p. qr_x_q_p * qr_x_q_p + q * qr_u_q_p = p + q * qr_v_q_p))))))Proof neighborhood
Direct theorem prerequisites
PA00FG distinct_odd_primes_gauss_eisenstein_data_exists PA00FP conditional_qres_same_status_from_oriented_gauss_counts PA00FV conditional_qres_opposite_status_from_oriented_gauss_countsDirect 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 (3)
01Fix variables and assumptionsL1–7
02Separate the logical casesL8–9
03Establish hdataL10–19
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply distinct odd primes gauss eisenstein data exists.
- L10
have hdata : ∃ e. ∃ f. ∃ Q. ∃ U. (QRes(p,q) → Even(e)) ∧ (Even(e) → QRes(p,q)) ∧ ((¬QRes(p,q) → Odd(e)) ∧ (Odd(e) → ¬QRes(p,q))) ∧ ((QRes(q,p) → Even(f)) ∧ (Even(f) → QRes(q,p)) ∧ ((¬QRes(q,p) → Odd(f)) ∧ (Odd(f) → ¬QRes(q,p)))) ∧ (ModEq(2,e,Q) ∧ ModEq(2,f,U) ∧ Q + U = x · x1)Definitions: QRes(p,q)Even(e)Odd(e)QRes(q,p)Even(f)Odd(f)ModEq(2,e,Q)ModEq(2,f,U)Original native command in the exact edition - L11
specialize distinct_odd_primes_gauss_eisenstein_data_exists p - L12
specialize distinct_odd_primes_gauss_eisenstein_data_exists q - L13
specialize distinct_odd_primes_gauss_eisenstein_data_exists x - L14
specialize distinct_odd_primes_gauss_eisenstein_data_exists x1 - L15
apply distinct_odd_primes_gauss_eisenstein_data_exists - L16
exact hpodd_witness - L17
exact hqodd_witness - L18
exact hp - L19
exact hq
04Use earlier factsL20–20
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L20
exact hpq
05Separate the logical casesL21–29
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L21
cases hdata - L22
cases hdata_witness - L23
cases hdata_witness_witness - L24
cases hdata_witness_witness_witness - L25
cases hdata_witness_witness_witness_witness - L26
cases hdata_witness_witness_witness_witness_left - L27
cases hdata_witness_witness_witness_witness_right - L28
cases hdata_witness_witness_witness_witness_right_left - L29
split
06Fix variables and assumptionsL30–30
Work with arbitrary variables or the premises of the current implication.
- L30
intro hsame
07Use earlier factsL31–40
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L31
specialize conditional_qres_same_status_from_oriented_gauss_counts p - L32
specialize conditional_qres_same_status_from_oriented_gauss_counts q - L33
specialize conditional_qres_same_status_from_oriented_gauss_counts x2 - L34
specialize conditional_qres_same_status_from_oriented_gauss_counts x3 - L35
specialize conditional_qres_same_status_from_oriented_gauss_counts x4 - L36
specialize conditional_qres_same_status_from_oriented_gauss_counts x5 - L37
specialize conditional_qres_same_status_from_oriented_gauss_counts x - L38
specialize conditional_qres_same_status_from_oriented_gauss_counts x1 - L39
apply conditional_qres_same_status_from_oriented_gauss_counts - L40
exact hpodd_witness
08Use earlier factsL41–47
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L41
exact hqodd_witness - L42
exact hdata_witness_witness_witness_witness_left_left - L43
exact hdata_witness_witness_witness_witness_left_right - L44
exact hdata_witness_witness_witness_witness_right_left_left - L45
exact hdata_witness_witness_witness_witness_right_left_right - L46
exact hdata_witness_witness_witness_witness_right_right - L47
exact hsame
09Fix variables and assumptionsL48–48
Work with arbitrary variables or the premises of the current implication.
- L48
intro hopposite
10Use earlier factsL49–58
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L49
specialize conditional_qres_opposite_status_from_oriented_gauss_counts p - L50
specialize conditional_qres_opposite_status_from_oriented_gauss_counts q - L51
specialize conditional_qres_opposite_status_from_oriented_gauss_counts x2 - L52
specialize conditional_qres_opposite_status_from_oriented_gauss_counts x3 - L53
specialize conditional_qres_opposite_status_from_oriented_gauss_counts x4 - L54
specialize conditional_qres_opposite_status_from_oriented_gauss_counts x5 - L55
specialize conditional_qres_opposite_status_from_oriented_gauss_counts x - L56
specialize conditional_qres_opposite_status_from_oriented_gauss_counts x1 - L57
apply conditional_qres_opposite_status_from_oriented_gauss_counts - L58
exact hpodd_witness
11Use earlier factsL59–65
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L59
exact hqodd_witness - L60
exact hdata_witness_witness_witness_witness_left_left - L61
exact hdata_witness_witness_witness_witness_left_right - L62
exact hdata_witness_witness_witness_witness_right_left_left - L63
exact hdata_witness_witness_witness_witness_right_left_right - L64
exact hdata_witness_witness_witness_witness_right_right - L65
exact hopposite
Original defined command ledger · 65 lines
- 0001
intro p - 0002
intro q - 0003
intro hp - 0004
intro hq - 0005
intro hpq - 0006
intro hpodd - 0007
intro hqodd - 0008
cases hpodd - 0009
cases hqodd - 0010
have hdata : ∃ e. ∃ f. ∃ Q. ∃ U. (QRes(p,q) → Even(e)) ∧ (Even(e) → QRes(p,q)) ∧ ((¬QRes(p,q) → Odd(e)) ∧ (Odd(e) → ¬QRes(p,q))) ∧ ((QRes(q,p) → Even(f)) ∧ (Even(f) → QRes(q,p)) ∧ ((¬QRes(q,p) → Odd(f)) ∧ (Odd(f) → ¬QRes(q,p)))) ∧ (ModEq(2,e,Q) ∧ ModEq(2,f,U) ∧ Q + U = x · x1)Exact native replay line
have hdata : exists e f Q U. (((((((exists qr_x_qr_final_first. exists qr_u_qr_final_first qr_v_qr_final_first. qr_x_qr_final_first * qr_x_qr_final_first + p * qr_u_qr_final_first = q + p * qr_v_qr_final_first) -> (exists qr_even_first_even. e = 2 * qr_even_first_even)) /\ ((exists qr_even_first_even. e = 2 * qr_even_first_even) -> (exists qr_x_qr_final_first. exists qr_u_qr_final_first qr_v_qr_final_first. qr_x_qr_final_first * qr_x_qr_final_first + p * qr_u_qr_final_first = q + p * qr_v_qr_final_first))) /\ (((~(exists qr_x_qr_final_first. exists qr_u_qr_final_first qr_v_qr_final_first. qr_x_qr_final_first * qr_x_qr_final_first + p * qr_u_qr_final_first = q + p * qr_v_qr_final_first)) -> (exists qr_odd_first_odd. e = 2 * qr_odd_first_odd + 1)) /\ ((exists qr_odd_first_odd. e = 2 * qr_odd_first_odd + 1) -> ~(exists qr_x_qr_final_first. exists qr_u_qr_final_first qr_v_qr_final_first. qr_x_qr_final_first * qr_x_qr_final_first + p * qr_u_qr_final_first = q + p * qr_v_qr_final_first))))) /\ (((((exists qr_x_qr_final_second. exists qr_u_qr_final_second qr_v_qr_final_second. qr_x_qr_final_second * qr_x_qr_final_second + q * qr_u_qr_final_second = p + q * qr_v_qr_final_second) -> (exists qr_even_second_even. f = 2 * qr_even_second_even)) /\ ((exists qr_even_second_even. f = 2 * qr_even_second_even) -> (exists qr_x_qr_final_second. exists qr_u_qr_final_second qr_v_qr_final_second. qr_x_qr_final_second * qr_x_qr_final_second + q * qr_u_qr_final_second = p + q * qr_v_qr_final_second))) /\ (((~(exists qr_x_qr_final_second. exists qr_u_qr_final_second qr_v_qr_final_second. qr_x_qr_final_second * qr_x_qr_final_second + q * qr_u_qr_final_second = p + q * qr_v_qr_final_second)) -> (exists qr_odd_second_odd. f = 2 * qr_odd_second_odd + 1)) /\ ((exists qr_odd_second_odd. f = 2 * qr_odd_second_odd + 1) -> ~(exists qr_x_qr_final_second. exists qr_u_qr_final_second qr_v_qr_final_second. qr_x_qr_final_second * qr_x_qr_final_second + q * qr_u_qr_final_second = p + q * qr_v_qr_final_second)))))) /\ (((exists qr_mod_u_first qr_mod_v_first. e + 2 * qr_mod_u_first = Q + 2 * qr_mod_v_first) /\ (exists qr_mod_u_second qr_mod_v_second. f + 2 * qr_mod_u_second = U + 2 * qr_mod_v_second)) /\ Q + U = x * x1)) - 0011
specialize distinct_odd_primes_gauss_eisenstein_data_exists p - 0012
specialize distinct_odd_primes_gauss_eisenstein_data_exists q - 0013
specialize distinct_odd_primes_gauss_eisenstein_data_exists x - 0014
specialize distinct_odd_primes_gauss_eisenstein_data_exists x1 - 0015
apply distinct_odd_primes_gauss_eisenstein_data_exists - 0016
exact hpodd_witness - 0017
exact hqodd_witness - 0018
exact hp - 0019
exact hq - 0020
exact hpq - 0021
cases hdata - 0022
cases hdata_witness - 0023
cases hdata_witness_witness - 0024
cases hdata_witness_witness_witness - 0025
cases hdata_witness_witness_witness_witness - 0026
cases hdata_witness_witness_witness_witness_left - 0027
cases hdata_witness_witness_witness_witness_right - 0028
cases hdata_witness_witness_witness_witness_right_left - 0029
split - 0030
intro hsame - 0031
specialize conditional_qres_same_status_from_oriented_gauss_counts p - 0032
specialize conditional_qres_same_status_from_oriented_gauss_counts q - 0033
specialize conditional_qres_same_status_from_oriented_gauss_counts x2 - 0034
specialize conditional_qres_same_status_from_oriented_gauss_counts x3 - 0035
specialize conditional_qres_same_status_from_oriented_gauss_counts x4 - 0036
specialize conditional_qres_same_status_from_oriented_gauss_counts x5 - 0037
specialize conditional_qres_same_status_from_oriented_gauss_counts x - 0038
specialize conditional_qres_same_status_from_oriented_gauss_counts x1 - 0039
apply conditional_qres_same_status_from_oriented_gauss_counts - 0040
exact hpodd_witness - 0041
exact hqodd_witness - 0042
exact hdata_witness_witness_witness_witness_left_left - 0043
exact hdata_witness_witness_witness_witness_left_right - 0044
exact hdata_witness_witness_witness_witness_right_left_left - 0045
exact hdata_witness_witness_witness_witness_right_left_right - 0046
exact hdata_witness_witness_witness_witness_right_right - 0047
exact hsame - 0048
intro hopposite - 0049
specialize conditional_qres_opposite_status_from_oriented_gauss_counts p - 0050
specialize conditional_qres_opposite_status_from_oriented_gauss_counts q - 0051
specialize conditional_qres_opposite_status_from_oriented_gauss_counts x2 - 0052
specialize conditional_qres_opposite_status_from_oriented_gauss_counts x3 - 0053
specialize conditional_qres_opposite_status_from_oriented_gauss_counts x4 - 0054
specialize conditional_qres_opposite_status_from_oriented_gauss_counts x5 - 0055
specialize conditional_qres_opposite_status_from_oriented_gauss_counts x - 0056
specialize conditional_qres_opposite_status_from_oriented_gauss_counts x1 - 0057
apply conditional_qres_opposite_status_from_oriented_gauss_counts - 0058
exact hpodd_witness - 0059
exact hqodd_witness - 0060
exact hdata_witness_witness_witness_witness_left_left - 0061
exact hdata_witness_witness_witness_witness_left_right - 0062
exact hdata_witness_witness_witness_witness_right_left_left - 0063
exact hdata_witness_witness_witness_witness_right_left_right - 0064
exact hdata_witness_witness_witness_witness_right_right - 0065
exact hopposite