DL0097

matrix_integer_selected_point_balance

Actual selected cells of integer-equal rectangular matrices are integer-equal at one proved in-range shared parent index.

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. ∀ eb. ∀ ec. ∀ fb. ∀ fc. ∀ r. ∀ w. ∀ q. ∀ rb. ∀ rc. ∀ cb. ∀ cc. ∀ i. ∀ a. ∀ b. ∀ c. ∀ d. IntegerMatrixEntrywiseEqual(ab,ac,bb,bc,eb,ec,fb,fc,r,w)FiniteMatrixSelector(rb,rc,q,r)FiniteMatrixSelector(cb,cc,q,w)Lt(i,q · q) → (∃ x. ∃ y. ∃ z. ∃ n. i = q · x + y ∧ (Lt(y,q) ∧ (BetaAt(rb,rc,x,z) ∧ (BetaAt(cb,cc,y,n)BetaAt(ab,ac,z · w + n,a))))) → (∃ x. ∃ y. ∃ z. ∃ n. i = q · x + y ∧ (Lt(y,q) ∧ (BetaAt(rb,rc,x,z) ∧ (BetaAt(cb,cc,y,n)BetaAt(bb,bc,z · w + n,b))))) → (∃ x. ∃ y. ∃ z. ∃ n. i = q · x + y ∧ (Lt(y,q) ∧ (BetaAt(rb,rc,x,z) ∧ (BetaAt(cb,cc,y,n)BetaAt(eb,ec,z · w + n,c))))) → (∃ x. ∃ y. ∃ z. ∃ n. i = q · x + y ∧ (Lt(y,q) ∧ (BetaAt(rb,rc,x,z) ∧ (BetaAt(cb,cc,y,n)BetaAt(fb,fc,z · w + n,d))))) → a + d = c + b

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 eb ec fb fc r w q rb rc cb cc i a b c d. (forall ics_index_selected_parent_equal ics_value0_selected_parent_equal ics_value1_selected_parent_equal ics_value2_selected_parent_equal ics_value3_selected_parent_equal. (exists ics_gap_selected_parent_equal_bound. ics_gap_selected_parent_equal_bound + S (ics_index_selected_parent_equal) = ((r) * (w))) -> (((exists fs_h_ics_selected_parent_equal_at0. fs_h_ics_selected_parent_equal_at0 + S (ics_value0_selected_parent_equal) = S ((S (ics_index_selected_parent_equal)) * ac)) /\ exists fs_q_ics_selected_parent_equal_at0. ab = fs_q_ics_selected_parent_equal_at0 * S ((S (ics_index_selected_parent_equal)) * ac) + (ics_value0_selected_parent_equal))) -> (((exists fs_h_ics_selected_parent_equal_at1. fs_h_ics_selected_parent_equal_at1 + S (ics_value1_selected_parent_equal) = S ((S (ics_index_selected_parent_equal)) * bc)) /\ exists fs_q_ics_selected_parent_equal_at1. bb = fs_q_ics_selected_parent_equal_at1 * S ((S (ics_index_selected_parent_equal)) * bc) + (ics_value1_selected_parent_equal))) -> (((exists fs_h_ics_selected_parent_equal_at2. fs_h_ics_selected_parent_equal_at2 + S (ics_value2_selected_parent_equal) = S ((S (ics_index_selected_parent_equal)) * ec)) /\ exists fs_q_ics_selected_parent_equal_at2. eb = fs_q_ics_selected_parent_equal_at2 * S ((S (ics_index_selected_parent_equal)) * ec) + (ics_value2_selected_parent_equal))) -> (((exists fs_h_ics_selected_parent_equal_at3. fs_h_ics_selected_parent_equal_at3 + S (ics_value3_selected_parent_equal) = S ((S (ics_index_selected_parent_equal)) * fc)) /\ exists fs_q_ics_selected_parent_equal_at3. fb = fs_q_ics_selected_parent_equal_at3 * S ((S (ics_index_selected_parent_equal)) * fc) + (ics_value3_selected_parent_equal))) -> ics_value0_selected_parent_equal + ics_value3_selected_parent_equal = ics_value2_selected_parent_equal + ics_value1_selected_parent_equal) -> (((forall fom_index_mrf_selected_rowsbound. (exists fom_gap_mrf_selected_rowsbound_index_bound. fom_gap_mrf_selected_rowsbound_index_bound + S (fom_index_mrf_selected_rowsbound) = q) -> exists fom_value_mrf_selected_rowsbound. ((((exists fom_beta_height_mrf_selected_rowsbound_entry. fom_beta_height_mrf_selected_rowsbound_entry + S (fom_value_mrf_selected_rowsbound) = S ((S (fom_index_mrf_selected_rowsbound)) * rc)) /\ exists fom_beta_quotient_mrf_selected_rowsbound_entry. rb = fom_beta_quotient_mrf_selected_rowsbound_entry * S ((S (fom_index_mrf_selected_rowsbound)) * rc) + (fom_value_mrf_selected_rowsbound))) /\ (exists fom_gap_mrf_selected_rowsbound_value_bound. fom_gap_mrf_selected_rowsbound_value_bound + S (fom_value_mrf_selected_rowsbound) = r))) /\ (forall mdr_i_selected_rowsdistinct mdr_j_selected_rowsdistinct mdr_a_selected_rowsdistinct. (exists mdr_gap_selected_rowsdistincti. mdr_gap_selected_rowsdistincti + S (mdr_i_selected_rowsdistinct) = (q)) -> (exists mdr_gap_selected_rowsdistinctj. mdr_gap_selected_rowsdistinctj + S (mdr_j_selected_rowsdistinct) = (q)) -> (((exists ff_h_mdr_selected_rowsdistinctfirst. ff_h_mdr_selected_rowsdistinctfirst + S (mdr_a_selected_rowsdistinct) = S ((S (mdr_i_selected_rowsdistinct)) * rc)) /\ exists ff_q_mdr_selected_rowsdistinctfirst. rb = ff_q_mdr_selected_rowsdistinctfirst * S ((S (mdr_i_selected_rowsdistinct)) * rc) + (mdr_a_selected_rowsdistinct))) -> (((exists ff_h_mdr_selected_rowsdistinctsecond. ff_h_mdr_selected_rowsdistinctsecond + S (mdr_a_selected_rowsdistinct) = S ((S (mdr_j_selected_rowsdistinct)) * rc)) /\ exists ff_q_mdr_selected_rowsdistinctsecond. rb = ff_q_mdr_selected_rowsdistinctsecond * S ((S (mdr_j_selected_rowsdistinct)) * rc) + (mdr_a_selected_rowsdistinct))) -> mdr_i_selected_rowsdistinct = mdr_j_selected_rowsdistinct))) -> (((forall fom_index_mrf_selected_columnsbound. (exists fom_gap_mrf_selected_columnsbound_index_bound. fom_gap_mrf_selected_columnsbound_index_bound + S (fom_index_mrf_selected_columnsbound) = q) -> exists fom_value_mrf_selected_columnsbound. ((((exists fom_beta_height_mrf_selected_columnsbound_entry. fom_beta_height_mrf_selected_columnsbound_entry + S (fom_value_mrf_selected_columnsbound) = S ((S (fom_index_mrf_selected_columnsbound)) * cc)) /\ exists fom_beta_quotient_mrf_selected_columnsbound_entry. cb = fom_beta_quotient_mrf_selected_columnsbound_entry * S ((S (fom_index_mrf_selected_columnsbound)) * cc) + (fom_value_mrf_selected_columnsbound))) /\ (exists fom_gap_mrf_selected_columnsbound_value_bound. fom_gap_mrf_selected_columnsbound_value_bound + S (fom_value_mrf_selected_columnsbound) = w))) /\ (forall mdr_i_selected_columnsdistinct mdr_j_selected_columnsdistinct mdr_a_selected_columnsdistinct. (exists mdr_gap_selected_columnsdistincti. mdr_gap_selected_columnsdistincti + S (mdr_i_selected_columnsdistinct) = (q)) -> (exists mdr_gap_selected_columnsdistinctj. mdr_gap_selected_columnsdistinctj + S (mdr_j_selected_columnsdistinct) = (q)) -> (((exists ff_h_mdr_selected_columnsdistinctfirst. ff_h_mdr_selected_columnsdistinctfirst + S (mdr_a_selected_columnsdistinct) = S ((S (mdr_i_selected_columnsdistinct)) * cc)) /\ exists ff_q_mdr_selected_columnsdistinctfirst. cb = ff_q_mdr_selected_columnsdistinctfirst * S ((S (mdr_i_selected_columnsdistinct)) * cc) + (mdr_a_selected_columnsdistinct))) -> (((exists ff_h_mdr_selected_columnsdistinctsecond. ff_h_mdr_selected_columnsdistinctsecond + S (mdr_a_selected_columnsdistinct) = S ((S (mdr_j_selected_columnsdistinct)) * cc)) /\ exists ff_q_mdr_selected_columnsdistinctsecond. cb = ff_q_mdr_selected_columnsdistinctsecond * S ((S (mdr_j_selected_columnsdistinct)) * cc) + (mdr_a_selected_columnsdistinct))) -> mdr_i_selected_columnsdistinct = mdr_j_selected_columnsdistinct))) -> (exists mdr_gap_selected_flat_bound. mdr_gap_selected_flat_bound + S (i) = (q * q)) -> (exists mdr_r_selected_point_ap mdr_s_selected_point_ap mdr_u_selected_point_ap mdr_v_selected_point_ap. ((i = (q) * mdr_r_selected_point_ap + mdr_s_selected_point_ap) /\ ((exists mdr_gap_selected_point_apcolumn. mdr_gap_selected_point_apcolumn + S (mdr_s_selected_point_ap) = (q)) /\ ((((exists ff_h_mdr_selected_point_aprow_index. ff_h_mdr_selected_point_aprow_index + S (mdr_u_selected_point_ap) = S ((S (mdr_r_selected_point_ap)) * rc)) /\ exists ff_q_mdr_selected_point_aprow_index. rb = ff_q_mdr_selected_point_aprow_index * S ((S (mdr_r_selected_point_ap)) * rc) + (mdr_u_selected_point_ap))) /\ ((((exists ff_h_mdr_selected_point_apcolumn_index. ff_h_mdr_selected_point_apcolumn_index + S (mdr_v_selected_point_ap) = S ((S (mdr_s_selected_point_ap)) * cc)) /\ exists ff_q_mdr_selected_point_apcolumn_index. cb = ff_q_mdr_selected_point_apcolumn_index * S ((S (mdr_s_selected_point_ap)) * cc) + (mdr_v_selected_point_ap))) /\ (((exists ff_h_mdr_selected_point_apsource. ff_h_mdr_selected_point_apsource + S (a) = S ((S ((mdr_u_selected_point_ap) * (w) + (mdr_v_selected_point_ap))) * ac)) /\ exists ff_q_mdr_selected_point_apsource. ab = ff_q_mdr_selected_point_apsource * S ((S ((mdr_u_selected_point_ap) * (w) + (mdr_v_selected_point_ap))) * ac) + (a)))))))) -> (exists mdr_r_selected_point_an mdr_s_selected_point_an mdr_u_selected_point_an mdr_v_selected_point_an. ((i = (q) * mdr_r_selected_point_an + mdr_s_selected_point_an) /\ ((exists mdr_gap_selected_point_ancolumn. mdr_gap_selected_point_ancolumn + S (mdr_s_selected_point_an) = (q)) /\ ((((exists ff_h_mdr_selected_point_anrow_index. ff_h_mdr_selected_point_anrow_index + S (mdr_u_selected_point_an) = S ((S (mdr_r_selected_point_an)) * rc)) /\ exists ff_q_mdr_selected_point_anrow_index. rb = ff_q_mdr_selected_point_anrow_index * S ((S (mdr_r_selected_point_an)) * rc) + (mdr_u_selected_point_an))) /\ ((((exists ff_h_mdr_selected_point_ancolumn_index. ff_h_mdr_selected_point_ancolumn_index + S (mdr_v_selected_point_an) = S ((S (mdr_s_selected_point_an)) * cc)) /\ exists ff_q_mdr_selected_point_ancolumn_index. cb = ff_q_mdr_selected_point_ancolumn_index * S ((S (mdr_s_selected_point_an)) * cc) + (mdr_v_selected_point_an))) /\ (((exists ff_h_mdr_selected_point_ansource. ff_h_mdr_selected_point_ansource + S (b) = S ((S ((mdr_u_selected_point_an) * (w) + (mdr_v_selected_point_an))) * bc)) /\ exists ff_q_mdr_selected_point_ansource. bb = ff_q_mdr_selected_point_ansource * S ((S ((mdr_u_selected_point_an) * (w) + (mdr_v_selected_point_an))) * bc) + (b)))))))) -> (exists mdr_r_selected_point_bp mdr_s_selected_point_bp mdr_u_selected_point_bp mdr_v_selected_point_bp. ((i = (q) * mdr_r_selected_point_bp + mdr_s_selected_point_bp) /\ ((exists mdr_gap_selected_point_bpcolumn. mdr_gap_selected_point_bpcolumn + S (mdr_s_selected_point_bp) = (q)) /\ ((((exists ff_h_mdr_selected_point_bprow_index. ff_h_mdr_selected_point_bprow_index + S (mdr_u_selected_point_bp) = S ((S (mdr_r_selected_point_bp)) * rc)) /\ exists ff_q_mdr_selected_point_bprow_index. rb = ff_q_mdr_selected_point_bprow_index * S ((S (mdr_r_selected_point_bp)) * rc) + (mdr_u_selected_point_bp))) /\ ((((exists ff_h_mdr_selected_point_bpcolumn_index. ff_h_mdr_selected_point_bpcolumn_index + S (mdr_v_selected_point_bp) = S ((S (mdr_s_selected_point_bp)) * cc)) /\ exists ff_q_mdr_selected_point_bpcolumn_index. cb = ff_q_mdr_selected_point_bpcolumn_index * S ((S (mdr_s_selected_point_bp)) * cc) + (mdr_v_selected_point_bp))) /\ (((exists ff_h_mdr_selected_point_bpsource. ff_h_mdr_selected_point_bpsource + S (c) = S ((S ((mdr_u_selected_point_bp) * (w) + (mdr_v_selected_point_bp))) * ec)) /\ exists ff_q_mdr_selected_point_bpsource. eb = ff_q_mdr_selected_point_bpsource * S ((S ((mdr_u_selected_point_bp) * (w) + (mdr_v_selected_point_bp))) * ec) + (c)))))))) -> (exists mdr_r_selected_point_bn mdr_s_selected_point_bn mdr_u_selected_point_bn mdr_v_selected_point_bn. ((i = (q) * mdr_r_selected_point_bn + mdr_s_selected_point_bn) /\ ((exists mdr_gap_selected_point_bncolumn. mdr_gap_selected_point_bncolumn + S (mdr_s_selected_point_bn) = (q)) /\ ((((exists ff_h_mdr_selected_point_bnrow_index. ff_h_mdr_selected_point_bnrow_index + S (mdr_u_selected_point_bn) = S ((S (mdr_r_selected_point_bn)) * rc)) /\ exists ff_q_mdr_selected_point_bnrow_index. rb = ff_q_mdr_selected_point_bnrow_index * S ((S (mdr_r_selected_point_bn)) * rc) + (mdr_u_selected_point_bn))) /\ ((((exists ff_h_mdr_selected_point_bncolumn_index. ff_h_mdr_selected_point_bncolumn_index + S (mdr_v_selected_point_bn) = S ((S (mdr_s_selected_point_bn)) * cc)) /\ exists ff_q_mdr_selected_point_bncolumn_index. cb = ff_q_mdr_selected_point_bncolumn_index * S ((S (mdr_s_selected_point_bn)) * cc) + (mdr_v_selected_point_bn))) /\ (((exists ff_h_mdr_selected_point_bnsource. ff_h_mdr_selected_point_bnsource + S (d) = S ((S ((mdr_u_selected_point_bn) * (w) + (mdr_v_selected_point_bn))) * fc)) /\ exists ff_q_mdr_selected_point_bnsource. fb = ff_q_mdr_selected_point_bnsource * S ((S ((mdr_u_selected_point_bn) * (w) + (mdr_v_selected_point_bn))) * fc) + (d)))))))) -> a + d = c + b

