DL000F

matrix_recursive_children_extend

Append one actual smaller determinant to the cofactor streams, preserving all previously certified columns.

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

∀ b. ∀ c. ∀ l. ∀ pb. ∀ pc. ∀ nb. ∀ nc. ∀ q. ∀ eb. ∀ ec. ∀ fb. ∀ fc. ∀ k. ∀ i. ∀ up. ∀ us. ∀ un. ∀ ut. ∀ a. ∀ z. SignedDeterminantChildPrefix(b,c,l,pb,pc,nb,nc,q,eb,ec,fb,fc,k)Lt(i,l)SignedDeterminantNodeAt(b,c,i,q,up,us,un,ut,a,z)SignedMatrixMinor(pb,pc,nb,nc,S q,0,k,q,up,us,un,ut) → ∃ x. ∃ y. ∃ n. ∃ m. SignedDeterminantChildPrefix(b,c,l,pb,pc,nb,nc,q,x,y,n,m,S k)

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

Definition DAG

Actual proof prerequisites

beta_prefix_extend · checked external prerequisitefinite_lt_succ_eq_or_lt · checked external prerequisitematrix_recursive_children_recode
Original expanded first-order statement
forall b c l pb pc nb nc q eb ec fb fc k i up us un ut a z. (forall mdr_j_old. (exists mdr_gap_oldj. mdr_gap_oldj + S (mdr_j_old) = (k)) -> exists mdr_i_old mdr_up_old mdr_us_old mdr_un_old mdr_ut_old mdr_p_old mdr_n_old. ((exists mdr_gap_oldi. mdr_gap_oldi + S (mdr_i_old) = (l)) /\ ((exists mdr_z_oldr. ((exists mdr_a_oldrc mdr_b_oldrc mdr_c_oldrc mdr_e_oldrc mdr_f_oldrc. ((mdr_a_oldrc = ((q) + (mdr_up_old)) * S ((q) + (mdr_up_old)) + ((mdr_up_old) + (mdr_up_old))) /\ ((mdr_b_oldrc = ((mdr_us_old) + (mdr_un_old)) * S ((mdr_us_old) + (mdr_un_old)) + ((mdr_un_old) + (mdr_un_old))) /\ ((mdr_c_oldrc = ((mdr_a_oldrc) + (mdr_b_oldrc)) * S ((mdr_a_oldrc) + (mdr_b_oldrc)) + ((mdr_b_oldrc) + (mdr_b_oldrc))) /\ ((mdr_e_oldrc = ((mdr_p_old) + (mdr_n_old)) * S ((mdr_p_old) + (mdr_n_old)) + ((mdr_n_old) + (mdr_n_old))) /\ ((mdr_f_oldrc = ((mdr_ut_old) + (mdr_e_oldrc)) * S ((mdr_ut_old) + (mdr_e_oldrc)) + ((mdr_e_oldrc) + (mdr_e_oldrc))) /\ ((mdr_z_oldr) = ((mdr_c_oldrc) + (mdr_f_oldrc)) * S ((mdr_c_oldrc) + (mdr_f_oldrc)) + ((mdr_f_oldrc) + (mdr_f_oldrc))))))))) /\ (((exists ff_h_mdr_oldrb. ff_h_mdr_oldrb + S (mdr_z_oldr) = S ((S (mdr_i_old)) * c)) /\ exists ff_q_mdr_oldrb. b = ff_q_mdr_oldrb * S ((S (mdr_i_old)) * c) + (mdr_z_oldr))))) /\ ((((forall ff_index_mdm_prefix_mdr_oldm_positive. (exists ff_gap_mdm_lt_mdr_oldm_positive_index_bound. ff_gap_mdm_lt_mdr_oldm_positive_index_bound + S (ff_index_mdm_prefix_mdr_oldm_positive) = ((q) * (q))) -> exists ff_row_mdm_prefix_mdr_oldm_positive ff_column_mdm_prefix_mdr_oldm_positive ff_value_mdm_prefix_mdr_oldm_positive. (ff_index_mdm_prefix_mdr_oldm_positive = (q) * ff_row_mdm_prefix_mdr_oldm_positive + ff_column_mdm_prefix_mdr_oldm_positive /\ ((exists ff_gap_mdm_lt_mdr_oldm_positive_column_bound. ff_gap_mdm_lt_mdr_oldm_positive_column_bound + S (ff_column_mdm_prefix_mdr_oldm_positive) = (q)) /\ ((exists ff_row_mdm_cell_mdr_oldm_positive_cell ff_column_mdm_cell_mdr_oldm_positive_cell. (((((exists ff_gap_mdm_lt_mdr_oldm_positive_cell_row_before. ff_gap_mdm_lt_mdr_oldm_positive_cell_row_before + S (ff_row_mdm_prefix_mdr_oldm_positive) = (0)) /\ ff_row_mdm_cell_mdr_oldm_positive_cell = ff_row_mdm_prefix_mdr_oldm_positive) \/ ((exists ff_gap_mdm_le_mdr_oldm_positive_cell_row_after. ff_gap_mdm_le_mdr_oldm_positive_cell_row_after + (0) = (ff_row_mdm_prefix_mdr_oldm_positive)) /\ ff_row_mdm_cell_mdr_oldm_positive_cell = S ff_row_mdm_prefix_mdr_oldm_positive))) /\ (((((exists ff_gap_mdm_lt_mdr_oldm_positive_cell_column_before. ff_gap_mdm_lt_mdr_oldm_positive_cell_column_before + S (ff_column_mdm_prefix_mdr_oldm_positive) = (mdr_j_old)) /\ ff_column_mdm_cell_mdr_oldm_positive_cell = ff_column_mdm_prefix_mdr_oldm_positive) \/ ((exists ff_gap_mdm_le_mdr_oldm_positive_cell_column_after. ff_gap_mdm_le_mdr_oldm_positive_cell_column_after + (mdr_j_old) = (ff_column_mdm_prefix_mdr_oldm_positive)) /\ ff_column_mdm_cell_mdr_oldm_positive_cell = S ff_column_mdm_prefix_mdr_oldm_positive))) /\ (((exists ff_h_mdm_mdr_oldm_positive_cell_source. ff_h_mdm_mdr_oldm_positive_cell_source + S (ff_value_mdm_prefix_mdr_oldm_positive) = S ((S ((ff_row_mdm_cell_mdr_oldm_positive_cell) * (S (q)) + (ff_column_mdm_cell_mdr_oldm_positive_cell))) * pc)) /\ exists ff_q_mdm_mdr_oldm_positive_cell_source. pb = ff_q_mdm_mdr_oldm_positive_cell_source * S ((S ((ff_row_mdm_cell_mdr_oldm_positive_cell) * (S (q)) + (ff_column_mdm_cell_mdr_oldm_positive_cell))) * pc) + (ff_value_mdm_prefix_mdr_oldm_positive)))))) /\ (((exists ff_h_mdm_mdr_oldm_positive_target. ff_h_mdm_mdr_oldm_positive_target + S (ff_value_mdm_prefix_mdr_oldm_positive) = S ((S (ff_index_mdm_prefix_mdr_oldm_positive)) * mdr_us_old)) /\ exists ff_q_mdm_mdr_oldm_positive_target. mdr_up_old = ff_q_mdm_mdr_oldm_positive_target * S ((S (ff_index_mdm_prefix_mdr_oldm_positive)) * mdr_us_old) + (ff_value_mdm_prefix_mdr_oldm_positive))))))) /\ (forall ff_index_mdm_prefix_mdr_oldm_negative. (exists ff_gap_mdm_lt_mdr_oldm_negative_index_bound. ff_gap_mdm_lt_mdr_oldm_negative_index_bound + S (ff_index_mdm_prefix_mdr_oldm_negative) = ((q) * (q))) -> exists ff_row_mdm_prefix_mdr_oldm_negative ff_column_mdm_prefix_mdr_oldm_negative ff_value_mdm_prefix_mdr_oldm_negative. (ff_index_mdm_prefix_mdr_oldm_negative = (q) * ff_row_mdm_prefix_mdr_oldm_negative + ff_column_mdm_prefix_mdr_oldm_negative /\ ((exists ff_gap_mdm_lt_mdr_oldm_negative_column_bound. ff_gap_mdm_lt_mdr_oldm_negative_column_bound + S (ff_column_mdm_prefix_mdr_oldm_negative) = (q)) /\ ((exists ff_row_mdm_cell_mdr_oldm_negative_cell ff_column_mdm_cell_mdr_oldm_negative_cell. (((((exists ff_gap_mdm_lt_mdr_oldm_negative_cell_row_before. ff_gap_mdm_lt_mdr_oldm_negative_cell_row_before + S (ff_row_mdm_prefix_mdr_oldm_negative) = (0)) /\ ff_row_mdm_cell_mdr_oldm_negative_cell = ff_row_mdm_prefix_mdr_oldm_negative) \/ ((exists ff_gap_mdm_le_mdr_oldm_negative_cell_row_after. ff_gap_mdm_le_mdr_oldm_negative_cell_row_after + (0) = (ff_row_mdm_prefix_mdr_oldm_negative)) /\ ff_row_mdm_cell_mdr_oldm_negative_cell = S ff_row_mdm_prefix_mdr_oldm_negative))) /\ (((((exists ff_gap_mdm_lt_mdr_oldm_negative_cell_column_before. ff_gap_mdm_lt_mdr_oldm_negative_cell_column_before + S (ff_column_mdm_prefix_mdr_oldm_negative) = (mdr_j_old)) /\ ff_column_mdm_cell_mdr_oldm_negative_cell = ff_column_mdm_prefix_mdr_oldm_negative) \/ ((exists ff_gap_mdm_le_mdr_oldm_negative_cell_column_after. ff_gap_mdm_le_mdr_oldm_negative_cell_column_after + (mdr_j_old) = (ff_column_mdm_prefix_mdr_oldm_negative)) /\ ff_column_mdm_cell_mdr_oldm_negative_cell = S ff_column_mdm_prefix_mdr_oldm_negative))) /\ (((exists ff_h_mdm_mdr_oldm_negative_cell_source. ff_h_mdm_mdr_oldm_negative_cell_source + S (ff_value_mdm_prefix_mdr_oldm_negative) = S ((S ((ff_row_mdm_cell_mdr_oldm_negative_cell) * (S (q)) + (ff_column_mdm_cell_mdr_oldm_negative_cell))) * nc)) /\ exists ff_q_mdm_mdr_oldm_negative_cell_source. nb = ff_q_mdm_mdr_oldm_negative_cell_source * S ((S ((ff_row_mdm_cell_mdr_oldm_negative_cell) * (S (q)) + (ff_column_mdm_cell_mdr_oldm_negative_cell))) * nc) + (ff_value_mdm_prefix_mdr_oldm_negative)))))) /\ (((exists ff_h_mdm_mdr_oldm_negative_target. ff_h_mdm_mdr_oldm_negative_target + S (ff_value_mdm_prefix_mdr_oldm_negative) = S ((S (ff_index_mdm_prefix_mdr_oldm_negative)) * mdr_ut_old)) /\ exists ff_q_mdm_mdr_oldm_negative_target. mdr_un_old = ff_q_mdm_mdr_oldm_negative_target * S ((S (ff_index_mdm_prefix_mdr_oldm_negative)) * mdr_ut_old) + (ff_value_mdm_prefix_mdr_oldm_negative))))))))) /\ ((((exists ff_h_mdr_oldp. ff_h_mdr_oldp + S (mdr_p_old) = S ((S (mdr_j_old)) * ec)) /\ exists ff_q_mdr_oldp. eb = ff_q_mdr_oldp * S ((S (mdr_j_old)) * ec) + (mdr_p_old))) /\ (((exists ff_h_mdr_oldn. ff_h_mdr_oldn + S (mdr_n_old) = S ((S (mdr_j_old)) * fc)) /\ exists ff_q_mdr_oldn. fb = ff_q_mdr_oldn * S ((S (mdr_j_old)) * fc) + (mdr_n_old)))))))) -> (exists mdr_gap_append_child_bound. mdr_gap_append_child_bound + S (i) = (l)) -> (exists mdr_z_append_child_record. ((exists mdr_a_append_child_recordc mdr_b_append_child_recordc mdr_c_append_child_recordc mdr_e_append_child_recordc mdr_f_append_child_recordc. ((mdr_a_append_child_recordc = ((q) + (up)) * S ((q) + (up)) + ((up) + (up))) /\ ((mdr_b_append_child_recordc = ((us) + (un)) * S ((us) + (un)) + ((un) + (un))) /\ ((mdr_c_append_child_recordc = ((mdr_a_append_child_recordc) + (mdr_b_append_child_recordc)) * S ((mdr_a_append_child_recordc) + (mdr_b_append_child_recordc)) + ((mdr_b_append_child_recordc) + (mdr_b_append_child_recordc))) /\ ((mdr_e_append_child_recordc = ((a) + (z)) * S ((a) + (z)) + ((z) + (z))) /\ ((mdr_f_append_child_recordc = ((ut) + (mdr_e_append_child_recordc)) * S ((ut) + (mdr_e_append_child_recordc)) + ((mdr_e_append_child_recordc) + (mdr_e_append_child_recordc))) /\ ((mdr_z_append_child_record) = ((mdr_c_append_child_recordc) + (mdr_f_append_child_recordc)) * S ((mdr_c_append_child_recordc) + (mdr_f_append_child_recordc)) + ((mdr_f_append_child_recordc) + (mdr_f_append_child_recordc))))))))) /\ (((exists ff_h_mdr_append_child_recordb. ff_h_mdr_append_child_recordb + S (mdr_z_append_child_record) = S ((S (i)) * c)) /\ exists ff_q_mdr_append_child_recordb. b = ff_q_mdr_append_child_recordb * S ((S (i)) * c) + (mdr_z_append_child_record))))) -> (((forall ff_index_mdm_prefix_mdr_append_child_minor_positive. (exists ff_gap_mdm_lt_mdr_append_child_minor_positive_index_bound. ff_gap_mdm_lt_mdr_append_child_minor_positive_index_bound + S (ff_index_mdm_prefix_mdr_append_child_minor_positive) = ((q) * (q))) -> exists ff_row_mdm_prefix_mdr_append_child_minor_positive ff_column_mdm_prefix_mdr_append_child_minor_positive ff_value_mdm_prefix_mdr_append_child_minor_positive. (ff_index_mdm_prefix_mdr_append_child_minor_positive = (q) * ff_row_mdm_prefix_mdr_append_child_minor_positive + ff_column_mdm_prefix_mdr_append_child_minor_positive /\ ((exists ff_gap_mdm_lt_mdr_append_child_minor_positive_column_bound. ff_gap_mdm_lt_mdr_append_child_minor_positive_column_bound + S (ff_column_mdm_prefix_mdr_append_child_minor_positive) = (q)) /\ ((exists ff_row_mdm_cell_mdr_append_child_minor_positive_cell ff_column_mdm_cell_mdr_append_child_minor_positive_cell. (((((exists ff_gap_mdm_lt_mdr_append_child_minor_positive_cell_row_before. ff_gap_mdm_lt_mdr_append_child_minor_positive_cell_row_before + S (ff_row_mdm_prefix_mdr_append_child_minor_positive) = (0)) /\ ff_row_mdm_cell_mdr_append_child_minor_positive_cell = ff_row_mdm_prefix_mdr_append_child_minor_positive) \/ ((exists ff_gap_mdm_le_mdr_append_child_minor_positive_cell_row_after. ff_gap_mdm_le_mdr_append_child_minor_positive_cell_row_after + (0) = (ff_row_mdm_prefix_mdr_append_child_minor_positive)) /\ ff_row_mdm_cell_mdr_append_child_minor_positive_cell = S ff_row_mdm_prefix_mdr_append_child_minor_positive))) /\ (((((exists ff_gap_mdm_lt_mdr_append_child_minor_positive_cell_column_before. ff_gap_mdm_lt_mdr_append_child_minor_positive_cell_column_before + S (ff_column_mdm_prefix_mdr_append_child_minor_positive) = (k)) /\ ff_column_mdm_cell_mdr_append_child_minor_positive_cell = ff_column_mdm_prefix_mdr_append_child_minor_positive) \/ ((exists ff_gap_mdm_le_mdr_append_child_minor_positive_cell_column_after. ff_gap_mdm_le_mdr_append_child_minor_positive_cell_column_after + (k) = (ff_column_mdm_prefix_mdr_append_child_minor_positive)) /\ ff_column_mdm_cell_mdr_append_child_minor_positive_cell = S ff_column_mdm_prefix_mdr_append_child_minor_positive))) /\ (((exists ff_h_mdm_mdr_append_child_minor_positive_cell_source. ff_h_mdm_mdr_append_child_minor_positive_cell_source + S (ff_value_mdm_prefix_mdr_append_child_minor_positive) = S ((S ((ff_row_mdm_cell_mdr_append_child_minor_positive_cell) * (S (q)) + (ff_column_mdm_cell_mdr_append_child_minor_positive_cell))) * pc)) /\ exists ff_q_mdm_mdr_append_child_minor_positive_cell_source. pb = ff_q_mdm_mdr_append_child_minor_positive_cell_source * S ((S ((ff_row_mdm_cell_mdr_append_child_minor_positive_cell) * (S (q)) + (ff_column_mdm_cell_mdr_append_child_minor_positive_cell))) * pc) + (ff_value_mdm_prefix_mdr_append_child_minor_positive)))))) /\ (((exists ff_h_mdm_mdr_append_child_minor_positive_target. ff_h_mdm_mdr_append_child_minor_positive_target + S (ff_value_mdm_prefix_mdr_append_child_minor_positive) = S ((S (ff_index_mdm_prefix_mdr_append_child_minor_positive)) * us)) /\ exists ff_q_mdm_mdr_append_child_minor_positive_target. up = ff_q_mdm_mdr_append_child_minor_positive_target * S ((S (ff_index_mdm_prefix_mdr_append_child_minor_positive)) * us) + (ff_value_mdm_prefix_mdr_append_child_minor_positive))))))) /\ (forall ff_index_mdm_prefix_mdr_append_child_minor_negative. (exists ff_gap_mdm_lt_mdr_append_child_minor_negative_index_bound. ff_gap_mdm_lt_mdr_append_child_minor_negative_index_bound + S (ff_index_mdm_prefix_mdr_append_child_minor_negative) = ((q) * (q))) -> exists ff_row_mdm_prefix_mdr_append_child_minor_negative ff_column_mdm_prefix_mdr_append_child_minor_negative ff_value_mdm_prefix_mdr_append_child_minor_negative. (ff_index_mdm_prefix_mdr_append_child_minor_negative = (q) * ff_row_mdm_prefix_mdr_append_child_minor_negative + ff_column_mdm_prefix_mdr_append_child_minor_negative /\ ((exists ff_gap_mdm_lt_mdr_append_child_minor_negative_column_bound. ff_gap_mdm_lt_mdr_append_child_minor_negative_column_bound + S (ff_column_mdm_prefix_mdr_append_child_minor_negative) = (q)) /\ ((exists ff_row_mdm_cell_mdr_append_child_minor_negative_cell ff_column_mdm_cell_mdr_append_child_minor_negative_cell. (((((exists ff_gap_mdm_lt_mdr_append_child_minor_negative_cell_row_before. ff_gap_mdm_lt_mdr_append_child_minor_negative_cell_row_before + S (ff_row_mdm_prefix_mdr_append_child_minor_negative) = (0)) /\ ff_row_mdm_cell_mdr_append_child_minor_negative_cell = ff_row_mdm_prefix_mdr_append_child_minor_negative) \/ ((exists ff_gap_mdm_le_mdr_append_child_minor_negative_cell_row_after. ff_gap_mdm_le_mdr_append_child_minor_negative_cell_row_after + (0) = (ff_row_mdm_prefix_mdr_append_child_minor_negative)) /\ ff_row_mdm_cell_mdr_append_child_minor_negative_cell = S ff_row_mdm_prefix_mdr_append_child_minor_negative))) /\ (((((exists ff_gap_mdm_lt_mdr_append_child_minor_negative_cell_column_before. ff_gap_mdm_lt_mdr_append_child_minor_negative_cell_column_before + S (ff_column_mdm_prefix_mdr_append_child_minor_negative) = (k)) /\ ff_column_mdm_cell_mdr_append_child_minor_negative_cell = ff_column_mdm_prefix_mdr_append_child_minor_negative) \/ ((exists ff_gap_mdm_le_mdr_append_child_minor_negative_cell_column_after. ff_gap_mdm_le_mdr_append_child_minor_negative_cell_column_after + (k) = (ff_column_mdm_prefix_mdr_append_child_minor_negative)) /\ ff_column_mdm_cell_mdr_append_child_minor_negative_cell = S ff_column_mdm_prefix_mdr_append_child_minor_negative))) /\ (((exists ff_h_mdm_mdr_append_child_minor_negative_cell_source. ff_h_mdm_mdr_append_child_minor_negative_cell_source + S (ff_value_mdm_prefix_mdr_append_child_minor_negative) = S ((S ((ff_row_mdm_cell_mdr_append_child_minor_negative_cell) * (S (q)) + (ff_column_mdm_cell_mdr_append_child_minor_negative_cell))) * nc)) /\ exists ff_q_mdm_mdr_append_child_minor_negative_cell_source. nb = ff_q_mdm_mdr_append_child_minor_negative_cell_source * S ((S ((ff_row_mdm_cell_mdr_append_child_minor_negative_cell) * (S (q)) + (ff_column_mdm_cell_mdr_append_child_minor_negative_cell))) * nc) + (ff_value_mdm_prefix_mdr_append_child_minor_negative)))))) /\ (((exists ff_h_mdm_mdr_append_child_minor_negative_target. ff_h_mdm_mdr_append_child_minor_negative_target + S (ff_value_mdm_prefix_mdr_append_child_minor_negative) = S ((S (ff_index_mdm_prefix_mdr_append_child_minor_negative)) * ut)) /\ exists ff_q_mdm_mdr_append_child_minor_negative_target. un = ff_q_mdm_mdr_append_child_minor_negative_target * S ((S (ff_index_mdm_prefix_mdr_append_child_minor_negative)) * ut) + (ff_value_mdm_prefix_mdr_append_child_minor_negative))))))))) -> exists ub uc vb vc. (forall mdr_j_append_children. (exists mdr_gap_append_childrenj. mdr_gap_append_childrenj + S (mdr_j_append_children) = (S k)) -> exists mdr_i_append_children mdr_up_append_children mdr_us_append_children mdr_un_append_children mdr_ut_append_children mdr_p_append_children mdr_n_append_children. ((exists mdr_gap_append_childreni. mdr_gap_append_childreni + S (mdr_i_append_children) = (l)) /\ ((exists mdr_z_append_childrenr. ((exists mdr_a_append_childrenrc mdr_b_append_childrenrc mdr_c_append_childrenrc mdr_e_append_childrenrc mdr_f_append_childrenrc. ((mdr_a_append_childrenrc = ((q) + (mdr_up_append_children)) * S ((q) + (mdr_up_append_children)) + ((mdr_up_append_children) + (mdr_up_append_children))) /\ ((mdr_b_append_childrenrc = ((mdr_us_append_children) + (mdr_un_append_children)) * S ((mdr_us_append_children) + (mdr_un_append_children)) + ((mdr_un_append_children) + (mdr_un_append_children))) /\ ((mdr_c_append_childrenrc = ((mdr_a_append_childrenrc) + (mdr_b_append_childrenrc)) * S ((mdr_a_append_childrenrc) + (mdr_b_append_childrenrc)) + ((mdr_b_append_childrenrc) + (mdr_b_append_childrenrc))) /\ ((mdr_e_append_childrenrc = ((mdr_p_append_children) + (mdr_n_append_children)) * S ((mdr_p_append_children) + (mdr_n_append_children)) + ((mdr_n_append_children) + (mdr_n_append_children))) /\ ((mdr_f_append_childrenrc = ((mdr_ut_append_children) + (mdr_e_append_childrenrc)) * S ((mdr_ut_append_children) + (mdr_e_append_childrenrc)) + ((mdr_e_append_childrenrc) + (mdr_e_append_childrenrc))) /\ ((mdr_z_append_childrenr) = ((mdr_c_append_childrenrc) + (mdr_f_append_childrenrc)) * S ((mdr_c_append_childrenrc) + (mdr_f_append_childrenrc)) + ((mdr_f_append_childrenrc) + (mdr_f_append_childrenrc))))))))) /\ (((exists ff_h_mdr_append_childrenrb. ff_h_mdr_append_childrenrb + S (mdr_z_append_childrenr) = S ((S (mdr_i_append_children)) * c)) /\ exists ff_q_mdr_append_childrenrb. b = ff_q_mdr_append_childrenrb * S ((S (mdr_i_append_children)) * c) + (mdr_z_append_childrenr))))) /\ ((((forall ff_index_mdm_prefix_mdr_append_childrenm_positive. (exists ff_gap_mdm_lt_mdr_append_childrenm_positive_index_bound. ff_gap_mdm_lt_mdr_append_childrenm_positive_index_bound + S (ff_index_mdm_prefix_mdr_append_childrenm_positive) = ((q) * (q))) -> exists ff_row_mdm_prefix_mdr_append_childrenm_positive ff_column_mdm_prefix_mdr_append_childrenm_positive ff_value_mdm_prefix_mdr_append_childrenm_positive. (ff_index_mdm_prefix_mdr_append_childrenm_positive = (q) * ff_row_mdm_prefix_mdr_append_childrenm_positive + ff_column_mdm_prefix_mdr_append_childrenm_positive /\ ((exists ff_gap_mdm_lt_mdr_append_childrenm_positive_column_bound. ff_gap_mdm_lt_mdr_append_childrenm_positive_column_bound + S (ff_column_mdm_prefix_mdr_append_childrenm_positive) = (q)) /\ ((exists ff_row_mdm_cell_mdr_append_childrenm_positive_cell ff_column_mdm_cell_mdr_append_childrenm_positive_cell. (((((exists ff_gap_mdm_lt_mdr_append_childrenm_positive_cell_row_before. ff_gap_mdm_lt_mdr_append_childrenm_positive_cell_row_before + S (ff_row_mdm_prefix_mdr_append_childrenm_positive) = (0)) /\ ff_row_mdm_cell_mdr_append_childrenm_positive_cell = ff_row_mdm_prefix_mdr_append_childrenm_positive) \/ ((exists ff_gap_mdm_le_mdr_append_childrenm_positive_cell_row_after. ff_gap_mdm_le_mdr_append_childrenm_positive_cell_row_after + (0) = (ff_row_mdm_prefix_mdr_append_childrenm_positive)) /\ ff_row_mdm_cell_mdr_append_childrenm_positive_cell = S ff_row_mdm_prefix_mdr_append_childrenm_positive))) /\ (((((exists ff_gap_mdm_lt_mdr_append_childrenm_positive_cell_column_before. ff_gap_mdm_lt_mdr_append_childrenm_positive_cell_column_before + S (ff_column_mdm_prefix_mdr_append_childrenm_positive) = (mdr_j_append_children)) /\ ff_column_mdm_cell_mdr_append_childrenm_positive_cell = ff_column_mdm_prefix_mdr_append_childrenm_positive) \/ ((exists ff_gap_mdm_le_mdr_append_childrenm_positive_cell_column_after. ff_gap_mdm_le_mdr_append_childrenm_positive_cell_column_after + (mdr_j_append_children) = (ff_column_mdm_prefix_mdr_append_childrenm_positive)) /\ ff_column_mdm_cell_mdr_append_childrenm_positive_cell = S ff_column_mdm_prefix_mdr_append_childrenm_positive))) /\ (((exists ff_h_mdm_mdr_append_childrenm_positive_cell_source. ff_h_mdm_mdr_append_childrenm_positive_cell_source + S (ff_value_mdm_prefix_mdr_append_childrenm_positive) = S ((S ((ff_row_mdm_cell_mdr_append_childrenm_positive_cell) * (S (q)) + (ff_column_mdm_cell_mdr_append_childrenm_positive_cell))) * pc)) /\ exists ff_q_mdm_mdr_append_childrenm_positive_cell_source. pb = ff_q_mdm_mdr_append_childrenm_positive_cell_source * S ((S ((ff_row_mdm_cell_mdr_append_childrenm_positive_cell) * (S (q)) + (ff_column_mdm_cell_mdr_append_childrenm_positive_cell))) * pc) + (ff_value_mdm_prefix_mdr_append_childrenm_positive)))))) /\ (((exists ff_h_mdm_mdr_append_childrenm_positive_target. ff_h_mdm_mdr_append_childrenm_positive_target + S (ff_value_mdm_prefix_mdr_append_childrenm_positive) = S ((S (ff_index_mdm_prefix_mdr_append_childrenm_positive)) * mdr_us_append_children)) /\ exists ff_q_mdm_mdr_append_childrenm_positive_target. mdr_up_append_children = ff_q_mdm_mdr_append_childrenm_positive_target * S ((S (ff_index_mdm_prefix_mdr_append_childrenm_positive)) * mdr_us_append_children) + (ff_value_mdm_prefix_mdr_append_childrenm_positive))))))) /\ (forall ff_index_mdm_prefix_mdr_append_childrenm_negative. (exists ff_gap_mdm_lt_mdr_append_childrenm_negative_index_bound. ff_gap_mdm_lt_mdr_append_childrenm_negative_index_bound + S (ff_index_mdm_prefix_mdr_append_childrenm_negative) = ((q) * (q))) -> exists ff_row_mdm_prefix_mdr_append_childrenm_negative ff_column_mdm_prefix_mdr_append_childrenm_negative ff_value_mdm_prefix_mdr_append_childrenm_negative. (ff_index_mdm_prefix_mdr_append_childrenm_negative = (q) * ff_row_mdm_prefix_mdr_append_childrenm_negative + ff_column_mdm_prefix_mdr_append_childrenm_negative /\ ((exists ff_gap_mdm_lt_mdr_append_childrenm_negative_column_bound. ff_gap_mdm_lt_mdr_append_childrenm_negative_column_bound + S (ff_column_mdm_prefix_mdr_append_childrenm_negative) = (q)) /\ ((exists ff_row_mdm_cell_mdr_append_childrenm_negative_cell ff_column_mdm_cell_mdr_append_childrenm_negative_cell. (((((exists ff_gap_mdm_lt_mdr_append_childrenm_negative_cell_row_before. ff_gap_mdm_lt_mdr_append_childrenm_negative_cell_row_before + S (ff_row_mdm_prefix_mdr_append_childrenm_negative) = (0)) /\ ff_row_mdm_cell_mdr_append_childrenm_negative_cell = ff_row_mdm_prefix_mdr_append_childrenm_negative) \/ ((exists ff_gap_mdm_le_mdr_append_childrenm_negative_cell_row_after. ff_gap_mdm_le_mdr_append_childrenm_negative_cell_row_after + (0) = (ff_row_mdm_prefix_mdr_append_childrenm_negative)) /\ ff_row_mdm_cell_mdr_append_childrenm_negative_cell = S ff_row_mdm_prefix_mdr_append_childrenm_negative))) /\ (((((exists ff_gap_mdm_lt_mdr_append_childrenm_negative_cell_column_before. ff_gap_mdm_lt_mdr_append_childrenm_negative_cell_column_before + S (ff_column_mdm_prefix_mdr_append_childrenm_negative) = (mdr_j_append_children)) /\ ff_column_mdm_cell_mdr_append_childrenm_negative_cell = ff_column_mdm_prefix_mdr_append_childrenm_negative) \/ ((exists ff_gap_mdm_le_mdr_append_childrenm_negative_cell_column_after. ff_gap_mdm_le_mdr_append_childrenm_negative_cell_column_after + (mdr_j_append_children) = (ff_column_mdm_prefix_mdr_append_childrenm_negative)) /\ ff_column_mdm_cell_mdr_append_childrenm_negative_cell = S ff_column_mdm_prefix_mdr_append_childrenm_negative))) /\ (((exists ff_h_mdm_mdr_append_childrenm_negative_cell_source. ff_h_mdm_mdr_append_childrenm_negative_cell_source + S (ff_value_mdm_prefix_mdr_append_childrenm_negative) = S ((S ((ff_row_mdm_cell_mdr_append_childrenm_negative_cell) * (S (q)) + (ff_column_mdm_cell_mdr_append_childrenm_negative_cell))) * nc)) /\ exists ff_q_mdm_mdr_append_childrenm_negative_cell_source. nb = ff_q_mdm_mdr_append_childrenm_negative_cell_source * S ((S ((ff_row_mdm_cell_mdr_append_childrenm_negative_cell) * (S (q)) + (ff_column_mdm_cell_mdr_append_childrenm_negative_cell))) * nc) + (ff_value_mdm_prefix_mdr_append_childrenm_negative)))))) /\ (((exists ff_h_mdm_mdr_append_childrenm_negative_target. ff_h_mdm_mdr_append_childrenm_negative_target + S (ff_value_mdm_prefix_mdr_append_childrenm_negative) = S ((S (ff_index_mdm_prefix_mdr_append_childrenm_negative)) * mdr_ut_append_children)) /\ exists ff_q_mdm_mdr_append_childrenm_negative_target. mdr_un_append_children = ff_q_mdm_mdr_append_childrenm_negative_target * S ((S (ff_index_mdm_prefix_mdr_append_childrenm_negative)) * mdr_ut_append_children) + (ff_value_mdm_prefix_mdr_append_childrenm_negative))))))))) /\ ((((exists ff_h_mdr_append_childrenp. ff_h_mdr_append_childrenp + S (mdr_p_append_children) = S ((S (mdr_j_append_children)) * uc)) /\ exists ff_q_mdr_append_childrenp. ub = ff_q_mdr_append_childrenp * S ((S (mdr_j_append_children)) * uc) + (mdr_p_append_children))) /\ (((exists ff_h_mdr_append_childrenn. ff_h_mdr_append_childrenn + S (mdr_n_append_children) = S ((S (mdr_j_append_children)) * vc)) /\ exists ff_q_mdr_append_childrenn. vb = ff_q_mdr_append_childrenn * S ((S (mdr_j_append_children)) * vc) + (mdr_n_append_children))))))))

