DL0067

integer_span_natural_product_add_right

Arbitrary finite one-column matrix multiplication is genuinely additive in the coded right coefficient vector, at every output row.

Alpha v34 checked-use · first admitted v27 · 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.

This branch proves the finite determinant/rank/span substrate. It does not claim Smith or Hermite normal form, lattice index equals determinant, determinant multiplicativity, lattice reduction, or geometry-of-numbers theorems.

Exact theorem in conservative defined notation

∀ ab. ∀ ac. ∀ bb. ∀ bc. ∀ cb. ∀ cc. ∀ db. ∀ dc. ∀ w. ∀ pb. ∀ pc. ∀ qb. ∀ qc. ∀ rb. ∀ rc. ∀ l. MatrixPointwiseAdd(bb,bc,cb,cc,db,dc,w)MatrixProductPrefix(ab,ac,bb,bc,w,1,pb,pc,l)MatrixProductPrefix(ab,ac,cb,cc,w,1,qb,qc,l)MatrixProductPrefix(ab,ac,db,dc,w,1,rb,rc,l)MatrixPointwiseAdd(pb,pc,qb,qc,rb,rc,l)

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

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall ab ac bb bc cb cc db dc w pb pc qb qc rb rc l. (forall ff_index_mcp_add_ics_product_coeff_add ff_left_mcp_add_ics_product_coeff_add ff_right_mcp_add_ics_product_coeff_add ff_target_mcp_add_ics_product_coeff_add. (exists mcp_gap_ics_product_coeff_add_bound. mcp_gap_ics_product_coeff_add_bound + S (ff_index_mcp_add_ics_product_coeff_add) = (w)) -> (((exists fs_h_mcp_ics_product_coeff_add_left. fs_h_mcp_ics_product_coeff_add_left + S (ff_left_mcp_add_ics_product_coeff_add) = S ((S (ff_index_mcp_add_ics_product_coeff_add)) * bc)) /\ exists fs_q_mcp_ics_product_coeff_add_left. bb = fs_q_mcp_ics_product_coeff_add_left * S ((S (ff_index_mcp_add_ics_product_coeff_add)) * bc) + (ff_left_mcp_add_ics_product_coeff_add))) -> (((exists fs_h_mcp_ics_product_coeff_add_right. fs_h_mcp_ics_product_coeff_add_right + S (ff_right_mcp_add_ics_product_coeff_add) = S ((S (ff_index_mcp_add_ics_product_coeff_add)) * cc)) /\ exists fs_q_mcp_ics_product_coeff_add_right. cb = fs_q_mcp_ics_product_coeff_add_right * S ((S (ff_index_mcp_add_ics_product_coeff_add)) * cc) + (ff_right_mcp_add_ics_product_coeff_add))) -> (((exists fs_h_mcp_ics_product_coeff_add_target. fs_h_mcp_ics_product_coeff_add_target + S (ff_target_mcp_add_ics_product_coeff_add) = S ((S (ff_index_mcp_add_ics_product_coeff_add)) * dc)) /\ exists fs_q_mcp_ics_product_coeff_add_target. db = fs_q_mcp_ics_product_coeff_add_target * S ((S (ff_index_mcp_add_ics_product_coeff_add)) * dc) + (ff_target_mcp_add_ics_product_coeff_add))) -> ff_target_mcp_add_ics_product_coeff_add = ff_left_mcp_add_ics_product_coeff_add + ff_right_mcp_add_ics_product_coeff_add) -> (forall ff_index_mcp_prefix_ics_product_first. (exists mcp_gap_ics_product_first_index. mcp_gap_ics_product_first_index + S (ff_index_mcp_prefix_ics_product_first) = (l)) -> exists ff_row_mcp_prefix_ics_product_first ff_column_mcp_prefix_ics_product_first ff_value_mcp_prefix_ics_product_first. ((ff_index_mcp_prefix_ics_product_first) = (1) * ff_row_mcp_prefix_ics_product_first + ff_column_mcp_prefix_ics_product_first /\ ((exists mcp_gap_ics_product_first_column. mcp_gap_ics_product_first_column + S (ff_column_mcp_prefix_ics_product_first) = (1)) /\ ((exists ff_left_mcp_cell_ics_product_first_cell ff_left_scale_mcp_cell_ics_product_first_cell ff_right_mcp_cell_ics_product_first_cell ff_right_scale_mcp_cell_ics_product_first_cell. ((forall ff_index_mcp_ics_product_first_cell_row ff_source_mcp_ics_product_first_cell_row ff_target_mcp_ics_product_first_cell_row. (exists mcp_gap_ics_product_first_cell_row_bound. mcp_gap_ics_product_first_cell_row_bound + S (ff_index_mcp_ics_product_first_cell_row) = (w)) -> (((exists fs_h_mcp_ics_product_first_cell_row_source. fs_h_mcp_ics_product_first_cell_row_source + S (ff_source_mcp_ics_product_first_cell_row) = S ((S (((ff_row_mcp_prefix_ics_product_first) * (w)) + (1) * ff_index_mcp_ics_product_first_cell_row)) * ac)) /\ exists fs_q_mcp_ics_product_first_cell_row_source. ab = fs_q_mcp_ics_product_first_cell_row_source * S ((S (((ff_row_mcp_prefix_ics_product_first) * (w)) + (1) * ff_index_mcp_ics_product_first_cell_row)) * ac) + (ff_source_mcp_ics_product_first_cell_row))) -> (((exists fs_h_mcp_ics_product_first_cell_row_target. fs_h_mcp_ics_product_first_cell_row_target + S (ff_target_mcp_ics_product_first_cell_row) = S ((S (ff_index_mcp_ics_product_first_cell_row)) * ff_left_scale_mcp_cell_ics_product_first_cell)) /\ exists fs_q_mcp_ics_product_first_cell_row_target. ff_left_mcp_cell_ics_product_first_cell = fs_q_mcp_ics_product_first_cell_row_target * S ((S (ff_index_mcp_ics_product_first_cell_row)) * ff_left_scale_mcp_cell_ics_product_first_cell) + (ff_target_mcp_ics_product_first_cell_row))) -> ff_target_mcp_ics_product_first_cell_row = ff_source_mcp_ics_product_first_cell_row) /\ ((forall ff_index_mcp_ics_product_first_cell_column ff_source_mcp_ics_product_first_cell_column ff_target_mcp_ics_product_first_cell_column. (exists mcp_gap_ics_product_first_cell_column_bound. mcp_gap_ics_product_first_cell_column_bound + S (ff_index_mcp_ics_product_first_cell_column) = (w)) -> (((exists fs_h_mcp_ics_product_first_cell_column_source. fs_h_mcp_ics_product_first_cell_column_source + S (ff_source_mcp_ics_product_first_cell_column) = S ((S ((ff_column_mcp_prefix_ics_product_first) + (1) * ff_index_mcp_ics_product_first_cell_column)) * bc)) /\ exists fs_q_mcp_ics_product_first_cell_column_source. bb = fs_q_mcp_ics_product_first_cell_column_source * S ((S ((ff_column_mcp_prefix_ics_product_first) + (1) * ff_index_mcp_ics_product_first_cell_column)) * bc) + (ff_source_mcp_ics_product_first_cell_column))) -> (((exists fs_h_mcp_ics_product_first_cell_column_target. fs_h_mcp_ics_product_first_cell_column_target + S (ff_target_mcp_ics_product_first_cell_column) = S ((S (ff_index_mcp_ics_product_first_cell_column)) * ff_right_scale_mcp_cell_ics_product_first_cell)) /\ exists fs_q_mcp_ics_product_first_cell_column_target. ff_right_mcp_cell_ics_product_first_cell = fs_q_mcp_ics_product_first_cell_column_target * S ((S (ff_index_mcp_ics_product_first_cell_column)) * ff_right_scale_mcp_cell_ics_product_first_cell) + (ff_target_mcp_ics_product_first_cell_column))) -> ff_target_mcp_ics_product_first_cell_column = ff_source_mcp_ics_product_first_cell_column) /\ (exists ff_code_dot_mcp_ics_product_first_cell_dot ff_scale_dot_mcp_ics_product_first_cell_dot. ((forall fpmp_index_dot_mcp_ics_product_first_cell_dot_pointwise fpmp_left_dot_mcp_ics_product_first_cell_dot_pointwise fpmp_right_dot_mcp_ics_product_first_cell_dot_pointwise fpmp_target_dot_mcp_ics_product_first_cell_dot_pointwise. (exists fpmp_gap_dot_mcp_ics_product_first_cell_dot_pointwise. fpmp_gap_dot_mcp_ics_product_first_cell_dot_pointwise + S fpmp_index_dot_mcp_ics_product_first_cell_dot_pointwise = w) -> (((exists ff_h_fpmp_dot_mcp_ics_product_first_cell_dot_pointwise_left. ff_h_fpmp_dot_mcp_ics_product_first_cell_dot_pointwise_left + S (fpmp_left_dot_mcp_ics_product_first_cell_dot_pointwise) = S ((S (fpmp_index_dot_mcp_ics_product_first_cell_dot_pointwise)) * ff_left_scale_mcp_cell_ics_product_first_cell)) /\ exists ff_q_fpmp_dot_mcp_ics_product_first_cell_dot_pointwise_left. ff_left_mcp_cell_ics_product_first_cell = ff_q_fpmp_dot_mcp_ics_product_first_cell_dot_pointwise_left * S ((S (fpmp_index_dot_mcp_ics_product_first_cell_dot_pointwise)) * ff_left_scale_mcp_cell_ics_product_first_cell) + (fpmp_left_dot_mcp_ics_product_first_cell_dot_pointwise))) -> (((exists ff_h_fpmp_dot_mcp_ics_product_first_cell_dot_pointwise_right. ff_h_fpmp_dot_mcp_ics_product_first_cell_dot_pointwise_right + S (fpmp_right_dot_mcp_ics_product_first_cell_dot_pointwise) = S ((S (fpmp_index_dot_mcp_ics_product_first_cell_dot_pointwise)) * ff_right_scale_mcp_cell_ics_product_first_cell)) /\ exists ff_q_fpmp_dot_mcp_ics_product_first_cell_dot_pointwise_right. ff_right_mcp_cell_ics_product_first_cell = ff_q_fpmp_dot_mcp_ics_product_first_cell_dot_pointwise_right * S ((S (fpmp_index_dot_mcp_ics_product_first_cell_dot_pointwise)) * ff_right_scale_mcp_cell_ics_product_first_cell) + (fpmp_right_dot_mcp_ics_product_first_cell_dot_pointwise))) -> (((exists ff_h_fpmp_dot_mcp_ics_product_first_cell_dot_pointwise_target. ff_h_fpmp_dot_mcp_ics_product_first_cell_dot_pointwise_target + S (fpmp_target_dot_mcp_ics_product_first_cell_dot_pointwise) = S ((S (fpmp_index_dot_mcp_ics_product_first_cell_dot_pointwise)) * ff_scale_dot_mcp_ics_product_first_cell_dot)) /\ exists ff_q_fpmp_dot_mcp_ics_product_first_cell_dot_pointwise_target. ff_code_dot_mcp_ics_product_first_cell_dot = ff_q_fpmp_dot_mcp_ics_product_first_cell_dot_pointwise_target * S ((S (fpmp_index_dot_mcp_ics_product_first_cell_dot_pointwise)) * ff_scale_dot_mcp_ics_product_first_cell_dot) + (fpmp_target_dot_mcp_ics_product_first_cell_dot_pointwise))) -> fpmp_target_dot_mcp_ics_product_first_cell_dot_pointwise = fpmp_left_dot_mcp_ics_product_first_cell_dot_pointwise * fpmp_right_dot_mcp_ics_product_first_cell_dot_pointwise) /\ (exists ff_u_dot_mcp_ics_product_first_cell_dot_sum ff_v_dot_mcp_ics_product_first_cell_dot_sum. ((((exists ff_h_dot_mcp_ics_product_first_cell_dot_sum_start. ff_h_dot_mcp_ics_product_first_cell_dot_sum_start + S (0) = S ((S (0)) * ff_v_dot_mcp_ics_product_first_cell_dot_sum)) /\ exists ff_q_dot_mcp_ics_product_first_cell_dot_sum_start. ff_u_dot_mcp_ics_product_first_cell_dot_sum = ff_q_dot_mcp_ics_product_first_cell_dot_sum_start * S ((S (0)) * ff_v_dot_mcp_ics_product_first_cell_dot_sum) + (0))) /\ ((((exists ff_h_dot_mcp_ics_product_first_cell_dot_sum_terminal. ff_h_dot_mcp_ics_product_first_cell_dot_sum_terminal + S (ff_value_mcp_prefix_ics_product_first) = S ((S (w)) * ff_v_dot_mcp_ics_product_first_cell_dot_sum)) /\ exists ff_q_dot_mcp_ics_product_first_cell_dot_sum_terminal. ff_u_dot_mcp_ics_product_first_cell_dot_sum = ff_q_dot_mcp_ics_product_first_cell_dot_sum_terminal * S ((S (w)) * ff_v_dot_mcp_ics_product_first_cell_dot_sum) + (ff_value_mcp_prefix_ics_product_first))) /\ forall ff_i_dot_mcp_ics_product_first_cell_dot_sum. (exists ff_lt_dot_mcp_ics_product_first_cell_dot_sum_bound. ff_lt_dot_mcp_ics_product_first_cell_dot_sum_bound + S ff_i_dot_mcp_ics_product_first_cell_dot_sum = w) -> exists ff_a_dot_mcp_ics_product_first_cell_dot_sum ff_r_dot_mcp_ics_product_first_cell_dot_sum ff_s_dot_mcp_ics_product_first_cell_dot_sum. ((((exists ff_h_dot_mcp_ics_product_first_cell_dot_sum_summand. ff_h_dot_mcp_ics_product_first_cell_dot_sum_summand + S (ff_a_dot_mcp_ics_product_first_cell_dot_sum) = S ((S (ff_i_dot_mcp_ics_product_first_cell_dot_sum)) * ff_scale_dot_mcp_ics_product_first_cell_dot)) /\ exists ff_q_dot_mcp_ics_product_first_cell_dot_sum_summand. ff_code_dot_mcp_ics_product_first_cell_dot = ff_q_dot_mcp_ics_product_first_cell_dot_sum_summand * S ((S (ff_i_dot_mcp_ics_product_first_cell_dot_sum)) * ff_scale_dot_mcp_ics_product_first_cell_dot) + (ff_a_dot_mcp_ics_product_first_cell_dot_sum))) /\ ((((exists ff_h_dot_mcp_ics_product_first_cell_dot_sum_partial. ff_h_dot_mcp_ics_product_first_cell_dot_sum_partial + S (ff_r_dot_mcp_ics_product_first_cell_dot_sum) = S ((S (ff_i_dot_mcp_ics_product_first_cell_dot_sum)) * ff_v_dot_mcp_ics_product_first_cell_dot_sum)) /\ exists ff_q_dot_mcp_ics_product_first_cell_dot_sum_partial. ff_u_dot_mcp_ics_product_first_cell_dot_sum = ff_q_dot_mcp_ics_product_first_cell_dot_sum_partial * S ((S (ff_i_dot_mcp_ics_product_first_cell_dot_sum)) * ff_v_dot_mcp_ics_product_first_cell_dot_sum) + (ff_r_dot_mcp_ics_product_first_cell_dot_sum))) /\ ((((exists ff_h_dot_mcp_ics_product_first_cell_dot_sum_successor. ff_h_dot_mcp_ics_product_first_cell_dot_sum_successor + S (ff_s_dot_mcp_ics_product_first_cell_dot_sum) = S ((S (S ff_i_dot_mcp_ics_product_first_cell_dot_sum)) * ff_v_dot_mcp_ics_product_first_cell_dot_sum)) /\ exists ff_q_dot_mcp_ics_product_first_cell_dot_sum_successor. ff_u_dot_mcp_ics_product_first_cell_dot_sum = ff_q_dot_mcp_ics_product_first_cell_dot_sum_successor * S ((S (S ff_i_dot_mcp_ics_product_first_cell_dot_sum)) * ff_v_dot_mcp_ics_product_first_cell_dot_sum) + (ff_s_dot_mcp_ics_product_first_cell_dot_sum))) /\ ff_s_dot_mcp_ics_product_first_cell_dot_sum = ff_r_dot_mcp_ics_product_first_cell_dot_sum + ff_a_dot_mcp_ics_product_first_cell_dot_sum))))))))))) /\ (((exists fs_h_mcp_ics_product_first_entry. fs_h_mcp_ics_product_first_entry + S (ff_value_mcp_prefix_ics_product_first) = S ((S (ff_index_mcp_prefix_ics_product_first)) * pc)) /\ exists fs_q_mcp_ics_product_first_entry. pb = fs_q_mcp_ics_product_first_entry * S ((S (ff_index_mcp_prefix_ics_product_first)) * pc) + (ff_value_mcp_prefix_ics_product_first))))))) -> (forall ff_index_mcp_prefix_ics_product_second. (exists mcp_gap_ics_product_second_index. mcp_gap_ics_product_second_index + S (ff_index_mcp_prefix_ics_product_second) = (l)) -> exists ff_row_mcp_prefix_ics_product_second ff_column_mcp_prefix_ics_product_second ff_value_mcp_prefix_ics_product_second. ((ff_index_mcp_prefix_ics_product_second) = (1) * ff_row_mcp_prefix_ics_product_second + ff_column_mcp_prefix_ics_product_second /\ ((exists mcp_gap_ics_product_second_column. mcp_gap_ics_product_second_column + S (ff_column_mcp_prefix_ics_product_second) = (1)) /\ ((exists ff_left_mcp_cell_ics_product_second_cell ff_left_scale_mcp_cell_ics_product_second_cell ff_right_mcp_cell_ics_product_second_cell ff_right_scale_mcp_cell_ics_product_second_cell. ((forall ff_index_mcp_ics_product_second_cell_row ff_source_mcp_ics_product_second_cell_row ff_target_mcp_ics_product_second_cell_row. (exists mcp_gap_ics_product_second_cell_row_bound. mcp_gap_ics_product_second_cell_row_bound + S (ff_index_mcp_ics_product_second_cell_row) = (w)) -> (((exists fs_h_mcp_ics_product_second_cell_row_source. fs_h_mcp_ics_product_second_cell_row_source + S (ff_source_mcp_ics_product_second_cell_row) = S ((S (((ff_row_mcp_prefix_ics_product_second) * (w)) + (1) * ff_index_mcp_ics_product_second_cell_row)) * ac)) /\ exists fs_q_mcp_ics_product_second_cell_row_source. ab = fs_q_mcp_ics_product_second_cell_row_source * S ((S (((ff_row_mcp_prefix_ics_product_second) * (w)) + (1) * ff_index_mcp_ics_product_second_cell_row)) * ac) + (ff_source_mcp_ics_product_second_cell_row))) -> (((exists fs_h_mcp_ics_product_second_cell_row_target. fs_h_mcp_ics_product_second_cell_row_target + S (ff_target_mcp_ics_product_second_cell_row) = S ((S (ff_index_mcp_ics_product_second_cell_row)) * ff_left_scale_mcp_cell_ics_product_second_cell)) /\ exists fs_q_mcp_ics_product_second_cell_row_target. ff_left_mcp_cell_ics_product_second_cell = fs_q_mcp_ics_product_second_cell_row_target * S ((S (ff_index_mcp_ics_product_second_cell_row)) * ff_left_scale_mcp_cell_ics_product_second_cell) + (ff_target_mcp_ics_product_second_cell_row))) -> ff_target_mcp_ics_product_second_cell_row = ff_source_mcp_ics_product_second_cell_row) /\ ((forall ff_index_mcp_ics_product_second_cell_column ff_source_mcp_ics_product_second_cell_column ff_target_mcp_ics_product_second_cell_column. (exists mcp_gap_ics_product_second_cell_column_bound. mcp_gap_ics_product_second_cell_column_bound + S (ff_index_mcp_ics_product_second_cell_column) = (w)) -> (((exists fs_h_mcp_ics_product_second_cell_column_source. fs_h_mcp_ics_product_second_cell_column_source + S (ff_source_mcp_ics_product_second_cell_column) = S ((S ((ff_column_mcp_prefix_ics_product_second) + (1) * ff_index_mcp_ics_product_second_cell_column)) * cc)) /\ exists fs_q_mcp_ics_product_second_cell_column_source. cb = fs_q_mcp_ics_product_second_cell_column_source * S ((S ((ff_column_mcp_prefix_ics_product_second) + (1) * ff_index_mcp_ics_product_second_cell_column)) * cc) + (ff_source_mcp_ics_product_second_cell_column))) -> (((exists fs_h_mcp_ics_product_second_cell_column_target. fs_h_mcp_ics_product_second_cell_column_target + S (ff_target_mcp_ics_product_second_cell_column) = S ((S (ff_index_mcp_ics_product_second_cell_column)) * ff_right_scale_mcp_cell_ics_product_second_cell)) /\ exists fs_q_mcp_ics_product_second_cell_column_target. ff_right_mcp_cell_ics_product_second_cell = fs_q_mcp_ics_product_second_cell_column_target * S ((S (ff_index_mcp_ics_product_second_cell_column)) * ff_right_scale_mcp_cell_ics_product_second_cell) + (ff_target_mcp_ics_product_second_cell_column))) -> ff_target_mcp_ics_product_second_cell_column = ff_source_mcp_ics_product_second_cell_column) /\ (exists ff_code_dot_mcp_ics_product_second_cell_dot ff_scale_dot_mcp_ics_product_second_cell_dot. ((forall fpmp_index_dot_mcp_ics_product_second_cell_dot_pointwise fpmp_left_dot_mcp_ics_product_second_cell_dot_pointwise fpmp_right_dot_mcp_ics_product_second_cell_dot_pointwise fpmp_target_dot_mcp_ics_product_second_cell_dot_pointwise. (exists fpmp_gap_dot_mcp_ics_product_second_cell_dot_pointwise. fpmp_gap_dot_mcp_ics_product_second_cell_dot_pointwise + S fpmp_index_dot_mcp_ics_product_second_cell_dot_pointwise = w) -> (((exists ff_h_fpmp_dot_mcp_ics_product_second_cell_dot_pointwise_left. ff_h_fpmp_dot_mcp_ics_product_second_cell_dot_pointwise_left + S (fpmp_left_dot_mcp_ics_product_second_cell_dot_pointwise) = S ((S (fpmp_index_dot_mcp_ics_product_second_cell_dot_pointwise)) * ff_left_scale_mcp_cell_ics_product_second_cell)) /\ exists ff_q_fpmp_dot_mcp_ics_product_second_cell_dot_pointwise_left. ff_left_mcp_cell_ics_product_second_cell = ff_q_fpmp_dot_mcp_ics_product_second_cell_dot_pointwise_left * S ((S (fpmp_index_dot_mcp_ics_product_second_cell_dot_pointwise)) * ff_left_scale_mcp_cell_ics_product_second_cell) + (fpmp_left_dot_mcp_ics_product_second_cell_dot_pointwise))) -> (((exists ff_h_fpmp_dot_mcp_ics_product_second_cell_dot_pointwise_right. ff_h_fpmp_dot_mcp_ics_product_second_cell_dot_pointwise_right + S (fpmp_right_dot_mcp_ics_product_second_cell_dot_pointwise) = S ((S (fpmp_index_dot_mcp_ics_product_second_cell_dot_pointwise)) * ff_right_scale_mcp_cell_ics_product_second_cell)) /\ exists ff_q_fpmp_dot_mcp_ics_product_second_cell_dot_pointwise_right. ff_right_mcp_cell_ics_product_second_cell = ff_q_fpmp_dot_mcp_ics_product_second_cell_dot_pointwise_right * S ((S (fpmp_index_dot_mcp_ics_product_second_cell_dot_pointwise)) * ff_right_scale_mcp_cell_ics_product_second_cell) + (fpmp_right_dot_mcp_ics_product_second_cell_dot_pointwise))) -> (((exists ff_h_fpmp_dot_mcp_ics_product_second_cell_dot_pointwise_target. ff_h_fpmp_dot_mcp_ics_product_second_cell_dot_pointwise_target + S (fpmp_target_dot_mcp_ics_product_second_cell_dot_pointwise) = S ((S (fpmp_index_dot_mcp_ics_product_second_cell_dot_pointwise)) * ff_scale_dot_mcp_ics_product_second_cell_dot)) /\ exists ff_q_fpmp_dot_mcp_ics_product_second_cell_dot_pointwise_target. ff_code_dot_mcp_ics_product_second_cell_dot = ff_q_fpmp_dot_mcp_ics_product_second_cell_dot_pointwise_target * S ((S (fpmp_index_dot_mcp_ics_product_second_cell_dot_pointwise)) * ff_scale_dot_mcp_ics_product_second_cell_dot) + (fpmp_target_dot_mcp_ics_product_second_cell_dot_pointwise))) -> fpmp_target_dot_mcp_ics_product_second_cell_dot_pointwise = fpmp_left_dot_mcp_ics_product_second_cell_dot_pointwise * fpmp_right_dot_mcp_ics_product_second_cell_dot_pointwise) /\ (exists ff_u_dot_mcp_ics_product_second_cell_dot_sum ff_v_dot_mcp_ics_product_second_cell_dot_sum. ((((exists ff_h_dot_mcp_ics_product_second_cell_dot_sum_start. ff_h_dot_mcp_ics_product_second_cell_dot_sum_start + S (0) = S ((S (0)) * ff_v_dot_mcp_ics_product_second_cell_dot_sum)) /\ exists ff_q_dot_mcp_ics_product_second_cell_dot_sum_start. ff_u_dot_mcp_ics_product_second_cell_dot_sum = ff_q_dot_mcp_ics_product_second_cell_dot_sum_start * S ((S (0)) * ff_v_dot_mcp_ics_product_second_cell_dot_sum) + (0))) /\ ((((exists ff_h_dot_mcp_ics_product_second_cell_dot_sum_terminal. ff_h_dot_mcp_ics_product_second_cell_dot_sum_terminal + S (ff_value_mcp_prefix_ics_product_second) = S ((S (w)) * ff_v_dot_mcp_ics_product_second_cell_dot_sum)) /\ exists ff_q_dot_mcp_ics_product_second_cell_dot_sum_terminal. ff_u_dot_mcp_ics_product_second_cell_dot_sum = ff_q_dot_mcp_ics_product_second_cell_dot_sum_terminal * S ((S (w)) * ff_v_dot_mcp_ics_product_second_cell_dot_sum) + (ff_value_mcp_prefix_ics_product_second))) /\ forall ff_i_dot_mcp_ics_product_second_cell_dot_sum. (exists ff_lt_dot_mcp_ics_product_second_cell_dot_sum_bound. ff_lt_dot_mcp_ics_product_second_cell_dot_sum_bound + S ff_i_dot_mcp_ics_product_second_cell_dot_sum = w) -> exists ff_a_dot_mcp_ics_product_second_cell_dot_sum ff_r_dot_mcp_ics_product_second_cell_dot_sum ff_s_dot_mcp_ics_product_second_cell_dot_sum. ((((exists ff_h_dot_mcp_ics_product_second_cell_dot_sum_summand. ff_h_dot_mcp_ics_product_second_cell_dot_sum_summand + S (ff_a_dot_mcp_ics_product_second_cell_dot_sum) = S ((S (ff_i_dot_mcp_ics_product_second_cell_dot_sum)) * ff_scale_dot_mcp_ics_product_second_cell_dot)) /\ exists ff_q_dot_mcp_ics_product_second_cell_dot_sum_summand. ff_code_dot_mcp_ics_product_second_cell_dot = ff_q_dot_mcp_ics_product_second_cell_dot_sum_summand * S ((S (ff_i_dot_mcp_ics_product_second_cell_dot_sum)) * ff_scale_dot_mcp_ics_product_second_cell_dot) + (ff_a_dot_mcp_ics_product_second_cell_dot_sum))) /\ ((((exists ff_h_dot_mcp_ics_product_second_cell_dot_sum_partial. ff_h_dot_mcp_ics_product_second_cell_dot_sum_partial + S (ff_r_dot_mcp_ics_product_second_cell_dot_sum) = S ((S (ff_i_dot_mcp_ics_product_second_cell_dot_sum)) * ff_v_dot_mcp_ics_product_second_cell_dot_sum)) /\ exists ff_q_dot_mcp_ics_product_second_cell_dot_sum_partial. ff_u_dot_mcp_ics_product_second_cell_dot_sum = ff_q_dot_mcp_ics_product_second_cell_dot_sum_partial * S ((S (ff_i_dot_mcp_ics_product_second_cell_dot_sum)) * ff_v_dot_mcp_ics_product_second_cell_dot_sum) + (ff_r_dot_mcp_ics_product_second_cell_dot_sum))) /\ ((((exists ff_h_dot_mcp_ics_product_second_cell_dot_sum_successor. ff_h_dot_mcp_ics_product_second_cell_dot_sum_successor + S (ff_s_dot_mcp_ics_product_second_cell_dot_sum) = S ((S (S ff_i_dot_mcp_ics_product_second_cell_dot_sum)) * ff_v_dot_mcp_ics_product_second_cell_dot_sum)) /\ exists ff_q_dot_mcp_ics_product_second_cell_dot_sum_successor. ff_u_dot_mcp_ics_product_second_cell_dot_sum = ff_q_dot_mcp_ics_product_second_cell_dot_sum_successor * S ((S (S ff_i_dot_mcp_ics_product_second_cell_dot_sum)) * ff_v_dot_mcp_ics_product_second_cell_dot_sum) + (ff_s_dot_mcp_ics_product_second_cell_dot_sum))) /\ ff_s_dot_mcp_ics_product_second_cell_dot_sum = ff_r_dot_mcp_ics_product_second_cell_dot_sum + ff_a_dot_mcp_ics_product_second_cell_dot_sum))))))))))) /\ (((exists fs_h_mcp_ics_product_second_entry. fs_h_mcp_ics_product_second_entry + S (ff_value_mcp_prefix_ics_product_second) = S ((S (ff_index_mcp_prefix_ics_product_second)) * qc)) /\ exists fs_q_mcp_ics_product_second_entry. qb = fs_q_mcp_ics_product_second_entry * S ((S (ff_index_mcp_prefix_ics_product_second)) * qc) + (ff_value_mcp_prefix_ics_product_second))))))) -> (forall ff_index_mcp_prefix_ics_product_third. (exists mcp_gap_ics_product_third_index. mcp_gap_ics_product_third_index + S (ff_index_mcp_prefix_ics_product_third) = (l)) -> exists ff_row_mcp_prefix_ics_product_third ff_column_mcp_prefix_ics_product_third ff_value_mcp_prefix_ics_product_third. ((ff_index_mcp_prefix_ics_product_third) = (1) * ff_row_mcp_prefix_ics_product_third + ff_column_mcp_prefix_ics_product_third /\ ((exists mcp_gap_ics_product_third_column. mcp_gap_ics_product_third_column + S (ff_column_mcp_prefix_ics_product_third) = (1)) /\ ((exists ff_left_mcp_cell_ics_product_third_cell ff_left_scale_mcp_cell_ics_product_third_cell ff_right_mcp_cell_ics_product_third_cell ff_right_scale_mcp_cell_ics_product_third_cell. ((forall ff_index_mcp_ics_product_third_cell_row ff_source_mcp_ics_product_third_cell_row ff_target_mcp_ics_product_third_cell_row. (exists mcp_gap_ics_product_third_cell_row_bound. mcp_gap_ics_product_third_cell_row_bound + S (ff_index_mcp_ics_product_third_cell_row) = (w)) -> (((exists fs_h_mcp_ics_product_third_cell_row_source. fs_h_mcp_ics_product_third_cell_row_source + S (ff_source_mcp_ics_product_third_cell_row) = S ((S (((ff_row_mcp_prefix_ics_product_third) * (w)) + (1) * ff_index_mcp_ics_product_third_cell_row)) * ac)) /\ exists fs_q_mcp_ics_product_third_cell_row_source. ab = fs_q_mcp_ics_product_third_cell_row_source * S ((S (((ff_row_mcp_prefix_ics_product_third) * (w)) + (1) * ff_index_mcp_ics_product_third_cell_row)) * ac) + (ff_source_mcp_ics_product_third_cell_row))) -> (((exists fs_h_mcp_ics_product_third_cell_row_target. fs_h_mcp_ics_product_third_cell_row_target + S (ff_target_mcp_ics_product_third_cell_row) = S ((S (ff_index_mcp_ics_product_third_cell_row)) * ff_left_scale_mcp_cell_ics_product_third_cell)) /\ exists fs_q_mcp_ics_product_third_cell_row_target. ff_left_mcp_cell_ics_product_third_cell = fs_q_mcp_ics_product_third_cell_row_target * S ((S (ff_index_mcp_ics_product_third_cell_row)) * ff_left_scale_mcp_cell_ics_product_third_cell) + (ff_target_mcp_ics_product_third_cell_row))) -> ff_target_mcp_ics_product_third_cell_row = ff_source_mcp_ics_product_third_cell_row) /\ ((forall ff_index_mcp_ics_product_third_cell_column ff_source_mcp_ics_product_third_cell_column ff_target_mcp_ics_product_third_cell_column. (exists mcp_gap_ics_product_third_cell_column_bound. mcp_gap_ics_product_third_cell_column_bound + S (ff_index_mcp_ics_product_third_cell_column) = (w)) -> (((exists fs_h_mcp_ics_product_third_cell_column_source. fs_h_mcp_ics_product_third_cell_column_source + S (ff_source_mcp_ics_product_third_cell_column) = S ((S ((ff_column_mcp_prefix_ics_product_third) + (1) * ff_index_mcp_ics_product_third_cell_column)) * dc)) /\ exists fs_q_mcp_ics_product_third_cell_column_source. db = fs_q_mcp_ics_product_third_cell_column_source * S ((S ((ff_column_mcp_prefix_ics_product_third) + (1) * ff_index_mcp_ics_product_third_cell_column)) * dc) + (ff_source_mcp_ics_product_third_cell_column))) -> (((exists fs_h_mcp_ics_product_third_cell_column_target. fs_h_mcp_ics_product_third_cell_column_target + S (ff_target_mcp_ics_product_third_cell_column) = S ((S (ff_index_mcp_ics_product_third_cell_column)) * ff_right_scale_mcp_cell_ics_product_third_cell)) /\ exists fs_q_mcp_ics_product_third_cell_column_target. ff_right_mcp_cell_ics_product_third_cell = fs_q_mcp_ics_product_third_cell_column_target * S ((S (ff_index_mcp_ics_product_third_cell_column)) * ff_right_scale_mcp_cell_ics_product_third_cell) + (ff_target_mcp_ics_product_third_cell_column))) -> ff_target_mcp_ics_product_third_cell_column = ff_source_mcp_ics_product_third_cell_column) /\ (exists ff_code_dot_mcp_ics_product_third_cell_dot ff_scale_dot_mcp_ics_product_third_cell_dot. ((forall fpmp_index_dot_mcp_ics_product_third_cell_dot_pointwise fpmp_left_dot_mcp_ics_product_third_cell_dot_pointwise fpmp_right_dot_mcp_ics_product_third_cell_dot_pointwise fpmp_target_dot_mcp_ics_product_third_cell_dot_pointwise. (exists fpmp_gap_dot_mcp_ics_product_third_cell_dot_pointwise. fpmp_gap_dot_mcp_ics_product_third_cell_dot_pointwise + S fpmp_index_dot_mcp_ics_product_third_cell_dot_pointwise = w) -> (((exists ff_h_fpmp_dot_mcp_ics_product_third_cell_dot_pointwise_left. ff_h_fpmp_dot_mcp_ics_product_third_cell_dot_pointwise_left + S (fpmp_left_dot_mcp_ics_product_third_cell_dot_pointwise) = S ((S (fpmp_index_dot_mcp_ics_product_third_cell_dot_pointwise)) * ff_left_scale_mcp_cell_ics_product_third_cell)) /\ exists ff_q_fpmp_dot_mcp_ics_product_third_cell_dot_pointwise_left. ff_left_mcp_cell_ics_product_third_cell = ff_q_fpmp_dot_mcp_ics_product_third_cell_dot_pointwise_left * S ((S (fpmp_index_dot_mcp_ics_product_third_cell_dot_pointwise)) * ff_left_scale_mcp_cell_ics_product_third_cell) + (fpmp_left_dot_mcp_ics_product_third_cell_dot_pointwise))) -> (((exists ff_h_fpmp_dot_mcp_ics_product_third_cell_dot_pointwise_right. ff_h_fpmp_dot_mcp_ics_product_third_cell_dot_pointwise_right + S (fpmp_right_dot_mcp_ics_product_third_cell_dot_pointwise) = S ((S (fpmp_index_dot_mcp_ics_product_third_cell_dot_pointwise)) * ff_right_scale_mcp_cell_ics_product_third_cell)) /\ exists ff_q_fpmp_dot_mcp_ics_product_third_cell_dot_pointwise_right. ff_right_mcp_cell_ics_product_third_cell = ff_q_fpmp_dot_mcp_ics_product_third_cell_dot_pointwise_right * S ((S (fpmp_index_dot_mcp_ics_product_third_cell_dot_pointwise)) * ff_right_scale_mcp_cell_ics_product_third_cell) + (fpmp_right_dot_mcp_ics_product_third_cell_dot_pointwise))) -> (((exists ff_h_fpmp_dot_mcp_ics_product_third_cell_dot_pointwise_target. ff_h_fpmp_dot_mcp_ics_product_third_cell_dot_pointwise_target + S (fpmp_target_dot_mcp_ics_product_third_cell_dot_pointwise) = S ((S (fpmp_index_dot_mcp_ics_product_third_cell_dot_pointwise)) * ff_scale_dot_mcp_ics_product_third_cell_dot)) /\ exists ff_q_fpmp_dot_mcp_ics_product_third_cell_dot_pointwise_target. ff_code_dot_mcp_ics_product_third_cell_dot = ff_q_fpmp_dot_mcp_ics_product_third_cell_dot_pointwise_target * S ((S (fpmp_index_dot_mcp_ics_product_third_cell_dot_pointwise)) * ff_scale_dot_mcp_ics_product_third_cell_dot) + (fpmp_target_dot_mcp_ics_product_third_cell_dot_pointwise))) -> fpmp_target_dot_mcp_ics_product_third_cell_dot_pointwise = fpmp_left_dot_mcp_ics_product_third_cell_dot_pointwise * fpmp_right_dot_mcp_ics_product_third_cell_dot_pointwise) /\ (exists ff_u_dot_mcp_ics_product_third_cell_dot_sum ff_v_dot_mcp_ics_product_third_cell_dot_sum. ((((exists ff_h_dot_mcp_ics_product_third_cell_dot_sum_start. ff_h_dot_mcp_ics_product_third_cell_dot_sum_start + S (0) = S ((S (0)) * ff_v_dot_mcp_ics_product_third_cell_dot_sum)) /\ exists ff_q_dot_mcp_ics_product_third_cell_dot_sum_start. ff_u_dot_mcp_ics_product_third_cell_dot_sum = ff_q_dot_mcp_ics_product_third_cell_dot_sum_start * S ((S (0)) * ff_v_dot_mcp_ics_product_third_cell_dot_sum) + (0))) /\ ((((exists ff_h_dot_mcp_ics_product_third_cell_dot_sum_terminal. ff_h_dot_mcp_ics_product_third_cell_dot_sum_terminal + S (ff_value_mcp_prefix_ics_product_third) = S ((S (w)) * ff_v_dot_mcp_ics_product_third_cell_dot_sum)) /\ exists ff_q_dot_mcp_ics_product_third_cell_dot_sum_terminal. ff_u_dot_mcp_ics_product_third_cell_dot_sum = ff_q_dot_mcp_ics_product_third_cell_dot_sum_terminal * S ((S (w)) * ff_v_dot_mcp_ics_product_third_cell_dot_sum) + (ff_value_mcp_prefix_ics_product_third))) /\ forall ff_i_dot_mcp_ics_product_third_cell_dot_sum. (exists ff_lt_dot_mcp_ics_product_third_cell_dot_sum_bound. ff_lt_dot_mcp_ics_product_third_cell_dot_sum_bound + S ff_i_dot_mcp_ics_product_third_cell_dot_sum = w) -> exists ff_a_dot_mcp_ics_product_third_cell_dot_sum ff_r_dot_mcp_ics_product_third_cell_dot_sum ff_s_dot_mcp_ics_product_third_cell_dot_sum. ((((exists ff_h_dot_mcp_ics_product_third_cell_dot_sum_summand. ff_h_dot_mcp_ics_product_third_cell_dot_sum_summand + S (ff_a_dot_mcp_ics_product_third_cell_dot_sum) = S ((S (ff_i_dot_mcp_ics_product_third_cell_dot_sum)) * ff_scale_dot_mcp_ics_product_third_cell_dot)) /\ exists ff_q_dot_mcp_ics_product_third_cell_dot_sum_summand. ff_code_dot_mcp_ics_product_third_cell_dot = ff_q_dot_mcp_ics_product_third_cell_dot_sum_summand * S ((S (ff_i_dot_mcp_ics_product_third_cell_dot_sum)) * ff_scale_dot_mcp_ics_product_third_cell_dot) + (ff_a_dot_mcp_ics_product_third_cell_dot_sum))) /\ ((((exists ff_h_dot_mcp_ics_product_third_cell_dot_sum_partial. ff_h_dot_mcp_ics_product_third_cell_dot_sum_partial + S (ff_r_dot_mcp_ics_product_third_cell_dot_sum) = S ((S (ff_i_dot_mcp_ics_product_third_cell_dot_sum)) * ff_v_dot_mcp_ics_product_third_cell_dot_sum)) /\ exists ff_q_dot_mcp_ics_product_third_cell_dot_sum_partial. ff_u_dot_mcp_ics_product_third_cell_dot_sum = ff_q_dot_mcp_ics_product_third_cell_dot_sum_partial * S ((S (ff_i_dot_mcp_ics_product_third_cell_dot_sum)) * ff_v_dot_mcp_ics_product_third_cell_dot_sum) + (ff_r_dot_mcp_ics_product_third_cell_dot_sum))) /\ ((((exists ff_h_dot_mcp_ics_product_third_cell_dot_sum_successor. ff_h_dot_mcp_ics_product_third_cell_dot_sum_successor + S (ff_s_dot_mcp_ics_product_third_cell_dot_sum) = S ((S (S ff_i_dot_mcp_ics_product_third_cell_dot_sum)) * ff_v_dot_mcp_ics_product_third_cell_dot_sum)) /\ exists ff_q_dot_mcp_ics_product_third_cell_dot_sum_successor. ff_u_dot_mcp_ics_product_third_cell_dot_sum = ff_q_dot_mcp_ics_product_third_cell_dot_sum_successor * S ((S (S ff_i_dot_mcp_ics_product_third_cell_dot_sum)) * ff_v_dot_mcp_ics_product_third_cell_dot_sum) + (ff_s_dot_mcp_ics_product_third_cell_dot_sum))) /\ ff_s_dot_mcp_ics_product_third_cell_dot_sum = ff_r_dot_mcp_ics_product_third_cell_dot_sum + ff_a_dot_mcp_ics_product_third_cell_dot_sum))))))))))) /\ (((exists fs_h_mcp_ics_product_third_entry. fs_h_mcp_ics_product_third_entry + S (ff_value_mcp_prefix_ics_product_third) = S ((S (ff_index_mcp_prefix_ics_product_third)) * rc)) /\ exists fs_q_mcp_ics_product_third_entry. rb = fs_q_mcp_ics_product_third_entry * S ((S (ff_index_mcp_prefix_ics_product_third)) * rc) + (ff_value_mcp_prefix_ics_product_third))))))) -> (forall ff_index_mcp_add_ics_product_output_add ff_left_mcp_add_ics_product_output_add ff_right_mcp_add_ics_product_output_add ff_target_mcp_add_ics_product_output_add. (exists mcp_gap_ics_product_output_add_bound. mcp_gap_ics_product_output_add_bound + S (ff_index_mcp_add_ics_product_output_add) = (l)) -> (((exists fs_h_mcp_ics_product_output_add_left. fs_h_mcp_ics_product_output_add_left + S (ff_left_mcp_add_ics_product_output_add) = S ((S (ff_index_mcp_add_ics_product_output_add)) * pc)) /\ exists fs_q_mcp_ics_product_output_add_left. pb = fs_q_mcp_ics_product_output_add_left * S ((S (ff_index_mcp_add_ics_product_output_add)) * pc) + (ff_left_mcp_add_ics_product_output_add))) -> (((exists fs_h_mcp_ics_product_output_add_right. fs_h_mcp_ics_product_output_add_right + S (ff_right_mcp_add_ics_product_output_add) = S ((S (ff_index_mcp_add_ics_product_output_add)) * qc)) /\ exists fs_q_mcp_ics_product_output_add_right. qb = fs_q_mcp_ics_product_output_add_right * S ((S (ff_index_mcp_add_ics_product_output_add)) * qc) + (ff_right_mcp_add_ics_product_output_add))) -> (((exists fs_h_mcp_ics_product_output_add_target. fs_h_mcp_ics_product_output_add_target + S (ff_target_mcp_add_ics_product_output_add) = S ((S (ff_index_mcp_add_ics_product_output_add)) * rc)) /\ exists fs_q_mcp_ics_product_output_add_target. rb = fs_q_mcp_ics_product_output_add_target * S ((S (ff_index_mcp_add_ics_product_output_add)) * rc) + (ff_target_mcp_add_ics_product_output_add))) -> ff_target_mcp_add_ics_product_output_add = ff_left_mcp_add_ics_product_output_add + ff_right_mcp_add_ics_product_output_add)

