internlm/Lean-Github huggingface dataset:
Theorem: Set.inter_pure
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.15184
γ : ?m.15187
a : α
s : Set α
x : α
⊢ x ∈ Set.pureIf a (a ∈ s) → x ∈ s.inter (Set.pure a)
Tactic:
intro ⟨rfl, hs⟩
Proof state after:
case a.mpr
α : Sort u_1
β : ?m.15184
γ : ?m.15187
a : α
s : Set α
x : α
hs : x ∈ s
⊢ x ∈ s.inter (Set.pure x)
Theorem: Set.inter_pure
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.15184
γ : ?m.15187
a : α
s : Set α
x : α
hs : x ∈ s
⊢ x ∈ s.inter (Set.pure x)
Tactic:
refine ⟨hs, rfl⟩
Proof state after:
no goals
Theorem: Set.pureIf_inter
Proof state before:
α : Sort u_1
β : ?m.15973
γ : ?m.15976
a : α
p : Prop
s : Set α
⊢ (Set.pureIf a p).inter s = Set.pureIf a (p ∧ a ∈ s)
Tactic:
apply Set.ext
Proof state after:
case a
α : Sort u_1
β : ?m.15973
γ : ?m.15976
a : α
p : Prop
s : Set α
⊢ ∀ (x : α), x ∈ (Set.pureIf a p).inter s ↔ x ∈ Set.pureIf a (p ∧ a ∈ s)
Theorem: Set.pureIf_inter
Proof state before:
case a
α : Sort u_1
β : ?m.15973
γ : ?m.15976
a : α
p : Prop
s : Set α
⊢ ∀ (x : α), x ∈ (Set.pureIf a p).inter s ↔ x ∈ Set.pureIf a (p ∧ a ∈ s)
Tactic:
intro x
Proof state after:
case a
α : Sort u_1
β : ?m.15973
γ : ?m.15976
a : α
p : Prop
s : Set α
x : α
⊢ x ∈ (Set.pureIf a p).inter s ↔ x ∈ Set.pureIf a (p ∧ a ∈ s)
Theorem: Set.pureIf_inter
Proof state before:
case a
α : Sort u_1
β : ?m.15973
γ : ?m.15976
a : α
p : Prop
s : Set α
x : α
⊢ x ∈ (Set.pureIf a p).inter s ↔ x ∈ Set.pureIf a (p ∧ a ∈ s)
Tactic:
constructor
Proof state after:
case a.mp
α : Sort u_1
β : ?m.15973
γ : ?m.15976
a : α
p : Prop
s : Set α
x : α
⊢ x ∈ (Set.pureIf a p).inter s → x ∈ Set.pureIf a (p ∧ a ∈ s)

