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. ∀ b. ∀ c. p = 2 · h + 1 → Prime(p) → ¬Dvd(p,a) → Range(b,c,1,h) → ∀ x. Lt(x,h) → ∃ y. ∃ z. ∃ n. BetaAt(b,c,x,y) ∧ (Lt(0,z) ∧ (Le(z,h) ∧ ((n = 0 ∨ n = 1) ∧ (n = 0 ∧ ModEq(p,a · y,z) ∨ n = 1 ∧ ModEq(p,a · y,2 · h · z)))))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
9 occurrences
In local proof propositions
7 occurrences
Exact expanded native-PA statement
forall p h a b c. p = 2 * h + 1 -> ((~(p = 1) /\ forall gsp_prime_left_half_range_prime gsp_prime_right_half_range_prime. p = gsp_prime_left_half_range_prime * gsp_prime_right_half_range_prime -> gsp_prime_left_half_range_prime = 1 \/ gsp_prime_right_half_range_prime = 1)) -> (~(exists gsp_divisor_factor_half_range_multiplier. a = p * gsp_divisor_factor_half_range_multiplier)) -> (forall gsp_range_index_half_range_source. (exists gsp_lt_gap_half_range_source_range_bound. gsp_lt_gap_half_range_source_range_bound + S gsp_range_index_half_range_source = h) -> (((exists gsp_beta_height_half_range_source_range_entry. gsp_beta_height_half_range_source_range_entry + S (1 + gsp_range_index_half_range_source) = S ((S (gsp_range_index_half_range_source)) * c)) /\ exists gsp_beta_quotient_half_range_source_range_entry. b = gsp_beta_quotient_half_range_source_range_entry * S ((S (gsp_range_index_half_range_source)) * c) + (1 + gsp_range_index_half_range_source)))) -> (forall gsp_choice_index_half_range_choices. (exists gsp_lt_gap_half_range_choices_choice_bound. gsp_lt_gap_half_range_choices_choice_bound + S gsp_choice_index_half_range_choices = h) -> (exists gsp_value_half_range_choices_choice gsp_magnitude_half_range_choices_choice gsp_sign_half_range_choices_choice. (((exists ff_h_gsp_half_range_choices_choice_source. ff_h_gsp_half_range_choices_choice_source + S (gsp_value_half_range_choices_choice) = S ((S (gsp_choice_index_half_range_choices)) * c)) /\ exists ff_q_gsp_half_range_choices_choice_source. b = ff_q_gsp_half_range_choices_choice_source * S ((S (gsp_choice_index_half_range_choices)) * c) + (gsp_value_half_range_choices_choice))) /\ ((exists gsp_lt_gap_half_range_choices_choice_positive. gsp_lt_gap_half_range_choices_choice_positive + S 0 = gsp_magnitude_half_range_choices_choice) /\ ((exists gsp_le_gap_half_range_choices_choice_bounded. gsp_le_gap_half_range_choices_choice_bounded + gsp_magnitude_half_range_choices_choice = h) /\ ((gsp_sign_half_range_choices_choice = 0 \/ gsp_sign_half_range_choices_choice = 1) /\ (((gsp_sign_half_range_choices_choice = 0 /\ (exists gsp_mod_left_half_range_choices_choice_lower gsp_mod_right_half_range_choices_choice_lower. (a * gsp_value_half_range_choices_choice) + p * gsp_mod_left_half_range_choices_choice_lower = (gsp_magnitude_half_range_choices_choice) + p * gsp_mod_right_half_range_choices_choice_lower)) \/ (gsp_sign_half_range_choices_choice = 1 /\ (exists gsp_mod_left_half_range_choices_choice_reflected gsp_mod_right_half_range_choices_choice_reflected. (a * gsp_value_half_range_choices_choice) + p * gsp_mod_left_half_range_choices_choice_reflected = ((2 * h) * gsp_magnitude_half_range_choices_choice) + p * gsp_mod_right_half_range_choices_choice_reflected)))))))))Proof neighborhood
Direct theorem prerequisites
PA0031 prime_nonzero PA001D division_remainder_exists PA0034 beta_half_range_entry_bounds PA0038 euclid_prime_dvd_product PA0039 divisor_le_nonzero PA003A lt_not_le PA000H mul_comm PA0071 gauss_pointwise_signed_half_choiceDirect 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–11
Work with arbitrary variables or the premises of the current implication.
- L11
intro hi
03Establish hsourceL12–15
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hrange.
- L12
have hsource : BetaAt(b,c,i,1 + i)Definitions: BetaAt(b,c,i,1 + i)Original native command in the exact edition - L13
specialize hrange i - L14
apply hrange - L15
exact hi
04Establish hboundsL16–25
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta half range entry bounds.
- L16
have hbounds : UnitResidue(p,1 + i)Definitions: UnitResidue(p,1 + i)Original native command in the exact edition - L17
specialize beta_half_range_entry_bounds p - L18
specialize beta_half_range_entry_bounds h - L19
specialize beta_half_range_entry_bounds b - L20
specialize beta_half_range_entry_bounds c - L21
specialize beta_half_range_entry_bounds i - L22
specialize beta_half_range_entry_bounds (1 + i) - L23
apply beta_half_range_entry_bounds - L24
exact hp - L25
exact hrange
05Use earlier factsL26–27
06Separate the logical casesL28–28
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L28
cases hbounds
07Establish hp0L29–34
08Establish hdivL35–39
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply division remainder exists.
- L35
have hdiv : ∃ q. ∃ r. DivRem(a · (1 + i),p,q,r)Definitions: DivRem(a · (1 + i),p,q,r)Original native command in the exact edition - L36
specialize division_remainder_exists p - L37
specialize division_remainder_exists (a * (1 + i)) - L38
apply division_remainder_exists - L39
exact hp0
09Separate the logical casesL40–42
10Establish hrem0L43–44
11Establish hmultipleL45–45
Establish this local claim before using it. It is not an additional assumption.
- L45
have hmultiple : Dvd(p,a · (1 + i))Definitions: Dvd(p,a · (1 + i))Original native command in the exact edition
12Construct an explicit witnessL46–46
Supply the displayed value, then prove that it has the required property.
- L46
exists x
13Calculate and transport equalitiesL47–47
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L47
trans p * x + x1
14Use earlier factsL48–48
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L48
exact hdiv_witness_witness_left
15Calculate and transport equalitiesL49–49
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L49
rewrite hremzero
16Use earlier factsL50–50
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L50
apply PA3
17Establish hfactorL51–57
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply euclid prime dvd product.
- L51
have hfactor : Dvd(p,a) ∨ Dvd(p,1 + i)Definitions: Dvd(p,a)Dvd(p,1 + i)Original native command in the exact edition - L52
specialize euclid_prime_dvd_product p - L53
specialize euclid_prime_dvd_product a - L54
specialize euclid_prime_dvd_product (1 + i) - L55
apply euclid_prime_dvd_product - L56
exact hprime - L57
exact hmultiple
18Separate the logical casesL58–58
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L58
cases hfactor
19Use earlier factsL59–60
20Establish hpleL61–70
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor le nonzero.
21Use earlier factsL71–71
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L71
exact hple
22Establish hdecompL72–81
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul comm.
- L72
have hdecomp : a * (1 + i) = x * p + x1 - L73
trans p * x + x1 - L74
exact hdiv_witness_witness_left - L75
congr - L76
apply mul_comm - L77
refl - L78
specialize gauss_pointwise_signed_half_choice p - L79
specialize gauss_pointwise_signed_half_choice h - L80
specialize gauss_pointwise_signed_half_choice a - L81
specialize gauss_pointwise_signed_half_choice b
23Use earlier factsL82–91
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L82
specialize gauss_pointwise_signed_half_choice c - L83
specialize gauss_pointwise_signed_half_choice i - L84
specialize gauss_pointwise_signed_half_choice (1 + i) - L85
specialize gauss_pointwise_signed_half_choice x - L86
specialize gauss_pointwise_signed_half_choice x1 - L87
apply gauss_pointwise_signed_half_choice - L88
exact hp - L89
exact hsource - L90
exact hdecomp - L91
exact hdiv_witness_witness_right
24Use earlier factsL92–92
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L92
exact hrem0
Original defined command ledger · 92 lines
- 0001
intro p - 0002
intro h - 0003
intro a - 0004
intro b - 0005
intro c - 0006
intro hp - 0007
intro hprime - 0008
intro hnotdiv - 0009
intro hrange - 0010
intro i - 0011
intro hi - 0012
have hsource : BetaAt(b,c,i,1 + i)Exact native replay line
have hsource : ((exists gsp_beta_height_half_range_source_entry_i. gsp_beta_height_half_range_source_entry_i + S (1 + i) = S ((S (i)) * c)) /\ exists gsp_beta_quotient_half_range_source_entry_i. b = gsp_beta_quotient_half_range_source_entry_i * S ((S (i)) * c) + (1 + i)) - 0013
specialize hrange i - 0014
apply hrange - 0015
exact hi - 0016
have hbounds : UnitResidue(p,1 + i)Exact native replay line
have hbounds : (~(1 + i = 0) /\ (exists gsp_half_value_bound_gap. gsp_half_value_bound_gap + S (1 + i) = p)) - 0017
specialize beta_half_range_entry_bounds p - 0018
specialize beta_half_range_entry_bounds h - 0019
specialize beta_half_range_entry_bounds b - 0020
specialize beta_half_range_entry_bounds c - 0021
specialize beta_half_range_entry_bounds i - 0022
specialize beta_half_range_entry_bounds (1 + i) - 0023
apply beta_half_range_entry_bounds - 0024
exact hp - 0025
exact hrange - 0026
exact hi - 0027
exact hsource - 0028
cases hbounds - 0029
have hp0 : ~(p = 0) - 0030
intro hpzero - 0031
specialize prime_nonzero p - 0032
apply prime_nonzero - 0033
exact hprime - 0034
exact hpzero - 0035
have hdiv : ∃ q. ∃ r. DivRem(a · (1 + i),p,q,r)Exact native replay line
have hdiv : exists q r. a * (1 + i) = p * q + r /\ (exists gsp_half_value_bound_gap. gsp_half_value_bound_gap + S (r) = p) - 0036
specialize division_remainder_exists p - 0037
specialize division_remainder_exists (a * (1 + i)) - 0038
apply division_remainder_exists - 0039
exact hp0 - 0040
cases hdiv - 0041
cases hdiv_witness - 0042
cases hdiv_witness_witness - 0043
have hrem0 : ~(x1 = 0) - 0044
intro hremzero - 0045
have hmultiple : Dvd(p,a · (1 + i))Exact native replay line
have hmultiple : exists k. a * (1 + i) = p * k - 0046
exists x - 0047
trans p * x + x1 - 0048
exact hdiv_witness_witness_left - 0049
rewrite hremzero - 0050
apply PA3 - 0051
have hfactor : Dvd(p,a) ∨ Dvd(p,1 + i)Exact native replay line
have hfactor : (exists u. a = p * u) \/ exists v. 1 + i = p * v - 0052
specialize euclid_prime_dvd_product p - 0053
specialize euclid_prime_dvd_product a - 0054
specialize euclid_prime_dvd_product (1 + i) - 0055
apply euclid_prime_dvd_product - 0056
exact hprime - 0057
exact hmultiple - 0058
cases hfactor - 0059
apply hnotdiv - 0060
exact hfactor_left - 0061
have hple : Le(p,1 + i)Exact native replay line
have hple : exists k. k + p = 1 + i - 0062
specialize divisor_le_nonzero p - 0063
specialize divisor_le_nonzero (1 + i) - 0064
apply divisor_le_nonzero - 0065
exact hbounds_left - 0066
exact hfactor_right - 0067
specialize lt_not_le (1 + i) - 0068
specialize lt_not_le p - 0069
apply lt_not_le - 0070
exact hbounds_right - 0071
exact hple - 0072
have hdecomp : a * (1 + i) = x * p + x1 - 0073
trans p * x + x1 - 0074
exact hdiv_witness_witness_left - 0075
congr - 0076
apply mul_comm - 0077
refl - 0078
specialize gauss_pointwise_signed_half_choice p - 0079
specialize gauss_pointwise_signed_half_choice h - 0080
specialize gauss_pointwise_signed_half_choice a - 0081
specialize gauss_pointwise_signed_half_choice b - 0082
specialize gauss_pointwise_signed_half_choice c - 0083
specialize gauss_pointwise_signed_half_choice i - 0084
specialize gauss_pointwise_signed_half_choice (1 + i) - 0085
specialize gauss_pointwise_signed_half_choice x - 0086
specialize gauss_pointwise_signed_half_choice x1 - 0087
apply gauss_pointwise_signed_half_choice - 0088
exact hp - 0089
exact hsource - 0090
exact hdecomp - 0091
exact hdiv_witness_witness_right - 0092
exact hrem0