LU0014 · theorem body

lucas_low_digit_product_congruence

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

The full quotient-times-digit Lucas product formula is kernel-checked whenever the lower quotient is zero, for unrestricted upper quotient.

Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved. Exact original first-admission records.

Statement with defined notation

∀ p. ∀ q. ∀ d. ∀ e. ∀ C. ∀ A. ∀ B. Prime(p)Lt(d,p)Lt(e,p)Choose(p · q + d,e,C)Choose(q,0,A)Choose(d,e,B)ModEq(p,C,A · B)

Every purple notation token opens its conservative definition. This reading surface never changes the unchanged intuitionistic kernel or confers checked-use authority.

Definitions used by this theorem

In the theorem statement

In local proof propositions

none
Exact expanded first-order statement
forall p q d e C A B. ((~(p = 1) /\ forall frm_prime_left_lucas_low_digit_prime frm_prime_right_lucas_low_digit_prime. p = frm_prime_left_lucas_low_digit_prime * frm_prime_right_lucas_low_digit_prime -> frm_prime_left_lucas_low_digit_prime = 1 \/ frm_prime_right_lucas_low_digit_prime = 1)) -> (exists lld_gap_product_upper_bound. lld_gap_product_upper_bound + S (d) = (p)) -> (exists lld_gap_product_lower_bound. lld_gap_product_lower_bound + S (e) = (p)) -> (((exists bcf_lt_gap_lucas_low_digit_product_upper_out_of_range. bcf_lt_gap_lucas_low_digit_product_upper_out_of_range + S (p * q + d) = e) /\ C = 0) \/ ((exists bcf_le_gap_lucas_low_digit_product_upper_in_range. bcf_le_gap_lucas_low_digit_product_upper_in_range + (e) = p * q + d) /\ (exists bcf_row_code_code_lucas_low_digit_product_upper bcf_row_code_scale_lucas_low_digit_product_upper bcf_row_scale_code_lucas_low_digit_product_upper bcf_row_scale_scale_lucas_low_digit_product_upper bcf_row_code_lucas_low_digit_product_upper bcf_row_scale_lucas_low_digit_product_upper. ((forall bcf_row_index_lucas_low_digit_product_upper_table. (exists bcf_lt_gap_lucas_low_digit_product_upper_table_row_bound. bcf_lt_gap_lucas_low_digit_product_upper_table_row_bound + S (bcf_row_index_lucas_low_digit_product_upper_table) = S (p * q + d)) -> exists bcf_row_code_lucas_low_digit_product_upper_table bcf_row_scale_lucas_low_digit_product_upper_table. ((((exists bcf_height_lucas_low_digit_product_upper_table_decoded_row_code. bcf_height_lucas_low_digit_product_upper_table_decoded_row_code + S (bcf_row_code_lucas_low_digit_product_upper_table) = S ((S (bcf_row_index_lucas_low_digit_product_upper_table)) * bcf_row_code_scale_lucas_low_digit_product_upper)) /\ exists bcf_quotient_lucas_low_digit_product_upper_table_decoded_row_code. bcf_row_code_code_lucas_low_digit_product_upper = bcf_quotient_lucas_low_digit_product_upper_table_decoded_row_code * S ((S (bcf_row_index_lucas_low_digit_product_upper_table)) * bcf_row_code_scale_lucas_low_digit_product_upper) + (bcf_row_code_lucas_low_digit_product_upper_table))) /\ ((((exists bcf_height_lucas_low_digit_product_upper_table_decoded_row_scale. bcf_height_lucas_low_digit_product_upper_table_decoded_row_scale + S (bcf_row_scale_lucas_low_digit_product_upper_table) = S ((S (bcf_row_index_lucas_low_digit_product_upper_table)) * bcf_row_scale_scale_lucas_low_digit_product_upper)) /\ exists bcf_quotient_lucas_low_digit_product_upper_table_decoded_row_scale. bcf_row_scale_code_lucas_low_digit_product_upper = bcf_quotient_lucas_low_digit_product_upper_table_decoded_row_scale * S ((S (bcf_row_index_lucas_low_digit_product_upper_table)) * bcf_row_scale_scale_lucas_low_digit_product_upper) + (bcf_row_scale_lucas_low_digit_product_upper_table))) /\ ((bcf_row_index_lucas_low_digit_product_upper_table = 0 /\ (forall bcf_index_lucas_low_digit_product_upper_table_zero_row. (exists bcf_lt_gap_lucas_low_digit_product_upper_table_zero_row_bound. bcf_lt_gap_lucas_low_digit_product_upper_table_zero_row_bound + S (bcf_index_lucas_low_digit_product_upper_table_zero_row) = S (p * q + d)) -> exists bcf_value_lucas_low_digit_product_upper_table_zero_row. ((((exists bcf_height_lucas_low_digit_product_upper_table_zero_row_entry. bcf_height_lucas_low_digit_product_upper_table_zero_row_entry + S (bcf_value_lucas_low_digit_product_upper_table_zero_row) = S ((S (bcf_index_lucas_low_digit_product_upper_table_zero_row)) * bcf_row_scale_lucas_low_digit_product_upper_table)) /\ exists bcf_quotient_lucas_low_digit_product_upper_table_zero_row_entry. bcf_row_code_lucas_low_digit_product_upper_table = bcf_quotient_lucas_low_digit_product_upper_table_zero_row_entry * S ((S (bcf_index_lucas_low_digit_product_upper_table_zero_row)) * bcf_row_scale_lucas_low_digit_product_upper_table) + (bcf_value_lucas_low_digit_product_upper_table_zero_row))) /\ ((bcf_index_lucas_low_digit_product_upper_table_zero_row = 0 /\ bcf_value_lucas_low_digit_product_upper_table_zero_row = 1) \/ exists bcf_predecessor_lucas_low_digit_product_upper_table_zero_row. bcf_index_lucas_low_digit_product_upper_table_zero_row = S bcf_predecessor_lucas_low_digit_product_upper_table_zero_row /\ bcf_value_lucas_low_digit_product_upper_table_zero_row = 0)))) \/ exists bcf_predecessor_lucas_low_digit_product_upper_table bcf_previous_code_lucas_low_digit_product_upper_table bcf_previous_scale_lucas_low_digit_product_upper_table. bcf_row_index_lucas_low_digit_product_upper_table = S bcf_predecessor_lucas_low_digit_product_upper_table /\ ((((exists bcf_height_lucas_low_digit_product_upper_table_decoded_previous_code. bcf_height_lucas_low_digit_product_upper_table_decoded_previous_code + S (bcf_previous_code_lucas_low_digit_product_upper_table) = S ((S (bcf_predecessor_lucas_low_digit_product_upper_table)) * bcf_row_code_scale_lucas_low_digit_product_upper)) /\ exists bcf_quotient_lucas_low_digit_product_upper_table_decoded_previous_code. bcf_row_code_code_lucas_low_digit_product_upper = bcf_quotient_lucas_low_digit_product_upper_table_decoded_previous_code * S ((S (bcf_predecessor_lucas_low_digit_product_upper_table)) * bcf_row_code_scale_lucas_low_digit_product_upper) + (bcf_previous_code_lucas_low_digit_product_upper_table))) /\ ((((exists bcf_height_lucas_low_digit_product_upper_table_decoded_previous_scale. bcf_height_lucas_low_digit_product_upper_table_decoded_previous_scale + S (bcf_previous_scale_lucas_low_digit_product_upper_table) = S ((S (bcf_predecessor_lucas_low_digit_product_upper_table)) * bcf_row_scale_scale_lucas_low_digit_product_upper)) /\ exists bcf_quotient_lucas_low_digit_product_upper_table_decoded_previous_scale. bcf_row_scale_code_lucas_low_digit_product_upper = bcf_quotient_lucas_low_digit_product_upper_table_decoded_previous_scale * S ((S (bcf_predecessor_lucas_low_digit_product_upper_table)) * bcf_row_scale_scale_lucas_low_digit_product_upper) + (bcf_previous_scale_lucas_low_digit_product_upper_table))) /\ (forall bcf_index_lucas_low_digit_product_upper_table_row_step. (exists bcf_lt_gap_lucas_low_digit_product_upper_table_row_step_bound. bcf_lt_gap_lucas_low_digit_product_upper_table_row_step_bound + S (bcf_index_lucas_low_digit_product_upper_table_row_step) = S (p * q + d)) -> exists bcf_value_lucas_low_digit_product_upper_table_row_step. ((((exists bcf_height_lucas_low_digit_product_upper_table_row_step_entry. bcf_height_lucas_low_digit_product_upper_table_row_step_entry + S (bcf_value_lucas_low_digit_product_upper_table_row_step) = S ((S (bcf_index_lucas_low_digit_product_upper_table_row_step)) * bcf_row_scale_lucas_low_digit_product_upper_table)) /\ exists bcf_quotient_lucas_low_digit_product_upper_table_row_step_entry. bcf_row_code_lucas_low_digit_product_upper_table = bcf_quotient_lucas_low_digit_product_upper_table_row_step_entry * S ((S (bcf_index_lucas_low_digit_product_upper_table_row_step)) * bcf_row_scale_lucas_low_digit_product_upper_table) + (bcf_value_lucas_low_digit_product_upper_table_row_step))) /\ ((bcf_index_lucas_low_digit_product_upper_table_row_step = 0 /\ bcf_value_lucas_low_digit_product_upper_table_row_step = 1) \/ exists bcf_predecessor_lucas_low_digit_product_upper_table_row_step bcf_left_lucas_low_digit_product_upper_table_row_step bcf_right_lucas_low_digit_product_upper_table_row_step. bcf_index_lucas_low_digit_product_upper_table_row_step = S bcf_predecessor_lucas_low_digit_product_upper_table_row_step /\ ((((exists bcf_height_lucas_low_digit_product_upper_table_row_step_previous_left. bcf_height_lucas_low_digit_product_upper_table_row_step_previous_left + S (bcf_left_lucas_low_digit_product_upper_table_row_step) = S ((S (bcf_predecessor_lucas_low_digit_product_upper_table_row_step)) * bcf_previous_scale_lucas_low_digit_product_upper_table)) /\ exists bcf_quotient_lucas_low_digit_product_upper_table_row_step_previous_left. bcf_previous_code_lucas_low_digit_product_upper_table = bcf_quotient_lucas_low_digit_product_upper_table_row_step_previous_left * S ((S (bcf_predecessor_lucas_low_digit_product_upper_table_row_step)) * bcf_previous_scale_lucas_low_digit_product_upper_table) + (bcf_left_lucas_low_digit_product_upper_table_row_step))) /\ ((((exists bcf_height_lucas_low_digit_product_upper_table_row_step_previous_right. bcf_height_lucas_low_digit_product_upper_table_row_step_previous_right + S (bcf_right_lucas_low_digit_product_upper_table_row_step) = S ((S (S (bcf_predecessor_lucas_low_digit_product_upper_table_row_step))) * bcf_previous_scale_lucas_low_digit_product_upper_table)) /\ exists bcf_quotient_lucas_low_digit_product_upper_table_row_step_previous_right. bcf_previous_code_lucas_low_digit_product_upper_table = bcf_quotient_lucas_low_digit_product_upper_table_row_step_previous_right * S ((S (S (bcf_predecessor_lucas_low_digit_product_upper_table_row_step))) * bcf_previous_scale_lucas_low_digit_product_upper_table) + (bcf_right_lucas_low_digit_product_upper_table_row_step))) /\ bcf_value_lucas_low_digit_product_upper_table_row_step = bcf_left_lucas_low_digit_product_upper_table_row_step + bcf_right_lucas_low_digit_product_upper_table_row_step))))))))))) /\ ((((exists bcf_height_lucas_low_digit_product_upper_decoded_row_code. bcf_height_lucas_low_digit_product_upper_decoded_row_code + S (bcf_row_code_lucas_low_digit_product_upper) = S ((S (p * q + d)) * bcf_row_code_scale_lucas_low_digit_product_upper)) /\ exists bcf_quotient_lucas_low_digit_product_upper_decoded_row_code. bcf_row_code_code_lucas_low_digit_product_upper = bcf_quotient_lucas_low_digit_product_upper_decoded_row_code * S ((S (p * q + d)) * bcf_row_code_scale_lucas_low_digit_product_upper) + (bcf_row_code_lucas_low_digit_product_upper))) /\ ((((exists bcf_height_lucas_low_digit_product_upper_decoded_row_scale. bcf_height_lucas_low_digit_product_upper_decoded_row_scale + S (bcf_row_scale_lucas_low_digit_product_upper) = S ((S (p * q + d)) * bcf_row_scale_scale_lucas_low_digit_product_upper)) /\ exists bcf_quotient_lucas_low_digit_product_upper_decoded_row_scale. bcf_row_scale_code_lucas_low_digit_product_upper = bcf_quotient_lucas_low_digit_product_upper_decoded_row_scale * S ((S (p * q + d)) * bcf_row_scale_scale_lucas_low_digit_product_upper) + (bcf_row_scale_lucas_low_digit_product_upper))) /\ (((exists bcf_height_lucas_low_digit_product_upper_decoded_value. bcf_height_lucas_low_digit_product_upper_decoded_value + S (C) = S ((S (e)) * bcf_row_scale_lucas_low_digit_product_upper)) /\ exists bcf_quotient_lucas_low_digit_product_upper_decoded_value. bcf_row_code_lucas_low_digit_product_upper = bcf_quotient_lucas_low_digit_product_upper_decoded_value * S ((S (e)) * bcf_row_scale_lucas_low_digit_product_upper) + (C))))))))) -> (((exists bcf_lt_gap_lucas_low_digit_product_quotient_out_of_range. bcf_lt_gap_lucas_low_digit_product_quotient_out_of_range + S (q) = 0) /\ A = 0) \/ ((exists bcf_le_gap_lucas_low_digit_product_quotient_in_range. bcf_le_gap_lucas_low_digit_product_quotient_in_range + (0) = q) /\ (exists bcf_row_code_code_lucas_low_digit_product_quotient bcf_row_code_scale_lucas_low_digit_product_quotient bcf_row_scale_code_lucas_low_digit_product_quotient bcf_row_scale_scale_lucas_low_digit_product_quotient bcf_row_code_lucas_low_digit_product_quotient bcf_row_scale_lucas_low_digit_product_quotient. ((forall bcf_row_index_lucas_low_digit_product_quotient_table. (exists bcf_lt_gap_lucas_low_digit_product_quotient_table_row_bound. bcf_lt_gap_lucas_low_digit_product_quotient_table_row_bound + S (bcf_row_index_lucas_low_digit_product_quotient_table) = S (q)) -> exists bcf_row_code_lucas_low_digit_product_quotient_table bcf_row_scale_lucas_low_digit_product_quotient_table. ((((exists bcf_height_lucas_low_digit_product_quotient_table_decoded_row_code. bcf_height_lucas_low_digit_product_quotient_table_decoded_row_code + S (bcf_row_code_lucas_low_digit_product_quotient_table) = S ((S (bcf_row_index_lucas_low_digit_product_quotient_table)) * bcf_row_code_scale_lucas_low_digit_product_quotient)) /\ exists bcf_quotient_lucas_low_digit_product_quotient_table_decoded_row_code. bcf_row_code_code_lucas_low_digit_product_quotient = bcf_quotient_lucas_low_digit_product_quotient_table_decoded_row_code * S ((S (bcf_row_index_lucas_low_digit_product_quotient_table)) * bcf_row_code_scale_lucas_low_digit_product_quotient) + (bcf_row_code_lucas_low_digit_product_quotient_table))) /\ ((((exists bcf_height_lucas_low_digit_product_quotient_table_decoded_row_scale. bcf_height_lucas_low_digit_product_quotient_table_decoded_row_scale + S (bcf_row_scale_lucas_low_digit_product_quotient_table) = S ((S (bcf_row_index_lucas_low_digit_product_quotient_table)) * bcf_row_scale_scale_lucas_low_digit_product_quotient)) /\ exists bcf_quotient_lucas_low_digit_product_quotient_table_decoded_row_scale. bcf_row_scale_code_lucas_low_digit_product_quotient = bcf_quotient_lucas_low_digit_product_quotient_table_decoded_row_scale * S ((S (bcf_row_index_lucas_low_digit_product_quotient_table)) * bcf_row_scale_scale_lucas_low_digit_product_quotient) + (bcf_row_scale_lucas_low_digit_product_quotient_table))) /\ ((bcf_row_index_lucas_low_digit_product_quotient_table = 0 /\ (forall bcf_index_lucas_low_digit_product_quotient_table_zero_row. (exists bcf_lt_gap_lucas_low_digit_product_quotient_table_zero_row_bound. bcf_lt_gap_lucas_low_digit_product_quotient_table_zero_row_bound + S (bcf_index_lucas_low_digit_product_quotient_table_zero_row) = S (q)) -> exists bcf_value_lucas_low_digit_product_quotient_table_zero_row. ((((exists bcf_height_lucas_low_digit_product_quotient_table_zero_row_entry. bcf_height_lucas_low_digit_product_quotient_table_zero_row_entry + S (bcf_value_lucas_low_digit_product_quotient_table_zero_row) = S ((S (bcf_index_lucas_low_digit_product_quotient_table_zero_row)) * bcf_row_scale_lucas_low_digit_product_quotient_table)) /\ exists bcf_quotient_lucas_low_digit_product_quotient_table_zero_row_entry. bcf_row_code_lucas_low_digit_product_quotient_table = bcf_quotient_lucas_low_digit_product_quotient_table_zero_row_entry * S ((S (bcf_index_lucas_low_digit_product_quotient_table_zero_row)) * bcf_row_scale_lucas_low_digit_product_quotient_table) + (bcf_value_lucas_low_digit_product_quotient_table_zero_row))) /\ ((bcf_index_lucas_low_digit_product_quotient_table_zero_row = 0 /\ bcf_value_lucas_low_digit_product_quotient_table_zero_row = 1) \/ exists bcf_predecessor_lucas_low_digit_product_quotient_table_zero_row. bcf_index_lucas_low_digit_product_quotient_table_zero_row = S bcf_predecessor_lucas_low_digit_product_quotient_table_zero_row /\ bcf_value_lucas_low_digit_product_quotient_table_zero_row = 0)))) \/ exists bcf_predecessor_lucas_low_digit_product_quotient_table bcf_previous_code_lucas_low_digit_product_quotient_table bcf_previous_scale_lucas_low_digit_product_quotient_table. bcf_row_index_lucas_low_digit_product_quotient_table = S bcf_predecessor_lucas_low_digit_product_quotient_table /\ ((((exists bcf_height_lucas_low_digit_product_quotient_table_decoded_previous_code. bcf_height_lucas_low_digit_product_quotient_table_decoded_previous_code + S (bcf_previous_code_lucas_low_digit_product_quotient_table) = S ((S (bcf_predecessor_lucas_low_digit_product_quotient_table)) * bcf_row_code_scale_lucas_low_digit_product_quotient)) /\ exists bcf_quotient_lucas_low_digit_product_quotient_table_decoded_previous_code. bcf_row_code_code_lucas_low_digit_product_quotient = bcf_quotient_lucas_low_digit_product_quotient_table_decoded_previous_code * S ((S (bcf_predecessor_lucas_low_digit_product_quotient_table)) * bcf_row_code_scale_lucas_low_digit_product_quotient) + (bcf_previous_code_lucas_low_digit_product_quotient_table))) /\ ((((exists bcf_height_lucas_low_digit_product_quotient_table_decoded_previous_scale. bcf_height_lucas_low_digit_product_quotient_table_decoded_previous_scale + S (bcf_previous_scale_lucas_low_digit_product_quotient_table) = S ((S (bcf_predecessor_lucas_low_digit_product_quotient_table)) * bcf_row_scale_scale_lucas_low_digit_product_quotient)) /\ exists bcf_quotient_lucas_low_digit_product_quotient_table_decoded_previous_scale. bcf_row_scale_code_lucas_low_digit_product_quotient = bcf_quotient_lucas_low_digit_product_quotient_table_decoded_previous_scale * S ((S (bcf_predecessor_lucas_low_digit_product_quotient_table)) * bcf_row_scale_scale_lucas_low_digit_product_quotient) + (bcf_previous_scale_lucas_low_digit_product_quotient_table))) /\ (forall bcf_index_lucas_low_digit_product_quotient_table_row_step. (exists bcf_lt_gap_lucas_low_digit_product_quotient_table_row_step_bound. bcf_lt_gap_lucas_low_digit_product_quotient_table_row_step_bound + S (bcf_index_lucas_low_digit_product_quotient_table_row_step) = S (q)) -> exists bcf_value_lucas_low_digit_product_quotient_table_row_step. ((((exists bcf_height_lucas_low_digit_product_quotient_table_row_step_entry. bcf_height_lucas_low_digit_product_quotient_table_row_step_entry + S (bcf_value_lucas_low_digit_product_quotient_table_row_step) = S ((S (bcf_index_lucas_low_digit_product_quotient_table_row_step)) * bcf_row_scale_lucas_low_digit_product_quotient_table)) /\ exists bcf_quotient_lucas_low_digit_product_quotient_table_row_step_entry. bcf_row_code_lucas_low_digit_product_quotient_table = bcf_quotient_lucas_low_digit_product_quotient_table_row_step_entry * S ((S (bcf_index_lucas_low_digit_product_quotient_table_row_step)) * bcf_row_scale_lucas_low_digit_product_quotient_table) + (bcf_value_lucas_low_digit_product_quotient_table_row_step))) /\ ((bcf_index_lucas_low_digit_product_quotient_table_row_step = 0 /\ bcf_value_lucas_low_digit_product_quotient_table_row_step = 1) \/ exists bcf_predecessor_lucas_low_digit_product_quotient_table_row_step bcf_left_lucas_low_digit_product_quotient_table_row_step bcf_right_lucas_low_digit_product_quotient_table_row_step. bcf_index_lucas_low_digit_product_quotient_table_row_step = S bcf_predecessor_lucas_low_digit_product_quotient_table_row_step /\ ((((exists bcf_height_lucas_low_digit_product_quotient_table_row_step_previous_left. bcf_height_lucas_low_digit_product_quotient_table_row_step_previous_left + S (bcf_left_lucas_low_digit_product_quotient_table_row_step) = S ((S (bcf_predecessor_lucas_low_digit_product_quotient_table_row_step)) * bcf_previous_scale_lucas_low_digit_product_quotient_table)) /\ exists bcf_quotient_lucas_low_digit_product_quotient_table_row_step_previous_left. bcf_previous_code_lucas_low_digit_product_quotient_table = bcf_quotient_lucas_low_digit_product_quotient_table_row_step_previous_left * S ((S (bcf_predecessor_lucas_low_digit_product_quotient_table_row_step)) * bcf_previous_scale_lucas_low_digit_product_quotient_table) + (bcf_left_lucas_low_digit_product_quotient_table_row_step))) /\ ((((exists bcf_height_lucas_low_digit_product_quotient_table_row_step_previous_right. bcf_height_lucas_low_digit_product_quotient_table_row_step_previous_right + S (bcf_right_lucas_low_digit_product_quotient_table_row_step) = S ((S (S (bcf_predecessor_lucas_low_digit_product_quotient_table_row_step))) * bcf_previous_scale_lucas_low_digit_product_quotient_table)) /\ exists bcf_quotient_lucas_low_digit_product_quotient_table_row_step_previous_right. bcf_previous_code_lucas_low_digit_product_quotient_table = bcf_quotient_lucas_low_digit_product_quotient_table_row_step_previous_right * S ((S (S (bcf_predecessor_lucas_low_digit_product_quotient_table_row_step))) * bcf_previous_scale_lucas_low_digit_product_quotient_table) + (bcf_right_lucas_low_digit_product_quotient_table_row_step))) /\ bcf_value_lucas_low_digit_product_quotient_table_row_step = bcf_left_lucas_low_digit_product_quotient_table_row_step + bcf_right_lucas_low_digit_product_quotient_table_row_step))))))))))) /\ ((((exists bcf_height_lucas_low_digit_product_quotient_decoded_row_code. bcf_height_lucas_low_digit_product_quotient_decoded_row_code + S (bcf_row_code_lucas_low_digit_product_quotient) = S ((S (q)) * bcf_row_code_scale_lucas_low_digit_product_quotient)) /\ exists bcf_quotient_lucas_low_digit_product_quotient_decoded_row_code. bcf_row_code_code_lucas_low_digit_product_quotient = bcf_quotient_lucas_low_digit_product_quotient_decoded_row_code * S ((S (q)) * bcf_row_code_scale_lucas_low_digit_product_quotient) + (bcf_row_code_lucas_low_digit_product_quotient))) /\ ((((exists bcf_height_lucas_low_digit_product_quotient_decoded_row_scale. bcf_height_lucas_low_digit_product_quotient_decoded_row_scale + S (bcf_row_scale_lucas_low_digit_product_quotient) = S ((S (q)) * bcf_row_scale_scale_lucas_low_digit_product_quotient)) /\ exists bcf_quotient_lucas_low_digit_product_quotient_decoded_row_scale. bcf_row_scale_code_lucas_low_digit_product_quotient = bcf_quotient_lucas_low_digit_product_quotient_decoded_row_scale * S ((S (q)) * bcf_row_scale_scale_lucas_low_digit_product_quotient) + (bcf_row_scale_lucas_low_digit_product_quotient))) /\ (((exists bcf_height_lucas_low_digit_product_quotient_decoded_value. bcf_height_lucas_low_digit_product_quotient_decoded_value + S (A) = S ((S (0)) * bcf_row_scale_lucas_low_digit_product_quotient)) /\ exists bcf_quotient_lucas_low_digit_product_quotient_decoded_value. bcf_row_code_lucas_low_digit_product_quotient = bcf_quotient_lucas_low_digit_product_quotient_decoded_value * S ((S (0)) * bcf_row_scale_lucas_low_digit_product_quotient) + (A))))))))) -> (((exists bcf_lt_gap_lucas_low_digit_product_digit_out_of_range. bcf_lt_gap_lucas_low_digit_product_digit_out_of_range + S (d) = e) /\ B = 0) \/ ((exists bcf_le_gap_lucas_low_digit_product_digit_in_range. bcf_le_gap_lucas_low_digit_product_digit_in_range + (e) = d) /\ (exists bcf_row_code_code_lucas_low_digit_product_digit bcf_row_code_scale_lucas_low_digit_product_digit bcf_row_scale_code_lucas_low_digit_product_digit bcf_row_scale_scale_lucas_low_digit_product_digit bcf_row_code_lucas_low_digit_product_digit bcf_row_scale_lucas_low_digit_product_digit. ((forall bcf_row_index_lucas_low_digit_product_digit_table. (exists bcf_lt_gap_lucas_low_digit_product_digit_table_row_bound. bcf_lt_gap_lucas_low_digit_product_digit_table_row_bound + S (bcf_row_index_lucas_low_digit_product_digit_table) = S (d)) -> exists bcf_row_code_lucas_low_digit_product_digit_table bcf_row_scale_lucas_low_digit_product_digit_table. ((((exists bcf_height_lucas_low_digit_product_digit_table_decoded_row_code. bcf_height_lucas_low_digit_product_digit_table_decoded_row_code + S (bcf_row_code_lucas_low_digit_product_digit_table) = S ((S (bcf_row_index_lucas_low_digit_product_digit_table)) * bcf_row_code_scale_lucas_low_digit_product_digit)) /\ exists bcf_quotient_lucas_low_digit_product_digit_table_decoded_row_code. bcf_row_code_code_lucas_low_digit_product_digit = bcf_quotient_lucas_low_digit_product_digit_table_decoded_row_code * S ((S (bcf_row_index_lucas_low_digit_product_digit_table)) * bcf_row_code_scale_lucas_low_digit_product_digit) + (bcf_row_code_lucas_low_digit_product_digit_table))) /\ ((((exists bcf_height_lucas_low_digit_product_digit_table_decoded_row_scale. bcf_height_lucas_low_digit_product_digit_table_decoded_row_scale + S (bcf_row_scale_lucas_low_digit_product_digit_table) = S ((S (bcf_row_index_lucas_low_digit_product_digit_table)) * bcf_row_scale_scale_lucas_low_digit_product_digit)) /\ exists bcf_quotient_lucas_low_digit_product_digit_table_decoded_row_scale. bcf_row_scale_code_lucas_low_digit_product_digit = bcf_quotient_lucas_low_digit_product_digit_table_decoded_row_scale * S ((S (bcf_row_index_lucas_low_digit_product_digit_table)) * bcf_row_scale_scale_lucas_low_digit_product_digit) + (bcf_row_scale_lucas_low_digit_product_digit_table))) /\ ((bcf_row_index_lucas_low_digit_product_digit_table = 0 /\ (forall bcf_index_lucas_low_digit_product_digit_table_zero_row. (exists bcf_lt_gap_lucas_low_digit_product_digit_table_zero_row_bound. bcf_lt_gap_lucas_low_digit_product_digit_table_zero_row_bound + S (bcf_index_lucas_low_digit_product_digit_table_zero_row) = S (d)) -> exists bcf_value_lucas_low_digit_product_digit_table_zero_row. ((((exists bcf_height_lucas_low_digit_product_digit_table_zero_row_entry. bcf_height_lucas_low_digit_product_digit_table_zero_row_entry + S (bcf_value_lucas_low_digit_product_digit_table_zero_row) = S ((S (bcf_index_lucas_low_digit_product_digit_table_zero_row)) * bcf_row_scale_lucas_low_digit_product_digit_table)) /\ exists bcf_quotient_lucas_low_digit_product_digit_table_zero_row_entry. bcf_row_code_lucas_low_digit_product_digit_table = bcf_quotient_lucas_low_digit_product_digit_table_zero_row_entry * S ((S (bcf_index_lucas_low_digit_product_digit_table_zero_row)) * bcf_row_scale_lucas_low_digit_product_digit_table) + (bcf_value_lucas_low_digit_product_digit_table_zero_row))) /\ ((bcf_index_lucas_low_digit_product_digit_table_zero_row = 0 /\ bcf_value_lucas_low_digit_product_digit_table_zero_row = 1) \/ exists bcf_predecessor_lucas_low_digit_product_digit_table_zero_row. bcf_index_lucas_low_digit_product_digit_table_zero_row = S bcf_predecessor_lucas_low_digit_product_digit_table_zero_row /\ bcf_value_lucas_low_digit_product_digit_table_zero_row = 0)))) \/ exists bcf_predecessor_lucas_low_digit_product_digit_table bcf_previous_code_lucas_low_digit_product_digit_table bcf_previous_scale_lucas_low_digit_product_digit_table. bcf_row_index_lucas_low_digit_product_digit_table = S bcf_predecessor_lucas_low_digit_product_digit_table /\ ((((exists bcf_height_lucas_low_digit_product_digit_table_decoded_previous_code. bcf_height_lucas_low_digit_product_digit_table_decoded_previous_code + S (bcf_previous_code_lucas_low_digit_product_digit_table) = S ((S (bcf_predecessor_lucas_low_digit_product_digit_table)) * bcf_row_code_scale_lucas_low_digit_product_digit)) /\ exists bcf_quotient_lucas_low_digit_product_digit_table_decoded_previous_code. bcf_row_code_code_lucas_low_digit_product_digit = bcf_quotient_lucas_low_digit_product_digit_table_decoded_previous_code * S ((S (bcf_predecessor_lucas_low_digit_product_digit_table)) * bcf_row_code_scale_lucas_low_digit_product_digit) + (bcf_previous_code_lucas_low_digit_product_digit_table))) /\ ((((exists bcf_height_lucas_low_digit_product_digit_table_decoded_previous_scale. bcf_height_lucas_low_digit_product_digit_table_decoded_previous_scale + S (bcf_previous_scale_lucas_low_digit_product_digit_table) = S ((S (bcf_predecessor_lucas_low_digit_product_digit_table)) * bcf_row_scale_scale_lucas_low_digit_product_digit)) /\ exists bcf_quotient_lucas_low_digit_product_digit_table_decoded_previous_scale. bcf_row_scale_code_lucas_low_digit_product_digit = bcf_quotient_lucas_low_digit_product_digit_table_decoded_previous_scale * S ((S (bcf_predecessor_lucas_low_digit_product_digit_table)) * bcf_row_scale_scale_lucas_low_digit_product_digit) + (bcf_previous_scale_lucas_low_digit_product_digit_table))) /\ (forall bcf_index_lucas_low_digit_product_digit_table_row_step. (exists bcf_lt_gap_lucas_low_digit_product_digit_table_row_step_bound. bcf_lt_gap_lucas_low_digit_product_digit_table_row_step_bound + S (bcf_index_lucas_low_digit_product_digit_table_row_step) = S (d)) -> exists bcf_value_lucas_low_digit_product_digit_table_row_step. ((((exists bcf_height_lucas_low_digit_product_digit_table_row_step_entry. bcf_height_lucas_low_digit_product_digit_table_row_step_entry + S (bcf_value_lucas_low_digit_product_digit_table_row_step) = S ((S (bcf_index_lucas_low_digit_product_digit_table_row_step)) * bcf_row_scale_lucas_low_digit_product_digit_table)) /\ exists bcf_quotient_lucas_low_digit_product_digit_table_row_step_entry. bcf_row_code_lucas_low_digit_product_digit_table = bcf_quotient_lucas_low_digit_product_digit_table_row_step_entry * S ((S (bcf_index_lucas_low_digit_product_digit_table_row_step)) * bcf_row_scale_lucas_low_digit_product_digit_table) + (bcf_value_lucas_low_digit_product_digit_table_row_step))) /\ ((bcf_index_lucas_low_digit_product_digit_table_row_step = 0 /\ bcf_value_lucas_low_digit_product_digit_table_row_step = 1) \/ exists bcf_predecessor_lucas_low_digit_product_digit_table_row_step bcf_left_lucas_low_digit_product_digit_table_row_step bcf_right_lucas_low_digit_product_digit_table_row_step. bcf_index_lucas_low_digit_product_digit_table_row_step = S bcf_predecessor_lucas_low_digit_product_digit_table_row_step /\ ((((exists bcf_height_lucas_low_digit_product_digit_table_row_step_previous_left. bcf_height_lucas_low_digit_product_digit_table_row_step_previous_left + S (bcf_left_lucas_low_digit_product_digit_table_row_step) = S ((S (bcf_predecessor_lucas_low_digit_product_digit_table_row_step)) * bcf_previous_scale_lucas_low_digit_product_digit_table)) /\ exists bcf_quotient_lucas_low_digit_product_digit_table_row_step_previous_left. bcf_previous_code_lucas_low_digit_product_digit_table = bcf_quotient_lucas_low_digit_product_digit_table_row_step_previous_left * S ((S (bcf_predecessor_lucas_low_digit_product_digit_table_row_step)) * bcf_previous_scale_lucas_low_digit_product_digit_table) + (bcf_left_lucas_low_digit_product_digit_table_row_step))) /\ ((((exists bcf_height_lucas_low_digit_product_digit_table_row_step_previous_right. bcf_height_lucas_low_digit_product_digit_table_row_step_previous_right + S (bcf_right_lucas_low_digit_product_digit_table_row_step) = S ((S (S (bcf_predecessor_lucas_low_digit_product_digit_table_row_step))) * bcf_previous_scale_lucas_low_digit_product_digit_table)) /\ exists bcf_quotient_lucas_low_digit_product_digit_table_row_step_previous_right. bcf_previous_code_lucas_low_digit_product_digit_table = bcf_quotient_lucas_low_digit_product_digit_table_row_step_previous_right * S ((S (S (bcf_predecessor_lucas_low_digit_product_digit_table_row_step))) * bcf_previous_scale_lucas_low_digit_product_digit_table) + (bcf_right_lucas_low_digit_product_digit_table_row_step))) /\ bcf_value_lucas_low_digit_product_digit_table_row_step = bcf_left_lucas_low_digit_product_digit_table_row_step + bcf_right_lucas_low_digit_product_digit_table_row_step))))))))))) /\ ((((exists bcf_height_lucas_low_digit_product_digit_decoded_row_code. bcf_height_lucas_low_digit_product_digit_decoded_row_code + S (bcf_row_code_lucas_low_digit_product_digit) = S ((S (d)) * bcf_row_code_scale_lucas_low_digit_product_digit)) /\ exists bcf_quotient_lucas_low_digit_product_digit_decoded_row_code. bcf_row_code_code_lucas_low_digit_product_digit = bcf_quotient_lucas_low_digit_product_digit_decoded_row_code * S ((S (d)) * bcf_row_code_scale_lucas_low_digit_product_digit) + (bcf_row_code_lucas_low_digit_product_digit))) /\ ((((exists bcf_height_lucas_low_digit_product_digit_decoded_row_scale. bcf_height_lucas_low_digit_product_digit_decoded_row_scale + S (bcf_row_scale_lucas_low_digit_product_digit) = S ((S (d)) * bcf_row_scale_scale_lucas_low_digit_product_digit)) /\ exists bcf_quotient_lucas_low_digit_product_digit_decoded_row_scale. bcf_row_scale_code_lucas_low_digit_product_digit = bcf_quotient_lucas_low_digit_product_digit_decoded_row_scale * S ((S (d)) * bcf_row_scale_scale_lucas_low_digit_product_digit) + (bcf_row_scale_lucas_low_digit_product_digit))) /\ (((exists bcf_height_lucas_low_digit_product_digit_decoded_value. bcf_height_lucas_low_digit_product_digit_decoded_value + S (B) = S ((S (e)) * bcf_row_scale_lucas_low_digit_product_digit)) /\ exists bcf_quotient_lucas_low_digit_product_digit_decoded_value. bcf_row_code_lucas_low_digit_product_digit = bcf_quotient_lucas_low_digit_product_digit_decoded_value * S ((S (e)) * bcf_row_scale_lucas_low_digit_product_digit) + (B))))))))) -> (exists lld_left_product_result lld_right_product_result. (C) + (p) * lld_left_product_result = (A * B) + (p) * lld_right_product_result)