case a.mpr
α : Sort u_1
β : ?m.15973
γ : ?m.15976
a : α
p : Prop
s : Set α
x : α
⊢ x ∈ Set.pureIf a (p ∧ a ∈ s) → x ∈ (Set.pureIf a p).inter s
Theorem: Set.pureIf_inter
Proof state before:
case a.mp
α : Sort u_1
β : ?m.15973
γ : ?m.15976
a : α
p : Prop
s : Set α
x : α
⊢ x ∈ (Set.pureIf a p).inter s → x ∈ Set.pureIf a (p ∧ a ∈ s)
Tactic:
intro ⟨⟨rfl, hp⟩, hs⟩
Proof state after:
case a.mp
α : Sort u_1
β : ?m.15973
γ : ?m.15976
a : α
p : Prop
s : Set α
x : α
hp : p
hs : x ∈ s
⊢ x ∈ Set.pureIf x (p ∧ x ∈ s)
Theorem: Set.pureIf_inter
Proof state before:
case a.mp
α : Sort u_1
β : ?m.15973
γ : ?m.15976
a : α
p : Prop
s : Set α
x : α
hp : p
hs : x ∈ s
⊢ x ∈ Set.pureIf x (p ∧ x ∈ s)
Tactic:
refine ⟨rfl, ⟨hp, hs⟩⟩
Proof state after:
no goals
Theorem: Set.pureIf_inter
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.15973
γ : ?m.15976
a : α
p : Prop
s : Set α
x : α
⊢ x ∈ Set.pureIf a (p ∧ a ∈ s) → x ∈ (Set.pureIf a p).inter s
Tactic:
intro ⟨rfl, ⟨hp, hs⟩⟩
Proof state after:
case a.mpr
α : Sort u_1
β : ?m.15973
γ : ?m.15976
a : α
p : Prop
s : Set α
x : α
hp : p
hs : x ∈ s
⊢ x ∈ (Set.pureIf x p).inter s
Theorem: Set.pureIf_inter
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.15973
γ : ?m.15976
a : α
p : Prop
s : Set α
x : α
hp : p
hs : x ∈ s
⊢ x ∈ (Set.pureIf x p).inter s
Tactic:
refine ⟨⟨rfl, hp⟩, hs⟩
Proof state after:
no goals
Theorem: Set.inter_pureIf
Proof state before:
α : Sort u_1
β : ?m.16894
γ : ?m.16897
a : α
p : Prop
s : Set α
⊢ s.inter (Set.pureIf a p) = Set.pureIf a (p ∧ a ∈ s)
Tactic:
apply Set.ext
Proof state after:
case a
α : Sort u_1
β : ?m.16894
γ : ?m.16897
a : α
p : Prop
s : Set α
⊢ ∀ (x : α), x ∈ s.inter (Set.pureIf a p) ↔ x ∈ Set.pureIf a (p ∧ a ∈ s)
Theorem: Set.inter_pureIf
Proof state before:
case a
α : Sort u_1
β : ?m.16894
γ : ?m.16897
a : α
p : Prop
s : Set α
⊢ ∀ (x : α), x ∈ s.inter (Set.pureIf a p) ↔ x ∈ Set.pureIf a (p ∧ a ∈ s)
Tactic:
intro x
Proof state after:
case a
α : Sort u_1
β : ?m.16894
γ : ?m.16897
a : α
p : Prop
s : Set α
x : α
⊢ x ∈ s.inter (Set.pureIf a p) ↔ x ∈ Set.pureIf a (p ∧ a ∈ s)
Theorem: Set.inter_pureIf
Proof state before:
case a
α : Sort u_1
β : ?m.16894
γ : ?m.16897
a : α
p : Prop
s : Set α
x : α
⊢ x ∈ s.inter (Set.pureIf a p) ↔ x ∈ Set.pureIf a (p ∧ a ∈ s)
Tactic:
constructor
Proof state after:
case a.mp
α : Sort u_1
β : ?m.16894
γ : ?m.16897
a : α
p : Prop
s : Set α
x : α
⊢ x ∈ s.inter (Set.pureIf a p) → x ∈ Set.pureIf a (p ∧ a ∈ s)

