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
∀ z. ∀ d. ∀ pb. ∀ pc. ∀ nb. ∀ nc. ∀ p. ∀ n. ∀ e. ∀ ab. ∀ ac. ∀ bb. ∀ bc. ∀ r. ∀ s. SignedDeterminantNodeCode(z,d,pb,pc,nb,nc,p,n) → SignedDeterminantNodeCode(z,e,ab,ac,bb,bc,r,s) → d = e ∧ (pb = ab ∧ (pc = ac ∧ (nb = bb ∧ (nc = bc ∧ (p = r ∧ n = s)))))
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 120 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.
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_witness - L24
cases hfirst_witness_witness_witness_witness_witness_right - L25
cases hfirst_witness_witness_witness_witness_witness_right_right - L26
cases hfirst_witness_witness_witness_witness_witness_right_right_right - L27
cases hfirst_witness_witness_witness_witness_witness_right_right_right_right
04Separate the logical casesL28–37
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L28
cases hsecond - L29
cases hsecond_witness - L30
cases hsecond_witness_witness - L31
cases hsecond_witness_witness_witness - L32
cases hsecond_witness_witness_witness_witness - L33
cases hsecond_witness_witness_witness_witness_witness - L34
cases hsecond_witness_witness_witness_witness_witness_right - L35
cases hsecond_witness_witness_witness_witness_witness_right_right - L36
cases hsecond_witness_witness_witness_witness_witness_right_right_right - L37
cases hsecond_witness_witness_witness_witness_witness_right_right_right_right
05Establish hrootL38–46
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pair code injective.
- L38
have hroot : x2 = x7 /\ x4 = x9 - L39
specialize pair_code_injective (z) - L40
specialize pair_code_injective (x2) - L41
specialize pair_code_injective (x4) - L42
specialize pair_code_injective (x7) - L43
specialize pair_code_injective (x9) - L44
apply pair_code_injective - L45
exact hfirst_witness_witness_witness_witness_witness_right_right_right_right_right - L46
exact hsecond_witness_witness_witness_witness_witness_right_right_right_right_right
06Separate the logical casesL47–47
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L47
cases hroot
07Establish hleftL48–57
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pair code injective.
- L48
have hleft : x = x5 /\ x1 = x6 - L49
specialize pair_code_injective (x2) - L50
specialize pair_code_injective (x) - L51
specialize pair_code_injective (x1) - L52
specialize pair_code_injective (x5) - L53
specialize pair_code_injective (x6) - L54
apply pair_code_injective - L55
exact hfirst_witness_witness_witness_witness_witness_right_right_left - L56
trans x7 - L57
exact hroot_left
08Use earlier factsL58–58
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L58
exact hsecond_witness_witness_witness_witness_witness_right_right_left
09Separate the logical casesL59–59
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L59
cases hleft
10Establish hfirsttwoL60–69
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pair code injective.
- L60
have hfirsttwo : d = e /\ pb = ab - L61
specialize pair_code_injective (x) - L62
specialize pair_code_injective (d) - L63
specialize pair_code_injective (pb) - L64
specialize pair_code_injective (e) - L65
specialize pair_code_injective (ab) - L66
apply pair_code_injective - L67
exact hfirst_witness_witness_witness_witness_witness_left - L68
trans x5 - L69
exact hleft_left
11Use earlier factsL70–70
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L70
exact hsecond_witness_witness_witness_witness_witness_left
12Separate the logical casesL71–71
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L71
cases hfirsttwo
13Establish hnexttwoL72–81
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pair code injective.
- L72
have hnexttwo : pc = ac /\ nb = bb - L73
specialize pair_code_injective (x1) - L74
specialize pair_code_injective (pc) - L75
specialize pair_code_injective (nb) - L76
specialize pair_code_injective (ac) - L77
specialize pair_code_injective (bb) - L78
apply pair_code_injective - L79
exact hfirst_witness_witness_witness_witness_witness_right_left - L80
trans x6 - L81
exact hleft_right
14Use earlier factsL82–82
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L82
exact hsecond_witness_witness_witness_witness_witness_right_left
15Separate the logical casesL83–83
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L83
cases hnexttwo
16Establish hrightL84–93
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pair code injective.
- L84
have hright : nc = bc /\ x3 = x8 - L85
specialize pair_code_injective (x4) - L86
specialize pair_code_injective (nc) - L87
specialize pair_code_injective (x3) - L88
specialize pair_code_injective (bc) - L89
specialize pair_code_injective (x8) - L90
apply pair_code_injective - L91
exact hfirst_witness_witness_witness_witness_witness_right_right_right_right_left - L92
trans x9 - L93
exact hroot_right
17Use earlier factsL94–94
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L94
exact hsecond_witness_witness_witness_witness_witness_right_right_right_right_left
18Separate the logical casesL95–95
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L95
cases hright
19Establish hvaluesL96–105
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply pair code injective.
- L96
have hvalues : p = r /\ n = s - L97
specialize pair_code_injective (x3) - L98
specialize pair_code_injective (p) - L99
specialize pair_code_injective (n) - L100
specialize pair_code_injective (r) - L101
specialize pair_code_injective (s) - L102
apply pair_code_injective - L103
exact hfirst_witness_witness_witness_witness_witness_right_right_right_left - L104
trans x8 - L105
exact hright_right
20Use earlier factsL106–106
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L106
exact hsecond_witness_witness_witness_witness_witness_right_right_right_left
21Separate the logical casesL107–108
22Use earlier factsL109–109
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L109
exact hfirsttwo_left
23Separate the logical casesL110–110
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L110
split
24Use earlier factsL111–111
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L111
exact hfirsttwo_right
25Separate the logical casesL112–112
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L112
split
26Use earlier factsL113–113
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L113
exact hnexttwo_left
27Separate the logical casesL114–114
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L114
split
28Use earlier factsL115–115
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L115
exact hnexttwo_right
29Separate the logical casesL116–116
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L116
split
30Use earlier factsL117–117
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L117
exact hright_left
31Separate the logical casesL118–118
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L118
split
Original defined command ledger · 120 lines
- 0001
intro z - 0002
intro d - 0003
intro pb - 0004
intro pc - 0005
intro nb - 0006
intro nc - 0007
intro p - 0008
intro n - 0009
intro e - 0010
intro ab - 0011
intro ac - 0012
intro bb - 0013
intro bc - 0014
intro r - 0015
intro s - 0016
intro hfirst - 0017
intro hsecond - 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_witness - 0024
cases hfirst_witness_witness_witness_witness_witness_right - 0025
cases hfirst_witness_witness_witness_witness_witness_right_right - 0026
cases hfirst_witness_witness_witness_witness_witness_right_right_right - 0027
cases hfirst_witness_witness_witness_witness_witness_right_right_right_right - 0028
cases hsecond - 0029
cases hsecond_witness - 0030
cases hsecond_witness_witness - 0031
cases hsecond_witness_witness_witness - 0032
cases hsecond_witness_witness_witness_witness - 0033
cases hsecond_witness_witness_witness_witness_witness - 0034
cases hsecond_witness_witness_witness_witness_witness_right - 0035
cases hsecond_witness_witness_witness_witness_witness_right_right - 0036
cases hsecond_witness_witness_witness_witness_witness_right_right_right - 0037
cases hsecond_witness_witness_witness_witness_witness_right_right_right_right - 0038
have hroot : x2 = x7 /\ x4 = x9 - 0039
specialize pair_code_injective (z) - 0040
specialize pair_code_injective (x2) - 0041
specialize pair_code_injective (x4) - 0042
specialize pair_code_injective (x7) - 0043
specialize pair_code_injective (x9) - 0044
apply pair_code_injective - 0045
exact hfirst_witness_witness_witness_witness_witness_right_right_right_right_right - 0046
exact hsecond_witness_witness_witness_witness_witness_right_right_right_right_right - 0047
cases hroot - 0048
have hleft : x = x5 /\ x1 = x6 - 0049
specialize pair_code_injective (x2) - 0050
specialize pair_code_injective (x) - 0051
specialize pair_code_injective (x1) - 0052
specialize pair_code_injective (x5) - 0053
specialize pair_code_injective (x6) - 0054
apply pair_code_injective - 0055
exact hfirst_witness_witness_witness_witness_witness_right_right_left - 0056
trans x7 - 0057
exact hroot_left - 0058
exact hsecond_witness_witness_witness_witness_witness_right_right_left - 0059
cases hleft - 0060
have hfirsttwo : d = e /\ pb = ab - 0061
specialize pair_code_injective (x) - 0062
specialize pair_code_injective (d) - 0063
specialize pair_code_injective (pb) - 0064
specialize pair_code_injective (e) - 0065
specialize pair_code_injective (ab) - 0066
apply pair_code_injective - 0067
exact hfirst_witness_witness_witness_witness_witness_left - 0068
trans x5 - 0069
exact hleft_left - 0070
exact hsecond_witness_witness_witness_witness_witness_left - 0071
cases hfirsttwo - 0072
have hnexttwo : pc = ac /\ nb = bb - 0073
specialize pair_code_injective (x1) - 0074
specialize pair_code_injective (pc) - 0075
specialize pair_code_injective (nb) - 0076
specialize pair_code_injective (ac) - 0077
specialize pair_code_injective (bb) - 0078
apply pair_code_injective - 0079
exact hfirst_witness_witness_witness_witness_witness_right_left - 0080
trans x6 - 0081
exact hleft_right - 0082
exact hsecond_witness_witness_witness_witness_witness_right_left - 0083
cases hnexttwo - 0084
have hright : nc = bc /\ x3 = x8 - 0085
specialize pair_code_injective (x4) - 0086
specialize pair_code_injective (nc) - 0087
specialize pair_code_injective (x3) - 0088
specialize pair_code_injective (bc) - 0089
specialize pair_code_injective (x8) - 0090
apply pair_code_injective - 0091
exact hfirst_witness_witness_witness_witness_witness_right_right_right_right_left - 0092
trans x9 - 0093
exact hroot_right - 0094
exact hsecond_witness_witness_witness_witness_witness_right_right_right_right_left - 0095
cases hright - 0096
have hvalues : p = r /\ n = s - 0097
specialize pair_code_injective (x3) - 0098
specialize pair_code_injective (p) - 0099
specialize pair_code_injective (n) - 0100
specialize pair_code_injective (r) - 0101
specialize pair_code_injective (s) - 0102
apply pair_code_injective - 0103
exact hfirst_witness_witness_witness_witness_witness_right_right_right_left - 0104
trans x8 - 0105
exact hright_right - 0106
exact hsecond_witness_witness_witness_witness_witness_right_right_right_left - 0107
cases hvalues - 0108
split - 0109
exact hfirsttwo_left - 0110
split - 0111
exact hfirsttwo_right - 0112
split - 0113
exact hnexttwo_left - 0114
split - 0115
exact hnexttwo_right - 0116
split - 0117
exact hright_left - 0118
split - 0119
exact hvalues_left - 0120
exact hvalues_right