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
∀ l. ∀ n. ∀ p. ∀ a. Le(l,n) → p = S n → Prime(p) → ¬Dvd(p,a) → ∃ x. ∃ y. ∀ z. Lt(z,l) → ∃ m. Lt(m,n) ∧ (BetaAt(x,y,z,m) ∧ ModEq(p,a · S z,S 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
7 occurrences
In local proof propositions
18 occurrences
Exact expanded native-PA statement
forall l n p a. (exists frm_weak_gap_index_map_length. frm_weak_gap_index_map_length + l = n) -> p = S n -> ((~(p = 1) /\ forall frm_prime_left_index_map_prime frm_prime_right_index_map_prime. p = frm_prime_left_index_map_prime * frm_prime_right_index_map_prime -> frm_prime_left_index_map_prime = 1 \/ frm_prime_right_index_map_prime = 1)) -> (~(exists frm_factor_index_map_multiplier. a = p * frm_factor_index_map_multiplier)) -> exists r s. (forall frm_index_result. (exists frm_gap_result_index_bound. frm_gap_result_index_bound + S frm_index_result = l) -> (exists frm_residue_result_result. (exists frm_gap_result_result_residue_bound. frm_gap_result_result_residue_bound + S frm_residue_result_result = n) /\ ((((exists ff_h_frm_result_result_decoded. ff_h_frm_result_result_decoded + S (frm_residue_result_result) = S ((S (frm_index_result)) * s)) /\ exists ff_q_frm_result_result_decoded. r = ff_q_frm_result_result_decoded * S ((S (frm_index_result)) * s) + (frm_residue_result_result))) /\ (exists frm_mod_left_result_result_congruence frm_mod_right_result_result_congruence. a * S frm_index_result + p * frm_mod_left_result_result_congruence = S frm_residue_result_result + p * frm_mod_right_result_result_congruence))))Proof neighborhood
Direct theorem prerequisites
PA0004 add_eq_zero_right PA0005 succ_ne_zero PA000X lt_to_le PA002K succ_le_succ PA0031 prime_nonzero PA001D division_remainder_exists PA0038 euclid_prime_dvd_product PA0039 divisor_le_nonzero PA003A lt_not_le PA001V nonzero_is_succ PA000V le_of_succ_le_succ PA000H mul_comm PA003C remainder_decomposition_to_mod_eq PA003D finite_lt_succ_eq_or_lt PA002X beta_prefix_extendDirect 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 (15)
01Induction on lL1–8
02Construct an explicit witnessL9–10
03Fix variables and assumptionsL11–12
04Separate the logical casesL13–14
05Establish hsiL15–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add eq zero right.
06Fix variables and assumptionsL25–29
07Establish hln_prevL30–34
08Establish hprevL35–43
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L35
have hprev : ∃ r. ∃ s. ∀ x. Lt(x,l) → ∃ y. Lt(y,n) ∧ (BetaAt(r,s,x,y) ∧ ModEq(p,a · S x,S y))Definitions: Lt(x,l)Lt(y,n)BetaAt(r,s,x,y)ModEq(p,a · S x,S y)Original native command in the exact edition - L36
specialize IH n - L37
specialize IH p - L38
specialize IH a - L39
apply IH - L40
exact hln_prev - L41
exact hpn - L42
exact hp - L43
exact hnotdiv
09Separate the logical casesL44–45
10Establish hslpL46–51
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply succ le succ.
11Establish hp0L52–57
12Establish hdivL58–62
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply division remainder exists.
- L58
have hdiv : ∃ q. ∃ rem. DivRem(a · S l,p,q,rem)Definitions: DivRem(a · S l,p,q,rem)Original native command in the exact edition - L59
specialize division_remainder_exists p - L60
specialize division_remainder_exists (a * S l) - L61
apply division_remainder_exists - L62
exact hp0
13Separate the logical casesL63–65
14Establish hrem0L66–67
15Establish hmultipleL68–68
Establish this local claim before using it. It is not an additional assumption.
- L68
have hmultiple : Dvd(p,a · S l)Definitions: Dvd(p,a · S l)Original native command in the exact edition
16Construct an explicit witnessL69–69
Supply the displayed value, then prove that it has the required property.
- L69
exists x2
17Calculate and transport equalitiesL70–70
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L70
trans p * x2 + x3
18Use earlier factsL71–71
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L71
exact hdiv_witness_witness_left
19Calculate and transport equalitiesL72–72
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L72
rewrite hremzero
20Use earlier factsL73–73
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L73
apply PA3
21Establish hfactorL74–80
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply euclid prime dvd product.
- L74
have hfactor : Dvd(p,a) ∨ Dvd(p,S l)Definitions: Dvd(p,a)Dvd(p,S l)Original native command in the exact edition - L75
specialize euclid_prime_dvd_product p - L76
specialize euclid_prime_dvd_product a - L77
specialize euclid_prime_dvd_product (S l) - L78
apply euclid_prime_dvd_product - L79
exact hp - L80
exact hmultiple
22Separate the logical casesL81–81
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L81
cases hfactor
23Use earlier factsL82–83
24Establish hsl0L84–86
25Establish hpleL87–96
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply divisor le nonzero.
26Use earlier factsL97–97
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L97
exact hple
27Establish hrem_succL98–101
28Separate the logical casesL102–102
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L102
cases hrem_succ
29Establish hjnL103–109
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le of succ le succ.
30Establish hdecompL110–115
31Establish hmodremL116–122
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply remainder decomposition to mod eq.
- L116
have hmodrem : ModEq(p,a · S l,x3)Definitions: ModEq(p,a · S l,x3)Original native command in the exact edition - L117
specialize remainder_decomposition_to_mod_eq p - L118
specialize remainder_decomposition_to_mod_eq (a * S l) - L119
specialize remainder_decomposition_to_mod_eq x2 - L120
specialize remainder_decomposition_to_mod_eq x3 - L121
apply remainder_decomposition_to_mod_eq - L122
exact hdecomp
32Establish hmodL123–129
Establish this local claim before using it. It is not an additional assumption.
- L123
have hmod : ModEq(p,a · S l,S x4)Definitions: ModEq(p,a · S l,S x4)Original native command in the exact edition - L124
rewrite <- hrem_succ_witness - L125
exact hmodrem - L126
specialize beta_prefix_extend l - L127
specialize beta_prefix_extend x - L128
specialize beta_prefix_extend x1 - L129
specialize beta_prefix_extend x4
33Separate the logical casesL130–132
34Construct an explicit witnessL133–134
35Fix variables and assumptionsL135–136
36Establish hsplitL137–141
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.
37Separate the logical casesL142–142
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L142
cases hsplit
38Construct an explicit witnessL143–143
Supply the displayed value, then prove that it has the required property.
- L143
exists x4
39Separate the logical casesL144–144
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L144
split
40Use earlier factsL145–145
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L145
exact hjn
41Separate the logical casesL146–146
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L146
split
42Calculate and transport equalitiesL147–148
43Use earlier factsL149–149
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L149
exact beta_prefix_extend_witness_witness_left
44Calculate and transport equalitiesL150–150
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L150
rewrite hsplit_left
45Use earlier factsL151–151
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L151
exact hmod
46Establish holdL152–155
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hprev witness witness.
- L152
have hold : ∃ y. Lt(y,n) ∧ (BetaAt(x,x1,i,y) ∧ ModEq(p,a · S i,S y))Definitions: Lt(y,n)BetaAt(x,x1,i,y)ModEq(p,a · S i,S y)Original native command in the exact edition - L153
specialize hprev_witness_witness i - L154
apply hprev_witness_witness - L155
exact hsplit_right
47Separate the logical casesL156–158
48Construct an explicit witnessL159–159
Supply the displayed value, then prove that it has the required property.
- L159
exists x7
49Separate the logical casesL160–160
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L160
split
50Use earlier factsL161–161
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L161
exact hold_witness_left
51Separate the logical casesL162–162
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L162
split
52Use earlier factsL163–168
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original defined command ledger · 168 lines
- 0001
induction l - 0002
intro n - 0003
intro p - 0004
intro a - 0005
intro hln - 0006
intro hpn - 0007
intro hp - 0008
intro hnotdiv - 0009
exists 0 - 0010
exists 0 - 0011
intro i - 0012
intro hi - 0013
exfalso - 0014
cases hi - 0015
have hsi : S i = 0 - 0016
specialize add_eq_zero_right x - 0017
specialize add_eq_zero_right (S i) - 0018
apply add_eq_zero_right - 0019
exact hi_witness - 0020
specialize succ_ne_zero i - 0021
apply succ_ne_zero - 0022
exact hsi - 0023
intro n - 0024
intro p - 0025
intro a - 0026
intro hln - 0027
intro hpn - 0028
intro hp - 0029
intro hnotdiv - 0030
have hln_prev : Le(l,n)Exact native replay line
have hln_prev : exists h. h + l = n - 0031
specialize lt_to_le l - 0032
specialize lt_to_le n - 0033
apply lt_to_le - 0034
exact hln - 0035
have hprev : ∃ r. ∃ s. ∀ x. Lt(x,l) → ∃ y. Lt(y,n) ∧ (BetaAt(r,s,x,y) ∧ ModEq(p,a · S x,S y))Exact native replay line
have hprev : exists r s. (forall frm_index_previous. (exists frm_gap_previous_index_bound. frm_gap_previous_index_bound + S frm_index_previous = l) -> (exists frm_residue_previous_result. (exists frm_gap_previous_result_residue_bound. frm_gap_previous_result_residue_bound + S frm_residue_previous_result = n) /\ ((((exists ff_h_frm_previous_result_decoded. ff_h_frm_previous_result_decoded + S (frm_residue_previous_result) = S ((S (frm_index_previous)) * s)) /\ exists ff_q_frm_previous_result_decoded. r = ff_q_frm_previous_result_decoded * S ((S (frm_index_previous)) * s) + (frm_residue_previous_result))) /\ (exists frm_mod_left_previous_result_congruence frm_mod_right_previous_result_congruence. a * S frm_index_previous + p * frm_mod_left_previous_result_congruence = S frm_residue_previous_result + p * frm_mod_right_previous_result_congruence)))) - 0036
specialize IH n - 0037
specialize IH p - 0038
specialize IH a - 0039
apply IH - 0040
exact hln_prev - 0041
exact hpn - 0042
exact hp - 0043
exact hnotdiv - 0044
cases hprev - 0045
cases hprev_witness - 0046
have hslp : Lt(S l,p)Exact native replay line
have hslp : exists h. h + S (S l) = p - 0047
rewrite hpn - 0048
specialize succ_le_succ (S l) - 0049
specialize succ_le_succ n - 0050
apply succ_le_succ - 0051
exact hln - 0052
have hp0 : ~(p = 0) - 0053
intro hpzero - 0054
specialize prime_nonzero p - 0055
apply prime_nonzero - 0056
exact hp - 0057
exact hpzero - 0058
have hdiv : ∃ q. ∃ rem. DivRem(a · S l,p,q,rem)Exact native replay line
have hdiv : exists q rem. a * S l = p * q + rem /\ exists h. h + S rem = p - 0059
specialize division_remainder_exists p - 0060
specialize division_remainder_exists (a * S l) - 0061
apply division_remainder_exists - 0062
exact hp0 - 0063
cases hdiv - 0064
cases hdiv_witness - 0065
cases hdiv_witness_witness - 0066
have hrem0 : ~(x3 = 0) - 0067
intro hremzero - 0068
have hmultiple : Dvd(p,a · S l)Exact native replay line
have hmultiple : exists k. a * S l = p * k - 0069
exists x2 - 0070
trans p * x2 + x3 - 0071
exact hdiv_witness_witness_left - 0072
rewrite hremzero - 0073
apply PA3 - 0074
have hfactor : Dvd(p,a) ∨ Dvd(p,S l)Exact native replay line
have hfactor : (exists u. a = p * u) \/ exists v. S l = p * v - 0075
specialize euclid_prime_dvd_product p - 0076
specialize euclid_prime_dvd_product a - 0077
specialize euclid_prime_dvd_product (S l) - 0078
apply euclid_prime_dvd_product - 0079
exact hp - 0080
exact hmultiple - 0081
cases hfactor - 0082
apply hnotdiv - 0083
exact hfactor_left - 0084
have hsl0 : ~(S l = 0) - 0085
specialize succ_ne_zero l - 0086
exact succ_ne_zero - 0087
have hple : Le(p,S l)Exact native replay line
have hple : exists k. k + p = S l - 0088
specialize divisor_le_nonzero p - 0089
specialize divisor_le_nonzero (S l) - 0090
apply divisor_le_nonzero - 0091
exact hsl0 - 0092
exact hfactor_right - 0093
specialize lt_not_le (S l) - 0094
specialize lt_not_le p - 0095
apply lt_not_le - 0096
exact hslp - 0097
exact hple - 0098
have hrem_succ : exists j. x3 = S j - 0099
specialize nonzero_is_succ x3 - 0100
apply nonzero_is_succ - 0101
exact hrem0 - 0102
cases hrem_succ - 0103
have hjn : Lt(x4,n)Exact native replay line
have hjn : exists h. h + S x4 = n - 0104
specialize le_of_succ_le_succ (S x4) - 0105
specialize le_of_succ_le_succ n - 0106
apply le_of_succ_le_succ - 0107
rewrite <- hrem_succ_witness - 0108
rewrite <- hpn - 0109
exact hdiv_witness_witness_right - 0110
have hdecomp : a * S l = x2 * p + x3 - 0111
trans p * x2 + x3 - 0112
exact hdiv_witness_witness_left - 0113
congr - 0114
apply mul_comm - 0115
refl - 0116
have hmodrem : ModEq(p,a · S l,x3)Exact native replay line
have hmodrem : exists u v. a * S l + p * u = x3 + p * v - 0117
specialize remainder_decomposition_to_mod_eq p - 0118
specialize remainder_decomposition_to_mod_eq (a * S l) - 0119
specialize remainder_decomposition_to_mod_eq x2 - 0120
specialize remainder_decomposition_to_mod_eq x3 - 0121
apply remainder_decomposition_to_mod_eq - 0122
exact hdecomp - 0123
have hmod : ModEq(p,a · S l,S x4)Exact native replay line
have hmod : exists u v. a * S l + p * u = S x4 + p * v - 0124
rewrite <- hrem_succ_witness - 0125
exact hmodrem - 0126
specialize beta_prefix_extend l - 0127
specialize beta_prefix_extend x - 0128
specialize beta_prefix_extend x1 - 0129
specialize beta_prefix_extend x4 - 0130
cases beta_prefix_extend - 0131
cases beta_prefix_extend_witness - 0132
cases beta_prefix_extend_witness_witness - 0133
exists x5 - 0134
exists x6 - 0135
intro i - 0136
intro hi - 0137
have hsplit : i = l ∨ Lt(i,l)Exact native replay line
have hsplit : i = l \/ exists h. h + S i = l - 0138
specialize finite_lt_succ_eq_or_lt l - 0139
specialize finite_lt_succ_eq_or_lt i - 0140
apply finite_lt_succ_eq_or_lt - 0141
exact hi - 0142
cases hsplit - 0143
exists x4 - 0144
split - 0145
exact hjn - 0146
split - 0147
rewrite hsplit_left - 0148
rewrite hsplit_left - 0149
exact beta_prefix_extend_witness_witness_left - 0150
rewrite hsplit_left - 0151
exact hmod - 0152
have hold : ∃ y. Lt(y,n) ∧ (BetaAt(x,x1,i,y) ∧ ModEq(p,a · S i,S y))Exact native replay line
have hold : (exists frm_residue_previous_at_i. (exists frm_gap_previous_at_i_residue_bound. frm_gap_previous_at_i_residue_bound + S frm_residue_previous_at_i = n) /\ ((((exists ff_h_frm_previous_at_i_decoded. ff_h_frm_previous_at_i_decoded + S (frm_residue_previous_at_i) = S ((S (i)) * x1)) /\ exists ff_q_frm_previous_at_i_decoded. x = ff_q_frm_previous_at_i_decoded * S ((S (i)) * x1) + (frm_residue_previous_at_i))) /\ (exists frm_mod_left_previous_at_i_congruence frm_mod_right_previous_at_i_congruence. a * S i + p * frm_mod_left_previous_at_i_congruence = S frm_residue_previous_at_i + p * frm_mod_right_previous_at_i_congruence))) - 0153
specialize hprev_witness_witness i - 0154
apply hprev_witness_witness - 0155
exact hsplit_right - 0156
cases hold - 0157
cases hold_witness - 0158
cases hold_witness_right - 0159
exists x7 - 0160
split - 0161
exact hold_witness_left - 0162
split - 0163
specialize beta_prefix_extend_witness_witness_right i - 0164
specialize beta_prefix_extend_witness_witness_right x7 - 0165
apply beta_prefix_extend_witness_witness_right - 0166
exact hsplit_right - 0167
exact hold_witness_right_left - 0168
exact hold_witness_right_right