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
∀ sb. ∀ sc. ∀ fb. ∀ fc. ∀ r. ∀ l. ∀ a. ∀ f. (∀ x. ∀ y. Lt(x,l) → BetaAt(sb,sc,x,y) → y = 0 ∧ BetaAt(fb,fc,x,1) ∨ y = 1 ∧ BetaAt(fb,fc,x,r)) → BetaAt(sb,sc,l,a) → a = 0 ∧ f = 1 ∨ a = 1 ∧ f = r → ∃ x. ∃ y. ∀ z. ∀ n. Lt(z,S l) → BetaAt(sb,sc,z,n) → n = 0 ∧ BetaAt(x,y,z,1) ∨ n = 1 ∧ BetaAt(x,y,z,r)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
6 occurrences
Exact expanded native-PA statement
forall sb sc fb fc r l a f. (forall gspf_index_recode_before gspf_bit_recode_before. (exists gsp_lt_gap_recode_before_bound. gsp_lt_gap_recode_before_bound + S gspf_index_recode_before = l) -> (((exists ff_h_gspf_recode_before_bit. ff_h_gspf_recode_before_bit + S (gspf_bit_recode_before) = S ((S (gspf_index_recode_before)) * sc)) /\ exists ff_q_gspf_recode_before_bit. sb = ff_q_gspf_recode_before_bit * S ((S (gspf_index_recode_before)) * sc) + (gspf_bit_recode_before))) -> (((gspf_bit_recode_before = 0) /\ (((exists gsp_beta_height_gspf_recode_before_one. gsp_beta_height_gspf_recode_before_one + S (1) = S ((S (gspf_index_recode_before)) * fc)) /\ exists gsp_beta_quotient_gspf_recode_before_one. fb = gsp_beta_quotient_gspf_recode_before_one * S ((S (gspf_index_recode_before)) * fc) + (1)))) \/ ((gspf_bit_recode_before = 1) /\ (((exists ff_h_gspf_recode_before_predecessor. ff_h_gspf_recode_before_predecessor + S (r) = S ((S (gspf_index_recode_before)) * fc)) /\ exists ff_q_gspf_recode_before_predecessor. fb = ff_q_gspf_recode_before_predecessor * S ((S (gspf_index_recode_before)) * fc) + (r)))))) -> (((exists ff_h_recode_source_last. ff_h_recode_source_last + S (a) = S ((S (l)) * sc)) /\ exists ff_q_recode_source_last. sb = ff_q_recode_source_last * S ((S (l)) * sc) + (a))) -> ((a = 0 /\ f = 1) \/ (a = 1 /\ f = r)) -> exists z d. (forall gspf_index_recode_after gspf_bit_recode_after. (exists gsp_lt_gap_recode_after_bound. gsp_lt_gap_recode_after_bound + S gspf_index_recode_after = S l) -> (((exists ff_h_gspf_recode_after_bit. ff_h_gspf_recode_after_bit + S (gspf_bit_recode_after) = S ((S (gspf_index_recode_after)) * sc)) /\ exists ff_q_gspf_recode_after_bit. sb = ff_q_gspf_recode_after_bit * S ((S (gspf_index_recode_after)) * sc) + (gspf_bit_recode_after))) -> (((gspf_bit_recode_after = 0) /\ (((exists gsp_beta_height_gspf_recode_after_one. gsp_beta_height_gspf_recode_after_one + S (1) = S ((S (gspf_index_recode_after)) * d)) /\ exists gsp_beta_quotient_gspf_recode_after_one. z = gsp_beta_quotient_gspf_recode_after_one * S ((S (gspf_index_recode_after)) * d) + (1)))) \/ ((gspf_bit_recode_after = 1) /\ (((exists ff_h_gspf_recode_after_predecessor. ff_h_gspf_recode_after_predecessor + S (r) = S ((S (gspf_index_recode_after)) * d)) /\ exists ff_q_gspf_recode_after_predecessor. z = ff_q_gspf_recode_after_predecessor * S ((S (gspf_index_recode_after)) * d) + (r))))))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 (3)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–11
Work with arbitrary variables or the premises of the current implication.
- L11
intro hchosen
03Use earlier factsL12–15
04Separate the logical casesL16–18
05Construct an explicit witnessL19–20
06Fix variables and assumptionsL21–24
07Establish hsplitL25–29
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 casesL30–30
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L30
cases hsplit
09Establish hvlastL31–34
Establish this local claim before using it. It is not an additional assumption.
- L31
have hvlast : BetaAt(sb,sc,l,v)Definitions: BetaAt(sb,sc,l,v)Original native command in the exact edition - L32
rewrite hsplit_left at hv - L33
rewrite hsplit_left at hv - L34
exact hv
10Establish hvaL35–43
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
11Separate the logical casesL44–47
12Calculate and transport equalitiesL48–48
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L48
trans a
13Use earlier factsL49–50
14Establish hnew_oneL51–57
Establish this local claim before using it. It is not an additional assumption.
- L51
have hnew_one : BetaAt(x,x1,l,1)Definitions: BetaAt(x,x1,l,1)Original native command in the exact edition - L52
rewrite hchosen_left_right at beta_prefix_extend_witness_witness_left - L53
rewrite hchosen_left_right at beta_prefix_extend_witness_witness_left - L54
exact beta_prefix_extend_witness_witness_left - L55
rewrite hsplit_left - L56
rewrite hsplit_left - L57
exact hnew_one
15Separate the logical casesL58–60
16Calculate and transport equalitiesL61–61
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L61
trans a
17Use earlier factsL62–63
18Establish hnew_predecessorL64–70
Establish this local claim before using it. It is not an additional assumption.
- L64
have hnew_predecessor : BetaAt(x,x1,l,r)Definitions: BetaAt(x,x1,l,r)Original native command in the exact edition - L65
rewrite hchosen_right_right at beta_prefix_extend_witness_witness_left - L66
rewrite hchosen_right_right at beta_prefix_extend_witness_witness_left - L67
exact beta_prefix_extend_witness_witness_left - L68
rewrite hsplit_left - L69
rewrite hsplit_left - L70
exact hnew_predecessor
19Establish holdL71–76
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hsigns.
- L71
have hold : v = 0 ∧ BetaAt(fb,fc,i,1) ∨ v = 1 ∧ BetaAt(fb,fc,i,r)Definitions: BetaAt(fb,fc,i,1)BetaAt(fb,fc,i,r)Original native command in the exact edition - L72
specialize hsigns i - L73
specialize hsigns v - L74
apply hsigns - L75
exact hsplit_right - L76
exact hv
20Separate the logical casesL77–80
21Use earlier factsL81–86
Instantiate or apply named facts and discharge the corresponding proof obligations.
22Separate the logical casesL87–89
23Use earlier factsL90–95
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original defined command ledger · 95 lines
- 0001
intro sb - 0002
intro sc - 0003
intro fb - 0004
intro fc - 0005
intro r - 0006
intro l - 0007
intro a - 0008
intro f - 0009
intro hsigns - 0010
intro hlast - 0011
intro hchosen - 0012
specialize beta_prefix_extend l - 0013
specialize beta_prefix_extend fb - 0014
specialize beta_prefix_extend fc - 0015
specialize beta_prefix_extend f - 0016
cases beta_prefix_extend - 0017
cases beta_prefix_extend_witness - 0018
cases beta_prefix_extend_witness_witness - 0019
exists x - 0020
exists x1 - 0021
intro i - 0022
intro v - 0023
intro hi - 0024
intro hv - 0025
have hsplit : i = l ∨ Lt(i,l)Exact native replay line
have hsplit : i = l \/ exists gap. gap + S i = l - 0026
specialize finite_lt_succ_eq_or_lt l - 0027
specialize finite_lt_succ_eq_or_lt i - 0028
apply finite_lt_succ_eq_or_lt - 0029
exact hi - 0030
cases hsplit - 0031
have hvlast : BetaAt(sb,sc,l,v)Exact native replay line
have hvlast : ((exists ff_h_recode_top_source. ff_h_recode_top_source + S (v) = S ((S (l)) * sc)) /\ exists ff_q_recode_top_source. sb = ff_q_recode_top_source * S ((S (l)) * sc) + (v)) - 0032
rewrite hsplit_left at hv - 0033
rewrite hsplit_left at hv - 0034
exact hv - 0035
have hva : v = a - 0036
specialize beta_at_unique sb - 0037
specialize beta_at_unique sc - 0038
specialize beta_at_unique l - 0039
specialize beta_at_unique v - 0040
specialize beta_at_unique a - 0041
apply beta_at_unique - 0042
exact hvlast - 0043
exact hlast - 0044
cases hchosen - 0045
cases hchosen_left - 0046
left - 0047
split - 0048
trans a - 0049
exact hva - 0050
exact hchosen_left_left - 0051
have hnew_one : BetaAt(x,x1,l,1)Exact native replay line
have hnew_one : ((exists gsp_beta_height_recode_new_one. gsp_beta_height_recode_new_one + S (1) = S ((S (l)) * x1)) /\ exists gsp_beta_quotient_recode_new_one. x = gsp_beta_quotient_recode_new_one * S ((S (l)) * x1) + (1)) - 0052
rewrite hchosen_left_right at beta_prefix_extend_witness_witness_left - 0053
rewrite hchosen_left_right at beta_prefix_extend_witness_witness_left - 0054
exact beta_prefix_extend_witness_witness_left - 0055
rewrite hsplit_left - 0056
rewrite hsplit_left - 0057
exact hnew_one - 0058
cases hchosen_right - 0059
right - 0060
split - 0061
trans a - 0062
exact hva - 0063
exact hchosen_right_left - 0064
have hnew_predecessor : BetaAt(x,x1,l,r)Exact native replay line
have hnew_predecessor : ((exists ff_h_recode_new_predecessor. ff_h_recode_new_predecessor + S (r) = S ((S (l)) * x1)) /\ exists ff_q_recode_new_predecessor. x = ff_q_recode_new_predecessor * S ((S (l)) * x1) + (r)) - 0065
rewrite hchosen_right_right at beta_prefix_extend_witness_witness_left - 0066
rewrite hchosen_right_right at beta_prefix_extend_witness_witness_left - 0067
exact beta_prefix_extend_witness_witness_left - 0068
rewrite hsplit_left - 0069
rewrite hsplit_left - 0070
exact hnew_predecessor - 0071
have hold : v = 0 ∧ BetaAt(fb,fc,i,1) ∨ v = 1 ∧ BetaAt(fb,fc,i,r)Exact native replay line
have hold : ((v = 0 /\ (((exists gsp_beta_height_recode_old_one. gsp_beta_height_recode_old_one + S (1) = S ((S (i)) * fc)) /\ exists gsp_beta_quotient_recode_old_one. fb = gsp_beta_quotient_recode_old_one * S ((S (i)) * fc) + (1)))) \/ (v = 1 /\ (((exists ff_h_recode_old_predecessor. ff_h_recode_old_predecessor + S (r) = S ((S (i)) * fc)) /\ exists ff_q_recode_old_predecessor. fb = ff_q_recode_old_predecessor * S ((S (i)) * fc) + (r))))) - 0072
specialize hsigns i - 0073
specialize hsigns v - 0074
apply hsigns - 0075
exact hsplit_right - 0076
exact hv - 0077
cases hold - 0078
cases hold_left - 0079
left - 0080
split - 0081
exact hold_left_left - 0082
specialize beta_prefix_extend_witness_witness_right i - 0083
specialize beta_prefix_extend_witness_witness_right 1 - 0084
apply beta_prefix_extend_witness_witness_right - 0085
exact hsplit_right - 0086
exact hold_left_right - 0087
cases hold_right - 0088
right - 0089
split - 0090
exact hold_right_left - 0091
specialize beta_prefix_extend_witness_witness_right i - 0092
specialize beta_prefix_extend_witness_witness_right r - 0093
apply beta_prefix_extend_witness_witness_right - 0094
exact hsplit_right - 0095
exact hold_right_right