BA0049

continued_fraction_exact_terminal_convergent_exists

The terminal convergent is constructively present and exact for every nonempty complete history, not merely a conditional assertion about a hypothetical endpoint.

Alpha v34 checked-use · first admitted v29 · independently kernel and Lean verified; not Stable

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. Convergent(s,k,x,y) ∧ a · y = b · x

Every linked abbreviation expands hygienically to the identical original native formula.

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall a b s h e k. (exists cf_gcd_terminal_exists_history. ((((exists ff_h_cf_terminal_exists_history_initial_state. ff_h_cf_terminal_exists_history_initial_state + S (((cf_gcd_terminal_exists_history) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) * S ((cf_gcd_terminal_exists_history) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) + ((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0))))) = S ((S (0)) * e)) /\ exists ff_q_cf_terminal_exists_history_initial_state. h = ff_q_cf_terminal_exists_history_initial_state * S ((S (0)) * e) + (((cf_gcd_terminal_exists_history) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) * S ((cf_gcd_terminal_exists_history) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) + ((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0))))))) /\ ((((exists ff_h_cf_terminal_exists_history_terminal_state. ff_h_cf_terminal_exists_history_terminal_state + S (((a) + (((b) + (s)) * S ((b) + (s)) + ((s) + (s)))) * S ((a) + (((b) + (s)) * S ((b) + (s)) + ((s) + (s)))) + ((((b) + (s)) * S ((b) + (s)) + ((s) + (s))) + (((b) + (s)) * S ((b) + (s)) + ((s) + (s))))) = S ((S (S k)) * e)) /\ exists ff_q_cf_terminal_exists_history_terminal_state. h = ff_q_cf_terminal_exists_history_terminal_state * S ((S (S k)) * e) + (((a) + (((b) + (s)) * S ((b) + (s)) + ((s) + (s)))) * S ((a) + (((b) + (s)) * S ((b) + (s)) + ((s) + (s)))) + ((((b) + (s)) * S ((b) + (s)) + ((s) + (s))) + (((b) + (s)) * S ((b) + (s)) + ((s) + (s))))))) /\ forall cf_index_terminal_exists_history. (exists ff_lt_cf_terminal_exists_history_index. ff_lt_cf_terminal_exists_history_index + S cf_index_terminal_exists_history = S k) -> exists cf_old_a_terminal_exists_history cf_old_b_terminal_exists_history cf_tail_terminal_exists_history cf_new_a_terminal_exists_history cf_new_b_terminal_exists_history cf_head_terminal_exists_history cf_quotient_terminal_exists_history. ((((exists ff_h_cf_terminal_exists_history_previous_state. ff_h_cf_terminal_exists_history_previous_state + S (((cf_old_a_terminal_exists_history) + (((cf_old_b_terminal_exists_history) + (cf_tail_terminal_exists_history)) * S ((cf_old_b_terminal_exists_history) + (cf_tail_terminal_exists_history)) + ((cf_tail_terminal_exists_history) + (cf_tail_terminal_exists_history)))) * S ((cf_old_a_terminal_exists_history) + (((cf_old_b_terminal_exists_history) + (cf_tail_terminal_exists_history)) * S ((cf_old_b_terminal_exists_history) + (cf_tail_terminal_exists_history)) + ((cf_tail_terminal_exists_history) + (cf_tail_terminal_exists_history)))) + ((((cf_old_b_terminal_exists_history) + (cf_tail_terminal_exists_history)) * S ((cf_old_b_terminal_exists_history) + (cf_tail_terminal_exists_history)) + ((cf_tail_terminal_exists_history) + (cf_tail_terminal_exists_history))) + (((cf_old_b_terminal_exists_history) + (cf_tail_terminal_exists_history)) * S ((cf_old_b_terminal_exists_history) + (cf_tail_terminal_exists_history)) + ((cf_tail_terminal_exists_history) + (cf_tail_terminal_exists_history))))) = S ((S (cf_index_terminal_exists_history)) * e)) /\ exists ff_q_cf_terminal_exists_history_previous_state. h = ff_q_cf_terminal_exists_history_previous_state * S ((S (cf_index_terminal_exists_history)) * e) + (((cf_old_a_terminal_exists_history) + (((cf_old_b_terminal_exists_history) + (cf_tail_terminal_exists_history)) * S ((cf_old_b_terminal_exists_history) + (cf_tail_terminal_exists_history)) + ((cf_tail_terminal_exists_history) + (cf_tail_terminal_exists_history)))) * S ((cf_old_a_terminal_exists_history) + (((cf_old_b_terminal_exists_history) + (cf_tail_terminal_exists_history)) * S ((cf_old_b_terminal_exists_history) + (cf_tail_terminal_exists_history)) + ((cf_tail_terminal_exists_history) + (cf_tail_terminal_exists_history)))) + ((((cf_old_b_terminal_exists_history) + (cf_tail_terminal_exists_history)) * S ((cf_old_b_terminal_exists_history) + (cf_tail_terminal_exists_history)) + ((cf_tail_terminal_exists_history) + (cf_tail_terminal_exists_history))) + (((cf_old_b_terminal_exists_history) + (cf_tail_terminal_exists_history)) * S ((cf_old_b_terminal_exists_history) + (cf_tail_terminal_exists_history)) + ((cf_tail_terminal_exists_history) + (cf_tail_terminal_exists_history))))))) /\ ((((exists ff_h_cf_terminal_exists_history_following_state. ff_h_cf_terminal_exists_history_following_state + S (((cf_new_a_terminal_exists_history) + (((cf_new_b_terminal_exists_history) + (cf_head_terminal_exists_history)) * S ((cf_new_b_terminal_exists_history) + (cf_head_terminal_exists_history)) + ((cf_head_terminal_exists_history) + (cf_head_terminal_exists_history)))) * S ((cf_new_a_terminal_exists_history) + (((cf_new_b_terminal_exists_history) + (cf_head_terminal_exists_history)) * S ((cf_new_b_terminal_exists_history) + (cf_head_terminal_exists_history)) + ((cf_head_terminal_exists_history) + (cf_head_terminal_exists_history)))) + ((((cf_new_b_terminal_exists_history) + (cf_head_terminal_exists_history)) * S ((cf_new_b_terminal_exists_history) + (cf_head_terminal_exists_history)) + ((cf_head_terminal_exists_history) + (cf_head_terminal_exists_history))) + (((cf_new_b_terminal_exists_history) + (cf_head_terminal_exists_history)) * S ((cf_new_b_terminal_exists_history) + (cf_head_terminal_exists_history)) + ((cf_head_terminal_exists_history) + (cf_head_terminal_exists_history))))) = S ((S (S cf_index_terminal_exists_history)) * e)) /\ exists ff_q_cf_terminal_exists_history_following_state. h = ff_q_cf_terminal_exists_history_following_state * S ((S (S cf_index_terminal_exists_history)) * e) + (((cf_new_a_terminal_exists_history) + (((cf_new_b_terminal_exists_history) + (cf_head_terminal_exists_history)) * S ((cf_new_b_terminal_exists_history) + (cf_head_terminal_exists_history)) + ((cf_head_terminal_exists_history) + (cf_head_terminal_exists_history)))) * S ((cf_new_a_terminal_exists_history) + (((cf_new_b_terminal_exists_history) + (cf_head_terminal_exists_history)) * S ((cf_new_b_terminal_exists_history) + (cf_head_terminal_exists_history)) + ((cf_head_terminal_exists_history) + (cf_head_terminal_exists_history)))) + ((((cf_new_b_terminal_exists_history) + (cf_head_terminal_exists_history)) * S ((cf_new_b_terminal_exists_history) + (cf_head_terminal_exists_history)) + ((cf_head_terminal_exists_history) + (cf_head_terminal_exists_history))) + (((cf_new_b_terminal_exists_history) + (cf_head_terminal_exists_history)) * S ((cf_new_b_terminal_exists_history) + (cf_head_terminal_exists_history)) + ((cf_head_terminal_exists_history) + (cf_head_terminal_exists_history))))))) /\ (cf_new_b_terminal_exists_history = cf_old_a_terminal_exists_history /\ (cf_new_a_terminal_exists_history = cf_new_b_terminal_exists_history * cf_quotient_terminal_exists_history + cf_old_b_terminal_exists_history /\ ((exists ff_lt_cf_terminal_exists_history_remainder. ff_lt_cf_terminal_exists_history_remainder + S cf_old_b_terminal_exists_history = cf_new_b_terminal_exists_history) /\ (cf_head_terminal_exists_history = S ((cf_quotient_terminal_exists_history + cf_tail_terminal_exists_history) * S (cf_quotient_terminal_exists_history + cf_tail_terminal_exists_history) + (cf_tail_terminal_exists_history + cf_tail_terminal_exists_history))))))))))) -> exists u v. ((exists cfc_previous_numerator_terminal_convergent cfc_previous_denominator_terminal_convergent cfc_code_terminal_convergent cfc_scale_terminal_convergent. ((~(v = 0)) /\ (exists cfc_tail_terminal_convergentcomputation. ((exists cfc_state_terminal_convergentcomputationinitial. ((exists cfc_left_terminal_convergentcomputationinitialcode cfc_right_terminal_convergentcomputationinitialcode cfc_matrix_terminal_convergentcomputationinitialcode. ((cfc_left_terminal_convergentcomputationinitialcode = ((1) + (0)) * S ((1) + (0)) + ((0) + (0))) /\ ((cfc_right_terminal_convergentcomputationinitialcode = ((0) + (1)) * S ((0) + (1)) + ((1) + (1))) /\ ((cfc_matrix_terminal_convergentcomputationinitialcode = ((cfc_left_terminal_convergentcomputationinitialcode) + (cfc_right_terminal_convergentcomputationinitialcode)) * S ((cfc_left_terminal_convergentcomputationinitialcode) + (cfc_right_terminal_convergentcomputationinitialcode)) + ((cfc_right_terminal_convergentcomputationinitialcode) + (cfc_right_terminal_convergentcomputationinitialcode))) /\ ((cfc_state_terminal_convergentcomputationinitial) = ((cfc_tail_terminal_convergentcomputation) + (cfc_matrix_terminal_convergentcomputationinitialcode)) * S ((cfc_tail_terminal_convergentcomputation) + (cfc_matrix_terminal_convergentcomputationinitialcode)) + ((cfc_matrix_terminal_convergentcomputationinitialcode) + (cfc_matrix_terminal_convergentcomputationinitialcode))))))) /\ (((exists ff_h_terminal_convergentcomputationinitialentry. ff_h_terminal_convergentcomputationinitialentry + S (cfc_state_terminal_convergentcomputationinitial) = S ((S (0)) * cfc_scale_terminal_convergent)) /\ exists ff_q_terminal_convergentcomputationinitialentry. cfc_code_terminal_convergent = ff_q_terminal_convergentcomputationinitialentry * S ((S (0)) * cfc_scale_terminal_convergent) + (cfc_state_terminal_convergentcomputationinitial))))) /\ ((exists cfc_state_terminal_convergentcomputationterminal. ((exists cfc_left_terminal_convergentcomputationterminalcode cfc_right_terminal_convergentcomputationterminalcode cfc_matrix_terminal_convergentcomputationterminalcode. ((cfc_left_terminal_convergentcomputationterminalcode = ((u) + (cfc_previous_numerator_terminal_convergent)) * S ((u) + (cfc_previous_numerator_terminal_convergent)) + ((cfc_previous_numerator_terminal_convergent) + (cfc_previous_numerator_terminal_convergent))) /\ ((cfc_right_terminal_convergentcomputationterminalcode = ((v) + (cfc_previous_denominator_terminal_convergent)) * S ((v) + (cfc_previous_denominator_terminal_convergent)) + ((cfc_previous_denominator_terminal_convergent) + (cfc_previous_denominator_terminal_convergent))) /\ ((cfc_matrix_terminal_convergentcomputationterminalcode = ((cfc_left_terminal_convergentcomputationterminalcode) + (cfc_right_terminal_convergentcomputationterminalcode)) * S ((cfc_left_terminal_convergentcomputationterminalcode) + (cfc_right_terminal_convergentcomputationterminalcode)) + ((cfc_right_terminal_convergentcomputationterminalcode) + (cfc_right_terminal_convergentcomputationterminalcode))) /\ ((cfc_state_terminal_convergentcomputationterminal) = ((s) + (cfc_matrix_terminal_convergentcomputationterminalcode)) * S ((s) + (cfc_matrix_terminal_convergentcomputationterminalcode)) + ((cfc_matrix_terminal_convergentcomputationterminalcode) + (cfc_matrix_terminal_convergentcomputationterminalcode))))))) /\ (((exists ff_h_terminal_convergentcomputationterminalentry. ff_h_terminal_convergentcomputationterminalentry + S (cfc_state_terminal_convergentcomputationterminal) = S ((S (S (k))) * cfc_scale_terminal_convergent)) /\ exists ff_q_terminal_convergentcomputationterminalentry. cfc_code_terminal_convergent = ff_q_terminal_convergentcomputationterminalentry * S ((S (S (k))) * cfc_scale_terminal_convergent) + (cfc_state_terminal_convergentcomputationterminal))))) /\ (forall cfc_index_terminal_convergentcomputation. (exists cfba_gap_terminal_convergentcomputationbound. cfba_gap_terminal_convergentcomputationbound + S (cfc_index_terminal_convergentcomputation) = (S (k))) -> exists cfc_old_terminal_convergentcomputation cfc_a_terminal_convergentcomputation cfc_b_terminal_convergentcomputation cfc_c_terminal_convergentcomputation cfc_d_terminal_convergentcomputation cfc_new_terminal_convergentcomputation cfc_quotient_terminal_convergentcomputation. ((exists cfc_state_terminal_convergentcomputationprevious. ((exists cfc_left_terminal_convergentcomputationpreviouscode cfc_right_terminal_convergentcomputationpreviouscode cfc_matrix_terminal_convergentcomputationpreviouscode. ((cfc_left_terminal_convergentcomputationpreviouscode = ((cfc_a_terminal_convergentcomputation) + (cfc_b_terminal_convergentcomputation)) * S ((cfc_a_terminal_convergentcomputation) + (cfc_b_terminal_convergentcomputation)) + ((cfc_b_terminal_convergentcomputation) + (cfc_b_terminal_convergentcomputation))) /\ ((cfc_right_terminal_convergentcomputationpreviouscode = ((cfc_c_terminal_convergentcomputation) + (cfc_d_terminal_convergentcomputation)) * S ((cfc_c_terminal_convergentcomputation) + (cfc_d_terminal_convergentcomputation)) + ((cfc_d_terminal_convergentcomputation) + (cfc_d_terminal_convergentcomputation))) /\ ((cfc_matrix_terminal_convergentcomputationpreviouscode = ((cfc_left_terminal_convergentcomputationpreviouscode) + (cfc_right_terminal_convergentcomputationpreviouscode)) * S ((cfc_left_terminal_convergentcomputationpreviouscode) + (cfc_right_terminal_convergentcomputationpreviouscode)) + ((cfc_right_terminal_convergentcomputationpreviouscode) + (cfc_right_terminal_convergentcomputationpreviouscode))) /\ ((cfc_state_terminal_convergentcomputationprevious) = ((cfc_old_terminal_convergentcomputation) + (cfc_matrix_terminal_convergentcomputationpreviouscode)) * S ((cfc_old_terminal_convergentcomputation) + (cfc_matrix_terminal_convergentcomputationpreviouscode)) + ((cfc_matrix_terminal_convergentcomputationpreviouscode) + (cfc_matrix_terminal_convergentcomputationpreviouscode))))))) /\ (((exists ff_h_terminal_convergentcomputationpreviousentry. ff_h_terminal_convergentcomputationpreviousentry + S (cfc_state_terminal_convergentcomputationprevious) = S ((S (cfc_index_terminal_convergentcomputation)) * cfc_scale_terminal_convergent)) /\ exists ff_q_terminal_convergentcomputationpreviousentry. cfc_code_terminal_convergent = ff_q_terminal_convergentcomputationpreviousentry * S ((S (cfc_index_terminal_convergentcomputation)) * cfc_scale_terminal_convergent) + (cfc_state_terminal_convergentcomputationprevious))))) /\ ((exists cfc_state_terminal_convergentcomputationfollowing. ((exists cfc_left_terminal_convergentcomputationfollowingcode cfc_right_terminal_convergentcomputationfollowingcode cfc_matrix_terminal_convergentcomputationfollowingcode. ((cfc_left_terminal_convergentcomputationfollowingcode = (((cfc_quotient_terminal_convergentcomputation * cfc_a_terminal_convergentcomputation + cfc_c_terminal_convergentcomputation)) + ((cfc_quotient_terminal_convergentcomputation * cfc_b_terminal_convergentcomputation + cfc_d_terminal_convergentcomputation))) * S (((cfc_quotient_terminal_convergentcomputation * cfc_a_terminal_convergentcomputation + cfc_c_terminal_convergentcomputation)) + ((cfc_quotient_terminal_convergentcomputation * cfc_b_terminal_convergentcomputation + cfc_d_terminal_convergentcomputation))) + (((cfc_quotient_terminal_convergentcomputation * cfc_b_terminal_convergentcomputation + cfc_d_terminal_convergentcomputation)) + ((cfc_quotient_terminal_convergentcomputation * cfc_b_terminal_convergentcomputation + cfc_d_terminal_convergentcomputation)))) /\ ((cfc_right_terminal_convergentcomputationfollowingcode = ((cfc_a_terminal_convergentcomputation) + (cfc_b_terminal_convergentcomputation)) * S ((cfc_a_terminal_convergentcomputation) + (cfc_b_terminal_convergentcomputation)) + ((cfc_b_terminal_convergentcomputation) + (cfc_b_terminal_convergentcomputation))) /\ ((cfc_matrix_terminal_convergentcomputationfollowingcode = ((cfc_left_terminal_convergentcomputationfollowingcode) + (cfc_right_terminal_convergentcomputationfollowingcode)) * S ((cfc_left_terminal_convergentcomputationfollowingcode) + (cfc_right_terminal_convergentcomputationfollowingcode)) + ((cfc_right_terminal_convergentcomputationfollowingcode) + (cfc_right_terminal_convergentcomputationfollowingcode))) /\ ((cfc_state_terminal_convergentcomputationfollowing) = ((cfc_new_terminal_convergentcomputation) + (cfc_matrix_terminal_convergentcomputationfollowingcode)) * S ((cfc_new_terminal_convergentcomputation) + (cfc_matrix_terminal_convergentcomputationfollowingcode)) + ((cfc_matrix_terminal_convergentcomputationfollowingcode) + (cfc_matrix_terminal_convergentcomputationfollowingcode))))))) /\ (((exists ff_h_terminal_convergentcomputationfollowingentry. ff_h_terminal_convergentcomputationfollowingentry + S (cfc_state_terminal_convergentcomputationfollowing) = S ((S (S cfc_index_terminal_convergentcomputation)) * cfc_scale_terminal_convergent)) /\ exists ff_q_terminal_convergentcomputationfollowingentry. cfc_code_terminal_convergent = ff_q_terminal_convergentcomputationfollowingentry * S ((S (S cfc_index_terminal_convergentcomputation)) * cfc_scale_terminal_convergent) + (cfc_state_terminal_convergentcomputationfollowing))))) /\ (cfc_new_terminal_convergentcomputation = S ((cfc_quotient_terminal_convergentcomputation + cfc_old_terminal_convergentcomputation) * S (cfc_quotient_terminal_convergentcomputation + cfc_old_terminal_convergentcomputation) + (cfc_old_terminal_convergentcomputation + cfc_old_terminal_convergentcomputation))))))))))) /\ (a * v = b * u))