case a.mpr
α : Sort u_1
β : ?m.16894
γ : ?m.16897
a : α
p : Prop
s : Set α
x : α
⊢ x ∈ Set.pureIf a (p ∧ a ∈ s) → x ∈ s.inter (Set.pureIf a p)
Theorem: Set.inter_pureIf
Proof state before:
case a.mp
α : Sort u_1
β : ?m.16894
γ : ?m.16897
a : α
p : Prop
s : Set α
x : α
⊢ x ∈ s.inter (Set.pureIf a p) → x ∈ Set.pureIf a (p ∧ a ∈ s)
Tactic:
intro ⟨hs, rfl, hp⟩
Proof state after:
case a.mp
α : Sort u_1
β : ?m.16894
γ : ?m.16897
a : α
p : Prop
s : Set α
x : α
hs : x ∈ s
hp : p
⊢ x ∈ Set.pureIf x (p ∧ x ∈ s)
Theorem: Set.inter_pureIf
Proof state before:
case a.mp
α : Sort u_1
β : ?m.16894
γ : ?m.16897
a : α
p : Prop
s : Set α
x : α
hs : x ∈ s
hp : p
⊢ x ∈ Set.pureIf x (p ∧ x ∈ s)
Tactic:
refine ⟨rfl, hp, hs⟩
Proof state after:
no goals
Theorem: Set.inter_pureIf
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.16894
γ : ?m.16897
a : α
p : Prop
s : Set α
x : α
⊢ x ∈ Set.pureIf a (p ∧ a ∈ s) → x ∈ s.inter (Set.pureIf a p)
Tactic:
intro ⟨rfl, hp, hs⟩
Proof state after:
case a.mpr
α : Sort u_1
β : ?m.16894
γ : ?m.16897
a : α
p : Prop
s : Set α
x : α
hp : p
hs : x ∈ s
⊢ x ∈ s.inter (Set.pureIf x p)
Theorem: Set.inter_pureIf
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.16894
γ : ?m.16897
a : α
p : Prop
s : Set α
x : α
hp : p
hs : x ∈ s
⊢ x ∈ s.inter (Set.pureIf x p)
Tactic:
refine ⟨hs, rfl, hp⟩
Proof state after:
no goals
Theorem: Set.union_idem
Proof state before:
α : Sort u_1
β : ?m.17810
γ : ?m.17813
s : Set α
⊢ s.union s = s
Tactic:
apply Set.ext
Proof state after:
case a
α : Sort u_1
β : ?m.17810
γ : ?m.17813
s : Set α
⊢ ∀ (x : α), x ∈ s.union s ↔ x ∈ s
Theorem: Set.union_idem
Proof state before:
case a
α : Sort u_1
β : ?m.17810
γ : ?m.17813
s : Set α
⊢ ∀ (x : α), x ∈ s.union s ↔ x ∈ s
Tactic:
intro x
Proof state after:
case a
α : Sort u_1
β : ?m.17810
γ : ?m.17813
s : Set α
x : α
⊢ x ∈ s.union s ↔ x ∈ s
Theorem: Set.union_idem
Proof state before:
case a
α : Sort u_1
β : ?m.17810
γ : ?m.17813
s : Set α
x : α
⊢ x ∈ s.union s ↔ x ∈ s
Tactic:
constructor
Proof state after:
case a.mp
α : Sort u_1
β : ?m.17810
γ : ?m.17813
s : Set α
x : α
⊢ x ∈ s.union s → x ∈ s

case a.mpr
α : Sort u_1
β : ?m.17810
γ : ?m.17813
s : Set α
x : α
⊢ x ∈ s → x ∈ s.union s
Theorem: Set.union_idem
Proof state before:
case a.mp
α : Sort u_1
β : ?m.17810
γ : ?m.17813
s : Set α
x : α
⊢ x ∈ s.union s → x ∈ s
Tactic:
open Or in intro
| inl hs => exact hs
| inr hs => exact hs
Proof state after:
no goals
Theorem: Set.union_idem
Proof state before:
case a.mp
α : Sort u_1
β : ?m.17810
γ : ?m.17813
s : Set α
x : α
⊢ x ∈ s.union s → x ∈ s
Tactic:
intro
| inl hs => exact hs
| inr hs => exact hs
Proof state after:
no goals
Theorem: Set.union_idem
Proof state before:
α : Sort u_1
β : ?m.17810
γ : ?m.17813
s : Set α
x : α
x✝ : x ∈ s.union s
hs : x ∈ s
⊢ x ∈ s
Tactic:
exact hs
Proof state after:
no goals
Theorem: Set.union_idem
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.17810
γ : ?m.17813
s : Set α
x : α
⊢ x ∈ s → x ∈ s.union s
Tactic:
intro hs
Proof state after:
case a.mpr
α : Sort u_1
β : ?m.17810
γ : ?m.17813
s : Set α
x : α
hs : x ∈ s
⊢ x ∈ s.union s
Theorem: Set.union_idem
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.17810
γ : ?m.17813
s : Set α
x : α
hs : x ∈ s
⊢ x ∈ s.union s
Tactic:
left
Proof state after:
case a.mpr.h
α : Sort u_1
β : ?m.17810
γ : ?m.17813
s : Set α
x : α
hs : x ∈ s
⊢ x ∈ s
Theorem: Set.union_idem
Proof state before:
case a.mpr.h
α : Sort u_1
β : ?m.17810
γ : ?m.17813
s : Set α
x : α
hs : x ∈ s
⊢ x ∈ s
Tactic:
exact hs
Proof state after:
no goals
Theorem: Set.union_comm
Proof state before:
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
⊢ s.union t = t.union s
Tactic:
apply Set.ext
Proof state after:
case a
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
⊢ ∀ (x : α), x ∈ s.union t ↔ x ∈ t.union s
Theorem: Set.union_comm
Proof state before:
case a
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
⊢ ∀ (x : α), x ∈ s.union t ↔ x ∈ t.union s
Tactic:
intro x
Proof state after:
case a
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
⊢ x ∈ s.union t ↔ x ∈ t.union s
Theorem: Set.union_comm
Proof state before:
case a
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
⊢ x ∈ s.union t ↔ x ∈ t.union s
Tactic:
constructor
Proof state after:
case a.mp
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
⊢ x ∈ s.union t → x ∈ t.union s

