Zulip Chat Archive
Stream: new members
Topic: Help with geom_sum ite lemma
Junyan Xu (Jul 19 2022 at 20:51):
1st sorry: obtain ⟨m, rfl⟩ := h_1,
2nd sorry: rw if_pos h_1, (goals accomplished)
btw, import all doesn't work for me and I had to squeeze it to
import data.complex.exponential
import analysis.special_functions.trigonometric.basic
Eric Wieser (Jul 19 2022 at 21:01):
import all is likely to make things like library_search timeout because it brings in far too many lemmas
Junyan Xu (Jul 19 2022 at 21:23):
On my end it just shows
file 'all' not found in the search path
Use 'lean --path' to see where lean is looking, or https://leanprover-community.github.io/file-not-found.html for more
invalid import: all
could not resolve import: all
Mauricio Collares (Jul 19 2022 at 21:26):
all.lean needs to be generated first (by leanproject mk-all)
Mark Gerads (Jul 19 2022 at 22:27):
Thanks for the help. I used '_target/deps/mathlib/scripts/mk_all.sh' for my mk_all, which creates an 'all' which imports all of mathlib.
'leanproject mk-all' actually only imports what is in the '/src' folder of the current lean project.
Kevin Buzzard (Jul 19 2022 at 22:36):
One problem I've noticed with mk-all is that you make it and then you forget about it and then you pull new stuff and then the file breaks. I avoid it for this reason and others (e.g. it sometimes essentially disables library_search)
Mark Gerads (Jul 22 2022 at 20:25):
How do I solve this? ring, ring_nf, squeeze_simp do nothing.
image.png
Junyan Xu (Jul 22 2022 at 20:54):
This works
example (m n : ℕ) (h : n > 0) : (n : ℂ)⁻¹ * m * n = m :=
by { field_simp, rw mul_div_cancel, exact_mod_cast h.lt.ne.symm }
Mark Gerads (Jul 22 2022 at 22:00):
Almost done, but stuck on this part where the root of unity must be shown not equal to 1:
image.png
Junyan Xu (Jul 22 2022 at 22:04):
first rewrite by docs#complex.exp_eq_one_iff
Mark Gerads (Jul 22 2022 at 22:05):
Nice.
Mark Gerads (Jul 22 2022 at 22:36):
Stuck again. I need to do something with h_1, but don't know what.
image.png
Mark Gerads (Jul 22 2022 at 22:48):
The problem is at line 274.
RootOfUnityExponentialSum.lean
Junyan Xu (Jul 22 2022 at 22:55):
At line 270 you can do
intro eq1, apply h_1,
obtain ⟨m, he⟩ := complex.exp_eq_one_iff.1 eq1,
use m.to_nat,
and I think you'll need to use docs#int.to_nat_of_nonneg at some point.
Junyan Xu (Jul 23 2022 at 00:13):
Oh sorry, it's best to rw ← int.coe_nat_dvd, use m,
Mark Gerads (Jul 23 2022 at 00:19):
And that is almost the same as 'he'. Normally, when something like 'he' is a goal, I would use the 'congr' tactic, but that doesn't work when the congruence is not in the goal?
image.png
Junyan Xu (Jul 23 2022 at 00:25):
You need to cancel a factor, and you need to show the factor is nonzero, so it's not congr; congr doesn't give you the reverse direction.
Junyan Xu (Jul 23 2022 at 00:26):
you can rewrite he by some comm/assoc lemmas and apply https://leanprover-community.github.io/mathlib_docs/algebra/group_with_zero/defs.html#mul_right_cancel%E2%82%80 to it
Mark Gerads (Jul 23 2022 at 01:56):
How does one show the computer 2 * ↑real.pi * I ≠ 0?
Junyan Xu (Jul 23 2022 at 01:59):
apply mul_ne_zero,
Mark Gerads (Jul 23 2022 at 02:10):
Doing the twice breaks the goal into ⊢ 2 ≠ 0,⊢ ↑real.pi ≠ 0, ⊢ I ≠ 0. norm_num gets rid of 2 ≠ 0, but not the other 2 inequalities.
Edit: found I_ne_zero and real.pi_ne_zero; the second needed norm_cast.
Mark Gerads (Jul 23 2022 at 03:19):
I've run into a new problem. I have the exact equation I need (h8), except it is the wrong type of equation; I need eq ℤ and have type eq ℂ. RootOfUnityExponentialSum.lean line 294
image.png
Violeta Hernández (Jul 23 2022 at 03:37):
Have you tried exact_mod_cast h8?
Mark Gerads (Jul 23 2022 at 07:50):
Thank you all for helping complete this lemma. :smile: :heart: :+1: :tada: :octopus: It is something required to prove my next attempted lemma, ruesNEqExpSum. I already foresee questions about interchanging an arbitrarily sized finset sum with a tsum infinite sum.
Last updated: May 02 2025 at 03:31 UTC




