Zulip Chat Archive
Stream: Is there code for X?
Topic: recovering from an `exists`
Scott Morrison (Jun 19 2020 at 14:12):
Is it possible to construct
example {α : Type} [fintype α] {P : α → Prop} [decidable_pred P] (h : ∃ a, P a) :
trunc (Σ' a, P a) :=
by looking through the elems
of the fintype
?
Reid Barton (Jun 19 2020 at 14:15):
I think so--basically use subsingleton-ness of trunc
to eliminate the quotient in fintype \a
to a list of elements
Reid Barton (Jun 19 2020 at 14:15):
then take the first element satisfying the predicate, which has to exist
Reid Barton (Jun 19 2020 at 14:16):
The form of your question seems slightly at odds with the stream it's posted in, though :upside_down:
Scott Morrison (Jun 19 2020 at 14:22):
Hm, okay. :-) I guess I have sometimes use "Is there code for X?" to also include "Does anyone want to proof / sketch for me X?"
Scott Morrison (Jun 19 2020 at 14:22):
Okay, I have a horrible proof now!
David Wärn (Jun 19 2020 at 16:31):
import data.fintype.basic
open finset
lemma trunc_of_nonempty_multiset {α} (s : multiset α) : (∃ x, x ∈ s) → trunc α :=
quotient.rec_on_subsingleton s $ λ l h,
match l, h with
| [], _ := false.elim (by tauto)
| (a :: _), _ := trunc.mk a
end
lemma trunc_of_nonempty_of_fintype {α} [fintype α] (h : nonempty α) : trunc α :=
trunc_of_nonempty_multiset univ.val (by simp)
example {α : Type} [fintype α] {P : α → Prop} [decidable_pred P] (h : ∃ a, P a) :
trunc (Σ' a, P a) :=
trunc_of_nonempty_of_fintype $ exists.elim h $ λ a ha, ⟨⟨a, ha⟩⟩
Scott Morrison (Jul 13 2020 at 00:59):
Just for the record this made it into mathlib as #3166, in data.fintype.basic
.
Mario Carneiro (Jul 13 2020 at 01:01):
Shouldn't this be using subtype
instead of Sigma'
?
Scott Morrison (Jul 13 2020 at 01:06):
Yes!
Scott Morrison (Jul 13 2020 at 01:06):
I'll get to it eventually. :-)
Last updated: Dec 20 2023 at 11:08 UTC