Complete tactic proof in conservative notation

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

103 script commands · 27 reading checkpoints · 4 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 b
  2. L2
    intro c
  3. L3
    intro l
  4. L4
    intro pb
  5. L5
    intro pc
  6. L6
    intro nb
  7. L7
    intro nc
  8. L8
    intro q
  9. L9
    intro eb
  10. L10
    intro ec
02Fix variables and assumptionsL11–20

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

  1. L11
    intro fb
  2. L12
    intro fc
  3. L13
    intro k
  4. L14
    intro i
  5. L15
    intro up
  6. L16
    intro us
  7. L17
    intro un
  8. L18
    intro ut
  9. L19
    intro a
  10. L20
    intro z
03Fix variables and assumptionsL21–24

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

  1. L21
    intro hchildren
  2. L22
    intro hi
  3. L23
    intro hrecord
  4. L24
    intro hminor
04Establish hposL25–30

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta prefix extend.

  1. L25
    have hpos : ∃ ub. ∃ uc. BetaAt(ub,uc,k,a) ∧ (∀ x. ∀ y. Lt(x,k) → BetaAt(eb,ec,x,y) → BetaAt(ub,uc,x,y))Definitions: BetaAt(ub,uc,k,a)Lt(x,k)BetaAt(eb,ec,x,y)BetaAt(ub,uc,x,y)Original native command in the exact edition
  2. L26
    specialize beta_prefix_extend (k)
  3. L27
    specialize beta_prefix_extend (eb)
  4. L28
    specialize beta_prefix_extend (ec)
  5. L29
    specialize beta_prefix_extend (a)
  6. L30
    apply beta_prefix_extend