case a.mpr
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
⊢ x ∈ t.union s → x ∈ s.union t
Theorem: Set.union_comm
Proof state before:
case a.mp
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
⊢ x ∈ s.union t → x ∈ t.union s
Tactic:
open Or in intro
| inl hs => right; exact hs
| inr ht => left; exact ht
Proof state after:
no goals
Theorem: Set.union_comm
Proof state before:
case a.mp
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
⊢ x ∈ s.union t → x ∈ t.union s
Tactic:
intro
| inl hs => right; exact hs
| inr ht => left; exact ht
Proof state after:
no goals
Theorem: Set.union_comm
Proof state before:
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
x✝ : x ∈ s.union t
hs : x ∈ s
⊢ x ∈ t.union s
Tactic:
right
Proof state after:
case h
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
x✝ : x ∈ s.union t
hs : x ∈ s
⊢ x ∈ s
Theorem: Set.union_comm
Proof state before:
case h
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
x✝ : x ∈ s.union t
hs : x ∈ s
⊢ x ∈ s
Tactic:
exact hs
Proof state after:
no goals
Theorem: Set.union_comm
Proof state before:
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
x✝ : x ∈ s.union t
ht : x ∈ t
⊢ x ∈ t.union s
Tactic:
left
Proof state after:
case h
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
x✝ : x ∈ s.union t
ht : x ∈ t
⊢ x ∈ t
Theorem: Set.union_comm
Proof state before:
case h
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
x✝ : x ∈ s.union t
ht : x ∈ t
⊢ x ∈ t
Tactic:
exact ht
Proof state after:
no goals
Theorem: Set.union_comm
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
⊢ x ∈ t.union s → x ∈ s.union t
Tactic:
open Or in intro
| inl ht => right; exact ht
| inr hs => left; exact hs
Proof state after:
no goals
Theorem: Set.union_comm
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
⊢ x ∈ t.union s → x ∈ s.union t
Tactic:
intro
| inl ht => right; exact ht
| inr hs => left; exact hs
Proof state after:
no goals
Theorem: Set.union_comm
Proof state before:
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
x✝ : x ∈ t.union s
ht : x ∈ t
⊢ x ∈ s.union t
Tactic:
right
Proof state after:
case h
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
x✝ : x ∈ t.union s
ht : x ∈ t
⊢ x ∈ t
Theorem: Set.union_comm
Proof state before:
case h
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
x✝ : x ∈ t.union s
ht : x ∈ t
⊢ x ∈ t
Tactic:
exact ht
Proof state after:
no goals
Theorem: Set.union_comm
Proof state before:
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
x✝ : x ∈ t.union s
hs : x ∈ s
⊢ x ∈ s.union t
Tactic:
left
Proof state after:
case h
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
x✝ : x ∈ t.union s
hs : x ∈ s
⊢ x ∈ s
Theorem: Set.union_comm
Proof state before:
case h
α : Sort u_1
β : ?m.17966
γ : ?m.17969
s t : Set α
x : α
x✝ : x ∈ t.union s
hs : x ∈ s
⊢ x ∈ s
Tactic:
exact hs
Proof state after:
no goals
Theorem: Set.union_assoc
Proof state before:
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
⊢ (s.union t).union u = s.union (t.union u)
Tactic:
apply Set.ext
Proof state after:
case a
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
⊢ ∀ (x : α), x ∈ (s.union t).union u ↔ x ∈ s.union (t.union u)
Theorem: Set.union_assoc
Proof state before:
case a
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
⊢ ∀ (x : α), x ∈ (s.union t).union u ↔ x ∈ s.union (t.union u)
Tactic:
intro x
Proof state after:
case a
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
⊢ x ∈ (s.union t).union u ↔ x ∈ s.union (t.union u)
Theorem: Set.union_assoc
Proof state before:
case a
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
⊢ x ∈ (s.union t).union u ↔ x ∈ s.union (t.union u)
Tactic:
constructor
Proof state after:
case a.mp
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
⊢ x ∈ (s.union t).union u → x ∈ s.union (t.union u)

