Zulip Chat Archive
Stream: new members
Topic: Set membership with explicit constructor
ROCKY KAMEN-RUBIO (Jun 22 2020 at 17:22):
I'm back with another noob finset question.
MWE:
import tactic
import data.finset
variable P : Type*
example {p1 p2 p3 p : P} {h : p ∈ ({p1, p2} : finset P)} : p ∈ ({p1, p2, p3} : finset P) :=
begin
sorry,
end
More context:
I'm trying to simplify a more complex expression that a finset is a subset of the union/intersection of other finsets. All are defined explicitly, and I have equality/inequality expressions for every pair of elements. simp
reduces the larger set into a series of insert
expression, but that's it. Has anyone tried writing something like linarith
but for sets?
Kevin Buzzard (Jun 22 2020 at 17:24):
tidy
solves it.
Kevin Buzzard (Jun 22 2020 at 17:25):
simp * at *, tauto
also works
ROCKY KAMEN-RUBIO (Jun 22 2020 at 17:45):
Thank you! I always forget about tidy. That's fascinating that simp at h, simp,
behaves differently than simp * at *
.
Kevin Buzzard (Jun 22 2020 at 18:22):
For me, both simp at h, simp
and simp * at *
turn the local context into
P : Type u_1
_inst_1 : decidable_eq P
p1 : P
p2 : P
p3 : P
p : P
h : p = p1 ∨ p = p2
⊢ p = p1 ∨ p = p2 ∨ p = p3
ROCKY KAMEN-RUBIO (Jun 22 2020 at 18:29):
Kevin Buzzard said:
For me, both
simp at h, simp
andsimp * at *
turn the local context intoP : Type u_1 _inst_1 : decidable_eq P p1 : P p2 : P p3 : P p : P h : p = p1 ∨ p = p2 ⊢ p = p1 ∨ p = p2 ∨ p = p3
Interesting. Trying it again I'm getting the same behavior as you. Maybe my file is just getting too big. I've been careful not to leave any errors though.
Last updated: Dec 20 2023 at 11:08 UTC