05Separate the logical casesL31–33

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

  1. L31
    cases hpos
  2. L32
    cases hpos_witness
  3. L33
    cases hpos_witness_witness
06Establish hnegL34–39

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta prefix extend.

  1. L34
    have hneg : ∃ vb. ∃ vc. BetaAt(vb,vc,k,z) ∧ (∀ x. ∀ y. Lt(x,k) → BetaAt(fb,fc,x,y) → BetaAt(vb,vc,x,y))Definitions: BetaAt(vb,vc,k,z)Lt(x,k)BetaAt(fb,fc,x,y)BetaAt(vb,vc,x,y)Original native command in the exact edition
  2. L35
    specialize beta_prefix_extend (k)
  3. L36
    specialize beta_prefix_extend (fb)
  4. L37
    specialize beta_prefix_extend (fc)
  5. L38
    specialize beta_prefix_extend (z)
  6. L39
    apply beta_prefix_extend
07Separate the logical casesL40–42

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

  1. L40
    cases hneg
  2. L41
    cases hneg_witness
  3. L42
    cases hneg_witness_witness
08Establish hrecodedL43–52

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

  1. L43
    have hrecoded : SignedDeterminantChildPrefix(b,c,l,pb,pc,nb,nc,q,x,x1,x2,x3,k)Definitions: SignedDeterminantChildPrefix(b,c,l,pb,pc,nb,nc,q,x,x1,x2,x3,k)Original native command in the exact edition
  2. L44
    specialize matrix_recursive_children_recode (b)
  3. L45
    specialize matrix_recursive_children_recode (c)
  4. L46
    specialize matrix_recursive_children_recode (l)
  5. L47
    specialize matrix_recursive_children_recode (pb)
  6. L48
    specialize matrix_recursive_children_recode (pc)
  7. L49
    specialize matrix_recursive_children_recode (nb)
  8. L50
    specialize matrix_recursive_children_recode (nc)
  9. L51
    specialize matrix_recursive_children_recode (q)
  10. L52
    specialize matrix_recursive_children_recode (eb)
