LU000U · theorem body

lucas_pascal_congruence_step

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

Exact Pascal recurrence transports two balanced coefficient congruences to their successor-row sum.

historical independently replay-verified empty-context experiment; the experiment itself persisted no certificate and granted no release authority; current checked use follows separately sealed proof bundles; no Stable promotion.

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. ∀ n. ∀ k. ∀ A. ∀ B. ∀ C. ∀ X. ∀ Y. Choose(n,k,A)Choose(n,S k,B)Choose(S n,S k,C)ModEq(p,A,X)ModEq(p,B,Y)ModEq(p,C,X + Y)

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 n k A B C X Y. (((exists bcf_lt_gap_lucas_convolution_pascal_left_out_of_range. bcf_lt_gap_lucas_convolution_pascal_left_out_of_range + S (n) = k) /\ A = 0) \/ ((exists bcf_le_gap_lucas_convolution_pascal_left_in_range. bcf_le_gap_lucas_convolution_pascal_left_in_range + (k) = n) /\ (exists bcf_row_code_code_lucas_convolution_pascal_left bcf_row_code_scale_lucas_convolution_pascal_left bcf_row_scale_code_lucas_convolution_pascal_left bcf_row_scale_scale_lucas_convolution_pascal_left bcf_row_code_lucas_convolution_pascal_left bcf_row_scale_lucas_convolution_pascal_left. ((forall bcf_row_index_lucas_convolution_pascal_left_table. (exists bcf_lt_gap_lucas_convolution_pascal_left_table_row_bound. bcf_lt_gap_lucas_convolution_pascal_left_table_row_bound + S (bcf_row_index_lucas_convolution_pascal_left_table) = S (n)) -> exists bcf_row_code_lucas_convolution_pascal_left_table bcf_row_scale_lucas_convolution_pascal_left_table. ((((exists bcf_height_lucas_convolution_pascal_left_table_decoded_row_code. bcf_height_lucas_convolution_pascal_left_table_decoded_row_code + S (bcf_row_code_lucas_convolution_pascal_left_table) = S ((S (bcf_row_index_lucas_convolution_pascal_left_table)) * bcf_row_code_scale_lucas_convolution_pascal_left)) /\ exists bcf_quotient_lucas_convolution_pascal_left_table_decoded_row_code. bcf_row_code_code_lucas_convolution_pascal_left = bcf_quotient_lucas_convolution_pascal_left_table_decoded_row_code * S ((S (bcf_row_index_lucas_convolution_pascal_left_table)) * bcf_row_code_scale_lucas_convolution_pascal_left) + (bcf_row_code_lucas_convolution_pascal_left_table))) /\ ((((exists bcf_height_lucas_convolution_pascal_left_table_decoded_row_scale. bcf_height_lucas_convolution_pascal_left_table_decoded_row_scale + S (bcf_row_scale_lucas_convolution_pascal_left_table) = S ((S (bcf_row_index_lucas_convolution_pascal_left_table)) * bcf_row_scale_scale_lucas_convolution_pascal_left)) /\ exists bcf_quotient_lucas_convolution_pascal_left_table_decoded_row_scale. bcf_row_scale_code_lucas_convolution_pascal_left = bcf_quotient_lucas_convolution_pascal_left_table_decoded_row_scale * S ((S (bcf_row_index_lucas_convolution_pascal_left_table)) * bcf_row_scale_scale_lucas_convolution_pascal_left) + (bcf_row_scale_lucas_convolution_pascal_left_table))) /\ ((bcf_row_index_lucas_convolution_pascal_left_table = 0 /\ (forall bcf_index_lucas_convolution_pascal_left_table_zero_row. (exists bcf_lt_gap_lucas_convolution_pascal_left_table_zero_row_bound. bcf_lt_gap_lucas_convolution_pascal_left_table_zero_row_bound + S (bcf_index_lucas_convolution_pascal_left_table_zero_row) = S (n)) -> exists bcf_value_lucas_convolution_pascal_left_table_zero_row. ((((exists bcf_height_lucas_convolution_pascal_left_table_zero_row_entry. bcf_height_lucas_convolution_pascal_left_table_zero_row_entry + S (bcf_value_lucas_convolution_pascal_left_table_zero_row) = S ((S (bcf_index_lucas_convolution_pascal_left_table_zero_row)) * bcf_row_scale_lucas_convolution_pascal_left_table)) /\ exists bcf_quotient_lucas_convolution_pascal_left_table_zero_row_entry. bcf_row_code_lucas_convolution_pascal_left_table = bcf_quotient_lucas_convolution_pascal_left_table_zero_row_entry * S ((S (bcf_index_lucas_convolution_pascal_left_table_zero_row)) * bcf_row_scale_lucas_convolution_pascal_left_table) + (bcf_value_lucas_convolution_pascal_left_table_zero_row))) /\ ((bcf_index_lucas_convolution_pascal_left_table_zero_row = 0 /\ bcf_value_lucas_convolution_pascal_left_table_zero_row = 1) \/ exists bcf_predecessor_lucas_convolution_pascal_left_table_zero_row. bcf_index_lucas_convolution_pascal_left_table_zero_row = S bcf_predecessor_lucas_convolution_pascal_left_table_zero_row /\ bcf_value_lucas_convolution_pascal_left_table_zero_row = 0)))) \/ exists bcf_predecessor_lucas_convolution_pascal_left_table bcf_previous_code_lucas_convolution_pascal_left_table bcf_previous_scale_lucas_convolution_pascal_left_table. bcf_row_index_lucas_convolution_pascal_left_table = S bcf_predecessor_lucas_convolution_pascal_left_table /\ ((((exists bcf_height_lucas_convolution_pascal_left_table_decoded_previous_code. bcf_height_lucas_convolution_pascal_left_table_decoded_previous_code + S (bcf_previous_code_lucas_convolution_pascal_left_table) = S ((S (bcf_predecessor_lucas_convolution_pascal_left_table)) * bcf_row_code_scale_lucas_convolution_pascal_left)) /\ exists bcf_quotient_lucas_convolution_pascal_left_table_decoded_previous_code. bcf_row_code_code_lucas_convolution_pascal_left = bcf_quotient_lucas_convolution_pascal_left_table_decoded_previous_code * S ((S (bcf_predecessor_lucas_convolution_pascal_left_table)) * bcf_row_code_scale_lucas_convolution_pascal_left) + (bcf_previous_code_lucas_convolution_pascal_left_table))) /\ ((((exists bcf_height_lucas_convolution_pascal_left_table_decoded_previous_scale. bcf_height_lucas_convolution_pascal_left_table_decoded_previous_scale + S (bcf_previous_scale_lucas_convolution_pascal_left_table) = S ((S (bcf_predecessor_lucas_convolution_pascal_left_table)) * bcf_row_scale_scale_lucas_convolution_pascal_left)) /\ exists bcf_quotient_lucas_convolution_pascal_left_table_decoded_previous_scale. bcf_row_scale_code_lucas_convolution_pascal_left = bcf_quotient_lucas_convolution_pascal_left_table_decoded_previous_scale * S ((S (bcf_predecessor_lucas_convolution_pascal_left_table)) * bcf_row_scale_scale_lucas_convolution_pascal_left) + (bcf_previous_scale_lucas_convolution_pascal_left_table))) /\ (forall bcf_index_lucas_convolution_pascal_left_table_row_step. (exists bcf_lt_gap_lucas_convolution_pascal_left_table_row_step_bound. bcf_lt_gap_lucas_convolution_pascal_left_table_row_step_bound + S (bcf_index_lucas_convolution_pascal_left_table_row_step) = S (n)) -> exists bcf_value_lucas_convolution_pascal_left_table_row_step. ((((exists bcf_height_lucas_convolution_pascal_left_table_row_step_entry. bcf_height_lucas_convolution_pascal_left_table_row_step_entry + S (bcf_value_lucas_convolution_pascal_left_table_row_step) = S ((S (bcf_index_lucas_convolution_pascal_left_table_row_step)) * bcf_row_scale_lucas_convolution_pascal_left_table)) /\ exists bcf_quotient_lucas_convolution_pascal_left_table_row_step_entry. bcf_row_code_lucas_convolution_pascal_left_table = bcf_quotient_lucas_convolution_pascal_left_table_row_step_entry * S ((S (bcf_index_lucas_convolution_pascal_left_table_row_step)) * bcf_row_scale_lucas_convolution_pascal_left_table) + (bcf_value_lucas_convolution_pascal_left_table_row_step))) /\ ((bcf_index_lucas_convolution_pascal_left_table_row_step = 0 /\ bcf_value_lucas_convolution_pascal_left_table_row_step = 1) \/ exists bcf_predecessor_lucas_convolution_pascal_left_table_row_step bcf_left_lucas_convolution_pascal_left_table_row_step bcf_right_lucas_convolution_pascal_left_table_row_step. bcf_index_lucas_convolution_pascal_left_table_row_step = S bcf_predecessor_lucas_convolution_pascal_left_table_row_step /\ ((((exists bcf_height_lucas_convolution_pascal_left_table_row_step_previous_left. bcf_height_lucas_convolution_pascal_left_table_row_step_previous_left + S (bcf_left_lucas_convolution_pascal_left_table_row_step) = S ((S (bcf_predecessor_lucas_convolution_pascal_left_table_row_step)) * bcf_previous_scale_lucas_convolution_pascal_left_table)) /\ exists bcf_quotient_lucas_convolution_pascal_left_table_row_step_previous_left. bcf_previous_code_lucas_convolution_pascal_left_table = bcf_quotient_lucas_convolution_pascal_left_table_row_step_previous_left * S ((S (bcf_predecessor_lucas_convolution_pascal_left_table_row_step)) * bcf_previous_scale_lucas_convolution_pascal_left_table) + (bcf_left_lucas_convolution_pascal_left_table_row_step))) /\ ((((exists bcf_height_lucas_convolution_pascal_left_table_row_step_previous_right. bcf_height_lucas_convolution_pascal_left_table_row_step_previous_right + S (bcf_right_lucas_convolution_pascal_left_table_row_step) = S ((S (S (bcf_predecessor_lucas_convolution_pascal_left_table_row_step))) * bcf_previous_scale_lucas_convolution_pascal_left_table)) /\ exists bcf_quotient_lucas_convolution_pascal_left_table_row_step_previous_right. bcf_previous_code_lucas_convolution_pascal_left_table = bcf_quotient_lucas_convolution_pascal_left_table_row_step_previous_right * S ((S (S (bcf_predecessor_lucas_convolution_pascal_left_table_row_step))) * bcf_previous_scale_lucas_convolution_pascal_left_table) + (bcf_right_lucas_convolution_pascal_left_table_row_step))) /\ bcf_value_lucas_convolution_pascal_left_table_row_step = bcf_left_lucas_convolution_pascal_left_table_row_step + bcf_right_lucas_convolution_pascal_left_table_row_step))))))))))) /\ ((((exists bcf_height_lucas_convolution_pascal_left_decoded_row_code. bcf_height_lucas_convolution_pascal_left_decoded_row_code + S (bcf_row_code_lucas_convolution_pascal_left) = S ((S (n)) * bcf_row_code_scale_lucas_convolution_pascal_left)) /\ exists bcf_quotient_lucas_convolution_pascal_left_decoded_row_code. bcf_row_code_code_lucas_convolution_pascal_left = bcf_quotient_lucas_convolution_pascal_left_decoded_row_code * S ((S (n)) * bcf_row_code_scale_lucas_convolution_pascal_left) + (bcf_row_code_lucas_convolution_pascal_left))) /\ ((((exists bcf_height_lucas_convolution_pascal_left_decoded_row_scale. bcf_height_lucas_convolution_pascal_left_decoded_row_scale + S (bcf_row_scale_lucas_convolution_pascal_left) = S ((S (n)) * bcf_row_scale_scale_lucas_convolution_pascal_left)) /\ exists bcf_quotient_lucas_convolution_pascal_left_decoded_row_scale. bcf_row_scale_code_lucas_convolution_pascal_left = bcf_quotient_lucas_convolution_pascal_left_decoded_row_scale * S ((S (n)) * bcf_row_scale_scale_lucas_convolution_pascal_left) + (bcf_row_scale_lucas_convolution_pascal_left))) /\ (((exists bcf_height_lucas_convolution_pascal_left_decoded_value. bcf_height_lucas_convolution_pascal_left_decoded_value + S (A) = S ((S (k)) * bcf_row_scale_lucas_convolution_pascal_left)) /\ exists bcf_quotient_lucas_convolution_pascal_left_decoded_value. bcf_row_code_lucas_convolution_pascal_left = bcf_quotient_lucas_convolution_pascal_left_decoded_value * S ((S (k)) * bcf_row_scale_lucas_convolution_pascal_left) + (A))))))))) -> (((exists bcf_lt_gap_lucas_convolution_pascal_right_out_of_range. bcf_lt_gap_lucas_convolution_pascal_right_out_of_range + S (n) = S k) /\ B = 0) \/ ((exists bcf_le_gap_lucas_convolution_pascal_right_in_range. bcf_le_gap_lucas_convolution_pascal_right_in_range + (S k) = n) /\ (exists bcf_row_code_code_lucas_convolution_pascal_right bcf_row_code_scale_lucas_convolution_pascal_right bcf_row_scale_code_lucas_convolution_pascal_right bcf_row_scale_scale_lucas_convolution_pascal_right bcf_row_code_lucas_convolution_pascal_right bcf_row_scale_lucas_convolution_pascal_right. ((forall bcf_row_index_lucas_convolution_pascal_right_table. (exists bcf_lt_gap_lucas_convolution_pascal_right_table_row_bound. bcf_lt_gap_lucas_convolution_pascal_right_table_row_bound + S (bcf_row_index_lucas_convolution_pascal_right_table) = S (n)) -> exists bcf_row_code_lucas_convolution_pascal_right_table bcf_row_scale_lucas_convolution_pascal_right_table. ((((exists bcf_height_lucas_convolution_pascal_right_table_decoded_row_code. bcf_height_lucas_convolution_pascal_right_table_decoded_row_code + S (bcf_row_code_lucas_convolution_pascal_right_table) = S ((S (bcf_row_index_lucas_convolution_pascal_right_table)) * bcf_row_code_scale_lucas_convolution_pascal_right)) /\ exists bcf_quotient_lucas_convolution_pascal_right_table_decoded_row_code. bcf_row_code_code_lucas_convolution_pascal_right = bcf_quotient_lucas_convolution_pascal_right_table_decoded_row_code * S ((S (bcf_row_index_lucas_convolution_pascal_right_table)) * bcf_row_code_scale_lucas_convolution_pascal_right) + (bcf_row_code_lucas_convolution_pascal_right_table))) /\ ((((exists bcf_height_lucas_convolution_pascal_right_table_decoded_row_scale. bcf_height_lucas_convolution_pascal_right_table_decoded_row_scale + S (bcf_row_scale_lucas_convolution_pascal_right_table) = S ((S (bcf_row_index_lucas_convolution_pascal_right_table)) * bcf_row_scale_scale_lucas_convolution_pascal_right)) /\ exists bcf_quotient_lucas_convolution_pascal_right_table_decoded_row_scale. bcf_row_scale_code_lucas_convolution_pascal_right = bcf_quotient_lucas_convolution_pascal_right_table_decoded_row_scale * S ((S (bcf_row_index_lucas_convolution_pascal_right_table)) * bcf_row_scale_scale_lucas_convolution_pascal_right) + (bcf_row_scale_lucas_convolution_pascal_right_table))) /\ ((bcf_row_index_lucas_convolution_pascal_right_table = 0 /\ (forall bcf_index_lucas_convolution_pascal_right_table_zero_row. (exists bcf_lt_gap_lucas_convolution_pascal_right_table_zero_row_bound. bcf_lt_gap_lucas_convolution_pascal_right_table_zero_row_bound + S (bcf_index_lucas_convolution_pascal_right_table_zero_row) = S (n)) -> exists bcf_value_lucas_convolution_pascal_right_table_zero_row. ((((exists bcf_height_lucas_convolution_pascal_right_table_zero_row_entry. bcf_height_lucas_convolution_pascal_right_table_zero_row_entry + S (bcf_value_lucas_convolution_pascal_right_table_zero_row) = S ((S (bcf_index_lucas_convolution_pascal_right_table_zero_row)) * bcf_row_scale_lucas_convolution_pascal_right_table)) /\ exists bcf_quotient_lucas_convolution_pascal_right_table_zero_row_entry. bcf_row_code_lucas_convolution_pascal_right_table = bcf_quotient_lucas_convolution_pascal_right_table_zero_row_entry * S ((S (bcf_index_lucas_convolution_pascal_right_table_zero_row)) * bcf_row_scale_lucas_convolution_pascal_right_table) + (bcf_value_lucas_convolution_pascal_right_table_zero_row))) /\ ((bcf_index_lucas_convolution_pascal_right_table_zero_row = 0 /\ bcf_value_lucas_convolution_pascal_right_table_zero_row = 1) \/ exists bcf_predecessor_lucas_convolution_pascal_right_table_zero_row. bcf_index_lucas_convolution_pascal_right_table_zero_row = S bcf_predecessor_lucas_convolution_pascal_right_table_zero_row /\ bcf_value_lucas_convolution_pascal_right_table_zero_row = 0)))) \/ exists bcf_predecessor_lucas_convolution_pascal_right_table bcf_previous_code_lucas_convolution_pascal_right_table bcf_previous_scale_lucas_convolution_pascal_right_table. bcf_row_index_lucas_convolution_pascal_right_table = S bcf_predecessor_lucas_convolution_pascal_right_table /\ ((((exists bcf_height_lucas_convolution_pascal_right_table_decoded_previous_code. bcf_height_lucas_convolution_pascal_right_table_decoded_previous_code + S (bcf_previous_code_lucas_convolution_pascal_right_table) = S ((S (bcf_predecessor_lucas_convolution_pascal_right_table)) * bcf_row_code_scale_lucas_convolution_pascal_right)) /\ exists bcf_quotient_lucas_convolution_pascal_right_table_decoded_previous_code. bcf_row_code_code_lucas_convolution_pascal_right = bcf_quotient_lucas_convolution_pascal_right_table_decoded_previous_code * S ((S (bcf_predecessor_lucas_convolution_pascal_right_table)) * bcf_row_code_scale_lucas_convolution_pascal_right) + (bcf_previous_code_lucas_convolution_pascal_right_table))) /\ ((((exists bcf_height_lucas_convolution_pascal_right_table_decoded_previous_scale. bcf_height_lucas_convolution_pascal_right_table_decoded_previous_scale + S (bcf_previous_scale_lucas_convolution_pascal_right_table) = S ((S (bcf_predecessor_lucas_convolution_pascal_right_table)) * bcf_row_scale_scale_lucas_convolution_pascal_right)) /\ exists bcf_quotient_lucas_convolution_pascal_right_table_decoded_previous_scale. bcf_row_scale_code_lucas_convolution_pascal_right = bcf_quotient_lucas_convolution_pascal_right_table_decoded_previous_scale * S ((S (bcf_predecessor_lucas_convolution_pascal_right_table)) * bcf_row_scale_scale_lucas_convolution_pascal_right) + (bcf_previous_scale_lucas_convolution_pascal_right_table))) /\ (forall bcf_index_lucas_convolution_pascal_right_table_row_step. (exists bcf_lt_gap_lucas_convolution_pascal_right_table_row_step_bound. bcf_lt_gap_lucas_convolution_pascal_right_table_row_step_bound + S (bcf_index_lucas_convolution_pascal_right_table_row_step) = S (n)) -> exists bcf_value_lucas_convolution_pascal_right_table_row_step. ((((exists bcf_height_lucas_convolution_pascal_right_table_row_step_entry. bcf_height_lucas_convolution_pascal_right_table_row_step_entry + S (bcf_value_lucas_convolution_pascal_right_table_row_step) = S ((S (bcf_index_lucas_convolution_pascal_right_table_row_step)) * bcf_row_scale_lucas_convolution_pascal_right_table)) /\ exists bcf_quotient_lucas_convolution_pascal_right_table_row_step_entry. bcf_row_code_lucas_convolution_pascal_right_table = bcf_quotient_lucas_convolution_pascal_right_table_row_step_entry * S ((S (bcf_index_lucas_convolution_pascal_right_table_row_step)) * bcf_row_scale_lucas_convolution_pascal_right_table) + (bcf_value_lucas_convolution_pascal_right_table_row_step))) /\ ((bcf_index_lucas_convolution_pascal_right_table_row_step = 0 /\ bcf_value_lucas_convolution_pascal_right_table_row_step = 1) \/ exists bcf_predecessor_lucas_convolution_pascal_right_table_row_step bcf_left_lucas_convolution_pascal_right_table_row_step bcf_right_lucas_convolution_pascal_right_table_row_step. bcf_index_lucas_convolution_pascal_right_table_row_step = S bcf_predecessor_lucas_convolution_pascal_right_table_row_step /\ ((((exists bcf_height_lucas_convolution_pascal_right_table_row_step_previous_left. bcf_height_lucas_convolution_pascal_right_table_row_step_previous_left + S (bcf_left_lucas_convolution_pascal_right_table_row_step) = S ((S (bcf_predecessor_lucas_convolution_pascal_right_table_row_step)) * bcf_previous_scale_lucas_convolution_pascal_right_table)) /\ exists bcf_quotient_lucas_convolution_pascal_right_table_row_step_previous_left. bcf_previous_code_lucas_convolution_pascal_right_table = bcf_quotient_lucas_convolution_pascal_right_table_row_step_previous_left * S ((S (bcf_predecessor_lucas_convolution_pascal_right_table_row_step)) * bcf_previous_scale_lucas_convolution_pascal_right_table) + (bcf_left_lucas_convolution_pascal_right_table_row_step))) /\ ((((exists bcf_height_lucas_convolution_pascal_right_table_row_step_previous_right. bcf_height_lucas_convolution_pascal_right_table_row_step_previous_right + S (bcf_right_lucas_convolution_pascal_right_table_row_step) = S ((S (S (bcf_predecessor_lucas_convolution_pascal_right_table_row_step))) * bcf_previous_scale_lucas_convolution_pascal_right_table)) /\ exists bcf_quotient_lucas_convolution_pascal_right_table_row_step_previous_right. bcf_previous_code_lucas_convolution_pascal_right_table = bcf_quotient_lucas_convolution_pascal_right_table_row_step_previous_right * S ((S (S (bcf_predecessor_lucas_convolution_pascal_right_table_row_step))) * bcf_previous_scale_lucas_convolution_pascal_right_table) + (bcf_right_lucas_convolution_pascal_right_table_row_step))) /\ bcf_value_lucas_convolution_pascal_right_table_row_step = bcf_left_lucas_convolution_pascal_right_table_row_step + bcf_right_lucas_convolution_pascal_right_table_row_step))))))))))) /\ ((((exists bcf_height_lucas_convolution_pascal_right_decoded_row_code. bcf_height_lucas_convolution_pascal_right_decoded_row_code + S (bcf_row_code_lucas_convolution_pascal_right) = S ((S (n)) * bcf_row_code_scale_lucas_convolution_pascal_right)) /\ exists bcf_quotient_lucas_convolution_pascal_right_decoded_row_code. bcf_row_code_code_lucas_convolution_pascal_right = bcf_quotient_lucas_convolution_pascal_right_decoded_row_code * S ((S (n)) * bcf_row_code_scale_lucas_convolution_pascal_right) + (bcf_row_code_lucas_convolution_pascal_right))) /\ ((((exists bcf_height_lucas_convolution_pascal_right_decoded_row_scale. bcf_height_lucas_convolution_pascal_right_decoded_row_scale + S (bcf_row_scale_lucas_convolution_pascal_right) = S ((S (n)) * bcf_row_scale_scale_lucas_convolution_pascal_right)) /\ exists bcf_quotient_lucas_convolution_pascal_right_decoded_row_scale. bcf_row_scale_code_lucas_convolution_pascal_right = bcf_quotient_lucas_convolution_pascal_right_decoded_row_scale * S ((S (n)) * bcf_row_scale_scale_lucas_convolution_pascal_right) + (bcf_row_scale_lucas_convolution_pascal_right))) /\ (((exists bcf_height_lucas_convolution_pascal_right_decoded_value. bcf_height_lucas_convolution_pascal_right_decoded_value + S (B) = S ((S (S k)) * bcf_row_scale_lucas_convolution_pascal_right)) /\ exists bcf_quotient_lucas_convolution_pascal_right_decoded_value. bcf_row_code_lucas_convolution_pascal_right = bcf_quotient_lucas_convolution_pascal_right_decoded_value * S ((S (S k)) * bcf_row_scale_lucas_convolution_pascal_right) + (B))))))))) -> (((exists bcf_lt_gap_lucas_convolution_pascal_target_out_of_range. bcf_lt_gap_lucas_convolution_pascal_target_out_of_range + S (S n) = S k) /\ C = 0) \/ ((exists bcf_le_gap_lucas_convolution_pascal_target_in_range. bcf_le_gap_lucas_convolution_pascal_target_in_range + (S k) = S n) /\ (exists bcf_row_code_code_lucas_convolution_pascal_target bcf_row_code_scale_lucas_convolution_pascal_target bcf_row_scale_code_lucas_convolution_pascal_target bcf_row_scale_scale_lucas_convolution_pascal_target bcf_row_code_lucas_convolution_pascal_target bcf_row_scale_lucas_convolution_pascal_target. ((forall bcf_row_index_lucas_convolution_pascal_target_table. (exists bcf_lt_gap_lucas_convolution_pascal_target_table_row_bound. bcf_lt_gap_lucas_convolution_pascal_target_table_row_bound + S (bcf_row_index_lucas_convolution_pascal_target_table) = S (S n)) -> exists bcf_row_code_lucas_convolution_pascal_target_table bcf_row_scale_lucas_convolution_pascal_target_table. ((((exists bcf_height_lucas_convolution_pascal_target_table_decoded_row_code. bcf_height_lucas_convolution_pascal_target_table_decoded_row_code + S (bcf_row_code_lucas_convolution_pascal_target_table) = S ((S (bcf_row_index_lucas_convolution_pascal_target_table)) * bcf_row_code_scale_lucas_convolution_pascal_target)) /\ exists bcf_quotient_lucas_convolution_pascal_target_table_decoded_row_code. bcf_row_code_code_lucas_convolution_pascal_target = bcf_quotient_lucas_convolution_pascal_target_table_decoded_row_code * S ((S (bcf_row_index_lucas_convolution_pascal_target_table)) * bcf_row_code_scale_lucas_convolution_pascal_target) + (bcf_row_code_lucas_convolution_pascal_target_table))) /\ ((((exists bcf_height_lucas_convolution_pascal_target_table_decoded_row_scale. bcf_height_lucas_convolution_pascal_target_table_decoded_row_scale + S (bcf_row_scale_lucas_convolution_pascal_target_table) = S ((S (bcf_row_index_lucas_convolution_pascal_target_table)) * bcf_row_scale_scale_lucas_convolution_pascal_target)) /\ exists bcf_quotient_lucas_convolution_pascal_target_table_decoded_row_scale. bcf_row_scale_code_lucas_convolution_pascal_target = bcf_quotient_lucas_convolution_pascal_target_table_decoded_row_scale * S ((S (bcf_row_index_lucas_convolution_pascal_target_table)) * bcf_row_scale_scale_lucas_convolution_pascal_target) + (bcf_row_scale_lucas_convolution_pascal_target_table))) /\ ((bcf_row_index_lucas_convolution_pascal_target_table = 0 /\ (forall bcf_index_lucas_convolution_pascal_target_table_zero_row. (exists bcf_lt_gap_lucas_convolution_pascal_target_table_zero_row_bound. bcf_lt_gap_lucas_convolution_pascal_target_table_zero_row_bound + S (bcf_index_lucas_convolution_pascal_target_table_zero_row) = S (S n)) -> exists bcf_value_lucas_convolution_pascal_target_table_zero_row. ((((exists bcf_height_lucas_convolution_pascal_target_table_zero_row_entry. bcf_height_lucas_convolution_pascal_target_table_zero_row_entry + S (bcf_value_lucas_convolution_pascal_target_table_zero_row) = S ((S (bcf_index_lucas_convolution_pascal_target_table_zero_row)) * bcf_row_scale_lucas_convolution_pascal_target_table)) /\ exists bcf_quotient_lucas_convolution_pascal_target_table_zero_row_entry. bcf_row_code_lucas_convolution_pascal_target_table = bcf_quotient_lucas_convolution_pascal_target_table_zero_row_entry * S ((S (bcf_index_lucas_convolution_pascal_target_table_zero_row)) * bcf_row_scale_lucas_convolution_pascal_target_table) + (bcf_value_lucas_convolution_pascal_target_table_zero_row))) /\ ((bcf_index_lucas_convolution_pascal_target_table_zero_row = 0 /\ bcf_value_lucas_convolution_pascal_target_table_zero_row = 1) \/ exists bcf_predecessor_lucas_convolution_pascal_target_table_zero_row. bcf_index_lucas_convolution_pascal_target_table_zero_row = S bcf_predecessor_lucas_convolution_pascal_target_table_zero_row /\ bcf_value_lucas_convolution_pascal_target_table_zero_row = 0)))) \/ exists bcf_predecessor_lucas_convolution_pascal_target_table bcf_previous_code_lucas_convolution_pascal_target_table bcf_previous_scale_lucas_convolution_pascal_target_table. bcf_row_index_lucas_convolution_pascal_target_table = S bcf_predecessor_lucas_convolution_pascal_target_table /\ ((((exists bcf_height_lucas_convolution_pascal_target_table_decoded_previous_code. bcf_height_lucas_convolution_pascal_target_table_decoded_previous_code + S (bcf_previous_code_lucas_convolution_pascal_target_table) = S ((S (bcf_predecessor_lucas_convolution_pascal_target_table)) * bcf_row_code_scale_lucas_convolution_pascal_target)) /\ exists bcf_quotient_lucas_convolution_pascal_target_table_decoded_previous_code. bcf_row_code_code_lucas_convolution_pascal_target = bcf_quotient_lucas_convolution_pascal_target_table_decoded_previous_code * S ((S (bcf_predecessor_lucas_convolution_pascal_target_table)) * bcf_row_code_scale_lucas_convolution_pascal_target) + (bcf_previous_code_lucas_convolution_pascal_target_table))) /\ ((((exists bcf_height_lucas_convolution_pascal_target_table_decoded_previous_scale. bcf_height_lucas_convolution_pascal_target_table_decoded_previous_scale + S (bcf_previous_scale_lucas_convolution_pascal_target_table) = S ((S (bcf_predecessor_lucas_convolution_pascal_target_table)) * bcf_row_scale_scale_lucas_convolution_pascal_target)) /\ exists bcf_quotient_lucas_convolution_pascal_target_table_decoded_previous_scale. bcf_row_scale_code_lucas_convolution_pascal_target = bcf_quotient_lucas_convolution_pascal_target_table_decoded_previous_scale * S ((S (bcf_predecessor_lucas_convolution_pascal_target_table)) * bcf_row_scale_scale_lucas_convolution_pascal_target) + (bcf_previous_scale_lucas_convolution_pascal_target_table))) /\ (forall bcf_index_lucas_convolution_pascal_target_table_row_step. (exists bcf_lt_gap_lucas_convolution_pascal_target_table_row_step_bound. bcf_lt_gap_lucas_convolution_pascal_target_table_row_step_bound + S (bcf_index_lucas_convolution_pascal_target_table_row_step) = S (S n)) -> exists bcf_value_lucas_convolution_pascal_target_table_row_step. ((((exists bcf_height_lucas_convolution_pascal_target_table_row_step_entry. bcf_height_lucas_convolution_pascal_target_table_row_step_entry + S (bcf_value_lucas_convolution_pascal_target_table_row_step) = S ((S (bcf_index_lucas_convolution_pascal_target_table_row_step)) * bcf_row_scale_lucas_convolution_pascal_target_table)) /\ exists bcf_quotient_lucas_convolution_pascal_target_table_row_step_entry. bcf_row_code_lucas_convolution_pascal_target_table = bcf_quotient_lucas_convolution_pascal_target_table_row_step_entry * S ((S (bcf_index_lucas_convolution_pascal_target_table_row_step)) * bcf_row_scale_lucas_convolution_pascal_target_table) + (bcf_value_lucas_convolution_pascal_target_table_row_step))) /\ ((bcf_index_lucas_convolution_pascal_target_table_row_step = 0 /\ bcf_value_lucas_convolution_pascal_target_table_row_step = 1) \/ exists bcf_predecessor_lucas_convolution_pascal_target_table_row_step bcf_left_lucas_convolution_pascal_target_table_row_step bcf_right_lucas_convolution_pascal_target_table_row_step. bcf_index_lucas_convolution_pascal_target_table_row_step = S bcf_predecessor_lucas_convolution_pascal_target_table_row_step /\ ((((exists bcf_height_lucas_convolution_pascal_target_table_row_step_previous_left. bcf_height_lucas_convolution_pascal_target_table_row_step_previous_left + S (bcf_left_lucas_convolution_pascal_target_table_row_step) = S ((S (bcf_predecessor_lucas_convolution_pascal_target_table_row_step)) * bcf_previous_scale_lucas_convolution_pascal_target_table)) /\ exists bcf_quotient_lucas_convolution_pascal_target_table_row_step_previous_left. bcf_previous_code_lucas_convolution_pascal_target_table = bcf_quotient_lucas_convolution_pascal_target_table_row_step_previous_left * S ((S (bcf_predecessor_lucas_convolution_pascal_target_table_row_step)) * bcf_previous_scale_lucas_convolution_pascal_target_table) + (bcf_left_lucas_convolution_pascal_target_table_row_step))) /\ ((((exists bcf_height_lucas_convolution_pascal_target_table_row_step_previous_right. bcf_height_lucas_convolution_pascal_target_table_row_step_previous_right + S (bcf_right_lucas_convolution_pascal_target_table_row_step) = S ((S (S (bcf_predecessor_lucas_convolution_pascal_target_table_row_step))) * bcf_previous_scale_lucas_convolution_pascal_target_table)) /\ exists bcf_quotient_lucas_convolution_pascal_target_table_row_step_previous_right. bcf_previous_code_lucas_convolution_pascal_target_table = bcf_quotient_lucas_convolution_pascal_target_table_row_step_previous_right * S ((S (S (bcf_predecessor_lucas_convolution_pascal_target_table_row_step))) * bcf_previous_scale_lucas_convolution_pascal_target_table) + (bcf_right_lucas_convolution_pascal_target_table_row_step))) /\ bcf_value_lucas_convolution_pascal_target_table_row_step = bcf_left_lucas_convolution_pascal_target_table_row_step + bcf_right_lucas_convolution_pascal_target_table_row_step))))))))))) /\ ((((exists bcf_height_lucas_convolution_pascal_target_decoded_row_code. bcf_height_lucas_convolution_pascal_target_decoded_row_code + S (bcf_row_code_lucas_convolution_pascal_target) = S ((S (S n)) * bcf_row_code_scale_lucas_convolution_pascal_target)) /\ exists bcf_quotient_lucas_convolution_pascal_target_decoded_row_code. bcf_row_code_code_lucas_convolution_pascal_target = bcf_quotient_lucas_convolution_pascal_target_decoded_row_code * S ((S (S n)) * bcf_row_code_scale_lucas_convolution_pascal_target) + (bcf_row_code_lucas_convolution_pascal_target))) /\ ((((exists bcf_height_lucas_convolution_pascal_target_decoded_row_scale. bcf_height_lucas_convolution_pascal_target_decoded_row_scale + S (bcf_row_scale_lucas_convolution_pascal_target) = S ((S (S n)) * bcf_row_scale_scale_lucas_convolution_pascal_target)) /\ exists bcf_quotient_lucas_convolution_pascal_target_decoded_row_scale. bcf_row_scale_code_lucas_convolution_pascal_target = bcf_quotient_lucas_convolution_pascal_target_decoded_row_scale * S ((S (S n)) * bcf_row_scale_scale_lucas_convolution_pascal_target) + (bcf_row_scale_lucas_convolution_pascal_target))) /\ (((exists bcf_height_lucas_convolution_pascal_target_decoded_value. bcf_height_lucas_convolution_pascal_target_decoded_value + S (C) = S ((S (S k)) * bcf_row_scale_lucas_convolution_pascal_target)) /\ exists bcf_quotient_lucas_convolution_pascal_target_decoded_value. bcf_row_code_lucas_convolution_pascal_target = bcf_quotient_lucas_convolution_pascal_target_decoded_value * S ((S (S k)) * bcf_row_scale_lucas_convolution_pascal_target) + (C))))))))) -> (exists lcv_left_pascal_mod_left lcv_right_pascal_mod_left. (A) + (p) * lcv_left_pascal_mod_left = (X) + (p) * lcv_right_pascal_mod_left) -> (exists lcv_left_pascal_mod_right lcv_right_pascal_mod_right. (B) + (p) * lcv_left_pascal_mod_right = (Y) + (p) * lcv_right_pascal_mod_right) -> (exists lcv_left_pascal_mod_result lcv_right_pascal_mod_result. (C) + (p) * lcv_left_pascal_mod_result = (X + Y) + (p) * lcv_right_pascal_mod_result)

