Zulip Chat Archive
Stream: maths
Topic: a*a = b*c -> gcd a b > 1
Rick Love (Aug 15 2020 at 14:12):
Good point, my final conclusion should be gcd a b > 1 (Corrected the title)
Rick Love (Aug 15 2020 at 14:14):
That also assumes a,b,c > 1
Rick Love (Aug 15 2020 at 14:18):
Ok, here is a better approach:
-- 4 * 4 = 2 * 8 -> gcd a b = 2 gcd a c = 4
-- 6 * 6 = 4 * 9 -> gcd a b = 2 gcd a c = 3
theorem multiple_factors_then_gcd (a b c k : nat):
a > 1 -> b > 1 -> c > 1 ->
a*a = b*c ->
gcd a b > 1 :=
begin
intros ha hb hc h,
let faa := factors (a*a),
let fbc := factors (b*c),
let fa := factors (a),
let fb := factors (b),
let fc := factors (c),
have h_faa_fbc : faa = fbc := by { dsimp [faa, fbc], rw h,},
have h_faa_fa_fa : faa = list.append fa fa := by {
-- cc,
-- Is there an operation for factors(a*a) = factors(a) ∧ factors(a)
sorry,
},
-- have
sorry,
end
Kevin Buzzard (Aug 15 2020 at 14:22):
If all you want to do is prove the gcd is bigger than one then you can just prove that if b>1 then it has a prime factor and this prime factor divides a^2 and hence a
Kevin Buzzard (Aug 15 2020 at 14:22):
I should think these facts are already in mathlib
Rick Love (Aug 15 2020 at 14:25):
Right, I was trying to use dvd and gcd, but I'll take a look at the prime functions. That's probably the missing piece 'prime factor divides a^2 and hence a'
Kenny Lau (Aug 15 2020 at 17:19):
if gcd a b <= 1
then gcd a b = 0
or gcd a b = 1
.
In the first case, we have a = 0
or b = 0
, contradiction.
In the second case, we have gcd (a * a) b = 1
, so gcd (b * c) b = 1
, so b = 1
, contradiction.
Kenny Lau (Aug 15 2020 at 17:19):
no primes required
Rick Love (Aug 15 2020 at 17:38):
@Kenny Lau even with that, the difficulty is programming it in lean. How would you write that? Specifically how would you set up a proof by contradiction like this. (Note, I've done plenty of rw apply, etc, but still new to using exfalso and a contradiction).
Kenny Lau (Aug 15 2020 at 17:47):
you can start with:
generalize hg : gcd a b = g,
by_contra h,
cases g with g,
(not tested)
Rick Love (Aug 15 2020 at 17:54):
Well that's giving me:
image.png
How do I pull the h out to work with it?
Johan Commelin (Aug 15 2020 at 17:59):
What do you mean with "pull out"? Does push_neg
help?
Kenny Lau (Aug 15 2020 at 17:59):
what's your goal state before my invocations?
Rick Love (Aug 15 2020 at 19:52):
Johan Commelin said:
What do you mean with "pull out"? Does
push_neg
help?
Yeah, that helps. I'd just been using simp, but this gives better control.
Last updated: Dec 20 2023 at 11:08 UTC