Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved.
Canonical signed +1 is code 2 and -1 is code 1. The two-case unit graph does not assume an inverse or cancellation law: its actual product characterization and affine existence and uniqueness are proved. These scalar lemmas support the separately checked finite inverse criterion; full G009 remains broader.
Exact theorem in conservative defined notation
∀ a. ∀ b. SignedMul(a,b,2) → a = 2 ∧ b = 2 ∨ a = 1 ∧ b = 1
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 151 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–3
02Establish haL4–6
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply signed decode total.
- L4
have ha : ∃ p. ∃ n. SignedDecode(a,p,n)Definitions: SignedDecode(a,p,n)Original native command in the exact edition - L5
specialize signed_decode_total (a) - L6
apply signed_decode_total
03Separate the logical casesL7–8
04Establish hbL9–11
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply signed decode total.
- L9
have hb : ∃ p. ∃ n. SignedDecode(b,p,n)Definitions: SignedDecode(b,p,n)Original native command in the exact edition - L10
specialize signed_decode_total (b) - L11
apply signed_decode_total
05Separate the logical casesL12–13
06Establish hplusL14–14
Establish this local claim before using it. It is not an additional assumption.
- L14
have hplus : SignedDecode(2,1,0)Definitions: SignedDecode(2,1,0)Original native command in the exact edition
07Separate the logical casesL15–16
08Calculate and transport equalitiesL17–17
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L17
symm
09Use earlier factsL18–18
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L18
apply mul_one
10Calculate and transport equalitiesL19–19
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L19
refl
11Establish hminusL20–20
Establish this local claim before using it. It is not an additional assumption.
- L20
have hminus : SignedDecode(1,0,1)Definitions: SignedDecode(1,0,1)Original native command in the exact edition
12Separate the logical casesL21–21
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L21
right
13Construct an explicit witnessL22–22
Supply the displayed value, then prove that it has the required property.
- L22
exists 0
14Separate the logical casesL23–24
15Calculate and transport equalitiesL25–26
16Use earlier factsL27–27
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L27
apply zero_add
17Calculate and transport equalitiesL28–29
18Establish heL30–39
Establish this local claim before using it. It is not an additional assumption.
- L30
have he : (x*x2 + x1*x3)+0 = (x*x3 + x1*x2)+1 - L31
specialize signed_mul_to_decoded_equation (a) - L32
specialize signed_mul_to_decoded_equation (b) - L33
specialize signed_mul_to_decoded_equation (2) - L34
specialize signed_mul_to_decoded_equation (x) - L35
specialize signed_mul_to_decoded_equation (x1) - L36
specialize signed_mul_to_decoded_equation (x2) - L37
specialize signed_mul_to_decoded_equation (x3) - L38
specialize signed_mul_to_decoded_equation (1) - L39
specialize signed_mul_to_decoded_equation (0)
19Use earlier factsL40–44
20Establish hnaL45–50
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply signed decode normal.
21Establish hnbL51–56
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply signed decode normal.
22Separate the logical casesL57–58
23Establish hmL59–65
24Establish hpartsL66–70
25Separate the logical casesL71–73
26Use earlier factsL74–82
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L74
specialize signed_decoded_balance_implies_code_eq (a) - L75
specialize signed_decoded_balance_implies_code_eq (x) - L76
specialize signed_decoded_balance_implies_code_eq (x1) - L77
specialize signed_decoded_balance_implies_code_eq (1) - L78
specialize signed_decoded_balance_implies_code_eq (0) - L79
specialize signed_decoded_balance_implies_code_eq (1) - L80
apply signed_decoded_balance_implies_code_eq - L81
exact ha_witness_witness - L82
exact hminus
27Calculate and transport equalitiesL83–83
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L83
simp [hna_left, hparts_left, zero_add]
28Use earlier factsL84–92
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L84
specialize signed_decoded_balance_implies_code_eq (b) - L85
specialize signed_decoded_balance_implies_code_eq (x2) - L86
specialize signed_decoded_balance_implies_code_eq (x3) - L87
specialize signed_decoded_balance_implies_code_eq (1) - L88
specialize signed_decoded_balance_implies_code_eq (0) - L89
specialize signed_decoded_balance_implies_code_eq (1) - L90
apply signed_decoded_balance_implies_code_eq - L91
exact hb_witness_witness - L92
exact hminus
29Calculate and transport equalitiesL93–93
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L93
simp [hnb_left, hparts_right, zero_add]
30Establish hmL94–100
31Separate the logical casesL101–101
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L101
exfalso
32Use earlier factsL102–102
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L102
apply PA1
33Calculate and transport equalitiesL103–103
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L103
symm
34Use earlier factsL104–104
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L104
exact hm
35Separate the logical casesL105–105
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L105
cases hnb
36Establish hmL106–112
37Separate the logical casesL113–113
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L113
exfalso
38Use earlier factsL114–114
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L114
apply PA1
39Calculate and transport equalitiesL115–115
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L115
symm
40Use earlier factsL116–116
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L116
exact hm
41Establish hmL117–123
42Establish hpartsL124–128
43Separate the logical casesL129–131
44Use earlier factsL132–140
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L132
specialize signed_decoded_balance_implies_code_eq (a) - L133
specialize signed_decoded_balance_implies_code_eq (x) - L134
specialize signed_decoded_balance_implies_code_eq (x1) - L135
specialize signed_decoded_balance_implies_code_eq (2) - L136
specialize signed_decoded_balance_implies_code_eq (1) - L137
specialize signed_decoded_balance_implies_code_eq (0) - L138
apply signed_decoded_balance_implies_code_eq - L139
exact ha_witness_witness - L140
exact hplus
45Calculate and transport equalitiesL141–141
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L141
simp [hparts_left, hna_right, zero_add]
46Use earlier factsL142–150
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L142
specialize signed_decoded_balance_implies_code_eq (b) - L143
specialize signed_decoded_balance_implies_code_eq (x2) - L144
specialize signed_decoded_balance_implies_code_eq (x3) - L145
specialize signed_decoded_balance_implies_code_eq (2) - L146
specialize signed_decoded_balance_implies_code_eq (1) - L147
specialize signed_decoded_balance_implies_code_eq (0) - L148
apply signed_decoded_balance_implies_code_eq - L149
exact hb_witness_witness - L150
exact hplus
47Calculate and transport equalitiesL151–151
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L151
simp [hparts_right, hnb_right, zero_add]
Original defined command ledger · 151 lines
- 0001
intro a - 0002
intro b - 0003
intro hmul - 0004
have ha : ∃ p. ∃ n. SignedDecode(a,p,n) - 0005
specialize signed_decode_total (a) - 0006
apply signed_decode_total - 0007
cases ha - 0008
cases ha_witness - 0009
have hb : ∃ p. ∃ n. SignedDecode(b,p,n) - 0010
specialize signed_decode_total (b) - 0011
apply signed_decode_total - 0012
cases hb - 0013
cases hb_witness - 0014
have hplus : SignedDecode(2,1,0) - 0015
left - 0016
split - 0017
symm - 0018
apply mul_one - 0019
refl - 0020
have hminus : SignedDecode(1,0,1) - 0021
right - 0022
exists 0 - 0023
split - 0024
split - 0025
rewrite PA5 - 0026
symm - 0027
apply zero_add - 0028
refl - 0029
refl - 0030
have he : (x*x2 + x1*x3)+0 = (x*x3 + x1*x2)+1 - 0031
specialize signed_mul_to_decoded_equation (a) - 0032
specialize signed_mul_to_decoded_equation (b) - 0033
specialize signed_mul_to_decoded_equation (2) - 0034
specialize signed_mul_to_decoded_equation (x) - 0035
specialize signed_mul_to_decoded_equation (x1) - 0036
specialize signed_mul_to_decoded_equation (x2) - 0037
specialize signed_mul_to_decoded_equation (x3) - 0038
specialize signed_mul_to_decoded_equation (1) - 0039
specialize signed_mul_to_decoded_equation (0) - 0040
apply signed_mul_to_decoded_equation - 0041
exact ha_witness_witness - 0042
exact hb_witness_witness - 0043
exact hplus - 0044
exact hmul - 0045
have hna : x=0 \/ x1=0 - 0046
specialize signed_decode_normal (a) - 0047
specialize signed_decode_normal (x) - 0048
specialize signed_decode_normal (x1) - 0049
apply signed_decode_normal - 0050
exact ha_witness_witness - 0051
have hnb : x2=0 \/ x3=0 - 0052
specialize signed_decode_normal (b) - 0053
specialize signed_decode_normal (x2) - 0054
specialize signed_decode_normal (x3) - 0055
apply signed_decode_normal - 0056
exact hb_witness_witness - 0057
cases hna - 0058
cases hnb - 0059
have hm : x1*x3=1 - 0060
trans (x*x2+x1*x3)+0 - 0061
symm - 0062
simp [hna_left, hnb_left, mul_zero_left, zero_add] - 0063
trans (x*x3+x1*x2)+1 - 0064
exact he - 0065
simp [hna_left, hnb_left, mul_zero_left, zero_add] - 0066
have hparts : x1=1 /\ x3=1 - 0067
specialize mul_eq_one_components (x1) - 0068
specialize mul_eq_one_components (x3) - 0069
apply mul_eq_one_components - 0070
exact hm - 0071
cases hparts - 0072
right - 0073
split - 0074
specialize signed_decoded_balance_implies_code_eq (a) - 0075
specialize signed_decoded_balance_implies_code_eq (x) - 0076
specialize signed_decoded_balance_implies_code_eq (x1) - 0077
specialize signed_decoded_balance_implies_code_eq (1) - 0078
specialize signed_decoded_balance_implies_code_eq (0) - 0079
specialize signed_decoded_balance_implies_code_eq (1) - 0080
apply signed_decoded_balance_implies_code_eq - 0081
exact ha_witness_witness - 0082
exact hminus - 0083
simp [hna_left, hparts_left, zero_add] - 0084
specialize signed_decoded_balance_implies_code_eq (b) - 0085
specialize signed_decoded_balance_implies_code_eq (x2) - 0086
specialize signed_decoded_balance_implies_code_eq (x3) - 0087
specialize signed_decoded_balance_implies_code_eq (1) - 0088
specialize signed_decoded_balance_implies_code_eq (0) - 0089
specialize signed_decoded_balance_implies_code_eq (1) - 0090
apply signed_decoded_balance_implies_code_eq - 0091
exact hb_witness_witness - 0092
exact hminus - 0093
simp [hnb_left, hparts_right, zero_add] - 0094
have hm : 0=S(x1*x2) - 0095
trans (x*x2+x1*x3)+0 - 0096
symm - 0097
simp [hna_left, hnb_right, mul_zero_left, zero_add] - 0098
trans (x*x3+x1*x2)+1 - 0099
exact he - 0100
simp [hna_left, hnb_right, mul_zero_left, zero_add] - 0101
exfalso - 0102
apply PA1 - 0103
symm - 0104
exact hm - 0105
cases hnb - 0106
have hm : 0=S(x*x3) - 0107
trans (x*x2+x1*x3)+0 - 0108
symm - 0109
simp [hna_right, hnb_left, mul_zero_left, zero_add] - 0110
trans (x*x3+x1*x2)+1 - 0111
exact he - 0112
simp [hna_right, hnb_left, mul_zero_left, zero_add] - 0113
exfalso - 0114
apply PA1 - 0115
symm - 0116
exact hm - 0117
have hm : x*x2=1 - 0118
trans (x*x2+x1*x3)+0 - 0119
symm - 0120
simp [hna_right, hnb_right, mul_zero_left, zero_add] - 0121
trans (x*x3+x1*x2)+1 - 0122
exact he - 0123
simp [hna_right, hnb_right, mul_zero_left, zero_add] - 0124
have hparts : x=1 /\ x2=1 - 0125
specialize mul_eq_one_components (x) - 0126
specialize mul_eq_one_components (x2) - 0127
apply mul_eq_one_components - 0128
exact hm - 0129
cases hparts - 0130
left - 0131
split - 0132
specialize signed_decoded_balance_implies_code_eq (a) - 0133
specialize signed_decoded_balance_implies_code_eq (x) - 0134
specialize signed_decoded_balance_implies_code_eq (x1) - 0135
specialize signed_decoded_balance_implies_code_eq (2) - 0136
specialize signed_decoded_balance_implies_code_eq (1) - 0137
specialize signed_decoded_balance_implies_code_eq (0) - 0138
apply signed_decoded_balance_implies_code_eq - 0139
exact ha_witness_witness - 0140
exact hplus - 0141
simp [hparts_left, hna_right, zero_add] - 0142
specialize signed_decoded_balance_implies_code_eq (b) - 0143
specialize signed_decoded_balance_implies_code_eq (x2) - 0144
specialize signed_decoded_balance_implies_code_eq (x3) - 0145
specialize signed_decoded_balance_implies_code_eq (2) - 0146
specialize signed_decoded_balance_implies_code_eq (1) - 0147
specialize signed_decoded_balance_implies_code_eq (0) - 0148
apply signed_decoded_balance_implies_code_eq - 0149
exact hb_witness_witness - 0150
exact hplus - 0151
simp [hparts_right, hnb_right, zero_add]