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
∀ b. ∀ c. ∀ l. ∀ n. (∀ x. Lt(x,n) → ContainsPrefix(b,c,l,x)) ∨ (∃ x. Lt(x,n) ∧ ¬ContainsPrefix(b,c,l,x))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
4 occurrences
In local proof propositions
9 occurrences
Exact expanded native-PA statement
forall b c l n. (forall fom_value_search_cover. (exists fom_gap_search_cover_value_bound. fom_gap_search_cover_value_bound + S (fom_value_search_cover) = n) -> exists fom_index_search_cover. ((exists fom_gap_search_cover_index_bound. fom_gap_search_cover_index_bound + S (fom_index_search_cover) = l) /\ (((exists fom_beta_height_search_cover_entry. fom_beta_height_search_cover_entry + S (fom_value_search_cover) = S ((S (fom_index_search_cover)) * c)) /\ exists fom_beta_quotient_search_cover_entry. b = fom_beta_quotient_search_cover_entry * S ((S (fom_index_search_cover)) * c) + (fom_value_search_cover))))) \/ (exists fom_value_search_omit. ((exists fom_gap_search_omit_value_bound. fom_gap_search_omit_value_bound + S (fom_value_search_omit) = n) /\ ~(exists fom_index_search_omit. ((exists fom_gap_search_omit_index_bound. fom_gap_search_omit_index_bound + S (fom_index_search_omit) = l) /\ (((exists fom_beta_height_search_omit_entry. fom_beta_height_search_omit_entry + S (fom_value_search_omit) = S ((S (fom_index_search_omit)) * c)) /\ exists fom_beta_quotient_search_omit_entry. b = fom_beta_quotient_search_omit_entry * S ((S (fom_index_search_omit)) * c) + (fom_value_search_omit)))))))Proof neighborhood
Direct theorem prerequisites
PA0004 add_eq_zero_right PA0005 succ_ne_zero PA004H finite_contains_decidable PA003D finite_lt_succ_eq_or_lt PA002O le_succ PA001A le_reflDirect 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 (6)
01Fix variables and assumptionsL1–3
02Induction on nL4–4
Split the argument into the base and successor obligations. The induction hypothesis is available only in the successor branch.
- L4
induction n
03Separate the logical casesL5–5
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L5
left
04Fix variables and assumptionsL6–7
05Separate the logical casesL8–9
06Establish hsyL10–17
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add eq zero right.
07Establish hpreviousL18–19
Establish this local claim before using it. It is not an additional assumption.
- L18
have hprevious : (∀ x. Lt(x,n) → ContainsPrefix(b,c,l,x)) ∨ (∃ x. Lt(x,n) ∧ ¬ContainsPrefix(b,c,l,x))Definitions: Lt(x,n)ContainsPrefix(b,c,l,x)Original native command in the exact edition - L19
exact IH
08Separate the logical casesL20–20
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L20
cases hprevious
09Establish htopL21–26
Establish this local claim before using it. It is not an additional assumption.
- L21
have htop : ContainsPrefix(b,c,l,n) ∨ ¬ContainsPrefix(b,c,l,n)Definitions: ContainsPrefix(b,c,l,n)Original native command in the exact edition - L22
specialize finite_contains_decidable b - L23
specialize finite_contains_decidable c - L24
specialize finite_contains_decidable l - L25
specialize finite_contains_decidable n - L26
exact finite_contains_decidable
10Separate the logical casesL27–28
11Establish hsuccessor_coverL29–31
Establish this local claim before using it. It is not an additional assumption.
- L29
have hsuccessor_cover : ∀ fom_value_search_successor_cover. Lt(fom_value_search_successor_cover,S n) → ContainsPrefix(b,c,l,fom_value_search_successor_cover)Definitions: Lt(fom_value_search_successor_cover,S n)ContainsPrefix(b,c,l,fom_value_search_successor_cover)Original native command in the exact edition - L30
intro y - L31
intro hy
12Establish hsplitL32–36
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.
13Separate the logical casesL37–37
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L37
cases hsplit
14Calculate and transport equalitiesL38–39
15Use earlier factsL40–44
16Separate the logical casesL45–45
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L45
right
17Construct an explicit witnessL46–46
Supply the displayed value, then prove that it has the required property.
- L46
exists n
18Separate the logical casesL47–47
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L47
split
19Use earlier factsL48–50
20Separate the logical casesL51–53
21Construct an explicit witnessL54–54
Supply the displayed value, then prove that it has the required property.
- L54
exists x
22Separate the logical casesL55–55
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L55
split
Original defined command ledger · 60 lines
- 0001
intro b - 0002
intro c - 0003
intro l - 0004
induction n - 0005
left - 0006
intro y - 0007
intro hy - 0008
exfalso - 0009
cases hy - 0010
have hsy : S y = 0 - 0011
specialize add_eq_zero_right x - 0012
specialize add_eq_zero_right (S y) - 0013
apply add_eq_zero_right - 0014
exact hy_witness - 0015
specialize succ_ne_zero y - 0016
apply succ_ne_zero - 0017
exact hsy - 0018
have hprevious : (∀ x. Lt(x,n) → ContainsPrefix(b,c,l,x)) ∨ (∃ x. Lt(x,n) ∧ ¬ContainsPrefix(b,c,l,x))Exact native replay line
have hprevious : (forall fom_value_search_previous_cover. (exists fom_gap_search_previous_cover_value_bound. fom_gap_search_previous_cover_value_bound + S (fom_value_search_previous_cover) = n) -> exists fom_index_search_previous_cover. ((exists fom_gap_search_previous_cover_index_bound. fom_gap_search_previous_cover_index_bound + S (fom_index_search_previous_cover) = l) /\ (((exists fom_beta_height_search_previous_cover_entry. fom_beta_height_search_previous_cover_entry + S (fom_value_search_previous_cover) = S ((S (fom_index_search_previous_cover)) * c)) /\ exists fom_beta_quotient_search_previous_cover_entry. b = fom_beta_quotient_search_previous_cover_entry * S ((S (fom_index_search_previous_cover)) * c) + (fom_value_search_previous_cover))))) \/ (exists fom_value_search_previous_omit. ((exists fom_gap_search_previous_omit_value_bound. fom_gap_search_previous_omit_value_bound + S (fom_value_search_previous_omit) = n) /\ ~(exists fom_index_search_previous_omit. ((exists fom_gap_search_previous_omit_index_bound. fom_gap_search_previous_omit_index_bound + S (fom_index_search_previous_omit) = l) /\ (((exists fom_beta_height_search_previous_omit_entry. fom_beta_height_search_previous_omit_entry + S (fom_value_search_previous_omit) = S ((S (fom_index_search_previous_omit)) * c)) /\ exists fom_beta_quotient_search_previous_omit_entry. b = fom_beta_quotient_search_previous_omit_entry * S ((S (fom_index_search_previous_omit)) * c) + (fom_value_search_previous_omit))))))) - 0019
exact IH - 0020
cases hprevious - 0021
have htop : ContainsPrefix(b,c,l,n) ∨ ¬ContainsPrefix(b,c,l,n)Exact native replay line
have htop : (exists fp_i_search_top_contains. ((exists fp_gap_search_top_contains_index. fp_gap_search_top_contains_index + S fp_i_search_top_contains = l) /\ (((exists ff_h_search_top_contains_entry. ff_h_search_top_contains_entry + S (n) = S ((S (fp_i_search_top_contains)) * c)) /\ exists ff_q_search_top_contains_entry. b = ff_q_search_top_contains_entry * S ((S (fp_i_search_top_contains)) * c) + (n))))) \/ ~(exists fp_i_search_top_contains. ((exists fp_gap_search_top_contains_index. fp_gap_search_top_contains_index + S fp_i_search_top_contains = l) /\ (((exists ff_h_search_top_contains_entry. ff_h_search_top_contains_entry + S (n) = S ((S (fp_i_search_top_contains)) * c)) /\ exists ff_q_search_top_contains_entry. b = ff_q_search_top_contains_entry * S ((S (fp_i_search_top_contains)) * c) + (n))))) - 0022
specialize finite_contains_decidable b - 0023
specialize finite_contains_decidable c - 0024
specialize finite_contains_decidable l - 0025
specialize finite_contains_decidable n - 0026
exact finite_contains_decidable - 0027
cases htop - 0028
left - 0029
have hsuccessor_cover : ∀ fom_value_search_successor_cover. Lt(fom_value_search_successor_cover,S n) → ContainsPrefix(b,c,l,fom_value_search_successor_cover)Exact native replay line
have hsuccessor_cover : forall fom_value_search_successor_cover. (exists fom_gap_search_successor_cover_value_bound. fom_gap_search_successor_cover_value_bound + S (fom_value_search_successor_cover) = S n) -> exists fom_index_search_successor_cover. ((exists fom_gap_search_successor_cover_index_bound. fom_gap_search_successor_cover_index_bound + S (fom_index_search_successor_cover) = l) /\ (((exists fom_beta_height_search_successor_cover_entry. fom_beta_height_search_successor_cover_entry + S (fom_value_search_successor_cover) = S ((S (fom_index_search_successor_cover)) * c)) /\ exists fom_beta_quotient_search_successor_cover_entry. b = fom_beta_quotient_search_successor_cover_entry * S ((S (fom_index_search_successor_cover)) * c) + (fom_value_search_successor_cover)))) - 0030
intro y - 0031
intro hy - 0032
have hsplit : y = n ∨ Lt(y,n)Exact native replay line
have hsplit : y = n \/ exists h. h + S y = n - 0033
specialize finite_lt_succ_eq_or_lt n - 0034
specialize finite_lt_succ_eq_or_lt y - 0035
apply finite_lt_succ_eq_or_lt - 0036
exact hy - 0037
cases hsplit - 0038
rewrite hsplit_left - 0039
rewrite hsplit_left - 0040
exact htop_left - 0041
specialize hprevious_left y - 0042
apply hprevious_left - 0043
exact hsplit_right - 0044
exact hsuccessor_cover - 0045
right - 0046
exists n - 0047
split - 0048
specialize le_refl (S n) - 0049
exact le_refl - 0050
exact htop_right - 0051
right - 0052
cases hprevious_right - 0053
cases hprevious_right_witness - 0054
exists x - 0055
split - 0056
specialize le_succ (S x) - 0057
specialize le_succ n - 0058
apply le_succ - 0059
exact hprevious_right_witness_left - 0060
exact hprevious_right_witness_right