Germ of a function at a filter #
The germ of a function f : α → β at a filter l : Filter α is the equivalence class of f
with respect to the equivalence relation EventuallyEq l: f ≈ g means ∀ᶠ x in l, f x = g x.
Main definitions #
We define
Filter.Germ l βto be the space of germs of functionsα → βat a filterl : Filter α;- coercion from
α → βtoGerm l β:(f : Germ l β)is the germ off : α → βatl : Filter α; this coercion is declared asCoeTC; (const l c : Germ l β)is the germ of the constant functionfun x : α ↦ cat a filterl;- coercion from
βtoGerm l β:(↑c : Germ l β)is the germ of the constant functionfun x : α ↦ cat a filterl; this coercion is declared asCoeTC; map (F : β → γ) (f : Germ l β)to be the composition of a functionFand a germf;map₂ (F : β → γ → δ) (f : Germ l β) (g : Germ l γ)to be the germ offun x ↦ F (f x) (g x)atl;f.Tendsto lb: we say that a germf : Germ l βtends to a filterlbif its representatives tend tolbalongl;f.compTendsto g hgandf.compTendsto' g hg: givenf : Germ l βand a functiong : γ → α(resp., a germg : Germ lc α), ifgtends tolalonglc, then the compositionf ∘ gis a well-defined germ atlc;Germ.liftPred,Germ.liftRel: lift a predicate or a relation to the space of germs:(f : Germ l β).liftPred pmeans∀ᶠ x in l, p (f x), and similarly for a relation.
We also define map (F : β → γ) : Germ l β → Germ l γ sending each germ f to F ∘ f.
For each of the following structures we prove that if β has this structure, then so does
Germ l β:
- one-operation algebraic structures up to
CommGroup; MulZeroClass,Distrib,Semiring,CommSemiring,Ring,CommRing;MulAction,DistribMulAction,Module;Preorder,PartialOrder, andLatticestructures, as well asBoundedOrder;OrderedCancelCommMonoidandOrderedCancelAddCommMonoid.
Tags #
filter, germ
Setoid used to define the space of germs.
Equations
- Filter.germSetoid l β = { r := Filter.EventuallyEq l, iseqv := (_ : Equivalence (Filter.EventuallyEq l)) }
Instances For
The space of germs of functions α → β at a filter l.
Equations
- Filter.Germ l β = Quotient (Filter.germSetoid l β)
Instances For
Setoid used to define the filter product. This is a dependent version of
Filter.germSetoid.
Equations
- Filter.productSetoid l ε = { r := fun f g => ∀ᶠ (a : α) in l, f a = g a, iseqv := (_ : Equivalence fun f g => ∀ᶠ (a : α) in l, f a = g a) }
Instances For
The filter product (a : α) → ε a at a filter l. This is a dependent version of
Filter.Germ.
Equations
- Filter.Product l ε = Quotient (Filter.productSetoid l ε)
Instances For
Equations
- Filter.Product.coeTC = { coe := Quotient.mk' }
Equations
- Filter.Product.inhabited = { default := Quotient.mk' fun a => default }
Equations
- Filter.Germ.ofFun = Quotient.mk'
Instances For
Equations
- Filter.Germ.instCoeTCForAllGerm = { coe := Filter.Germ.ofFun }
Equations
- ↑b = ↑fun x => b
Instances For
Equations
- Filter.Germ.coeTC = { coe := Filter.Germ.const }
Given a map F : (α → β) → (γ → δ) that sends functions eventually equal at l to functions
eventually equal at lc, returns a map from Germ l β to Germ lc δ.
Equations
- Filter.Germ.map' F hF = Quotient.map' F hF
Instances For
Given a germ f : Germ l β and a function F : (α → β) → γ sending eventually equal functions
to the same value, returns the value F takes on functions having germ f at l.
Equations
- Filter.Germ.liftOn f F hF = Quotient.liftOn' f F hF
Instances For
Alias of the reverse direction of Filter.Germ.coe_eq.
Lift a function β → γ to a function Germ l β → Germ l γ.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Lift a binary function β → γ → δ to a function Germ l β → Germ l γ → Germ l δ.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A germ at l of maps from α to β tends to lb : Filter β if it is represented by a map
which tends to lb along l.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Alias of the reverse direction of Filter.Germ.coe_tendsto.
Given two germs f : Germ l β, and g : Germ lc α, where l : Filter α, if g tends to l,
then the composition f ∘ g is well-defined as a germ at lc.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a germ f : Germ l β and a function g : γ → α, where l : Filter α, if g tends
to l along lc : Filter γ, then the composition f ∘ g is well-defined as a germ at lc.
Equations
- Filter.Germ.compTendsto f g hg = Filter.Germ.compTendsto' f ↑g (_ : Filter.Germ.Tendsto (↑g) l)
Instances For
Lift a predicate on β to Germ l β.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Lift a relation r : β → γ → Prop to Germ l β → Germ l γ → Prop.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Filter.Germ.inhabited = { default := ↑default }
Equations
- Filter.Germ.add = { add := Filter.Germ.map₂ fun x x_1 => x + x_1 }
Equations
- Filter.Germ.mul = { mul := Filter.Germ.map₂ fun x x_1 => x * x_1 }
Equations
- Filter.Germ.zero = { zero := ↑0 }
Equations
- Filter.Germ.one = { one := ↑1 }
Equations
- Filter.Germ.addSemigroup = Function.Surjective.addSemigroup Filter.Germ.ofFun (_ : Function.Surjective (Quot.mk Setoid.r)) (_ : ∀ (a b : α → M), ↑(a + b) = ↑a + ↑b)
Equations
- Filter.Germ.semigroup = Function.Surjective.semigroup Filter.Germ.ofFun (_ : Function.Surjective (Quot.mk Setoid.r)) (_ : ∀ (a b : α → M), ↑(a * b) = ↑a * ↑b)
Equations
- Filter.Germ.addCommSemigroup = Function.Surjective.addCommSemigroup Filter.Germ.ofFun (_ : Function.Surjective (Quot.mk Setoid.r)) (_ : ∀ (a b : α → M), ↑(a + b) = ↑a + ↑b)
Equations
- Filter.Germ.commSemigroup = Function.Surjective.commSemigroup Filter.Germ.ofFun (_ : Function.Surjective (Quot.mk Setoid.r)) (_ : ∀ (a b : α → M), ↑(a * b) = ↑a * ↑b)
Equations
- Filter.Germ.addLeftCancelSemigroup = let src := Filter.Germ.addSemigroup; AddLeftCancelSemigroup.mk (_ : ∀ (f₁ f₂ f₃ : Filter.Germ l M), f₁ + f₂ = f₁ + f₃ → f₂ = f₃)
Equations
- Filter.Germ.leftCancelSemigroup = let src := Filter.Germ.semigroup; LeftCancelSemigroup.mk (_ : ∀ (f₁ f₂ f₃ : Filter.Germ l M), f₁ * f₂ = f₁ * f₃ → f₂ = f₃)
Equations
- Filter.Germ.addRightCancelSemigroup = let src := Filter.Germ.addSemigroup; AddRightCancelSemigroup.mk (_ : ∀ (f₁ f₂ f₃ : Filter.Germ l M), f₁ + f₂ = f₃ + f₂ → f₁ = f₃)
Equations
- Filter.Germ.rightCancelSemigroup = let src := Filter.Germ.semigroup; RightCancelSemigroup.mk (_ : ∀ (f₁ f₂ f₃ : Filter.Germ l M), f₁ * f₂ = f₃ * f₂ → f₁ = f₃)
Equations
- Filter.Germ.addZeroClass = Function.Surjective.addZeroClass Filter.Germ.ofFun (_ : Function.Surjective (Quot.mk Setoid.r)) (_ : ↑0 = ↑0) (_ : ∀ (x x_1 : α → M), ↑(x + x_1) = ↑(x + x_1))
Equations
- Filter.Germ.mulOneClass = Function.Surjective.mulOneClass Filter.Germ.ofFun (_ : Function.Surjective (Quot.mk Setoid.r)) (_ : ↑1 = ↑1) (_ : ∀ (x x_1 : α → M), ↑(x * x_1) = ↑(x * x_1))
Equations
- Filter.Germ.vadd = { vadd := fun n => Filter.Germ.map fun x => n +ᵥ x }
Equations
- Filter.Germ.smul = { smul := fun n => Filter.Germ.map fun x => n • x }
Equations
- Filter.Germ.pow = { pow := fun f n => Filter.Germ.map (fun x => x ^ n) f }
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Coercion from functions to germs as an additive monoid homomorphism.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Coercion from functions to germs as a monoid homomorphism.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- Filter.Germ.instNatCastGerm = { natCast := fun n => ↑↑n }
Equations
- Filter.Germ.instIntCastGerm = { intCast := fun n => ↑↑n }
Equations
- One or more equations did not get rendered due to their size.
Equations
- Filter.Germ.addCommMonoidWithOne = let src := Filter.Germ.addCommSemigroup; AddCommMonoidWithOne.mk (_ : ∀ (a b : Filter.Germ l M), a + b = b + a)
Equations
- Filter.Germ.neg = { neg := Filter.Germ.map Neg.neg }
Equations
- Filter.Germ.inv = { inv := Filter.Germ.map Inv.inv }
Equations
- Filter.Germ.sub = { sub := Filter.Germ.map₂ fun x x_1 => x - x_1 }
Equations
- Filter.Germ.div = { div := Filter.Germ.map₂ fun x x_1 => x / x_1 }
Equations
- Filter.Germ.involutiveNeg = Function.Surjective.involutiveNeg Filter.Germ.ofFun (_ : Function.Surjective (Quot.mk Setoid.r)) (_ : ∀ (x : α → G), ↑(-x) = ↑(-x))
Equations
- Filter.Germ.involutiveInv = Function.Surjective.involutiveInv Filter.Germ.ofFun (_ : Function.Surjective (Quot.mk Setoid.r)) (_ : ∀ (x : α → G), ↑x⁻¹ = ↑x⁻¹)
Equations
- One or more equations did not get rendered due to their size.
Equations
- Filter.Germ.negZeroClass = NegZeroClass.mk (_ : ↑((fun x x_1 => x ∘ x_1) Neg.neg fun x => 0) = ↑fun x => 0)
Equations
- Filter.Germ.invOneClass = InvOneClass.mk (_ : ↑((fun x x_1 => x ∘ x_1) Inv.inv fun x => 1) = ↑fun x => 1)
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- Filter.Germ.mulZeroClass = Function.Surjective.mulZeroClass Filter.Germ.ofFun (_ : Function.Surjective (Quot.mk Setoid.r)) (_ : ↑0 = ↑0) (_ : ∀ (x x_1 : α → R), ↑(x * x_1) = ↑(x * x_1))
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Coercion (α → R) → Germ l R as a RingHom.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Filter.Germ.instVAdd' = { vadd := Filter.Germ.map₂ fun x x_1 => x +ᵥ x_1 }
Equations
- Filter.Germ.instSMul' = { smul := Filter.Germ.map₂ fun x x_1 => x • x_1 }
Equations
- Filter.Germ.addAction = AddAction.mk (_ : ∀ (f : Filter.Germ l β), 0 +ᵥ f = f) (_ : ∀ (c₁ c₂ : M) (f : Filter.Germ l β), c₁ + c₂ +ᵥ f = c₁ +ᵥ (c₂ +ᵥ f))
Equations
- Filter.Germ.mulAction = MulAction.mk (_ : ∀ (f : Filter.Germ l β), 1 • f = f) (_ : ∀ (c₁ c₂ : M) (f : Filter.Germ l β), (c₁ * c₂) • f = c₁ • c₂ • f)
Equations
- Filter.Germ.addAction' = AddAction.mk (_ : ∀ (f : Filter.Germ l β), 0 +ᵥ f = f) (_ : ∀ (c₁ c₂ : Filter.Germ l M) (f : Filter.Germ l β), c₁ + c₂ +ᵥ f = c₁ +ᵥ (c₂ +ᵥ f))
Equations
- Filter.Germ.mulAction' = MulAction.mk (_ : ∀ (f : Filter.Germ l β), 1 • f = f) (_ : ∀ (c₁ c₂ : Filter.Germ l M) (f : Filter.Germ l β), (c₁ * c₂) • f = c₁ • c₂ • f)
Equations
- Filter.Germ.distribMulAction' = DistribMulAction.mk (_ : ∀ (c : Filter.Germ l M), c • 0 = 0) (_ : ∀ (c : Filter.Germ l M) (f g : Filter.Germ l N), c • (f + g) = c • f + c • g)
Equations
- Filter.Germ.module' = Module.mk (_ : ∀ (c₁ c₂ : Filter.Germ l R) (f : Filter.Germ l M), (c₁ + c₂) • f = c₁ • f + c₂ • f) (_ : ∀ (f : Filter.Germ l M), 0 • f = 0)
Equations
- Filter.Germ.le = { le := Filter.Germ.LiftRel fun x x_1 => x ≤ x_1 }
Equations
- Filter.Germ.preorder = Preorder.mk (_ : ∀ (f : Filter.Germ l β), f ≤ f) (_ : ∀ (f₁ f₂ f₃ : Filter.Germ l β), f₁ ≤ f₂ → f₂ ≤ f₃ → f₁ ≤ f₃)
Equations
- Filter.Germ.partialOrder = let src := Filter.Germ.preorder; PartialOrder.mk (_ : ∀ (f g : Filter.Germ l β), f ≤ g → g ≤ f → f = g)
Equations
- Filter.Germ.orderBot = OrderBot.mk (_ : ∀ (f : Filter.Germ l β), ⊥ ≤ f)
Equations
- Filter.Germ.orderTop = OrderTop.mk (_ : ∀ (f : Filter.Germ l β), f ≤ ⊤)
Equations
- Filter.Germ.instBoundedOrderGermLe = let src := Filter.Germ.orderBot; let src_1 := Filter.Germ.orderTop; BoundedOrder.mk
Equations
- Filter.Germ.sup = { sup := Filter.Germ.map₂ fun x x_1 => x ⊔ x_1 }
Equations
- Filter.Germ.inf = { inf := Filter.Germ.map₂ fun x x_1 => x ⊓ x_1 }
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- Filter.Germ.distribLattice = let src := Filter.Germ.semilatticeSup; let src_1 := Filter.Germ.semilatticeInf; DistribLattice.mk (_ : ∀ (f g h : Filter.Germ l β), (f ⊔ g) ⊓ (f ⊔ h) ≤ f ⊔ g ⊓ h)
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- Filter.Germ.orderedCommSemiring = let src := Filter.Germ.orderedSemiring; let src_1 := Filter.Germ.commSemiring; OrderedCommSemiring.mk (_ : ∀ (a b : Filter.Germ l β), a * b = b * a)
Equations
- One or more equations did not get rendered due to their size.
Equations
- Filter.Germ.orderedCommRing = let src := Filter.Germ.orderedRing; let src_1 := Filter.Germ.orderedCommSemiring; OrderedCommRing.mk (_ : ∀ (a b : Filter.Germ l β), a * b = b * a)