Theorem: Set.union_bind (GMLInit/Data/Set/Basic.lean)

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
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)

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
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)

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
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

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⟩
State after:
no goals

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⟩
State after:
no goals

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
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

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⟩
State after:
no goals

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
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

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⟩
State after:
no goals

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⟩
State after:
no goals

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:
intro
| inl ⟨x, hs, h⟩ => refine ⟨x, inl hs, h⟩
| inr ⟨x, ht, h⟩ => refine ⟨x, inr ht, h⟩
State after:
no goals

State before:
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
y : β
x✝ : y ∈ (s.bind f).union (t.bind f)
x : α
hs : x ∈ s
h : y ∈ f x
⊢ y ∈ (s.union t).bind f
Tactic:
refine ⟨x, inl hs, h⟩
State after:
no goals

State before:
α : Sort u_2
β : Sort u_1
γ : ?m.19374
f : α → Set β
s t : Set α
y : β
x✝ : y ∈ (s.bind f).union (t.bind f)
x : α
ht : x ∈ t
h : y ∈ f x
⊢ y ∈ (s.union t).bind f
Tactic:
refine ⟨x, inr ht, h⟩
State after:
no goals