Complete tactic proof in conservative notation

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

142 script commands · 16 reading checkpoints · 3 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 (4)
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 eb
  6. L6
    intro ec
  7. L7
    intro fb
  8. L8
    intro fc
  9. L9
    intro r
  10. L10
    intro w
02Fix variables and assumptionsL11–20

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

  1. L11
    intro q
  2. L12
    intro rb
  3. L13
    intro rc
  4. L14
    intro cb
  5. L15
    intro cc
  6. L16
    intro i
  7. L17
    intro a
  8. L18
    intro b
  9. L19
    intro c
  10. L20
    intro d
03Fix variables and assumptionsL21–28

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

  1. L21
    intro hequal
  2. L22
    intro hrows
  3. L23
    intro hcolumns
  4. L24
    intro hi
  5. L25
    intro hap
  6. L26
    intro han
  7. L27
    intro hbp
  8. L28
    intro hbn
04Separate the logical casesL29–38

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

  1. L29
    cases hrows
  2. L30
    cases hcolumns
  3. L31
    cases hap
  4. L32
    cases hap_witness
  5. L33
    cases hap_witness_witness
  6. L34
    cases hap_witness_witness_witness
  7. L35
    cases hap_witness_witness_witness_witness
  8. L36
    cases hap_witness_witness_witness_witness_right
  9. L37
    cases hap_witness_witness_witness_witness_right_right
  10. L38
    cases hap_witness_witness_witness_witness_right_right_right