Complete tactic proof in conservative notation

All 36 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

36 script commands · 9 reading checkpoints · 1 local claims

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.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

Named ingredients (2)
01Fix variables and assumptionsL1–7

Work with arbitrary variables or the premises of the current implication.

  1. L1
    intro a
  2. L2
    intro b
  3. L3
    intro s
  4. L4
    intro h
  5. L5
    intro e
  6. L6
    intro k
  7. L7
    intro ht
02Establish hcL8–17

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply continued fraction convergent exists at history index.

  1. L8
    have hc : ∃ u. ∃ v. Convergent(s,k,u,v)Definitions: Convergent(s,k,u,v)Original native command in the exact edition
  2. L9
    specialize continued_fraction_convergent_exists_at_history_index (k)
  3. L10
    specialize continued_fraction_convergent_exists_at_history_index (a)
  4. L11
    specialize continued_fraction_convergent_exists_at_history_index (b)
  5. L12
    specialize continued_fraction_convergent_exists_at_history_index (s)
  6. L13
    specialize continued_fraction_convergent_exists_at_history_index (h)
  7. L14
    specialize continued_fraction_convergent_exists_at_history_index (e)
  8. L15
    specialize continued_fraction_convergent_exists_at_history_index (S k)
  9. L16
    apply continued_fraction_convergent_exists_at_history_index
  10. L17
    exact ht
