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. ∀ x. ∀ q. ∀ r. Odd(p) → Odd(a) → a · x = p · q + r → ModEq(2,x,q + r)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
3 occurrences
In local proof propositions
24 occurrences
Exact expanded native-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)Proof neighborhood
Direct theorem prerequisites
PA0057 parity_cases PA00C9 odd_multiplier_parity_iff PA00CG odd_division_parity_iff PA00CJ matching_parity_mod_twoDirect 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–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 : (Even(a · x) → Even(x)) ∧ (Even(x) → Even(a · x)) ∧ ((Odd(a · x) → Odd(x)) ∧ (Odd(x) → Odd(a · x)))Definitions: Even(a · x)Even(x)Odd(a · x)Odd(x)Original native command in the exact edition - 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 : (Even(a · x) → Even(q + r)) ∧ (Even(q + r) → Even(a · x)) ∧ ((Odd(a · x) → Odd(q + r)) ∧ (Odd(q + r) → Odd(a · x)))Definitions: Even(a · x)Even(q + r)Odd(a · x)Odd(q + r)Original native command in the exact edition - 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 : Even(x) ∧ Even(q + r) ∨ Odd(x) ∧ Odd(q + r)Definitions: Even(x)Even(q + r)Odd(x)Odd(q + r)Original native command in the exact edition
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 : Even(x) ∧ Even(q + r) ∨ Odd(x) ∧ Odd(q + r)Definitions: Even(x)Even(q + r)Odd(x)Odd(q + r)Original native command in the exact edition
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 defined 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 : (Even(a · x) → Even(x)) ∧ (Even(x) → Even(a · x)) ∧ ((Odd(a · x) → Odd(x)) ∧ (Odd(x) → Odd(a · x)))Exact native replay line
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 : (Even(a · x) → Even(q + r)) ∧ (Even(q + r) → Even(a · x)) ∧ ((Odd(a · x) → Odd(q + r)) ∧ (Odd(q + r) → Odd(a · x)))Exact native replay line
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 : Even(x) ∧ Even(q + r) ∨ Odd(x) ∧ Odd(q + r)Exact native replay line
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 : Even(x) ∧ Even(q + r) ∨ Odd(x) ∧ Odd(q + r)Exact native replay line
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