DL000E

matrix_recursive_children_recode

Reencoding the two already computed cofactor-value streams preserves every actual minor evaluation.

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. ∀ ub. ∀ uc. ∀ vb. ∀ vc. SignedDeterminantChildPrefix(b,c,l,pb,pc,nb,nc,q,eb,ec,fb,fc,k) → (∀ x. ∀ y. Lt(x,k)BetaAt(eb,ec,x,y)BetaAt(ub,uc,x,y)) → (∀ x. ∀ y. Lt(x,k)BetaAt(fb,fc,x,y)BetaAt(vb,vc,x,y)) → SignedDeterminantChildPrefix(b,c,l,pb,pc,nb,nc,q,ub,uc,vb,vc,k)

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

Definition DAG

Actual proof prerequisites

none
Original expanded first-order statement
forall b c l pb pc nb nc q eb ec fb fc k ub uc vb vc. (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)))))))) -> (forall mdr_i_recode_p mdr_a_recode_p. (exists mdr_gap_recode_pb. mdr_gap_recode_pb + S (mdr_i_recode_p) = (k)) -> (((exists ff_h_mdr_recode_po. ff_h_mdr_recode_po + S (mdr_a_recode_p) = S ((S (mdr_i_recode_p)) * ec)) /\ exists ff_q_mdr_recode_po. eb = ff_q_mdr_recode_po * S ((S (mdr_i_recode_p)) * ec) + (mdr_a_recode_p))) -> (((exists ff_h_mdr_recode_pn. ff_h_mdr_recode_pn + S (mdr_a_recode_p) = S ((S (mdr_i_recode_p)) * uc)) /\ exists ff_q_mdr_recode_pn. ub = ff_q_mdr_recode_pn * S ((S (mdr_i_recode_p)) * uc) + (mdr_a_recode_p)))) -> (forall mdr_i_recode_n mdr_a_recode_n. (exists mdr_gap_recode_nb. mdr_gap_recode_nb + S (mdr_i_recode_n) = (k)) -> (((exists ff_h_mdr_recode_no. ff_h_mdr_recode_no + S (mdr_a_recode_n) = S ((S (mdr_i_recode_n)) * fc)) /\ exists ff_q_mdr_recode_no. fb = ff_q_mdr_recode_no * S ((S (mdr_i_recode_n)) * fc) + (mdr_a_recode_n))) -> (((exists ff_h_mdr_recode_nn. ff_h_mdr_recode_nn + S (mdr_a_recode_n) = S ((S (mdr_i_recode_n)) * vc)) /\ exists ff_q_mdr_recode_nn. vb = ff_q_mdr_recode_nn * S ((S (mdr_i_recode_n)) * vc) + (mdr_a_recode_n)))) -> (forall mdr_j_recoded. (exists mdr_gap_recodedj. mdr_gap_recodedj + S (mdr_j_recoded) = (k)) -> exists mdr_i_recoded mdr_up_recoded mdr_us_recoded mdr_un_recoded mdr_ut_recoded mdr_p_recoded mdr_n_recoded. ((exists mdr_gap_recodedi. mdr_gap_recodedi + S (mdr_i_recoded) = (l)) /\ ((exists mdr_z_recodedr. ((exists mdr_a_recodedrc mdr_b_recodedrc mdr_c_recodedrc mdr_e_recodedrc mdr_f_recodedrc. ((mdr_a_recodedrc = ((q) + (mdr_up_recoded)) * S ((q) + (mdr_up_recoded)) + ((mdr_up_recoded) + (mdr_up_recoded))) /\ ((mdr_b_recodedrc = ((mdr_us_recoded) + (mdr_un_recoded)) * S ((mdr_us_recoded) + (mdr_un_recoded)) + ((mdr_un_recoded) + (mdr_un_recoded))) /\ ((mdr_c_recodedrc = ((mdr_a_recodedrc) + (mdr_b_recodedrc)) * S ((mdr_a_recodedrc) + (mdr_b_recodedrc)) + ((mdr_b_recodedrc) + (mdr_b_recodedrc))) /\ ((mdr_e_recodedrc = ((mdr_p_recoded) + (mdr_n_recoded)) * S ((mdr_p_recoded) + (mdr_n_recoded)) + ((mdr_n_recoded) + (mdr_n_recoded))) /\ ((mdr_f_recodedrc = ((mdr_ut_recoded) + (mdr_e_recodedrc)) * S ((mdr_ut_recoded) + (mdr_e_recodedrc)) + ((mdr_e_recodedrc) + (mdr_e_recodedrc))) /\ ((mdr_z_recodedr) = ((mdr_c_recodedrc) + (mdr_f_recodedrc)) * S ((mdr_c_recodedrc) + (mdr_f_recodedrc)) + ((mdr_f_recodedrc) + (mdr_f_recodedrc))))))))) /\ (((exists ff_h_mdr_recodedrb. ff_h_mdr_recodedrb + S (mdr_z_recodedr) = S ((S (mdr_i_recoded)) * c)) /\ exists ff_q_mdr_recodedrb. b = ff_q_mdr_recodedrb * S ((S (mdr_i_recoded)) * c) + (mdr_z_recodedr))))) /\ ((((forall ff_index_mdm_prefix_mdr_recodedm_positive. (exists ff_gap_mdm_lt_mdr_recodedm_positive_index_bound. ff_gap_mdm_lt_mdr_recodedm_positive_index_bound + S (ff_index_mdm_prefix_mdr_recodedm_positive) = ((q) * (q))) -> exists ff_row_mdm_prefix_mdr_recodedm_positive ff_column_mdm_prefix_mdr_recodedm_positive ff_value_mdm_prefix_mdr_recodedm_positive. (ff_index_mdm_prefix_mdr_recodedm_positive = (q) * ff_row_mdm_prefix_mdr_recodedm_positive + ff_column_mdm_prefix_mdr_recodedm_positive /\ ((exists ff_gap_mdm_lt_mdr_recodedm_positive_column_bound. ff_gap_mdm_lt_mdr_recodedm_positive_column_bound + S (ff_column_mdm_prefix_mdr_recodedm_positive) = (q)) /\ ((exists ff_row_mdm_cell_mdr_recodedm_positive_cell ff_column_mdm_cell_mdr_recodedm_positive_cell. (((((exists ff_gap_mdm_lt_mdr_recodedm_positive_cell_row_before. ff_gap_mdm_lt_mdr_recodedm_positive_cell_row_before + S (ff_row_mdm_prefix_mdr_recodedm_positive) = (0)) /\ ff_row_mdm_cell_mdr_recodedm_positive_cell = ff_row_mdm_prefix_mdr_recodedm_positive) \/ ((exists ff_gap_mdm_le_mdr_recodedm_positive_cell_row_after. ff_gap_mdm_le_mdr_recodedm_positive_cell_row_after + (0) = (ff_row_mdm_prefix_mdr_recodedm_positive)) /\ ff_row_mdm_cell_mdr_recodedm_positive_cell = S ff_row_mdm_prefix_mdr_recodedm_positive))) /\ (((((exists ff_gap_mdm_lt_mdr_recodedm_positive_cell_column_before. ff_gap_mdm_lt_mdr_recodedm_positive_cell_column_before + S (ff_column_mdm_prefix_mdr_recodedm_positive) = (mdr_j_recoded)) /\ ff_column_mdm_cell_mdr_recodedm_positive_cell = ff_column_mdm_prefix_mdr_recodedm_positive) \/ ((exists ff_gap_mdm_le_mdr_recodedm_positive_cell_column_after. ff_gap_mdm_le_mdr_recodedm_positive_cell_column_after + (mdr_j_recoded) = (ff_column_mdm_prefix_mdr_recodedm_positive)) /\ ff_column_mdm_cell_mdr_recodedm_positive_cell = S ff_column_mdm_prefix_mdr_recodedm_positive))) /\ (((exists ff_h_mdm_mdr_recodedm_positive_cell_source. ff_h_mdm_mdr_recodedm_positive_cell_source + S (ff_value_mdm_prefix_mdr_recodedm_positive) = S ((S ((ff_row_mdm_cell_mdr_recodedm_positive_cell) * (S (q)) + (ff_column_mdm_cell_mdr_recodedm_positive_cell))) * pc)) /\ exists ff_q_mdm_mdr_recodedm_positive_cell_source. pb = ff_q_mdm_mdr_recodedm_positive_cell_source * S ((S ((ff_row_mdm_cell_mdr_recodedm_positive_cell) * (S (q)) + (ff_column_mdm_cell_mdr_recodedm_positive_cell))) * pc) + (ff_value_mdm_prefix_mdr_recodedm_positive)))))) /\ (((exists ff_h_mdm_mdr_recodedm_positive_target. ff_h_mdm_mdr_recodedm_positive_target + S (ff_value_mdm_prefix_mdr_recodedm_positive) = S ((S (ff_index_mdm_prefix_mdr_recodedm_positive)) * mdr_us_recoded)) /\ exists ff_q_mdm_mdr_recodedm_positive_target. mdr_up_recoded = ff_q_mdm_mdr_recodedm_positive_target * S ((S (ff_index_mdm_prefix_mdr_recodedm_positive)) * mdr_us_recoded) + (ff_value_mdm_prefix_mdr_recodedm_positive))))))) /\ (forall ff_index_mdm_prefix_mdr_recodedm_negative. (exists ff_gap_mdm_lt_mdr_recodedm_negative_index_bound. ff_gap_mdm_lt_mdr_recodedm_negative_index_bound + S (ff_index_mdm_prefix_mdr_recodedm_negative) = ((q) * (q))) -> exists ff_row_mdm_prefix_mdr_recodedm_negative ff_column_mdm_prefix_mdr_recodedm_negative ff_value_mdm_prefix_mdr_recodedm_negative. (ff_index_mdm_prefix_mdr_recodedm_negative = (q) * ff_row_mdm_prefix_mdr_recodedm_negative + ff_column_mdm_prefix_mdr_recodedm_negative /\ ((exists ff_gap_mdm_lt_mdr_recodedm_negative_column_bound. ff_gap_mdm_lt_mdr_recodedm_negative_column_bound + S (ff_column_mdm_prefix_mdr_recodedm_negative) = (q)) /\ ((exists ff_row_mdm_cell_mdr_recodedm_negative_cell ff_column_mdm_cell_mdr_recodedm_negative_cell. (((((exists ff_gap_mdm_lt_mdr_recodedm_negative_cell_row_before. ff_gap_mdm_lt_mdr_recodedm_negative_cell_row_before + S (ff_row_mdm_prefix_mdr_recodedm_negative) = (0)) /\ ff_row_mdm_cell_mdr_recodedm_negative_cell = ff_row_mdm_prefix_mdr_recodedm_negative) \/ ((exists ff_gap_mdm_le_mdr_recodedm_negative_cell_row_after. ff_gap_mdm_le_mdr_recodedm_negative_cell_row_after + (0) = (ff_row_mdm_prefix_mdr_recodedm_negative)) /\ ff_row_mdm_cell_mdr_recodedm_negative_cell = S ff_row_mdm_prefix_mdr_recodedm_negative))) /\ (((((exists ff_gap_mdm_lt_mdr_recodedm_negative_cell_column_before. ff_gap_mdm_lt_mdr_recodedm_negative_cell_column_before + S (ff_column_mdm_prefix_mdr_recodedm_negative) = (mdr_j_recoded)) /\ ff_column_mdm_cell_mdr_recodedm_negative_cell = ff_column_mdm_prefix_mdr_recodedm_negative) \/ ((exists ff_gap_mdm_le_mdr_recodedm_negative_cell_column_after. ff_gap_mdm_le_mdr_recodedm_negative_cell_column_after + (mdr_j_recoded) = (ff_column_mdm_prefix_mdr_recodedm_negative)) /\ ff_column_mdm_cell_mdr_recodedm_negative_cell = S ff_column_mdm_prefix_mdr_recodedm_negative))) /\ (((exists ff_h_mdm_mdr_recodedm_negative_cell_source. ff_h_mdm_mdr_recodedm_negative_cell_source + S (ff_value_mdm_prefix_mdr_recodedm_negative) = S ((S ((ff_row_mdm_cell_mdr_recodedm_negative_cell) * (S (q)) + (ff_column_mdm_cell_mdr_recodedm_negative_cell))) * nc)) /\ exists ff_q_mdm_mdr_recodedm_negative_cell_source. nb = ff_q_mdm_mdr_recodedm_negative_cell_source * S ((S ((ff_row_mdm_cell_mdr_recodedm_negative_cell) * (S (q)) + (ff_column_mdm_cell_mdr_recodedm_negative_cell))) * nc) + (ff_value_mdm_prefix_mdr_recodedm_negative)))))) /\ (((exists ff_h_mdm_mdr_recodedm_negative_target. ff_h_mdm_mdr_recodedm_negative_target + S (ff_value_mdm_prefix_mdr_recodedm_negative) = S ((S (ff_index_mdm_prefix_mdr_recodedm_negative)) * mdr_ut_recoded)) /\ exists ff_q_mdm_mdr_recodedm_negative_target. mdr_un_recoded = ff_q_mdm_mdr_recodedm_negative_target * S ((S (ff_index_mdm_prefix_mdr_recodedm_negative)) * mdr_ut_recoded) + (ff_value_mdm_prefix_mdr_recodedm_negative))))))))) /\ ((((exists ff_h_mdr_recodedp. ff_h_mdr_recodedp + S (mdr_p_recoded) = S ((S (mdr_j_recoded)) * uc)) /\ exists ff_q_mdr_recodedp. ub = ff_q_mdr_recodedp * S ((S (mdr_j_recoded)) * uc) + (mdr_p_recoded))) /\ (((exists ff_h_mdr_recodedn. ff_h_mdr_recodedn + S (mdr_n_recoded) = S ((S (mdr_j_recoded)) * vc)) /\ exists ff_q_mdr_recodedn. vb = ff_q_mdr_recodedn * S ((S (mdr_j_recoded)) * vc) + (mdr_n_recoded))))))))