Complete tactic proof in conservative notation

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

88 script commands · 9 reading checkpoints · 0 local claims

This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.

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

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

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

  1. L1
    intro ab
  2. L2
    intro ac
  3. L3
    intro bb
  4. L4
    intro bc
  5. L5
    intro cb
  6. L6
    intro cc
  7. L7
    intro db
  8. L8
    intro dc
  9. L9
    intro w
  10. L10
    intro pb
02Fix variables and assumptionsL11–20

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

  1. L11
    intro pc
  2. L12
    intro qb
  3. L13
    intro qc
  4. L14
    intro rb
  5. L15
    intro rc
  6. L16
    intro l
  7. L17
    intro hadd
  8. L18
    intro hfirst
  9. L19
    intro hsecond
  10. L20
    intro hthird
03Fix variables and assumptionsL21–28

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

  1. L21
    intro i
  2. L22
    intro L
  3. L23
    intro M
  4. L24
    intro N
  5. L25
    intro hi
  6. L26
    intro hL
  7. L27
    intro hM
  8. L28
    intro hN
04Use earlier factsL29–38

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

  1. L29
    specialize eq_symm (L + M)
  2. L30
    specialize eq_symm (N)
  3. L31
    apply eq_symm
  4. L32
    specialize integer_span_natural_cell_add_right (ab)
  5. L33
    specialize integer_span_natural_cell_add_right (ac)
  6. L34
    specialize integer_span_natural_cell_add_right (bb)
  7. L35
    specialize integer_span_natural_cell_add_right (bc)
  8. L36
    specialize integer_span_natural_cell_add_right (cb)
  9. L37
    specialize integer_span_natural_cell_add_right (cc)
  10. L38
    specialize integer_span_natural_cell_add_right (db)