05Establish hselectedrowL39–46

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply matrix recursive quotient row bound.

  1. L39
    have hselectedrow : Lt(x,q)Definitions: Lt(x,q)Original native command in the exact edition
  2. L40
    specialize matrix_recursive_quotient_row_bound (q)
  3. L41
    specialize matrix_recursive_quotient_row_bound (i)
  4. L42
    specialize matrix_recursive_quotient_row_bound (x)
  5. L43
    specialize matrix_recursive_quotient_row_bound (x1)
  6. L44
    apply matrix_recursive_quotient_row_bound
  7. L45
    exact hap_witness_witness_witness_witness_left
  8. L46
    exact hi
06Establish hrowL47–56

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply matrix rank bounded prefix value.

  1. L47
  2. L48
    specialize matrix_rank_bounded_prefix_value (rb)
  3. L49
    specialize matrix_rank_bounded_prefix_value (rc)
  4. L50
    specialize matrix_rank_bounded_prefix_value (q)
  5. L51
    specialize matrix_rank_bounded_prefix_value (r)
  6. L52
    specialize matrix_rank_bounded_prefix_value (x)
  7. L53
    specialize matrix_rank_bounded_prefix_value (x2)
  8. L54
    apply matrix_rank_bounded_prefix_value
  9. L55
    exact hrows_left
  10. L56
    exact hselectedrow