Complete tactic proof in conservative notation

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

61 script commands · 15 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 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 ub
  5. L15
    intro uc
  6. L16
    intro vb
  7. L17
    intro vc
  8. L18
    intro hchildren
  9. L19
    intro hpositive
  10. L20
    intro hnegative
03Fix variables and assumptionsL21–22

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

  1. L21
    intro j
  2. L22
    intro hj
04Establish hentryL23–26

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

  1. L23
    have hentry : ∃ i. ∃ up. ∃ us. ∃ un. ∃ ut. ∃ a. ∃ z. Lt(i,l) ∧ (SignedDeterminantNodeAt(b,c,i,q,up,us,un,ut,a,z) ∧ (SignedMatrixMinor(pb,pc,nb,nc,S q,0,j,q,up,us,un,ut) ∧ (BetaAt(eb,ec,j,a) ∧ BetaAt(fb,fc,j,z))))Definitions: Lt(i,l)SignedDeterminantNodeAt(b,c,i,q,up,us,un,ut,a,z)SignedMatrixMinor(pb,pc,nb,nc,S q,0,j,q,up,us,un,ut)BetaAt(eb,ec,j,a)BetaAt(fb,fc,j,z)Original native command in the exact edition
  2. L24
    specialize hchildren (j)
  3. L25
    apply hchildren
  4. L26
    exact hj
