DL0048

matrix_rank_signed_selected_square_functional

Alpha v34 independently verified · alpha_closed; checked-use authorized; not Stable

Both signed components of any two genuine selected-submatrix encodings are extensionally identical.

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.

Exact expanded first-order arithmetic statement

forall pb pc nb nc w rb rc cb cc q ub uc vb vc Ub Uc Vb Vc. (((forall mdr_i_first_selectedpositive. (exists mdr_gap_first_selectedpositivebound. mdr_gap_first_selectedpositivebound + S (mdr_i_first_selectedpositive) = ((q) * (q))) -> exists mdr_a_first_selectedpositive. (((exists mdr_r_first_selectedpositivepoint mdr_s_first_selectedpositivepoint mdr_u_first_selectedpositivepoint mdr_v_first_selectedpositivepoint. ((mdr_i_first_selectedpositive = (q) * mdr_r_first_selectedpositivepoint + mdr_s_first_selectedpositivepoint) /\ ((exists mdr_gap_first_selectedpositivepointcolumn. mdr_gap_first_selectedpositivepointcolumn + S (mdr_s_first_selectedpositivepoint) = (q)) /\ ((((exists ff_h_mdr_first_selectedpositivepointrow_index. ff_h_mdr_first_selectedpositivepointrow_index + S (mdr_u_first_selectedpositivepoint) = S ((S (mdr_r_first_selectedpositivepoint)) * rc)) /\ exists ff_q_mdr_first_selectedpositivepointrow_index. rb = ff_q_mdr_first_selectedpositivepointrow_index * S ((S (mdr_r_first_selectedpositivepoint)) * rc) + (mdr_u_first_selectedpositivepoint))) /\ ((((exists ff_h_mdr_first_selectedpositivepointcolumn_index. ff_h_mdr_first_selectedpositivepointcolumn_index + S (mdr_v_first_selectedpositivepoint) = S ((S (mdr_s_first_selectedpositivepoint)) * cc)) /\ exists ff_q_mdr_first_selectedpositivepointcolumn_index. cb = ff_q_mdr_first_selectedpositivepointcolumn_index * S ((S (mdr_s_first_selectedpositivepoint)) * cc) + (mdr_v_first_selectedpositivepoint))) /\ (((exists ff_h_mdr_first_selectedpositivepointsource. ff_h_mdr_first_selectedpositivepointsource + S (mdr_a_first_selectedpositive) = S ((S ((mdr_u_first_selectedpositivepoint) * (w) + (mdr_v_first_selectedpositivepoint))) * pc)) /\ exists ff_q_mdr_first_selectedpositivepointsource. pb = ff_q_mdr_first_selectedpositivepointsource * S ((S ((mdr_u_first_selectedpositivepoint) * (w) + (mdr_v_first_selectedpositivepoint))) * pc) + (mdr_a_first_selectedpositive)))))))) /\ (((exists ff_h_mdr_first_selectedpositiveoutput. ff_h_mdr_first_selectedpositiveoutput + S (mdr_a_first_selectedpositive) = S ((S (mdr_i_first_selectedpositive)) * uc)) /\ exists ff_q_mdr_first_selectedpositiveoutput. ub = ff_q_mdr_first_selectedpositiveoutput * S ((S (mdr_i_first_selectedpositive)) * uc) + (mdr_a_first_selectedpositive)))))) /\ (forall mdr_i_first_selectednegative. (exists mdr_gap_first_selectednegativebound. mdr_gap_first_selectednegativebound + S (mdr_i_first_selectednegative) = ((q) * (q))) -> exists mdr_a_first_selectednegative. (((exists mdr_r_first_selectednegativepoint mdr_s_first_selectednegativepoint mdr_u_first_selectednegativepoint mdr_v_first_selectednegativepoint. ((mdr_i_first_selectednegative = (q) * mdr_r_first_selectednegativepoint + mdr_s_first_selectednegativepoint) /\ ((exists mdr_gap_first_selectednegativepointcolumn. mdr_gap_first_selectednegativepointcolumn + S (mdr_s_first_selectednegativepoint) = (q)) /\ ((((exists ff_h_mdr_first_selectednegativepointrow_index. ff_h_mdr_first_selectednegativepointrow_index + S (mdr_u_first_selectednegativepoint) = S ((S (mdr_r_first_selectednegativepoint)) * rc)) /\ exists ff_q_mdr_first_selectednegativepointrow_index. rb = ff_q_mdr_first_selectednegativepointrow_index * S ((S (mdr_r_first_selectednegativepoint)) * rc) + (mdr_u_first_selectednegativepoint))) /\ ((((exists ff_h_mdr_first_selectednegativepointcolumn_index. ff_h_mdr_first_selectednegativepointcolumn_index + S (mdr_v_first_selectednegativepoint) = S ((S (mdr_s_first_selectednegativepoint)) * cc)) /\ exists ff_q_mdr_first_selectednegativepointcolumn_index. cb = ff_q_mdr_first_selectednegativepointcolumn_index * S ((S (mdr_s_first_selectednegativepoint)) * cc) + (mdr_v_first_selectednegativepoint))) /\ (((exists ff_h_mdr_first_selectednegativepointsource. ff_h_mdr_first_selectednegativepointsource + S (mdr_a_first_selectednegative) = S ((S ((mdr_u_first_selectednegativepoint) * (w) + (mdr_v_first_selectednegativepoint))) * nc)) /\ exists ff_q_mdr_first_selectednegativepointsource. nb = ff_q_mdr_first_selectednegativepointsource * S ((S ((mdr_u_first_selectednegativepoint) * (w) + (mdr_v_first_selectednegativepoint))) * nc) + (mdr_a_first_selectednegative)))))))) /\ (((exists ff_h_mdr_first_selectednegativeoutput. ff_h_mdr_first_selectednegativeoutput + S (mdr_a_first_selectednegative) = S ((S (mdr_i_first_selectednegative)) * vc)) /\ exists ff_q_mdr_first_selectednegativeoutput. vb = ff_q_mdr_first_selectednegativeoutput * S ((S (mdr_i_first_selectednegative)) * vc) + (mdr_a_first_selectednegative)))))))) -> (((forall mdr_i_second_selectedpositive. (exists mdr_gap_second_selectedpositivebound. mdr_gap_second_selectedpositivebound + S (mdr_i_second_selectedpositive) = ((q) * (q))) -> exists mdr_a_second_selectedpositive. (((exists mdr_r_second_selectedpositivepoint mdr_s_second_selectedpositivepoint mdr_u_second_selectedpositivepoint mdr_v_second_selectedpositivepoint. ((mdr_i_second_selectedpositive = (q) * mdr_r_second_selectedpositivepoint + mdr_s_second_selectedpositivepoint) /\ ((exists mdr_gap_second_selectedpositivepointcolumn. mdr_gap_second_selectedpositivepointcolumn + S (mdr_s_second_selectedpositivepoint) = (q)) /\ ((((exists ff_h_mdr_second_selectedpositivepointrow_index. ff_h_mdr_second_selectedpositivepointrow_index + S (mdr_u_second_selectedpositivepoint) = S ((S (mdr_r_second_selectedpositivepoint)) * rc)) /\ exists ff_q_mdr_second_selectedpositivepointrow_index. rb = ff_q_mdr_second_selectedpositivepointrow_index * S ((S (mdr_r_second_selectedpositivepoint)) * rc) + (mdr_u_second_selectedpositivepoint))) /\ ((((exists ff_h_mdr_second_selectedpositivepointcolumn_index. ff_h_mdr_second_selectedpositivepointcolumn_index + S (mdr_v_second_selectedpositivepoint) = S ((S (mdr_s_second_selectedpositivepoint)) * cc)) /\ exists ff_q_mdr_second_selectedpositivepointcolumn_index. cb = ff_q_mdr_second_selectedpositivepointcolumn_index * S ((S (mdr_s_second_selectedpositivepoint)) * cc) + (mdr_v_second_selectedpositivepoint))) /\ (((exists ff_h_mdr_second_selectedpositivepointsource. ff_h_mdr_second_selectedpositivepointsource + S (mdr_a_second_selectedpositive) = S ((S ((mdr_u_second_selectedpositivepoint) * (w) + (mdr_v_second_selectedpositivepoint))) * pc)) /\ exists ff_q_mdr_second_selectedpositivepointsource. pb = ff_q_mdr_second_selectedpositivepointsource * S ((S ((mdr_u_second_selectedpositivepoint) * (w) + (mdr_v_second_selectedpositivepoint))) * pc) + (mdr_a_second_selectedpositive)))))))) /\ (((exists ff_h_mdr_second_selectedpositiveoutput. ff_h_mdr_second_selectedpositiveoutput + S (mdr_a_second_selectedpositive) = S ((S (mdr_i_second_selectedpositive)) * Uc)) /\ exists ff_q_mdr_second_selectedpositiveoutput. Ub = ff_q_mdr_second_selectedpositiveoutput * S ((S (mdr_i_second_selectedpositive)) * Uc) + (mdr_a_second_selectedpositive)))))) /\ (forall mdr_i_second_selectednegative. (exists mdr_gap_second_selectednegativebound. mdr_gap_second_selectednegativebound + S (mdr_i_second_selectednegative) = ((q) * (q))) -> exists mdr_a_second_selectednegative. (((exists mdr_r_second_selectednegativepoint mdr_s_second_selectednegativepoint mdr_u_second_selectednegativepoint mdr_v_second_selectednegativepoint. ((mdr_i_second_selectednegative = (q) * mdr_r_second_selectednegativepoint + mdr_s_second_selectednegativepoint) /\ ((exists mdr_gap_second_selectednegativepointcolumn. mdr_gap_second_selectednegativepointcolumn + S (mdr_s_second_selectednegativepoint) = (q)) /\ ((((exists ff_h_mdr_second_selectednegativepointrow_index. ff_h_mdr_second_selectednegativepointrow_index + S (mdr_u_second_selectednegativepoint) = S ((S (mdr_r_second_selectednegativepoint)) * rc)) /\ exists ff_q_mdr_second_selectednegativepointrow_index. rb = ff_q_mdr_second_selectednegativepointrow_index * S ((S (mdr_r_second_selectednegativepoint)) * rc) + (mdr_u_second_selectednegativepoint))) /\ ((((exists ff_h_mdr_second_selectednegativepointcolumn_index. ff_h_mdr_second_selectednegativepointcolumn_index + S (mdr_v_second_selectednegativepoint) = S ((S (mdr_s_second_selectednegativepoint)) * cc)) /\ exists ff_q_mdr_second_selectednegativepointcolumn_index. cb = ff_q_mdr_second_selectednegativepointcolumn_index * S ((S (mdr_s_second_selectednegativepoint)) * cc) + (mdr_v_second_selectednegativepoint))) /\ (((exists ff_h_mdr_second_selectednegativepointsource. ff_h_mdr_second_selectednegativepointsource + S (mdr_a_second_selectednegative) = S ((S ((mdr_u_second_selectednegativepoint) * (w) + (mdr_v_second_selectednegativepoint))) * nc)) /\ exists ff_q_mdr_second_selectednegativepointsource. nb = ff_q_mdr_second_selectednegativepointsource * S ((S ((mdr_u_second_selectednegativepoint) * (w) + (mdr_v_second_selectednegativepoint))) * nc) + (mdr_a_second_selectednegative)))))))) /\ (((exists ff_h_mdr_second_selectednegativeoutput. ff_h_mdr_second_selectednegativeoutput + S (mdr_a_second_selectednegative) = S ((S (mdr_i_second_selectednegative)) * Vc)) /\ exists ff_q_mdr_second_selectednegativeoutput. Vb = ff_q_mdr_second_selectednegativeoutput * S ((S (mdr_i_second_selectednegative)) * Vc) + (mdr_a_second_selectednegative)))))))) -> (((forall mdr_i_signed_selected_equalp mdr_a_signed_selected_equalp. (exists mdr_gap_signed_selected_equalpb. mdr_gap_signed_selected_equalpb + S (mdr_i_signed_selected_equalp) = ((q) * (q))) -> (((exists ff_h_mdr_signed_selected_equalpo. ff_h_mdr_signed_selected_equalpo + S (mdr_a_signed_selected_equalp) = S ((S (mdr_i_signed_selected_equalp)) * uc)) /\ exists ff_q_mdr_signed_selected_equalpo. ub = ff_q_mdr_signed_selected_equalpo * S ((S (mdr_i_signed_selected_equalp)) * uc) + (mdr_a_signed_selected_equalp))) -> (((exists ff_h_mdr_signed_selected_equalpn. ff_h_mdr_signed_selected_equalpn + S (mdr_a_signed_selected_equalp) = S ((S (mdr_i_signed_selected_equalp)) * Uc)) /\ exists ff_q_mdr_signed_selected_equalpn. Ub = ff_q_mdr_signed_selected_equalpn * S ((S (mdr_i_signed_selected_equalp)) * Uc) + (mdr_a_signed_selected_equalp)))) /\ (forall mdr_i_signed_selected_equaln mdr_a_signed_selected_equaln. (exists mdr_gap_signed_selected_equalnb. mdr_gap_signed_selected_equalnb + S (mdr_i_signed_selected_equaln) = ((q) * (q))) -> (((exists ff_h_mdr_signed_selected_equalno. ff_h_mdr_signed_selected_equalno + S (mdr_a_signed_selected_equaln) = S ((S (mdr_i_signed_selected_equaln)) * vc)) /\ exists ff_q_mdr_signed_selected_equalno. vb = ff_q_mdr_signed_selected_equalno * S ((S (mdr_i_signed_selected_equaln)) * vc) + (mdr_a_signed_selected_equaln))) -> (((exists ff_h_mdr_signed_selected_equalnn. ff_h_mdr_signed_selected_equalnn + S (mdr_a_signed_selected_equaln) = S ((S (mdr_i_signed_selected_equaln)) * Vc)) /\ exists ff_q_mdr_signed_selected_equalnn. Vb = ff_q_mdr_signed_selected_equalnn * S ((S (mdr_i_signed_selected_equaln)) * Vc) + (mdr_a_signed_selected_equaln))))))

