Zulip Chat Archive
Stream: Is there code for X?
Topic: Generic Types
Chase Norman (Jan 10 2021 at 04:07):
Here is a mwe of my current situation:
def Parameterized {X Y : Type} [fintype X] [fintype Y] := X → Y
structure S :=
(F : Parameterized → set X)
...
My goal is for the F
function within S
to take any Parameterized
and create a set
using the same type X
as the Parameterized
uses for its type argument X
. I've tried defining X
and Y
as example variables. I tried defining them as Sort
(as is done in various mathlib files), but I could not construct a set
with them. I've tried permuting between curly braces and normal parenthesis in the Parameterized
definition. The answer has eluded me due to the type classes. How can I achieve my goal?
Yakov Pechersky (Jan 10 2021 at 04:43):
I would think you'd need to have (X Y : Type)
, otherwise it's not possible to infer what types Parameterized
is over.
Patrick Lutz (Jan 12 2021 at 05:35):
This works for me
import data.fintype.basic
def Parameterized (X Y : Type) [fintype X] [fintype Y] := X → Y
structure S {X Y : Type} [fintype X] [fintype Y] :=
(F : Parameterized X Y → set X)
Is that the kind of thing you want?
Patrick Lutz (Jan 12 2021 at 05:41):
This also works (and is not really any different from what I posted previously)
import data.fintype.basic
variables (X Y : Type) [fintype X] [fintype Y]
def Parameterized := X → Y
variables {X Y}
structure S :=
(F : Parameterized X Y → set X)
Patrick Lutz (Jan 12 2021 at 05:44):
It may be easy to get confused when looking at mathlib for guidance as many files in mathlib have some line like variables (X Y : Type) [fintype X] [fintype Y]
somewhere high up in the file: this line means that essentially every lemma/def/whatever later in the file also has the arguments (X Y : Type) [fintype X] [fintype Y]
without having to write them explicitly. But this means that if you just look at one def or lemma statement later in the file you might be effectively missing part of the statement because you haven't looked at the line(s) in the file where various variables are declared
Last updated: Dec 20 2023 at 11:08 UTC