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. ∀ db. ∀ dc. ∀ eb. ∀ ec. ∀ fb. ∀ fc. ∀ pb. ∀ pc. ∀ nb. ∀ nc. ∀ qb. ∀ qc. ∀ mb. ∀ mc. ∀ l. IntegerVectorAdd(ab,ac,db,dc,eb,ec,fb,fc,pb,pc,nb,nc,l) → IntegerVectorAdd(ab,ac,db,dc,eb,ec,fb,fc,qb,qc,mb,mc,l) → IntegerVectorEqual(pb,pc,nb,nc,qb,qc,mb,mc,l)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 93 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–20
03Fix variables and assumptionsL21–29
04Establish hinput0L30–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L30
have hinput0 : ∃ value. BetaAt(ab,ac,i,value)Definitions: BetaAt(ab,ac,i,value)Original native command in the exact edition - L31
specialize beta_at_exists (ab) - L32
specialize beta_at_exists (ac) - L33
specialize beta_at_exists (i) - L34
apply beta_at_exists
05Separate the logical casesL35–35
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L35
cases hinput0
06Establish hinput1L36–40
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L36
have hinput1 : ∃ value. BetaAt(db,dc,i,value)Definitions: BetaAt(db,dc,i,value)Original native command in the exact edition - L37
specialize beta_at_exists (db) - L38
specialize beta_at_exists (dc) - L39
specialize beta_at_exists (i) - L40
apply beta_at_exists
07Separate the logical casesL41–41
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L41
cases hinput1
08Establish hinput2L42–46
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L42
have hinput2 : ∃ value. BetaAt(eb,ec,i,value)Definitions: BetaAt(eb,ec,i,value)Original native command in the exact edition - L43
specialize beta_at_exists (eb) - L44
specialize beta_at_exists (ec) - L45
specialize beta_at_exists (i) - L46
apply beta_at_exists
09Separate the logical casesL47–47
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L47
cases hinput2
10Establish hinput3L48–52
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L48
have hinput3 : ∃ value. BetaAt(fb,fc,i,value)Definitions: BetaAt(fb,fc,i,value)Original native command in the exact edition - L49
specialize beta_at_exists (fb) - L50
specialize beta_at_exists (fc) - L51
specialize beta_at_exists (i) - L52
apply beta_at_exists
11Separate the logical casesL53–53
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L53
cases hinput3
12Use earlier factsL54–63
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L54
specialize integer_span_pair_equal_transitive (a) - L55
specialize integer_span_pair_equal_transitive (b) - L56
specialize integer_span_pair_equal_transitive (x + x2) - L57
specialize integer_span_pair_equal_transitive (x1 + x3) - L58
specialize integer_span_pair_equal_transitive (c) - L59
specialize integer_span_pair_equal_transitive (d) - L60
apply integer_span_pair_equal_transitive - L61
specialize hfirst (i) - L62
specialize hfirst (x) - L63
specialize hfirst (x1)
13Use earlier factsL64–73
Instantiate or apply named facts and discharge the corresponding proof obligations.
14Use earlier factsL74–83
Instantiate or apply named facts and discharge the corresponding proof obligations.
15Use earlier factsL84–93
Original defined command ledger · 93 lines
- 0001
intro ab - 0002
intro ac - 0003
intro db - 0004
intro dc - 0005
intro eb - 0006
intro ec - 0007
intro fb - 0008
intro fc - 0009
intro pb - 0010
intro pc - 0011
intro nb - 0012
intro nc - 0013
intro qb - 0014
intro qc - 0015
intro mb - 0016
intro mc - 0017
intro l - 0018
intro hfirst - 0019
intro hsecond - 0020
intro i - 0021
intro a - 0022
intro b - 0023
intro c - 0024
intro d - 0025
intro hi - 0026
intro ha - 0027
intro hb - 0028
intro hc - 0029
intro hd - 0030
have hinput0 : ∃ value. BetaAt(ab,ac,i,value) - 0031
specialize beta_at_exists (ab) - 0032
specialize beta_at_exists (ac) - 0033
specialize beta_at_exists (i) - 0034
apply beta_at_exists - 0035
cases hinput0 - 0036
have hinput1 : ∃ value. BetaAt(db,dc,i,value) - 0037
specialize beta_at_exists (db) - 0038
specialize beta_at_exists (dc) - 0039
specialize beta_at_exists (i) - 0040
apply beta_at_exists - 0041
cases hinput1 - 0042
have hinput2 : ∃ value. BetaAt(eb,ec,i,value) - 0043
specialize beta_at_exists (eb) - 0044
specialize beta_at_exists (ec) - 0045
specialize beta_at_exists (i) - 0046
apply beta_at_exists - 0047
cases hinput2 - 0048
have hinput3 : ∃ value. BetaAt(fb,fc,i,value) - 0049
specialize beta_at_exists (fb) - 0050
specialize beta_at_exists (fc) - 0051
specialize beta_at_exists (i) - 0052
apply beta_at_exists - 0053
cases hinput3 - 0054
specialize integer_span_pair_equal_transitive (a) - 0055
specialize integer_span_pair_equal_transitive (b) - 0056
specialize integer_span_pair_equal_transitive (x + x2) - 0057
specialize integer_span_pair_equal_transitive (x1 + x3) - 0058
specialize integer_span_pair_equal_transitive (c) - 0059
specialize integer_span_pair_equal_transitive (d) - 0060
apply integer_span_pair_equal_transitive - 0061
specialize hfirst (i) - 0062
specialize hfirst (x) - 0063
specialize hfirst (x1) - 0064
specialize hfirst (x2) - 0065
specialize hfirst (x3) - 0066
specialize hfirst (a) - 0067
specialize hfirst (b) - 0068
apply hfirst - 0069
exact hi - 0070
exact hinput0_witness - 0071
exact hinput1_witness - 0072
exact hinput2_witness - 0073
exact hinput3_witness - 0074
exact ha - 0075
exact hb - 0076
specialize eq_symm (c + (x1 + x3)) - 0077
specialize eq_symm ((x + x2) + d) - 0078
apply eq_symm - 0079
specialize hsecond (i) - 0080
specialize hsecond (x) - 0081
specialize hsecond (x1) - 0082
specialize hsecond (x2) - 0083
specialize hsecond (x3) - 0084
specialize hsecond (c) - 0085
specialize hsecond (d) - 0086
apply hsecond - 0087
exact hi - 0088
exact hinput0_witness - 0089
exact hinput1_witness - 0090
exact hinput2_witness - 0091
exact hinput3_witness - 0092
exact hc - 0093
exact hd