03Construct an explicit witnessL18–18

Supply the displayed value, then prove that it has the required property.

  1. L18
    exists 0
04Use earlier factsL19–19

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L19
    apply zero_add
05Separate the logical casesL20–21

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L20
    cases hc
  2. L21
    cases hc_witness
06Construct an explicit witnessL22–23

Supply the displayed value, then prove that it has the required property.

  1. L22
    exists x
  2. L23
    exists x1
07Separate the logical casesL24–24

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L24
    split
08Use earlier factsL25–34

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L25
    exact hc_witness_witness
  2. L26
    specialize continued_fraction_terminal_convergent_is_exact (a)
  3. L27
    specialize continued_fraction_terminal_convergent_is_exact (b)
  4. L28
    specialize continued_fraction_terminal_convergent_is_exact (s)
  5. L29
    specialize continued_fraction_terminal_convergent_is_exact (h)
  6. L30
    specialize continued_fraction_terminal_convergent_is_exact (e)
  7. L31
    specialize continued_fraction_terminal_convergent_is_exact (k)
  8. L32
    specialize continued_fraction_terminal_convergent_is_exact (x)
  9. L33
    specialize continued_fraction_terminal_convergent_is_exact (x1)
  10. L34
    apply continued_fraction_terminal_convergent_is_exact
