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.
The natural-code carrier consists of genuine pairs of the existing signed integers; no new primitive arithmetic is trusted. The theorem constructs quotient, remainder, and actual norm witnesses. Gaussian gcd, unique factorization, and prime classification are separate targets.
Exact theorem in conservative defined notation
∀ a. ∀ b. ∀ c. ∀ d. ∀ e. ∀ f. ∀ g. ∀ h. (a · c + b · d) · (e · g + f · h) + (a · d + b · c) · (e · h + f · g) = (a · e + b · f) · (c · g + d · h) + (a · f + b · e) · (c · h + d · g) ∧ (a · c + b · d) · (e · h + f · g) + (a · d + b · c) · (e · g + f · h) = (a · e + b · f) · (c · h + d · g) + (a · f + b · e) · (c · g + d · h)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 67 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 (2)
01Fix variables and assumptionsL1–8
02Establish hleftL9–16
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply signed pair mul components associate.
- L9
have hleft · expand full local formula (761 characters)
have hleft : (((((((((((a) * (c))) + (((b) * (d))))) * (((((e) * (g))) + (((f) * (h))))))) + (((((((a) * (d))) + (((b) * (c))))) * (((((e) * (h))) + (((f) * (g))))))))) = (((((a) * (((((c) * (((((e) * (g))) + (((f) * (h))))))) + (((d) * (((((e) * (h))) + (((f) * (g))))))))))) + (((b) * (((((c) * (((((e) * (h))) + (((f) * (g))))))) + (((d) * (((((e) * (g))) + (((f) * (h)))))))))))))) /\ ((((((((((a) * (c))) + (((b) * (d))))) * (((((e) * (h))) + (((f) * (g))))))) + (((((((a) * (d))) + (((b) * (c))))) * (((((e) * (g))) + (((f) * (h))))))))) = (((((a) * (((((c) * (((((e) * (h))) + (((f) * (g))))))) + (((d) * (((((e) * (g))) + (((f) * (h))))))))))) + (((b) * (((((c) * (((((e) * (g))) + (((f) * (h))))))) + (((d) * (((((e) * (h))) + (((f) * (g))))))))))))))) - L10
specialize signed_pair_mul_components_associate a - L11
specialize signed_pair_mul_components_associate b - L12
specialize signed_pair_mul_components_associate c - L13
specialize signed_pair_mul_components_associate d - L14
specialize signed_pair_mul_components_associate ((((e) * (g))) + (((f) * (h)))) - L15
specialize signed_pair_mul_components_associate ((((e) * (h))) + (((f) * (g)))) - L16
apply signed_pair_mul_components_associate
03Separate the logical casesL17–17
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L17
cases hleft
04Establish hrightL18–25
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply signed pair mul components associate.
- L18
have hright · expand full local formula (762 characters)
have hright : (((((((((((a) * (e))) + (((b) * (f))))) * (((((c) * (g))) + (((d) * (h))))))) + (((((((a) * (f))) + (((b) * (e))))) * (((((c) * (h))) + (((d) * (g))))))))) = (((((a) * (((((e) * (((((c) * (g))) + (((d) * (h))))))) + (((f) * (((((c) * (h))) + (((d) * (g))))))))))) + (((b) * (((((e) * (((((c) * (h))) + (((d) * (g))))))) + (((f) * (((((c) * (g))) + (((d) * (h)))))))))))))) /\ ((((((((((a) * (e))) + (((b) * (f))))) * (((((c) * (h))) + (((d) * (g))))))) + (((((((a) * (f))) + (((b) * (e))))) * (((((c) * (g))) + (((d) * (h))))))))) = (((((a) * (((((e) * (((((c) * (h))) + (((d) * (g))))))) + (((f) * (((((c) * (g))) + (((d) * (h))))))))))) + (((b) * (((((e) * (((((c) * (g))) + (((d) * (h))))))) + (((f) * (((((c) * (h))) + (((d) * (g))))))))))))))) - L19
specialize signed_pair_mul_components_associate a - L20
specialize signed_pair_mul_components_associate b - L21
specialize signed_pair_mul_components_associate e - L22
specialize signed_pair_mul_components_associate f - L23
specialize signed_pair_mul_components_associate ((((c) * (g))) + (((d) * (h)))) - L24
specialize signed_pair_mul_components_associate ((((c) * (h))) + (((d) * (g)))) - L25
apply signed_pair_mul_components_associate
05Separate the logical casesL26–26
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L26
cases hright
06Establish hmiddle_positiveL27–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian signed product interchange positive.
- L27
have hmiddle_positive : ((((c) * (((((e) * (g))) + (((f) * (h))))))) + (((d) * (((((e) * (h))) + (((f) * (g)))))))) = ((((e) * (((((c) * (g))) + (((d) * (h))))))) + (((f) * (((((c) * (h))) + (((d) * (g)))))))) - L28
specialize gaussian_signed_product_interchange_positive c - L29
specialize gaussian_signed_product_interchange_positive d - L30
specialize gaussian_signed_product_interchange_positive e - L31
specialize gaussian_signed_product_interchange_positive f - L32
specialize gaussian_signed_product_interchange_positive g - L33
specialize gaussian_signed_product_interchange_positive h - L34
apply gaussian_signed_product_interchange_positive
07Establish hmiddle_negativeL35–42
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian signed product interchange negative.
- L35
have hmiddle_negative : ((((c) * (((((e) * (h))) + (((f) * (g))))))) + (((d) * (((((e) * (g))) + (((f) * (h)))))))) = ((((e) * (((((c) * (h))) + (((d) * (g))))))) + (((f) * (((((c) * (g))) + (((d) * (h)))))))) - L36
specialize gaussian_signed_product_interchange_negative c - L37
specialize gaussian_signed_product_interchange_negative d - L38
specialize gaussian_signed_product_interchange_negative e - L39
specialize gaussian_signed_product_interchange_negative f - L40
specialize gaussian_signed_product_interchange_negative g - L41
specialize gaussian_signed_product_interchange_negative h - L42
apply gaussian_signed_product_interchange_negative
08Separate the logical casesL43–43
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L43
split
09Calculate and transport equalitiesL44–44
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L44
trans ((((a) * (((((c) * (((((e) * (g))) + (((f) * (h))))))) + (((d) * (((((e) * (h))) + (((f) * (g))))))))))) + (((b) * (((((c) * (((((e) * (h))) + (((f) * (g))))))) + (((d) * (((((e) * (g))) + (((f) * (h))))))))))))
10Use earlier factsL45–45
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L45
exact hleft_left
11Calculate and transport equalitiesL46–49
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
12Use earlier factsL50–50
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L50
exact hmiddle_positive
13Calculate and transport equalitiesL51–52
14Use earlier factsL53–53
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L53
exact hmiddle_negative
15Calculate and transport equalitiesL54–54
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L54
symm
16Use earlier factsL55–55
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L55
exact hright_left
17Calculate and transport equalitiesL56–56
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L56
trans ((((a) * (((((c) * (((((e) * (h))) + (((f) * (g))))))) + (((d) * (((((e) * (g))) + (((f) * (h))))))))))) + (((b) * (((((c) * (((((e) * (g))) + (((f) * (h))))))) + (((d) * (((((e) * (h))) + (((f) * (g))))))))))))
18Use earlier factsL57–57
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L57
exact hleft_right
19Calculate and transport equalitiesL58–61
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
20Use earlier factsL62–62
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L62
exact hmiddle_negative
21Calculate and transport equalitiesL63–64
22Use earlier factsL65–65
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L65
exact hmiddle_positive
23Calculate and transport equalitiesL66–66
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L66
symm
24Use earlier factsL67–67
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L67
exact hright_right
Original defined command ledger · 67 lines
- 0001
intro a - 0002
intro b - 0003
intro c - 0004
intro d - 0005
intro e - 0006
intro f - 0007
intro g - 0008
intro h - 0009
have hleft : (((((((((((a) * (c))) + (((b) * (d))))) * (((((e) * (g))) + (((f) * (h))))))) + (((((((a) * (d))) + (((b) * (c))))) * (((((e) * (h))) + (((f) * (g))))))))) = (((((a) * (((((c) * (((((e) * (g))) + (((f) * (h))))))) + (((d) * (((((e) * (h))) + (((f) * (g))))))))))) + (((b) * (((((c) * (((((e) * (h))) + (((f) * (g))))))) + (((d) * (((((e) * (g))) + (((f) * (h)))))))))))))) /\ ((((((((((a) * (c))) + (((b) * (d))))) * (((((e) * (h))) + (((f) * (g))))))) + (((((((a) * (d))) + (((b) * (c))))) * (((((e) * (g))) + (((f) * (h))))))))) = (((((a) * (((((c) * (((((e) * (h))) + (((f) * (g))))))) + (((d) * (((((e) * (g))) + (((f) * (h))))))))))) + (((b) * (((((c) * (((((e) * (g))) + (((f) * (h))))))) + (((d) * (((((e) * (h))) + (((f) * (g))))))))))))))) - 0010
specialize signed_pair_mul_components_associate a - 0011
specialize signed_pair_mul_components_associate b - 0012
specialize signed_pair_mul_components_associate c - 0013
specialize signed_pair_mul_components_associate d - 0014
specialize signed_pair_mul_components_associate ((((e) * (g))) + (((f) * (h)))) - 0015
specialize signed_pair_mul_components_associate ((((e) * (h))) + (((f) * (g)))) - 0016
apply signed_pair_mul_components_associate - 0017
cases hleft - 0018
have hright : (((((((((((a) * (e))) + (((b) * (f))))) * (((((c) * (g))) + (((d) * (h))))))) + (((((((a) * (f))) + (((b) * (e))))) * (((((c) * (h))) + (((d) * (g))))))))) = (((((a) * (((((e) * (((((c) * (g))) + (((d) * (h))))))) + (((f) * (((((c) * (h))) + (((d) * (g))))))))))) + (((b) * (((((e) * (((((c) * (h))) + (((d) * (g))))))) + (((f) * (((((c) * (g))) + (((d) * (h)))))))))))))) /\ ((((((((((a) * (e))) + (((b) * (f))))) * (((((c) * (h))) + (((d) * (g))))))) + (((((((a) * (f))) + (((b) * (e))))) * (((((c) * (g))) + (((d) * (h))))))))) = (((((a) * (((((e) * (((((c) * (h))) + (((d) * (g))))))) + (((f) * (((((c) * (g))) + (((d) * (h))))))))))) + (((b) * (((((e) * (((((c) * (g))) + (((d) * (h))))))) + (((f) * (((((c) * (h))) + (((d) * (g))))))))))))))) - 0019
specialize signed_pair_mul_components_associate a - 0020
specialize signed_pair_mul_components_associate b - 0021
specialize signed_pair_mul_components_associate e - 0022
specialize signed_pair_mul_components_associate f - 0023
specialize signed_pair_mul_components_associate ((((c) * (g))) + (((d) * (h)))) - 0024
specialize signed_pair_mul_components_associate ((((c) * (h))) + (((d) * (g)))) - 0025
apply signed_pair_mul_components_associate - 0026
cases hright - 0027
have hmiddle_positive : ((((c) * (((((e) * (g))) + (((f) * (h))))))) + (((d) * (((((e) * (h))) + (((f) * (g)))))))) = ((((e) * (((((c) * (g))) + (((d) * (h))))))) + (((f) * (((((c) * (h))) + (((d) * (g)))))))) - 0028
specialize gaussian_signed_product_interchange_positive c - 0029
specialize gaussian_signed_product_interchange_positive d - 0030
specialize gaussian_signed_product_interchange_positive e - 0031
specialize gaussian_signed_product_interchange_positive f - 0032
specialize gaussian_signed_product_interchange_positive g - 0033
specialize gaussian_signed_product_interchange_positive h - 0034
apply gaussian_signed_product_interchange_positive - 0035
have hmiddle_negative : ((((c) * (((((e) * (h))) + (((f) * (g))))))) + (((d) * (((((e) * (g))) + (((f) * (h)))))))) = ((((e) * (((((c) * (h))) + (((d) * (g))))))) + (((f) * (((((c) * (g))) + (((d) * (h)))))))) - 0036
specialize gaussian_signed_product_interchange_negative c - 0037
specialize gaussian_signed_product_interchange_negative d - 0038
specialize gaussian_signed_product_interchange_negative e - 0039
specialize gaussian_signed_product_interchange_negative f - 0040
specialize gaussian_signed_product_interchange_negative g - 0041
specialize gaussian_signed_product_interchange_negative h - 0042
apply gaussian_signed_product_interchange_negative - 0043
split - 0044
trans ((((a) * (((((c) * (((((e) * (g))) + (((f) * (h))))))) + (((d) * (((((e) * (h))) + (((f) * (g))))))))))) + (((b) * (((((c) * (((((e) * (h))) + (((f) * (g))))))) + (((d) * (((((e) * (g))) + (((f) * (h)))))))))))) - 0045
exact hleft_left - 0046
trans ((((a) * (((((e) * (((((c) * (g))) + (((d) * (h))))))) + (((f) * (((((c) * (h))) + (((d) * (g))))))))))) + (((b) * (((((e) * (((((c) * (h))) + (((d) * (g))))))) + (((f) * (((((c) * (g))) + (((d) * (h)))))))))))) - 0047
congr - 0048
congr - 0049
refl - 0050
exact hmiddle_positive - 0051
congr - 0052
refl - 0053
exact hmiddle_negative - 0054
symm - 0055
exact hright_left - 0056
trans ((((a) * (((((c) * (((((e) * (h))) + (((f) * (g))))))) + (((d) * (((((e) * (g))) + (((f) * (h))))))))))) + (((b) * (((((c) * (((((e) * (g))) + (((f) * (h))))))) + (((d) * (((((e) * (h))) + (((f) * (g)))))))))))) - 0057
exact hleft_right - 0058
trans ((((a) * (((((e) * (((((c) * (h))) + (((d) * (g))))))) + (((f) * (((((c) * (g))) + (((d) * (h))))))))))) + (((b) * (((((e) * (((((c) * (g))) + (((d) * (h))))))) + (((f) * (((((c) * (h))) + (((d) * (g)))))))))))) - 0059
congr - 0060
congr - 0061
refl - 0062
exact hmiddle_negative - 0063
congr - 0064
refl - 0065
exact hmiddle_positive - 0066
symm - 0067
exact hright_right