BA004A

continued_fraction_has_exact_terminal_convergent

Every actual G071 positive rational has an explicitly constructed exact terminal convergent in the same indexed quotient-list relation.

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

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. (exists cf_a_pred_zero_initial_fraction cf_b_pred_zero_initial_fraction cf_code_zero_initial_fraction cf_scale_zero_initial_fraction cf_length_pred_zero_initial_fraction. (a = S cf_a_pred_zero_initial_fraction /\ (b = S cf_b_pred_zero_initial_fraction /\ (exists cf_gcd_zero_initial_fraction_trace. ((((exists ff_h_cf_zero_initial_fraction_trace_initial_state. ff_h_cf_zero_initial_fraction_trace_initial_state + S (((cf_gcd_zero_initial_fraction_trace) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) * S ((cf_gcd_zero_initial_fraction_trace) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) + ((((0) + (0)) * S ((0) + (0)) + ((0) + (0))) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0))))) = S ((S (0)) * cf_scale_zero_initial_fraction)) /\ exists ff_q_cf_zero_initial_fraction_trace_initial_state. cf_code_zero_initial_fraction = ff_q_cf_zero_initial_fraction_trace_initial_state * S ((S (0)) * cf_scale_zero_initial_fraction) + (((cf_gcd_zero_initial_fraction_trace) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) * S ((cf_gcd_zero_initial_fraction_trace) + (((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_zero_initial_fraction_trace_terminal_state. ff_h_cf_zero_initial_fraction_trace_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 cf_length_pred_zero_initial_fraction)) * cf_scale_zero_initial_fraction)) /\ exists ff_q_cf_zero_initial_fraction_trace_terminal_state. cf_code_zero_initial_fraction = ff_q_cf_zero_initial_fraction_trace_terminal_state * S ((S (S cf_length_pred_zero_initial_fraction)) * cf_scale_zero_initial_fraction) + (((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_zero_initial_fraction_trace. (exists ff_lt_cf_zero_initial_fraction_trace_index. ff_lt_cf_zero_initial_fraction_trace_index + S cf_index_zero_initial_fraction_trace = S cf_length_pred_zero_initial_fraction) -> exists cf_old_a_zero_initial_fraction_trace cf_old_b_zero_initial_fraction_trace cf_tail_zero_initial_fraction_trace cf_new_a_zero_initial_fraction_trace cf_new_b_zero_initial_fraction_trace cf_head_zero_initial_fraction_trace cf_quotient_zero_initial_fraction_trace. ((((exists ff_h_cf_zero_initial_fraction_trace_previous_state. ff_h_cf_zero_initial_fraction_trace_previous_state + S (((cf_old_a_zero_initial_fraction_trace) + (((cf_old_b_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)) * S ((cf_old_b_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)) + ((cf_tail_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)))) * S ((cf_old_a_zero_initial_fraction_trace) + (((cf_old_b_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)) * S ((cf_old_b_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)) + ((cf_tail_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)))) + ((((cf_old_b_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)) * S ((cf_old_b_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)) + ((cf_tail_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace))) + (((cf_old_b_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)) * S ((cf_old_b_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)) + ((cf_tail_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace))))) = S ((S (cf_index_zero_initial_fraction_trace)) * cf_scale_zero_initial_fraction)) /\ exists ff_q_cf_zero_initial_fraction_trace_previous_state. cf_code_zero_initial_fraction = ff_q_cf_zero_initial_fraction_trace_previous_state * S ((S (cf_index_zero_initial_fraction_trace)) * cf_scale_zero_initial_fraction) + (((cf_old_a_zero_initial_fraction_trace) + (((cf_old_b_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)) * S ((cf_old_b_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)) + ((cf_tail_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)))) * S ((cf_old_a_zero_initial_fraction_trace) + (((cf_old_b_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)) * S ((cf_old_b_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)) + ((cf_tail_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)))) + ((((cf_old_b_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)) * S ((cf_old_b_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)) + ((cf_tail_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace))) + (((cf_old_b_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)) * S ((cf_old_b_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace)) + ((cf_tail_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace))))))) /\ ((((exists ff_h_cf_zero_initial_fraction_trace_following_state. ff_h_cf_zero_initial_fraction_trace_following_state + S (((cf_new_a_zero_initial_fraction_trace) + (((cf_new_b_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)) * S ((cf_new_b_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)) + ((cf_head_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)))) * S ((cf_new_a_zero_initial_fraction_trace) + (((cf_new_b_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)) * S ((cf_new_b_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)) + ((cf_head_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)))) + ((((cf_new_b_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)) * S ((cf_new_b_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)) + ((cf_head_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace))) + (((cf_new_b_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)) * S ((cf_new_b_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)) + ((cf_head_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace))))) = S ((S (S cf_index_zero_initial_fraction_trace)) * cf_scale_zero_initial_fraction)) /\ exists ff_q_cf_zero_initial_fraction_trace_following_state. cf_code_zero_initial_fraction = ff_q_cf_zero_initial_fraction_trace_following_state * S ((S (S cf_index_zero_initial_fraction_trace)) * cf_scale_zero_initial_fraction) + (((cf_new_a_zero_initial_fraction_trace) + (((cf_new_b_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)) * S ((cf_new_b_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)) + ((cf_head_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)))) * S ((cf_new_a_zero_initial_fraction_trace) + (((cf_new_b_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)) * S ((cf_new_b_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)) + ((cf_head_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)))) + ((((cf_new_b_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)) * S ((cf_new_b_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)) + ((cf_head_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace))) + (((cf_new_b_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)) * S ((cf_new_b_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace)) + ((cf_head_zero_initial_fraction_trace) + (cf_head_zero_initial_fraction_trace))))))) /\ (cf_new_b_zero_initial_fraction_trace = cf_old_a_zero_initial_fraction_trace /\ (cf_new_a_zero_initial_fraction_trace = cf_new_b_zero_initial_fraction_trace * cf_quotient_zero_initial_fraction_trace + cf_old_b_zero_initial_fraction_trace /\ ((exists ff_lt_cf_zero_initial_fraction_trace_remainder. ff_lt_cf_zero_initial_fraction_trace_remainder + S cf_old_b_zero_initial_fraction_trace = cf_new_b_zero_initial_fraction_trace) /\ (cf_head_zero_initial_fraction_trace = S ((cf_quotient_zero_initial_fraction_trace + cf_tail_zero_initial_fraction_trace) * S (cf_quotient_zero_initial_fraction_trace + cf_tail_zero_initial_fraction_trace) + (cf_tail_zero_initial_fraction_trace + cf_tail_zero_initial_fraction_trace)))))))))))))) -> exists i u v. ((exists cfc_previous_numerator_public_terminal cfc_previous_denominator_public_terminal cfc_code_public_terminal cfc_scale_public_terminal. ((~(v = 0)) /\ (exists cfc_tail_public_terminalcomputation. ((exists cfc_state_public_terminalcomputationinitial. ((exists cfc_left_public_terminalcomputationinitialcode cfc_right_public_terminalcomputationinitialcode cfc_matrix_public_terminalcomputationinitialcode. ((cfc_left_public_terminalcomputationinitialcode = ((1) + (0)) * S ((1) + (0)) + ((0) + (0))) /\ ((cfc_right_public_terminalcomputationinitialcode = ((0) + (1)) * S ((0) + (1)) + ((1) + (1))) /\ ((cfc_matrix_public_terminalcomputationinitialcode = ((cfc_left_public_terminalcomputationinitialcode) + (cfc_right_public_terminalcomputationinitialcode)) * S ((cfc_left_public_terminalcomputationinitialcode) + (cfc_right_public_terminalcomputationinitialcode)) + ((cfc_right_public_terminalcomputationinitialcode) + (cfc_right_public_terminalcomputationinitialcode))) /\ ((cfc_state_public_terminalcomputationinitial) = ((cfc_tail_public_terminalcomputation) + (cfc_matrix_public_terminalcomputationinitialcode)) * S ((cfc_tail_public_terminalcomputation) + (cfc_matrix_public_terminalcomputationinitialcode)) + ((cfc_matrix_public_terminalcomputationinitialcode) + (cfc_matrix_public_terminalcomputationinitialcode))))))) /\ (((exists ff_h_public_terminalcomputationinitialentry. ff_h_public_terminalcomputationinitialentry + S (cfc_state_public_terminalcomputationinitial) = S ((S (0)) * cfc_scale_public_terminal)) /\ exists ff_q_public_terminalcomputationinitialentry. cfc_code_public_terminal = ff_q_public_terminalcomputationinitialentry * S ((S (0)) * cfc_scale_public_terminal) + (cfc_state_public_terminalcomputationinitial))))) /\ ((exists cfc_state_public_terminalcomputationterminal. ((exists cfc_left_public_terminalcomputationterminalcode cfc_right_public_terminalcomputationterminalcode cfc_matrix_public_terminalcomputationterminalcode. ((cfc_left_public_terminalcomputationterminalcode = ((u) + (cfc_previous_numerator_public_terminal)) * S ((u) + (cfc_previous_numerator_public_terminal)) + ((cfc_previous_numerator_public_terminal) + (cfc_previous_numerator_public_terminal))) /\ ((cfc_right_public_terminalcomputationterminalcode = ((v) + (cfc_previous_denominator_public_terminal)) * S ((v) + (cfc_previous_denominator_public_terminal)) + ((cfc_previous_denominator_public_terminal) + (cfc_previous_denominator_public_terminal))) /\ ((cfc_matrix_public_terminalcomputationterminalcode = ((cfc_left_public_terminalcomputationterminalcode) + (cfc_right_public_terminalcomputationterminalcode)) * S ((cfc_left_public_terminalcomputationterminalcode) + (cfc_right_public_terminalcomputationterminalcode)) + ((cfc_right_public_terminalcomputationterminalcode) + (cfc_right_public_terminalcomputationterminalcode))) /\ ((cfc_state_public_terminalcomputationterminal) = ((s) + (cfc_matrix_public_terminalcomputationterminalcode)) * S ((s) + (cfc_matrix_public_terminalcomputationterminalcode)) + ((cfc_matrix_public_terminalcomputationterminalcode) + (cfc_matrix_public_terminalcomputationterminalcode))))))) /\ (((exists ff_h_public_terminalcomputationterminalentry. ff_h_public_terminalcomputationterminalentry + S (cfc_state_public_terminalcomputationterminal) = S ((S (S (i))) * cfc_scale_public_terminal)) /\ exists ff_q_public_terminalcomputationterminalentry. cfc_code_public_terminal = ff_q_public_terminalcomputationterminalentry * S ((S (S (i))) * cfc_scale_public_terminal) + (cfc_state_public_terminalcomputationterminal))))) /\ (forall cfc_index_public_terminalcomputation. (exists cfba_gap_public_terminalcomputationbound. cfba_gap_public_terminalcomputationbound + S (cfc_index_public_terminalcomputation) = (S (i))) -> exists cfc_old_public_terminalcomputation cfc_a_public_terminalcomputation cfc_b_public_terminalcomputation cfc_c_public_terminalcomputation cfc_d_public_terminalcomputation cfc_new_public_terminalcomputation cfc_quotient_public_terminalcomputation. ((exists cfc_state_public_terminalcomputationprevious. ((exists cfc_left_public_terminalcomputationpreviouscode cfc_right_public_terminalcomputationpreviouscode cfc_matrix_public_terminalcomputationpreviouscode. ((cfc_left_public_terminalcomputationpreviouscode = ((cfc_a_public_terminalcomputation) + (cfc_b_public_terminalcomputation)) * S ((cfc_a_public_terminalcomputation) + (cfc_b_public_terminalcomputation)) + ((cfc_b_public_terminalcomputation) + (cfc_b_public_terminalcomputation))) /\ ((cfc_right_public_terminalcomputationpreviouscode = ((cfc_c_public_terminalcomputation) + (cfc_d_public_terminalcomputation)) * S ((cfc_c_public_terminalcomputation) + (cfc_d_public_terminalcomputation)) + ((cfc_d_public_terminalcomputation) + (cfc_d_public_terminalcomputation))) /\ ((cfc_matrix_public_terminalcomputationpreviouscode = ((cfc_left_public_terminalcomputationpreviouscode) + (cfc_right_public_terminalcomputationpreviouscode)) * S ((cfc_left_public_terminalcomputationpreviouscode) + (cfc_right_public_terminalcomputationpreviouscode)) + ((cfc_right_public_terminalcomputationpreviouscode) + (cfc_right_public_terminalcomputationpreviouscode))) /\ ((cfc_state_public_terminalcomputationprevious) = ((cfc_old_public_terminalcomputation) + (cfc_matrix_public_terminalcomputationpreviouscode)) * S ((cfc_old_public_terminalcomputation) + (cfc_matrix_public_terminalcomputationpreviouscode)) + ((cfc_matrix_public_terminalcomputationpreviouscode) + (cfc_matrix_public_terminalcomputationpreviouscode))))))) /\ (((exists ff_h_public_terminalcomputationpreviousentry. ff_h_public_terminalcomputationpreviousentry + S (cfc_state_public_terminalcomputationprevious) = S ((S (cfc_index_public_terminalcomputation)) * cfc_scale_public_terminal)) /\ exists ff_q_public_terminalcomputationpreviousentry. cfc_code_public_terminal = ff_q_public_terminalcomputationpreviousentry * S ((S (cfc_index_public_terminalcomputation)) * cfc_scale_public_terminal) + (cfc_state_public_terminalcomputationprevious))))) /\ ((exists cfc_state_public_terminalcomputationfollowing. ((exists cfc_left_public_terminalcomputationfollowingcode cfc_right_public_terminalcomputationfollowingcode cfc_matrix_public_terminalcomputationfollowingcode. ((cfc_left_public_terminalcomputationfollowingcode = (((cfc_quotient_public_terminalcomputation * cfc_a_public_terminalcomputation + cfc_c_public_terminalcomputation)) + ((cfc_quotient_public_terminalcomputation * cfc_b_public_terminalcomputation + cfc_d_public_terminalcomputation))) * S (((cfc_quotient_public_terminalcomputation * cfc_a_public_terminalcomputation + cfc_c_public_terminalcomputation)) + ((cfc_quotient_public_terminalcomputation * cfc_b_public_terminalcomputation + cfc_d_public_terminalcomputation))) + (((cfc_quotient_public_terminalcomputation * cfc_b_public_terminalcomputation + cfc_d_public_terminalcomputation)) + ((cfc_quotient_public_terminalcomputation * cfc_b_public_terminalcomputation + cfc_d_public_terminalcomputation)))) /\ ((cfc_right_public_terminalcomputationfollowingcode = ((cfc_a_public_terminalcomputation) + (cfc_b_public_terminalcomputation)) * S ((cfc_a_public_terminalcomputation) + (cfc_b_public_terminalcomputation)) + ((cfc_b_public_terminalcomputation) + (cfc_b_public_terminalcomputation))) /\ ((cfc_matrix_public_terminalcomputationfollowingcode = ((cfc_left_public_terminalcomputationfollowingcode) + (cfc_right_public_terminalcomputationfollowingcode)) * S ((cfc_left_public_terminalcomputationfollowingcode) + (cfc_right_public_terminalcomputationfollowingcode)) + ((cfc_right_public_terminalcomputationfollowingcode) + (cfc_right_public_terminalcomputationfollowingcode))) /\ ((cfc_state_public_terminalcomputationfollowing) = ((cfc_new_public_terminalcomputation) + (cfc_matrix_public_terminalcomputationfollowingcode)) * S ((cfc_new_public_terminalcomputation) + (cfc_matrix_public_terminalcomputationfollowingcode)) + ((cfc_matrix_public_terminalcomputationfollowingcode) + (cfc_matrix_public_terminalcomputationfollowingcode))))))) /\ (((exists ff_h_public_terminalcomputationfollowingentry. ff_h_public_terminalcomputationfollowingentry + S (cfc_state_public_terminalcomputationfollowing) = S ((S (S cfc_index_public_terminalcomputation)) * cfc_scale_public_terminal)) /\ exists ff_q_public_terminalcomputationfollowingentry. cfc_code_public_terminal = ff_q_public_terminalcomputationfollowingentry * S ((S (S cfc_index_public_terminalcomputation)) * cfc_scale_public_terminal) + (cfc_state_public_terminalcomputationfollowing))))) /\ (cfc_new_public_terminalcomputation = S ((cfc_quotient_public_terminalcomputation + cfc_old_public_terminalcomputation) * S (cfc_quotient_public_terminalcomputation + cfc_old_public_terminalcomputation) + (cfc_old_public_terminalcomputation + cfc_old_public_terminalcomputation))))))))))) /\ (a * v = b * u))

Complete tactic proof in conservative notation

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

26 script commands · 6 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 (1)
01Fix variables and assumptionsL1–4

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 hcf
02Separate the logical casesL5–11

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

  1. L5
    cases hcf
  2. L6
    cases hcf_witness
  3. L7
    cases hcf_witness_witness
  4. L8
    cases hcf_witness_witness_witness
  5. L9
    cases hcf_witness_witness_witness_witness
  6. L10
    cases hcf_witness_witness_witness_witness_witness
  7. L11
    cases hcf_witness_witness_witness_witness_witness_right
03Establish htL12–20

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

  1. L12
    have ht : ∃ u. ∃ v. Convergent(s,x4,u,v) ∧ a · v = b · uDefinitions: Convergent(s,x4,u,v)Original native command in the exact edition
  2. L13
    specialize continued_fraction_exact_terminal_convergent_exists (a)
  3. L14
    specialize continued_fraction_exact_terminal_convergent_exists (b)
  4. L15
    specialize continued_fraction_exact_terminal_convergent_exists (s)
  5. L16
    specialize continued_fraction_exact_terminal_convergent_exists (x2)
  6. L17
    specialize continued_fraction_exact_terminal_convergent_exists (x3)
  7. L18
    specialize continued_fraction_exact_terminal_convergent_exists (x4)
  8. L19
    apply continued_fraction_exact_terminal_convergent_exists
  9. L20
    exact hcf_witness_witness_witness_witness_witness_right_right
04Separate the logical casesL21–22

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

  1. L21
    cases ht
  2. L22
    cases ht_witness
05Construct an explicit witnessL23–25

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

  1. L23
    exists x4
  2. L24
    exists x5
  3. L25
    exists x6
06Use earlier factsL26–26

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

  1. L26
    exact ht_witness_witness

Library-wide reading audit

Original defined command ledger · 26 lines
  1. 0001intro a
  2. 0002intro b
  3. 0003intro s
  4. 0004intro hcf
  5. 0005cases hcf
  6. 0006cases hcf_witness
  7. 0007cases hcf_witness_witness
  8. 0008cases hcf_witness_witness_witness
  9. 0009cases hcf_witness_witness_witness_witness
  10. 0010cases hcf_witness_witness_witness_witness_witness
  11. 0011cases hcf_witness_witness_witness_witness_witness_right
  12. 0012have ht : ∃ u. ∃ v. Convergent(s,x4,u,v) ∧ a · v = b · u
  13. 0013specialize continued_fraction_exact_terminal_convergent_exists (a)
  14. 0014specialize continued_fraction_exact_terminal_convergent_exists (b)
  15. 0015specialize continued_fraction_exact_terminal_convergent_exists (s)
  16. 0016specialize continued_fraction_exact_terminal_convergent_exists (x2)
  17. 0017specialize continued_fraction_exact_terminal_convergent_exists (x3)
  18. 0018specialize continued_fraction_exact_terminal_convergent_exists (x4)
  19. 0019apply continued_fraction_exact_terminal_convergent_exists
  20. 0020exact hcf_witness_witness_witness_witness_witness_right_right
  21. 0021cases ht
  22. 0022cases ht_witness
  23. 0023exists x4
  24. 0024exists x5
  25. 0025exists x6
  26. 0026exact ht_witness_witness