09Use earlier factsL35–36

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L35
    exact ht
  2. L36
    exact hc_witness_witness

Library-wide reading audit

Original defined command ledger · 36 lines
  1. 0001intro a
  2. 0002intro b
  3. 0003intro s
  4. 0004intro h
  5. 0005intro e
  6. 0006intro k
  7. 0007intro ht
  8. 0008have hc : ∃ u. ∃ v. Convergent(s,k,u,v)
  9. 0009specialize continued_fraction_convergent_exists_at_history_index (k)
  10. 0010specialize continued_fraction_convergent_exists_at_history_index (a)
  11. 0011specialize continued_fraction_convergent_exists_at_history_index (b)
  12. 0012specialize continued_fraction_convergent_exists_at_history_index (s)
  13. 0013specialize continued_fraction_convergent_exists_at_history_index (h)
  14. 0014specialize continued_fraction_convergent_exists_at_history_index (e)
  15. 0015specialize continued_fraction_convergent_exists_at_history_index (S k)
  16. 0016apply continued_fraction_convergent_exists_at_history_index
  17. 0017exact ht
  18. 0018exists 0
  19. 0019apply zero_add
  20. 0020cases hc
  21. 0021cases hc_witness
  22. 0022exists x
  23. 0023exists x1
  24. 0024split
  25. 0025exact hc_witness_witness
  26. 0026specialize continued_fraction_terminal_convergent_is_exact (a)
  27. 0027specialize continued_fraction_terminal_convergent_is_exact (b)
  28. 0028specialize continued_fraction_terminal_convergent_is_exact (s)
  29. 0029specialize continued_fraction_terminal_convergent_is_exact (h)
  30. 0030specialize continued_fraction_terminal_convergent_is_exact (e)
  31. 0031specialize continued_fraction_terminal_convergent_is_exact (k)
  32. 0032specialize continued_fraction_terminal_convergent_is_exact (x)
  33. 0033specialize continued_fraction_terminal_convergent_is_exact (x1)
  34. 0034apply continued_fraction_terminal_convergent_is_exact
  35. 0035exact ht
  36. 0036exact hc_witness_witness