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.
Statement with defined notation
∀ a. ∀ b. ∀ z. Coprime(a,b) → a · b = z · z → ∃ x. ∃ y. a = x · x ∧ b = y · yEvery purple notation token opens its conservative definition. This reading surface never changes the unchanged intuitionistic kernel or confers checked-use authority.
Definitions used by this theorem
In the theorem statement
In local proof propositions
Exact expanded first-order statement
forall a b z. (forall frp_divisor_csf_product. (exists frp_left_factor_csf_product. a = frp_divisor_csf_product * frp_left_factor_csf_product) -> (exists frp_right_factor_csf_product. b = frp_divisor_csf_product * frp_right_factor_csf_product) -> frp_divisor_csf_product = 1) -> a * b = z * z -> exists u v. a = u * u /\ b = v * vProof neighborhood
Direct theorem prerequisites
PF001D coprime_square_reduced_factorsDirect theorem dependents
Definition-aware tactic body
Only propositions whose conservative expansion has been checked for exact first-order equivalence are compacted. Every changed line retains its immutable exact replay command.
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–5
02Use earlier factsL6–7
03Separate the logical casesL8–8
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L8
cases eq_decidable
04Establish habzeroL9–14
05Establish hzeroL15–19
06Separate the logical casesL20–20
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L20
cases hzero
07Establish hboneL21–23
08Construct an explicit witnessL24–24
Supply the displayed value, then prove that it has the required property.
- L24
exists 0
09Calculate and transport equalitiesL25–26
10Construct an explicit witnessL27–27
Supply the displayed value, then prove that it has the required property.
- L27
exists 1
11Calculate and transport equalitiesL28–28
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L28
symm
12Use earlier factsL29–29
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L29
apply mul_one
13Construct an explicit witnessL30–31
14Separate the logical casesL32–32
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L32
split
15Calculate and transport equalitiesL33–36
16Establish haoneL37–39
17Construct an explicit witnessL40–40
Supply the displayed value, then prove that it has the required property.
- L40
exists 1
18Calculate and transport equalitiesL41–41
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L41
symm
19Use earlier factsL42–42
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L42
apply mul_one
20Construct an explicit witnessL43–43
Supply the displayed value, then prove that it has the required property.
- L43
exists 0
21Calculate and transport equalitiesL44–45
22Construct an explicit witnessL46–47
23Separate the logical casesL48–48
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L48
split
24Calculate and transport equalitiesL49–52
25Use earlier factsL53–54
26Separate the logical casesL55–55
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L55
cases canonical_gcd_exists
27Establish haquotL56–61
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is gcd dvd left.
28Separate the logical casesL62–62
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L62
cases haquot
29Establish hzquotL63–68
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is gcd dvd right.
30Separate the logical casesL69–69
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L69
cases hzquot
31Establish hgnonzeroL70–78
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply factor nonzero left.
32Establish hZnonzeroL79–87
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply factor nonzero right.
33Establish hquotcopL88–97
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is gcd quotients coprime nonzero.
- L88
have hquotcop : Coprime(x1,x2)Definitions: Coprime(x1,x2)Original native command in the exact edition - L89
specialize is_gcd_quotients_coprime_nonzero x - L90
specialize is_gcd_quotients_coprime_nonzero a - L91
specialize is_gcd_quotients_coprime_nonzero z - L92
specialize is_gcd_quotients_coprime_nonzero x1 - L93
specialize is_gcd_quotients_coprime_nonzero x2 - L94
apply is_gcd_quotients_coprime_nonzero - L95
exact canonical_gcd_exists_witness - L96
exact hgnonzero - L97
exact haquot_witness
34Use earlier factsL98–98
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L98
exact hzquot_witness
35Construct an explicit witnessL99–100
36Use earlier factsL101–110
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L101
specialize coprime_square_reduced_factors a - L102
specialize coprime_square_reduced_factors b - L103
specialize coprime_square_reduced_factors z - L104
specialize coprime_square_reduced_factors x - L105
specialize coprime_square_reduced_factors x1 - L106
specialize coprime_square_reduced_factors x2 - L107
apply coprime_square_reduced_factors - L108
exact hgnonzero - L109
exact hZnonzero - L110
exact haquot_witness
Original defined command ledger · 114 lines
- 0001
intro a - 0002
intro b - 0003
intro z - 0004
intro hcop - 0005
intro heq - 0006
specialize eq_decidable z - 0007
specialize eq_decidable 0 - 0008
cases eq_decidable - 0009
have habzero : a * b = 0 - 0010
trans z * z - 0011
exact heq - 0012
rewrite eq_decidable_left - 0013
rewrite eq_decidable_left - 0014
simp - 0015
have hzero : a = 0 \/ b = 0 - 0016
specialize mul_eq_zero a - 0017
specialize mul_eq_zero b - 0018
apply mul_eq_zero - 0019
exact habzero - 0020
cases hzero - 0021
have hbone : b = 1 - 0022
specialize hcop b - 0023
apply hcop - 0024
exists 0 - 0025
rewrite hzero_left - 0026
simp - 0027
exists 1 - 0028
symm - 0029
apply mul_one - 0030
exists 0 - 0031
exists 1 - 0032
split - 0033
rewrite hzero_left - 0034
simp - 0035
rewrite hbone - 0036
simp - 0037
have haone : a = 1 - 0038
specialize hcop a - 0039
apply hcop - 0040
exists 1 - 0041
symm - 0042
apply mul_one - 0043
exists 0 - 0044
rewrite hzero_right - 0045
simp - 0046
exists 1 - 0047
exists 0 - 0048
split - 0049
rewrite haone - 0050
simp - 0051
rewrite hzero_right - 0052
simp - 0053
specialize canonical_gcd_exists a - 0054
specialize canonical_gcd_exists z - 0055
cases canonical_gcd_exists - 0056
have haquot : Dvd(x,a)Exact native replay line
have haquot : exists A. a = x * A - 0057
specialize is_gcd_dvd_left x - 0058
specialize is_gcd_dvd_left a - 0059
specialize is_gcd_dvd_left z - 0060
apply is_gcd_dvd_left - 0061
exact canonical_gcd_exists_witness - 0062
cases haquot - 0063
have hzquot : Dvd(x,z)Exact native replay line
have hzquot : exists Z. z = x * Z - 0064
specialize is_gcd_dvd_right x - 0065
specialize is_gcd_dvd_right a - 0066
specialize is_gcd_dvd_right z - 0067
apply is_gcd_dvd_right - 0068
exact canonical_gcd_exists_witness - 0069
cases hzquot - 0070
have hgnonzero : ~(x = 0) - 0071
intro hzero - 0072
specialize factor_nonzero_left z - 0073
specialize factor_nonzero_left x - 0074
specialize factor_nonzero_left x2 - 0075
apply factor_nonzero_left - 0076
exact eq_decidable_right - 0077
exact hzquot_witness - 0078
exact hzero - 0079
have hZnonzero : ~(x2 = 0) - 0080
intro hzero - 0081
specialize factor_nonzero_right z - 0082
specialize factor_nonzero_right x - 0083
specialize factor_nonzero_right x2 - 0084
apply factor_nonzero_right - 0085
exact eq_decidable_right - 0086
exact hzquot_witness - 0087
exact hzero - 0088
have hquotcop : Coprime(x1,x2)Exact native replay line
have hquotcop : forall frp_divisor_csf_product_reduced. (exists frp_left_factor_csf_product_reduced. x1 = frp_divisor_csf_product_reduced * frp_left_factor_csf_product_reduced) -> (exists frp_right_factor_csf_product_reduced. x2 = frp_divisor_csf_product_reduced * frp_right_factor_csf_product_reduced) -> frp_divisor_csf_product_reduced = 1 - 0089
specialize is_gcd_quotients_coprime_nonzero x - 0090
specialize is_gcd_quotients_coprime_nonzero a - 0091
specialize is_gcd_quotients_coprime_nonzero z - 0092
specialize is_gcd_quotients_coprime_nonzero x1 - 0093
specialize is_gcd_quotients_coprime_nonzero x2 - 0094
apply is_gcd_quotients_coprime_nonzero - 0095
exact canonical_gcd_exists_witness - 0096
exact hgnonzero - 0097
exact haquot_witness - 0098
exact hzquot_witness - 0099
exists x1 - 0100
exists x2 - 0101
specialize coprime_square_reduced_factors a - 0102
specialize coprime_square_reduced_factors b - 0103
specialize coprime_square_reduced_factors z - 0104
specialize coprime_square_reduced_factors x - 0105
specialize coprime_square_reduced_factors x1 - 0106
specialize coprime_square_reduced_factors x2 - 0107
apply coprime_square_reduced_factors - 0108
exact hgnonzero - 0109
exact hZnonzero - 0110
exact haquot_witness - 0111
exact hzquot_witness - 0112
exact heq - 0113
exact hcop - 0114
exact hquotcop