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.
The initial 0/1 convergent is included: u is natural, not necessarily positive. Comparison denominators are strictly smaller and positive. Signed competitors are represented by an arbitrary difference rp−rn. Approximation inequalities are proved from the trace, never stored as assumptions in Convergent.
Exact theorem in conservative defined notation
∀ a. ∀ b. ∀ s. ∀ h. ∀ e. ∀ k. ContinuedFractionTrace(a,b,s,h,e,S k) → ∃ x. ∃ y. ∃ z. a = b · x + y ∧ (Lt(y,b) ∧ (ListCell(s,x,z) ∧ ContinuedFractionTrace(b,y,z,h,e,k)))
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 81 original proof lines are preserved. Only local proposition formulas are abbreviated; every abbreviation has an exact binder-safe expansion check. The linked exact edition contains the unchanged replay 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 (1)
01Fix variables and assumptionsL1–7
02Separate the logical casesL8–10
03Establish hsL11–13
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply ht witness right right.
- L11Definitions: BetaAt(h,e,k,(cfc_old_a_old_last_step + ((cfc_old_b_old_last_step + cfc_tail_old_last_step) · S (cfc_old_b_old_last_step + cfc_tail_old_last_step) + (cfc_tail_old_last_step + cfc_tail_old_last_step))) · S (cfc_old_a_old_last_step + ((cfc_old_b_old_last_step + cfc_tail_old_last_step) · S (cfc_old_b_old_last_step + cfc_tail_old_last_step) + (cfc_tail_old_last_step + cfc_tail_old_last_step))) + ((cfc_old_b_old_last_step + cfc_tail_old_last_step) · S (cfc_old_b_old_last_step + cfc_tail_old_last_step) + (cfc_tail_old_last_step + cfc_tail_old_last_step) + ((cfc_old_b_old_last_step + cfc_tail_old_last_step) · S (cfc_old_b_old_last_step + cfc_tail_old_last_step) + (cfc_tail_old_last_step + cfc_tail_old_last_step))))BetaAt(h,e,S k,(cfc_new_a_old_last_step + ((cfc_new_b_old_last_step + cfc_head_old_last_step) · S (cfc_new_b_old_last_step + cfc_head_old_last_step) + (cfc_head_old_last_step + cfc_head_old_last_step))) · S (cfc_new_a_old_last_step + ((cfc_new_b_old_last_step + cfc_head_old_last_step) · S (cfc_new_b_old_last_step + cfc_head_old_last_step) + (cfc_head_old_last_step + cfc_head_old_last_step))) + ((cfc_new_b_old_last_step + cfc_head_old_last_step) · S (cfc_new_b_old_last_step + cfc_head_old_last_step) + (cfc_head_old_last_step + cfc_head_old_last_step) + ((cfc_new_b_old_last_step + cfc_head_old_last_step) · S (cfc_new_b_old_last_step + cfc_head_old_last_step) + (cfc_head_old_last_step + cfc_head_old_last_step))))Lt(cfc_old_b_old_last_step,cfc_new_b_old_last_step)ListCell(cfc_head_old_last_step,cfc_q_old_last_step,cfc_tail_old_last_step)Original native command in the exact edition
have hs · expand full local formula (1,924 characters)
have hs : ∃ cfc_old_a_old_last_step. ∃ cfc_old_b_old_last_step. ∃ cfc_tail_old_last_step. ∃ cfc_new_a_old_last_step. ∃ cfc_new_b_old_last_step. ∃ cfc_head_old_last_step. ∃ cfc_q_old_last_step. BetaAt(h,e,k,(cfc_old_a_old_last_step + ((cfc_old_b_old_last_step + cfc_tail_old_last_step) · S (cfc_old_b_old_last_step + cfc_tail_old_last_step) + (cfc_tail_old_last_step + cfc_tail_old_last_step))) · S (cfc_old_a_old_last_step + ((cfc_old_b_old_last_step + cfc_tail_old_last_step) · S (cfc_old_b_old_last_step + cfc_tail_old_last_step) + (cfc_tail_old_last_step + cfc_tail_old_last_step))) + ((cfc_old_b_old_last_step + cfc_tail_old_last_step) · S (cfc_old_b_old_last_step + cfc_tail_old_last_step) + (cfc_tail_old_last_step + cfc_tail_old_last_step) + ((cfc_old_b_old_last_step + cfc_tail_old_last_step) · S (cfc_old_b_old_last_step + cfc_tail_old_last_step) + (cfc_tail_old_last_step + cfc_tail_old_last_step)))) ∧ (BetaAt(h,e,S k,(cfc_new_a_old_last_step + ((cfc_new_b_old_last_step + cfc_head_old_last_step) · S (cfc_new_b_old_last_step + cfc_head_old_last_step) + (cfc_head_old_last_step + cfc_head_old_last_step))) · S (cfc_new_a_old_last_step + ((cfc_new_b_old_last_step + cfc_head_old_last_step) · S (cfc_new_b_old_last_step + cfc_head_old_last_step) + (cfc_head_old_last_step + cfc_head_old_last_step))) + ((cfc_new_b_old_last_step + cfc_head_old_last_step) · S (cfc_new_b_old_last_step + cfc_head_old_last_step) + (cfc_head_old_last_step + cfc_head_old_last_step) + ((cfc_new_b_old_last_step + cfc_head_old_last_step) · S (cfc_new_b_old_last_step + cfc_head_old_last_step) + (cfc_head_old_last_step + cfc_head_old_last_step)))) ∧ (cfc_new_b_old_last_step = cfc_old_a_old_last_step ∧ (cfc_new_a_old_last_step = cfc_new_b_old_last_step · cfc_q_old_last_step + cfc_old_b_old_last_step ∧ (Lt(cfc_old_b_old_last_step,cfc_new_b_old_last_step) ∧ ListCell(cfc_head_old_last_step,cfc_q_old_last_step,cfc_tail_old_last_step))))) - L12
specialize ht_witness_right_right (k) - L13
apply ht_witness_right_right
04Construct an explicit witnessL14–14
Supply the displayed value, then prove that it has the required property.
- L14
exists 0
05Use earlier factsL15–15
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L15
apply zero_add
06Separate the logical casesL16–25
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L16
cases hs - L17
cases hs_witness - L18
cases hs_witness_witness - L19
cases hs_witness_witness_witness - L20
cases hs_witness_witness_witness_witness - L21
cases hs_witness_witness_witness_witness_witness - L22
cases hs_witness_witness_witness_witness_witness_witness - L23
cases hs_witness_witness_witness_witness_witness_witness_witness - L24
cases hs_witness_witness_witness_witness_witness_witness_witness_right - L25
cases hs_witness_witness_witness_witness_witness_witness_witness_right_right
07Separate the logical casesL26–27
08Establish heqL28–37
Establish this local claim before using it. It is not an additional assumption.
- L28
have heq : ((a = x4) /\ ((b = x5) /\ (s = x6))) - L29
specialize cf_convergent_old_history_state_unique (h) - L30
specialize cf_convergent_old_history_state_unique (e) - L31
specialize cf_convergent_old_history_state_unique (S k) - L32
specialize cf_convergent_old_history_state_unique (a) - L33
specialize cf_convergent_old_history_state_unique (b) - L34
specialize cf_convergent_old_history_state_unique (s) - L35
specialize cf_convergent_old_history_state_unique (x4) - L36
specialize cf_convergent_old_history_state_unique (x5) - L37
specialize cf_convergent_old_history_state_unique (x6)
09Use earlier factsL38–40
10Separate the logical casesL41–42
11Establish hdivisorL43–46
12Establish hprefixL47–47
Establish this local claim before using it. It is not an additional assumption.
- L47
have hprefix : ContinuedFractionTrace(x1,x2,x3,h,e,k)Definitions: ContinuedFractionTrace(x1,x2,x3,h,e,k)Original native command in the exact edition
13Construct an explicit witnessL48–48
Supply the displayed value, then prove that it has the required property.
- L48
exists x
14Separate the logical casesL49–49
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L49
split
15Use earlier factsL50–50
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L50
exact ht_witness_left
16Separate the logical casesL51–51
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L51
split
17Use earlier factsL52–52
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L52
exact hs_witness_witness_witness_witness_witness_witness_witness_left
18Fix variables and assumptionsL53–54
19Use earlier factsL55–63
Instantiate or apply named facts and discharge the corresponding proof obligations.
20Construct an explicit witnessL64–66
21Separate the logical casesL67–67
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L67
split
22Calculate and transport equalitiesL68–69
23Use earlier factsL70–70
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L70
exact hs_witness_witness_witness_witness_witness_witness_witness_right_right_right_left
24Separate the logical casesL71–71
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L71
split
25Calculate and transport equalitiesL72–72
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L72
rewrite heq_right_left
26Use earlier factsL73–73
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L73
exact hs_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_left
27Separate the logical casesL74–74
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L74
split
28Calculate and transport equalitiesL75–75
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L75
rewrite heq_right_right
29Use earlier factsL76–76
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L76
exact hs_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right
30Calculate and transport equalitiesL77–80
31Use earlier factsL81–81
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L81
exact hprefix
Original defined command ledger · 81 lines
- 0001
intro a - 0002
intro b - 0003
intro s - 0004
intro h - 0005
intro e - 0006
intro k - 0007
intro ht - 0008
cases ht - 0009
cases ht_witness - 0010
cases ht_witness_right - 0011
have hs : ∃ cfc_old_a_old_last_step. ∃ cfc_old_b_old_last_step. ∃ cfc_tail_old_last_step. ∃ cfc_new_a_old_last_step. ∃ cfc_new_b_old_last_step. ∃ cfc_head_old_last_step. ∃ cfc_q_old_last_step. BetaAt(h,e,k,(cfc_old_a_old_last_step + ((cfc_old_b_old_last_step + cfc_tail_old_last_step) · S (cfc_old_b_old_last_step + cfc_tail_old_last_step) + (cfc_tail_old_last_step + cfc_tail_old_last_step))) · S (cfc_old_a_old_last_step + ((cfc_old_b_old_last_step + cfc_tail_old_last_step) · S (cfc_old_b_old_last_step + cfc_tail_old_last_step) + (cfc_tail_old_last_step + cfc_tail_old_last_step))) + ((cfc_old_b_old_last_step + cfc_tail_old_last_step) · S (cfc_old_b_old_last_step + cfc_tail_old_last_step) + (cfc_tail_old_last_step + cfc_tail_old_last_step) + ((cfc_old_b_old_last_step + cfc_tail_old_last_step) · S (cfc_old_b_old_last_step + cfc_tail_old_last_step) + (cfc_tail_old_last_step + cfc_tail_old_last_step)))) ∧ (BetaAt(h,e,S k,(cfc_new_a_old_last_step + ((cfc_new_b_old_last_step + cfc_head_old_last_step) · S (cfc_new_b_old_last_step + cfc_head_old_last_step) + (cfc_head_old_last_step + cfc_head_old_last_step))) · S (cfc_new_a_old_last_step + ((cfc_new_b_old_last_step + cfc_head_old_last_step) · S (cfc_new_b_old_last_step + cfc_head_old_last_step) + (cfc_head_old_last_step + cfc_head_old_last_step))) + ((cfc_new_b_old_last_step + cfc_head_old_last_step) · S (cfc_new_b_old_last_step + cfc_head_old_last_step) + (cfc_head_old_last_step + cfc_head_old_last_step) + ((cfc_new_b_old_last_step + cfc_head_old_last_step) · S (cfc_new_b_old_last_step + cfc_head_old_last_step) + (cfc_head_old_last_step + cfc_head_old_last_step)))) ∧ (cfc_new_b_old_last_step = cfc_old_a_old_last_step ∧ (cfc_new_a_old_last_step = cfc_new_b_old_last_step · cfc_q_old_last_step + cfc_old_b_old_last_step ∧ (Lt(cfc_old_b_old_last_step,cfc_new_b_old_last_step) ∧ ListCell(cfc_head_old_last_step,cfc_q_old_last_step,cfc_tail_old_last_step))))) - 0012
specialize ht_witness_right_right (k) - 0013
apply ht_witness_right_right - 0014
exists 0 - 0015
apply zero_add - 0016
cases hs - 0017
cases hs_witness - 0018
cases hs_witness_witness - 0019
cases hs_witness_witness_witness - 0020
cases hs_witness_witness_witness_witness - 0021
cases hs_witness_witness_witness_witness_witness - 0022
cases hs_witness_witness_witness_witness_witness_witness - 0023
cases hs_witness_witness_witness_witness_witness_witness_witness - 0024
cases hs_witness_witness_witness_witness_witness_witness_witness_right - 0025
cases hs_witness_witness_witness_witness_witness_witness_witness_right_right - 0026
cases hs_witness_witness_witness_witness_witness_witness_witness_right_right_right - 0027
cases hs_witness_witness_witness_witness_witness_witness_witness_right_right_right_right - 0028
have heq : ((a = x4) /\ ((b = x5) /\ (s = x6))) - 0029
specialize cf_convergent_old_history_state_unique (h) - 0030
specialize cf_convergent_old_history_state_unique (e) - 0031
specialize cf_convergent_old_history_state_unique (S k) - 0032
specialize cf_convergent_old_history_state_unique (a) - 0033
specialize cf_convergent_old_history_state_unique (b) - 0034
specialize cf_convergent_old_history_state_unique (s) - 0035
specialize cf_convergent_old_history_state_unique (x4) - 0036
specialize cf_convergent_old_history_state_unique (x5) - 0037
specialize cf_convergent_old_history_state_unique (x6) - 0038
apply cf_convergent_old_history_state_unique - 0039
exact ht_witness_right_left - 0040
exact hs_witness_witness_witness_witness_witness_witness_witness_right_left - 0041
cases heq - 0042
cases heq_right - 0043
have hdivisor : b = x1 - 0044
trans x5 - 0045
exact heq_right_left - 0046
exact hs_witness_witness_witness_witness_witness_witness_witness_right_right_left - 0047
have hprefix : ContinuedFractionTrace(x1,x2,x3,h,e,k) - 0048
exists x - 0049
split - 0050
exact ht_witness_left - 0051
split - 0052
exact hs_witness_witness_witness_witness_witness_witness_witness_left - 0053
intro j - 0054
intro hj - 0055
specialize ht_witness_right_right (j) - 0056
apply ht_witness_right_right - 0057
specialize lt_of_lt_of_le (j) - 0058
specialize lt_of_lt_of_le (k) - 0059
specialize lt_of_lt_of_le (S k) - 0060
apply lt_of_lt_of_le - 0061
exact hj - 0062
specialize le_succ_self (k) - 0063
apply le_succ_self - 0064
exists x7 - 0065
exists x2 - 0066
exists x3 - 0067
split - 0068
rewrite heq_left - 0069
rewrite heq_right_left - 0070
exact hs_witness_witness_witness_witness_witness_witness_witness_right_right_right_left - 0071
split - 0072
rewrite heq_right_left - 0073
exact hs_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_left - 0074
split - 0075
rewrite heq_right_right - 0076
exact hs_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right - 0077
rewrite hdivisor - 0078
rewrite hdivisor - 0079
rewrite hdivisor - 0080
rewrite hdivisor - 0081
exact hprefix