09Use earlier factsL53–62

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

  1. L53
    specialize matrix_recursive_children_recode (ec)
  2. L54
    specialize matrix_recursive_children_recode (fb)
  3. L55
    specialize matrix_recursive_children_recode (fc)
  4. L56
    specialize matrix_recursive_children_recode (k)
  5. L57
    specialize matrix_recursive_children_recode (x)
  6. L58
    specialize matrix_recursive_children_recode (x1)
  7. L59
    specialize matrix_recursive_children_recode (x2)
  8. L60
    specialize matrix_recursive_children_recode (x3)
  9. L61
    apply matrix_recursive_children_recode
  10. L62
    exact hchildren
10Use earlier factsL63–64

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

  1. L63
    exact hpos_witness_witness_right
  2. L64
    exact hneg_witness_witness_right
11Construct an explicit witnessL65–68

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

  1. L65
    exists x
  2. L66
    exists x1
  3. L67
    exists x2
  4. L68
    exists x3
12Fix variables and assumptionsL69–70

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

  1. L69
    intro j
  2. L70
    intro hj
13Establish hsplitL71–75

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

  1. L71
    have hsplit : j = k ∨ Lt(j,k)Definitions: Lt(j,k)Original native command in the exact edition
  2. L72
    specialize finite_lt_succ_eq_or_lt (k)
  3. L73
    specialize finite_lt_succ_eq_or_lt (j)
  4. L74
    apply finite_lt_succ_eq_or_lt
  5. L75
    exact hj
