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
∀ q. ∀ k. ∃ x. ∃ y. ∀ z. Lt(z,k) → ∃ n. BetaAt(x,y,z,n) ∧ (n = 1 ∧ Lt(z,q) ∨ n = 0 ∧ Lt(q,S z))Every purple notation token opens its conservative definition. Expanding the displayed statement recovers the exact first-order Peano-arithmetic formula checked by the unchanged kernel.
Definitions used by this theorem
In the theorem statement
4 occurrences
In local proof propositions
10 occurrences
Exact expanded native-PA statement
forall q k. (exists b c. (forall eis_index_initial_segment_exists_result. (exists eis_lt_gap_initial_segment_exists_result_bound. eis_lt_gap_initial_segment_exists_result_bound + S (eis_index_initial_segment_exists_result) = k) -> exists eis_bit_initial_segment_exists_result. ((((exists ff_h_eis_initial_segment_exists_result_decoded. ff_h_eis_initial_segment_exists_result_decoded + S (eis_bit_initial_segment_exists_result) = S ((S (eis_index_initial_segment_exists_result)) * c)) /\ exists ff_q_eis_initial_segment_exists_result_decoded. b = ff_q_eis_initial_segment_exists_result_decoded * S ((S (eis_index_initial_segment_exists_result)) * c) + (eis_bit_initial_segment_exists_result))) /\ (((eis_bit_initial_segment_exists_result = 1 /\ (exists eis_le_gap_initial_segment_exists_result_choice_inside. eis_le_gap_initial_segment_exists_result_choice_inside + (S eis_index_initial_segment_exists_result) = q)) \/ (eis_bit_initial_segment_exists_result = 0 /\ (exists eis_lt_gap_initial_segment_exists_result_choice_outside. eis_lt_gap_initial_segment_exists_result_choice_outside + S (q) = S eis_index_initial_segment_exists_result)))))))Proof neighborhood
Direct theorem prerequisites
BT000L add_eq_zero_right BT000C succ_ne_zero BT00SD eisenstein_initial_segment_indicator_choice BT00SE eisenstein_initial_segment_prefix_extendDirect theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. Every changed line has an exact-AST conservative-expansion receipt; the kernel still receives the immutable original tactic script.
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–1
Work with arbitrary variables or the premises of the current implication.
- L1
intro q
02Induction on kL2–2
Split the argument into the base and successor obligations. The induction hypothesis is available only in the successor branch.
- L2
induction k
03Construct an explicit witnessL3–4
04Fix variables and assumptionsL5–6
05Separate the logical casesL7–8
06Establish hsjL9–16
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add eq zero right.
07Establish hpreviousL17–18
Establish this local claim before using it. It is not an additional assumption.
- L17
have hprevious : ∃ b. ∃ c. ∀ x. Lt(x,k) → ∃ y. BetaAt(b,c,x,y) ∧ (y = 1 ∧ Lt(x,q) ∨ y = 0 ∧ Lt(q,S x))Definitions: Lt(x,k)BetaAt(b,c,x,y)Lt(x,q)Lt(q,S x)Original native command in the exact edition - L18
exact IH
08Separate the logical casesL19–20
09Establish hlastL21–24
Establish this local claim before using it. It is not an additional assumption.
- L21
have hlast : ∃ bit. bit = 1 ∧ Lt(k,q) ∨ bit = 0 ∧ Lt(q,S k)Definitions: Lt(k,q)Lt(q,S k)Original native command in the exact edition - L22
specialize eisenstein_initial_segment_indicator_choice q - L23
specialize eisenstein_initial_segment_indicator_choice k - L24
exact eisenstein_initial_segment_indicator_choice
10Establish hnextL25–33
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply eisenstein initial segment prefix extend.
- L25
have hnext : ∃ b. ∃ c. ∀ x. Lt(x,S k) → ∃ y. BetaAt(b,c,x,y) ∧ (y = 1 ∧ Lt(x,q) ∨ y = 0 ∧ Lt(q,S x))Definitions: Lt(x,S k)BetaAt(b,c,x,y)Lt(x,q)Lt(q,S x)Original native command in the exact edition - L26
specialize eisenstein_initial_segment_prefix_extend q - L27
specialize eisenstein_initial_segment_prefix_extend x - L28
specialize eisenstein_initial_segment_prefix_extend x1 - L29
specialize eisenstein_initial_segment_prefix_extend k - L30
apply eisenstein_initial_segment_prefix_extend - L31
exact hprevious_witness_witness - L32
exact hlast - L33
exact hnext
Original defined command ledger · 33 lines
- 0001
intro q - 0002
induction k - 0003
exists 0 - 0004
exists 0 - 0005
intro j - 0006
intro hj - 0007
exfalso - 0008
cases hj - 0009
have hsj : S j = 0 - 0010
specialize add_eq_zero_right x - 0011
specialize add_eq_zero_right (S j) - 0012
apply add_eq_zero_right - 0013
exact hj_witness - 0014
specialize succ_ne_zero j - 0015
apply succ_ne_zero - 0016
exact hsj - 0017
have hprevious : ∃ b. ∃ c. ∀ x. Lt(x,k) → ∃ y. BetaAt(b,c,x,y) ∧ (y = 1 ∧ Lt(x,q) ∨ y = 0 ∧ Lt(q,S x))Exact native replay line
have hprevious : exists b c. (forall eis_index_initial_segment_exists_previous. (exists eis_lt_gap_initial_segment_exists_previous_bound. eis_lt_gap_initial_segment_exists_previous_bound + S (eis_index_initial_segment_exists_previous) = k) -> exists eis_bit_initial_segment_exists_previous. ((((exists ff_h_eis_initial_segment_exists_previous_decoded. ff_h_eis_initial_segment_exists_previous_decoded + S (eis_bit_initial_segment_exists_previous) = S ((S (eis_index_initial_segment_exists_previous)) * c)) /\ exists ff_q_eis_initial_segment_exists_previous_decoded. b = ff_q_eis_initial_segment_exists_previous_decoded * S ((S (eis_index_initial_segment_exists_previous)) * c) + (eis_bit_initial_segment_exists_previous))) /\ (((eis_bit_initial_segment_exists_previous = 1 /\ (exists eis_le_gap_initial_segment_exists_previous_choice_inside. eis_le_gap_initial_segment_exists_previous_choice_inside + (S eis_index_initial_segment_exists_previous) = q)) \/ (eis_bit_initial_segment_exists_previous = 0 /\ (exists eis_lt_gap_initial_segment_exists_previous_choice_outside. eis_lt_gap_initial_segment_exists_previous_choice_outside + S (q) = S eis_index_initial_segment_exists_previous)))))) - 0018
exact IH - 0019
cases hprevious - 0020
cases hprevious_witness - 0021
have hlast : ∃ bit. bit = 1 ∧ Lt(k,q) ∨ bit = 0 ∧ Lt(q,S k)Exact native replay line
have hlast : exists bit. (((bit = 1 /\ (exists eis_le_gap_initial_segment_exists_last_inside. eis_le_gap_initial_segment_exists_last_inside + (S k) = q)) \/ (bit = 0 /\ (exists eis_lt_gap_initial_segment_exists_last_outside. eis_lt_gap_initial_segment_exists_last_outside + S (q) = S k)))) - 0022
specialize eisenstein_initial_segment_indicator_choice q - 0023
specialize eisenstein_initial_segment_indicator_choice k - 0024
exact eisenstein_initial_segment_indicator_choice - 0025
have hnext : ∃ b. ∃ c. ∀ x. Lt(x,S k) → ∃ y. BetaAt(b,c,x,y) ∧ (y = 1 ∧ Lt(x,q) ∨ y = 0 ∧ Lt(q,S x))Exact native replay line
have hnext : exists b c. (forall eis_index_initial_segment_exists_successor. (exists eis_lt_gap_initial_segment_exists_successor_bound. eis_lt_gap_initial_segment_exists_successor_bound + S (eis_index_initial_segment_exists_successor) = S k) -> exists eis_bit_initial_segment_exists_successor. ((((exists ff_h_eis_initial_segment_exists_successor_decoded. ff_h_eis_initial_segment_exists_successor_decoded + S (eis_bit_initial_segment_exists_successor) = S ((S (eis_index_initial_segment_exists_successor)) * c)) /\ exists ff_q_eis_initial_segment_exists_successor_decoded. b = ff_q_eis_initial_segment_exists_successor_decoded * S ((S (eis_index_initial_segment_exists_successor)) * c) + (eis_bit_initial_segment_exists_successor))) /\ (((eis_bit_initial_segment_exists_successor = 1 /\ (exists eis_le_gap_initial_segment_exists_successor_choice_inside. eis_le_gap_initial_segment_exists_successor_choice_inside + (S eis_index_initial_segment_exists_successor) = q)) \/ (eis_bit_initial_segment_exists_successor = 0 /\ (exists eis_lt_gap_initial_segment_exists_successor_choice_outside. eis_lt_gap_initial_segment_exists_successor_choice_outside + S (q) = S eis_index_initial_segment_exists_successor)))))) - 0026
specialize eisenstein_initial_segment_prefix_extend q - 0027
specialize eisenstein_initial_segment_prefix_extend x - 0028
specialize eisenstein_initial_segment_prefix_extend x1 - 0029
specialize eisenstein_initial_segment_prefix_extend k - 0030
apply eisenstein_initial_segment_prefix_extend - 0031
exact hprevious_witness_witness - 0032
exact hlast - 0033
exact hnext