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 k n d K N a b L ga gb g. k = d * K -> n = d * N -> ~(d = 0) -> ~(N = 0) -> (forall frp_divisor_gfull_scaled_comparison. (exists frp_left_factor_gfull_scaled_comparison. K = frp_divisor_gfull_scaled_comparison * frp_left_factor_gfull_scaled_comparison) -> (exists frp_right_factor_gfull_scaled_comparison. N = frp_divisor_gfull_scaled_comparison * frp_right_factor_gfull_scaled_comparison) -> frp_divisor_gfull_scaled_comparison = 1) -> (forall frp_divisor_gfull_scaled_factors. (exists frp_left_factor_gfull_scaled_factors. a = frp_divisor_gfull_scaled_factors * frp_left_factor_gfull_scaled_factors) -> (exists frp_right_factor_gfull_scaled_factors. b = frp_divisor_gfull_scaled_factors * frp_right_factor_gfull_scaled_factors) -> frp_divisor_gfull_scaled_factors = 1) -> L = k * (a * b) -> ((((exists ec_gcd_left_gfull_scaled_ga. (k * a) = ga * ec_gcd_left_gfull_scaled_ga) /\ (exists ec_gcd_right_gfull_scaled_ga. n = ga * ec_gcd_right_gfull_scaled_ga)) /\ forall ec_gcd_common_gfull_scaled_ga. (exists ec_gcd_common_left_gfull_scaled_ga. (k * a) = ec_gcd_common_gfull_scaled_ga * ec_gcd_common_left_gfull_scaled_ga) -> (exists ec_gcd_common_right_gfull_scaled_ga. n = ec_gcd_common_gfull_scaled_ga * ec_gcd_common_right_gfull_scaled_ga) -> exists ec_gcd_greatest_gfull_scaled_ga. ga = ec_gcd_common_gfull_scaled_ga * ec_gcd_greatest_gfull_scaled_ga)) -> ((((exists ec_gcd_left_gfull_scaled_gb. (k * b) = gb * ec_gcd_left_gfull_scaled_gb) /\ (exists ec_gcd_right_gfull_scaled_gb. n = gb * ec_gcd_right_gfull_scaled_gb)) /\ forall ec_gcd_common_gfull_scaled_gb. (exists ec_gcd_common_left_gfull_scaled_gb. (k * b) = ec_gcd_common_gfull_scaled_gb * ec_gcd_common_left_gfull_scaled_gb) -> (exists ec_gcd_common_right_gfull_scaled_gb. n = ec_gcd_common_gfull_scaled_gb * ec_gcd_common_right_gfull_scaled_gb) -> exists ec_gcd_greatest_gfull_scaled_gb. gb = ec_gcd_common_gfull_scaled_gb * ec_gcd_greatest_gfull_scaled_gb)) -> ((((exists ec_gcd_left_gfull_scaled_g. L = g * ec_gcd_left_gfull_scaled_g) /\ (exists ec_gcd_right_gfull_scaled_g. n = g * ec_gcd_right_gfull_scaled_g)) /\ forall ec_gcd_common_gfull_scaled_g. (exists ec_gcd_common_left_gfull_scaled_g. L = ec_gcd_common_gfull_scaled_g * ec_gcd_common_left_gfull_scaled_g) -> (exists ec_gcd_common_right_gfull_scaled_g. n = ec_gcd_common_gfull_scaled_g * ec_gcd_common_right_gfull_scaled_g) -> exists ec_gcd_greatest_gfull_scaled_g. g = ec_gcd_common_gfull_scaled_g * ec_gcd_greatest_gfull_scaled_g)) -> ((((exists hscale_left_factor_gfull_scaled_result. g = ga * hscale_left_factor_gfull_scaled_result) /\ (exists hscale_right_factor_gfull_scaled_result. g = gb * hscale_right_factor_gfull_scaled_result)) /\ forall hscale_common_gfull_scaled_result. (exists hscale_left_common_gfull_scaled_result. hscale_common_gfull_scaled_result = ga * hscale_left_common_gfull_scaled_result) -> (exists hscale_right_common_gfull_scaled_result. hscale_common_gfull_scaled_result = gb * hscale_right_common_gfull_scaled_result) -> exists hscale_least_factor_gfull_scaled_result. hscale_common_gfull_scaled_result = g * hscale_least_factor_gfull_scaled_result))Constructive proof overview
Generated structural guide
Factoring a common gcd scale reduces unrestricted gcd--LCM distributivity to genuinely coprime cofactors.
The unchanged tactic script uses 8 declared prerequisites and contains 157 exact native proof lines.
Alpha v34 checked-use · first admitted v27 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
canonical_gcd_exists Alpha theorem; checked-use authorized crt_coprime_divisor_pair Alpha theorem; checked-use authorized is_gcd_dvd_left Stable theorem; checked-use authorized crt_is_gcd_coprime_product Alpha theorem; checked-use authorized crt_gcd_scaled_coprime_component Alpha theorem; checked-use authorized is_gcd_unique Stable theorem; checked-use authorized is_lcm_scale_nonzero Stable theorem; checked-use authorized coprime_product_is_lcm 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–20
03Fix variables and assumptionsL21–21
Work with arbitrary variables or the premises of the current implication.
- L21
intro hg
04Establish hauL22–25
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply canonical gcd exists.
- L22
have hau : exists u. (((exists ec_gcd_left_gfull_scaled_u. a = u * ec_gcd_left_gfull_scaled_u) /\ (exists ec_gcd_right_gfull_scaled_u. N = u * ec_gcd_right_gfull_scaled_u)) /\ forall ec_gcd_common_gfull_scaled_u. (exists ec_gcd_common_left_gfull_scaled_u. a = ec_gcd_common_gfull_scaled_u * ec_gcd_common_left_gfull_scaled_u) -> (exists ec_gcd_common_right_gfull_scaled_u. N = ec_gcd_common_gfull_scaled_u * ec_gcd_common_right_gfull_scaled_u) -> exists ec_gcd_greatest_gfull_scaled_u. u = ec_gcd_common_gfull_scaled_u * ec_gcd_greatest_gfull_scaled_u) - L23
specialize canonical_gcd_exists a - L24
specialize canonical_gcd_exists N - L25
apply canonical_gcd_exists
05Separate the logical casesL26–26
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L26
cases hau
06Establish hbvL27–30
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply canonical gcd exists.
- L27
have hbv : exists v. (((exists ec_gcd_left_gfull_scaled_v. b = v * ec_gcd_left_gfull_scaled_v) /\ (exists ec_gcd_right_gfull_scaled_v. N = v * ec_gcd_right_gfull_scaled_v)) /\ forall ec_gcd_common_gfull_scaled_v. (exists ec_gcd_common_left_gfull_scaled_v. b = ec_gcd_common_gfull_scaled_v * ec_gcd_common_left_gfull_scaled_v) -> (exists ec_gcd_common_right_gfull_scaled_v. N = ec_gcd_common_gfull_scaled_v * ec_gcd_common_right_gfull_scaled_v) -> exists ec_gcd_greatest_gfull_scaled_v. v = ec_gcd_common_gfull_scaled_v * ec_gcd_greatest_gfull_scaled_v) - L28
specialize canonical_gcd_exists b - L29
specialize canonical_gcd_exists N - L30
apply canonical_gcd_exists
07Separate the logical casesL31–31
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L31
cases hbv
08Establish huvL32–41
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt coprime divisor pair.
- L32
have huv : forall frp_divisor_gfull_scaled_uv. (exists frp_left_factor_gfull_scaled_uv. x = frp_divisor_gfull_scaled_uv * frp_left_factor_gfull_scaled_uv) -> (exists frp_right_factor_gfull_scaled_uv. x1 = frp_divisor_gfull_scaled_uv * frp_right_factor_gfull_scaled_uv) -> frp_divisor_gfull_scaled_uv = 1 - L33
specialize crt_coprime_divisor_pair a - L34
specialize crt_coprime_divisor_pair b - L35
specialize crt_coprime_divisor_pair x - L36
specialize crt_coprime_divisor_pair x1 - L37
apply crt_coprime_divisor_pair - L38
exact hab - L39
specialize is_gcd_dvd_left x - L40
specialize is_gcd_dvd_left a - L41
specialize is_gcd_dvd_left N
09Use earlier factsL42–48
10Establish hproductL49–58
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt is gcd coprime product.
- L49
have hproduct : IsGCD(x · x1,a · b,N)Definitions: IsGCD - L50
specialize crt_is_gcd_coprime_product a - L51
specialize crt_is_gcd_coprime_product b - L52
specialize crt_is_gcd_coprime_product N - L53
specialize crt_is_gcd_coprime_product x - L54
specialize crt_is_gcd_coprime_product x1 - L55
specialize crt_is_gcd_coprime_product (x * x1) - L56
specialize crt_is_gcd_coprime_product (a * b) - L57
apply crt_is_gcd_coprime_product - L58
exact hN
11Calculate and transport equalitiesL59–60
12Use earlier factsL61–63
13Establish huaL64–73
Establish this local claim before using it. It is not an additional assumption.
- L64
have hua : (((exists ec_gcd_left_gfull_scaled_ua. (k * a) = (d * x) * ec_gcd_left_gfull_scaled_ua) /\ (exists ec_gcd_right_gfull_scaled_ua. n = (d * x) * ec_gcd_right_gfull_scaled_ua)) /\ forall ec_gcd_common_gfull_scaled_ua. (exists ec_gcd_common_left_gfull_scaled_ua. (k * a) = ec_gcd_common_gfull_scaled_ua * ec_gcd_common_left_gfull_scaled_ua) -> (exists ec_gcd_common_right_gfull_scaled_ua. n = ec_gcd_common_gfull_scaled_ua * ec_gcd_common_right_gfull_scaled_ua) -> exists ec_gcd_greatest_gfull_scaled_ua. (d * x) = ec_gcd_common_gfull_scaled_ua * ec_gcd_greatest_gfull_scaled_ua) - L65
specialize crt_gcd_scaled_coprime_component k - L66
specialize crt_gcd_scaled_coprime_component n - L67
specialize crt_gcd_scaled_coprime_component d - L68
specialize crt_gcd_scaled_coprime_component K - L69
specialize crt_gcd_scaled_coprime_component N - L70
specialize crt_gcd_scaled_coprime_component a - L71
specialize crt_gcd_scaled_coprime_component x - L72
specialize crt_gcd_scaled_coprime_component (k * a) - L73
specialize crt_gcd_scaled_coprime_component (d * x)
14Use earlier factsL74–76
15Calculate and transport equalitiesL77–78
16Use earlier factsL79–80
17Establish hvbL81–90
Establish this local claim before using it. It is not an additional assumption.
- L81
have hvb : (((exists ec_gcd_left_gfull_scaled_vb. (k * b) = (d * x1) * ec_gcd_left_gfull_scaled_vb) /\ (exists ec_gcd_right_gfull_scaled_vb. n = (d * x1) * ec_gcd_right_gfull_scaled_vb)) /\ forall ec_gcd_common_gfull_scaled_vb. (exists ec_gcd_common_left_gfull_scaled_vb. (k * b) = ec_gcd_common_gfull_scaled_vb * ec_gcd_common_left_gfull_scaled_vb) -> (exists ec_gcd_common_right_gfull_scaled_vb. n = ec_gcd_common_gfull_scaled_vb * ec_gcd_common_right_gfull_scaled_vb) -> exists ec_gcd_greatest_gfull_scaled_vb. (d * x1) = ec_gcd_common_gfull_scaled_vb * ec_gcd_greatest_gfull_scaled_vb) - L82
specialize crt_gcd_scaled_coprime_component k - L83
specialize crt_gcd_scaled_coprime_component n - L84
specialize crt_gcd_scaled_coprime_component d - L85
specialize crt_gcd_scaled_coprime_component K - L86
specialize crt_gcd_scaled_coprime_component N - L87
specialize crt_gcd_scaled_coprime_component b - L88
specialize crt_gcd_scaled_coprime_component x1 - L89
specialize crt_gcd_scaled_coprime_component (k * b) - L90
specialize crt_gcd_scaled_coprime_component (d * x1)
18Use earlier factsL91–93
19Calculate and transport equalitiesL94–95
20Use earlier factsL96–97
21Establish hwL98–107
Establish this local claim before using it. It is not an additional assumption.
- L98
have hw : (((exists ec_gcd_left_gfull_scaled_w. L = (d * (x * x1)) * ec_gcd_left_gfull_scaled_w) /\ (exists ec_gcd_right_gfull_scaled_w. n = (d * (x * x1)) * ec_gcd_right_gfull_scaled_w)) /\ forall ec_gcd_common_gfull_scaled_w. (exists ec_gcd_common_left_gfull_scaled_w. L = ec_gcd_common_gfull_scaled_w * ec_gcd_common_left_gfull_scaled_w) -> (exists ec_gcd_common_right_gfull_scaled_w. n = ec_gcd_common_gfull_scaled_w * ec_gcd_common_right_gfull_scaled_w) -> exists ec_gcd_greatest_gfull_scaled_w. (d * (x * x1)) = ec_gcd_common_gfull_scaled_w * ec_gcd_greatest_gfull_scaled_w) - L99
specialize crt_gcd_scaled_coprime_component k - L100
specialize crt_gcd_scaled_coprime_component n - L101
specialize crt_gcd_scaled_coprime_component d - L102
specialize crt_gcd_scaled_coprime_component K - L103
specialize crt_gcd_scaled_coprime_component N - L104
specialize crt_gcd_scaled_coprime_component (a * b) - L105
specialize crt_gcd_scaled_coprime_component (x * x1) - L106
specialize crt_gcd_scaled_coprime_component L - L107
specialize crt_gcd_scaled_coprime_component (d * (x * x1))
22Use earlier factsL108–111
23Calculate and transport equalitiesL112–112
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L112
refl
24Use earlier factsL113–114
25Establish heqaL115–122
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is gcd unique.
26Establish heqbL123–130
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is gcd unique.
27Establish heqgL131–138
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is gcd unique.
28Establish hlcmL139–148
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is lcm scale nonzero.
- L139
have hlcm : Dvd(d · x,d · (x · x1)) ∧ Dvd(d · x1,d · (x · x1)) ∧ (∀ y. Dvd(d · x,y) → Dvd(d · x1,y) → Dvd(d · (x · x1),y))Definitions: Dvd - L140
specialize is_lcm_scale_nonzero d - L141
specialize is_lcm_scale_nonzero (x * x1) - L142
specialize is_lcm_scale_nonzero x - L143
specialize is_lcm_scale_nonzero x1 - L144
apply is_lcm_scale_nonzero - L145
exact hd - L146
specialize coprime_product_is_lcm x - L147
specialize coprime_product_is_lcm x1 - L148
apply coprime_product_is_lcm
29Use earlier factsL149–149
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L149
exact huv
30Calculate and transport equalitiesL150–156
31Use earlier factsL157–157
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L157
exact hlcm
Original exact command ledger · 157 lines
- 0001
intro k - 0002
intro n - 0003
intro d - 0004
intro K - 0005
intro N - 0006
intro a - 0007
intro b - 0008
intro L - 0009
intro ga - 0010
intro gb - 0011
intro g - 0012
intro hk - 0013
intro hn - 0014
intro hd - 0015
intro hN - 0016
intro hKN - 0017
intro hab - 0018
intro hL - 0019
intro hga - 0020
intro hgb - 0021
intro hg - 0022
have hau : exists u. (((exists ec_gcd_left_gfull_scaled_u. a = u * ec_gcd_left_gfull_scaled_u) /\ (exists ec_gcd_right_gfull_scaled_u. N = u * ec_gcd_right_gfull_scaled_u)) /\ forall ec_gcd_common_gfull_scaled_u. (exists ec_gcd_common_left_gfull_scaled_u. a = ec_gcd_common_gfull_scaled_u * ec_gcd_common_left_gfull_scaled_u) -> (exists ec_gcd_common_right_gfull_scaled_u. N = ec_gcd_common_gfull_scaled_u * ec_gcd_common_right_gfull_scaled_u) -> exists ec_gcd_greatest_gfull_scaled_u. u = ec_gcd_common_gfull_scaled_u * ec_gcd_greatest_gfull_scaled_u) - 0023
specialize canonical_gcd_exists a - 0024
specialize canonical_gcd_exists N - 0025
apply canonical_gcd_exists - 0026
cases hau - 0027
have hbv : exists v. (((exists ec_gcd_left_gfull_scaled_v. b = v * ec_gcd_left_gfull_scaled_v) /\ (exists ec_gcd_right_gfull_scaled_v. N = v * ec_gcd_right_gfull_scaled_v)) /\ forall ec_gcd_common_gfull_scaled_v. (exists ec_gcd_common_left_gfull_scaled_v. b = ec_gcd_common_gfull_scaled_v * ec_gcd_common_left_gfull_scaled_v) -> (exists ec_gcd_common_right_gfull_scaled_v. N = ec_gcd_common_gfull_scaled_v * ec_gcd_common_right_gfull_scaled_v) -> exists ec_gcd_greatest_gfull_scaled_v. v = ec_gcd_common_gfull_scaled_v * ec_gcd_greatest_gfull_scaled_v) - 0028
specialize canonical_gcd_exists b - 0029
specialize canonical_gcd_exists N - 0030
apply canonical_gcd_exists - 0031
cases hbv - 0032
have huv : forall frp_divisor_gfull_scaled_uv. (exists frp_left_factor_gfull_scaled_uv. x = frp_divisor_gfull_scaled_uv * frp_left_factor_gfull_scaled_uv) -> (exists frp_right_factor_gfull_scaled_uv. x1 = frp_divisor_gfull_scaled_uv * frp_right_factor_gfull_scaled_uv) -> frp_divisor_gfull_scaled_uv = 1 - 0033
specialize crt_coprime_divisor_pair a - 0034
specialize crt_coprime_divisor_pair b - 0035
specialize crt_coprime_divisor_pair x - 0036
specialize crt_coprime_divisor_pair x1 - 0037
apply crt_coprime_divisor_pair - 0038
exact hab - 0039
specialize is_gcd_dvd_left x - 0040
specialize is_gcd_dvd_left a - 0041
specialize is_gcd_dvd_left N - 0042
apply is_gcd_dvd_left - 0043
exact hau_witness - 0044
specialize is_gcd_dvd_left x1 - 0045
specialize is_gcd_dvd_left b - 0046
specialize is_gcd_dvd_left N - 0047
apply is_gcd_dvd_left - 0048
exact hbv_witness - 0049
have hproduct : (((exists ec_gcd_left_gfull_scaled_product. (a * b) = (x * x1) * ec_gcd_left_gfull_scaled_product) /\ (exists ec_gcd_right_gfull_scaled_product. N = (x * x1) * ec_gcd_right_gfull_scaled_product)) /\ forall ec_gcd_common_gfull_scaled_product. (exists ec_gcd_common_left_gfull_scaled_product. (a * b) = ec_gcd_common_gfull_scaled_product * ec_gcd_common_left_gfull_scaled_product) -> (exists ec_gcd_common_right_gfull_scaled_product. N = ec_gcd_common_gfull_scaled_product * ec_gcd_common_right_gfull_scaled_product) -> exists ec_gcd_greatest_gfull_scaled_product. (x * x1) = ec_gcd_common_gfull_scaled_product * ec_gcd_greatest_gfull_scaled_product) - 0050
specialize crt_is_gcd_coprime_product a - 0051
specialize crt_is_gcd_coprime_product b - 0052
specialize crt_is_gcd_coprime_product N - 0053
specialize crt_is_gcd_coprime_product x - 0054
specialize crt_is_gcd_coprime_product x1 - 0055
specialize crt_is_gcd_coprime_product (x * x1) - 0056
specialize crt_is_gcd_coprime_product (a * b) - 0057
apply crt_is_gcd_coprime_product - 0058
exact hN - 0059
refl - 0060
refl - 0061
exact hab - 0062
exact hau_witness - 0063
exact hbv_witness - 0064
have hua : (((exists ec_gcd_left_gfull_scaled_ua. (k * a) = (d * x) * ec_gcd_left_gfull_scaled_ua) /\ (exists ec_gcd_right_gfull_scaled_ua. n = (d * x) * ec_gcd_right_gfull_scaled_ua)) /\ forall ec_gcd_common_gfull_scaled_ua. (exists ec_gcd_common_left_gfull_scaled_ua. (k * a) = ec_gcd_common_gfull_scaled_ua * ec_gcd_common_left_gfull_scaled_ua) -> (exists ec_gcd_common_right_gfull_scaled_ua. n = ec_gcd_common_gfull_scaled_ua * ec_gcd_common_right_gfull_scaled_ua) -> exists ec_gcd_greatest_gfull_scaled_ua. (d * x) = ec_gcd_common_gfull_scaled_ua * ec_gcd_greatest_gfull_scaled_ua) - 0065
specialize crt_gcd_scaled_coprime_component k - 0066
specialize crt_gcd_scaled_coprime_component n - 0067
specialize crt_gcd_scaled_coprime_component d - 0068
specialize crt_gcd_scaled_coprime_component K - 0069
specialize crt_gcd_scaled_coprime_component N - 0070
specialize crt_gcd_scaled_coprime_component a - 0071
specialize crt_gcd_scaled_coprime_component x - 0072
specialize crt_gcd_scaled_coprime_component (k * a) - 0073
specialize crt_gcd_scaled_coprime_component (d * x) - 0074
apply crt_gcd_scaled_coprime_component - 0075
exact hk - 0076
exact hn - 0077
refl - 0078
refl - 0079
exact hKN - 0080
exact hau_witness - 0081
have hvb : (((exists ec_gcd_left_gfull_scaled_vb. (k * b) = (d * x1) * ec_gcd_left_gfull_scaled_vb) /\ (exists ec_gcd_right_gfull_scaled_vb. n = (d * x1) * ec_gcd_right_gfull_scaled_vb)) /\ forall ec_gcd_common_gfull_scaled_vb. (exists ec_gcd_common_left_gfull_scaled_vb. (k * b) = ec_gcd_common_gfull_scaled_vb * ec_gcd_common_left_gfull_scaled_vb) -> (exists ec_gcd_common_right_gfull_scaled_vb. n = ec_gcd_common_gfull_scaled_vb * ec_gcd_common_right_gfull_scaled_vb) -> exists ec_gcd_greatest_gfull_scaled_vb. (d * x1) = ec_gcd_common_gfull_scaled_vb * ec_gcd_greatest_gfull_scaled_vb) - 0082
specialize crt_gcd_scaled_coprime_component k - 0083
specialize crt_gcd_scaled_coprime_component n - 0084
specialize crt_gcd_scaled_coprime_component d - 0085
specialize crt_gcd_scaled_coprime_component K - 0086
specialize crt_gcd_scaled_coprime_component N - 0087
specialize crt_gcd_scaled_coprime_component b - 0088
specialize crt_gcd_scaled_coprime_component x1 - 0089
specialize crt_gcd_scaled_coprime_component (k * b) - 0090
specialize crt_gcd_scaled_coprime_component (d * x1) - 0091
apply crt_gcd_scaled_coprime_component - 0092
exact hk - 0093
exact hn - 0094
refl - 0095
refl - 0096
exact hKN - 0097
exact hbv_witness - 0098
have hw : (((exists ec_gcd_left_gfull_scaled_w. L = (d * (x * x1)) * ec_gcd_left_gfull_scaled_w) /\ (exists ec_gcd_right_gfull_scaled_w. n = (d * (x * x1)) * ec_gcd_right_gfull_scaled_w)) /\ forall ec_gcd_common_gfull_scaled_w. (exists ec_gcd_common_left_gfull_scaled_w. L = ec_gcd_common_gfull_scaled_w * ec_gcd_common_left_gfull_scaled_w) -> (exists ec_gcd_common_right_gfull_scaled_w. n = ec_gcd_common_gfull_scaled_w * ec_gcd_common_right_gfull_scaled_w) -> exists ec_gcd_greatest_gfull_scaled_w. (d * (x * x1)) = ec_gcd_common_gfull_scaled_w * ec_gcd_greatest_gfull_scaled_w) - 0099
specialize crt_gcd_scaled_coprime_component k - 0100
specialize crt_gcd_scaled_coprime_component n - 0101
specialize crt_gcd_scaled_coprime_component d - 0102
specialize crt_gcd_scaled_coprime_component K - 0103
specialize crt_gcd_scaled_coprime_component N - 0104
specialize crt_gcd_scaled_coprime_component (a * b) - 0105
specialize crt_gcd_scaled_coprime_component (x * x1) - 0106
specialize crt_gcd_scaled_coprime_component L - 0107
specialize crt_gcd_scaled_coprime_component (d * (x * x1)) - 0108
apply crt_gcd_scaled_coprime_component - 0109
exact hk - 0110
exact hn - 0111
exact hL - 0112
refl - 0113
exact hKN - 0114
exact hproduct - 0115
have heqa : ga = d * x - 0116
specialize is_gcd_unique ga - 0117
specialize is_gcd_unique (d * x) - 0118
specialize is_gcd_unique (k * a) - 0119
specialize is_gcd_unique n - 0120
apply is_gcd_unique - 0121
exact hga - 0122
exact hua - 0123
have heqb : gb = d * x1 - 0124
specialize is_gcd_unique gb - 0125
specialize is_gcd_unique (d * x1) - 0126
specialize is_gcd_unique (k * b) - 0127
specialize is_gcd_unique n - 0128
apply is_gcd_unique - 0129
exact hgb - 0130
exact hvb - 0131
have heqg : g = d * (x * x1) - 0132
specialize is_gcd_unique g - 0133
specialize is_gcd_unique (d * (x * x1)) - 0134
specialize is_gcd_unique L - 0135
specialize is_gcd_unique n - 0136
apply is_gcd_unique - 0137
exact hg - 0138
exact hw - 0139
have hlcm : (((exists hscale_left_factor_gfull_scaled_lcm. (d * (x * x1)) = (d * x) * hscale_left_factor_gfull_scaled_lcm) /\ (exists hscale_right_factor_gfull_scaled_lcm. (d * (x * x1)) = (d * x1) * hscale_right_factor_gfull_scaled_lcm)) /\ forall hscale_common_gfull_scaled_lcm. (exists hscale_left_common_gfull_scaled_lcm. hscale_common_gfull_scaled_lcm = (d * x) * hscale_left_common_gfull_scaled_lcm) -> (exists hscale_right_common_gfull_scaled_lcm. hscale_common_gfull_scaled_lcm = (d * x1) * hscale_right_common_gfull_scaled_lcm) -> exists hscale_least_factor_gfull_scaled_lcm. hscale_common_gfull_scaled_lcm = (d * (x * x1)) * hscale_least_factor_gfull_scaled_lcm) - 0140
specialize is_lcm_scale_nonzero d - 0141
specialize is_lcm_scale_nonzero (x * x1) - 0142
specialize is_lcm_scale_nonzero x - 0143
specialize is_lcm_scale_nonzero x1 - 0144
apply is_lcm_scale_nonzero - 0145
exact hd - 0146
specialize coprime_product_is_lcm x - 0147
specialize coprime_product_is_lcm x1 - 0148
apply coprime_product_is_lcm - 0149
exact huv - 0150
rewrite heqa - 0151
rewrite heqa - 0152
rewrite heqb - 0153
rewrite heqb - 0154
rewrite heqg - 0155
rewrite heqg - 0156
rewrite heqg - 0157
exact hlcm