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.
Exact expanded PA statement
forall p q e f h k. p = 2 * h + 1 -> q = 2 * k + 1 -> (((((exists qr_x_qrp_pq. exists qr_u_qrp_pq qr_v_qrp_pq. qr_x_qrp_pq * qr_x_qrp_pq + p * qr_u_qrp_pq = q + p * qr_v_qrp_pq) -> (exists qrp_even_e_even. e = 2 * qrp_even_e_even)) /\ ((exists qrp_even_e_even. e = 2 * qrp_even_e_even) -> (exists qr_x_qrp_pq. exists qr_u_qrp_pq qr_v_qrp_pq. qr_x_qrp_pq * qr_x_qrp_pq + p * qr_u_qrp_pq = q + p * qr_v_qrp_pq))) /\ (((~(exists qr_x_qrp_pq. exists qr_u_qrp_pq qr_v_qrp_pq. qr_x_qrp_pq * qr_x_qrp_pq + p * qr_u_qrp_pq = q + p * qr_v_qrp_pq)) -> (exists qrp_odd_e_odd. e = 2 * qrp_odd_e_odd + 1)) /\ ((exists qrp_odd_e_odd. e = 2 * qrp_odd_e_odd + 1) -> ~(exists qr_x_qrp_pq. exists qr_u_qrp_pq qr_v_qrp_pq. qr_x_qrp_pq * qr_x_qrp_pq + p * qr_u_qrp_pq = q + p * qr_v_qrp_pq))))) -> (((((exists qr_x_qrp_qp. exists qr_u_qrp_qp qr_v_qrp_qp. qr_x_qrp_qp * qr_x_qrp_qp + q * qr_u_qrp_qp = p + q * qr_v_qrp_qp) -> (exists qrp_even_f_even. f = 2 * qrp_even_f_even)) /\ ((exists qrp_even_f_even. f = 2 * qrp_even_f_even) -> (exists qr_x_qrp_qp. exists qr_u_qrp_qp qr_v_qrp_qp. qr_x_qrp_qp * qr_x_qrp_qp + q * qr_u_qrp_qp = p + q * qr_v_qrp_qp))) /\ (((~(exists qr_x_qrp_qp. exists qr_u_qrp_qp qr_v_qrp_qp. qr_x_qrp_qp * qr_x_qrp_qp + q * qr_u_qrp_qp = p + q * qr_v_qrp_qp)) -> (exists qrp_odd_f_odd. f = 2 * qrp_odd_f_odd + 1)) /\ ((exists qrp_odd_f_odd. f = 2 * qrp_odd_f_odd + 1) -> ~(exists qr_x_qrp_qp. exists qr_u_qrp_qp qr_v_qrp_qp. qr_x_qrp_qp * qr_x_qrp_qp + q * qr_u_qrp_qp = p + q * qr_v_qrp_qp))))) -> (exists qrp_u_count_product qrp_v_count_product. e + f + 2 * qrp_u_count_product = h * k + 2 * qrp_v_count_product) -> ((exists qrp_three_p. p = 4 * qrp_three_p + 3) /\ (exists qrp_three_q. q = 4 * qrp_three_q + 3)) -> ((((exists qr_x_qrp_pq. exists qr_u_qrp_pq qr_v_qrp_pq. qr_x_qrp_pq * qr_x_qrp_pq + p * qr_u_qrp_pq = q + p * qr_v_qrp_pq) /\ ~(exists qr_x_qrp_qp. exists qr_u_qrp_qp qr_v_qrp_qp. qr_x_qrp_qp * qr_x_qrp_qp + q * qr_u_qrp_qp = p + q * qr_v_qrp_qp)) \/ (~(exists qr_x_qrp_pq. exists qr_u_qrp_pq qr_v_qrp_pq. qr_x_qrp_pq * qr_x_qrp_pq + p * qr_u_qrp_pq = q + p * qr_v_qrp_pq) /\ (exists qr_x_qrp_qp. exists qr_u_qrp_qp qr_v_qrp_qp. qr_x_qrp_qp * qr_x_qrp_qp + q * qr_u_qrp_qp = p + q * qr_v_qrp_qp))))Structural proof guide
Generated structural guide
Two three-mod-four inputs force opposite cross-residue status.
Use the direct prerequisites odd_half_odd_iff_mod4_three, odd_mul_odd, qres_opposite_status_from_odd_half_product_mod_two as previously established PA formulas.
The proof proceeds by case analysis (3), intermediate claims (5).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA00FR odd_half_odd_iff_mod4_three PA006D odd_mul_odd PA00FT qres_opposite_status_from_odd_half_product_mod_twoDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Alpha-v25 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.
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–10
02Fix variables and assumptionsL11–12
03Separate the logical casesL13–13
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L13
cases hthree
04Establish hpbridgeL14–18
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply odd half odd iff mod4 three.
- L14
have hpbridge : (((exists qrp_odd_h. h = 2 * qrp_odd_h + 1) -> (exists qrp_three_p. p = 4 * qrp_three_p + 3)) /\ ((exists qrp_three_p. p = 4 * qrp_three_p + 3) -> (exists qrp_odd_h. h = 2 * qrp_odd_h + 1))) - L15
specialize odd_half_odd_iff_mod4_three p - L16
specialize odd_half_odd_iff_mod4_three h - L17
apply odd_half_odd_iff_mod4_three - L18
exact hp
05Separate the logical casesL19–19
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L19
cases hpbridge
06Establish hpoddL20–22
07Establish hqbridgeL23–27
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply odd half odd iff mod4 three.
- L23
have hqbridge : (((exists qrp_odd_k. k = 2 * qrp_odd_k + 1) -> (exists qrp_three_q. q = 4 * qrp_three_q + 3)) /\ ((exists qrp_three_q. q = 4 * qrp_three_q + 3) -> (exists qrp_odd_k. k = 2 * qrp_odd_k + 1))) - L24
specialize odd_half_odd_iff_mod4_three q - L25
specialize odd_half_odd_iff_mod4_three k - L26
apply odd_half_odd_iff_mod4_three - L27
exact hq
08Separate the logical casesL28–28
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L28
cases hqbridge
09Establish hqoddL29–31
10Establish hproductL32–41
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply odd mul odd.
- L32
have hproduct : exists qrp_odd_half_product. h * k = 2 * qrp_odd_half_product + 1 - L33
specialize odd_mul_odd h - L34
specialize odd_mul_odd k - L35
apply odd_mul_odd - L36
exact hpodd - L37
exact hqodd - L38
specialize qres_opposite_status_from_odd_half_product_mod_two p - L39
specialize qres_opposite_status_from_odd_half_product_mod_two q - L40
specialize qres_opposite_status_from_odd_half_product_mod_two e - L41
specialize qres_opposite_status_from_odd_half_product_mod_two f
11Use earlier factsL42–48
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original exact command ledger · 48 lines
- 0001
intro p - 0002
intro q - 0003
intro e - 0004
intro f - 0005
intro h - 0006
intro k - 0007
intro hp - 0008
intro hq - 0009
intro heclass - 0010
intro hfclass - 0011
intro hmod - 0012
intro hthree - 0013
cases hthree - 0014
have hpbridge : (((exists qrp_odd_h. h = 2 * qrp_odd_h + 1) -> (exists qrp_three_p. p = 4 * qrp_three_p + 3)) /\ ((exists qrp_three_p. p = 4 * qrp_three_p + 3) -> (exists qrp_odd_h. h = 2 * qrp_odd_h + 1))) - 0015
specialize odd_half_odd_iff_mod4_three p - 0016
specialize odd_half_odd_iff_mod4_three h - 0017
apply odd_half_odd_iff_mod4_three - 0018
exact hp - 0019
cases hpbridge - 0020
have hpodd : exists qrp_odd_h. h = 2 * qrp_odd_h + 1 - 0021
apply hpbridge_right - 0022
exact hthree_left - 0023
have hqbridge : (((exists qrp_odd_k. k = 2 * qrp_odd_k + 1) -> (exists qrp_three_q. q = 4 * qrp_three_q + 3)) /\ ((exists qrp_three_q. q = 4 * qrp_three_q + 3) -> (exists qrp_odd_k. k = 2 * qrp_odd_k + 1))) - 0024
specialize odd_half_odd_iff_mod4_three q - 0025
specialize odd_half_odd_iff_mod4_three k - 0026
apply odd_half_odd_iff_mod4_three - 0027
exact hq - 0028
cases hqbridge - 0029
have hqodd : exists qrp_odd_k. k = 2 * qrp_odd_k + 1 - 0030
apply hqbridge_right - 0031
exact hthree_right - 0032
have hproduct : exists qrp_odd_half_product. h * k = 2 * qrp_odd_half_product + 1 - 0033
specialize odd_mul_odd h - 0034
specialize odd_mul_odd k - 0035
apply odd_mul_odd - 0036
exact hpodd - 0037
exact hqodd - 0038
specialize qres_opposite_status_from_odd_half_product_mod_two p - 0039
specialize qres_opposite_status_from_odd_half_product_mod_two q - 0040
specialize qres_opposite_status_from_odd_half_product_mod_two e - 0041
specialize qres_opposite_status_from_odd_half_product_mod_two f - 0042
specialize qres_opposite_status_from_odd_half_product_mod_two h - 0043
specialize qres_opposite_status_from_odd_half_product_mod_two k - 0044
apply qres_opposite_status_from_odd_half_product_mod_two - 0045
exact heclass - 0046
exact hfclass - 0047
exact hmod - 0048
exact hproduct