Proof neighborhood

Direct theorem prerequisites

choose_zero · Alpha closed one_mul · Stable closed LU0013 lucas_low_digit_congruence

Direct theorem dependents

Definition-aware tactic body

Only propositions whose conservative expansion has been checked for exact first-order equivalence are compacted. Every changed line retains its immutable exact replay command.

Read the argument

Proof checkpoints

33 script commands · 4 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–10

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

  1. L1
    intro p
  2. L2
    intro q
  3. L3
    intro d
  4. L4
    intro e
  5. L5
    intro C
  6. L6
    intro A
  7. L7
    intro B
  8. L8
    intro hprime
  9. L9
    intro hupper_bound
  10. L10
    intro hlower_bound
02Fix variables and assumptionsL11–13

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

  1. L11
    intro hupper
  2. L12
    intro hquotient
  3. L13
    intro hdigit
03Establish honeL14–23

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply choose zero.

  1. L14
    have hone : A = 1
  2. L15
    specialize choose_zero q
  3. L16
    specialize choose_zero A
  4. L17
    apply choose_zero
  5. L18
    exact hquotient
  6. L19
    rewrite hone
  7. L20
    specialize one_mul B
  8. L21
    rewrite one_mul
  9. L22
    specialize lucas_low_digit_congruence p
  10. L23
    specialize lucas_low_digit_congruence q
