Zulip Chat Archive
Stream: general
Topic: easy finite set question
Kevin Buzzard (Apr 15 2018 at 02:37):
import data.set example (X Y : Type) (C : set X) (HC : set.finite C) (f : C → Y) : set.finite (set.range f) := sorry
Kevin Buzzard (Apr 15 2018 at 02:39):
I see fintype_range
, an instance proving that the range of a function with fintype domain is a fintype, but I have never worked with finite sets/types before. Should I be switching to and fro between finite sets and fintypes? Should I be letting type class inference and/or automation do the work for me? This stuff looks pretty easy in maths so hopefully isn't too painless here.
Kenny Lau (Apr 15 2018 at 02:47):
import data.set local attribute [instance] classical.prop_decidable example (X Y : Type) (C : set X) (HC : set.finite C) (f : C → Y) : set.finite (set.range f) := HC.rec $ λ HF, nonempty.intro $ @set.fintype_range _ _ _ f HF
Kenny Lau (Apr 15 2018 at 02:48):
import data.set local attribute [instance] classical.prop_decidable example (X Y : Type) (C : set X) (HC : set.finite C) (f : C → Y) : set.finite (set.range f) := let ⟨HF⟩ := HC in ⟨@set.fintype_range _ _ _ f HF⟩
Kenny Lau (Apr 15 2018 at 02:53):
import data.set local attribute [instance] classical.prop_decidable example (X Y : Type) (C : set X) (f : C → Y) : set.finite C → set.finite (set.range f) | ⟨HF⟩ := ⟨@set.fintype_range _ _ _ f HF⟩
Kevin Buzzard (Apr 15 2018 at 02:53):
Thanks Kenny. I have spent all evening reducing the statement that Spec(R) is compact to the case of covers by a basis ;-)
Kenny Lau (Apr 15 2018 at 02:53):
nice
Last updated: Dec 20 2023 at 11:08 UTC