07Use earlier factsL57–57

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

  1. L57
    exact hap_witness_witness_witness_witness_right_right_left
08Establish hcolumnL58–67

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply matrix rank bounded prefix value.

  1. L58
    have hcolumn : Lt(x3,w)Definitions: Lt(x3,w)Original native command in the exact edition
  2. L59
    specialize matrix_rank_bounded_prefix_value (cb)
  3. L60
    specialize matrix_rank_bounded_prefix_value (cc)
  4. L61
    specialize matrix_rank_bounded_prefix_value (q)
  5. L62
    specialize matrix_rank_bounded_prefix_value (w)
  6. L63
    specialize matrix_rank_bounded_prefix_value (x1)
  7. L64
    specialize matrix_rank_bounded_prefix_value (x3)
  8. L65
    apply matrix_rank_bounded_prefix_value
  9. L66
    exact hcolumns_left
  10. L67
    exact hap_witness_witness_witness_witness_right_left
09Use earlier factsL68–77

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

  1. L68
    exact hap_witness_witness_witness_witness_right_right_right_left
  2. L69
    specialize hequal (x2 * w + x3)
  3. L70
    specialize hequal (a)
  4. L71
    specialize hequal (b)
  5. L72
    specialize hequal (c)
  6. L73
    specialize hequal (d)
  7. L74
    apply hequal
  8. L75
    specialize matrix_integer_rectangular_index_bound (r)
  9. L76
    specialize matrix_integer_rectangular_index_bound (w)
  10. L77
    specialize matrix_integer_rectangular_index_bound (x2)
