Loogle!
Result
Found 93 declarations mentioning PFunctor.B.
- PFunctor.B 📋 Mathlib.Data.PFunctor.Univariate.Basic
(self : PFunctor.{uA, uB}) : self.A → Type uB - PFunctor.W.children 📋 Mathlib.Data.PFunctor.Univariate.Basic
{P : PFunctor.{uA, uB}} (x : P.W) : P.B x.head → P.W - PFunctor.Idx.inhabited 📋 Mathlib.Data.PFunctor.Univariate.Basic
(P : PFunctor.{uA, uB}) [Inhabited P.A] [Inhabited (P.B default)] : Inhabited P.Idx - PFunctor.liftp_iff' 📋 Mathlib.Data.PFunctor.Univariate.Basic
{P : PFunctor.{uA, uB}} {α : Type u} (p : α → Prop) (a : P.A) (f : P.B a → α) : Functor.Liftp p ⟨a, f⟩ ↔ ∀ (i : P.B a), p (f i) - PFunctor.fst_map 📋 Mathlib.Data.PFunctor.Univariate.Basic
{P : PFunctor.{uA, uB}} {α : Type v₁} {β : Type v₂} (x : ↑P α) (f : α → β) : (P.map f x).fst = x.fst - PFunctor.supp_eq 📋 Mathlib.Data.PFunctor.Univariate.Basic
{P : PFunctor.{uA, uB}} {α : Type u} (a : P.A) (f : P.B a → α) : Functor.supp ⟨a, f⟩ = f '' Set.univ - PFunctor.map_eq 📋 Mathlib.Data.PFunctor.Univariate.Basic
(P : PFunctor.{uA, uB}) {α : Type v₁} {β : Type v₂} (f : α → β) (a : P.A) (g : P.B a → α) : P.map f ⟨a, g⟩ = ⟨a, f ∘ g⟩ - PFunctor.liftp_iff 📋 Mathlib.Data.PFunctor.Univariate.Basic
{P : PFunctor.{uA, uB}} {α : Type u} (p : α → Prop) (x : ↑P α) : Functor.Liftp p x ↔ ∃ a f, x = ⟨a, f⟩ ∧ ∀ (i : P.B a), p (f i) - PFunctor.iget_map 📋 Mathlib.Data.PFunctor.Univariate.Basic
{P : PFunctor.{uA, uB}} {α : Type v₁} {β : Type v₂} [DecidableEq P.A] [Inhabited α] [Inhabited β] (x : ↑P α) (f : α → β) (i : P.Idx) (h : i.fst = x.fst) : (P.map f x).iget i = f (x.iget i) - PFunctor.liftr_iff 📋 Mathlib.Data.PFunctor.Univariate.Basic
{P : PFunctor.{uA, uB}} {α : Type u} (r : α → α → Prop) (x y : ↑P α) : Functor.Liftr r x y ↔ ∃ a f₀ f₁, x = ⟨a, f₀⟩ ∧ y = ⟨a, f₁⟩ ∧ ∀ (i : P.B a), r (f₀ i) (f₁ i) - MvPFunctor.appendContents 📋 Mathlib.Data.PFunctor.Multivariate.Basic
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u_1} n} {β : Type u_1} {a : P.A} (f' : (P.drop.B a).Arrow α) (f : P.last.B a → β) : (P.B a).Arrow (α ::: β) - PFunctor.M.children 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} (x : F.M) (i : F.B x.head) : F.M - PFunctor.Approx.CofixA.intro 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} {n : ℕ} (a : F.A) : (F.B a → PFunctor.Approx.CofixA F n) → PFunctor.Approx.CofixA F n.succ - PFunctor.Approx.children' 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} {n : ℕ} (x : PFunctor.Approx.CofixA F n.succ) : F.B (PFunctor.Approx.head' x) → PFunctor.Approx.CofixA F n - PFunctor.M.head_mk 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} (x : ↑F F.M) : (PFunctor.M.mk x).head = x.fst - PFunctor.M.casesOn' 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} {r : F.M → Sort w} (x : F.M) (f : (a : F.A) → (f : F.B a → F.M) → r (PFunctor.M.mk ⟨a, f⟩)) : r x - PFunctor.M.iselect_nil 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} [DecidableEq F.A] [Inhabited F.M] {a : F.A} (f : F.B a → F.M) : PFunctor.M.iselect [] (PFunctor.M.mk ⟨a, f⟩) = a - PFunctor.M.approx_mk 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} (a : F.A) (f : F.B a → F.M) (i : ℕ) : (PFunctor.M.mk ⟨a, f⟩).approx i.succ = PFunctor.Approx.CofixA.intro a fun j => (f j).approx i - PFunctor.M.isPath_cons' 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} {xs : PFunctor.Approx.Path F} {a : F.A} {f : F.B a → F.M} {i : F.B a} : PFunctor.M.IsPath (⟨a, i⟩ :: xs) (PFunctor.M.mk ⟨a, f⟩) → PFunctor.M.IsPath xs (f i) - PFunctor.M.isPath_cons 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} {xs : PFunctor.Approx.Path F} {a a' : F.A} {f : F.B a → F.M} {i : F.B a'} : PFunctor.M.IsPath (⟨a', i⟩ :: xs) (PFunctor.M.mk ⟨a, f⟩) → a = a' - PFunctor.M.IsPath.cons 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} (xs : PFunctor.Approx.Path F) {a : F.A} (x : F.M) (f : F.B a → F.M) (i : F.B a) : x = PFunctor.M.mk ⟨a, f⟩ → PFunctor.M.IsPath xs (f i) → PFunctor.M.IsPath (⟨a, i⟩ :: xs) x - PFunctor.M.IsBisimulation.head 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} {R : F.M → F.M → Prop} (self : PFunctor.M.IsBisimulation R) {a a' : F.A} {f : F.B a → F.M} {f' : F.B a' → F.M} : R (PFunctor.M.mk ⟨a, f⟩) (PFunctor.M.mk ⟨a', f'⟩) → a = a' - PFunctor.M.IsBisimulation.tail 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} {R : F.M → F.M → Prop} (self : PFunctor.M.IsBisimulation R) {a : F.A} {f f' : F.B a → F.M} : R (PFunctor.M.mk ⟨a, f⟩) (PFunctor.M.mk ⟨a, f'⟩) → ∀ (i : F.B a), R (f i) (f' i) - PFunctor.M.iselect_cons 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} [DecidableEq F.A] [Inhabited F.M] (ps : PFunctor.Approx.Path F) {a : F.A} (f : F.B a → F.M) {i : F.B a} : PFunctor.M.iselect (⟨a, i⟩ :: ps) (PFunctor.M.mk ⟨a, f⟩) = PFunctor.M.iselect ps (f i) - PFunctor.M.isubtree_cons 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} [DecidableEq F.A] [Inhabited F.M] (ps : PFunctor.Approx.Path F) {a : F.A} (f : F.B a → F.M) {i : F.B a} : PFunctor.M.isubtree (⟨a, i⟩ :: ps) (PFunctor.M.mk ⟨a, f⟩) = PFunctor.M.isubtree ps (f i) - PFunctor.Approx.Agree.intro 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} {n : ℕ} {a : F.A} (x : F.B a → PFunctor.Approx.CofixA F n) (x' : F.B a → PFunctor.Approx.CofixA F (n + 1)) : (∀ (i : F.B a), PFunctor.Approx.Agree (x i) (x' i)) → PFunctor.Approx.Agree (PFunctor.Approx.CofixA.intro a x) (PFunctor.Approx.CofixA.intro a x') - PFunctor.M.casesOn_mk' 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} {r : F.M → Sort u_2} {a : F.A} (x : F.B a → F.M) (f : (a : F.A) → (f : F.B a → F.M) → r (PFunctor.M.mk ⟨a, f⟩)) : (PFunctor.M.mk ⟨a, x⟩).casesOn' f = f a x - PFunctor.M.Agree'.step 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} {n : ℕ} {a : F.A} (x y : F.B a → F.M) {x' y' : F.M} : x' = PFunctor.M.mk ⟨a, x⟩ → y' = PFunctor.M.mk ⟨a, y⟩ → (∀ (i : F.B a), PFunctor.M.Agree' n (x i) (y i)) → PFunctor.M.Agree' n.succ x' y' - PFunctor.M.children_mk 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} {a : F.A} (x : F.B a → F.M) (i : F.B (PFunctor.M.mk ⟨a, x⟩).head) : (PFunctor.M.mk ⟨a, x⟩).children i = x (cast ⋯ i) - PFunctor.M.bisim 📋 Mathlib.Data.PFunctor.Univariate.M
{P : PFunctor.{uA, uB}} (R : P.M → P.M → Prop) (h : ∀ (x y : P.M), R x y → ∃ a f f', x.dest = ⟨a, f⟩ ∧ y.dest = ⟨a, f'⟩ ∧ ∀ (i : P.B a), R (f i) (f' i)) (x y : P.M) : R x y → x = y - PFunctor.M.bisim_equiv 📋 Mathlib.Data.PFunctor.Univariate.M
{P : PFunctor.{uA, uB}} (R : P.M → P.M → Prop) (h : ∀ (x y : P.M), R x y → ∃ a f f', x.dest = ⟨a, f⟩ ∧ y.dest = ⟨a, f'⟩ ∧ ∀ (i : P.B a), R (f i) (f' i)) (x y : P.M) : R x y → x = y - PFunctor.Approx.agree_children 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} {n : ℕ} (x : PFunctor.Approx.CofixA F n.succ) (y : PFunctor.Approx.CofixA F (n.succ + 1)) {i : F.B (PFunctor.Approx.head' x)} {j : F.B (PFunctor.Approx.head' y)} (h₀ : i ≍ j) (h₁ : PFunctor.Approx.Agree x y) : PFunctor.Approx.Agree (PFunctor.Approx.children' x i) (PFunctor.Approx.children' y j) - PFunctor.M.IsBisimulation.mk 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} {R : F.M → F.M → Prop} (head : ∀ {a a' : F.A} {f : F.B a → F.M} {f' : F.B a' → F.M}, R (PFunctor.M.mk ⟨a, f⟩) (PFunctor.M.mk ⟨a', f'⟩) → a = a') (tail : ∀ {a : F.A} {f f' : F.B a → F.M}, R (PFunctor.M.mk ⟨a, f⟩) (PFunctor.M.mk ⟨a, f'⟩) → ∀ (i : F.B a), R (f i) (f' i)) : PFunctor.M.IsBisimulation R - PFunctor.M.bisim' 📋 Mathlib.Data.PFunctor.Univariate.M
{P : PFunctor.{uA, uB}} {α : Type u_3} (Q : α → Prop) (u v : α → P.M) (h : ∀ (x : α), Q x → ∃ a f f', (u x).dest = ⟨a, f⟩ ∧ (v x).dest = ⟨a, f'⟩ ∧ ∀ (i : P.B a), ∃ x', Q x' ∧ f i = u x' ∧ f' i = v x') (x : α) : Q x → u x = v x - PFunctor.M.nth_of_bisim 📋 Mathlib.Data.PFunctor.Univariate.M
{F : PFunctor.{uA, uB}} (R : F.M → F.M → Prop) [Inhabited F.M] [DecidableEq F.A] (bisim : PFunctor.M.IsBisimulation R) (s₁ s₂ : F.M) (ps : PFunctor.Approx.Path F) : R s₁ s₂ → PFunctor.M.IsPath ps s₁ ∨ PFunctor.M.IsPath ps s₂ → PFunctor.M.iselect ps s₁ = PFunctor.M.iselect ps s₂ ∧ ∃ a f f', PFunctor.M.isubtree ps s₁ = PFunctor.M.mk ⟨a, f⟩ ∧ PFunctor.M.isubtree ps s₂ = PFunctor.M.mk ⟨a, f'⟩ ∧ ∀ (i : F.B a), R (f i) (f' i) - MvPFunctor.M.corecShape 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {β : Type v} (g₀ : β → P.A) (g₂ : (b : β) → P.last.B (g₀ b) → β) : β → P.last.M - MvPFunctor.M.corec' 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} {β : Type v} (g₀ : β → P.A) (g₁ : (b : β) → (P.drop.B (g₀ b)).Arrow α) (g₂ : (b : β) → P.last.B (g₀ b) → β) : β → P.M α - MvPFunctor.castLastB 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {a a' : P.A} (h : a = a') : P.last.B a → P.last.B a' - MvPFunctor.M.corecContents 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} {β : Type v} (g₀ : β → P.A) (g₁ : (b : β) → (P.drop.B (g₀ b)).Arrow α) (g₂ : (b : β) → P.last.B (g₀ b) → β) (x : P.last.M) (b : β) (h : x = MvPFunctor.M.corecShape P g₀ g₂ b) : TypeVec.Arrow (MvPFunctor.M.Path P x) α - MvPFunctor.M.Path.root 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} {P : MvPFunctor.{u} (n + 1)} (x : P.last.M) (a : P.A) (f : P.last.B a → P.last.M) (h : x.dest = ⟨a, f⟩) (i : Fin2 n) (c : P.drop.B a i) : MvPFunctor.M.Path P x i - MvPFunctor.M.pathDestLeft 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u_1} n} {x : P.last.M} {a : P.A} {f : P.last.B a → P.last.M} (h : x.dest = ⟨a, f⟩) (f' : TypeVec.Arrow (MvPFunctor.M.Path P x) α) : (P.drop.B a).Arrow α - MvPFunctor.M.Path.child 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} {P : MvPFunctor.{u} (n + 1)} (x : P.last.M) (a : P.A) (f : P.last.B a → P.last.M) (h : x.dest = ⟨a, f⟩) (j : P.last.B a) (i : Fin2 n) (c : MvPFunctor.M.Path P (f j) i) : MvPFunctor.M.Path P x i - MvPFunctor.M.pathDestRight 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u_1} n} {x : P.last.M} {a : P.A} {f : P.last.B a → P.last.M} (h : x.dest = ⟨a, f⟩) (f' : TypeVec.Arrow (MvPFunctor.M.Path P x) α) (j : P.last.B a) : TypeVec.Arrow (MvPFunctor.M.Path P (f j)) α - MvPFunctor.M.dest' 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} {x : P.last.M} {a : P.A} {f : P.last.B a → P.last.M} (h : x.dest = ⟨a, f⟩) (f' : TypeVec.Arrow (MvPFunctor.M.Path P x) α) : ↑P (α ::: P.M α) - MvPFunctor.M.dest_eq_dest' 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} {x : P.last.M} {a : P.A} {f : P.last.B a → P.last.M} (h : x.dest = ⟨a, f⟩) (f' : TypeVec.Arrow (MvPFunctor.M.Path P x) α) : MvPFunctor.M.dest P ⟨x, f'⟩ = MvPFunctor.M.dest' P h f' - MvPFunctor.M.dest'_eq_dest' 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} {x : P.last.M} {a₁ : P.A} {f₁ : P.last.B a₁ → P.last.M} (h₁ : x.dest = ⟨a₁, f₁⟩) {a₂ : P.A} {f₂ : P.last.B a₂ → P.last.M} (h₂ : x.dest = ⟨a₂, f₂⟩) (f' : TypeVec.Arrow (MvPFunctor.M.Path P x) α) : MvPFunctor.M.dest' P h₁ f' = MvPFunctor.M.dest' P h₂ f' - MvPFunctor.M.dest_corec' 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} {β : Type v} (g₀ : β → P.A) (g₁ : (b : β) → (P.drop.B (g₀ b)).Arrow α) (g₂ : (b : β) → P.last.B (g₀ b) → β) (x : β) : MvPFunctor.M.dest P (MvPFunctor.M.corec' P g₀ g₁ g₂ x) = ⟨g₀ x, TypeVec.splitFun (g₁ x) (MvPFunctor.M.corec' P g₀ g₁ g₂ ∘ g₂ x)⟩ - MvPFunctor.M.bisim_lemma 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} {a₁ : P.mp.A} {f₁ : (P.mp.B a₁).Arrow α} {a' : P.A} {f' : (P.B a').drop.Arrow α} {f₁' : (P.B a').last → P.M α} (e₁ : MvPFunctor.M.dest P ⟨a₁, f₁⟩ = ⟨a', TypeVec.splitFun f' f₁'⟩) : ∃ g₁', ∃ (e₁' : PFunctor.M.dest a₁ = ⟨a', g₁'⟩), f' = MvPFunctor.M.pathDestLeft P e₁' f₁ ∧ f₁' = fun x => ⟨g₁' x, MvPFunctor.M.pathDestRight P e₁' f₁ x⟩ - MvPFunctor.wMk 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} (a : P.A) (f' : (P.drop.B a).Arrow α) (f : P.last.B a → P.W α) : P.W α - MvPFunctor.wpMk 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} (a : P.A) (f : P.last.B a → P.last.W) (f' : TypeVec.Arrow (P.WPath (WType.mk a f)) α) : P.W α - MvPFunctor.wRec 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} {C : Sort u_1} (g : (a : P.A) → (P.drop.B a).Arrow α → (P.last.B a → P.W α) → (P.last.B a → C) → C) : P.W α → C - MvPFunctor.WPath.root 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} {P : MvPFunctor.{u} (n + 1)} (a : P.A) (f : P.last.B a → P.last.W) (i : Fin2 n) (c : P.drop.B a i) : P.WPath (WType.mk a f) i - MvPFunctor.objAppend1 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} {β : Type u} (a : P.A) (f' : (P.drop.B a).Arrow α) (f : P.last.B a → β) : ↑P (α ::: β) - MvPFunctor.wPathDestLeft 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u_1} n} {a : P.A} {f : P.last.B a → P.last.W} (h : TypeVec.Arrow (P.WPath (WType.mk a f)) α) : (P.drop.B a).Arrow α - MvPFunctor.WPath.child 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} {P : MvPFunctor.{u} (n + 1)} (a : P.A) (f : P.last.B a → P.last.W) (i : Fin2 n) (j : P.last.B a) (c : P.WPath (f j) i) : P.WPath (WType.mk a f) i - MvPFunctor.wCases 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} {C : P.W α → Sort v} (ih : (a : P.A) → (f' : (P.drop.B a).Arrow α) → (f : P.last.B a → P.W α) → C (P.wMk a f' f)) (x : P.W α) : C x - MvPFunctor.w_cases 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} {C : P.W α → Sort v} (ih : (a : P.A) → (f' : (P.drop.B a).Arrow α) → (f : P.last.B a → P.W α) → C (P.wMk a f' f)) (x : P.W α) : C x - MvPFunctor.wPathDestRight 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u_1} n} {a : P.A} {f : P.last.B a → P.last.W} (h : TypeVec.Arrow (P.WPath (WType.mk a f)) α) (j : P.last.B a) : TypeVec.Arrow (P.WPath (f j)) α - MvPFunctor.wInd 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} {C : P.W α → Sort v} (ih : (a : P.A) → (f' : (P.drop.B a).Arrow α) → (f : P.last.B a → P.W α) → ((i : P.last.B a) → C (f i)) → C (P.wMk a f' f)) (x : P.W α) : C x - MvPFunctor.w_ind 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} {C : P.W α → Sort v} (ih : (a : P.A) → (f' : (P.drop.B a).Arrow α) → (f : P.last.B a → P.W α) → ((i : P.last.B a) → C (f i)) → C (P.wMk a f' f)) (x : P.W α) : C x - MvPFunctor.wpRec 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u_2} n} {C : Sort u_1} (g : (a : P.A) → (f : P.last.B a → P.last.W) → TypeVec.Arrow (P.WPath (WType.mk a f)) α → (P.last.B a → C) → C) (x : P.last.W) : TypeVec.Arrow (P.WPath x) α → C - MvPFunctor.wPathCasesOn 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u_1} n} {a : P.A} {f : P.last.B a → P.last.W} (g' : (P.drop.B a).Arrow α) (g : (j : P.last.B a) → TypeVec.Arrow (P.WPath (f j)) α) : TypeVec.Arrow (P.WPath (WType.mk a f)) α - MvPFunctor.wPathDestLeft_wPathCasesOn 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u_1} n} {a : P.A} {f : P.last.B a → P.last.W} (g' : (P.drop.B a).Arrow α) (g : (j : P.last.B a) → TypeVec.Arrow (P.WPath (f j)) α) : P.wPathDestLeft (P.wPathCasesOn g' g) = g' - MvPFunctor.wPathDestRight_wPathCasesOn 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u_1} n} {a : P.A} {f : P.last.B a → P.last.W} (g' : (P.drop.B a).Arrow α) (g : (j : P.last.B a) → TypeVec.Arrow (P.WPath (f j)) α) : P.wPathDestRight (P.wPathCasesOn g' g) = g - MvPFunctor.wPathCasesOn_eta 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u_1} n} {a : P.A} {f : P.last.B a → P.last.W} (h : TypeVec.Arrow (P.WPath (WType.mk a f)) α) : P.wPathCasesOn (P.wPathDestLeft h) (P.wPathDestRight h) = h - MvPFunctor.wpInd 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u_1} n} {C : (x : P.last.W) → TypeVec.Arrow (P.WPath x) α → Sort v} (ih : (a : P.A) → (f : P.last.B a → P.last.W) → (f' : TypeVec.Arrow (P.WPath (WType.mk a f)) α) → ((i : P.last.B a) → C (f i) (P.wPathDestRight f' i)) → C (WType.mk a f) f') (x : P.last.W) (f' : TypeVec.Arrow (P.WPath x) α) : C x f' - MvPFunctor.wp_ind 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u_1} n} {C : (x : P.last.W) → TypeVec.Arrow (P.WPath x) α → Sort v} (ih : (a : P.A) → (f : P.last.B a → P.last.W) → (f' : TypeVec.Arrow (P.WPath (WType.mk a f)) α) → ((i : P.last.B a) → C (f i) (P.wPathDestRight f' i)) → C (WType.mk a f) f') (x : P.last.W) (f' : TypeVec.Arrow (P.WPath x) α) : C x f' - MvPFunctor.w_map_wMk 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α β : TypeVec.{u} n} (g : α.Arrow β) (a : P.A) (f' : (P.drop.B a).Arrow α) (f : P.last.B a → P.W α) : MvFunctor.map g (P.wMk a f' f) = P.wMk a (TypeVec.comp g f') fun i => MvFunctor.map g (f i) - MvPFunctor.wRec_eq 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} {C : Sort u_1} (g : (a : P.A) → (P.drop.B a).Arrow α → (P.last.B a → P.W α) → (P.last.B a → C) → C) (a : P.A) (f' : (P.drop.B a).Arrow α) (f : P.last.B a → P.W α) : P.wRec g (P.wMk a f' f) = g a f' f fun i => P.wRec g (f i) - MvPFunctor.wMk_eq 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} (a : P.A) (f : P.last.B a → P.last.W) (g' : (P.drop.B a).Arrow α) (g : (j : P.last.B a) → TypeVec.Arrow (P.WPath (f j)) α) : (P.wMk a g' fun i => ⟨f i, g i⟩) = ⟨WType.mk a f, P.wPathCasesOn g' g⟩ - MvPFunctor.wInd_wMk 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} {C : P.W α → Sort v} (ih : (a : P.A) → (f' : (P.drop.B a).Arrow α) → (f : P.last.B a → P.W α) → ((i : P.last.B a) → C (f i)) → C (P.wMk a f' f)) {a : P.drop.A} {f' : (P.drop.B a).Arrow α} {f : P.last.B a → P.W α} : P.wInd ih (P.wMk a f' f) = ih a f' f fun i => P.wInd ih (f i) - MvPFunctor.comp_wPathCasesOn 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u_1} n} {β : TypeVec.{u_2} n} (h : α.Arrow β) {a : P.A} {f : P.last.B a → P.last.W} (g' : (P.drop.B a).Arrow α) (g : (j : P.last.B a) → TypeVec.Arrow (P.WPath (f j)) α) : TypeVec.comp h (P.wPathCasesOn g' g) = P.wPathCasesOn (TypeVec.comp h g') fun i => TypeVec.comp h (g i) - MvPFunctor.wpRec_eq 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u_2} n} {C : Sort u_1} (g : (a : P.A) → (f : P.last.B a → P.last.W) → TypeVec.Arrow (P.WPath (WType.mk a f)) α → (P.last.B a → C) → C) (a : P.A) (f : P.last.B a → P.last.W) (f' : TypeVec.Arrow (P.WPath (WType.mk a f)) α) : P.wpRec g (WType.mk a f) f' = g a f f' fun i => P.wpRec g (f i) (P.wPathDestRight f' i) - MvPFunctor.wDest'_wMk 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} (a : P.A) (f' : (P.drop.B a).Arrow α) (f : P.last.B a → P.W α) : P.wDest' (P.wMk a f' f) = ⟨a, TypeVec.splitFun f' f⟩ - MvPFunctor.map_objAppend1 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α γ : TypeVec.{u} n} (g : α.Arrow γ) (a : P.A) (f' : (P.drop.B a).Arrow α) (f : P.last.B a → P.W α) : MvFunctor.map (g ::: P.wMap g) (P.objAppend1 a f' f) = P.objAppend1 a (TypeVec.comp g f') fun x => P.wMap g (f x) - MvQPF.Cofix.bisim' 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} {β : Type u_1} (Q : β → Prop) (u v : β → MvQPF.Cofix F α) (h : ∀ (x : β), Q x → ∃ a f' f₀ f₁, (u x).dest = MvQPF.abs ⟨a, (MvQPF.P F).appendContents f' f₀⟩ ∧ (v x).dest = MvQPF.abs ⟨a, (MvQPF.P F).appendContents f' f₁⟩ ∧ ∀ (i : (MvQPF.P F).last.B a), ∃ x', Q x' ∧ f₀ i = u x' ∧ f₁ i = v x') (x : β) : Q x → u x = v x - MvQPF.WEquiv.ind 📋 Mathlib.Data.QPF.Multivariate.Constructions.Fix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} (a : (MvQPF.P F).A) (f' : ((MvQPF.P F).drop.B a).Arrow α) (f₀ f₁ : (MvQPF.P F).last.B a → (MvQPF.P F).W α) : (∀ (x : (MvQPF.P F).last.B a), MvQPF.WEquiv (f₀ x) (f₁ x)) → MvQPF.WEquiv ((MvQPF.P F).wMk a f' f₀) ((MvQPF.P F).wMk a f' f₁) - MvQPF.Fix.ind_aux 📋 Mathlib.Data.QPF.Multivariate.Constructions.Fix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} (a : (MvQPF.P F).A) (f' : ((MvQPF.P F).drop.B a).Arrow α) (f : (MvQPF.P F).last.B a → (MvQPF.P F).W α) : MvQPF.Fix.mk (MvQPF.abs ⟨a, (MvQPF.P F).appendContents f' fun x => ⟦f x⟧⟩) = ⟦(MvQPF.P F).wMk a f' f⟧ - MvQPF.recF_eq 📋 Mathlib.Data.QPF.Multivariate.Constructions.Fix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} {β : Type u} (g : F (α ::: β) → β) (a : (MvQPF.P F).A) (f' : ((MvQPF.P F).drop.B a).Arrow α) (f : (MvQPF.P F).last.B a → (MvQPF.P F).W α) : MvQPF.recF g ((MvQPF.P F).wMk a f' f) = g (MvQPF.abs ⟨a, TypeVec.splitFun f' (MvQPF.recF g ∘ f)⟩) - MvQPF.wrepr_wMk 📋 Mathlib.Data.QPF.Multivariate.Constructions.Fix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} (a : (MvQPF.P F).A) (f' : ((MvQPF.P F).drop.B a).Arrow α) (f : (MvQPF.P F).last.B a → (MvQPF.P F).W α) : MvQPF.wrepr ((MvQPF.P F).wMk a f' f) = (MvQPF.P F).wMk' (MvQPF.repr (MvQPF.abs (MvFunctor.map (TypeVec.id ::: MvQPF.wrepr) ⟨a, (MvQPF.P F).appendContents f' f⟩))) - MvQPF.WEquiv.abs 📋 Mathlib.Data.QPF.Multivariate.Constructions.Fix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} (a₀ : (MvQPF.P F).A) (f'₀ : ((MvQPF.P F).drop.B a₀).Arrow α) (f₀ : (MvQPF.P F).last.B a₀ → (MvQPF.P F).W α) (a₁ : (MvQPF.P F).A) (f'₁ : ((MvQPF.P F).drop.B a₁).Arrow α) (f₁ : (MvQPF.P F).last.B a₁ → (MvQPF.P F).W α) : MvQPF.abs ⟨a₀, (MvQPF.P F).appendContents f'₀ f₀⟩ = MvQPF.abs ⟨a₁, (MvQPF.P F).appendContents f'₁ f₁⟩ → MvQPF.WEquiv ((MvQPF.P F).wMk a₀ f'₀ f₀) ((MvQPF.P F).wMk a₁ f'₁ f₁) - QPF.supp_eq_of_isUniform 📋 Mathlib.Data.QPF.Univariate.Basic
{F : Type u → Type u} [q : QPF F] (h : QPF.IsUniform) {α : Type u} (a : (QPF.P F).A) (f : (QPF.P F).B a → α) : Functor.supp (QPF.abs ⟨a, f⟩) = f '' Set.univ - QPF.Wequiv.ind 📋 Mathlib.Data.QPF.Univariate.Basic
{F : Type u → Type v} [q : QPF F] (a : (QPF.P F).A) (f f' : (QPF.P F).B a → (QPF.P F).W) : (∀ (x : (QPF.P F).B a), QPF.Wequiv (f x) (f' x)) → QPF.Wequiv (WType.mk a f) (WType.mk a f') - QPF.liftp_iff 📋 Mathlib.Data.QPF.Univariate.Basic
{F : Type u → Type v} [q : QPF F] {α : Type u} (p : α → Prop) (x : F α) : Functor.Liftp p x ↔ ∃ a f, x = QPF.abs ⟨a, f⟩ ∧ ∀ (i : (QPF.P F).B a), p (f i) - QPF.supp_eq 📋 Mathlib.Data.QPF.Univariate.Basic
{F : Type u → Type u} [q : QPF F] {α : Type u} (x : F α) : Functor.supp x = {u | ∀ (a : (QPF.P F).A) (f : (QPF.P F).B a → α), QPF.abs ⟨a, f⟩ = x → u ∈ f '' Set.univ} - QPF.liftp_iff' 📋 Mathlib.Data.QPF.Univariate.Basic
{F : Type u → Type v} [q : QPF F] {α : Type u} (p : α → Prop) (x : F α) : Functor.Liftp p x ↔ ∃ u, QPF.abs u = x ∧ ∀ (i : (QPF.P F).B u.fst), p (u.snd i) - QPF.recF_eq' 📋 Mathlib.Data.QPF.Univariate.Basic
{F : Type u → Type v} [q : QPF F] {α : Type u} (g : F α → α) (a : (QPF.P F).A) (f : (QPF.P F).B a → (QPF.P F).W) : QPF.recF g (WType.mk a f) = g (QPF.abs ((QPF.P F).map (QPF.recF g) ⟨a, f⟩)) - QPF.mem_supp 📋 Mathlib.Data.QPF.Univariate.Basic
{F : Type u → Type u} [q : QPF F] {α : Type u} (x : F α) (u : α) : u ∈ Functor.supp x ↔ ∀ (a : (QPF.P F).A) (f : (QPF.P F).B a → α), QPF.abs ⟨a, f⟩ = x → u ∈ f '' Set.univ - QPF.Fix.ind_aux 📋 Mathlib.Data.QPF.Univariate.Basic
{F : Type u → Type u} [q : QPF F] (a : (QPF.P F).A) (f : (QPF.P F).B a → (QPF.P F).W) : QPF.Fix.mk (QPF.abs ⟨a, fun x => ⟦f x⟧⟩) = ⟦WType.mk a f⟧ - QPF.Wequiv.abs 📋 Mathlib.Data.QPF.Univariate.Basic
{F : Type u → Type v} [q : QPF F] (a : (QPF.P F).A) (f : (QPF.P F).B a → (QPF.P F).W) (a' : (QPF.P F).A) (f' : (QPF.P F).B a' → (QPF.P F).W) : QPF.abs ⟨a, f⟩ = QPF.abs ⟨a', f'⟩ → QPF.Wequiv (WType.mk a f) (WType.mk a' f') - QPF.liftr_iff 📋 Mathlib.Data.QPF.Univariate.Basic
{F : Type u → Type v} [q : QPF F] {α : Type u} (r : α → α → Prop) (x y : F α) : Functor.Liftr r x y ↔ ∃ a f₀ f₁, x = QPF.abs ⟨a, f₀⟩ ∧ y = QPF.abs ⟨a, f₁⟩ ∧ ∀ (i : (QPF.P F).B a), r (f₀ i) (f₁ i) - QPF.has_good_supp_iff 📋 Mathlib.Data.QPF.Univariate.Basic
{F : Type u → Type u} [q : QPF F] {α : Type u} (x : F α) : (∀ (p : α → Prop), Functor.Liftp p x ↔ ∀ u ∈ Functor.supp x, p u) ↔ ∃ a f, QPF.abs ⟨a, f⟩ = x ∧ ∀ (a' : (QPF.P F).A) (f' : (QPF.P F).B a' → α), QPF.abs ⟨a', f'⟩ = x → f '' Set.univ ⊆ f' '' Set.univ - QPF.Cofix.bisim' 📋 Mathlib.Data.QPF.Univariate.Basic
{F : Type u → Type u} [q : QPF F] {α : Type u_1} (Q : α → Prop) (u v : α → QPF.Cofix F) (h : ∀ (x : α), Q x → ∃ a f f', (u x).dest = QPF.abs ⟨a, f⟩ ∧ (v x).dest = QPF.abs ⟨a, f'⟩ ∧ ∀ (i : (QPF.P F).B a), ∃ x', Q x' ∧ f i = u x' ∧ f' i = v x') (x : α) : Q x → u x = v x
About
Loogle searches Lean and Mathlib definitions and theorems.
You can use Loogle from within the Lean4 VSCode language extension
using the Loogle command from the command palette. You can also try the
#loogle command from LeanSearchClient,
the CLI version, the Loogle
VS Code extension, the lean.nvim
integration or the Zulip bot.
Usage
Loogle finds definitions and lemmas in various ways:
By constant:
🔍Real.sin
finds all lemmas whose statement somehow mentions the sine function.By lemma name substring:
🔍"differ"
finds all lemmas that have"differ"somewhere in their lemma name.By subexpression:
🔍_ * (_ ^ _)
finds all lemmas whose statements somewhere include a product where the second argument is raised to some power.The pattern can also be non-linear, as in
🔍Real.sqrt ?a * Real.sqrt ?aIf the pattern has parameters, they are matched in any order. Both of these will find
List.map:
🔍(?a -> ?b) -> List ?a -> List ?b
🔍List ?a -> (?a -> ?b) -> List ?bBy main conclusion:
🔍|- tsum _ = _ * tsum _
finds all lemmas where the conclusion (the subexpression to the right of all→and∀) has the given shape.As before, if the pattern has parameters, they are matched against the hypotheses of the lemma in any order; for example,
🔍|- _ < _ → tsum _ < tsum _
will findtsum_lt_tsumeven though the hypothesisf i < g iis not the last.You can filter for definitions vs theorems: Using
⊢ (_ : Type _)finds all definitions which provide data while⊢ (_ : Prop)finds all theorems (and definitions of proofs).
If you pass more than one such search filter, separated by commas
Loogle will return lemmas which match all of them. The
search
🔍 Real.sin, "two", tsum, _ * _, _ ^ _, |- _ < _ → _
would find all lemmas which mention the constants Real.sin
and tsum, have "two" as a substring of the
lemma name, include a product and a power somewhere in the type,
and have a hypothesis of the form _ < _ (if
there were any such lemmas). Metavariables (?a) are
assigned independently in each filter.
The #lucky button will directly send you to the
documentation of the first hit.
Source code
You can find the source code for this service at https://github.com/nomeata/loogle. The https://loogle.lean-lang.org/ service is provided by the Lean FRO. Please review the Lean FRO Terms of Use and Privacy Policy.
This is Loogle revision 9f11169 serving mathlib revision ce5dd8c