case a.mpr
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
⊢ x ∈ s.union (t.union u) → x ∈ (s.union t).union u
Theorem: Set.union_assoc
Proof state before:
case a.mp
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
⊢ x ∈ (s.union t).union u → x ∈ s.union (t.union u)
Tactic:
open Or in intro
| inl (inl hs) => exact inl hs
| inl (inr ht) => exact inr (inl ht)
| inr hu => exact inr (inr hu)
Proof state after:
no goals
Theorem: Set.union_assoc
Proof state before:
case a.mp
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
⊢ x ∈ (s.union t).union u → x ∈ s.union (t.union u)
Tactic:
intro
| inl (inl hs) => exact inl hs
| inl (inr ht) => exact inr (inl ht)
| inr hu => exact inr (inr hu)
Proof state after:
no goals
Theorem: Set.union_assoc
Proof state before:
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
x✝ : x ∈ (s.union t).union u
hs : x ∈ s
⊢ x ∈ s.union (t.union u)
Tactic:
exact inl hs
Proof state after:
no goals
Theorem: Set.union_assoc
Proof state before:
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
x✝ : x ∈ (s.union t).union u
ht : x ∈ t
⊢ x ∈ s.union (t.union u)
Tactic:
exact inr (inl ht)
Proof state after:
no goals
Theorem: Set.union_assoc
Proof state before:
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
x✝ : x ∈ (s.union t).union u
hu : x ∈ u
⊢ x ∈ s.union (t.union u)
Tactic:
exact inr (inr hu)
Proof state after:
no goals
Theorem: Set.union_assoc
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
⊢ x ∈ s.union (t.union u) → x ∈ (s.union t).union u
Tactic:
open Or in intro
| inl hs => left; left; exact hs
| inr (inl ht) => left; right; exact ht
| inr (inr hu) => right; exact hu
Proof state after:
no goals
Theorem: Set.union_assoc
Proof state before:
case a.mpr
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
⊢ x ∈ s.union (t.union u) → x ∈ (s.union t).union u
Tactic:
intro
| inl hs => left; left; exact hs
| inr (inl ht) => left; right; exact ht
| inr (inr hu) => right; exact hu
Proof state after:
no goals
Theorem: Set.union_assoc
Proof state before:
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
x✝ : x ∈ s.union (t.union u)
hs : x ∈ s
⊢ x ∈ (s.union t).union u
Tactic:
left
Proof state after:
case h
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
x✝ : x ∈ s.union (t.union u)
hs : x ∈ s
⊢ x ∈ s.union t
Theorem: Set.union_assoc
Proof state before:
case h
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
x✝ : x ∈ s.union (t.union u)
hs : x ∈ s
⊢ x ∈ s.union t
Tactic:
left
Proof state after:
case h.h
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
x✝ : x ∈ s.union (t.union u)
hs : x ∈ s
⊢ x ∈ s
Theorem: Set.union_assoc
Proof state before:
case h.h
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
x✝ : x ∈ s.union (t.union u)
hs : x ∈ s
⊢ x ∈ s
Tactic:
exact hs
Proof state after:
no goals
Theorem: Set.union_assoc
Proof state before:
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
x✝ : x ∈ s.union (t.union u)
ht : x ∈ t
⊢ x ∈ (s.union t).union u
Tactic:
left
Proof state after:
case h
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
x✝ : x ∈ s.union (t.union u)
ht : x ∈ t
⊢ x ∈ s.union t
Theorem: Set.union_assoc
Proof state before:
case h
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
x✝ : x ∈ s.union (t.union u)
ht : x ∈ t
⊢ x ∈ s.union t
Tactic:
right
Proof state after:
case h.h
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
x✝ : x ∈ s.union (t.union u)
ht : x ∈ t
⊢ x ∈ t
Theorem: Set.union_assoc
Proof state before:
case h.h
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
x✝ : x ∈ s.union (t.union u)
ht : x ∈ t
⊢ x ∈ t
Tactic:
exact ht
Proof state after:
no goals
Theorem: Set.union_assoc
Proof state before:
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
x✝ : x ∈ s.union (t.union u)
hu : x ∈ u
⊢ x ∈ (s.union t).union u
Tactic:
right
Proof state after:
case h
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
x✝ : x ∈ s.union (t.union u)
hu : x ∈ u
⊢ x ∈ u
Theorem: Set.union_assoc
Proof state before:
case h
α : Sort u_1
β : ?m.18244
γ : ?m.18247
s t u : Set α
x : α
x✝ : x ∈ s.union (t.union u)
hu : x ∈ u
⊢ x ∈ u
Tactic:
exact hu
Proof state after:
no goals
Theorem: Set.union_map
Proof state before:
α : Sort u_1
β : Sort u_2
γ : ?m.18682
f : α → β
s t : Set α
⊢ Set.map f (s.union t) = (Set.map f s).union (Set.map f t)
Tactic:
apply Set.ext
Proof state after:
case a
α : Sort u_1
β : Sort u_2
γ : ?m.18682
f : α → β
s t : Set α
⊢ ∀ (x : β), x ∈ Set.map f (s.union t) ↔ x ∈ (Set.map f s).union (Set.map f t)
Theorem: Set.union_map
Proof state before:
case a
α : Sort u_1
β : Sort u_2
γ : ?m.18682
f : α → β
s t : Set α
⊢ ∀ (x : β), x ∈ Set.map f (s.union t) ↔ x ∈ (Set.map f s).union (Set.map f t)
Tactic:
intro y
Proof state after:
case a
α : Sort u_1
β : Sort u_2
γ : ?m.18682
f : α → β
s t : Set α
y : β
⊢ y ∈ Set.map f (s.union t) ↔ y ∈ (Set.map f s).union (Set.map f t)
Theorem: Set.union_map
Proof state before:
case a
α : Sort u_1
β : Sort u_2
γ : ?m.18682
f : α → β
s t : Set α
y : β
⊢ y ∈ Set.map f (s.union t) ↔ y ∈ (Set.map f s).union (Set.map f t)
Tactic:
constructor
Proof state after:
case a.mp
α : Sort u_1
β : Sort u_2
γ : ?m.18682
f : α → β
s t : Set α
y : β
⊢ y ∈ Set.map f (s.union t) → y ∈ (Set.map f s).union (Set.map f t)

