Zulip Chat Archive

Stream: maths

Topic: finset from "finsubtype"


Paul van Wamelen (Jan 09 2021 at 21:58):

Is the following true?

import data.fintype.basic

example {α : Type*} {p : α  Prop} (h : fintype {x // p x}) :
   (s : finset α), s = { x | p x }

Kevin Buzzard (Jan 09 2021 at 22:06):

Yes. The stuff you're missing is in data.set.finite.

Kevin Buzzard (Jan 09 2021 at 22:07):

It's all noncomputable so it's somehow separated off.

Mario Carneiro (Jan 09 2021 at 22:07):

import data.fintype.basic
import data.set.finite

example {α : Type*} {p : α  Prop} (h : fintype {x // p x}) :
   (s : finset α), s = { x | p x } :=
set.finite.exists_finset_coe h

Kevin Buzzard (Jan 09 2021 at 22:11):

PS it's come to something when a mathematician has to check to see if a finite set is finite :-) I guess this is what Lean does to us. Type theory has some weird surprises :-/

Mario Carneiro (Jan 09 2021 at 22:11):

You can also do it without referencing finite:

import data.fintype.basic

example {α : Type*} {p : α  Prop} (h : fintype {x // p x}) :
   (s : finset α), s = { x | p x } :=
@set.to_finset _ _ h, @set.coe_to_finset _ _ h

Paul van Wamelen (Jan 10 2021 at 03:02):

Thank you!!


Last updated: Dec 20 2023 at 11:08 UTC