05Use earlier factsL39–48

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

  1. L39
    specialize integer_span_natural_cell_add_right (dc)
  2. L40
    specialize integer_span_natural_cell_add_right (w)
  3. L41
    specialize integer_span_natural_cell_add_right (i)
  4. L42
    specialize integer_span_natural_cell_add_right (L)
  5. L43
    specialize integer_span_natural_cell_add_right (M)
  6. L44
    specialize integer_span_natural_cell_add_right (N)
  7. L45
    apply integer_span_natural_cell_add_right
  8. L46
    exact hadd
  9. L47
    specialize integer_span_natural_product_entry (ab)
  10. L48
    specialize integer_span_natural_product_entry (ac)
06Use earlier factsL49–58

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

  1. L49
    specialize integer_span_natural_product_entry (bb)
  2. L50
    specialize integer_span_natural_product_entry (bc)
  3. L51
    specialize integer_span_natural_product_entry (w)
  4. L52
    specialize integer_span_natural_product_entry (pb)
  5. L53
    specialize integer_span_natural_product_entry (pc)
  6. L54
    specialize integer_span_natural_product_entry (l)
  7. L55
    specialize integer_span_natural_product_entry (i)
  8. L56
    specialize integer_span_natural_product_entry (L)
  9. L57
    apply integer_span_natural_product_entry
  10. L58
    exact hfirst
