Zulip Chat Archive

Stream: new members

Topic: decidable_eq in quotient module


Jack J Garzella (Nov 07 2022 at 22:53):

Hello,

I'm trying to formalize the statement of Nakayama's Lemma, part (8) in the link. I'm struggling with the hypothesis "the images of x1,,xnx_1, \ldots, x_n generate M/IMM/IM". My attempt is to use finset M for the set x1,,xnx_1, \ldots, x_n, and the #mwe looks like this:

 lemma generate_of_quotient_generate_of_le_jacobson (I : ideal R)
(hM : ( : submodule R M).fg) (hIjac : I  jacobson ) (S : finset M)
-- here is the hypothesis I can't quite figure out
(hIM : submodule.span (R  I) (S.image (@submodule.quotient.mk R M _ _ _ (I  ( : submodule R M)))) =
( : submodule (R  I) (M  (I  ( : submodule R M)))))
-- end hypothesis I can't figure out
: (submodule.span R S = ( : submodule R M)) := sorry

The error says failed to synthesize type class instance for ... ⊢ decidable_eq (M ⧸ I • ⊤).
Where did decidability come into the picture for this statement about modules? And how do I convince lean that whatever needs to be decidable is indeed decidable and/or is there a better way to formalize this assumption?

Alex J. Best (Nov 07 2022 at 23:04):

Try open_locale classical before your lemma

Adam Topaz (Nov 07 2022 at 23:07):

(deleted)

Adam Topaz (Nov 07 2022 at 23:08):

(deleted)

Adam Topaz (Nov 07 2022 at 23:12):

Sorry, I missed that you wanted statement (8)

Adam Topaz (Nov 07 2022 at 23:14):

Anyway, it's probably better to formulate the finitely-generated assumption using docs#module.finite

Adam Topaz (Nov 07 2022 at 23:21):

Alex J. Best said:

Try open_locale classical before your lemma

This should work, or alternatively you can try to add the necessary decidable_eq assumptions needed by docs#finset.image

Adam Topaz (Nov 07 2022 at 23:24):

At least on my end, it seems that Lean is also unhappy about M/IMM/I \cdot M being an R/IR/I-module. Is this in some import that I'm missing?

Eric Wieser (Nov 08 2022 at 00:18):

Can you make that mwe a #mwe? It doesn't have any imports or variables, so lean doesn't understand any of it!

Junyan Xu (Nov 08 2022 at 01:32):

Maybe you can use docs#set.finite instead of docs#finset; docs#set.image doesn't require decidable_eq. If you want to do induction there is docs#set.finite.induction_on.

Jack J Garzella (Nov 08 2022 at 21:13):

Eric Wieser said:

Can you make that mwe a #mwe? It doesn't have any imports or variables, so lean doesn't understand any of it!

So sorry, looks like I forgot to paste the top of the file. Edited now so it should actually be a #mwe

Jack J Garzella (Nov 08 2022 at 21:23):

Adam Topaz said:

At least on my end, it seems that Lean is also unhappy about M/IMM/I \cdot M being an R/IR/I-module. Is this in some import that I'm missing?

This seems to be hidden in algebra.module.torsion, see for example here. See also updated the original post.

Eric Wieser (Nov 08 2022 at 21:39):

Replacing with set.image makes your error go away

Eric Wieser (Nov 08 2022 at 21:43):

import ring_theory.nakayama
import ring_theory.jacobson_ideal
import algebra.module.torsion

variables {R M : Type*} [comm_ring R] [add_comm_group M] [module R M]

open ideal

lemma generate_of_quotient_generate_of_le_jacobson (I : ideal R)
  (hM : ( : submodule R M).fg) (hIjac : I  jacobson ) (S : finset M)
  -- here is the hypothesis I can't quite figure out
  (hIM : submodule.span (R  I) (submodule.quotient.mk '' S) =
    ( : submodule (R  I) (M  (I  ( : submodule R M))))) :
  -- end hypothesis I can't figure out
  submodule.span R S = ( : submodule R M) := sorry

Last updated: Dec 20 2023 at 11:08 UTC