Theorem: PFunctor.supp_eq
File: Mathlib/Data/PFunctor/Univariate/Basic.lean

tactic: ext x
state_before: P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
⊢ supp ⟨a, f⟩ = f '' univ
state_after: case h
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
x : α
⊢ x ∈ supp ⟨a, f⟩ ↔ x ∈ f '' univ

tactic: simp only [supp, image_univ, mem_range, mem_setOf_eq]
state_before: case h
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
x : α
⊢ x ∈ supp ⟨a, f⟩ ↔ x ∈ f '' univ
state_after: case h
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
x : α
⊢ (∀ ⦃p : α → Prop⦄, Liftp p ⟨a, f⟩ → p x) ↔ ∃ y, f y = x

tactic: constructor <;> intro h
state_before: case h
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
x : α
⊢ (∀ ⦃p : α → Prop⦄, Liftp p ⟨a, f⟩ → p x) ↔ ∃ y, f y = x
state_after: case h.mp
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
x : α
h : ∀ ⦃p : α → Prop⦄, Liftp p ⟨a, f⟩ → p x
⊢ ∃ y, f y = x

case h.mpr
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
x : α
h : ∃ y, f y = x
⊢ ∀ ⦃p : α → Prop⦄, Liftp p ⟨a, f⟩ → p x

tactic: apply @h fun x => ∃ y : P.B a, f y = x
state_before: case h.mp
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
x : α
h : ∀ ⦃p : α → Prop⦄, Liftp p ⟨a, f⟩ → p x
⊢ ∃ y, f y = x
state_after: case h.mp
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
x : α
h : ∀ ⦃p : α → Prop⦄, Liftp p ⟨a, f⟩ → p x
⊢ Liftp (fun x => ∃ y, f y = x) ⟨a, f⟩

tactic: rw [liftp_iff']
state_before: case h.mp
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
x : α
h : ∀ ⦃p : α → Prop⦄, Liftp p ⟨a, f⟩ → p x
⊢ Liftp (fun x => ∃ y, f y = x) ⟨a, f⟩
state_after: case h.mp
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
x : α
h : ∀ ⦃p : α → Prop⦄, Liftp p ⟨a, f⟩ → p x
⊢ ∀ (i : P.B a), ∃ y, f y = f i

tactic: intro
state_before: case h.mp
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
x : α
h : ∀ ⦃p : α → Prop⦄, Liftp p ⟨a, f⟩ → p x
⊢ ∀ (i : P.B a), ∃ y, f y = f i
state_after: case h.mp
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
x : α
h : ∀ ⦃p : α → Prop⦄, Liftp p ⟨a, f⟩ → p x
i✝ : P.B a
⊢ ∃ y, f y = f i✝

tactic: exact ⟨_, rfl⟩
state_before: case h.mp
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
x : α
h : ∀ ⦃p : α → Prop⦄, Liftp p ⟨a, f⟩ → p x
i✝ : P.B a
⊢ ∃ y, f y = f i✝
state_after: no goals

tactic: simp only [liftp_iff']
state_before: case h.mpr
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
x : α
h : ∃ y, f y = x
⊢ ∀ ⦃p : α → Prop⦄, Liftp p ⟨a, f⟩ → p x
state_after: case h.mpr
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
x : α
h : ∃ y, f y = x
⊢ ∀ ⦃p : α → Prop⦄, (∀ (i : P.B a), p (f i)) → p x

tactic: cases h
state_before: case h.mpr
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
x : α
h : ∃ y, f y = x
⊢ ∀ ⦃p : α → Prop⦄, (∀ (i : P.B a), p (f i)) → p x
state_after: case h.mpr.intro
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
x : α
w✝ : P.B a
h✝ : f w✝ = x
⊢ ∀ ⦃p : α → Prop⦄, (∀ (i : P.B a), p (f i)) → p x

tactic: subst x
state_before: case h.mpr.intro
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
x : α
w✝ : P.B a
h✝ : f w✝ = x
⊢ ∀ ⦃p : α → Prop⦄, (∀ (i : P.B a), p (f i)) → p x
state_after: case h.mpr.intro
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
w✝ : P.B a
⊢ ∀ ⦃p : α → Prop⦄, (∀ (i : P.B a), p (f i)) → p (f w✝)

tactic: tauto
state_before: case h.mpr.intro
P : PFunctor.{u}
α : Type u
a : P.A
f : P.B a → α
w✝ : P.B a
⊢ ∀ ⦃p : α → Prop⦄, (∀ (i : P.B a), p (f i)) → p (f w✝)
state_after: no goals