10Use earlier factsL78–87

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

  1. L78
    specialize matrix_integer_rectangular_index_bound (x3)
  2. L79
    apply matrix_integer_rectangular_index_bound
  3. L80
    exact hrow
  4. L81
    exact hcolumn
  5. L82
    exact hap_witness_witness_witness_witness_right_right_right_right
  6. L83
    specialize matrix_integer_selected_point_at_source (bb)
  7. L84
    specialize matrix_integer_selected_point_at_source (bc)
  8. L85
    specialize matrix_integer_selected_point_at_source (w)
  9. L86
    specialize matrix_integer_selected_point_at_source (rb)
  10. L87
    specialize matrix_integer_selected_point_at_source (rc)
11Use earlier factsL88–97

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

  1. L88
    specialize matrix_integer_selected_point_at_source (cb)
  2. L89
    specialize matrix_integer_selected_point_at_source (cc)
  3. L90
    specialize matrix_integer_selected_point_at_source (q)
  4. L91
    specialize matrix_integer_selected_point_at_source (i)
  5. L92
    specialize matrix_integer_selected_point_at_source (x)
  6. L93
    specialize matrix_integer_selected_point_at_source (x1)
  7. L94
    specialize matrix_integer_selected_point_at_source (x2)
  8. L95
    specialize matrix_integer_selected_point_at_source (x3)
  9. L96
    specialize matrix_integer_selected_point_at_source (b)
  10. L97
    apply matrix_integer_selected_point_at_source