case a.mpr
α : Sort u_1
β : Sort u_2
γ : ?m.18682
f : α → β
s t : Set α
y : β
⊢ y ∈ (Set.map f s).union (Set.map f t) → y ∈ Set.map f (s.union t)
Theorem: Set.union_map
Proof state before:
case a.mp
α : Sort u_1
β : Sort u_2
γ : ?m.18682
f : α → β
s t : Set α
y : β
⊢ y ∈ Set.map f (s.union t) → y ∈ (Set.map f s).union (Set.map f t)
Tactic:
open Or in intro
| ⟨x, inl hs, h⟩ => left; refine ⟨x, hs, h⟩
| ⟨x, inr ht, h⟩ => right; refine ⟨x, ht, h⟩
Proof state after:
no goals
Theorem: Set.union_map
Proof state before:
case a.mp
α : Sort u_1
β : Sort u_2
γ : ?m.18682
f : α → β
s t : Set α
y : β
⊢ y ∈ Set.map f (s.union t) → y ∈ (Set.map f s).union (Set.map f t)
Tactic:
intro
| ⟨x, inl hs, h⟩ => left; refine ⟨x, hs, h⟩
| ⟨x, inr ht, h⟩ => right; refine ⟨x, ht, h⟩
Proof state after:
no goals
Theorem: Set.union_map
Proof state before:
α : Sort u_1
β : Sort u_2
γ : ?m.18682
f : α → β
s t : Set α
y : β
x✝ : y ∈ Set.map f (s.union t)
x : α
hs : x ∈ s
h : f x = y
⊢ y ∈ (Set.map f s).union (Set.map f t)
Tactic:
left
Proof state after:
case h
α : Sort u_1
β : Sort u_2
γ : ?m.18682
f : α → β
s t : Set α
y : β
x✝ : y ∈ Set.map f (s.union t)
x : α
hs : x ∈ s
h : f x = y
⊢ y ∈ Set.map f s
Theorem: Set.union_map
Proof state before:
case h
α : Sort u_1
β : Sort u_2
γ : ?m.18682
f : α → β
s t : Set α
y : β
x✝ : y ∈ Set.map f (s.union t)
x : α
hs : x ∈ s
h : f x = y
⊢ y ∈ Set.map f s
Tactic:
refine ⟨x, hs, h⟩
Proof state after:
no goals
Theorem: Set.union_map
Proof state before:
α : Sort u_1
β : Sort u_2
γ : ?m.18682
f : α → β
s t : Set α
y : β
x✝ : y ∈ Set.map f (s.union t)
x : α
ht : x ∈ t
h : f x = y
⊢ y ∈ (Set.map f s).union (Set.map f t)
Tactic:
right
Proof state after:
case h
α : Sort u_1
β : Sort u_2
γ : ?m.18682
f : α → β
s t : Set α
y : β
x✝ : y ∈ Set.map f (s.union t)
x : α
ht : x ∈ t
h : f x = y
⊢ y ∈ Set.map f t
Theorem: Set.union_map
Proof state before:
case h
α : Sort u_1
β : Sort u_2
γ : ?m.18682
f : α → β
s t : Set α
y : β
x✝ : y ∈ Set.map f (s.union t)
x : α
ht : x ∈ t
h : f x = y
⊢ y ∈ Set.map f t
Tactic:
refine ⟨x, ht, h⟩
Proof state after:
no goals
Theorem: Set.union_map
Proof state before:
case a.mpr
α : Sort u_1
β : Sort u_2
γ : ?m.18682
f : α → β
s t : Set α
y : β
⊢ y ∈ (Set.map f s).union (Set.map f t) → y ∈ Set.map f (s.union t)
Tactic:
open Or in intro
| inl ⟨x, hs, h⟩ => refine ⟨x, inl hs, h⟩
| inr ⟨x, ht, h⟩ => refine ⟨x, inr ht, h⟩
Proof state after:
no goals
Theorem: Set.union_map
Proof state before:
case a.mpr
α : Sort u_1
β : Sort u_2
γ : ?m.18682
f : α → β
s t : Set α
y : β
⊢ y ∈ (Set.map f s).union (Set.map f t) → y ∈ Set.map f (s.union t)
Tactic:
intro
| inl ⟨x, hs, h⟩ => refine ⟨x, inl hs, h⟩
| inr ⟨x, ht, h⟩ => refine ⟨x, inr ht, h⟩
Proof state after:
no goals
Theorem: Set.union_map
Proof state before:
α : Sort u_1
β : Sort u_2
γ : ?m.18682
f : α → β
s t : Set α
y : β
x✝ : y ∈ (Set.map f s).union (Set.map f t)
x : α
hs : x ∈ s
h : f x = y
⊢ y ∈ Set.map f (s.union t)
Tactic:
refine ⟨x, inl hs, h⟩
Proof state after:
no goals
Theorem: Set.union_map
Proof state before:
α : Sort u_1
β : Sort u_2
γ : ?m.18682
f : α → β
s t : Set α
y : β
x✝ : y ∈ (Set.map f s).union (Set.map f t)
x : α
ht : x ∈ t
h : f x = y
⊢ y ∈ Set.map f (s.union t)
Tactic:
refine ⟨x, inr ht, h⟩
Proof state after:
no goals
Theorem: Set.union_bind
Proof state before:
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
⊢ (s.union t).bind f = (s.bind f).union (t.bind f)
Tactic:
apply Set.ext
Proof state after:
case a
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
⊢ ∀ (x : β), x ∈ (s.union t).bind f ↔ x ∈ (s.bind f).union (t.bind f)
Theorem: Set.union_bind
Proof state before:
case a
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
⊢ ∀ (x : β), x ∈ (s.union t).bind f ↔ x ∈ (s.bind f).union (t.bind f)
Tactic:
intro y
Proof state after:
case a
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
y : β
⊢ y ∈ (s.union t).bind f ↔ y ∈ (s.bind f).union (t.bind f)
Theorem: Set.union_bind
Proof state before:
case a
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
y : β
⊢ y ∈ (s.union t).bind f ↔ y ∈ (s.bind f).union (t.bind f)
Tactic:
constructor
Proof state after:
case a.mp
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
y : β
⊢ y ∈ (s.union t).bind f → y ∈ (s.bind f).union (t.bind f)

