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.
Exact expanded first-order arithmetic statement
forall a b z g A Z. ~(g = 0) -> ~(Z = 0) -> a = g * A -> z = g * Z -> a * b = z * z -> (forall frp_divisor_csf_reduced_original. (exists frp_left_factor_csf_reduced_original. a = frp_divisor_csf_reduced_original * frp_left_factor_csf_reduced_original) -> (exists frp_right_factor_csf_reduced_original. b = frp_divisor_csf_reduced_original * frp_right_factor_csf_reduced_original) -> frp_divisor_csf_reduced_original = 1) -> (forall frp_divisor_csf_reduced_quotients. (exists frp_left_factor_csf_reduced_quotients. A = frp_divisor_csf_reduced_quotients * frp_left_factor_csf_reduced_quotients) -> (exists frp_right_factor_csf_reduced_quotients. Z = frp_divisor_csf_reduced_quotients * frp_right_factor_csf_reduced_quotients) -> frp_divisor_csf_reduced_quotients = 1) -> a = A * A /\ b = Z * ZConstructive proof overview
Generated structural guide
For coprime original factors, reducing a factor and the product root by their gcd exposes the two exact square roots.
The unchanged tactic script uses 11 declared prerequisites and contains 98 exact native proof lines.
dependency-curried kernel-checked theorem body; Alpha enrollment and checked-use authority follow separately sealed release evidence; Stable membership remains unchanged
Proof neighborhood
Direct dependencies
mul_left_cancel_nonzero Stable theorem; checked-use authorized mul_right_cancel_nonzero Stable theorem; checked-use authorized mul_assoc Stable theorem; checked-use authorized mul_comm Stable theorem; checked-use authorized four_square_product_square Alpha theorem; checked-use authorized four_square_descent_nonzero_square Alpha theorem; checked-use authorized coprime_symm Stable theorem; checked-use authorized coprime_mul_left Stable theorem; checked-use authorized gauss_coprime_cancel Stable theorem; checked-use authorized mul_one Stable theorem; checked-use authorized one_mul Stable theorem; checked-use authorizedDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.
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–13
03Establish hreducedL14–23
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul left cancel nonzero.
04Calculate and transport equalitiesL24–24
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L24
trans z * z
05Use earlier factsL25–25
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L25
exact heq
06Calculate and transport equalitiesL26–28
07Use earlier factsL29–30
08Establish hZAL31–35
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply coprime symm.
- L31
have hZA : forall frp_divisor_csf_reduced_swapped. (exists frp_left_factor_csf_reduced_swapped. Z = frp_divisor_csf_reduced_swapped * frp_left_factor_csf_reduced_swapped) -> (exists frp_right_factor_csf_reduced_swapped. A = frp_divisor_csf_reduced_swapped * frp_right_factor_csf_reduced_swapped) -> frp_divisor_csf_reduced_swapped = 1 - L32
specialize coprime_symm A - L33
specialize coprime_symm Z - L34
apply coprime_symm - L35
exact hAZ
09Establish hZsquareAL36–42
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply coprime mul left.
10Establish hbquotL43–48
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gauss coprime cancel.
11Construct an explicit witnessL49–49
Supply the displayed value, then prove that it has the required property.
- L49
exists g
12Calculate and transport equalitiesL50–50
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L50
trans g * (Z * Z)
13Use earlier factsL51–52
14Separate the logical casesL53–53
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L53
cases hbquot
15Establish hscaleL54–63
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul right cancel nonzero.
- L54
have hscale : A * x = g - L55
specialize mul_right_cancel_nonzero (A * x) - L56
specialize mul_right_cancel_nonzero g - L57
specialize mul_right_cancel_nonzero (Z * Z) - L58
apply mul_right_cancel_nonzero - L59
intro hzero - L60
specialize four_square_descent_nonzero_square Z - L61
apply four_square_descent_nonzero_square - L62
exact hZ - L63
exact hzero
16Calculate and transport equalitiesL64–66
17Use earlier factsL67–67
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L67
apply mul_assoc
18Calculate and transport equalitiesL68–69
19Use earlier factsL70–71
20Establish haquotL72–80
21Establish hxoneL81–83
22Construct an explicit witnessL84–84
Supply the displayed value, then prove that it has the required property.
- L84
exists (A * A)
23Use earlier factsL85–85
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L85
exact haquot
24Construct an explicit witnessL86–86
Supply the displayed value, then prove that it has the required property.
- L86
exists (Z * Z)
25Calculate and transport equalitiesL87–87
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L87
trans (Z * Z) * x
26Use earlier factsL88–89
27Separate the logical casesL90–90
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L90
split
28Calculate and transport equalitiesL91–92
29Use earlier factsL93–94
30Calculate and transport equalitiesL95–96
Original exact command ledger · 98 lines
- 0001
intro a - 0002
intro b - 0003
intro z - 0004
intro g - 0005
intro A - 0006
intro Z - 0007
intro hg - 0008
intro hZ - 0009
intro ha - 0010
intro hz - 0011
intro heq - 0012
intro hab - 0013
intro hAZ - 0014
have hreduced : A * b = g * (Z * Z) - 0015
specialize mul_left_cancel_nonzero g - 0016
specialize mul_left_cancel_nonzero (A * b) - 0017
specialize mul_left_cancel_nonzero (g * (Z * Z)) - 0018
apply mul_left_cancel_nonzero - 0019
exact hg - 0020
trans a * b - 0021
rewrite ha - 0022
symm - 0023
apply mul_assoc - 0024
trans z * z - 0025
exact heq - 0026
rewrite hz - 0027
rewrite hz - 0028
trans (g * g) * (Z * Z) - 0029
apply four_square_product_square - 0030
apply mul_assoc - 0031
have hZA : forall frp_divisor_csf_reduced_swapped. (exists frp_left_factor_csf_reduced_swapped. Z = frp_divisor_csf_reduced_swapped * frp_left_factor_csf_reduced_swapped) -> (exists frp_right_factor_csf_reduced_swapped. A = frp_divisor_csf_reduced_swapped * frp_right_factor_csf_reduced_swapped) -> frp_divisor_csf_reduced_swapped = 1 - 0032
specialize coprime_symm A - 0033
specialize coprime_symm Z - 0034
apply coprime_symm - 0035
exact hAZ - 0036
have hZsquareA : forall d. (exists x. Z * Z = d * x) -> (exists y. A = d * y) -> d = 1 - 0037
specialize coprime_mul_left Z - 0038
specialize coprime_mul_left Z - 0039
specialize coprime_mul_left A - 0040
apply coprime_mul_left - 0041
exact hZA - 0042
exact hZA - 0043
have hbquot : exists k. b = (Z * Z) * k - 0044
specialize gauss_coprime_cancel (Z * Z) - 0045
specialize gauss_coprime_cancel A - 0046
specialize gauss_coprime_cancel b - 0047
apply gauss_coprime_cancel - 0048
exact hZsquareA - 0049
exists g - 0050
trans g * (Z * Z) - 0051
exact hreduced - 0052
apply mul_comm - 0053
cases hbquot - 0054
have hscale : A * x = g - 0055
specialize mul_right_cancel_nonzero (A * x) - 0056
specialize mul_right_cancel_nonzero g - 0057
specialize mul_right_cancel_nonzero (Z * Z) - 0058
apply mul_right_cancel_nonzero - 0059
intro hzero - 0060
specialize four_square_descent_nonzero_square Z - 0061
apply four_square_descent_nonzero_square - 0062
exact hZ - 0063
exact hzero - 0064
trans A * b - 0065
rewrite hbquot_witness - 0066
trans A * (x * (Z * Z)) - 0067
apply mul_assoc - 0068
congr - 0069
refl - 0070
apply mul_comm - 0071
exact hreduced - 0072
have haquot : a = x * (A * A) - 0073
trans g * A - 0074
exact ha - 0075
rewrite <- hscale - 0076
trans (x * A) * A - 0077
congr - 0078
apply mul_comm - 0079
refl - 0080
apply mul_assoc - 0081
have hxone : x = 1 - 0082
specialize hab x - 0083
apply hab - 0084
exists (A * A) - 0085
exact haquot - 0086
exists (Z * Z) - 0087
trans (Z * Z) * x - 0088
exact hbquot_witness - 0089
apply mul_comm - 0090
split - 0091
rewrite hxone at haquot - 0092
trans 1 * (A * A) - 0093
exact haquot - 0094
apply one_mul - 0095
rewrite hxone at hbquot_witness - 0096
trans (Z * Z) * 1 - 0097
exact hbquot_witness - 0098
apply mul_one