12Use earlier factsL98–107

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

  1. L98
    exact han
  2. L99
    exact hap_witness_witness_witness_witness_left
  3. L100
    exact hap_witness_witness_witness_witness_right_left
  4. L101
    exact hap_witness_witness_witness_witness_right_right_left
  5. L102
    exact hap_witness_witness_witness_witness_right_right_right_left
  6. L103
    specialize matrix_integer_selected_point_at_source (eb)
  7. L104
    specialize matrix_integer_selected_point_at_source (ec)
  8. L105
    specialize matrix_integer_selected_point_at_source (w)
  9. L106
    specialize matrix_integer_selected_point_at_source (rb)
  10. L107
    specialize matrix_integer_selected_point_at_source (rc)
13Use earlier factsL108–117

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

  1. L108
    specialize matrix_integer_selected_point_at_source (cb)
  2. L109
    specialize matrix_integer_selected_point_at_source (cc)
  3. L110
    specialize matrix_integer_selected_point_at_source (q)
  4. L111
    specialize matrix_integer_selected_point_at_source (i)
  5. L112
    specialize matrix_integer_selected_point_at_source (x)
  6. L113
    specialize matrix_integer_selected_point_at_source (x1)
  7. L114
    specialize matrix_integer_selected_point_at_source (x2)
  8. L115
    specialize matrix_integer_selected_point_at_source (x3)
  9. L116
    specialize matrix_integer_selected_point_at_source (c)
  10. L117
    apply matrix_integer_selected_point_at_source
14Use earlier factsL118–127

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

  1. L118
    exact hbp
  2. L119
    exact hap_witness_witness_witness_witness_left
  3. L120
    exact hap_witness_witness_witness_witness_right_left
  4. L121
    exact hap_witness_witness_witness_witness_right_right_left
  5. L122
    exact hap_witness_witness_witness_witness_right_right_right_left
  6. L123
    specialize matrix_integer_selected_point_at_source (fb)
  7. L124
    specialize matrix_integer_selected_point_at_source (fc)
  8. L125
    specialize matrix_integer_selected_point_at_source (w)
  9. L126
    specialize matrix_integer_selected_point_at_source (rb)
  10. L127
    specialize matrix_integer_selected_point_at_source (rc)
15Use earlier factsL128–137

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

  1. L128
    specialize matrix_integer_selected_point_at_source (cb)
  2. L129
    specialize matrix_integer_selected_point_at_source (cc)
  3. L130
    specialize matrix_integer_selected_point_at_source (q)
  4. L131
    specialize matrix_integer_selected_point_at_source (i)
  5. L132
    specialize matrix_integer_selected_point_at_source (x)
  6. L133
    specialize matrix_integer_selected_point_at_source (x1)
  7. L134
    specialize matrix_integer_selected_point_at_source (x2)
  8. L135
    specialize matrix_integer_selected_point_at_source (x3)
  9. L136
    specialize matrix_integer_selected_point_at_source (d)
  10. L137
    apply matrix_integer_selected_point_at_source