07Use earlier factsL59–68

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

  1. L59
    exact hi
  2. L60
    exact hL
  3. L61
    specialize integer_span_natural_product_entry (ab)
  4. L62
    specialize integer_span_natural_product_entry (ac)
  5. L63
    specialize integer_span_natural_product_entry (cb)
  6. L64
    specialize integer_span_natural_product_entry (cc)
  7. L65
    specialize integer_span_natural_product_entry (w)
  8. L66
    specialize integer_span_natural_product_entry (qb)
  9. L67
    specialize integer_span_natural_product_entry (qc)
  10. L68
    specialize integer_span_natural_product_entry (l)
08Use earlier factsL69–78

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

  1. L69
    specialize integer_span_natural_product_entry (i)
  2. L70
    specialize integer_span_natural_product_entry (M)
  3. L71
    apply integer_span_natural_product_entry
  4. L72
    exact hsecond
  5. L73
    exact hi
  6. L74
    exact hM
  7. L75
    specialize integer_span_natural_product_entry (ab)
  8. L76
    specialize integer_span_natural_product_entry (ac)
  9. L77
    specialize integer_span_natural_product_entry (db)
  10. L78
    specialize integer_span_natural_product_entry (dc)
09Use earlier factsL79–88

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

  1. L79
    specialize integer_span_natural_product_entry (w)
  2. L80
    specialize integer_span_natural_product_entry (rb)
  3. L81
    specialize integer_span_natural_product_entry (rc)
  4. L82
    specialize integer_span_natural_product_entry (l)
  5. L83
    specialize integer_span_natural_product_entry (i)
  6. L84
    specialize integer_span_natural_product_entry (N)
  7. L85
    apply integer_span_natural_product_entry
  8. L86
    exact hthird
  9. L87
    exact hi
  10. L88
    exact hN