04Use earlier factsL24–33

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

  1. L24
    specialize lucas_low_digit_congruence d
  2. L25
    specialize lucas_low_digit_congruence e
  3. L26
    specialize lucas_low_digit_congruence C
  4. L27
    specialize lucas_low_digit_congruence B
  5. L28
    apply lucas_low_digit_congruence
  6. L29
    exact hprime
  7. L30
    exact hupper_bound
  8. L31
    exact hlower_bound
  9. L32
    exact hupper
  10. L33
    exact hdigit

Library-wide reading audit

Original defined command ledger · 33 lines
  1. 0001intro p
  2. 0002intro q
  3. 0003intro d
  4. 0004intro e
  5. 0005intro C
  6. 0006intro A
  7. 0007intro B
  8. 0008intro hprime
  9. 0009intro hupper_bound
  10. 0010intro hlower_bound
  11. 0011intro hupper
  12. 0012intro hquotient
  13. 0013intro hdigit
  14. 0014have hone : A = 1
  15. 0015specialize choose_zero q
  16. 0016specialize choose_zero A
  17. 0017apply choose_zero
  18. 0018exact hquotient
  19. 0019rewrite hone
  20. 0020specialize one_mul B
  21. 0021rewrite one_mul
  22. 0022specialize lucas_low_digit_congruence p
  23. 0023specialize lucas_low_digit_congruence q
  24. 0024specialize lucas_low_digit_congruence d
  25. 0025specialize lucas_low_digit_congruence e
  26. 0026specialize lucas_low_digit_congruence C
  27. 0027specialize lucas_low_digit_congruence B
  28. 0028apply lucas_low_digit_congruence
  29. 0029exact hprime
  30. 0030exact hupper_bound
  31. 0031exact hlower_bound
  32. 0032exact hupper
  33. 0033exact hdigit