14Separate the logical casesL76–76

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

  1. L76
    cases hsplit
15Construct an explicit witnessL77–83

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

  1. L77
    exists i
  2. L78
    exists up
  3. L79
    exists us
  4. L80
    exists un
  5. L81
    exists ut
  6. L82
    exists a
  7. L83
    exists z
16Separate the logical casesL84–84

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

  1. L84
    split
17Use earlier factsL85–85

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

  1. L85
    exact hi
18Separate the logical casesL86–86

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

  1. L86
    split
19Use earlier factsL87–87

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

  1. L87
    exact hrecord
20Separate the logical casesL88–88

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

  1. L88
    split
21Calculate and transport equalitiesL89–92

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

  1. L89
    rewrite hsplit_left
  2. L90
    rewrite hsplit_left
  3. L91
    rewrite hsplit_left
  4. L92
    rewrite hsplit_left
22Use earlier factsL93–93

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

  1. L93
    exact hminor
23Separate the logical casesL94–94

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

  1. L94
    split
24Calculate and transport equalitiesL95–96

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

  1. L95
    rewrite hsplit_left
  2. L96
    rewrite hsplit_left
25Use earlier factsL97–97

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

  1. L97
    exact hpos_witness_witness_left
26Calculate and transport equalitiesL98–99

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

  1. L98
    rewrite hsplit_left
  2. L99
    rewrite hsplit_left