Library-wide reading audit

Original defined command ledger · 88 lines
  1. 0001intro ab
  2. 0002intro ac
  3. 0003intro bb
  4. 0004intro bc
  5. 0005intro cb
  6. 0006intro cc
  7. 0007intro db
  8. 0008intro dc
  9. 0009intro w
  10. 0010intro pb
  11. 0011intro pc
  12. 0012intro qb
  13. 0013intro qc
  14. 0014intro rb
  15. 0015intro rc
  16. 0016intro l
  17. 0017intro hadd
  18. 0018intro hfirst
  19. 0019intro hsecond
  20. 0020intro hthird
  21. 0021intro i
  22. 0022intro L
  23. 0023intro M
  24. 0024intro N
  25. 0025intro hi
  26. 0026intro hL
  27. 0027intro hM
  28. 0028intro hN
  29. 0029specialize eq_symm (L + M)
  30. 0030specialize eq_symm (N)
  31. 0031apply eq_symm
  32. 0032specialize integer_span_natural_cell_add_right (ab)
  33. 0033specialize integer_span_natural_cell_add_right (ac)
  34. 0034specialize integer_span_natural_cell_add_right (bb)
  35. 0035specialize integer_span_natural_cell_add_right (bc)
  36. 0036specialize integer_span_natural_cell_add_right (cb)
  37. 0037specialize integer_span_natural_cell_add_right (cc)
  38. 0038specialize integer_span_natural_cell_add_right (db)
  39. 0039specialize integer_span_natural_cell_add_right (dc)
  40. 0040specialize integer_span_natural_cell_add_right (w)
  41. 0041specialize integer_span_natural_cell_add_right (i)
  42. 0042specialize integer_span_natural_cell_add_right (L)
  43. 0043specialize integer_span_natural_cell_add_right (M)
  44. 0044specialize integer_span_natural_cell_add_right (N)
  45. 0045apply integer_span_natural_cell_add_right
  46. 0046exact hadd
  47. 0047specialize integer_span_natural_product_entry (ab)
  48. 0048specialize integer_span_natural_product_entry (ac)
  49. 0049specialize integer_span_natural_product_entry (bb)
  50. 0050specialize integer_span_natural_product_entry (bc)
  51. 0051specialize integer_span_natural_product_entry (w)
  52. 0052specialize integer_span_natural_product_entry (pb)
  53. 0053specialize integer_span_natural_product_entry (pc)
  54. 0054specialize integer_span_natural_product_entry (l)
  55. 0055specialize integer_span_natural_product_entry (i)
  56. 0056specialize integer_span_natural_product_entry (L)
  57. 0057apply integer_span_natural_product_entry
  58. 0058exact hfirst
  59. 0059exact hi
  60. 0060exact hL
  61. 0061specialize integer_span_natural_product_entry (ab)
  62. 0062specialize integer_span_natural_product_entry (ac)
  63. 0063specialize integer_span_natural_product_entry (cb)
  64. 0064specialize integer_span_natural_product_entry (cc)
  65. 0065specialize integer_span_natural_product_entry (w)
  66. 0066specialize integer_span_natural_product_entry (qb)
  67. 0067specialize integer_span_natural_product_entry (qc)
  68. 0068specialize integer_span_natural_product_entry (l)
  69. 0069specialize integer_span_natural_product_entry (i)
  70. 0070specialize integer_span_natural_product_entry (M)
  71. 0071apply integer_span_natural_product_entry
  72. 0072exact hsecond
  73. 0073exact hi
  74. 0074exact hM
  75. 0075specialize integer_span_natural_product_entry (ab)
  76. 0076specialize integer_span_natural_product_entry (ac)
  77. 0077specialize integer_span_natural_product_entry (db)
  78. 0078specialize integer_span_natural_product_entry (dc)
  79. 0079specialize integer_span_natural_product_entry (w)
  80. 0080specialize integer_span_natural_product_entry (rb)
  81. 0081specialize integer_span_natural_product_entry (rc)
  82. 0082specialize integer_span_natural_product_entry (l)
  83. 0083specialize integer_span_natural_product_entry (i)
  84. 0084specialize integer_span_natural_product_entry (N)
  85. 0085apply integer_span_natural_product_entry
  86. 0086exact hthird
  87. 0087exact hi
  88. 0088exact hN