Constructive proof overview

Generated structural guide

Both signed components of any two genuine selected-submatrix encodings are extensionally identical.

The unchanged tactic script uses 1 declared prerequisite and contains 53 exact native proof lines.

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

Proof neighborhood

Direct dependencies

Direct dependents

Formal native tactic body

Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.

Read the argument

Proof checkpoints

53 script commands · 6 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.

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

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

  1. L1
    intro pb
  2. L2
    intro pc
  3. L3
    intro nb
  4. L4
    intro nc
  5. L5
    intro w
  6. L6
    intro rb
  7. L7
    intro rc
  8. L8
    intro cb
  9. L9
    intro cc
  10. L10
    intro q
02Fix variables and assumptionsL11–20

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

  1. L11
    intro ub
  2. L12
    intro uc
  3. L13
    intro vb
  4. L14
    intro vc
  5. L15
    intro Ub
  6. L16
    intro Uc
  7. L17
    intro Vb
  8. L18
    intro Vc
  9. L19
    intro hfirst
  10. L20
    intro hsecond
03Separate the logical casesL21–23

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

  1. L21
    cases hfirst
  2. L22
    cases hsecond
  3. L23
    split
04Use earlier factsL24–33

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

  1. L24
    specialize matrix_rank_selected_prefix_functional (pb)
  2. L25
    specialize matrix_rank_selected_prefix_functional (pc)
  3. L26
    specialize matrix_rank_selected_prefix_functional (w)
  4. L27
    specialize matrix_rank_selected_prefix_functional (rb)
  5. L28
    specialize matrix_rank_selected_prefix_functional (rc)
  6. L29
    specialize matrix_rank_selected_prefix_functional (cb)
  7. L30
    specialize matrix_rank_selected_prefix_functional (cc)
  8. L31
    specialize matrix_rank_selected_prefix_functional (q)
  9. L32
    specialize matrix_rank_selected_prefix_functional (ub)
  10. L33
    specialize matrix_rank_selected_prefix_functional (uc)