Proof neighborhood

Direct theorem prerequisites

choose_succ_succ · Alpha closed mod_eq_add · Stable closed

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

32 script commands · 5 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.

01Fix variables and assumptionsL1–10

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

  1. L1
    intro p
  2. L2
    intro n
  3. L3
    intro k
  4. L4
    intro A
  5. L5
    intro B
  6. L6
    intro C
  7. L7
    intro X
  8. L8
    intro Y
  9. L9
    intro hleft
  10. L10
    intro hright
02Fix variables and assumptionsL11–13

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

  1. L11
    intro hresult
  2. L12
    intro hleft_mod
  3. L13
    intro hright_mod
03Establish hpascalL14–23

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

  1. L14
    have hpascal : C = A + B
  2. L15
    specialize choose_succ_succ n
  3. L16
    specialize choose_succ_succ k
  4. L17
    specialize choose_succ_succ A
  5. L18
    specialize choose_succ_succ B
  6. L19
    specialize choose_succ_succ C
  7. L20
    apply choose_succ_succ
  8. L21
    exact hleft
  9. L22
    exact hright
  10. L23
    exact hresult
04Calculate and transport equalitiesL24–24

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

  1. L24
    rewrite hpascal
05Use earlier factsL25–32

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

  1. L25
    specialize mod_eq_add p
  2. L26
    specialize mod_eq_add A
  3. L27
    specialize mod_eq_add X
  4. L28
    specialize mod_eq_add B
  5. L29
    specialize mod_eq_add Y
  6. L30
    apply mod_eq_add
  7. L31
    exact hleft_mod
  8. L32
    exact hright_mod

Library-wide reading audit

Original defined command ledger · 32 lines
  1. 0001intro p
  2. 0002intro n
  3. 0003intro k
  4. 0004intro A
  5. 0005intro B
  6. 0006intro C
  7. 0007intro X
  8. 0008intro Y
  9. 0009intro hleft
  10. 0010intro hright
  11. 0011intro hresult
  12. 0012intro hleft_mod
  13. 0013intro hright_mod
  14. 0014have hpascal : C = A + B
  15. 0015specialize choose_succ_succ n
  16. 0016specialize choose_succ_succ k
  17. 0017specialize choose_succ_succ A
  18. 0018specialize choose_succ_succ B
  19. 0019specialize choose_succ_succ C
  20. 0020apply choose_succ_succ
  21. 0021exact hleft
  22. 0022exact hright
  23. 0023exact hresult
  24. 0024rewrite hpascal
  25. 0025specialize mod_eq_add p
  26. 0026specialize mod_eq_add A
  27. 0027specialize mod_eq_add X
  28. 0028specialize mod_eq_add B
  29. 0029specialize mod_eq_add Y
  30. 0030apply mod_eq_add
  31. 0031exact hleft_mod
  32. 0032exact hright_mod