BA0050

continued_fraction_adjacent_convergent_determinant

Two actual successive convergents of the same G071 list have determinant ±1; both columns are identified with their genuine indexed computations.

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. ∀ i. ∀ u. ∀ v. ∀ p. ∀ q. ContinuedFraction(a,b,s)Convergent(s,S i,u,v)Convergent(s,i,p,q) → u · q + 1 = p · v ∨ p · v + 1 = u · q

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 i u v p q. (exists cf_a_pred_adjacent_fraction cf_b_pred_adjacent_fraction cf_code_adjacent_fraction cf_scale_adjacent_fraction cf_length_pred_adjacent_fraction. (a = S cf_a_pred_adjacent_fraction /\ (b = S cf_b_pred_adjacent_fraction /\ (exists cf_gcd_adjacent_fraction_trace. ((((exists ff_h_cf_adjacent_fraction_trace_initial_state. ff_h_cf_adjacent_fraction_trace_initial_state + S (((cf_gcd_adjacent_fraction_trace) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) * S ((cf_gcd_adjacent_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_adjacent_fraction)) /\ exists ff_q_cf_adjacent_fraction_trace_initial_state. cf_code_adjacent_fraction = ff_q_cf_adjacent_fraction_trace_initial_state * S ((S (0)) * cf_scale_adjacent_fraction) + (((cf_gcd_adjacent_fraction_trace) + (((0) + (0)) * S ((0) + (0)) + ((0) + (0)))) * S ((cf_gcd_adjacent_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_adjacent_fraction_trace_terminal_state. ff_h_cf_adjacent_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_adjacent_fraction)) * cf_scale_adjacent_fraction)) /\ exists ff_q_cf_adjacent_fraction_trace_terminal_state. cf_code_adjacent_fraction = ff_q_cf_adjacent_fraction_trace_terminal_state * S ((S (S cf_length_pred_adjacent_fraction)) * cf_scale_adjacent_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_adjacent_fraction_trace. (exists ff_lt_cf_adjacent_fraction_trace_index. ff_lt_cf_adjacent_fraction_trace_index + S cf_index_adjacent_fraction_trace = S cf_length_pred_adjacent_fraction) -> exists cf_old_a_adjacent_fraction_trace cf_old_b_adjacent_fraction_trace cf_tail_adjacent_fraction_trace cf_new_a_adjacent_fraction_trace cf_new_b_adjacent_fraction_trace cf_head_adjacent_fraction_trace cf_quotient_adjacent_fraction_trace. ((((exists ff_h_cf_adjacent_fraction_trace_previous_state. ff_h_cf_adjacent_fraction_trace_previous_state + S (((cf_old_a_adjacent_fraction_trace) + (((cf_old_b_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)) * S ((cf_old_b_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)) + ((cf_tail_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)))) * S ((cf_old_a_adjacent_fraction_trace) + (((cf_old_b_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)) * S ((cf_old_b_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)) + ((cf_tail_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)))) + ((((cf_old_b_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)) * S ((cf_old_b_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)) + ((cf_tail_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace))) + (((cf_old_b_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)) * S ((cf_old_b_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)) + ((cf_tail_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace))))) = S ((S (cf_index_adjacent_fraction_trace)) * cf_scale_adjacent_fraction)) /\ exists ff_q_cf_adjacent_fraction_trace_previous_state. cf_code_adjacent_fraction = ff_q_cf_adjacent_fraction_trace_previous_state * S ((S (cf_index_adjacent_fraction_trace)) * cf_scale_adjacent_fraction) + (((cf_old_a_adjacent_fraction_trace) + (((cf_old_b_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)) * S ((cf_old_b_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)) + ((cf_tail_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)))) * S ((cf_old_a_adjacent_fraction_trace) + (((cf_old_b_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)) * S ((cf_old_b_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)) + ((cf_tail_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)))) + ((((cf_old_b_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)) * S ((cf_old_b_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)) + ((cf_tail_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace))) + (((cf_old_b_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)) * S ((cf_old_b_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace)) + ((cf_tail_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace))))))) /\ ((((exists ff_h_cf_adjacent_fraction_trace_following_state. ff_h_cf_adjacent_fraction_trace_following_state + S (((cf_new_a_adjacent_fraction_trace) + (((cf_new_b_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)) * S ((cf_new_b_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)) + ((cf_head_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)))) * S ((cf_new_a_adjacent_fraction_trace) + (((cf_new_b_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)) * S ((cf_new_b_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)) + ((cf_head_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)))) + ((((cf_new_b_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)) * S ((cf_new_b_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)) + ((cf_head_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace))) + (((cf_new_b_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)) * S ((cf_new_b_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)) + ((cf_head_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace))))) = S ((S (S cf_index_adjacent_fraction_trace)) * cf_scale_adjacent_fraction)) /\ exists ff_q_cf_adjacent_fraction_trace_following_state. cf_code_adjacent_fraction = ff_q_cf_adjacent_fraction_trace_following_state * S ((S (S cf_index_adjacent_fraction_trace)) * cf_scale_adjacent_fraction) + (((cf_new_a_adjacent_fraction_trace) + (((cf_new_b_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)) * S ((cf_new_b_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)) + ((cf_head_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)))) * S ((cf_new_a_adjacent_fraction_trace) + (((cf_new_b_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)) * S ((cf_new_b_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)) + ((cf_head_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)))) + ((((cf_new_b_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)) * S ((cf_new_b_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)) + ((cf_head_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace))) + (((cf_new_b_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)) * S ((cf_new_b_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace)) + ((cf_head_adjacent_fraction_trace) + (cf_head_adjacent_fraction_trace))))))) /\ (cf_new_b_adjacent_fraction_trace = cf_old_a_adjacent_fraction_trace /\ (cf_new_a_adjacent_fraction_trace = cf_new_b_adjacent_fraction_trace * cf_quotient_adjacent_fraction_trace + cf_old_b_adjacent_fraction_trace /\ ((exists ff_lt_cf_adjacent_fraction_trace_remainder. ff_lt_cf_adjacent_fraction_trace_remainder + S cf_old_b_adjacent_fraction_trace = cf_new_b_adjacent_fraction_trace) /\ (cf_head_adjacent_fraction_trace = S ((cf_quotient_adjacent_fraction_trace + cf_tail_adjacent_fraction_trace) * S (cf_quotient_adjacent_fraction_trace + cf_tail_adjacent_fraction_trace) + (cf_tail_adjacent_fraction_trace + cf_tail_adjacent_fraction_trace)))))))))))))) -> (exists cfc_previous_numerator_adjacent_current cfc_previous_denominator_adjacent_current cfc_code_adjacent_current cfc_scale_adjacent_current. ((~(v = 0)) /\ (exists cfc_tail_adjacent_currentcomputation. ((exists cfc_state_adjacent_currentcomputationinitial. ((exists cfc_left_adjacent_currentcomputationinitialcode cfc_right_adjacent_currentcomputationinitialcode cfc_matrix_adjacent_currentcomputationinitialcode. ((cfc_left_adjacent_currentcomputationinitialcode = ((1) + (0)) * S ((1) + (0)) + ((0) + (0))) /\ ((cfc_right_adjacent_currentcomputationinitialcode = ((0) + (1)) * S ((0) + (1)) + ((1) + (1))) /\ ((cfc_matrix_adjacent_currentcomputationinitialcode = ((cfc_left_adjacent_currentcomputationinitialcode) + (cfc_right_adjacent_currentcomputationinitialcode)) * S ((cfc_left_adjacent_currentcomputationinitialcode) + (cfc_right_adjacent_currentcomputationinitialcode)) + ((cfc_right_adjacent_currentcomputationinitialcode) + (cfc_right_adjacent_currentcomputationinitialcode))) /\ ((cfc_state_adjacent_currentcomputationinitial) = ((cfc_tail_adjacent_currentcomputation) + (cfc_matrix_adjacent_currentcomputationinitialcode)) * S ((cfc_tail_adjacent_currentcomputation) + (cfc_matrix_adjacent_currentcomputationinitialcode)) + ((cfc_matrix_adjacent_currentcomputationinitialcode) + (cfc_matrix_adjacent_currentcomputationinitialcode))))))) /\ (((exists ff_h_adjacent_currentcomputationinitialentry. ff_h_adjacent_currentcomputationinitialentry + S (cfc_state_adjacent_currentcomputationinitial) = S ((S (0)) * cfc_scale_adjacent_current)) /\ exists ff_q_adjacent_currentcomputationinitialentry. cfc_code_adjacent_current = ff_q_adjacent_currentcomputationinitialentry * S ((S (0)) * cfc_scale_adjacent_current) + (cfc_state_adjacent_currentcomputationinitial))))) /\ ((exists cfc_state_adjacent_currentcomputationterminal. ((exists cfc_left_adjacent_currentcomputationterminalcode cfc_right_adjacent_currentcomputationterminalcode cfc_matrix_adjacent_currentcomputationterminalcode. ((cfc_left_adjacent_currentcomputationterminalcode = ((u) + (cfc_previous_numerator_adjacent_current)) * S ((u) + (cfc_previous_numerator_adjacent_current)) + ((cfc_previous_numerator_adjacent_current) + (cfc_previous_numerator_adjacent_current))) /\ ((cfc_right_adjacent_currentcomputationterminalcode = ((v) + (cfc_previous_denominator_adjacent_current)) * S ((v) + (cfc_previous_denominator_adjacent_current)) + ((cfc_previous_denominator_adjacent_current) + (cfc_previous_denominator_adjacent_current))) /\ ((cfc_matrix_adjacent_currentcomputationterminalcode = ((cfc_left_adjacent_currentcomputationterminalcode) + (cfc_right_adjacent_currentcomputationterminalcode)) * S ((cfc_left_adjacent_currentcomputationterminalcode) + (cfc_right_adjacent_currentcomputationterminalcode)) + ((cfc_right_adjacent_currentcomputationterminalcode) + (cfc_right_adjacent_currentcomputationterminalcode))) /\ ((cfc_state_adjacent_currentcomputationterminal) = ((s) + (cfc_matrix_adjacent_currentcomputationterminalcode)) * S ((s) + (cfc_matrix_adjacent_currentcomputationterminalcode)) + ((cfc_matrix_adjacent_currentcomputationterminalcode) + (cfc_matrix_adjacent_currentcomputationterminalcode))))))) /\ (((exists ff_h_adjacent_currentcomputationterminalentry. ff_h_adjacent_currentcomputationterminalentry + S (cfc_state_adjacent_currentcomputationterminal) = S ((S (S ((S i)))) * cfc_scale_adjacent_current)) /\ exists ff_q_adjacent_currentcomputationterminalentry. cfc_code_adjacent_current = ff_q_adjacent_currentcomputationterminalentry * S ((S (S ((S i)))) * cfc_scale_adjacent_current) + (cfc_state_adjacent_currentcomputationterminal))))) /\ (forall cfc_index_adjacent_currentcomputation. (exists cfba_gap_adjacent_currentcomputationbound. cfba_gap_adjacent_currentcomputationbound + S (cfc_index_adjacent_currentcomputation) = (S ((S i)))) -> exists cfc_old_adjacent_currentcomputation cfc_a_adjacent_currentcomputation cfc_b_adjacent_currentcomputation cfc_c_adjacent_currentcomputation cfc_d_adjacent_currentcomputation cfc_new_adjacent_currentcomputation cfc_quotient_adjacent_currentcomputation. ((exists cfc_state_adjacent_currentcomputationprevious. ((exists cfc_left_adjacent_currentcomputationpreviouscode cfc_right_adjacent_currentcomputationpreviouscode cfc_matrix_adjacent_currentcomputationpreviouscode. ((cfc_left_adjacent_currentcomputationpreviouscode = ((cfc_a_adjacent_currentcomputation) + (cfc_b_adjacent_currentcomputation)) * S ((cfc_a_adjacent_currentcomputation) + (cfc_b_adjacent_currentcomputation)) + ((cfc_b_adjacent_currentcomputation) + (cfc_b_adjacent_currentcomputation))) /\ ((cfc_right_adjacent_currentcomputationpreviouscode = ((cfc_c_adjacent_currentcomputation) + (cfc_d_adjacent_currentcomputation)) * S ((cfc_c_adjacent_currentcomputation) + (cfc_d_adjacent_currentcomputation)) + ((cfc_d_adjacent_currentcomputation) + (cfc_d_adjacent_currentcomputation))) /\ ((cfc_matrix_adjacent_currentcomputationpreviouscode = ((cfc_left_adjacent_currentcomputationpreviouscode) + (cfc_right_adjacent_currentcomputationpreviouscode)) * S ((cfc_left_adjacent_currentcomputationpreviouscode) + (cfc_right_adjacent_currentcomputationpreviouscode)) + ((cfc_right_adjacent_currentcomputationpreviouscode) + (cfc_right_adjacent_currentcomputationpreviouscode))) /\ ((cfc_state_adjacent_currentcomputationprevious) = ((cfc_old_adjacent_currentcomputation) + (cfc_matrix_adjacent_currentcomputationpreviouscode)) * S ((cfc_old_adjacent_currentcomputation) + (cfc_matrix_adjacent_currentcomputationpreviouscode)) + ((cfc_matrix_adjacent_currentcomputationpreviouscode) + (cfc_matrix_adjacent_currentcomputationpreviouscode))))))) /\ (((exists ff_h_adjacent_currentcomputationpreviousentry. ff_h_adjacent_currentcomputationpreviousentry + S (cfc_state_adjacent_currentcomputationprevious) = S ((S (cfc_index_adjacent_currentcomputation)) * cfc_scale_adjacent_current)) /\ exists ff_q_adjacent_currentcomputationpreviousentry. cfc_code_adjacent_current = ff_q_adjacent_currentcomputationpreviousentry * S ((S (cfc_index_adjacent_currentcomputation)) * cfc_scale_adjacent_current) + (cfc_state_adjacent_currentcomputationprevious))))) /\ ((exists cfc_state_adjacent_currentcomputationfollowing. ((exists cfc_left_adjacent_currentcomputationfollowingcode cfc_right_adjacent_currentcomputationfollowingcode cfc_matrix_adjacent_currentcomputationfollowingcode. ((cfc_left_adjacent_currentcomputationfollowingcode = (((cfc_quotient_adjacent_currentcomputation * cfc_a_adjacent_currentcomputation + cfc_c_adjacent_currentcomputation)) + ((cfc_quotient_adjacent_currentcomputation * cfc_b_adjacent_currentcomputation + cfc_d_adjacent_currentcomputation))) * S (((cfc_quotient_adjacent_currentcomputation * cfc_a_adjacent_currentcomputation + cfc_c_adjacent_currentcomputation)) + ((cfc_quotient_adjacent_currentcomputation * cfc_b_adjacent_currentcomputation + cfc_d_adjacent_currentcomputation))) + (((cfc_quotient_adjacent_currentcomputation * cfc_b_adjacent_currentcomputation + cfc_d_adjacent_currentcomputation)) + ((cfc_quotient_adjacent_currentcomputation * cfc_b_adjacent_currentcomputation + cfc_d_adjacent_currentcomputation)))) /\ ((cfc_right_adjacent_currentcomputationfollowingcode = ((cfc_a_adjacent_currentcomputation) + (cfc_b_adjacent_currentcomputation)) * S ((cfc_a_adjacent_currentcomputation) + (cfc_b_adjacent_currentcomputation)) + ((cfc_b_adjacent_currentcomputation) + (cfc_b_adjacent_currentcomputation))) /\ ((cfc_matrix_adjacent_currentcomputationfollowingcode = ((cfc_left_adjacent_currentcomputationfollowingcode) + (cfc_right_adjacent_currentcomputationfollowingcode)) * S ((cfc_left_adjacent_currentcomputationfollowingcode) + (cfc_right_adjacent_currentcomputationfollowingcode)) + ((cfc_right_adjacent_currentcomputationfollowingcode) + (cfc_right_adjacent_currentcomputationfollowingcode))) /\ ((cfc_state_adjacent_currentcomputationfollowing) = ((cfc_new_adjacent_currentcomputation) + (cfc_matrix_adjacent_currentcomputationfollowingcode)) * S ((cfc_new_adjacent_currentcomputation) + (cfc_matrix_adjacent_currentcomputationfollowingcode)) + ((cfc_matrix_adjacent_currentcomputationfollowingcode) + (cfc_matrix_adjacent_currentcomputationfollowingcode))))))) /\ (((exists ff_h_adjacent_currentcomputationfollowingentry. ff_h_adjacent_currentcomputationfollowingentry + S (cfc_state_adjacent_currentcomputationfollowing) = S ((S (S cfc_index_adjacent_currentcomputation)) * cfc_scale_adjacent_current)) /\ exists ff_q_adjacent_currentcomputationfollowingentry. cfc_code_adjacent_current = ff_q_adjacent_currentcomputationfollowingentry * S ((S (S cfc_index_adjacent_currentcomputation)) * cfc_scale_adjacent_current) + (cfc_state_adjacent_currentcomputationfollowing))))) /\ (cfc_new_adjacent_currentcomputation = S ((cfc_quotient_adjacent_currentcomputation + cfc_old_adjacent_currentcomputation) * S (cfc_quotient_adjacent_currentcomputation + cfc_old_adjacent_currentcomputation) + (cfc_old_adjacent_currentcomputation + cfc_old_adjacent_currentcomputation))))))))))) -> (exists cfc_previous_numerator_adjacent_previous cfc_previous_denominator_adjacent_previous cfc_code_adjacent_previous cfc_scale_adjacent_previous. ((~(q = 0)) /\ (exists cfc_tail_adjacent_previouscomputation. ((exists cfc_state_adjacent_previouscomputationinitial. ((exists cfc_left_adjacent_previouscomputationinitialcode cfc_right_adjacent_previouscomputationinitialcode cfc_matrix_adjacent_previouscomputationinitialcode. ((cfc_left_adjacent_previouscomputationinitialcode = ((1) + (0)) * S ((1) + (0)) + ((0) + (0))) /\ ((cfc_right_adjacent_previouscomputationinitialcode = ((0) + (1)) * S ((0) + (1)) + ((1) + (1))) /\ ((cfc_matrix_adjacent_previouscomputationinitialcode = ((cfc_left_adjacent_previouscomputationinitialcode) + (cfc_right_adjacent_previouscomputationinitialcode)) * S ((cfc_left_adjacent_previouscomputationinitialcode) + (cfc_right_adjacent_previouscomputationinitialcode)) + ((cfc_right_adjacent_previouscomputationinitialcode) + (cfc_right_adjacent_previouscomputationinitialcode))) /\ ((cfc_state_adjacent_previouscomputationinitial) = ((cfc_tail_adjacent_previouscomputation) + (cfc_matrix_adjacent_previouscomputationinitialcode)) * S ((cfc_tail_adjacent_previouscomputation) + (cfc_matrix_adjacent_previouscomputationinitialcode)) + ((cfc_matrix_adjacent_previouscomputationinitialcode) + (cfc_matrix_adjacent_previouscomputationinitialcode))))))) /\ (((exists ff_h_adjacent_previouscomputationinitialentry. ff_h_adjacent_previouscomputationinitialentry + S (cfc_state_adjacent_previouscomputationinitial) = S ((S (0)) * cfc_scale_adjacent_previous)) /\ exists ff_q_adjacent_previouscomputationinitialentry. cfc_code_adjacent_previous = ff_q_adjacent_previouscomputationinitialentry * S ((S (0)) * cfc_scale_adjacent_previous) + (cfc_state_adjacent_previouscomputationinitial))))) /\ ((exists cfc_state_adjacent_previouscomputationterminal. ((exists cfc_left_adjacent_previouscomputationterminalcode cfc_right_adjacent_previouscomputationterminalcode cfc_matrix_adjacent_previouscomputationterminalcode. ((cfc_left_adjacent_previouscomputationterminalcode = ((p) + (cfc_previous_numerator_adjacent_previous)) * S ((p) + (cfc_previous_numerator_adjacent_previous)) + ((cfc_previous_numerator_adjacent_previous) + (cfc_previous_numerator_adjacent_previous))) /\ ((cfc_right_adjacent_previouscomputationterminalcode = ((q) + (cfc_previous_denominator_adjacent_previous)) * S ((q) + (cfc_previous_denominator_adjacent_previous)) + ((cfc_previous_denominator_adjacent_previous) + (cfc_previous_denominator_adjacent_previous))) /\ ((cfc_matrix_adjacent_previouscomputationterminalcode = ((cfc_left_adjacent_previouscomputationterminalcode) + (cfc_right_adjacent_previouscomputationterminalcode)) * S ((cfc_left_adjacent_previouscomputationterminalcode) + (cfc_right_adjacent_previouscomputationterminalcode)) + ((cfc_right_adjacent_previouscomputationterminalcode) + (cfc_right_adjacent_previouscomputationterminalcode))) /\ ((cfc_state_adjacent_previouscomputationterminal) = ((s) + (cfc_matrix_adjacent_previouscomputationterminalcode)) * S ((s) + (cfc_matrix_adjacent_previouscomputationterminalcode)) + ((cfc_matrix_adjacent_previouscomputationterminalcode) + (cfc_matrix_adjacent_previouscomputationterminalcode))))))) /\ (((exists ff_h_adjacent_previouscomputationterminalentry. ff_h_adjacent_previouscomputationterminalentry + S (cfc_state_adjacent_previouscomputationterminal) = S ((S (S (i))) * cfc_scale_adjacent_previous)) /\ exists ff_q_adjacent_previouscomputationterminalentry. cfc_code_adjacent_previous = ff_q_adjacent_previouscomputationterminalentry * S ((S (S (i))) * cfc_scale_adjacent_previous) + (cfc_state_adjacent_previouscomputationterminal))))) /\ (forall cfc_index_adjacent_previouscomputation. (exists cfba_gap_adjacent_previouscomputationbound. cfba_gap_adjacent_previouscomputationbound + S (cfc_index_adjacent_previouscomputation) = (S (i))) -> exists cfc_old_adjacent_previouscomputation cfc_a_adjacent_previouscomputation cfc_b_adjacent_previouscomputation cfc_c_adjacent_previouscomputation cfc_d_adjacent_previouscomputation cfc_new_adjacent_previouscomputation cfc_quotient_adjacent_previouscomputation. ((exists cfc_state_adjacent_previouscomputationprevious. ((exists cfc_left_adjacent_previouscomputationpreviouscode cfc_right_adjacent_previouscomputationpreviouscode cfc_matrix_adjacent_previouscomputationpreviouscode. ((cfc_left_adjacent_previouscomputationpreviouscode = ((cfc_a_adjacent_previouscomputation) + (cfc_b_adjacent_previouscomputation)) * S ((cfc_a_adjacent_previouscomputation) + (cfc_b_adjacent_previouscomputation)) + ((cfc_b_adjacent_previouscomputation) + (cfc_b_adjacent_previouscomputation))) /\ ((cfc_right_adjacent_previouscomputationpreviouscode = ((cfc_c_adjacent_previouscomputation) + (cfc_d_adjacent_previouscomputation)) * S ((cfc_c_adjacent_previouscomputation) + (cfc_d_adjacent_previouscomputation)) + ((cfc_d_adjacent_previouscomputation) + (cfc_d_adjacent_previouscomputation))) /\ ((cfc_matrix_adjacent_previouscomputationpreviouscode = ((cfc_left_adjacent_previouscomputationpreviouscode) + (cfc_right_adjacent_previouscomputationpreviouscode)) * S ((cfc_left_adjacent_previouscomputationpreviouscode) + (cfc_right_adjacent_previouscomputationpreviouscode)) + ((cfc_right_adjacent_previouscomputationpreviouscode) + (cfc_right_adjacent_previouscomputationpreviouscode))) /\ ((cfc_state_adjacent_previouscomputationprevious) = ((cfc_old_adjacent_previouscomputation) + (cfc_matrix_adjacent_previouscomputationpreviouscode)) * S ((cfc_old_adjacent_previouscomputation) + (cfc_matrix_adjacent_previouscomputationpreviouscode)) + ((cfc_matrix_adjacent_previouscomputationpreviouscode) + (cfc_matrix_adjacent_previouscomputationpreviouscode))))))) /\ (((exists ff_h_adjacent_previouscomputationpreviousentry. ff_h_adjacent_previouscomputationpreviousentry + S (cfc_state_adjacent_previouscomputationprevious) = S ((S (cfc_index_adjacent_previouscomputation)) * cfc_scale_adjacent_previous)) /\ exists ff_q_adjacent_previouscomputationpreviousentry. cfc_code_adjacent_previous = ff_q_adjacent_previouscomputationpreviousentry * S ((S (cfc_index_adjacent_previouscomputation)) * cfc_scale_adjacent_previous) + (cfc_state_adjacent_previouscomputationprevious))))) /\ ((exists cfc_state_adjacent_previouscomputationfollowing. ((exists cfc_left_adjacent_previouscomputationfollowingcode cfc_right_adjacent_previouscomputationfollowingcode cfc_matrix_adjacent_previouscomputationfollowingcode. ((cfc_left_adjacent_previouscomputationfollowingcode = (((cfc_quotient_adjacent_previouscomputation * cfc_a_adjacent_previouscomputation + cfc_c_adjacent_previouscomputation)) + ((cfc_quotient_adjacent_previouscomputation * cfc_b_adjacent_previouscomputation + cfc_d_adjacent_previouscomputation))) * S (((cfc_quotient_adjacent_previouscomputation * cfc_a_adjacent_previouscomputation + cfc_c_adjacent_previouscomputation)) + ((cfc_quotient_adjacent_previouscomputation * cfc_b_adjacent_previouscomputation + cfc_d_adjacent_previouscomputation))) + (((cfc_quotient_adjacent_previouscomputation * cfc_b_adjacent_previouscomputation + cfc_d_adjacent_previouscomputation)) + ((cfc_quotient_adjacent_previouscomputation * cfc_b_adjacent_previouscomputation + cfc_d_adjacent_previouscomputation)))) /\ ((cfc_right_adjacent_previouscomputationfollowingcode = ((cfc_a_adjacent_previouscomputation) + (cfc_b_adjacent_previouscomputation)) * S ((cfc_a_adjacent_previouscomputation) + (cfc_b_adjacent_previouscomputation)) + ((cfc_b_adjacent_previouscomputation) + (cfc_b_adjacent_previouscomputation))) /\ ((cfc_matrix_adjacent_previouscomputationfollowingcode = ((cfc_left_adjacent_previouscomputationfollowingcode) + (cfc_right_adjacent_previouscomputationfollowingcode)) * S ((cfc_left_adjacent_previouscomputationfollowingcode) + (cfc_right_adjacent_previouscomputationfollowingcode)) + ((cfc_right_adjacent_previouscomputationfollowingcode) + (cfc_right_adjacent_previouscomputationfollowingcode))) /\ ((cfc_state_adjacent_previouscomputationfollowing) = ((cfc_new_adjacent_previouscomputation) + (cfc_matrix_adjacent_previouscomputationfollowingcode)) * S ((cfc_new_adjacent_previouscomputation) + (cfc_matrix_adjacent_previouscomputationfollowingcode)) + ((cfc_matrix_adjacent_previouscomputationfollowingcode) + (cfc_matrix_adjacent_previouscomputationfollowingcode))))))) /\ (((exists ff_h_adjacent_previouscomputationfollowingentry. ff_h_adjacent_previouscomputationfollowingentry + S (cfc_state_adjacent_previouscomputationfollowing) = S ((S (S cfc_index_adjacent_previouscomputation)) * cfc_scale_adjacent_previous)) /\ exists ff_q_adjacent_previouscomputationfollowingentry. cfc_code_adjacent_previous = ff_q_adjacent_previouscomputationfollowingentry * S ((S (S cfc_index_adjacent_previouscomputation)) * cfc_scale_adjacent_previous) + (cfc_state_adjacent_previouscomputationfollowing))))) /\ (cfc_new_adjacent_previouscomputation = S ((cfc_quotient_adjacent_previouscomputation + cfc_old_adjacent_previouscomputation) * S (cfc_quotient_adjacent_previouscomputation + cfc_old_adjacent_previouscomputation) + (cfc_old_adjacent_previouscomputation + cfc_old_adjacent_previouscomputation))))))))))) -> (u * q + 1 = p * v \/ p * v + 1 = u * q)

Complete tactic proof in conservative notation

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

91 script commands · 14 reading checkpoints · 2 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 (4)
01Fix variables and assumptionsL1–10

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 i
  5. L5
    intro u
  6. L6
    intro v
  7. L7
    intro p
  8. L8
    intro q
  9. L9
    intro hcf
  10. L10
    intro hc
02Fix variables and assumptionsL11–11

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

  1. L11
    intro hv
03Separate the logical casesL12–21

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

  1. L12
    cases hcf
  2. L13
    cases hcf_witness
  3. L14
    cases hcf_witness_witness
  4. L15
    cases hcf_witness_witness_witness
  5. L16
    cases hcf_witness_witness_witness_witness
  6. L17
    cases hcf_witness_witness_witness_witness_witness
  7. L18
    cases hcf_witness_witness_witness_witness_witness_right
  8. L19
    cases hc
  9. L20
    cases hc_witness
  10. L21
    cases hc_witness_witness
04Separate the logical casesL22–28

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

  1. L22
    cases hc_witness_witness_witness
  2. L23
    cases hc_witness_witness_witness_witness
  3. L24
    cases hv
  4. L25
    cases hv_witness
  5. L26
    cases hv_witness_witness
  6. L27
    cases hv_witness_witness_witness
  7. L28
    cases hv_witness_witness_witness_witness
05Establish hpL29–38

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply cf convergent second column is previous prefix.

  1. L29
    have hp : ∃ cfc_h_adjacent_identification. ∃ cfc_e_adjacent_identification. ∃ cfc_p_adjacent_identification. ∃ cfc_q_adjacent_identification. ConvergentMatrixTrace(s,cfc_h_adjacent_identification,cfc_e_adjacent_identification,S i,x5,cfc_p_adjacent_identification,x6,cfc_q_adjacent_identification)Definitions: ConvergentMatrixTrace(s,cfc_h_adjacent_identification,cfc_e_adjacent_identification,S i,x5,cfc_p_adjacent_identification,x6,cfc_q_adjacent_identification)Original native command in the exact edition
  2. L30
    specialize cf_convergent_second_column_is_previous_prefix (S i)
  3. L31
    specialize cf_convergent_second_column_is_previous_prefix (s)
  4. L32
    specialize cf_convergent_second_column_is_previous_prefix (x7)
  5. L33
    specialize cf_convergent_second_column_is_previous_prefix (x8)
  6. L34
    specialize cf_convergent_second_column_is_previous_prefix (u)
  7. L35
    specialize cf_convergent_second_column_is_previous_prefix (x5)
  8. L36
    specialize cf_convergent_second_column_is_previous_prefix (v)
  9. L37
    specialize cf_convergent_second_column_is_previous_prefix (x6)
  10. L38
    apply cf_convergent_second_column_is_previous_prefix
06Use earlier factsL39–39

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

  1. L39
    exact hc_witness_witness_witness_witness_right
07Separate the logical casesL40–43

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

  1. L40
    cases hp
  2. L41
    cases hp_witness
  3. L42
    cases hp_witness_witness
  4. L43
    cases hp_witness_witness_witness
08Establish heqL44–53

Establish this local claim before using it. It is not an additional assumption.

  1. L44
    have heq : ((p = x5) /\ ((x9 = x15) /\ ((q = x6) /\ (x10 = x16))))
  2. L45
    specialize cf_convergent_matrix_prefix_functional (S i)
  3. L46
    specialize cf_convergent_matrix_prefix_functional (s)
  4. L47
    specialize cf_convergent_matrix_prefix_functional (x11)
  5. L48
    specialize cf_convergent_matrix_prefix_functional (x12)
  6. L49
    specialize cf_convergent_matrix_prefix_functional (x13)
  7. L50
    specialize cf_convergent_matrix_prefix_functional (x14)
  8. L51
    specialize cf_convergent_matrix_prefix_functional (p)
  9. L52
    specialize cf_convergent_matrix_prefix_functional (x9)
  10. L53
    specialize cf_convergent_matrix_prefix_functional (q)
09Use earlier factsL54–61

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

  1. L54
    specialize cf_convergent_matrix_prefix_functional (x10)
  2. L55
    specialize cf_convergent_matrix_prefix_functional (x5)
  3. L56
    specialize cf_convergent_matrix_prefix_functional (x15)
  4. L57
    specialize cf_convergent_matrix_prefix_functional (x6)
  5. L58
    specialize cf_convergent_matrix_prefix_functional (x16)
  6. L59
    apply cf_convergent_matrix_prefix_functional
  7. L60
    exact hv_witness_witness_witness_witness_right
  8. L61
    exact hp_witness_witness_witness_witness
10Separate the logical casesL62–64

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

  1. L62
    cases heq
  2. L63
    cases heq_right
  3. L64
    cases heq_right_right
11Calculate and transport equalitiesL65–68

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L65
    rewrite heq_left
  2. L66
    rewrite heq_left
  3. L67
    rewrite heq_right_right_left
  4. L68
    rewrite heq_right_right_left
12Use earlier factsL69–78

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

  1. L69
    specialize cf_approximation_derived_invariant_determinant (a)
  2. L70
    specialize cf_approximation_derived_invariant_determinant (b)
  3. L71
    specialize cf_approximation_derived_invariant_determinant (u)
  4. L72
    specialize cf_approximation_derived_invariant_determinant (x5)
  5. L73
    specialize cf_approximation_derived_invariant_determinant (v)
  6. L74
    specialize cf_approximation_derived_invariant_determinant (x6)
  7. L75
    apply cf_approximation_derived_invariant_determinant
  8. L76
    specialize cf_convergent_actual_prefix_error_invariant (S i)
  9. L77
    specialize cf_convergent_actual_prefix_error_invariant (a)
  10. L78
    specialize cf_convergent_actual_prefix_error_invariant (b)
13Use earlier factsL79–88

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

  1. L79
    specialize cf_convergent_actual_prefix_error_invariant (s)
  2. L80
    specialize cf_convergent_actual_prefix_error_invariant (x2)
  3. L81
    specialize cf_convergent_actual_prefix_error_invariant (x3)
  4. L82
    specialize cf_convergent_actual_prefix_error_invariant (S x4)
  5. L83
    specialize cf_convergent_actual_prefix_error_invariant (x7)
  6. L84
    specialize cf_convergent_actual_prefix_error_invariant (x8)
  7. L85
    specialize cf_convergent_actual_prefix_error_invariant (u)
  8. L86
    specialize cf_convergent_actual_prefix_error_invariant (x5)
  9. L87
    specialize cf_convergent_actual_prefix_error_invariant (v)
  10. L88
    specialize cf_convergent_actual_prefix_error_invariant (x6)
14Use earlier factsL89–91

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

  1. L89
    apply cf_convergent_actual_prefix_error_invariant
  2. L90
    exact hcf_witness_witness_witness_witness_witness_right_right
  3. L91
    exact hc_witness_witness_witness_witness_right

Library-wide reading audit

Original defined command ledger · 91 lines
  1. 0001intro a
  2. 0002intro b
  3. 0003intro s
  4. 0004intro i
  5. 0005intro u
  6. 0006intro v
  7. 0007intro p
  8. 0008intro q
  9. 0009intro hcf
  10. 0010intro hc
  11. 0011intro hv
  12. 0012cases hcf
  13. 0013cases hcf_witness
  14. 0014cases hcf_witness_witness
  15. 0015cases hcf_witness_witness_witness
  16. 0016cases hcf_witness_witness_witness_witness
  17. 0017cases hcf_witness_witness_witness_witness_witness
  18. 0018cases hcf_witness_witness_witness_witness_witness_right
  19. 0019cases hc
  20. 0020cases hc_witness
  21. 0021cases hc_witness_witness
  22. 0022cases hc_witness_witness_witness
  23. 0023cases hc_witness_witness_witness_witness
  24. 0024cases hv
  25. 0025cases hv_witness
  26. 0026cases hv_witness_witness
  27. 0027cases hv_witness_witness_witness
  28. 0028cases hv_witness_witness_witness_witness
  29. 0029have hp : ∃ cfc_h_adjacent_identification. ∃ cfc_e_adjacent_identification. ∃ cfc_p_adjacent_identification. ∃ cfc_q_adjacent_identification. ConvergentMatrixTrace(s,cfc_h_adjacent_identification,cfc_e_adjacent_identification,S i,x5,cfc_p_adjacent_identification,x6,cfc_q_adjacent_identification)
  30. 0030specialize cf_convergent_second_column_is_previous_prefix (S i)
  31. 0031specialize cf_convergent_second_column_is_previous_prefix (s)
  32. 0032specialize cf_convergent_second_column_is_previous_prefix (x7)
  33. 0033specialize cf_convergent_second_column_is_previous_prefix (x8)
  34. 0034specialize cf_convergent_second_column_is_previous_prefix (u)
  35. 0035specialize cf_convergent_second_column_is_previous_prefix (x5)
  36. 0036specialize cf_convergent_second_column_is_previous_prefix (v)
  37. 0037specialize cf_convergent_second_column_is_previous_prefix (x6)
  38. 0038apply cf_convergent_second_column_is_previous_prefix
  39. 0039exact hc_witness_witness_witness_witness_right
  40. 0040cases hp
  41. 0041cases hp_witness
  42. 0042cases hp_witness_witness
  43. 0043cases hp_witness_witness_witness
  44. 0044have heq : ((p = x5) /\ ((x9 = x15) /\ ((q = x6) /\ (x10 = x16))))
  45. 0045specialize cf_convergent_matrix_prefix_functional (S i)
  46. 0046specialize cf_convergent_matrix_prefix_functional (s)
  47. 0047specialize cf_convergent_matrix_prefix_functional (x11)
  48. 0048specialize cf_convergent_matrix_prefix_functional (x12)
  49. 0049specialize cf_convergent_matrix_prefix_functional (x13)
  50. 0050specialize cf_convergent_matrix_prefix_functional (x14)
  51. 0051specialize cf_convergent_matrix_prefix_functional (p)
  52. 0052specialize cf_convergent_matrix_prefix_functional (x9)
  53. 0053specialize cf_convergent_matrix_prefix_functional (q)
  54. 0054specialize cf_convergent_matrix_prefix_functional (x10)
  55. 0055specialize cf_convergent_matrix_prefix_functional (x5)
  56. 0056specialize cf_convergent_matrix_prefix_functional (x15)
  57. 0057specialize cf_convergent_matrix_prefix_functional (x6)
  58. 0058specialize cf_convergent_matrix_prefix_functional (x16)
  59. 0059apply cf_convergent_matrix_prefix_functional
  60. 0060exact hv_witness_witness_witness_witness_right
  61. 0061exact hp_witness_witness_witness_witness
  62. 0062cases heq
  63. 0063cases heq_right
  64. 0064cases heq_right_right
  65. 0065rewrite heq_left
  66. 0066rewrite heq_left
  67. 0067rewrite heq_right_right_left
  68. 0068rewrite heq_right_right_left
  69. 0069specialize cf_approximation_derived_invariant_determinant (a)
  70. 0070specialize cf_approximation_derived_invariant_determinant (b)
  71. 0071specialize cf_approximation_derived_invariant_determinant (u)
  72. 0072specialize cf_approximation_derived_invariant_determinant (x5)
  73. 0073specialize cf_approximation_derived_invariant_determinant (v)
  74. 0074specialize cf_approximation_derived_invariant_determinant (x6)
  75. 0075apply cf_approximation_derived_invariant_determinant
  76. 0076specialize cf_convergent_actual_prefix_error_invariant (S i)
  77. 0077specialize cf_convergent_actual_prefix_error_invariant (a)
  78. 0078specialize cf_convergent_actual_prefix_error_invariant (b)
  79. 0079specialize cf_convergent_actual_prefix_error_invariant (s)
  80. 0080specialize cf_convergent_actual_prefix_error_invariant (x2)
  81. 0081specialize cf_convergent_actual_prefix_error_invariant (x3)
  82. 0082specialize cf_convergent_actual_prefix_error_invariant (S x4)
  83. 0083specialize cf_convergent_actual_prefix_error_invariant (x7)
  84. 0084specialize cf_convergent_actual_prefix_error_invariant (x8)
  85. 0085specialize cf_convergent_actual_prefix_error_invariant (u)
  86. 0086specialize cf_convergent_actual_prefix_error_invariant (x5)
  87. 0087specialize cf_convergent_actual_prefix_error_invariant (v)
  88. 0088specialize cf_convergent_actual_prefix_error_invariant (x6)
  89. 0089apply cf_convergent_actual_prefix_error_invariant
  90. 0090exact hcf_witness_witness_witness_witness_witness_right_right
  91. 0091exact hc_witness_witness_witness_witness_right