05Separate the logical casesL27–36

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

  1. L27
    cases hentry
  2. L28
    cases hentry_witness
  3. L29
    cases hentry_witness_witness
  4. L30
    cases hentry_witness_witness_witness
  5. L31
    cases hentry_witness_witness_witness_witness
  6. L32
    cases hentry_witness_witness_witness_witness_witness
  7. L33
    cases hentry_witness_witness_witness_witness_witness_witness
  8. L34
    cases hentry_witness_witness_witness_witness_witness_witness_witness
  9. L35
    cases hentry_witness_witness_witness_witness_witness_witness_witness_right
  10. L36
    cases hentry_witness_witness_witness_witness_witness_witness_witness_right_right
06Separate the logical casesL37–37

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

  1. L37
    cases hentry_witness_witness_witness_witness_witness_witness_witness_right_right_right
07Construct an explicit witnessL38–44

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

  1. L38
    exists x
  2. L39
    exists x1
  3. L40
    exists x2
  4. L41
    exists x3
  5. L42
    exists x4
  6. L43
    exists x5
  7. L44
    exists x6
08Separate the logical casesL45–45

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

  1. L45
    split
09Use earlier factsL46–46

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

  1. L46
    exact hentry_witness_witness_witness_witness_witness_witness_witness_left
10Separate the logical casesL47–47

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

  1. L47
    split
