Loogle!
Result
Found 96 declarations mentioning TypeVec.append1.
- TypeVec.last_append1 📋 Mathlib.Data.TypeVec
{n : ℕ} {α : TypeVec.{u_1} n} {β : Type u_1} : (α ::: β).last = β - TypeVec.drop_append1' 📋 Mathlib.Data.TypeVec
{n : ℕ} {α : TypeVec.{u_1} n} {β : Type u_1} : (α ::: β).drop = α - TypeVec.drop_append1 📋 Mathlib.Data.TypeVec
{n : ℕ} {α : TypeVec.{u_1} n} {β : Type u_1} {i : Fin2 n} : (α ::: β).drop i = α i - TypeVec.append1 📋 Mathlib.Data.TypeVec
{n : ℕ} (α : TypeVec.{u_1} n) (β : Type u_1) : TypeVec.{u_1} (n + 1) - TypeVec.PredLast 📋 Mathlib.Data.TypeVec
{n : ℕ} (α : TypeVec.{u_1} n) {β : Type u_1} (p : β → Prop) ⦃i : Fin2 (n + 1)⦄ : (α ::: β) i → Prop - TypeVec.Curry.inhabited 📋 Mathlib.Data.TypeVec
{n : ℕ} (F : TypeVec.{u} (n + 1) → Type u_1) (α : Type u) (β : TypeVec.{u} n) [I : Inhabited (F (β ::: α))] : Inhabited (TypeVec.Curry F α β) - TypeVec.RelLast 📋 Mathlib.Data.TypeVec
{n : ℕ} (α : TypeVec.{u} n) {β γ : Type u} (r : β → γ → Prop) ⦃i : Fin2 (n + 1)⦄ : (α ::: β) i → (α ::: γ) i → Prop - TypeVec.appendFun 📋 Mathlib.Data.TypeVec
{n : ℕ} {α : TypeVec.{u_1} n} {α' : TypeVec.{u_2} n} {β : Type u_1} {β' : Type u_2} (f : α.Arrow α') (g : β → β') : (α ::: β).Arrow (α' ::: β') - TypeVec.fromAppend1DropLast 📋 Mathlib.Data.TypeVec
{n : ℕ} {α : TypeVec.{u_1} (n + 1)} : (α.drop ::: α.last).Arrow α - TypeVec.toAppend1DropLast 📋 Mathlib.Data.TypeVec
{n : ℕ} {α : TypeVec.{u_1} (n + 1)} : α.Arrow (α.drop ::: α.last) - TypeVec.PredLast' 📋 Mathlib.Data.TypeVec
{n : ℕ} (α : TypeVec.{u_1} n) {β : Type u_1} (p : β → Prop) : (α ::: β).Arrow (TypeVec.repeat (n + 1) Prop) - TypeVec.append1_drop_last 📋 Mathlib.Data.TypeVec
{n : ℕ} (α : TypeVec.{u_1} (n + 1)) : α.drop ::: α.last = α - TypeVec.append1Cases 📋 Mathlib.Data.TypeVec
{n : ℕ} {C : TypeVec.{u_1} (n + 1) → Sort u} (H : (α : TypeVec.{u_1} n) → (β : Type u_1) → C (α ::: β)) (γ : TypeVec.{u_1} (n + 1)) : C γ - TypeVec.casesCons 📋 Mathlib.Data.TypeVec
(n : ℕ) {β : TypeVec.{u_2} (n + 1) → Sort u_1} (f : (t : Type u_2) → (v : TypeVec.{u_2} n) → β (v ::: t)) (v : TypeVec.{u_2} (n + 1)) : β v - TypeVec.append1_cases_append1 📋 Mathlib.Data.TypeVec
{n : ℕ} {C : TypeVec.{u_1} (n + 1) → Sort u} (H : (α : TypeVec.{u_1} n) → (β : Type u_1) → C (α ::: β)) (α : TypeVec.{u_1} n) (β : Type u_1) : TypeVec.append1Cases H (α ::: β) = H α β - TypeVec.casesCons_append1 📋 Mathlib.Data.TypeVec
(n : ℕ) {β : TypeVec.{u_2} (n + 1) → Sort u_1} (f : (t : Type u_2) → (v : TypeVec.{u_2} n) → β (v ::: t)) (v : TypeVec.{u_2} n) (α : Type u_2) : TypeVec.casesCons n f (v ::: α) = f α v - TypeVec.lastFun_appendFun 📋 Mathlib.Data.TypeVec
{n : ℕ} {α : TypeVec.{u_1} n} {α' : TypeVec.{u_2} n} {β : Type u_1} {β' : Type u_2} (f : α.Arrow α') (g : β → β') : TypeVec.lastFun (f ::: g) = g - TypeVec.dropFun_appendFun 📋 Mathlib.Data.TypeVec
{n : ℕ} {α : TypeVec.{u_1} n} {α' : TypeVec.{u_2} n} {β : Type u_1} {β' : Type u_2} (f : α.Arrow α') (g : β → β') : TypeVec.dropFun (f ::: g) = f - TypeVec.lastFun_from_append1_drop_last 📋 Mathlib.Data.TypeVec
{n : ℕ} {α : TypeVec.{u_1} (n + 1)} : TypeVec.lastFun TypeVec.fromAppend1DropLast = id - TypeVec.appendFun_id_id 📋 Mathlib.Data.TypeVec
{n : ℕ} {α : TypeVec.{u_1} n} {β : Type u_1} : (TypeVec.id ::: id) = TypeVec.id - TypeVec.dropFun_from_append1_drop_last 📋 Mathlib.Data.TypeVec
{n : ℕ} {α : TypeVec.{u_1} (n + 1)} : TypeVec.dropFun TypeVec.fromAppend1DropLast = TypeVec.id - TypeVec.RelLast' 📋 Mathlib.Data.TypeVec
{n : ℕ} (α : TypeVec.{u_1} n) {β : Type u_1} (p : β → β → Prop) : ((α ::: β).prod (α ::: β)).Arrow (TypeVec.repeat (n + 1) Prop) - TypeVec.typevecCasesCons₂ 📋 Mathlib.Data.TypeVec
(n : ℕ) (t : Type u_1) (t' : Type u_2) (v : TypeVec.{u_1} n) (v' : TypeVec.{u_2} n) {β : (v ::: t).Arrow (v' ::: t') → Sort u_3} (F : (f : t → t') → (fs : v.Arrow v') → β (fs ::: f)) (fs : (v ::: t).Arrow (v' ::: t')) : β fs - TypeVec.appendFun_inj 📋 Mathlib.Data.TypeVec
{n : ℕ} {α : TypeVec.{u_1} n} {α' : TypeVec.{u_2} n} {β : Type u_1} {β' : Type u_2} {f f' : α.Arrow α'} {g g' : β → β'} : (f ::: g) = (f' ::: g') → f = f' ∧ g = g' - TypeVec.const_append1 📋 Mathlib.Data.TypeVec
{β : Type u_1} {γ : Type u_2} (x : γ) {n : ℕ} (α : TypeVec.{u_1} n) : TypeVec.const x (α ::: β) = (TypeVec.const x α ::: fun x_1 => x) - TypeVec.typevecCasesCons₂_appendFun 📋 Mathlib.Data.TypeVec
(n : ℕ) (t : Type u_1) (t' : Type u_2) (v : TypeVec.{u_1} n) (v' : TypeVec.{u_2} n) {β : (v ::: t).Arrow (v' ::: t') → Sort u_3} (F : (f : t → t') → (fs : v.Arrow v') → β (fs ::: f)) (f : t → t') (fs : v.Arrow v') : TypeVec.typevecCasesCons₂ n t t' v v' F (fs ::: f) = F f fs - TypeVec.appendFun_comp_id 📋 Mathlib.Data.TypeVec
{n : ℕ} {α : TypeVec.{u} n} {β₀ β₁ β₂ : Type u} (g₀ : β₀ → β₁) (g₁ : β₁ → β₂) : (TypeVec.id ::: g₁ ∘ g₀) = TypeVec.comp (TypeVec.id ::: g₁) (TypeVec.id ::: g₀) - TypeVec.dropFun_RelLast' 📋 Mathlib.Data.TypeVec
{n : ℕ} {α : TypeVec.{u_1} n} {β : Type u_1} (R : β → β → Prop) : TypeVec.dropFun (α.RelLast' R) = α.repeatEq - TypeVec.appendFun_comp 📋 Mathlib.Data.TypeVec
{n : ℕ} {α₀ : TypeVec.{u_1} n} {α₁ : TypeVec.{u_2} n} {α₂ : TypeVec.{u_3} n} {β₀ : Type u_1} {β₁ : Type u_2} {β₂ : Type u_3} (f₀ : α₀.Arrow α₁) (f₁ : α₁.Arrow α₂) (g₀ : β₀ → β₁) (g₁ : β₁ → β₂) : (TypeVec.comp f₁ f₀ ::: g₁ ∘ g₀) = TypeVec.comp (f₁ ::: g₁) (f₀ ::: g₀) - TypeVec.appendFun_comp' 📋 Mathlib.Data.TypeVec
{n : ℕ} {α₀ : TypeVec.{u_1} n} {α₁ : TypeVec.{u_2} n} {α₂ : TypeVec.{u_3} n} {β₀ : Type u_1} {β₁ : Type u_2} {β₂ : Type u_3} (f₀ : α₀.Arrow α₁) (f₁ : α₁.Arrow α₂) (g₀ : β₀ → β₁) (g₁ : β₁ → β₂) : TypeVec.comp (f₁ ::: g₁) (f₀ ::: g₀) = (TypeVec.comp f₁ f₀ ::: g₁ ∘ g₀) - TypeVec.appendFun_aux 📋 Mathlib.Data.TypeVec
{n : ℕ} {α : TypeVec.{u_1} n} {α' : TypeVec.{u_2} n} {β : Type u_1} {β' : Type u_2} (f : (α ::: β).Arrow (α' ::: β')) : (TypeVec.dropFun f ::: TypeVec.lastFun f) = f - TypeVec.typevecCasesCons₃ 📋 Mathlib.Data.TypeVec
(n : ℕ) {β : (v : TypeVec.{u_2} (n + 1)) → (v' : TypeVec.{u_3} (n + 1)) → v.Arrow v' → Sort u_1} (F : (t : Type u_2) → (t' : Type u_3) → (f : t → t') → (v : TypeVec.{u_2} n) → (v' : TypeVec.{u_3} n) → (fs : v.Arrow v') → β (v ::: t) (v' ::: t') (fs ::: f)) (v : TypeVec.{u_2} (n + 1)) (v' : TypeVec.{u_3} (n + 1)) (fs : v.Arrow v') : β v v' fs - TypeVec.appendFun_comp_splitFun 📋 Mathlib.Data.TypeVec
{n : ℕ} {α : TypeVec.{u_1} n} {γ : TypeVec.{u_2} n} {β : Type u_1} {δ : Type u_2} {ε : TypeVec.{u_3} (n + 1)} (f₀ : ε.drop.Arrow α) (f₁ : α.Arrow γ) (g₀ : ε.last → β) (g₁ : β → δ) : TypeVec.comp (f₁ ::: g₁) (TypeVec.splitFun f₀ g₀) = TypeVec.splitFun (TypeVec.comp f₁ f₀) (g₁ ∘ g₀) - TypeVec.repeat_eq_append1 📋 Mathlib.Data.TypeVec
{β : Type u_1} {n : ℕ} (α : TypeVec.{u_1} n) : (α ::: β).repeatEq = TypeVec.splitFun α.repeatEq (Function.uncurry Eq) - TypeVec.append_prod_appendFun 📋 Mathlib.Data.TypeVec
{n : ℕ} {α α' β β' : TypeVec.{u} n} {φ φ' ψ ψ' : Type u} {f₀ : α.Arrow α'} {g₀ : β.Arrow β'} {f₁ : φ → φ'} {g₁ : ψ → ψ'} : (TypeVec.prod.map f₀ g₀ ::: Prod.map f₁ g₁) = TypeVec.prod.map (f₀ ::: f₁) (g₀ ::: g₁) - MvFunctor.LiftP_PredLast_iff 📋 Mathlib.Control.Functor.Multivariate
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u_1} [MvFunctor F] [LawfulMvFunctor F] {α : TypeVec.{u} n} {β : Type u} (P : β → Prop) (x : F (α ::: β)) : MvFunctor.LiftP' (α.PredLast' P) x ↔ MvFunctor.LiftP (α.PredLast P) x - MvFunctor.LiftR_RelLast_iff 📋 Mathlib.Control.Functor.Multivariate
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u_1} [MvFunctor F] [LawfulMvFunctor F] {α : TypeVec.{u} n} {β : Type u} (rr : β → β → Prop) (x y : F (α ::: β)) : MvFunctor.LiftR' (α.RelLast' rr) x y ↔ MvFunctor.LiftR (α.RelLast rr) x y - 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 (α ::: β) - MvPFunctor.M.corec 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} {β : Type u} (g : β → ↑P (α ::: β)) : β → P.M α - MvPFunctor.M.dest 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} (x : P.M α) : ↑P (α ::: P.M α) - MvPFunctor.M.mk 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} : ↑P (α ::: P.M α) → P.M α - 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_corec 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} {β : Type u} (g : β → ↑P (α ::: β)) (x : β) : MvPFunctor.M.dest P (MvPFunctor.M.corec P g x) = MvFunctor.map (TypeVec.id ::: MvPFunctor.M.corec P g) (g x) - MvPFunctor.M.dest_map 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α β : TypeVec.{u} n} (g : α.Arrow β) (x : P.M α) : MvPFunctor.M.dest P (MvFunctor.map g x) = MvFunctor.map (g ::: fun x => MvFunctor.map g x) (MvPFunctor.M.dest P x) - 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' 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} (R : P.M α → P.M α → Prop) (h : ∀ (x y : P.M α), R x y → MvFunctor.map (TypeVec.id ::: Quot.mk R) (MvPFunctor.M.dest P x) = MvFunctor.map (TypeVec.id ::: Quot.mk R) (MvPFunctor.M.dest P y)) (x y : P.M α) (r : R x y) : x = y - MvPFunctor.M.bisim₀ 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} (R : P.M α → P.M α → Prop) (h₀ : Equivalence R) (h : ∀ (x y : P.M α), R x y → MvFunctor.map (TypeVec.id ::: Quot.mk R) (MvPFunctor.M.dest P x) = MvFunctor.map (TypeVec.id ::: Quot.mk R) (MvPFunctor.M.dest P y)) (x y : P.M α) (r : R x y) : x = y - MvPFunctor.M.map_dest 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α β : TypeVec.{u} n} (g : (α ::: P.M α).Arrow (β ::: P.M β)) (x : P.M α) (h : ∀ (x : P.M α), TypeVec.lastFun g x = MvFunctor.map (TypeVec.dropFun g) x) : MvFunctor.map g (MvPFunctor.M.dest P x) = MvPFunctor.M.dest P (MvFunctor.map (TypeVec.dropFun 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.M.bisim 📋 Mathlib.Data.PFunctor.Multivariate.M
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} (R : P.M α → P.M α → Prop) (h : ∀ (x y : P.M α), R x y → ∃ a f f₁ f₂, MvPFunctor.M.dest P x = ⟨a, TypeVec.splitFun f f₁⟩ ∧ MvPFunctor.M.dest P y = ⟨a, TypeVec.splitFun f f₂⟩ ∧ ∀ (i : (P.B a).last), R (f₁ i) (f₂ i)) (x y : P.M α) (r : R x y) : x = y - MvPFunctor.wDest' 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} : P.W α → ↑P (α ::: P.W α) - MvPFunctor.wMk' 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} : ↑P (α ::: P.W α) → P.W α - 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.wDest'_wMk' 📋 Mathlib.Data.PFunctor.Multivariate.W
{n : ℕ} (P : MvPFunctor.{u} (n + 1)) {α : TypeVec.{u} n} (x : ↑P (α ::: P.W α)) : P.wDest' (P.wMk' x) = x - 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.corec 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} {β : Type u} (g : β → F (α ::: β)) : β → MvQPF.Cofix F α - MvQPF.Cofix.dest 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} : MvQPF.Cofix F α → F (α ::: MvQPF.Cofix F α) - MvQPF.Cofix.mk 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} : F (α ::: MvQPF.Cofix F α) → MvQPF.Cofix F α - MvQPF.Cofix.corec'₁ 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} {β : Type u} (g : {X : Type u} → (β → X) → F (α ::: X)) (x : β) : MvQPF.Cofix F α - MvQPF.Cofix.corec' 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} {β : Type u} (g : β → F (α ::: (MvQPF.Cofix F α ⊕ β))) (x : β) : MvQPF.Cofix F α - MvQPF.Cofix.corec₁ 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} {β : Type u} (g : {X : Type u} → (MvQPF.Cofix F α → X) → (β → X) → β → F (α ::: X)) (x : β) : MvQPF.Cofix F α - MvQPF.corecF 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} {β : Type u} (g : β → F (α ::: β)) : β → (MvQPF.P F).M α - MvQPF.Cofix.dest_mk 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} (x : F (α ::: MvQPF.Cofix F α)) : (MvQPF.Cofix.mk x).dest = x - MvQPF.Cofix.ext 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} (x y : MvQPF.Cofix F α) (h : x.dest = y.dest) : x = y - MvQPF.Cofix.ext_mk 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} (x y : F (α ::: MvQPF.Cofix F α)) (h : MvQPF.Cofix.mk x = MvQPF.Cofix.mk y) : x = y - MvQPF.Cofix.dest_corec 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} {β : Type u} (g : β → F (α ::: β)) (x : β) : (MvQPF.Cofix.corec g x).dest = MvFunctor.map (TypeVec.id ::: MvQPF.Cofix.corec g) (g x) - MvQPF.corec_roll 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} {X Y : Type u} {x₀ : X} (f : X → Y) (g : Y → F (α ::: X)) : MvQPF.Cofix.corec (g ∘ f) x₀ = MvQPF.Cofix.corec (MvFunctor.map (TypeVec.id ::: f) ∘ 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} (r : MvQPF.Cofix F α → MvQPF.Cofix F α → Prop) (h : ∀ (x y : MvQPF.Cofix F α), r x y → MvFunctor.LiftR' (α.RelLast' r) x.dest y.dest) (x y : MvQPF.Cofix F α) : r x y → x = y - MvQPF.Cofix.bisim 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} (r : MvQPF.Cofix F α → MvQPF.Cofix F α → Prop) (h : ∀ (x y : MvQPF.Cofix F α), r x y → MvFunctor.LiftR (α.RelLast r) x.dest y.dest) (x y : MvQPF.Cofix F α) : r x y → x = y - MvQPF.Cofix.dest_corec' 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} {β : Type u} (g : β → F (α ::: (MvQPF.Cofix F α ⊕ β))) (x : β) : (MvQPF.Cofix.corec' g x).dest = MvFunctor.map (TypeVec.id ::: Sum.elim id (MvQPF.Cofix.corec' g)) (g x) - MvQPF.liftR_map_last' 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] [LawfulMvFunctor F] {α : TypeVec.{u} n} {ι : Type u} (R : ι → ι → Prop) (x : F (α ::: ι)) (f : ι → ι) (hh : ∀ (x : ι), R (f x) x) : MvFunctor.LiftR' (α.RelLast' R) (MvFunctor.map (TypeVec.id ::: f) x) x - MvQPF.Cofix.dest_corec₁ 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} {β : Type u} (g : {X : Type u} → (MvQPF.Cofix F α → X) → (β → X) → β → F (α ::: X)) (x : β) (h : ∀ (X Y : Type u) (f : MvQPF.Cofix F α → X) (f' : β → X) (k : X → Y), g (k ∘ f) (k ∘ f') x = MvFunctor.map (TypeVec.id ::: k) (g f f' x)) : (MvQPF.Cofix.corec₁ g x).dest = g id (MvQPF.Cofix.corec₁ g) x - MvQPF.liftR_map_last 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] [lawful : LawfulMvFunctor F] {α : TypeVec.{u} n} {ι ι' : Type u} (R : ι' → ι' → Prop) (x : F (α ::: ι)) (f g : ι → ι') (hh : ∀ (x : ι), R (f x) (g x)) : MvFunctor.LiftR' (α.RelLast' R) (MvFunctor.map (TypeVec.id ::: f) x) (MvFunctor.map (TypeVec.id ::: g) x) - MvQPF.Cofix.bisim_rel 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} (r : MvQPF.Cofix F α → MvQPF.Cofix F α → Prop) (h : ∀ (x y : MvQPF.Cofix F α), r x y → MvFunctor.map (TypeVec.id ::: Quot.mk r) x.dest = MvFunctor.map (TypeVec.id ::: Quot.mk r) y.dest) (x y : MvQPF.Cofix F α) : r x y → x = y - MvQPF.corecF_eq 📋 Mathlib.Data.QPF.Multivariate.Constructions.Cofix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} {β : Type u} (g : β → F (α ::: β)) (x : β) : MvPFunctor.M.dest (MvQPF.P F) (MvQPF.corecF g x) = MvFunctor.map (TypeVec.id ::: MvQPF.corecF g) (MvQPF.repr (g 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.Fix.rec 📋 Mathlib.Data.QPF.Multivariate.Constructions.Fix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} {β : Type u} (g : F (α ::: β) → β) : MvQPF.Fix F α → β - MvQPF.Fix.dest 📋 Mathlib.Data.QPF.Multivariate.Constructions.Fix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} : MvQPF.Fix F α → F (α ::: MvQPF.Fix F α) - MvQPF.Fix.mk 📋 Mathlib.Data.QPF.Multivariate.Constructions.Fix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} (x : F (α ::: MvQPF.Fix F α)) : MvQPF.Fix F α - MvQPF.recF 📋 Mathlib.Data.QPF.Multivariate.Constructions.Fix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} {β : Type u} (g : F (α ::: β) → β) : (MvQPF.P F).W α → β - MvQPF.Fix.dest_mk 📋 Mathlib.Data.QPF.Multivariate.Constructions.Fix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} (x : F (α ::: MvQPF.Fix F α)) : (MvQPF.Fix.mk x).dest = x - MvQPF.recF_eq_of_wEquiv 📋 Mathlib.Data.QPF.Multivariate.Constructions.Fix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] (α : TypeVec.{u} n) {β : Type u} (u : F (α ::: β) → β) (x y : (MvQPF.P F).W α) : MvQPF.WEquiv x y → MvQPF.recF u x = MvQPF.recF u y - MvQPF.Fix.ind 📋 Mathlib.Data.QPF.Multivariate.Constructions.Fix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} (p : MvQPF.Fix F α → Prop) (h : ∀ (x : F (α ::: MvQPF.Fix F α)), MvFunctor.LiftP (α.PredLast p) x → p (MvQPF.Fix.mk x)) (x : MvQPF.Fix F α) : p x - MvQPF.Fix.rec_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 (α ::: β) → β) (x : F (α ::: MvQPF.Fix F α)) : MvQPF.Fix.rec g (MvQPF.Fix.mk x) = g (MvFunctor.map (TypeVec.id ::: MvQPF.Fix.rec g) x) - MvQPF.Fix.rec_unique 📋 Mathlib.Data.QPF.Multivariate.Constructions.Fix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} {β : Type u} (g : F (α ::: β) → β) (h : MvQPF.Fix F α → β) (hyp : ∀ (x : F (α ::: MvQPF.Fix F α)), h (MvQPF.Fix.mk x) = g (MvFunctor.map (TypeVec.id ::: h) x)) : MvQPF.Fix.rec g = h - MvQPF.Fix.drec 📋 Mathlib.Data.QPF.Multivariate.Constructions.Fix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} {β : MvQPF.Fix F α → Type u} (g : (x : F (α ::: Sigma β)) → β (MvQPF.Fix.mk (MvFunctor.map (TypeVec.id ::: Sigma.fst) x))) (x : MvQPF.Fix F α) : β x - MvQPF.Fix.ind_rec 📋 Mathlib.Data.QPF.Multivariate.Constructions.Fix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} {β : Type u} (g₁ g₂ : MvQPF.Fix F α → β) (h : ∀ (x : F (α ::: MvQPF.Fix F α)), MvFunctor.map (TypeVec.id ::: g₁) x = MvFunctor.map (TypeVec.id ::: g₂) x → g₁ (MvQPF.Fix.mk x) = g₂ (MvQPF.Fix.mk x)) (x : MvQPF.Fix F α) : g₁ x = g₂ x - MvQPF.wEquiv.abs' 📋 Mathlib.Data.QPF.Multivariate.Constructions.Fix
{n : ℕ} {F : TypeVec.{u} (n + 1) → Type u} [q : MvQPF F] {α : TypeVec.{u} n} (x y : (MvQPF.P F).W α) (h : MvQPF.abs ((MvQPF.P F).wDest' x) = MvQPF.abs ((MvQPF.P F).wDest' y)) : MvQPF.WEquiv x y - 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 (α ::: β) → β) (x : (MvQPF.P F).W α) : MvQPF.recF g x = g (MvQPF.abs (MvFunctor.map (TypeVec.id ::: MvQPF.recF g) ((MvQPF.P F).wDest' x))) - 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₁)
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