Theorem: Qpf.mem_supp
File: Mathlib/Data/QPF/Univariate/Basic.lean

tactic: rw [supp]
state_before: F : Type u → Type u
inst✝ : Functor F
q : Qpf F
α : Type u
x : F α
u : α
⊢ u ∈ supp x ↔ ∀ (a : (P F).A) (f : PFunctor.B (P F) a → α), abs { fst := a, snd := f } = x → u ∈ f '' univ

tactic: dsimp
state_before: F : Type u → Type u
inst✝ : Functor F
q : Qpf F
α : Type u
x : F α
u : α
⊢ u ∈ {y | ∀ ⦃p : α → Prop⦄, Liftp p x → p y} ↔
    ∀ (a : (P F).A) (f : PFunctor.B (P F) a → α), abs { fst := a, snd := f } = x → u ∈ f '' univ

tactic: constructor
state_before: F : Type u → Type u
inst✝ : Functor F
q : Qpf F
α : Type u
x : F α
u : α
⊢ (∀ ⦃p : α → Prop⦄, Liftp p x → p u) ↔
    ∀ (a : (P F).A) (f : PFunctor.B (P F) a → α), abs { fst := a, snd := f } = x → u ∈ f '' univ

tactic: intro h p
state_before: case mpr
F : Type u → Type u
inst✝ : Functor F
q : Qpf F
α : Type u
x : F α
u : α
⊢ (∀ (a : (P F).A) (f : PFunctor.B (P F) a → α), abs { fst := a, snd := f } = x → u ∈ f '' univ) →
    ∀ ⦃p : α → Prop⦄, Liftp p x → p u

tactic: rw [liftp_iff]
state_before: case mpr
F : Type u → Type u
inst✝ : Functor F
q : Qpf F
α : Type u
x : F α
u : α
h : ∀ (a : (P F).A) (f : PFunctor.B (P F) a → α), abs { fst := a, snd := f } = x → u ∈ f '' univ
p : α → Prop
⊢ Liftp p x → p u

tactic: rintro ⟨a, f, xeq, h'⟩
state_before: case mpr
F : Type u → Type u
inst✝ : Functor F
q : Qpf F
α : Type u
x : F α
u : α
h : ∀ (a : (P F).A) (f : PFunctor.B (P F) a → α), abs { fst := a, snd := f } = x → u ∈ f '' univ
p : α → Prop
⊢ (∃ a f, x = abs { fst := a, snd := f } ∧ ∀ (i : PFunctor.B (P F) a), p (f i)) → p u

tactic: rcases h a f xeq.symm with ⟨i, _, hi⟩
state_before: case mpr.intro.intro.intro
F : Type u → Type u
inst✝ : Functor F
q : Qpf F
α : Type u
x : F α
u : α
h : ∀ (a : (P F).A) (f : PFunctor.B (P F) a → α), abs { fst := a, snd := f } = x → u ∈ f '' univ
p : α → Prop
a : (P F).A
f : PFunctor.B (P F) a → α
xeq : x = abs { fst := a, snd := f }
h' : ∀ (i : PFunctor.B (P F) a), p (f i)
⊢ p u

tactic: rw [← hi]
state_before: case mpr.intro.intro.intro.intro.intro
F : Type u → Type u
inst✝ : Functor F
q : Qpf F
α : Type u
x : F α
u : α
h : ∀ (a : (P F).A) (f : PFunctor.B (P F) a → α), abs { fst := a, snd := f } = x → u ∈ f '' univ
p : α → Prop
a : (P F).A
f : PFunctor.B (P F) a → α
xeq : x = abs { fst := a, snd := f }
h' : ∀ (i : PFunctor.B (P F) a), p (f i)
i : PFunctor.B (P F) a
left✝ : i ∈ univ
hi : f i = u
⊢ p u

tactic: apply h'
state_before: case mpr.intro.intro.intro.intro.intro
F : Type u → Type u
inst✝ : Functor F
q : Qpf F
α : Type u
x : F α
u : α
h : ∀ (a : (P F).A) (f : PFunctor.B (P F) a → α), abs { fst := a, snd := f } = x → u ∈ f '' univ
p : α → Prop
a : (P F).A
f : PFunctor.B (P F) a → α
xeq : x = abs { fst := a, snd := f }
h' : ∀ (i : PFunctor.B (P F) a), p (f i)
i : PFunctor.B (P F) a
left✝ : i ∈ univ
hi : f i = u
⊢ p (f i)

tactic: intro h a f haf
state_before: case mp
F : Type u → Type u
inst✝ : Functor F
q : Qpf F
α : Type u
x : F α
u : α
⊢ (∀ ⦃p : α → Prop⦄, Liftp p x → p u) →
    ∀ (a : (P F).A) (f : PFunctor.B (P F) a → α), abs { fst := a, snd := f } = x → u ∈ f '' univ

tactic: have : Liftp (fun u => u ∈ f '' univ) x := by
  rw [liftp_iff]
  refine' ⟨a, f, haf.symm, fun i => mem_image_of_mem _ (mem_univ _)⟩
state_before: case mp
F : Type u → Type u
inst✝ : Functor F
q : Qpf F
α : Type u
x : F α
u : α
h : ∀ ⦃p : α → Prop⦄, Liftp p x → p u
a : (P F).A
f : PFunctor.B (P F) a → α
haf : abs { fst := a, snd := f } = x
⊢ u ∈ f '' univ

tactic: exact h this
state_before: case mp
F : Type u → Type u
inst✝ : Functor F
q : Qpf F
α : Type u
x : F α
u : α
h : ∀ ⦃p : α → Prop⦄, Liftp p x → p u
a : (P F).A
f : PFunctor.B (P F) a → α
haf : abs { fst := a, snd := f } = x
this : Liftp (fun u => u ∈ f '' univ) x
⊢ u ∈ f '' univ

tactic: rw [liftp_iff]
state_before: F : Type u → Type u
inst✝ : Functor F
q : Qpf F
α : Type u
x : F α
u : α
h : ∀ ⦃p : α → Prop⦄, Liftp p x → p u
a : (P F).A
f : PFunctor.B (P F) a → α
haf : abs { fst := a, snd := f } = x
⊢ Liftp (fun u => u ∈ f '' univ) x

tactic: refine' ⟨a, f, haf.symm, fun i => mem_image_of_mem _ (mem_univ _)⟩
state_before: F : Type u → Type u
inst✝ : Functor F
q : Qpf F
α : Type u
x : F α
u : α
h : ∀ ⦃p : α → Prop⦄, Liftp p x → p u
a : (P F).A
f : PFunctor.B (P F) a → α
haf : abs { fst := a, snd := f } = x
⊢ ∃ a_1 f_1, x = abs { fst := a_1, snd := f_1 } ∧ ∀ (i : PFunctor.B (P F) a_1), f_1 i ∈ f '' univ