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 a x q r. (exists sdp_odd_prime_like_modulus. p = 2 * sdp_odd_prime_like_modulus + 1) -> (exists sdp_odd_scale. a = 2 * sdp_odd_scale + 1) -> a * x = p * q + r -> (exists sdp_u_product_division_result sdp_v_product_division_result. (x) + 2 * sdp_u_product_division_result = (q + r) + 2 * sdp_v_product_division_result)Structural proof guide
Generated structural guide
Odd scale and modulus transport an exact division equation to x == q+r modulo two.
Use the direct prerequisites parity_cases, odd_multiplier_parity_iff, odd_division_parity_iff, matching_parity_mod_two as previously established PA formulas.
The proof proceeds by case analysis (8), intermediate claims (5).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA0057 parity_cases PA00C9 odd_multiplier_parity_iff PA00CG odd_division_parity_iff PA00CJ matching_parity_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 (4)
01Fix variables and assumptionsL1–8
02Establish hproductL9–13
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply odd multiplier parity iff.
- L9
have hproduct : ((((exists sdp_even_proof_ax_even. a * x = 2 * sdp_even_proof_ax_even) -> (exists sdp_even_proof_x_even. x = 2 * sdp_even_proof_x_even)) /\ ((exists sdp_even_proof_x_even. x = 2 * sdp_even_proof_x_even) -> (exists sdp_even_proof_ax_even. a * x = 2 * sdp_even_proof_ax_even))) /\ (((exists sdp_odd_proof_ax_odd. a * x = 2 * sdp_odd_proof_ax_odd + 1) -> (exists sdp_odd_proof_x_odd. x = 2 * sdp_odd_proof_x_odd + 1)) /\ ((exists sdp_odd_proof_x_odd. x = 2 * sdp_odd_proof_x_odd + 1) -> (exists sdp_odd_proof_ax_odd. a * x = 2 * sdp_odd_proof_ax_odd + 1)))) - L10
specialize odd_multiplier_parity_iff a - L11
specialize odd_multiplier_parity_iff x - L12
apply odd_multiplier_parity_iff - L13
exact ha
03Establish hquotientL14–21
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply odd division parity iff.
- L14
have hquotient : ((((exists sdp_even_proof_ax_even. a * x = 2 * sdp_even_proof_ax_even) -> (exists sdp_even_proof_qr_even. q + r = 2 * sdp_even_proof_qr_even)) /\ ((exists sdp_even_proof_qr_even. q + r = 2 * sdp_even_proof_qr_even) -> (exists sdp_even_proof_ax_even. a * x = 2 * sdp_even_proof_ax_even))) /\ (((exists sdp_odd_proof_ax_odd. a * x = 2 * sdp_odd_proof_ax_odd + 1) -> (exists sdp_odd_proof_qr_odd. q + r = 2 * sdp_odd_proof_qr_odd + 1)) /\ ((exists sdp_odd_proof_qr_odd. q + r = 2 * sdp_odd_proof_qr_odd + 1) -> (exists sdp_odd_proof_ax_odd. a * x = 2 * sdp_odd_proof_ax_odd + 1)))) - L15
specialize odd_division_parity_iff p - L16
specialize odd_division_parity_iff q - L17
specialize odd_division_parity_iff r - L18
specialize odd_division_parity_iff (a * x) - L19
apply odd_division_parity_iff - L20
exact hp - L21
exact hdivision
04Separate the logical casesL22–27
05Establish hxcasesL28–30
06Separate the logical casesL31–32
07Establish hmatchingL33–33
Establish this local claim before using it. It is not an additional assumption.
- L33
have hmatching : (((exists sdp_even_proof_x_even. x = 2 * sdp_even_proof_x_even) /\ (exists sdp_even_proof_qr_even. q + r = 2 * sdp_even_proof_qr_even)) \/ ((exists sdp_odd_proof_x_odd. x = 2 * sdp_odd_proof_x_odd + 1) /\ (exists sdp_odd_proof_qr_odd. q + r = 2 * sdp_odd_proof_qr_odd + 1)))
08Separate the logical casesL34–35
09Construct an explicit witnessL36–36
Supply the displayed value, then prove that it has the required property.
- L36
exists x1
10Use earlier factsL37–39
11Construct an explicit witnessL40–40
Supply the displayed value, then prove that it has the required property.
- L40
exists x1
12Use earlier factsL41–45
13Establish hmatchingL46–46
Establish this local claim before using it. It is not an additional assumption.
- L46
have hmatching : (((exists sdp_even_proof_x_even. x = 2 * sdp_even_proof_x_even) /\ (exists sdp_even_proof_qr_even. q + r = 2 * sdp_even_proof_qr_even)) \/ ((exists sdp_odd_proof_x_odd. x = 2 * sdp_odd_proof_x_odd + 1) /\ (exists sdp_odd_proof_qr_odd. q + r = 2 * sdp_odd_proof_qr_odd + 1)))
14Separate the logical casesL47–48
15Construct an explicit witnessL49–49
Supply the displayed value, then prove that it has the required property.
- L49
exists x1
16Use earlier factsL50–52
17Construct an explicit witnessL53–53
Supply the displayed value, then prove that it has the required property.
- L53
exists x1
Original exact command ledger · 58 lines
- 0001
intro p - 0002
intro a - 0003
intro x - 0004
intro q - 0005
intro r - 0006
intro hp - 0007
intro ha - 0008
intro hdivision - 0009
have hproduct : ((((exists sdp_even_proof_ax_even. a * x = 2 * sdp_even_proof_ax_even) -> (exists sdp_even_proof_x_even. x = 2 * sdp_even_proof_x_even)) /\ ((exists sdp_even_proof_x_even. x = 2 * sdp_even_proof_x_even) -> (exists sdp_even_proof_ax_even. a * x = 2 * sdp_even_proof_ax_even))) /\ (((exists sdp_odd_proof_ax_odd. a * x = 2 * sdp_odd_proof_ax_odd + 1) -> (exists sdp_odd_proof_x_odd. x = 2 * sdp_odd_proof_x_odd + 1)) /\ ((exists sdp_odd_proof_x_odd. x = 2 * sdp_odd_proof_x_odd + 1) -> (exists sdp_odd_proof_ax_odd. a * x = 2 * sdp_odd_proof_ax_odd + 1)))) - 0010
specialize odd_multiplier_parity_iff a - 0011
specialize odd_multiplier_parity_iff x - 0012
apply odd_multiplier_parity_iff - 0013
exact ha - 0014
have hquotient : ((((exists sdp_even_proof_ax_even. a * x = 2 * sdp_even_proof_ax_even) -> (exists sdp_even_proof_qr_even. q + r = 2 * sdp_even_proof_qr_even)) /\ ((exists sdp_even_proof_qr_even. q + r = 2 * sdp_even_proof_qr_even) -> (exists sdp_even_proof_ax_even. a * x = 2 * sdp_even_proof_ax_even))) /\ (((exists sdp_odd_proof_ax_odd. a * x = 2 * sdp_odd_proof_ax_odd + 1) -> (exists sdp_odd_proof_qr_odd. q + r = 2 * sdp_odd_proof_qr_odd + 1)) /\ ((exists sdp_odd_proof_qr_odd. q + r = 2 * sdp_odd_proof_qr_odd + 1) -> (exists sdp_odd_proof_ax_odd. a * x = 2 * sdp_odd_proof_ax_odd + 1)))) - 0015
specialize odd_division_parity_iff p - 0016
specialize odd_division_parity_iff q - 0017
specialize odd_division_parity_iff r - 0018
specialize odd_division_parity_iff (a * x) - 0019
apply odd_division_parity_iff - 0020
exact hp - 0021
exact hdivision - 0022
cases hproduct - 0023
cases hproduct_left - 0024
cases hproduct_right - 0025
cases hquotient - 0026
cases hquotient_left - 0027
cases hquotient_right - 0028
have hxcases : exists k. x = 2 * k \/ x = 2 * k + 1 - 0029
specialize parity_cases x - 0030
exact parity_cases - 0031
cases hxcases - 0032
cases hxcases_witness - 0033
have hmatching : (((exists sdp_even_proof_x_even. x = 2 * sdp_even_proof_x_even) /\ (exists sdp_even_proof_qr_even. q + r = 2 * sdp_even_proof_qr_even)) \/ ((exists sdp_odd_proof_x_odd. x = 2 * sdp_odd_proof_x_odd + 1) /\ (exists sdp_odd_proof_qr_odd. q + r = 2 * sdp_odd_proof_qr_odd + 1))) - 0034
left - 0035
split - 0036
exists x1 - 0037
exact hxcases_witness_left - 0038
apply hquotient_left_left - 0039
apply hproduct_left_right - 0040
exists x1 - 0041
exact hxcases_witness_left - 0042
specialize matching_parity_mod_two x - 0043
specialize matching_parity_mod_two (q + r) - 0044
apply matching_parity_mod_two - 0045
exact hmatching - 0046
have hmatching : (((exists sdp_even_proof_x_even. x = 2 * sdp_even_proof_x_even) /\ (exists sdp_even_proof_qr_even. q + r = 2 * sdp_even_proof_qr_even)) \/ ((exists sdp_odd_proof_x_odd. x = 2 * sdp_odd_proof_x_odd + 1) /\ (exists sdp_odd_proof_qr_odd. q + r = 2 * sdp_odd_proof_qr_odd + 1))) - 0047
right - 0048
split - 0049
exists x1 - 0050
exact hxcases_witness_right - 0051
apply hquotient_right_left - 0052
apply hproduct_right_right - 0053
exists x1 - 0054
exact hxcases_witness_right - 0055
specialize matching_parity_mod_two x - 0056
specialize matching_parity_mod_two (q + r) - 0057
apply matching_parity_mod_two - 0058
exact hmatching