11Use earlier factsL48–48

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

  1. L48
    exact hentry_witness_witness_witness_witness_witness_witness_witness_right_left
12Separate the logical casesL49–49

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

  1. L49
    split
13Use earlier factsL50–50

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

  1. L50
    exact hentry_witness_witness_witness_witness_witness_witness_witness_right_right_left
14Separate the logical casesL51–51

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

  1. L51
    split
15Use earlier factsL52–61

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

  1. L52
    specialize hpositive (j)
  2. L53
    specialize hpositive (x5)
  3. L54
    apply hpositive
  4. L55
    exact hj
  5. L56
    exact hentry_witness_witness_witness_witness_witness_witness_witness_right_right_right_left
  6. L57
    specialize hnegative (j)
  7. L58
    specialize hnegative (x6)
  8. L59
    apply hnegative
  9. L60
    exact hj
  10. L61
    exact hentry_witness_witness_witness_witness_witness_witness_witness_right_right_right_right

Library-wide reading audit

Original defined command ledger · 61 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 ub
  15. 0015intro uc
  16. 0016intro vb
  17. 0017intro vc
  18. 0018intro hchildren
  19. 0019intro hpositive
  20. 0020intro hnegative
  21. 0021intro j
  22. 0022intro hj
  23. 0023have hentry : ∃ i. ∃ up. ∃ us. ∃ un. ∃ ut. ∃ a. ∃ z. Lt(i,l) ∧ (SignedDeterminantNodeAt(b,c,i,q,up,us,un,ut,a,z) ∧ (SignedMatrixMinor(pb,pc,nb,nc,S q,0,j,q,up,us,un,ut) ∧ (BetaAt(eb,ec,j,a)BetaAt(fb,fc,j,z))))
  24. 0024specialize hchildren (j)
  25. 0025apply hchildren
  26. 0026exact hj
  27. 0027cases hentry
  28. 0028cases hentry_witness
  29. 0029cases hentry_witness_witness
  30. 0030cases hentry_witness_witness_witness
  31. 0031cases hentry_witness_witness_witness_witness
  32. 0032cases hentry_witness_witness_witness_witness_witness
  33. 0033cases hentry_witness_witness_witness_witness_witness_witness
  34. 0034cases hentry_witness_witness_witness_witness_witness_witness_witness
  35. 0035cases hentry_witness_witness_witness_witness_witness_witness_witness_right
  36. 0036cases hentry_witness_witness_witness_witness_witness_witness_witness_right_right
  37. 0037cases hentry_witness_witness_witness_witness_witness_witness_witness_right_right_right
  38. 0038exists x
  39. 0039exists x1
  40. 0040exists x2
  41. 0041exists x3
  42. 0042exists x4
  43. 0043exists x5
  44. 0044exists x6
  45. 0045split
  46. 0046exact hentry_witness_witness_witness_witness_witness_witness_witness_left
  47. 0047split
  48. 0048exact hentry_witness_witness_witness_witness_witness_witness_witness_right_left
  49. 0049split
  50. 0050exact hentry_witness_witness_witness_witness_witness_witness_witness_right_right_left
  51. 0051split
  52. 0052specialize hpositive (j)
  53. 0053specialize hpositive (x5)
  54. 0054apply hpositive
  55. 0055exact hj
  56. 0056exact hentry_witness_witness_witness_witness_witness_witness_witness_right_right_right_left
  57. 0057specialize hnegative (j)
  58. 0058specialize hnegative (x6)
  59. 0059apply hnegative
  60. 0060exact hj
  61. 0061exact hentry_witness_witness_witness_witness_witness_witness_witness_right_right_right_right