Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved. Exact original first-admission records.
This branch proves the finite determinant/rank/span substrate. It does not claim Smith or Hermite normal form, lattice index equals determinant, determinant multiplicativity, lattice reduction, or geometry-of-numbers theorems.
Exact theorem in conservative defined notation
∀ ab. ∀ ac. ∀ bb. ∀ bc. ∀ cb. ∀ cc. ∀ db. ∀ dc. ∀ w. ∀ row. ∀ L. ∀ M. ∀ N. MatrixPointwiseAdd(bb,bc,cb,cc,db,dc,w) → MatrixProductCell(ab,ac,bb,bc,w,1,row,0,L) → MatrixProductCell(ab,ac,cb,cc,w,1,row,0,M) → MatrixProductCell(ab,ac,db,dc,w,1,row,0,N) → L + M = N
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 167 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
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
02Fix variables and assumptionsL11–17
03Separate the logical casesL18–27
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L18
cases hfirst - L19
cases hfirst_witness - L20
cases hfirst_witness_witness - L21
cases hfirst_witness_witness_witness - L22
cases hfirst_witness_witness_witness_witness - L23
cases hfirst_witness_witness_witness_witness_right - L24
cases hsecond - L25
cases hsecond_witness - L26
cases hsecond_witness_witness - L27
cases hsecond_witness_witness_witness
04Separate the logical casesL28–35
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L28
cases hsecond_witness_witness_witness_witness - L29
cases hsecond_witness_witness_witness_witness_right - L30
cases hthird - L31
cases hthird_witness - L32
cases hthird_witness_witness - L33
cases hthird_witness_witness_witness - L34
cases hthird_witness_witness_witness_witness - L35
cases hthird_witness_witness_witness_witness_right
05Use earlier factsL36–45
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L36
specialize integer_span_dot_product_pointwise_add (x) - L37
specialize integer_span_dot_product_pointwise_add (x1) - L38
specialize integer_span_dot_product_pointwise_add (x2) - L39
specialize integer_span_dot_product_pointwise_add (x3) - L40
specialize integer_span_dot_product_pointwise_add (x4) - L41
specialize integer_span_dot_product_pointwise_add (x5) - L42
specialize integer_span_dot_product_pointwise_add (x6) - L43
specialize integer_span_dot_product_pointwise_add (x7) - L44
specialize integer_span_dot_product_pointwise_add (x8) - L45
specialize integer_span_dot_product_pointwise_add (x9)
06Use earlier factsL46–55
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L46
specialize integer_span_dot_product_pointwise_add (x10) - L47
specialize integer_span_dot_product_pointwise_add (x11) - L48
specialize integer_span_dot_product_pointwise_add (w) - L49
specialize integer_span_dot_product_pointwise_add (L) - L50
specialize integer_span_dot_product_pointwise_add (M) - L51
specialize integer_span_dot_product_pointwise_add (N) - L52
apply integer_span_dot_product_pointwise_add - L53
exact hfirst_witness_witness_witness_witness_right_right - L54
exact hsecond_witness_witness_witness_witness_right_right - L55
exact hthird_witness_witness_witness_witness_right_right
07Fix variables and assumptionsL56–65
08Fix variables and assumptionsL66–69
09Establish hmatrixL70–74
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L70
have hmatrix : ∃ value. BetaAt(ab,ac,row · w + 1 · i,value)Definitions: BetaAt(ab,ac,row · w + 1 · i,value)Original native command in the exact edition - L71
specialize beta_at_exists (ab) - L72
specialize beta_at_exists (ac) - L73
specialize beta_at_exists (row * w + 1 * i) - L74
apply beta_at_exists
10Separate the logical casesL75–75
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L75
cases hmatrix
11Establish hleftL76–80
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L76
have hleft : ∃ value. BetaAt(bb,bc,i,value)Definitions: BetaAt(bb,bc,i,value)Original native command in the exact edition - L77
specialize beta_at_exists (bb) - L78
specialize beta_at_exists (bc) - L79
specialize beta_at_exists (i) - L80
apply beta_at_exists
12Separate the logical casesL81–81
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L81
cases hleft
13Establish hrightL82–86
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L82
have hright : ∃ value. BetaAt(cb,cc,i,value)Definitions: BetaAt(cb,cc,i,value)Original native command in the exact edition - L83
specialize beta_at_exists (cb) - L84
specialize beta_at_exists (cc) - L85
specialize beta_at_exists (i) - L86
apply beta_at_exists
14Separate the logical casesL87–87
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L87
cases hright
15Establish htotalL88–92
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L88
have htotal : ∃ value. BetaAt(db,dc,i,value)Definitions: BetaAt(db,dc,i,value)Original native command in the exact edition - L89
specialize beta_at_exists (db) - L90
specialize beta_at_exists (dc) - L91
specialize beta_at_exists (i) - L92
apply beta_at_exists
16Separate the logical casesL93–93
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L93
cases htotal
17Establish haeqL94–101
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hfirst witness witness witness witness left.
- L94
have haeq : a = x12 - L95
specialize hfirst_witness_witness_witness_witness_left (i) - L96
specialize hfirst_witness_witness_witness_witness_left (x12) - L97
specialize hfirst_witness_witness_witness_witness_left (a) - L98
apply hfirst_witness_witness_witness_witness_left - L99
exact hi - L100
exact hmatrix_witness - L101
exact ha
18Establish hceqL102–109
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hsecond witness witness witness witness left.
- L102
have hceq : c = x12 - L103
specialize hsecond_witness_witness_witness_witness_left (i) - L104
specialize hsecond_witness_witness_witness_witness_left (x12) - L105
specialize hsecond_witness_witness_witness_witness_left (c) - L106
apply hsecond_witness_witness_witness_witness_left - L107
exact hi - L108
exact hmatrix_witness - L109
exact hc
19Establish heeqL110–117
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hthird witness witness witness witness left.
- L110
have heeq : e = x12 - L111
specialize hthird_witness_witness_witness_witness_left (i) - L112
specialize hthird_witness_witness_witness_witness_left (x12) - L113
specialize hthird_witness_witness_witness_witness_left (e) - L114
apply hthird_witness_witness_witness_witness_left - L115
exact hi - L116
exact hmatrix_witness - L117
exact he
20Establish hindexL118–119
21Establish hbeqL120–129
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hfirst witness witness witness witness right left.
- L120
have hbeq : b = x13 - L121
specialize hfirst_witness_witness_witness_witness_right_left (i) - L122
specialize hfirst_witness_witness_witness_witness_right_left (x13) - L123
specialize hfirst_witness_witness_witness_witness_right_left (b) - L124
apply hfirst_witness_witness_witness_witness_right_left - L125
exact hi - L126
rewrite hindex - L127
rewrite hindex - L128
exact hleft_witness - L129
exact hb
22Establish hdeqL130–139
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hsecond witness witness witness witness right left.
- L130
have hdeq : d = x14 - L131
specialize hsecond_witness_witness_witness_witness_right_left (i) - L132
specialize hsecond_witness_witness_witness_witness_right_left (x14) - L133
specialize hsecond_witness_witness_witness_witness_right_left (d) - L134
apply hsecond_witness_witness_witness_witness_right_left - L135
exact hi - L136
rewrite hindex - L137
rewrite hindex - L138
exact hright_witness - L139
exact hd
23Establish hfeqL140–149
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hthird witness witness witness witness right left.
- L140
have hfeq : f = x15 - L141
specialize hthird_witness_witness_witness_witness_right_left (i) - L142
specialize hthird_witness_witness_witness_witness_right_left (x15) - L143
specialize hthird_witness_witness_witness_witness_right_left (f) - L144
apply hthird_witness_witness_witness_witness_right_left - L145
exact hi - L146
rewrite hindex - L147
rewrite hindex - L148
exact htotal_witness - L149
exact hf
24Establish hcoeffL150–159
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hadd.
25Calculate and transport equalitiesL160–166
26Use earlier factsL167–167
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L167
apply mul_add
Original defined command ledger · 167 lines
- 0001
intro ab - 0002
intro ac - 0003
intro bb - 0004
intro bc - 0005
intro cb - 0006
intro cc - 0007
intro db - 0008
intro dc - 0009
intro w - 0010
intro row - 0011
intro L - 0012
intro M - 0013
intro N - 0014
intro hadd - 0015
intro hfirst - 0016
intro hsecond - 0017
intro hthird - 0018
cases hfirst - 0019
cases hfirst_witness - 0020
cases hfirst_witness_witness - 0021
cases hfirst_witness_witness_witness - 0022
cases hfirst_witness_witness_witness_witness - 0023
cases hfirst_witness_witness_witness_witness_right - 0024
cases hsecond - 0025
cases hsecond_witness - 0026
cases hsecond_witness_witness - 0027
cases hsecond_witness_witness_witness - 0028
cases hsecond_witness_witness_witness_witness - 0029
cases hsecond_witness_witness_witness_witness_right - 0030
cases hthird - 0031
cases hthird_witness - 0032
cases hthird_witness_witness - 0033
cases hthird_witness_witness_witness - 0034
cases hthird_witness_witness_witness_witness - 0035
cases hthird_witness_witness_witness_witness_right - 0036
specialize integer_span_dot_product_pointwise_add (x) - 0037
specialize integer_span_dot_product_pointwise_add (x1) - 0038
specialize integer_span_dot_product_pointwise_add (x2) - 0039
specialize integer_span_dot_product_pointwise_add (x3) - 0040
specialize integer_span_dot_product_pointwise_add (x4) - 0041
specialize integer_span_dot_product_pointwise_add (x5) - 0042
specialize integer_span_dot_product_pointwise_add (x6) - 0043
specialize integer_span_dot_product_pointwise_add (x7) - 0044
specialize integer_span_dot_product_pointwise_add (x8) - 0045
specialize integer_span_dot_product_pointwise_add (x9) - 0046
specialize integer_span_dot_product_pointwise_add (x10) - 0047
specialize integer_span_dot_product_pointwise_add (x11) - 0048
specialize integer_span_dot_product_pointwise_add (w) - 0049
specialize integer_span_dot_product_pointwise_add (L) - 0050
specialize integer_span_dot_product_pointwise_add (M) - 0051
specialize integer_span_dot_product_pointwise_add (N) - 0052
apply integer_span_dot_product_pointwise_add - 0053
exact hfirst_witness_witness_witness_witness_right_right - 0054
exact hsecond_witness_witness_witness_witness_right_right - 0055
exact hthird_witness_witness_witness_witness_right_right - 0056
intro i - 0057
intro a - 0058
intro b - 0059
intro c - 0060
intro d - 0061
intro e - 0062
intro f - 0063
intro hi - 0064
intro ha - 0065
intro hb - 0066
intro hc - 0067
intro hd - 0068
intro he - 0069
intro hf - 0070
have hmatrix : ∃ value. BetaAt(ab,ac,row · w + 1 · i,value) - 0071
specialize beta_at_exists (ab) - 0072
specialize beta_at_exists (ac) - 0073
specialize beta_at_exists (row * w + 1 * i) - 0074
apply beta_at_exists - 0075
cases hmatrix - 0076
have hleft : ∃ value. BetaAt(bb,bc,i,value) - 0077
specialize beta_at_exists (bb) - 0078
specialize beta_at_exists (bc) - 0079
specialize beta_at_exists (i) - 0080
apply beta_at_exists - 0081
cases hleft - 0082
have hright : ∃ value. BetaAt(cb,cc,i,value) - 0083
specialize beta_at_exists (cb) - 0084
specialize beta_at_exists (cc) - 0085
specialize beta_at_exists (i) - 0086
apply beta_at_exists - 0087
cases hright - 0088
have htotal : ∃ value. BetaAt(db,dc,i,value) - 0089
specialize beta_at_exists (db) - 0090
specialize beta_at_exists (dc) - 0091
specialize beta_at_exists (i) - 0092
apply beta_at_exists - 0093
cases htotal - 0094
have haeq : a = x12 - 0095
specialize hfirst_witness_witness_witness_witness_left (i) - 0096
specialize hfirst_witness_witness_witness_witness_left (x12) - 0097
specialize hfirst_witness_witness_witness_witness_left (a) - 0098
apply hfirst_witness_witness_witness_witness_left - 0099
exact hi - 0100
exact hmatrix_witness - 0101
exact ha - 0102
have hceq : c = x12 - 0103
specialize hsecond_witness_witness_witness_witness_left (i) - 0104
specialize hsecond_witness_witness_witness_witness_left (x12) - 0105
specialize hsecond_witness_witness_witness_witness_left (c) - 0106
apply hsecond_witness_witness_witness_witness_left - 0107
exact hi - 0108
exact hmatrix_witness - 0109
exact hc - 0110
have heeq : e = x12 - 0111
specialize hthird_witness_witness_witness_witness_left (i) - 0112
specialize hthird_witness_witness_witness_witness_left (x12) - 0113
specialize hthird_witness_witness_witness_witness_left (e) - 0114
apply hthird_witness_witness_witness_witness_left - 0115
exact hi - 0116
exact hmatrix_witness - 0117
exact he - 0118
have hindex : 0 + 1 * i = i - 0119
simp [one_mul, zero_add] - 0120
have hbeq : b = x13 - 0121
specialize hfirst_witness_witness_witness_witness_right_left (i) - 0122
specialize hfirst_witness_witness_witness_witness_right_left (x13) - 0123
specialize hfirst_witness_witness_witness_witness_right_left (b) - 0124
apply hfirst_witness_witness_witness_witness_right_left - 0125
exact hi - 0126
rewrite hindex - 0127
rewrite hindex - 0128
exact hleft_witness - 0129
exact hb - 0130
have hdeq : d = x14 - 0131
specialize hsecond_witness_witness_witness_witness_right_left (i) - 0132
specialize hsecond_witness_witness_witness_witness_right_left (x14) - 0133
specialize hsecond_witness_witness_witness_witness_right_left (d) - 0134
apply hsecond_witness_witness_witness_witness_right_left - 0135
exact hi - 0136
rewrite hindex - 0137
rewrite hindex - 0138
exact hright_witness - 0139
exact hd - 0140
have hfeq : f = x15 - 0141
specialize hthird_witness_witness_witness_witness_right_left (i) - 0142
specialize hthird_witness_witness_witness_witness_right_left (x15) - 0143
specialize hthird_witness_witness_witness_witness_right_left (f) - 0144
apply hthird_witness_witness_witness_witness_right_left - 0145
exact hi - 0146
rewrite hindex - 0147
rewrite hindex - 0148
exact htotal_witness - 0149
exact hf - 0150
have hcoeff : x15 = x13 + x14 - 0151
specialize hadd (i) - 0152
specialize hadd (x13) - 0153
specialize hadd (x14) - 0154
specialize hadd (x15) - 0155
apply hadd - 0156
exact hi - 0157
exact hleft_witness - 0158
exact hright_witness - 0159
exact htotal_witness - 0160
rewrite haeq - 0161
rewrite hbeq - 0162
rewrite hceq - 0163
rewrite hdeq - 0164
rewrite heeq - 0165
rewrite hfeq - 0166
rewrite hcoeff - 0167
apply mul_add