05Use earlier factsL34–43

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

  1. L34
    specialize matrix_rank_selected_prefix_functional (Ub)
  2. L35
    specialize matrix_rank_selected_prefix_functional (Uc)
  3. L36
    apply matrix_rank_selected_prefix_functional
  4. L37
    exact hfirst_left
  5. L38
    exact hsecond_left
  6. L39
    specialize matrix_rank_selected_prefix_functional (nb)
  7. L40
    specialize matrix_rank_selected_prefix_functional (nc)
  8. L41
    specialize matrix_rank_selected_prefix_functional (w)
  9. L42
    specialize matrix_rank_selected_prefix_functional (rb)
  10. L43
    specialize matrix_rank_selected_prefix_functional (rc)
06Use earlier factsL44–53

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

  1. L44
    specialize matrix_rank_selected_prefix_functional (cb)
  2. L45
    specialize matrix_rank_selected_prefix_functional (cc)
  3. L46
    specialize matrix_rank_selected_prefix_functional (q)
  4. L47
    specialize matrix_rank_selected_prefix_functional (vb)
  5. L48
    specialize matrix_rank_selected_prefix_functional (vc)
  6. L49
    specialize matrix_rank_selected_prefix_functional (Vb)
  7. L50
    specialize matrix_rank_selected_prefix_functional (Vc)
  8. L51
    apply matrix_rank_selected_prefix_functional
  9. L52
    exact hfirst_right
  10. L53
    exact hsecond_right

