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. ∀ h. ∀ a. ∀ x. ∀ y. ∀ m. p = 2 · h + 1 → Prime(p) → ¬Dvd(p,a) → Lt(x + y,p) → ¬x + y = 0 → ModEq(p,a · x,m) → ¬ModEq(p,a · y,2 · h · m)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
5 occurrences
In local proof propositions
7 occurrences
Exact expanded native-PA statement
forall p h a x y m. p = 2 * h + 1 -> ((~(p = 1) /\ forall gsp_prime_left_collision_prime gsp_prime_right_collision_prime. p = gsp_prime_left_collision_prime * gsp_prime_right_collision_prime -> gsp_prime_left_collision_prime = 1 \/ gsp_prime_right_collision_prime = 1)) -> (~(exists gsp_divisor_factor_collision_multiplier. a = p * gsp_divisor_factor_collision_multiplier)) -> (exists gsp_lt_gap_mixed_sum_bound. gsp_lt_gap_mixed_sum_bound + S (x + y) = p) -> ~(x + y = 0) -> (exists gmp_mod_left_mixed_x_lower gmp_mod_right_mixed_x_lower. (a * x) + p * gmp_mod_left_mixed_x_lower = (m) + p * gmp_mod_right_mixed_x_lower) -> (exists gmp_mod_left_mixed_y_reflected gmp_mod_right_mixed_y_reflected. (a * y) + p * gmp_mod_left_mixed_y_reflected = ((2 * h) * m) + p * gmp_mod_right_mixed_y_reflected) -> falseProof neighborhood
Direct theorem prerequisites
PA0022 mod_eq_add PA000A mul_add PA000G mul_succ_left PA000F add_comm PA0021 dvd_to_mod_zero PA0024 mod_eq_trans PA003S prime_mod_cancel PA0031 prime_nonzero PA002L one_le_of_ne_zero PA002U mod_eq_bounded_uniqueDirect 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 (8)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–13
03Establish haddL14–22
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add.
- L14
have hadd : ModEq(p,a · x + a · y,m + 2 · h · m)Definitions: ModEq(p,a · x + a · y,m + 2 · h · m)Original native command in the exact edition - L15
specialize mod_eq_add p - L16
specialize mod_eq_add (a * x) - L17
specialize mod_eq_add m - L18
specialize mod_eq_add (a * y) - L19
specialize mod_eq_add (2 * h) * m - L20
apply mod_eq_add - L21
exact hxlower - L22
exact hyreflected
04Separate the logical casesL23–24
05Establish hscaled_multipleL25–25
Establish this local claim before using it. It is not an additional assumption.
- L25
have hscaled_multiple : ModEq(p,a · (x + y),p · m)Definitions: ModEq(p,a · (x + y),p · m)Original native command in the exact edition
06Construct an explicit witnessL26–27
07Calculate and transport equalitiesL28–29
08Use earlier factsL30–30
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L30
apply mul_add
09Calculate and transport equalitiesL31–32
10Use earlier factsL33–33
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L33
exact hadd_witness_witness
11Calculate and transport equalitiesL34–37
12Establish hmultiple_zeroL38–41
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply dvd to mod zero.
- L38
have hmultiple_zero : ModEq(p,p · m,0)Definitions: ModEq(p,p · m,0)Original native command in the exact edition - L39
specialize dvd_to_mod_zero p - L40
specialize dvd_to_mod_zero (p * m) - L41
apply dvd_to_mod_zero
13Construct an explicit witnessL42–42
Supply the displayed value, then prove that it has the required property.
- L42
exists m
14Calculate and transport equalitiesL43–43
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L43
refl
15Establish hscaled_zeroL44–51
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq trans.
- L44
have hscaled_zero : ModEq(p,a · (x + y),0)Definitions: ModEq(p,a · (x + y),0)Original native command in the exact edition - L45
specialize mod_eq_trans p - L46
specialize mod_eq_trans (a * (x + y)) - L47
specialize mod_eq_trans (p * m) - L48
specialize mod_eq_trans 0 - L49
apply mod_eq_trans - L50
exact hscaled_multiple - L51
exact hmultiple_zero
16Separate the logical casesL52–53
17Establish hscaled_factor_zeroL54–54
Establish this local claim before using it. It is not an additional assumption.
- L54
have hscaled_factor_zero : ModEq(p,a · (x + y),a · 0)Definitions: ModEq(p,a · (x + y),a · 0)Original native command in the exact edition
18Construct an explicit witnessL55–56
19Calculate and transport equalitiesL57–57
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L57
trans 0 + p * x4
20Use earlier factsL58–58
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L58
exact hscaled_zero_witness_witness
21Calculate and transport equalitiesL59–61
22Establish hsum_zero_modL62–70
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime mod cancel.
- L62
have hsum_zero_mod : ModEq(p,x + y,0)Definitions: ModEq(p,x + y,0)Original native command in the exact edition - L63
specialize prime_mod_cancel p - L64
specialize prime_mod_cancel a - L65
specialize prime_mod_cancel (x + y) - L66
specialize prime_mod_cancel 0 - L67
apply prime_mod_cancel - L68
exact hp - L69
exact hnotdiv - L70
exact hscaled_factor_zero
23Establish hp0L71–76
24Establish hzero_boundL77–80
25Establish hsum_zeroL81–90
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq bounded unique.
Original defined command ledger · 90 lines
- 0001
intro p - 0002
intro h - 0003
intro a - 0004
intro x - 0005
intro y - 0006
intro m - 0007
intro hpodd - 0008
intro hp - 0009
intro hnotdiv - 0010
intro hsum_bound - 0011
intro hsum_nonzero - 0012
intro hxlower - 0013
intro hyreflected - 0014
have hadd : ModEq(p,a · x + a · y,m + 2 · h · m)Exact native replay line
have hadd : exists gmp_mod_left_mixed_added gmp_mod_right_mixed_added. (a * x + a * y) + p * gmp_mod_left_mixed_added = (m + (2 * h) * m) + p * gmp_mod_right_mixed_added - 0015
specialize mod_eq_add p - 0016
specialize mod_eq_add (a * x) - 0017
specialize mod_eq_add m - 0018
specialize mod_eq_add (a * y) - 0019
specialize mod_eq_add (2 * h) * m - 0020
apply mod_eq_add - 0021
exact hxlower - 0022
exact hyreflected - 0023
cases hadd - 0024
cases hadd_witness - 0025
have hscaled_multiple : ModEq(p,a · (x + y),p · m)Exact native replay line
have hscaled_multiple : exists gmp_mod_left_mixed_scaled_sum_multiple gmp_mod_right_mixed_scaled_sum_multiple. (a * (x + y)) + p * gmp_mod_left_mixed_scaled_sum_multiple = (p * m) + p * gmp_mod_right_mixed_scaled_sum_multiple - 0026
exists x1 - 0027
exists x2 - 0028
trans (a * x + a * y) + p * x1 - 0029
congr - 0030
apply mul_add - 0031
refl - 0032
trans (m + (2 * h) * m) + p * x2 - 0033
exact hadd_witness_witness - 0034
congr - 0035
rewrite hpodd - 0036
simp [mul_succ_left, add_comm] - 0037
refl - 0038
have hmultiple_zero : ModEq(p,p · m,0)Exact native replay line
have hmultiple_zero : exists gmp_mod_left_mixed_multiple_zero gmp_mod_right_mixed_multiple_zero. (p * m) + p * gmp_mod_left_mixed_multiple_zero = (0) + p * gmp_mod_right_mixed_multiple_zero - 0039
specialize dvd_to_mod_zero p - 0040
specialize dvd_to_mod_zero (p * m) - 0041
apply dvd_to_mod_zero - 0042
exists m - 0043
refl - 0044
have hscaled_zero : ModEq(p,a · (x + y),0)Exact native replay line
have hscaled_zero : exists gmp_mod_left_mixed_scaled_sum_zero gmp_mod_right_mixed_scaled_sum_zero. (a * (x + y)) + p * gmp_mod_left_mixed_scaled_sum_zero = (0) + p * gmp_mod_right_mixed_scaled_sum_zero - 0045
specialize mod_eq_trans p - 0046
specialize mod_eq_trans (a * (x + y)) - 0047
specialize mod_eq_trans (p * m) - 0048
specialize mod_eq_trans 0 - 0049
apply mod_eq_trans - 0050
exact hscaled_multiple - 0051
exact hmultiple_zero - 0052
cases hscaled_zero - 0053
cases hscaled_zero_witness - 0054
have hscaled_factor_zero : ModEq(p,a · (x + y),a · 0)Exact native replay line
have hscaled_factor_zero : exists gmp_mod_left_mixed_scaled_sum_factor_zero gmp_mod_right_mixed_scaled_sum_factor_zero. (a * (x + y)) + p * gmp_mod_left_mixed_scaled_sum_factor_zero = (a * 0) + p * gmp_mod_right_mixed_scaled_sum_factor_zero - 0055
exists x3 - 0056
exists x4 - 0057
trans 0 + p * x4 - 0058
exact hscaled_zero_witness_witness - 0059
congr - 0060
simp - 0061
refl - 0062
have hsum_zero_mod : ModEq(p,x + y,0)Exact native replay line
have hsum_zero_mod : exists gmp_mod_left_mixed_sum_zero gmp_mod_right_mixed_sum_zero. (x + y) + p * gmp_mod_left_mixed_sum_zero = (0) + p * gmp_mod_right_mixed_sum_zero - 0063
specialize prime_mod_cancel p - 0064
specialize prime_mod_cancel a - 0065
specialize prime_mod_cancel (x + y) - 0066
specialize prime_mod_cancel 0 - 0067
apply prime_mod_cancel - 0068
exact hp - 0069
exact hnotdiv - 0070
exact hscaled_factor_zero - 0071
have hp0 : ~(p = 0) - 0072
intro hpzero - 0073
specialize prime_nonzero p - 0074
apply prime_nonzero - 0075
exact hp - 0076
exact hpzero - 0077
have hzero_bound : Lt(0,p)Exact native replay line
have hzero_bound : exists gsp_lt_gap_mixed_zero_bound. gsp_lt_gap_mixed_zero_bound + S 0 = p - 0078
specialize one_le_of_ne_zero p - 0079
apply one_le_of_ne_zero - 0080
exact hp0 - 0081
have hsum_zero : x + y = 0 - 0082
specialize mod_eq_bounded_unique p - 0083
specialize mod_eq_bounded_unique (x + y) - 0084
specialize mod_eq_bounded_unique 0 - 0085
apply mod_eq_bounded_unique - 0086
exact hsum_bound - 0087
exact hzero_bound - 0088
exact hsum_zero_mod - 0089
apply hsum_nonzero - 0090
exact hsum_zero