27Use earlier factsL100–103

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

  1. L100
    exact hneg_witness_witness_left
  2. L101
    specialize hrecoded (j)
  3. L102
    apply hrecoded
  4. L103
    exact hsplit_right

Library-wide reading audit

Original defined command ledger · 103 lines
  1. 0001intro b
  2. 0002intro c
  3. 0003intro l
  4. 0004intro pb
  5. 0005intro pc
  6. 0006intro nb
  7. 0007intro nc
  8. 0008intro q
  9. 0009intro eb
  10. 0010intro ec
  11. 0011intro fb
  12. 0012intro fc
  13. 0013intro k
  14. 0014intro i
  15. 0015intro up
  16. 0016intro us
  17. 0017intro un
  18. 0018intro ut
  19. 0019intro a
  20. 0020intro z
  21. 0021intro hchildren
  22. 0022intro hi
  23. 0023intro hrecord
  24. 0024intro hminor
  25. 0025have hpos : ∃ ub. ∃ uc. BetaAt(ub,uc,k,a) ∧ (∀ x. ∀ y. Lt(x,k)BetaAt(eb,ec,x,y)BetaAt(ub,uc,x,y))
  26. 0026specialize beta_prefix_extend (k)
  27. 0027specialize beta_prefix_extend (eb)
  28. 0028specialize beta_prefix_extend (ec)
  29. 0029specialize beta_prefix_extend (a)
  30. 0030apply beta_prefix_extend
  31. 0031cases hpos
  32. 0032cases hpos_witness
  33. 0033cases hpos_witness_witness
  34. 0034have hneg : ∃ vb. ∃ vc. BetaAt(vb,vc,k,z) ∧ (∀ x. ∀ y. Lt(x,k)BetaAt(fb,fc,x,y)BetaAt(vb,vc,x,y))
  35. 0035specialize beta_prefix_extend (k)
  36. 0036specialize beta_prefix_extend (fb)
  37. 0037specialize beta_prefix_extend (fc)
  38. 0038specialize beta_prefix_extend (z)
  39. 0039apply beta_prefix_extend
  40. 0040cases hneg
  41. 0041cases hneg_witness
  42. 0042cases hneg_witness_witness
  43. 0043have hrecoded : SignedDeterminantChildPrefix(b,c,l,pb,pc,nb,nc,q,x,x1,x2,x3,k)
  44. 0044specialize matrix_recursive_children_recode (b)
  45. 0045specialize matrix_recursive_children_recode (c)
  46. 0046specialize matrix_recursive_children_recode (l)
  47. 0047specialize matrix_recursive_children_recode (pb)
  48. 0048specialize matrix_recursive_children_recode (pc)
  49. 0049specialize matrix_recursive_children_recode (nb)
  50. 0050specialize matrix_recursive_children_recode (nc)
  51. 0051specialize matrix_recursive_children_recode (q)
  52. 0052specialize matrix_recursive_children_recode (eb)
  53. 0053specialize matrix_recursive_children_recode (ec)
  54. 0054specialize matrix_recursive_children_recode (fb)
  55. 0055specialize matrix_recursive_children_recode (fc)
  56. 0056specialize matrix_recursive_children_recode (k)
  57. 0057specialize matrix_recursive_children_recode (x)
  58. 0058specialize matrix_recursive_children_recode (x1)
  59. 0059specialize matrix_recursive_children_recode (x2)
  60. 0060specialize matrix_recursive_children_recode (x3)
  61. 0061apply matrix_recursive_children_recode
  62. 0062exact hchildren
  63. 0063exact hpos_witness_witness_right
  64. 0064exact hneg_witness_witness_right
  65. 0065exists x
  66. 0066exists x1
  67. 0067exists x2
  68. 0068exists x3
  69. 0069intro j
  70. 0070intro hj
  71. 0071have hsplit : j = k ∨ Lt(j,k)
  72. 0072specialize finite_lt_succ_eq_or_lt (k)
  73. 0073specialize finite_lt_succ_eq_or_lt (j)
  74. 0074apply finite_lt_succ_eq_or_lt
  75. 0075exact hj
  76. 0076cases hsplit
  77. 0077exists i
  78. 0078exists up
  79. 0079exists us
  80. 0080exists un
  81. 0081exists ut
  82. 0082exists a
  83. 0083exists z
  84. 0084split
  85. 0085exact hi
  86. 0086split
  87. 0087exact hrecord
  88. 0088split
  89. 0089rewrite hsplit_left
  90. 0090rewrite hsplit_left
  91. 0091rewrite hsplit_left
  92. 0092rewrite hsplit_left
  93. 0093exact hminor
  94. 0094split
  95. 0095rewrite hsplit_left
  96. 0096rewrite hsplit_left
  97. 0097exact hpos_witness_witness_left
  98. 0098rewrite hsplit_left
  99. 0099rewrite hsplit_left
  100. 0100exact hneg_witness_witness_left
  101. 0101specialize hrecoded (j)
  102. 0102apply hrecoded
  103. 0103exact hsplit_right