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. ∀ z. ∀ d. ∀ k. ContainsPrefix(b,c,l,k) → (∀ x. Lt(x,k) → ∃ y. BetaAt(z,d,x,y) ∧ (Lt(y,l) ∧ BetaAt(b,c,y,x))) → ∃ x. ∃ y. ∀ n. Lt(n,S k) → ∃ m. BetaAt(x,y,n,m) ∧ (Lt(m,l) ∧ BetaAt(b,c,m,n))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
9 occurrences
Exact expanded native-PA statement
forall b c l z d k. (exists fp_i_extend_contains. ((exists fp_gap_extend_contains_index. fp_gap_extend_contains_index + S fp_i_extend_contains = l) /\ (((exists ff_h_extend_contains_entry. ff_h_extend_contains_entry + S (k) = S ((S (fp_i_extend_contains)) * c)) /\ exists ff_q_extend_contains_entry. b = ff_q_extend_contains_entry * S ((S (fp_i_extend_contains)) * c) + (k))))) -> (forall fom_value_extend_before. (exists fom_gap_extend_before_value_bound. fom_gap_extend_before_value_bound + S (fom_value_extend_before) = k) -> exists fom_index_extend_before. ((((exists fom_beta_height_extend_before_choice_entry. fom_beta_height_extend_before_choice_entry + S (fom_index_extend_before) = S ((S (fom_value_extend_before)) * d)) /\ exists fom_beta_quotient_extend_before_choice_entry. z = fom_beta_quotient_extend_before_choice_entry * S ((S (fom_value_extend_before)) * d) + (fom_index_extend_before))) /\ ((exists fom_gap_extend_before_index_bound. fom_gap_extend_before_index_bound + S (fom_index_extend_before) = l) /\ (((exists fom_beta_height_extend_before_source_entry. fom_beta_height_extend_before_source_entry + S (fom_value_extend_before) = S ((S (fom_index_extend_before)) * c)) /\ exists fom_beta_quotient_extend_before_source_entry. b = fom_beta_quotient_extend_before_source_entry * S ((S (fom_index_extend_before)) * c) + (fom_value_extend_before)))))) -> exists r s. (forall fom_value_extend_after. (exists fom_gap_extend_after_value_bound. fom_gap_extend_after_value_bound + S (fom_value_extend_after) = S k) -> exists fom_index_extend_after. ((((exists fom_beta_height_extend_after_choice_entry. fom_beta_height_extend_after_choice_entry + S (fom_index_extend_after) = S ((S (fom_value_extend_after)) * s)) /\ exists fom_beta_quotient_extend_after_choice_entry. r = fom_beta_quotient_extend_after_choice_entry * S ((S (fom_value_extend_after)) * s) + (fom_index_extend_after))) /\ ((exists fom_gap_extend_after_index_bound. fom_gap_extend_after_index_bound + S (fom_index_extend_after) = l) /\ (((exists fom_beta_height_extend_after_source_entry. fom_beta_height_extend_after_source_entry + S (fom_value_extend_after) = S ((S (fom_index_extend_after)) * c)) /\ exists fom_beta_quotient_extend_after_source_entry. b = fom_beta_quotient_extend_after_source_entry * S ((S (fom_index_extend_after)) * c) + (fom_value_extend_after))))))Proof neighborhood
Direct theorem prerequisites
Direct 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 (2)
01Fix variables and assumptionsL1–8
02Separate the logical casesL9–10
03Use earlier factsL11–14
04Separate the logical casesL15–17
05Construct an explicit witnessL18–19
06Fix variables and assumptionsL20–21
07Establish hsplitL22–26
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.
08Separate the logical casesL27–27
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L27
cases hsplit
09Construct an explicit witnessL28–28
Supply the displayed value, then prove that it has the required property.
- L28
exists x
10Separate the logical casesL29–29
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L29
split
11Calculate and transport equalitiesL30–31
12Establish hnew_entryL32–34
Establish this local claim before using it. It is not an additional assumption.
- L32
have hnew_entry : BetaAt(x1,x2,k,x)Definitions: BetaAt(x1,x2,k,x)Original native command in the exact edition - L33
exact beta_prefix_extend_witness_witness_left - L34
exact hnew_entry
13Separate the logical casesL35–35
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L35
split
14Use earlier factsL36–36
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L36
exact hcontains_witness_left
15Calculate and transport equalitiesL37–38
16Use earlier factsL39–39
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L39
exact hcontains_witness_right
17Establish holdL40–42
Establish this local claim before using it. It is not an additional assumption.
- L40
have hold : ∀ fom_value_extend_old_result. Lt(fom_value_extend_old_result,k) → ∃ x. BetaAt(z,d,fom_value_extend_old_result,x) ∧ (Lt(x,l) ∧ BetaAt(b,c,x,fom_value_extend_old_result))Definitions: Lt(fom_value_extend_old_result,k)BetaAt(z,d,fom_value_extend_old_result,x)Lt(x,l)BetaAt(b,c,x,fom_value_extend_old_result)Original native command in the exact edition - L41
exact hchoice - L42
specialize hold y
18Establish hold_yL43–45
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hold.
- L43
have hold_y : ∃ i. BetaAt(z,d,y,i) ∧ (Lt(i,l) ∧ BetaAt(b,c,i,y))Definitions: BetaAt(z,d,y,i)Lt(i,l)BetaAt(b,c,i,y)Original native command in the exact edition - L44
apply hold - L45
exact hsplit_right
19Separate the logical casesL46–47
20Construct an explicit witnessL48–48
Supply the displayed value, then prove that it has the required property.
- L48
exists x3
21Separate the logical casesL49–49
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L49
split
22Use earlier factsL50–55
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original defined command ledger · 55 lines
- 0001
intro b - 0002
intro c - 0003
intro l - 0004
intro z - 0005
intro d - 0006
intro k - 0007
intro hcontains - 0008
intro hchoice - 0009
cases hcontains - 0010
cases hcontains_witness - 0011
specialize beta_prefix_extend k - 0012
specialize beta_prefix_extend z - 0013
specialize beta_prefix_extend d - 0014
specialize beta_prefix_extend x - 0015
cases beta_prefix_extend - 0016
cases beta_prefix_extend_witness - 0017
cases beta_prefix_extend_witness_witness - 0018
exists x1 - 0019
exists x2 - 0020
intro y - 0021
intro hy - 0022
have hsplit : y = k ∨ Lt(y,k)Exact native replay line
have hsplit : y = k \/ exists h. h + S y = k - 0023
specialize finite_lt_succ_eq_or_lt k - 0024
specialize finite_lt_succ_eq_or_lt y - 0025
apply finite_lt_succ_eq_or_lt - 0026
exact hy - 0027
cases hsplit - 0028
exists x - 0029
split - 0030
rewrite hsplit_left - 0031
rewrite hsplit_left - 0032
have hnew_entry : BetaAt(x1,x2,k,x)Exact native replay line
have hnew_entry : ((exists fom_beta_height_extend_new_entry. fom_beta_height_extend_new_entry + S (x) = S ((S (k)) * x2)) /\ exists fom_beta_quotient_extend_new_entry. x1 = fom_beta_quotient_extend_new_entry * S ((S (k)) * x2) + (x)) - 0033
exact beta_prefix_extend_witness_witness_left - 0034
exact hnew_entry - 0035
split - 0036
exact hcontains_witness_left - 0037
rewrite hsplit_left - 0038
rewrite hsplit_left - 0039
exact hcontains_witness_right - 0040
have hold : ∀ fom_value_extend_old_result. Lt(fom_value_extend_old_result,k) → ∃ x. BetaAt(z,d,fom_value_extend_old_result,x) ∧ (Lt(x,l) ∧ BetaAt(b,c,x,fom_value_extend_old_result))Exact native replay line
have hold : forall fom_value_extend_old_result. (exists fom_gap_extend_old_result_value_bound. fom_gap_extend_old_result_value_bound + S (fom_value_extend_old_result) = k) -> exists fom_index_extend_old_result. ((((exists fom_beta_height_extend_old_result_choice_entry. fom_beta_height_extend_old_result_choice_entry + S (fom_index_extend_old_result) = S ((S (fom_value_extend_old_result)) * d)) /\ exists fom_beta_quotient_extend_old_result_choice_entry. z = fom_beta_quotient_extend_old_result_choice_entry * S ((S (fom_value_extend_old_result)) * d) + (fom_index_extend_old_result))) /\ ((exists fom_gap_extend_old_result_index_bound. fom_gap_extend_old_result_index_bound + S (fom_index_extend_old_result) = l) /\ (((exists fom_beta_height_extend_old_result_source_entry. fom_beta_height_extend_old_result_source_entry + S (fom_value_extend_old_result) = S ((S (fom_index_extend_old_result)) * c)) /\ exists fom_beta_quotient_extend_old_result_source_entry. b = fom_beta_quotient_extend_old_result_source_entry * S ((S (fom_index_extend_old_result)) * c) + (fom_value_extend_old_result))))) - 0041
exact hchoice - 0042
specialize hold y - 0043
have hold_y : ∃ i. BetaAt(z,d,y,i) ∧ (Lt(i,l) ∧ BetaAt(b,c,i,y))Exact native replay line
have hold_y : exists i. (((exists h. h + S i = S ((S y) * d)) /\ exists q. z = q * S ((S y) * d) + i) /\ ((exists h. h + S i = l) /\ ((exists h. h + S y = S ((S i) * c)) /\ exists q. b = q * S ((S i) * c) + y))) - 0044
apply hold - 0045
exact hsplit_right - 0046
cases hold_y - 0047
cases hold_y_witness - 0048
exists x3 - 0049
split - 0050
specialize beta_prefix_extend_witness_witness_right y - 0051
specialize beta_prefix_extend_witness_witness_right x3 - 0052
apply beta_prefix_extend_witness_witness_right - 0053
exact hsplit_right - 0054
exact hold_y_witness_left - 0055
exact hold_y_witness_right