Zulip Chat Archive

Stream: maths

Topic: morphism in `(topological_space.opens X)ᵒᵖ`


Kevin Buzzard (Nov 28 2022 at 10:26):

I would have liked to think that I am experienced enough to figure out how to make progress with the following goal in marthlib3:

import tactic
import topology.sets.opens
import category_theory.category.preorder

example (X : Type) [topological_space X] (U V : (topological_space.opens X)ᵒᵖ) (h : V.unop  U.unop):
  U  V :=
begin
  -- apply ulift.up, -- fails
  -- change opposite.unop V ⟶ opposite.unop U, -- fails
  delta quiver.hom, --dreaded []
  sorry
end

Getting the system to unfold quiver.hom gives me the dreaded [quiver.hom quiver.opposite] U V and my rule of thumb is that when the []s start appearing you unfolded too much. By using widgets you can dig into what the definition should be and it's

/-- `Vᵒᵖ` reverses the direction of all arrows of `V`. -/
instance opposite {V} [quiver V] : quiver Vᵒᵖ :=
λ a b, (unop b)  (unop a)⟩

so my change should work but this doesn't work either, I dunno if something was made irreducible or what, but anyway at the end of the day I'm stuck. This is for a lecture I'm giving today in 5 hours lol

Andrew Yang (Nov 28 2022 at 10:27):

Not tested, but exact (hom_of_le h).op should work?

Kevin Buzzard (Nov 28 2022 at 10:28):

ha ha I just replaced the goal with _ and clicked on every single lightbulb possibility, and library_search gave me category_theory.op_hom_of_le h

Kevin Buzzard (Nov 28 2022 at 10:28):

OK now to find out how I should be doing this. Thanks Andrew! Do you have any clue why my approaches didn't work?

Andrew Yang (Nov 28 2022 at 10:35):

I'm still looking into it, but dsimp [quiver.opposite] seems to leave you with opposite.unop V ⟶ opposite.unop U.

Andrew Yang (Nov 28 2022 at 10:39):

It seems like quiver.opposite is marked as irreducible to force users into using docs#category_theory.quiver.hom.op

Joël Riou (Nov 28 2022 at 11:11):

My first try would have been:

  let α : V.unop  U.unop := sorry,
  exact α.op,

Adam Topaz (Nov 28 2022 at 18:55):

I think we have docs#has_le.le.hom so you can use dot notation and write h.hom where h : A \le B.

Adam Topaz (Nov 28 2022 at 18:55):

similarly docs#quiver.hom.le

Adam Topaz (Nov 28 2022 at 19:01):

So altogether Kevin should be able to write h.hom.op :)

Andrew Yang (Nov 28 2022 at 19:22):

Not really. Kevin's h is in terms of subset and there isn't a has_subset.subset.hom. But to be fair, Kevin's example should use le to begin with.


Last updated: Dec 20 2023 at 11:08 UTC