Zulip Chat Archive
Stream: Is there code for X?
Topic: Cyclotomic extensions of finite fields are finite
Michael Stoll (Jun 01 2022 at 20:45):
I'm missing an instance that says that cyclotomic_field n F is finite if F is a finite field.
@Riccardo Brasca Is this something that could be included in #14463?
Michael Stoll (Jun 01 2022 at 20:46):
Or maybe, this should work via: cyclotomic_field n F is a finite(-dimensional) extension of F; a finite extension of a finite field is finite.
Riccardo Brasca (Jun 01 2022 at 20:55):
Yes, that will work immediately. I have some draft code (I will open a PR maybe tomorrow) to show that cyclotomic_field n F is always a cyclotomic extension of F (I mean, even if n = 0 in F, it isn't a n-th cyclotomic extension but a m-th one, where n = p^k * m where p = char(F)), so this will work in general.
Riccardo Brasca (Jun 01 2022 at 20:55):
Note that cyclotomic_field n F is just (cyclotomic n K).splitting_field, so you can already use all the API for splitting_field.
Riccardo Brasca (Jun 01 2022 at 20:57):
Maybe docs#finite_dimensional.fintype_of_fintype already works (but it cannot be an instance)
Riccardo Brasca (Jun 01 2022 at 21:02):
In general all the theorems saying that L is finite because K satisfies some condition and L is related to K, cannot be instances, since Lean cannot guess K.
Michael Stoll (Jun 01 2022 at 21:03):
OK. So this appears to work:
let FF := cyclotomic_field 8 F,
haveI : finite_dimensional F FF := polynomial.is_splitting_field.finite_dimensional _ _,
haveI : fintype FF := finite_dimensional.fintype_of_fintype F FF,
Thanks!
Riccardo Brasca (Jun 01 2022 at 21:08):
Do you need the first haveI?
Michael Stoll (Jun 01 2022 at 21:09):
Yes; otherwise the second haveI complains.
Riccardo Brasca (Jun 01 2022 at 21:09):
Mmh, this makes me thinking that maybe cyclotomic_field should be just an abbreviation rather than a def, so Lean can automatically use all the instances for splitting_field
Riccardo Brasca (Jun 01 2022 at 21:10):
I will see after #14463 gets merged
Eric Rodriguez (Jun 01 2022 at 21:52):
Can't we just @derive it?
Riccardo Brasca (Jun 02 2022 at 07:33):
Sure, but we have to do it for all the instance splitting_field has, right?
Last updated: May 02 2025 at 03:31 UTC