Library-wide reading audit

Original exact command ledger · 53 lines
  1. 0001intro pb
  2. 0002intro pc
  3. 0003intro nb
  4. 0004intro nc
  5. 0005intro w
  6. 0006intro rb
  7. 0007intro rc
  8. 0008intro cb
  9. 0009intro cc
  10. 0010intro q
  11. 0011intro ub
  12. 0012intro uc
  13. 0013intro vb
  14. 0014intro vc
  15. 0015intro Ub
  16. 0016intro Uc
  17. 0017intro Vb
  18. 0018intro Vc
  19. 0019intro hfirst
  20. 0020intro hsecond
  21. 0021cases hfirst
  22. 0022cases hsecond
  23. 0023split
  24. 0024specialize matrix_rank_selected_prefix_functional (pb)
  25. 0025specialize matrix_rank_selected_prefix_functional (pc)
  26. 0026specialize matrix_rank_selected_prefix_functional (w)
  27. 0027specialize matrix_rank_selected_prefix_functional (rb)
  28. 0028specialize matrix_rank_selected_prefix_functional (rc)
  29. 0029specialize matrix_rank_selected_prefix_functional (cb)
  30. 0030specialize matrix_rank_selected_prefix_functional (cc)
  31. 0031specialize matrix_rank_selected_prefix_functional (q)
  32. 0032specialize matrix_rank_selected_prefix_functional (ub)
  33. 0033specialize matrix_rank_selected_prefix_functional (uc)
  34. 0034specialize matrix_rank_selected_prefix_functional (Ub)
  35. 0035specialize matrix_rank_selected_prefix_functional (Uc)
  36. 0036apply matrix_rank_selected_prefix_functional
  37. 0037exact hfirst_left
  38. 0038exact hsecond_left
  39. 0039specialize matrix_rank_selected_prefix_functional (nb)
  40. 0040specialize matrix_rank_selected_prefix_functional (nc)
  41. 0041specialize matrix_rank_selected_prefix_functional (w)
  42. 0042specialize matrix_rank_selected_prefix_functional (rb)
  43. 0043specialize matrix_rank_selected_prefix_functional (rc)
  44. 0044specialize matrix_rank_selected_prefix_functional (cb)
  45. 0045specialize matrix_rank_selected_prefix_functional (cc)
  46. 0046specialize matrix_rank_selected_prefix_functional (q)
  47. 0047specialize matrix_rank_selected_prefix_functional (vb)
  48. 0048specialize matrix_rank_selected_prefix_functional (vc)
  49. 0049specialize matrix_rank_selected_prefix_functional (Vb)
  50. 0050specialize matrix_rank_selected_prefix_functional (Vc)
  51. 0051apply matrix_rank_selected_prefix_functional
  52. 0052exact hfirst_right
  53. 0053exact hsecond_right