Zulip Chat Archive

Stream: new members

Topic: 0 x = 0


VayusElytra (Jun 12 2024 at 15:53):

Hi, this one is a really dumb question, but it's giving me surprising difficulty.
I have this as the current state of a proof:

F : Type
inst : DivisionRing F
m : F
x : (ZeroSubmod F)
0 : AddHom (ZeroSubmod F) (SelfSubmod F)
 0 (m  x) = m * 0 x

with helper definitions

def ZeroSubmod (F : Type u) [DivisionRing F] : ModuleCat.{u} F where
  carrier := PUnit.{u+1}

def SelfSubmod (F : Type u) [DivisionRing F] : ModuleCat.{u} F where
  carrier := F

All I need to close out this goal is the identity0 x = 0, that is to say that applying the zero morphism to any element yields the 0-element of the ring F. This feels like it should be really trivial, but the usual rw and dsimp are not making progress, and I am having some trouble finding the relevant theorem in the jungle of documentation. How do I do this then?

Ruben Van de Velde (Jun 12 2024 at 15:55):

I would need a #mwe to verify, but maybe docs#Pi.zero_apply

VayusElytra (Jun 12 2024 at 16:07):

(deleted)

Junyan Xu (Jun 12 2024 at 17:40):

Usually 0 x is defeq to 0, so exact (mul_zero m).symm solves the "relevant part".

VayusElytra (Jun 12 2024 at 17:59):

You are right that this works, thank you very much! I am really confused then why dsimp doesn't simplify 0 x to 0 in that relevant part, and why feeding.
Are there any other ways to refer to 0 objects in Lean? I find it confusing to have 0's everywhere in my code, that are misinterpreted as natural numbers or that aren't the exact 0 I am thinking of a quarter of the time. I've been working with modules for a week and I'm still not sure how to actually properly, unambiguously write down the additive unit


Last updated: May 02 2025 at 03:31 UTC