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. Dvd(a · a,b · b) → Dvd(a,b)Every 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. (exists q. b * b = (a * a) * q) -> exists k. b = a * kProof neighborhood
Direct theorem prerequisites
PF001C square_zero_root canonical_gcd_exists · Alpha closed is_gcd_dvd_left · Stable closed is_gcd_dvd_right · Stable closed factor_nonzero_left · Stable closed is_gcd_quotients_coprime_nonzero · Stable closed PF001F square_divides_square_reduced_rootDirect 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 (2)
01Fix variables and assumptionsL1–3
02Separate the logical casesL4–4
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L4
cases hdiv
03Use earlier factsL5–6
04Separate the logical casesL7–7
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L7
cases eq_decidable
05Establish hbzeroL8–14
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply square zero root.
06Construct an explicit witnessL15–15
Supply the displayed value, then prove that it has the required property.
- L15
exists 0
07Calculate and transport equalitiesL16–17
08Use earlier factsL18–19
09Separate the logical casesL20–20
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L20
cases canonical_gcd_exists
10Establish haquotL21–26
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is gcd dvd left.
11Separate the logical casesL27–27
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L27
cases haquot
12Establish hbquotL28–33
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is gcd dvd right.
13Separate the logical casesL34–34
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L34
cases hbquot
14Establish hgnonzeroL35–43
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply factor nonzero left.
15Establish hquotcopL44–53
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is gcd quotients coprime nonzero.
- L44
have hquotcop : Coprime(x2,x3)Definitions: Coprime(x2,x3)Original native command in the exact edition - L45
specialize is_gcd_quotients_coprime_nonzero x1 - L46
specialize is_gcd_quotients_coprime_nonzero a - L47
specialize is_gcd_quotients_coprime_nonzero b - L48
specialize is_gcd_quotients_coprime_nonzero x2 - L49
specialize is_gcd_quotients_coprime_nonzero x3 - L50
apply is_gcd_quotients_coprime_nonzero - L51
exact canonical_gcd_exists_witness - L52
exact hgnonzero - L53
exact haquot_witness
16Use earlier factsL54–63
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L54
exact hbquot_witness - L55
specialize square_divides_square_reduced_root a - L56
specialize square_divides_square_reduced_root b - L57
specialize square_divides_square_reduced_root x1 - L58
specialize square_divides_square_reduced_root x2 - L59
specialize square_divides_square_reduced_root x3 - L60
specialize square_divides_square_reduced_root x - L61
apply square_divides_square_reduced_root - L62
exact hgnonzero - L63
exact haquot_witness
Original defined command ledger · 66 lines
- 0001
intro a - 0002
intro b - 0003
intro hdiv - 0004
cases hdiv - 0005
specialize eq_decidable a - 0006
specialize eq_decidable 0 - 0007
cases eq_decidable - 0008
have hbzero : b = 0 - 0009
specialize square_zero_root b - 0010
apply square_zero_root - 0011
trans (a * a) * x - 0012
exact hdiv_witness - 0013
rewrite eq_decidable_left - 0014
simp [mul_zero_left] - 0015
exists 0 - 0016
rewrite hbzero - 0017
simp - 0018
specialize canonical_gcd_exists a - 0019
specialize canonical_gcd_exists b - 0020
cases canonical_gcd_exists - 0021
have haquot : Dvd(x1,a)Exact native replay line
have haquot : exists A. a = x1 * A - 0022
specialize is_gcd_dvd_left x1 - 0023
specialize is_gcd_dvd_left a - 0024
specialize is_gcd_dvd_left b - 0025
apply is_gcd_dvd_left - 0026
exact canonical_gcd_exists_witness - 0027
cases haquot - 0028
have hbquot : Dvd(x1,b)Exact native replay line
have hbquot : exists B. b = x1 * B - 0029
specialize is_gcd_dvd_right x1 - 0030
specialize is_gcd_dvd_right a - 0031
specialize is_gcd_dvd_right b - 0032
apply is_gcd_dvd_right - 0033
exact canonical_gcd_exists_witness - 0034
cases hbquot - 0035
have hgnonzero : ~(x1 = 0) - 0036
intro hzero - 0037
specialize factor_nonzero_left a - 0038
specialize factor_nonzero_left x1 - 0039
specialize factor_nonzero_left x2 - 0040
apply factor_nonzero_left - 0041
exact eq_decidable_right - 0042
exact haquot_witness - 0043
exact hzero - 0044
have hquotcop : Coprime(x2,x3)Exact native replay line
have hquotcop : forall frp_divisor_csf_divisibility_quotients. (exists frp_left_factor_csf_divisibility_quotients. x2 = frp_divisor_csf_divisibility_quotients * frp_left_factor_csf_divisibility_quotients) -> (exists frp_right_factor_csf_divisibility_quotients. x3 = frp_divisor_csf_divisibility_quotients * frp_right_factor_csf_divisibility_quotients) -> frp_divisor_csf_divisibility_quotients = 1 - 0045
specialize is_gcd_quotients_coprime_nonzero x1 - 0046
specialize is_gcd_quotients_coprime_nonzero a - 0047
specialize is_gcd_quotients_coprime_nonzero b - 0048
specialize is_gcd_quotients_coprime_nonzero x2 - 0049
specialize is_gcd_quotients_coprime_nonzero x3 - 0050
apply is_gcd_quotients_coprime_nonzero - 0051
exact canonical_gcd_exists_witness - 0052
exact hgnonzero - 0053
exact haquot_witness - 0054
exact hbquot_witness - 0055
specialize square_divides_square_reduced_root a - 0056
specialize square_divides_square_reduced_root b - 0057
specialize square_divides_square_reduced_root x1 - 0058
specialize square_divides_square_reduced_root x2 - 0059
specialize square_divides_square_reduced_root x3 - 0060
specialize square_divides_square_reduced_root x - 0061
apply square_divides_square_reduced_root - 0062
exact hgnonzero - 0063
exact haquot_witness - 0064
exact hbquot_witness - 0065
exact hquotcop - 0066
exact hdiv_witness