case a.mpr
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
y : β
⊢ y ∈ (s.bind f).union (t.bind f) → y ∈ (s.union t).bind f
Theorem: Set.union_bind
Proof state before:
case a.mp
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
y : β
⊢ y ∈ (s.union t).bind f → y ∈ (s.bind f).union (t.bind f)
Tactic:
open Or in intro
| ⟨x, inl hs, h⟩ => left; refine ⟨x, hs, h⟩
| ⟨x, inr ht, h⟩ => right; refine ⟨x, ht, h⟩
Proof state after:
no goals
Theorem: Set.union_bind
Proof state before:
case a.mp
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
y : β
⊢ y ∈ (s.union t).bind f → y ∈ (s.bind f).union (t.bind f)
Tactic:
intro
| ⟨x, inl hs, h⟩ => left; refine ⟨x, hs, h⟩
| ⟨x, inr ht, h⟩ => right; refine ⟨x, ht, h⟩
Proof state after:
no goals
Theorem: Set.union_bind
Proof state before:
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
y : β
x✝ : y ∈ (s.union t).bind f
x : α
hs : x ∈ s
h : y ∈ f x
⊢ y ∈ (s.bind f).union (t.bind f)
Tactic:
left
Proof state after:
case h
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
y : β
x✝ : y ∈ (s.union t).bind f
x : α
hs : x ∈ s
h : y ∈ f x
⊢ y ∈ s.bind f
Theorem: Set.union_bind
Proof state before:
case h
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
y : β
x✝ : y ∈ (s.union t).bind f
x : α
hs : x ∈ s
h : y ∈ f x
⊢ y ∈ s.bind f
Tactic:
refine ⟨x, hs, h⟩
Proof state after:
no goals
Theorem: Set.union_bind
Proof state before:
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
y : β
x✝ : y ∈ (s.union t).bind f
x : α
ht : x ∈ t
h : y ∈ f x
⊢ y ∈ (s.bind f).union (t.bind f)
Tactic:
right
Proof state after:
case h
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
y : β
x✝ : y ∈ (s.union t).bind f
x : α
ht : x ∈ t
h : y ∈ f x
⊢ y ∈ t.bind f
Theorem: Set.union_bind
Proof state before:
case h
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
y : β
x✝ : y ∈ (s.union t).bind f
x : α
ht : x ∈ t
h : y ∈ f x
⊢ y ∈ t.bind f
Tactic:
refine ⟨x, ht, h⟩
Proof state after:
no goals
Theorem: Set.union_bind
Proof state before:
case a.mpr
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
y : β
⊢ y ∈ (s.bind f).union (t.bind f) → y ∈ (s.union t).bind f
Tactic:
open Or in intro
| inl ⟨x, hs, h⟩ => refine ⟨x, inl hs, h⟩
| inr ⟨x, ht, h⟩ => refine ⟨x, inr ht, h⟩
Proof state after:
no goals