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

State before:
α : Sort u_2
β : Sort u_1
γ : ?m.6556
a : α
f : α → Set β
⊢ (Set.pure a).bind f = f a
Tactic:
apply Set.ext
State after:
case a
α : Sort u_2
β : Sort u_1
γ : ?m.6556
a : α
f : α → Set β
⊢ ∀ (x : β), x ∈ (Set.pure a).bind f ↔ x ∈ f a

State before:
case a
α : Sort u_2
β : Sort u_1
γ : ?m.6556
a : α
f : α → Set β
⊢ ∀ (x : β), x ∈ (Set.pure a).bind f ↔ x ∈ f a
Tactic:
intro y
State after:
case a
α : Sort u_2
β : Sort u_1
γ : ?m.6556
a : α
f : α → Set β
y : β
⊢ y ∈ (Set.pure a).bind f ↔ y ∈ f a

State before:
case a
α : Sort u_2
β : Sort u_1
γ : ?m.6556
a : α
f : α → Set β
y : β
⊢ y ∈ (Set.pure a).bind f ↔ y ∈ f a
Tactic:
constructor
State after:
case a.mp
α : Sort u_2
β : Sort u_1
γ : ?m.6556
a : α
f : α → Set β
y : β
⊢ y ∈ (Set.pure a).bind f → y ∈ f a

case a.mpr
α : Sort u_2
β : Sort u_1
γ : ?m.6556
a : α
f : α → Set β
y : β
⊢ y ∈ f a → y ∈ (Set.pure a).bind f

State before:
case a.mp
α : Sort u_2
β : Sort u_1
γ : ?m.6556
a : α
f : α → Set β
y : β
⊢ y ∈ (Set.pure a).bind f → y ∈ f a
Tactic:
intro ⟨_, rfl, h⟩
State after:
case a.mp
α : Sort u_2
β : Sort u_1
γ : ?m.6556
a : α
f : α → Set β
y : β
h : y ∈ f a
⊢ y ∈ f a

State before:
case a.mp
α : Sort u_2
β : Sort u_1
γ : ?m.6556
a : α
f : α → Set β
y : β
h : y ∈ f a
⊢ y ∈ f a
Tactic:
exact h
State after:
no goals

State before:
case a.mpr
α : Sort u_2
β : Sort u_1
γ : ?m.6556
a : α
f : α → Set β
y : β
⊢ y ∈ f a → y ∈ (Set.pure a).bind f
Tactic:
intro h
State after:
case a.mpr
α : Sort u_2
β : Sort u_1
γ : ?m.6556
a : α
f : α → Set β
y : β
h : y ∈ f a
⊢ y ∈ (Set.pure a).bind f

State before:
case a.mpr
α : Sort u_2
β : Sort u_1
γ : ?m.6556
a : α
f : α → Set β
y : β
h : y ∈ f a
⊢ y ∈ (Set.pure a).bind f
Tactic:
refine ⟨a, rfl, h⟩
State after:
no goals