16Use earlier factsL138–142

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

  1. L138
    exact hbn
  2. L139
    exact hap_witness_witness_witness_witness_left
  3. L140
    exact hap_witness_witness_witness_witness_right_left
  4. L141
    exact hap_witness_witness_witness_witness_right_right_left
  5. L142
    exact hap_witness_witness_witness_witness_right_right_right_left

Library-wide reading audit

Original defined command ledger · 142 lines
  1. 0001intro ab
  2. 0002intro ac
  3. 0003intro bb
  4. 0004intro bc
  5. 0005intro eb
  6. 0006intro ec
  7. 0007intro fb
  8. 0008intro fc
  9. 0009intro r
  10. 0010intro w
  11. 0011intro q
  12. 0012intro rb
  13. 0013intro rc
  14. 0014intro cb
  15. 0015intro cc
  16. 0016intro i
  17. 0017intro a
  18. 0018intro b
  19. 0019intro c
  20. 0020intro d
  21. 0021intro hequal
  22. 0022intro hrows
  23. 0023intro hcolumns
  24. 0024intro hi
  25. 0025intro hap
  26. 0026intro han
  27. 0027intro hbp
  28. 0028intro hbn
  29. 0029cases hrows
  30. 0030cases hcolumns
  31. 0031cases hap
  32. 0032cases hap_witness
  33. 0033cases hap_witness_witness
  34. 0034cases hap_witness_witness_witness
  35. 0035cases hap_witness_witness_witness_witness
  36. 0036cases hap_witness_witness_witness_witness_right
  37. 0037cases hap_witness_witness_witness_witness_right_right
  38. 0038cases hap_witness_witness_witness_witness_right_right_right
  39. 0039have hselectedrow : Lt(x,q)
  40. 0040specialize matrix_recursive_quotient_row_bound (q)
  41. 0041specialize matrix_recursive_quotient_row_bound (i)
  42. 0042specialize matrix_recursive_quotient_row_bound (x)
  43. 0043specialize matrix_recursive_quotient_row_bound (x1)
  44. 0044apply matrix_recursive_quotient_row_bound
  45. 0045exact hap_witness_witness_witness_witness_left
  46. 0046exact hi
  47. 0047have hrow : Lt(x2,r)
  48. 0048specialize matrix_rank_bounded_prefix_value (rb)
  49. 0049specialize matrix_rank_bounded_prefix_value (rc)
  50. 0050specialize matrix_rank_bounded_prefix_value (q)
  51. 0051specialize matrix_rank_bounded_prefix_value (r)
  52. 0052specialize matrix_rank_bounded_prefix_value (x)
  53. 0053specialize matrix_rank_bounded_prefix_value (x2)
  54. 0054apply matrix_rank_bounded_prefix_value
  55. 0055exact hrows_left
  56. 0056exact hselectedrow
  57. 0057exact hap_witness_witness_witness_witness_right_right_left
  58. 0058have hcolumn : Lt(x3,w)
  59. 0059specialize matrix_rank_bounded_prefix_value (cb)
  60. 0060specialize matrix_rank_bounded_prefix_value (cc)
  61. 0061specialize matrix_rank_bounded_prefix_value (q)
  62. 0062specialize matrix_rank_bounded_prefix_value (w)
  63. 0063specialize matrix_rank_bounded_prefix_value (x1)
  64. 0064specialize matrix_rank_bounded_prefix_value (x3)
  65. 0065apply matrix_rank_bounded_prefix_value
  66. 0066exact hcolumns_left
  67. 0067exact hap_witness_witness_witness_witness_right_left
  68. 0068exact hap_witness_witness_witness_witness_right_right_right_left
  69. 0069specialize hequal (x2 * w + x3)
  70. 0070specialize hequal (a)
  71. 0071specialize hequal (b)
  72. 0072specialize hequal (c)
  73. 0073specialize hequal (d)
  74. 0074apply hequal
  75. 0075specialize matrix_integer_rectangular_index_bound (r)
  76. 0076specialize matrix_integer_rectangular_index_bound (w)
  77. 0077specialize matrix_integer_rectangular_index_bound (x2)
  78. 0078specialize matrix_integer_rectangular_index_bound (x3)
  79. 0079apply matrix_integer_rectangular_index_bound
  80. 0080exact hrow
  81. 0081exact hcolumn
  82. 0082exact hap_witness_witness_witness_witness_right_right_right_right
  83. 0083specialize matrix_integer_selected_point_at_source (bb)
  84. 0084specialize matrix_integer_selected_point_at_source (bc)
  85. 0085specialize matrix_integer_selected_point_at_source (w)
  86. 0086specialize matrix_integer_selected_point_at_source (rb)
  87. 0087specialize matrix_integer_selected_point_at_source (rc)
  88. 0088specialize matrix_integer_selected_point_at_source (cb)
  89. 0089specialize matrix_integer_selected_point_at_source (cc)
  90. 0090specialize matrix_integer_selected_point_at_source (q)
  91. 0091specialize matrix_integer_selected_point_at_source (i)
  92. 0092specialize matrix_integer_selected_point_at_source (x)
  93. 0093specialize matrix_integer_selected_point_at_source (x1)
  94. 0094specialize matrix_integer_selected_point_at_source (x2)
  95. 0095specialize matrix_integer_selected_point_at_source (x3)
  96. 0096specialize matrix_integer_selected_point_at_source (b)
  97. 0097apply matrix_integer_selected_point_at_source
  98. 0098exact han
  99. 0099exact hap_witness_witness_witness_witness_left
  100. 0100exact hap_witness_witness_witness_witness_right_left
  101. 0101exact hap_witness_witness_witness_witness_right_right_left
  102. 0102exact hap_witness_witness_witness_witness_right_right_right_left
  103. 0103specialize matrix_integer_selected_point_at_source (eb)
  104. 0104specialize matrix_integer_selected_point_at_source (ec)
  105. 0105specialize matrix_integer_selected_point_at_source (w)
  106. 0106specialize matrix_integer_selected_point_at_source (rb)
  107. 0107specialize matrix_integer_selected_point_at_source (rc)
  108. 0108specialize matrix_integer_selected_point_at_source (cb)
  109. 0109specialize matrix_integer_selected_point_at_source (cc)
  110. 0110specialize matrix_integer_selected_point_at_source (q)
  111. 0111specialize matrix_integer_selected_point_at_source (i)
  112. 0112specialize matrix_integer_selected_point_at_source (x)
  113. 0113specialize matrix_integer_selected_point_at_source (x1)
  114. 0114specialize matrix_integer_selected_point_at_source (x2)
  115. 0115specialize matrix_integer_selected_point_at_source (x3)
  116. 0116specialize matrix_integer_selected_point_at_source (c)
  117. 0117apply matrix_integer_selected_point_at_source
  118. 0118exact hbp
  119. 0119exact hap_witness_witness_witness_witness_left
  120. 0120exact hap_witness_witness_witness_witness_right_left
  121. 0121exact hap_witness_witness_witness_witness_right_right_left
  122. 0122exact hap_witness_witness_witness_witness_right_right_right_left
  123. 0123specialize matrix_integer_selected_point_at_source (fb)
  124. 0124specialize matrix_integer_selected_point_at_source (fc)
  125. 0125specialize matrix_integer_selected_point_at_source (w)
  126. 0126specialize matrix_integer_selected_point_at_source (rb)
  127. 0127specialize matrix_integer_selected_point_at_source (rc)
  128. 0128specialize matrix_integer_selected_point_at_source (cb)
  129. 0129specialize matrix_integer_selected_point_at_source (cc)
  130. 0130specialize matrix_integer_selected_point_at_source (q)
  131. 0131specialize matrix_integer_selected_point_at_source (i)
  132. 0132specialize matrix_integer_selected_point_at_source (x)
  133. 0133specialize matrix_integer_selected_point_at_source (x1)
  134. 0134specialize matrix_integer_selected_point_at_source (x2)
  135. 0135specialize matrix_integer_selected_point_at_source (x3)
  136. 0136specialize matrix_integer_selected_point_at_source (d)
  137. 0137apply matrix_integer_selected_point_at_source
  138. 0138exact hbn
  139. 0139exact hap_witness_witness_witness_witness_left
  140. 0140exact hap_witness_witness_witness_witness_right_left
  141. 0141exact hap_witness_witness_witness_witness_right_right_left
  142. 0142exact hap_witness_witness_witness_witness_right_right_right_left