topology.instances.triv_sq_zero_ext
⟷
Mathlib.Topology.Instances.TrivSqZeroExt
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Eric Wieser
-/
import Algebra.TrivSqZeroExt
-import Topology.Algebra.InfiniteSum.Basic
+import Topology.Algebra.InfiniteSum.Defs
import Topology.Algebra.Module.Basic
#align_import topology.instances.triv_sq_zero_ext from "leanprover-community/mathlib"@"75be6b616681ab6ca66d798ead117e75cd64f125"
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -100,38 +100,38 @@ theorem embedding_inr [Zero R] : Embedding (inr : M → tsze R M) :=
variable (R M)
-#print TrivSqZeroExt.fstClm /-
+#print TrivSqZeroExt.fstCLM /-
/-- `triv_sq_zero_ext.fst` as a continuous linear map. -/
@[simps]
-def fstClm [CommSemiring R] [AddCommMonoid M] [Module R M] : tsze R M →L[R] R :=
+def fstCLM [CommSemiring R] [AddCommMonoid M] [Module R M] : tsze R M →L[R] R :=
{ ContinuousLinearMap.fst R R M with toFun := fst }
-#align triv_sq_zero_ext.fst_clm TrivSqZeroExt.fstClm
+#align triv_sq_zero_ext.fst_clm TrivSqZeroExt.fstCLM
-/
-#print TrivSqZeroExt.sndClm /-
+#print TrivSqZeroExt.sndCLM /-
/-- `triv_sq_zero_ext.snd` as a continuous linear map. -/
@[simps]
-def sndClm [CommSemiring R] [AddCommMonoid M] [Module R M] : tsze R M →L[R] M :=
+def sndCLM [CommSemiring R] [AddCommMonoid M] [Module R M] : tsze R M →L[R] M :=
{ ContinuousLinearMap.snd R R M with
toFun := snd
cont := continuous_snd }
-#align triv_sq_zero_ext.snd_clm TrivSqZeroExt.sndClm
+#align triv_sq_zero_ext.snd_clm TrivSqZeroExt.sndCLM
-/
-#print TrivSqZeroExt.inlClm /-
+#print TrivSqZeroExt.inlCLM /-
/-- `triv_sq_zero_ext.inl` as a continuous linear map. -/
@[simps]
-def inlClm [CommSemiring R] [AddCommMonoid M] [Module R M] : R →L[R] tsze R M :=
+def inlCLM [CommSemiring R] [AddCommMonoid M] [Module R M] : R →L[R] tsze R M :=
{ ContinuousLinearMap.inl R R M with toFun := inl }
-#align triv_sq_zero_ext.inl_clm TrivSqZeroExt.inlClm
+#align triv_sq_zero_ext.inl_clm TrivSqZeroExt.inlCLM
-/
-#print TrivSqZeroExt.inrClm /-
+#print TrivSqZeroExt.inrCLM /-
/-- `triv_sq_zero_ext.inr` as a continuous linear map. -/
@[simps]
-def inrClm [CommSemiring R] [AddCommMonoid M] [Module R M] : M →L[R] tsze R M :=
+def inrCLM [CommSemiring R] [AddCommMonoid M] [Module R M] : M →L[R] tsze R M :=
{ ContinuousLinearMap.inr R R M with toFun := inr }
-#align triv_sq_zero_ext.inr_clm TrivSqZeroExt.inrClm
+#align triv_sq_zero_ext.inr_clm TrivSqZeroExt.inrCLM
-/
variable {R M}
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,9 +3,9 @@ Copyright (c) 2023 Eric Wieser. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Eric Wieser
-/
-import Mathbin.Algebra.TrivSqZeroExt
-import Mathbin.Topology.Algebra.InfiniteSum.Basic
-import Mathbin.Topology.Algebra.Module.Basic
+import Algebra.TrivSqZeroExt
+import Topology.Algebra.InfiniteSum.Basic
+import Topology.Algebra.Module.Basic
#align_import topology.instances.triv_sq_zero_ext from "leanprover-community/mathlib"@"75be6b616681ab6ca66d798ead117e75cd64f125"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
Copyright (c) 2023 Eric Wieser. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Eric Wieser
-
-! This file was ported from Lean 3 source module topology.instances.triv_sq_zero_ext
-! leanprover-community/mathlib commit 75be6b616681ab6ca66d798ead117e75cd64f125
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Algebra.TrivSqZeroExt
import Mathbin.Topology.Algebra.InfiniteSum.Basic
import Mathbin.Topology.Algebra.Module.Basic
+#align_import topology.instances.triv_sq_zero_ext from "leanprover-community/mathlib"@"75be6b616681ab6ca66d798ead117e75cd64f125"
+
/-!
# Topology on `triv_sq_zero_ext R M`
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -35,7 +35,6 @@ one value.
variable {α S R M : Type _}
--- mathport name: exprtsze
local notation "tsze" => TrivSqZeroExt
namespace TrivSqZeroExt
@@ -48,50 +47,71 @@ instance : TopologicalSpace (tsze R M) :=
instance [T2Space R] [T2Space M] : T2Space (tsze R M) :=
Prod.t2Space
+#print TrivSqZeroExt.nhds_def /-
theorem nhds_def (x : tsze R M) : nhds x = (nhds x.fst).Prod (nhds x.snd) := by
cases x <;> exact nhds_prod_eq
#align triv_sq_zero_ext.nhds_def TrivSqZeroExt.nhds_def
+-/
+#print TrivSqZeroExt.nhds_inl /-
theorem nhds_inl [Zero M] (x : R) : nhds (inl x : tsze R M) = (nhds x).Prod (nhds 0) :=
nhds_def _
#align triv_sq_zero_ext.nhds_inl TrivSqZeroExt.nhds_inl
+-/
+#print TrivSqZeroExt.nhds_inr /-
theorem nhds_inr [Zero R] (m : M) : nhds (inr m : tsze R M) = (nhds 0).Prod (nhds m) :=
nhds_def _
#align triv_sq_zero_ext.nhds_inr TrivSqZeroExt.nhds_inr
+-/
+#print TrivSqZeroExt.continuous_fst /-
theorem continuous_fst : Continuous (fst : tsze R M → R) :=
continuous_fst
#align triv_sq_zero_ext.continuous_fst TrivSqZeroExt.continuous_fst
+-/
+#print TrivSqZeroExt.continuous_snd /-
theorem continuous_snd : Continuous (snd : tsze R M → M) :=
continuous_snd
#align triv_sq_zero_ext.continuous_snd TrivSqZeroExt.continuous_snd
+-/
+#print TrivSqZeroExt.continuous_inl /-
theorem continuous_inl [Zero M] : Continuous (inl : R → tsze R M) :=
continuous_id.prod_mk continuous_const
#align triv_sq_zero_ext.continuous_inl TrivSqZeroExt.continuous_inl
+-/
+#print TrivSqZeroExt.continuous_inr /-
theorem continuous_inr [Zero R] : Continuous (inr : M → tsze R M) :=
continuous_const.prod_mk continuous_id
#align triv_sq_zero_ext.continuous_inr TrivSqZeroExt.continuous_inr
+-/
+#print TrivSqZeroExt.embedding_inl /-
theorem embedding_inl [Zero M] : Embedding (inl : R → tsze R M) :=
embedding_of_embedding_compose continuous_inl continuous_fst embedding_id
#align triv_sq_zero_ext.embedding_inl TrivSqZeroExt.embedding_inl
+-/
+#print TrivSqZeroExt.embedding_inr /-
theorem embedding_inr [Zero R] : Embedding (inr : M → tsze R M) :=
embedding_of_embedding_compose continuous_inr continuous_snd embedding_id
#align triv_sq_zero_ext.embedding_inr TrivSqZeroExt.embedding_inr
+-/
variable (R M)
+#print TrivSqZeroExt.fstClm /-
/-- `triv_sq_zero_ext.fst` as a continuous linear map. -/
@[simps]
def fstClm [CommSemiring R] [AddCommMonoid M] [Module R M] : tsze R M →L[R] R :=
{ ContinuousLinearMap.fst R R M with toFun := fst }
#align triv_sq_zero_ext.fst_clm TrivSqZeroExt.fstClm
+-/
+#print TrivSqZeroExt.sndClm /-
/-- `triv_sq_zero_ext.snd` as a continuous linear map. -/
@[simps]
def sndClm [CommSemiring R] [AddCommMonoid M] [Module R M] : tsze R M →L[R] M :=
@@ -99,18 +119,23 @@ def sndClm [CommSemiring R] [AddCommMonoid M] [Module R M] : tsze R M →L[R] M
toFun := snd
cont := continuous_snd }
#align triv_sq_zero_ext.snd_clm TrivSqZeroExt.sndClm
+-/
+#print TrivSqZeroExt.inlClm /-
/-- `triv_sq_zero_ext.inl` as a continuous linear map. -/
@[simps]
def inlClm [CommSemiring R] [AddCommMonoid M] [Module R M] : R →L[R] tsze R M :=
{ ContinuousLinearMap.inl R R M with toFun := inl }
#align triv_sq_zero_ext.inl_clm TrivSqZeroExt.inlClm
+-/
+#print TrivSqZeroExt.inrClm /-
/-- `triv_sq_zero_ext.inr` as a continuous linear map. -/
@[simps]
def inrClm [CommSemiring R] [AddCommMonoid M] [Module R M] : M →L[R] tsze R M :=
{ ContinuousLinearMap.inr R R M with toFun := inr }
#align triv_sq_zero_ext.inr_clm TrivSqZeroExt.inrClm
+-/
variable {R M}
@@ -127,6 +152,7 @@ instance [Mul R] [Add M] [SMul R M] [SMul Rᵐᵒᵖ M] [ContinuousMul R] [Conti
instance [Neg R] [Neg M] [ContinuousNeg R] [ContinuousNeg M] : ContinuousNeg (tsze R M) :=
Prod.has_continuous_neg
+#print TrivSqZeroExt.topologicalSemiring /-
/-- This is not an instance due to complaints by the `fails_quickly` linter. At any rate, we only
really care about the `topological_ring` instance below. -/
theorem topologicalSemiring [Semiring R] [AddCommMonoid M] [Module R M] [Module Rᵐᵒᵖ M]
@@ -137,6 +163,7 @@ theorem topologicalSemiring [Semiring R] [AddCommMonoid M] [Module R M] [Module
(tsze R M) _ (NonAssocSemiring.toNonUnitalNonAssocSemiring _) :=
{ }
#align triv_sq_zero_ext.topological_semiring TrivSqZeroExt.topologicalSemiring
+-/
instance [Ring R] [AddCommGroup M] [Module R M] [Module Rᵐᵒᵖ M] [TopologicalRing R]
[TopologicalAddGroup M] [ContinuousSMul R M] [ContinuousSMul Rᵐᵒᵖ M] :
@@ -152,25 +179,33 @@ instance [TopologicalSpace S] [SMul S R] [SMul S M] [ContinuousSMul S R] [Contin
variable (M)
+#print TrivSqZeroExt.hasSum_inl /-
theorem hasSum_inl [AddCommMonoid R] [AddCommMonoid M] {f : α → R} {a : R} (h : HasSum f a) :
HasSum (fun x => inl (f x)) (inl a : tsze R M) :=
h.map (⟨inl, inl_zero _, inl_add _⟩ : R →+ tsze R M) continuous_inl
#align triv_sq_zero_ext.has_sum_inl TrivSqZeroExt.hasSum_inl
+-/
+#print TrivSqZeroExt.hasSum_inr /-
theorem hasSum_inr [AddCommMonoid R] [AddCommMonoid M] {f : α → M} {a : M} (h : HasSum f a) :
HasSum (fun x => inr (f x)) (inr a : tsze R M) :=
h.map (⟨inr, inr_zero _, inr_add _⟩ : M →+ tsze R M) continuous_inr
#align triv_sq_zero_ext.has_sum_inr TrivSqZeroExt.hasSum_inr
+-/
+#print TrivSqZeroExt.hasSum_fst /-
theorem hasSum_fst [AddCommMonoid R] [AddCommMonoid M] {f : α → tsze R M} {a : tsze R M}
(h : HasSum f a) : HasSum (fun x => fst (f x)) (fst a) :=
h.map (⟨fst, fst_zero, fst_add⟩ : tsze R M →+ R) continuous_fst
#align triv_sq_zero_ext.has_sum_fst TrivSqZeroExt.hasSum_fst
+-/
+#print TrivSqZeroExt.hasSum_snd /-
theorem hasSum_snd [AddCommMonoid R] [AddCommMonoid M] {f : α → tsze R M} {a : tsze R M}
(h : HasSum f a) : HasSum (fun x => snd (f x)) (snd a) :=
h.map (⟨snd, snd_zero, snd_add⟩ : tsze R M →+ M) continuous_snd
#align triv_sq_zero_ext.has_sum_snd TrivSqZeroExt.hasSum_snd
+-/
end TrivSqZeroExt
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -48,116 +48,50 @@ instance : TopologicalSpace (tsze R M) :=
instance [T2Space R] [T2Space M] : T2Space (tsze R M) :=
Prod.t2Space
-/- warning: triv_sq_zero_ext.nhds_def -> TrivSqZeroExt.nhds_def is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] (x : TrivSqZeroExt.{u1, u2} R M), Eq.{succ (max u1 u2)} (Filter.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M)) (nhds.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) x) (Filter.prod.{u1, u2} R M (nhds.{u1} R _inst_1 (TrivSqZeroExt.fst.{u1, u2} R M x)) (nhds.{u2} M _inst_2 (TrivSqZeroExt.snd.{u1, u2} R M x)))
-but is expected to have type
- forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u1} M] (x : TrivSqZeroExt.{u2, u1} R M), Eq.{max (succ u2) (succ u1)} (Filter.{max u2 u1} (TrivSqZeroExt.{u2, u1} R M)) (nhds.{max u2 u1} (TrivSqZeroExt.{u2, u1} R M) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u2, u1} R M _inst_1 _inst_2) x) (Filter.prod.{u2, u1} R M (nhds.{u2} R _inst_1 (TrivSqZeroExt.fst.{u2, u1} R M x)) (nhds.{u1} M _inst_2 (TrivSqZeroExt.snd.{u2, u1} R M x)))
-Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.nhds_def TrivSqZeroExt.nhds_defₓ'. -/
theorem nhds_def (x : tsze R M) : nhds x = (nhds x.fst).Prod (nhds x.snd) := by
cases x <;> exact nhds_prod_eq
#align triv_sq_zero_ext.nhds_def TrivSqZeroExt.nhds_def
-/- warning: triv_sq_zero_ext.nhds_inl -> TrivSqZeroExt.nhds_inl is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Zero.{u2} M] (x : R), Eq.{succ (max u1 u2)} (Filter.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M)) (nhds.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.inl.{u1, u2} R M _inst_3 x)) (Filter.prod.{u1, u2} R M (nhds.{u1} R _inst_1 x) (nhds.{u2} M _inst_2 (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_3)))))
-but is expected to have type
- forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Zero.{u2} M] (x : R), Eq.{max (succ u1) (succ u2)} (Filter.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M)) (nhds.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.inl.{u1, u2} R M _inst_3 x)) (Filter.prod.{u1, u2} R M (nhds.{u1} R _inst_1 x) (nhds.{u2} M _inst_2 (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M _inst_3))))
-Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.nhds_inl TrivSqZeroExt.nhds_inlₓ'. -/
theorem nhds_inl [Zero M] (x : R) : nhds (inl x : tsze R M) = (nhds x).Prod (nhds 0) :=
nhds_def _
#align triv_sq_zero_ext.nhds_inl TrivSqZeroExt.nhds_inl
-/- warning: triv_sq_zero_ext.nhds_inr -> TrivSqZeroExt.nhds_inr is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Zero.{u1} R] (m : M), Eq.{succ (max u1 u2)} (Filter.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M)) (nhds.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.inr.{u1, u2} R M _inst_3 m)) (Filter.prod.{u1, u2} R M (nhds.{u1} R _inst_1 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R _inst_3)))) (nhds.{u2} M _inst_2 m))
-but is expected to have type
- forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : Zero.{u2} R] (m : M), Eq.{max (succ u2) (succ u1)} (Filter.{max u2 u1} (TrivSqZeroExt.{u2, u1} R M)) (nhds.{max u2 u1} (TrivSqZeroExt.{u2, u1} R M) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u2, u1} R M _inst_1 _inst_2) (TrivSqZeroExt.inr.{u2, u1} R M _inst_3 m)) (Filter.prod.{u2, u1} R M (nhds.{u2} R _inst_1 (OfNat.ofNat.{u2} R 0 (Zero.toOfNat0.{u2} R _inst_3))) (nhds.{u1} M _inst_2 m))
-Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.nhds_inr TrivSqZeroExt.nhds_inrₓ'. -/
theorem nhds_inr [Zero R] (m : M) : nhds (inr m : tsze R M) = (nhds 0).Prod (nhds m) :=
nhds_def _
#align triv_sq_zero_ext.nhds_inr TrivSqZeroExt.nhds_inr
-/- warning: triv_sq_zero_ext.continuous_fst -> TrivSqZeroExt.continuous_fst is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M], Continuous.{max u1 u2, u1} (TrivSqZeroExt.{u1, u2} R M) R (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) _inst_1 (TrivSqZeroExt.fst.{u1, u2} R M)
-but is expected to have type
- forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u1} M], Continuous.{max u2 u1, u2} (TrivSqZeroExt.{u2, u1} R M) R (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u2, u1} R M _inst_1 _inst_2) _inst_1 (TrivSqZeroExt.fst.{u2, u1} R M)
-Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.continuous_fst TrivSqZeroExt.continuous_fstₓ'. -/
theorem continuous_fst : Continuous (fst : tsze R M → R) :=
continuous_fst
#align triv_sq_zero_ext.continuous_fst TrivSqZeroExt.continuous_fst
-/- warning: triv_sq_zero_ext.continuous_snd -> TrivSqZeroExt.continuous_snd is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M], Continuous.{max u1 u2, u2} (TrivSqZeroExt.{u1, u2} R M) M (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) _inst_2 (TrivSqZeroExt.snd.{u1, u2} R M)
-but is expected to have type
- forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u1} M], Continuous.{max u2 u1, u1} (TrivSqZeroExt.{u2, u1} R M) M (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u2, u1} R M _inst_1 _inst_2) _inst_2 (TrivSqZeroExt.snd.{u2, u1} R M)
-Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.continuous_snd TrivSqZeroExt.continuous_sndₓ'. -/
theorem continuous_snd : Continuous (snd : tsze R M → M) :=
continuous_snd
#align triv_sq_zero_ext.continuous_snd TrivSqZeroExt.continuous_snd
-/- warning: triv_sq_zero_ext.continuous_inl -> TrivSqZeroExt.continuous_inl is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Zero.{u2} M], Continuous.{u1, max u1 u2} R (TrivSqZeroExt.{u1, u2} R M) _inst_1 (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.inl.{u1, u2} R M _inst_3)
-but is expected to have type
- forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Zero.{u2} M], Continuous.{u1, max u1 u2} R (TrivSqZeroExt.{u1, u2} R M) _inst_1 (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.inl.{u1, u2} R M _inst_3)
-Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.continuous_inl TrivSqZeroExt.continuous_inlₓ'. -/
theorem continuous_inl [Zero M] : Continuous (inl : R → tsze R M) :=
continuous_id.prod_mk continuous_const
#align triv_sq_zero_ext.continuous_inl TrivSqZeroExt.continuous_inl
-/- warning: triv_sq_zero_ext.continuous_inr -> TrivSqZeroExt.continuous_inr is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Zero.{u1} R], Continuous.{u2, max u1 u2} M (TrivSqZeroExt.{u1, u2} R M) _inst_2 (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.inr.{u1, u2} R M _inst_3)
-but is expected to have type
- forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : Zero.{u2} R], Continuous.{u1, max u2 u1} M (TrivSqZeroExt.{u2, u1} R M) _inst_2 (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u2, u1} R M _inst_1 _inst_2) (TrivSqZeroExt.inr.{u2, u1} R M _inst_3)
-Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.continuous_inr TrivSqZeroExt.continuous_inrₓ'. -/
theorem continuous_inr [Zero R] : Continuous (inr : M → tsze R M) :=
continuous_const.prod_mk continuous_id
#align triv_sq_zero_ext.continuous_inr TrivSqZeroExt.continuous_inr
-/- warning: triv_sq_zero_ext.embedding_inl -> TrivSqZeroExt.embedding_inl is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Zero.{u2} M], Embedding.{u1, max u1 u2} R (TrivSqZeroExt.{u1, u2} R M) _inst_1 (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.inl.{u1, u2} R M _inst_3)
-but is expected to have type
- forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Zero.{u2} M], Embedding.{u1, max u1 u2} R (TrivSqZeroExt.{u1, u2} R M) _inst_1 (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.inl.{u1, u2} R M _inst_3)
-Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.embedding_inl TrivSqZeroExt.embedding_inlₓ'. -/
theorem embedding_inl [Zero M] : Embedding (inl : R → tsze R M) :=
embedding_of_embedding_compose continuous_inl continuous_fst embedding_id
#align triv_sq_zero_ext.embedding_inl TrivSqZeroExt.embedding_inl
-/- warning: triv_sq_zero_ext.embedding_inr -> TrivSqZeroExt.embedding_inr is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Zero.{u1} R], Embedding.{u2, max u1 u2} M (TrivSqZeroExt.{u1, u2} R M) _inst_2 (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.inr.{u1, u2} R M _inst_3)
-but is expected to have type
- forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : Zero.{u2} R], Embedding.{u1, max u2 u1} M (TrivSqZeroExt.{u2, u1} R M) _inst_2 (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u2, u1} R M _inst_1 _inst_2) (TrivSqZeroExt.inr.{u2, u1} R M _inst_3)
-Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.embedding_inr TrivSqZeroExt.embedding_inrₓ'. -/
theorem embedding_inr [Zero R] : Embedding (inr : M → tsze R M) :=
embedding_of_embedding_compose continuous_inr continuous_snd embedding_id
#align triv_sq_zero_ext.embedding_inr TrivSqZeroExt.embedding_inr
variable (R M)
-/- warning: triv_sq_zero_ext.fst_clm -> TrivSqZeroExt.fstClm is a dubious translation:
-lean 3 declaration is
- forall (R : Type.{u1}) (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : CommSemiring.{u1} R] [_inst_4 : AddCommMonoid.{u2} M] [_inst_5 : Module.{u1, u2} R M (CommSemiring.toSemiring.{u1} R _inst_3) _inst_4], ContinuousLinearMap.{u1, u1, max u1 u2, u1} R R (CommSemiring.toSemiring.{u1} R _inst_3) (CommSemiring.toSemiring.{u1} R _inst_3) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.addCommMonoid.{u1, u2} R M (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4) R _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) (TrivSqZeroExt.module.{u1, u2, u1} R R M (CommSemiring.toSemiring.{u1} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4 (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_5) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))
-but is expected to have type
- forall (R : Type.{u1}) (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : CommSemiring.{u1} R] [_inst_4 : AddCommMonoid.{u2} M] [_inst_5 : Module.{u1, u2} R M (CommSemiring.toSemiring.{u1} R _inst_3) _inst_4], ContinuousLinearMap.{u1, u1, max u2 u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_3) (CommSemiring.toSemiring.{u1} R _inst_3) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.addCommMonoid.{u1, u2} R M (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4) R _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) (TrivSqZeroExt.module.{u1, u2, u1} R R M (CommSemiring.toSemiring.{u1} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4 (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_5) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))
-Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.fst_clm TrivSqZeroExt.fstClmₓ'. -/
/-- `triv_sq_zero_ext.fst` as a continuous linear map. -/
@[simps]
def fstClm [CommSemiring R] [AddCommMonoid M] [Module R M] : tsze R M →L[R] R :=
{ ContinuousLinearMap.fst R R M with toFun := fst }
#align triv_sq_zero_ext.fst_clm TrivSqZeroExt.fstClm
-/- warning: triv_sq_zero_ext.snd_clm -> TrivSqZeroExt.sndClm is a dubious translation:
-lean 3 declaration is
- forall (R : Type.{u1}) (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : CommSemiring.{u1} R] [_inst_4 : AddCommMonoid.{u2} M] [_inst_5 : Module.{u1, u2} R M (CommSemiring.toSemiring.{u1} R _inst_3) _inst_4], ContinuousLinearMap.{u1, u1, max u1 u2, u2} R R (CommSemiring.toSemiring.{u1} R _inst_3) (CommSemiring.toSemiring.{u1} R _inst_3) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.addCommMonoid.{u1, u2} R M (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4) M _inst_2 _inst_4 (TrivSqZeroExt.module.{u1, u2, u1} R R M (CommSemiring.toSemiring.{u1} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4 (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_5) _inst_5
-but is expected to have type
- forall (R : Type.{u1}) (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : CommSemiring.{u1} R] [_inst_4 : AddCommMonoid.{u2} M] [_inst_5 : Module.{u1, u2} R M (CommSemiring.toSemiring.{u1} R _inst_3) _inst_4], ContinuousLinearMap.{u1, u1, max u2 u1, u2} R R (CommSemiring.toSemiring.{u1} R _inst_3) (CommSemiring.toSemiring.{u1} R _inst_3) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.addCommMonoid.{u1, u2} R M (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4) M _inst_2 _inst_4 (TrivSqZeroExt.module.{u1, u2, u1} R R M (CommSemiring.toSemiring.{u1} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4 (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_5) _inst_5
-Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.snd_clm TrivSqZeroExt.sndClmₓ'. -/
/-- `triv_sq_zero_ext.snd` as a continuous linear map. -/
@[simps]
def sndClm [CommSemiring R] [AddCommMonoid M] [Module R M] : tsze R M →L[R] M :=
@@ -166,24 +100,12 @@ def sndClm [CommSemiring R] [AddCommMonoid M] [Module R M] : tsze R M →L[R] M
cont := continuous_snd }
#align triv_sq_zero_ext.snd_clm TrivSqZeroExt.sndClm
-/- warning: triv_sq_zero_ext.inl_clm -> TrivSqZeroExt.inlClm is a dubious translation:
-lean 3 declaration is
- forall (R : Type.{u1}) (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : CommSemiring.{u1} R] [_inst_4 : AddCommMonoid.{u2} M] [_inst_5 : Module.{u1, u2} R M (CommSemiring.toSemiring.{u1} R _inst_3) _inst_4], ContinuousLinearMap.{u1, u1, u1, max u1 u2} R R (CommSemiring.toSemiring.{u1} R _inst_3) (CommSemiring.toSemiring.{u1} R _inst_3) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))) R _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.addCommMonoid.{u1, u2} R M (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) (TrivSqZeroExt.module.{u1, u2, u1} R R M (CommSemiring.toSemiring.{u1} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4 (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_5)
-but is expected to have type
- forall (R : Type.{u1}) (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : CommSemiring.{u1} R] [_inst_4 : AddCommMonoid.{u2} M] [_inst_5 : Module.{u1, u2} R M (CommSemiring.toSemiring.{u1} R _inst_3) _inst_4], ContinuousLinearMap.{u1, u1, u1, max u2 u1} R R (CommSemiring.toSemiring.{u1} R _inst_3) (CommSemiring.toSemiring.{u1} R _inst_3) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))) R _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.addCommMonoid.{u1, u2} R M (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) (TrivSqZeroExt.module.{u1, u2, u1} R R M (CommSemiring.toSemiring.{u1} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4 (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_5)
-Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inl_clm TrivSqZeroExt.inlClmₓ'. -/
/-- `triv_sq_zero_ext.inl` as a continuous linear map. -/
@[simps]
def inlClm [CommSemiring R] [AddCommMonoid M] [Module R M] : R →L[R] tsze R M :=
{ ContinuousLinearMap.inl R R M with toFun := inl }
#align triv_sq_zero_ext.inl_clm TrivSqZeroExt.inlClm
-/- warning: triv_sq_zero_ext.inr_clm -> TrivSqZeroExt.inrClm is a dubious translation:
-lean 3 declaration is
- forall (R : Type.{u1}) (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : CommSemiring.{u1} R] [_inst_4 : AddCommMonoid.{u2} M] [_inst_5 : Module.{u1, u2} R M (CommSemiring.toSemiring.{u1} R _inst_3) _inst_4], ContinuousLinearMap.{u1, u1, u2, max u1 u2} R R (CommSemiring.toSemiring.{u1} R _inst_3) (CommSemiring.toSemiring.{u1} R _inst_3) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))) M _inst_2 _inst_4 (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.addCommMonoid.{u1, u2} R M (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4) _inst_5 (TrivSqZeroExt.module.{u1, u2, u1} R R M (CommSemiring.toSemiring.{u1} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4 (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_5)
-but is expected to have type
- forall (R : Type.{u1}) (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : CommSemiring.{u1} R] [_inst_4 : AddCommMonoid.{u2} M] [_inst_5 : Module.{u1, u2} R M (CommSemiring.toSemiring.{u1} R _inst_3) _inst_4], ContinuousLinearMap.{u1, u1, u2, max u2 u1} R R (CommSemiring.toSemiring.{u1} R _inst_3) (CommSemiring.toSemiring.{u1} R _inst_3) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))) M _inst_2 _inst_4 (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.addCommMonoid.{u1, u2} R M (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4) _inst_5 (TrivSqZeroExt.module.{u1, u2, u1} R R M (CommSemiring.toSemiring.{u1} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4 (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_5)
-Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inr_clm TrivSqZeroExt.inrClmₓ'. -/
/-- `triv_sq_zero_ext.inr` as a continuous linear map. -/
@[simps]
def inrClm [CommSemiring R] [AddCommMonoid M] [Module R M] : M →L[R] tsze R M :=
@@ -205,12 +127,6 @@ instance [Mul R] [Add M] [SMul R M] [SMul Rᵐᵒᵖ M] [ContinuousMul R] [Conti
instance [Neg R] [Neg M] [ContinuousNeg R] [ContinuousNeg M] : ContinuousNeg (tsze R M) :=
Prod.has_continuous_neg
-/- warning: triv_sq_zero_ext.topological_semiring -> TrivSqZeroExt.topologicalSemiring is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Semiring.{u1} R] [_inst_4 : AddCommMonoid.{u2} M] [_inst_5 : Module.{u1, u2} R M _inst_3 _inst_4] [_inst_6 : Module.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_3) _inst_4] [_inst_7 : TopologicalSemiring.{u1} R _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_3))] [_inst_8 : ContinuousAdd.{u2} M _inst_2 (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)))] [_inst_9 : ContinuousSMul.{u1, u2} R M (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_3)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R _inst_3) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R M _inst_3 _inst_4 _inst_5)))) _inst_1 _inst_2] [_inst_10 : ContinuousSMul.{u1, u2} (MulOpposite.{u1} R) M (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R) (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R) (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R) (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R) M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_3) _inst_4 _inst_6)))) (MulOpposite.topologicalSpace.{u1} R _inst_1) _inst_2], TopologicalSemiring.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.nonAssocSemiring.{u1, u2} R M _inst_3 _inst_4 _inst_5 _inst_6))
-but is expected to have type
- forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : Semiring.{u2} R] [_inst_4 : AddCommMonoid.{u1} M] [_inst_5 : Module.{u2, u1} R M _inst_3 _inst_4] [_inst_6 : Module.{u2, u1} (MulOpposite.{u2} R) M (MulOpposite.semiring.{u2} R _inst_3) _inst_4] [_inst_7 : TopologicalSemiring.{u2} R _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_3))] [_inst_8 : ContinuousAdd.{u1} M _inst_2 (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_4)))] [_inst_9 : ContinuousSMul.{u2, u1} R M (SMulZeroClass.toSMul.{u2, u1} R M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u1} R M (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_3)) (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u1} R M (Semiring.toMonoidWithZero.{u2} R _inst_3) (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_4)) (Module.toMulActionWithZero.{u2, u1} R M _inst_3 _inst_4 _inst_5)))) _inst_1 _inst_2] [_inst_10 : ContinuousSMul.{u2, u1} (MulOpposite.{u2} R) M (SMulZeroClass.toSMul.{u2, u1} (MulOpposite.{u2} R) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u1} (MulOpposite.{u2} R) M (MulOpposite.zero.{u2} R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_3))) (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u1} (MulOpposite.{u2} R) M (MulOpposite.monoidWithZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_3)) (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_4)) (Module.toMulActionWithZero.{u2, u1} (MulOpposite.{u2} R) M (MulOpposite.semiring.{u2} R _inst_3) _inst_4 _inst_6)))) (MulOpposite.instTopologicalSpaceMulOpposite.{u2} R _inst_1) _inst_2], TopologicalSemiring.{max u1 u2} (TrivSqZeroExt.{u2, u1} R M) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u2, u1} R M _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (TrivSqZeroExt.{u2, u1} R M) (TrivSqZeroExt.nonAssocSemiring.{u2, u1} R M _inst_3 _inst_4 _inst_5 _inst_6))
-Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.topological_semiring TrivSqZeroExt.topologicalSemiringₓ'. -/
/-- This is not an instance due to complaints by the `fails_quickly` linter. At any rate, we only
really care about the `topological_ring` instance below. -/
theorem topologicalSemiring [Semiring R] [AddCommMonoid M] [Module R M] [Module Rᵐᵒᵖ M]
@@ -236,45 +152,21 @@ instance [TopologicalSpace S] [SMul S R] [SMul S M] [ContinuousSMul S R] [Contin
variable (M)
-/- warning: triv_sq_zero_ext.has_sum_inl -> TrivSqZeroExt.hasSum_inl is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {R : Type.{u2}} (M : Type.{u3}) [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : AddCommMonoid.{u2} R] [_inst_4 : AddCommMonoid.{u3} M] {f : α -> R} {a : R}, (HasSum.{u2, u1} R α _inst_3 _inst_1 f a) -> (HasSum.{max u2 u3, u1} (TrivSqZeroExt.{u2, u3} R M) α (TrivSqZeroExt.addCommMonoid.{u2, u3} R M _inst_3 _inst_4) (TrivSqZeroExt.topologicalSpace.{u2, u3} R M _inst_1 _inst_2) (fun (x : α) => TrivSqZeroExt.inl.{u2, u3} R M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4))) (f x)) (TrivSqZeroExt.inl.{u2, u3} R M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4))) a))
-but is expected to have type
- forall {α : Type.{u1}} {R : Type.{u3}} (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u3} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : AddCommMonoid.{u3} R] [_inst_4 : AddCommMonoid.{u2} M] {f : α -> R} {a : R}, (HasSum.{u3, u1} R α _inst_3 _inst_1 f a) -> (HasSum.{max u2 u3, u1} (TrivSqZeroExt.{u3, u2} R M) α (TrivSqZeroExt.addCommMonoid.{u3, u2} R M _inst_3 _inst_4) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u3, u2} R M _inst_1 _inst_2) (fun (x : α) => TrivSqZeroExt.inl.{u3, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (f x)) (TrivSqZeroExt.inl.{u3, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) a))
-Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.has_sum_inl TrivSqZeroExt.hasSum_inlₓ'. -/
theorem hasSum_inl [AddCommMonoid R] [AddCommMonoid M] {f : α → R} {a : R} (h : HasSum f a) :
HasSum (fun x => inl (f x)) (inl a : tsze R M) :=
h.map (⟨inl, inl_zero _, inl_add _⟩ : R →+ tsze R M) continuous_inl
#align triv_sq_zero_ext.has_sum_inl TrivSqZeroExt.hasSum_inl
-/- warning: triv_sq_zero_ext.has_sum_inr -> TrivSqZeroExt.hasSum_inr is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {R : Type.{u2}} (M : Type.{u3}) [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : AddCommMonoid.{u2} R] [_inst_4 : AddCommMonoid.{u3} M] {f : α -> M} {a : M}, (HasSum.{u3, u1} M α _inst_4 _inst_2 f a) -> (HasSum.{max u2 u3, u1} (TrivSqZeroExt.{u2, u3} R M) α (TrivSqZeroExt.addCommMonoid.{u2, u3} R M _inst_3 _inst_4) (TrivSqZeroExt.topologicalSpace.{u2, u3} R M _inst_1 _inst_2) (fun (x : α) => TrivSqZeroExt.inr.{u2, u3} R M (AddZeroClass.toHasZero.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R _inst_3))) (f x)) (TrivSqZeroExt.inr.{u2, u3} R M (AddZeroClass.toHasZero.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R _inst_3))) a))
-but is expected to have type
- forall {α : Type.{u1}} {R : Type.{u3}} (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u3} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : AddCommMonoid.{u3} R] [_inst_4 : AddCommMonoid.{u2} M] {f : α -> M} {a : M}, (HasSum.{u2, u1} M α _inst_4 _inst_2 f a) -> (HasSum.{max u2 u3, u1} (TrivSqZeroExt.{u3, u2} R M) α (TrivSqZeroExt.addCommMonoid.{u3, u2} R M _inst_3 _inst_4) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u3, u2} R M _inst_1 _inst_2) (fun (x : α) => TrivSqZeroExt.inr.{u3, u2} R M (AddMonoid.toZero.{u3} R (AddCommMonoid.toAddMonoid.{u3} R _inst_3)) (f x)) (TrivSqZeroExt.inr.{u3, u2} R M (AddMonoid.toZero.{u3} R (AddCommMonoid.toAddMonoid.{u3} R _inst_3)) a))
-Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.has_sum_inr TrivSqZeroExt.hasSum_inrₓ'. -/
theorem hasSum_inr [AddCommMonoid R] [AddCommMonoid M] {f : α → M} {a : M} (h : HasSum f a) :
HasSum (fun x => inr (f x)) (inr a : tsze R M) :=
h.map (⟨inr, inr_zero _, inr_add _⟩ : M →+ tsze R M) continuous_inr
#align triv_sq_zero_ext.has_sum_inr TrivSqZeroExt.hasSum_inr
-/- warning: triv_sq_zero_ext.has_sum_fst -> TrivSqZeroExt.hasSum_fst is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {R : Type.{u2}} (M : Type.{u3}) [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : AddCommMonoid.{u2} R] [_inst_4 : AddCommMonoid.{u3} M] {f : α -> (TrivSqZeroExt.{u2, u3} R M)} {a : TrivSqZeroExt.{u2, u3} R M}, (HasSum.{max u2 u3, u1} (TrivSqZeroExt.{u2, u3} R M) α (TrivSqZeroExt.addCommMonoid.{u2, u3} R M _inst_3 _inst_4) (TrivSqZeroExt.topologicalSpace.{u2, u3} R M _inst_1 _inst_2) f a) -> (HasSum.{u2, u1} R α _inst_3 _inst_1 (fun (x : α) => TrivSqZeroExt.fst.{u2, u3} R M (f x)) (TrivSqZeroExt.fst.{u2, u3} R M a))
-but is expected to have type
- forall {α : Type.{u1}} {R : Type.{u3}} (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u3} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : AddCommMonoid.{u3} R] [_inst_4 : AddCommMonoid.{u2} M] {f : α -> (TrivSqZeroExt.{u3, u2} R M)} {a : TrivSqZeroExt.{u3, u2} R M}, (HasSum.{max u3 u2, u1} (TrivSqZeroExt.{u3, u2} R M) α (TrivSqZeroExt.addCommMonoid.{u3, u2} R M _inst_3 _inst_4) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u3, u2} R M _inst_1 _inst_2) f a) -> (HasSum.{u3, u1} R α _inst_3 _inst_1 (fun (x : α) => TrivSqZeroExt.fst.{u3, u2} R M (f x)) (TrivSqZeroExt.fst.{u3, u2} R M a))
-Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.has_sum_fst TrivSqZeroExt.hasSum_fstₓ'. -/
theorem hasSum_fst [AddCommMonoid R] [AddCommMonoid M] {f : α → tsze R M} {a : tsze R M}
(h : HasSum f a) : HasSum (fun x => fst (f x)) (fst a) :=
h.map (⟨fst, fst_zero, fst_add⟩ : tsze R M →+ R) continuous_fst
#align triv_sq_zero_ext.has_sum_fst TrivSqZeroExt.hasSum_fst
-/- warning: triv_sq_zero_ext.has_sum_snd -> TrivSqZeroExt.hasSum_snd is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {R : Type.{u2}} (M : Type.{u3}) [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : AddCommMonoid.{u2} R] [_inst_4 : AddCommMonoid.{u3} M] {f : α -> (TrivSqZeroExt.{u2, u3} R M)} {a : TrivSqZeroExt.{u2, u3} R M}, (HasSum.{max u2 u3, u1} (TrivSqZeroExt.{u2, u3} R M) α (TrivSqZeroExt.addCommMonoid.{u2, u3} R M _inst_3 _inst_4) (TrivSqZeroExt.topologicalSpace.{u2, u3} R M _inst_1 _inst_2) f a) -> (HasSum.{u3, u1} M α _inst_4 _inst_2 (fun (x : α) => TrivSqZeroExt.snd.{u2, u3} R M (f x)) (TrivSqZeroExt.snd.{u2, u3} R M a))
-but is expected to have type
- forall {α : Type.{u1}} {R : Type.{u3}} (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u3} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : AddCommMonoid.{u3} R] [_inst_4 : AddCommMonoid.{u2} M] {f : α -> (TrivSqZeroExt.{u3, u2} R M)} {a : TrivSqZeroExt.{u3, u2} R M}, (HasSum.{max u3 u2, u1} (TrivSqZeroExt.{u3, u2} R M) α (TrivSqZeroExt.addCommMonoid.{u3, u2} R M _inst_3 _inst_4) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u3, u2} R M _inst_1 _inst_2) f a) -> (HasSum.{u2, u1} M α _inst_4 _inst_2 (fun (x : α) => TrivSqZeroExt.snd.{u3, u2} R M (f x)) (TrivSqZeroExt.snd.{u3, u2} R M a))
-Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.has_sum_snd TrivSqZeroExt.hasSum_sndₓ'. -/
theorem hasSum_snd [AddCommMonoid R] [AddCommMonoid M] {f : α → tsze R M} {a : tsze R M}
(h : HasSum f a) : HasSum (fun x => snd (f x)) (snd a) :=
h.map (⟨snd, snd_zero, snd_add⟩ : tsze R M →+ M) continuous_snd
mathlib commit https://github.com/leanprover-community/mathlib/commit/5ec62c8106221a3f9160e4e4fcc3eed79fe213e9
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Eric Wieser
! This file was ported from Lean 3 source module topology.instances.triv_sq_zero_ext
-! leanprover-community/mathlib commit b8d2eaa69d69ce8f03179a5cda774fc0cde984e4
+! leanprover-community/mathlib commit 75be6b616681ab6ca66d798ead117e75cd64f125
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -15,6 +15,9 @@ import Mathbin.Topology.Algebra.Module.Basic
/-!
# Topology on `triv_sq_zero_ext R M`
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
The type `triv_sq_zero_ext R M` inherits the topology from `R × M`.
Note that this is not the topology induced by the seminorm on the dual numbers suggested by
mathlib commit https://github.com/leanprover-community/mathlib/commit/1a4df69ca1a9a0e5e26bfe12e2b92814216016d0
@@ -45,50 +45,116 @@ instance : TopologicalSpace (tsze R M) :=
instance [T2Space R] [T2Space M] : T2Space (tsze R M) :=
Prod.t2Space
+/- warning: triv_sq_zero_ext.nhds_def -> TrivSqZeroExt.nhds_def is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] (x : TrivSqZeroExt.{u1, u2} R M), Eq.{succ (max u1 u2)} (Filter.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M)) (nhds.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) x) (Filter.prod.{u1, u2} R M (nhds.{u1} R _inst_1 (TrivSqZeroExt.fst.{u1, u2} R M x)) (nhds.{u2} M _inst_2 (TrivSqZeroExt.snd.{u1, u2} R M x)))
+but is expected to have type
+ forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u1} M] (x : TrivSqZeroExt.{u2, u1} R M), Eq.{max (succ u2) (succ u1)} (Filter.{max u2 u1} (TrivSqZeroExt.{u2, u1} R M)) (nhds.{max u2 u1} (TrivSqZeroExt.{u2, u1} R M) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u2, u1} R M _inst_1 _inst_2) x) (Filter.prod.{u2, u1} R M (nhds.{u2} R _inst_1 (TrivSqZeroExt.fst.{u2, u1} R M x)) (nhds.{u1} M _inst_2 (TrivSqZeroExt.snd.{u2, u1} R M x)))
+Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.nhds_def TrivSqZeroExt.nhds_defₓ'. -/
theorem nhds_def (x : tsze R M) : nhds x = (nhds x.fst).Prod (nhds x.snd) := by
cases x <;> exact nhds_prod_eq
#align triv_sq_zero_ext.nhds_def TrivSqZeroExt.nhds_def
+/- warning: triv_sq_zero_ext.nhds_inl -> TrivSqZeroExt.nhds_inl is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Zero.{u2} M] (x : R), Eq.{succ (max u1 u2)} (Filter.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M)) (nhds.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.inl.{u1, u2} R M _inst_3 x)) (Filter.prod.{u1, u2} R M (nhds.{u1} R _inst_1 x) (nhds.{u2} M _inst_2 (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M _inst_3)))))
+but is expected to have type
+ forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Zero.{u2} M] (x : R), Eq.{max (succ u1) (succ u2)} (Filter.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M)) (nhds.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.inl.{u1, u2} R M _inst_3 x)) (Filter.prod.{u1, u2} R M (nhds.{u1} R _inst_1 x) (nhds.{u2} M _inst_2 (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M _inst_3))))
+Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.nhds_inl TrivSqZeroExt.nhds_inlₓ'. -/
theorem nhds_inl [Zero M] (x : R) : nhds (inl x : tsze R M) = (nhds x).Prod (nhds 0) :=
nhds_def _
#align triv_sq_zero_ext.nhds_inl TrivSqZeroExt.nhds_inl
+/- warning: triv_sq_zero_ext.nhds_inr -> TrivSqZeroExt.nhds_inr is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Zero.{u1} R] (m : M), Eq.{succ (max u1 u2)} (Filter.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M)) (nhds.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.inr.{u1, u2} R M _inst_3 m)) (Filter.prod.{u1, u2} R M (nhds.{u1} R _inst_1 (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R _inst_3)))) (nhds.{u2} M _inst_2 m))
+but is expected to have type
+ forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : Zero.{u2} R] (m : M), Eq.{max (succ u2) (succ u1)} (Filter.{max u2 u1} (TrivSqZeroExt.{u2, u1} R M)) (nhds.{max u2 u1} (TrivSqZeroExt.{u2, u1} R M) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u2, u1} R M _inst_1 _inst_2) (TrivSqZeroExt.inr.{u2, u1} R M _inst_3 m)) (Filter.prod.{u2, u1} R M (nhds.{u2} R _inst_1 (OfNat.ofNat.{u2} R 0 (Zero.toOfNat0.{u2} R _inst_3))) (nhds.{u1} M _inst_2 m))
+Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.nhds_inr TrivSqZeroExt.nhds_inrₓ'. -/
theorem nhds_inr [Zero R] (m : M) : nhds (inr m : tsze R M) = (nhds 0).Prod (nhds m) :=
nhds_def _
#align triv_sq_zero_ext.nhds_inr TrivSqZeroExt.nhds_inr
+/- warning: triv_sq_zero_ext.continuous_fst -> TrivSqZeroExt.continuous_fst is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M], Continuous.{max u1 u2, u1} (TrivSqZeroExt.{u1, u2} R M) R (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) _inst_1 (TrivSqZeroExt.fst.{u1, u2} R M)
+but is expected to have type
+ forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u1} M], Continuous.{max u2 u1, u2} (TrivSqZeroExt.{u2, u1} R M) R (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u2, u1} R M _inst_1 _inst_2) _inst_1 (TrivSqZeroExt.fst.{u2, u1} R M)
+Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.continuous_fst TrivSqZeroExt.continuous_fstₓ'. -/
theorem continuous_fst : Continuous (fst : tsze R M → R) :=
continuous_fst
#align triv_sq_zero_ext.continuous_fst TrivSqZeroExt.continuous_fst
+/- warning: triv_sq_zero_ext.continuous_snd -> TrivSqZeroExt.continuous_snd is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M], Continuous.{max u1 u2, u2} (TrivSqZeroExt.{u1, u2} R M) M (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) _inst_2 (TrivSqZeroExt.snd.{u1, u2} R M)
+but is expected to have type
+ forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u1} M], Continuous.{max u2 u1, u1} (TrivSqZeroExt.{u2, u1} R M) M (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u2, u1} R M _inst_1 _inst_2) _inst_2 (TrivSqZeroExt.snd.{u2, u1} R M)
+Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.continuous_snd TrivSqZeroExt.continuous_sndₓ'. -/
theorem continuous_snd : Continuous (snd : tsze R M → M) :=
continuous_snd
#align triv_sq_zero_ext.continuous_snd TrivSqZeroExt.continuous_snd
+/- warning: triv_sq_zero_ext.continuous_inl -> TrivSqZeroExt.continuous_inl is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Zero.{u2} M], Continuous.{u1, max u1 u2} R (TrivSqZeroExt.{u1, u2} R M) _inst_1 (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.inl.{u1, u2} R M _inst_3)
+but is expected to have type
+ forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Zero.{u2} M], Continuous.{u1, max u1 u2} R (TrivSqZeroExt.{u1, u2} R M) _inst_1 (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.inl.{u1, u2} R M _inst_3)
+Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.continuous_inl TrivSqZeroExt.continuous_inlₓ'. -/
theorem continuous_inl [Zero M] : Continuous (inl : R → tsze R M) :=
continuous_id.prod_mk continuous_const
#align triv_sq_zero_ext.continuous_inl TrivSqZeroExt.continuous_inl
+/- warning: triv_sq_zero_ext.continuous_inr -> TrivSqZeroExt.continuous_inr is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Zero.{u1} R], Continuous.{u2, max u1 u2} M (TrivSqZeroExt.{u1, u2} R M) _inst_2 (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.inr.{u1, u2} R M _inst_3)
+but is expected to have type
+ forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : Zero.{u2} R], Continuous.{u1, max u2 u1} M (TrivSqZeroExt.{u2, u1} R M) _inst_2 (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u2, u1} R M _inst_1 _inst_2) (TrivSqZeroExt.inr.{u2, u1} R M _inst_3)
+Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.continuous_inr TrivSqZeroExt.continuous_inrₓ'. -/
theorem continuous_inr [Zero R] : Continuous (inr : M → tsze R M) :=
continuous_const.prod_mk continuous_id
#align triv_sq_zero_ext.continuous_inr TrivSqZeroExt.continuous_inr
+/- warning: triv_sq_zero_ext.embedding_inl -> TrivSqZeroExt.embedding_inl is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Zero.{u2} M], Embedding.{u1, max u1 u2} R (TrivSqZeroExt.{u1, u2} R M) _inst_1 (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.inl.{u1, u2} R M _inst_3)
+but is expected to have type
+ forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Zero.{u2} M], Embedding.{u1, max u1 u2} R (TrivSqZeroExt.{u1, u2} R M) _inst_1 (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.inl.{u1, u2} R M _inst_3)
+Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.embedding_inl TrivSqZeroExt.embedding_inlₓ'. -/
theorem embedding_inl [Zero M] : Embedding (inl : R → tsze R M) :=
embedding_of_embedding_compose continuous_inl continuous_fst embedding_id
#align triv_sq_zero_ext.embedding_inl TrivSqZeroExt.embedding_inl
+/- warning: triv_sq_zero_ext.embedding_inr -> TrivSqZeroExt.embedding_inr is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Zero.{u1} R], Embedding.{u2, max u1 u2} M (TrivSqZeroExt.{u1, u2} R M) _inst_2 (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.inr.{u1, u2} R M _inst_3)
+but is expected to have type
+ forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : Zero.{u2} R], Embedding.{u1, max u2 u1} M (TrivSqZeroExt.{u2, u1} R M) _inst_2 (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u2, u1} R M _inst_1 _inst_2) (TrivSqZeroExt.inr.{u2, u1} R M _inst_3)
+Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.embedding_inr TrivSqZeroExt.embedding_inrₓ'. -/
theorem embedding_inr [Zero R] : Embedding (inr : M → tsze R M) :=
embedding_of_embedding_compose continuous_inr continuous_snd embedding_id
#align triv_sq_zero_ext.embedding_inr TrivSqZeroExt.embedding_inr
variable (R M)
+/- warning: triv_sq_zero_ext.fst_clm -> TrivSqZeroExt.fstClm is a dubious translation:
+lean 3 declaration is
+ forall (R : Type.{u1}) (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : CommSemiring.{u1} R] [_inst_4 : AddCommMonoid.{u2} M] [_inst_5 : Module.{u1, u2} R M (CommSemiring.toSemiring.{u1} R _inst_3) _inst_4], ContinuousLinearMap.{u1, u1, max u1 u2, u1} R R (CommSemiring.toSemiring.{u1} R _inst_3) (CommSemiring.toSemiring.{u1} R _inst_3) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.addCommMonoid.{u1, u2} R M (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4) R _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) (TrivSqZeroExt.module.{u1, u2, u1} R R M (CommSemiring.toSemiring.{u1} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4 (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_5) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))
+but is expected to have type
+ forall (R : Type.{u1}) (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : CommSemiring.{u1} R] [_inst_4 : AddCommMonoid.{u2} M] [_inst_5 : Module.{u1, u2} R M (CommSemiring.toSemiring.{u1} R _inst_3) _inst_4], ContinuousLinearMap.{u1, u1, max u2 u1, u1} R R (CommSemiring.toSemiring.{u1} R _inst_3) (CommSemiring.toSemiring.{u1} R _inst_3) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.addCommMonoid.{u1, u2} R M (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4) R _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) (TrivSqZeroExt.module.{u1, u2, u1} R R M (CommSemiring.toSemiring.{u1} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4 (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_5) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))
+Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.fst_clm TrivSqZeroExt.fstClmₓ'. -/
/-- `triv_sq_zero_ext.fst` as a continuous linear map. -/
@[simps]
def fstClm [CommSemiring R] [AddCommMonoid M] [Module R M] : tsze R M →L[R] R :=
{ ContinuousLinearMap.fst R R M with toFun := fst }
#align triv_sq_zero_ext.fst_clm TrivSqZeroExt.fstClm
+/- warning: triv_sq_zero_ext.snd_clm -> TrivSqZeroExt.sndClm is a dubious translation:
+lean 3 declaration is
+ forall (R : Type.{u1}) (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : CommSemiring.{u1} R] [_inst_4 : AddCommMonoid.{u2} M] [_inst_5 : Module.{u1, u2} R M (CommSemiring.toSemiring.{u1} R _inst_3) _inst_4], ContinuousLinearMap.{u1, u1, max u1 u2, u2} R R (CommSemiring.toSemiring.{u1} R _inst_3) (CommSemiring.toSemiring.{u1} R _inst_3) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.addCommMonoid.{u1, u2} R M (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4) M _inst_2 _inst_4 (TrivSqZeroExt.module.{u1, u2, u1} R R M (CommSemiring.toSemiring.{u1} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4 (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_5) _inst_5
+but is expected to have type
+ forall (R : Type.{u1}) (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : CommSemiring.{u1} R] [_inst_4 : AddCommMonoid.{u2} M] [_inst_5 : Module.{u1, u2} R M (CommSemiring.toSemiring.{u1} R _inst_3) _inst_4], ContinuousLinearMap.{u1, u1, max u2 u1, u2} R R (CommSemiring.toSemiring.{u1} R _inst_3) (CommSemiring.toSemiring.{u1} R _inst_3) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.addCommMonoid.{u1, u2} R M (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4) M _inst_2 _inst_4 (TrivSqZeroExt.module.{u1, u2, u1} R R M (CommSemiring.toSemiring.{u1} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4 (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_5) _inst_5
+Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.snd_clm TrivSqZeroExt.sndClmₓ'. -/
/-- `triv_sq_zero_ext.snd` as a continuous linear map. -/
@[simps]
def sndClm [CommSemiring R] [AddCommMonoid M] [Module R M] : tsze R M →L[R] M :=
@@ -97,12 +163,24 @@ def sndClm [CommSemiring R] [AddCommMonoid M] [Module R M] : tsze R M →L[R] M
cont := continuous_snd }
#align triv_sq_zero_ext.snd_clm TrivSqZeroExt.sndClm
+/- warning: triv_sq_zero_ext.inl_clm -> TrivSqZeroExt.inlClm is a dubious translation:
+lean 3 declaration is
+ forall (R : Type.{u1}) (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : CommSemiring.{u1} R] [_inst_4 : AddCommMonoid.{u2} M] [_inst_5 : Module.{u1, u2} R M (CommSemiring.toSemiring.{u1} R _inst_3) _inst_4], ContinuousLinearMap.{u1, u1, u1, max u1 u2} R R (CommSemiring.toSemiring.{u1} R _inst_3) (CommSemiring.toSemiring.{u1} R _inst_3) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))) R _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.addCommMonoid.{u1, u2} R M (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) (TrivSqZeroExt.module.{u1, u2, u1} R R M (CommSemiring.toSemiring.{u1} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4 (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_5)
+but is expected to have type
+ forall (R : Type.{u1}) (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : CommSemiring.{u1} R] [_inst_4 : AddCommMonoid.{u2} M] [_inst_5 : Module.{u1, u2} R M (CommSemiring.toSemiring.{u1} R _inst_3) _inst_4], ContinuousLinearMap.{u1, u1, u1, max u2 u1} R R (CommSemiring.toSemiring.{u1} R _inst_3) (CommSemiring.toSemiring.{u1} R _inst_3) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))) R _inst_1 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.addCommMonoid.{u1, u2} R M (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4) (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) (TrivSqZeroExt.module.{u1, u2, u1} R R M (CommSemiring.toSemiring.{u1} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4 (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_5)
+Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inl_clm TrivSqZeroExt.inlClmₓ'. -/
/-- `triv_sq_zero_ext.inl` as a continuous linear map. -/
@[simps]
def inlClm [CommSemiring R] [AddCommMonoid M] [Module R M] : R →L[R] tsze R M :=
{ ContinuousLinearMap.inl R R M with toFun := inl }
#align triv_sq_zero_ext.inl_clm TrivSqZeroExt.inlClm
+/- warning: triv_sq_zero_ext.inr_clm -> TrivSqZeroExt.inrClm is a dubious translation:
+lean 3 declaration is
+ forall (R : Type.{u1}) (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : CommSemiring.{u1} R] [_inst_4 : AddCommMonoid.{u2} M] [_inst_5 : Module.{u1, u2} R M (CommSemiring.toSemiring.{u1} R _inst_3) _inst_4], ContinuousLinearMap.{u1, u1, u2, max u1 u2} R R (CommSemiring.toSemiring.{u1} R _inst_3) (CommSemiring.toSemiring.{u1} R _inst_3) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))) M _inst_2 _inst_4 (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.addCommMonoid.{u1, u2} R M (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4) _inst_5 (TrivSqZeroExt.module.{u1, u2, u1} R R M (CommSemiring.toSemiring.{u1} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4 (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_5)
+but is expected to have type
+ forall (R : Type.{u1}) (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : CommSemiring.{u1} R] [_inst_4 : AddCommMonoid.{u2} M] [_inst_5 : Module.{u1, u2} R M (CommSemiring.toSemiring.{u1} R _inst_3) _inst_4], ContinuousLinearMap.{u1, u1, u2, max u2 u1} R R (CommSemiring.toSemiring.{u1} R _inst_3) (CommSemiring.toSemiring.{u1} R _inst_3) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3))) M _inst_2 _inst_4 (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u1, u2} R M _inst_1 _inst_2) (TrivSqZeroExt.addCommMonoid.{u1, u2} R M (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4) _inst_5 (TrivSqZeroExt.module.{u1, u2, u1} R R M (CommSemiring.toSemiring.{u1} R _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)))) _inst_4 (Semiring.toModule.{u1} R (CommSemiring.toSemiring.{u1} R _inst_3)) _inst_5)
+Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inr_clm TrivSqZeroExt.inrClmₓ'. -/
/-- `triv_sq_zero_ext.inr` as a continuous linear map. -/
@[simps]
def inrClm [CommSemiring R] [AddCommMonoid M] [Module R M] : M →L[R] tsze R M :=
@@ -124,6 +202,12 @@ instance [Mul R] [Add M] [SMul R M] [SMul Rᵐᵒᵖ M] [ContinuousMul R] [Conti
instance [Neg R] [Neg M] [ContinuousNeg R] [ContinuousNeg M] : ContinuousNeg (tsze R M) :=
Prod.has_continuous_neg
+/- warning: triv_sq_zero_ext.topological_semiring -> TrivSqZeroExt.topologicalSemiring is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : Semiring.{u1} R] [_inst_4 : AddCommMonoid.{u2} M] [_inst_5 : Module.{u1, u2} R M _inst_3 _inst_4] [_inst_6 : Module.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_3) _inst_4] [_inst_7 : TopologicalSemiring.{u1} R _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_3))] [_inst_8 : ContinuousAdd.{u2} M _inst_2 (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)))] [_inst_9 : ContinuousSMul.{u1, u2} R M (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_3)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R _inst_3) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R M _inst_3 _inst_4 _inst_5)))) _inst_1 _inst_2] [_inst_10 : ContinuousSMul.{u1, u2} (MulOpposite.{u1} R) M (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R) (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R) (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R) (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R) M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_3) _inst_4 _inst_6)))) (MulOpposite.topologicalSpace.{u1} R _inst_1) _inst_2], TopologicalSemiring.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.topologicalSpace.{u1, u2} R M _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.nonAssocSemiring.{u1, u2} R M _inst_3 _inst_4 _inst_5 _inst_6))
+but is expected to have type
+ forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u1} M] [_inst_3 : Semiring.{u2} R] [_inst_4 : AddCommMonoid.{u1} M] [_inst_5 : Module.{u2, u1} R M _inst_3 _inst_4] [_inst_6 : Module.{u2, u1} (MulOpposite.{u2} R) M (MulOpposite.semiring.{u2} R _inst_3) _inst_4] [_inst_7 : TopologicalSemiring.{u2} R _inst_1 (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_3))] [_inst_8 : ContinuousAdd.{u1} M _inst_2 (AddZeroClass.toAdd.{u1} M (AddMonoid.toAddZeroClass.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_4)))] [_inst_9 : ContinuousSMul.{u2, u1} R M (SMulZeroClass.toSMul.{u2, u1} R M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u1} R M (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_3)) (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u1} R M (Semiring.toMonoidWithZero.{u2} R _inst_3) (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_4)) (Module.toMulActionWithZero.{u2, u1} R M _inst_3 _inst_4 _inst_5)))) _inst_1 _inst_2] [_inst_10 : ContinuousSMul.{u2, u1} (MulOpposite.{u2} R) M (SMulZeroClass.toSMul.{u2, u1} (MulOpposite.{u2} R) M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u1} (MulOpposite.{u2} R) M (MulOpposite.zero.{u2} R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_3))) (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u1} (MulOpposite.{u2} R) M (MulOpposite.monoidWithZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_3)) (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_4)) (Module.toMulActionWithZero.{u2, u1} (MulOpposite.{u2} R) M (MulOpposite.semiring.{u2} R _inst_3) _inst_4 _inst_6)))) (MulOpposite.instTopologicalSpaceMulOpposite.{u2} R _inst_1) _inst_2], TopologicalSemiring.{max u1 u2} (TrivSqZeroExt.{u2, u1} R M) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u2, u1} R M _inst_1 _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (TrivSqZeroExt.{u2, u1} R M) (TrivSqZeroExt.nonAssocSemiring.{u2, u1} R M _inst_3 _inst_4 _inst_5 _inst_6))
+Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.topological_semiring TrivSqZeroExt.topologicalSemiringₓ'. -/
/-- This is not an instance due to complaints by the `fails_quickly` linter. At any rate, we only
really care about the `topological_ring` instance below. -/
theorem topologicalSemiring [Semiring R] [AddCommMonoid M] [Module R M] [Module Rᵐᵒᵖ M]
@@ -149,21 +233,45 @@ instance [TopologicalSpace S] [SMul S R] [SMul S M] [ContinuousSMul S R] [Contin
variable (M)
+/- warning: triv_sq_zero_ext.has_sum_inl -> TrivSqZeroExt.hasSum_inl is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {R : Type.{u2}} (M : Type.{u3}) [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : AddCommMonoid.{u2} R] [_inst_4 : AddCommMonoid.{u3} M] {f : α -> R} {a : R}, (HasSum.{u2, u1} R α _inst_3 _inst_1 f a) -> (HasSum.{max u2 u3, u1} (TrivSqZeroExt.{u2, u3} R M) α (TrivSqZeroExt.addCommMonoid.{u2, u3} R M _inst_3 _inst_4) (TrivSqZeroExt.topologicalSpace.{u2, u3} R M _inst_1 _inst_2) (fun (x : α) => TrivSqZeroExt.inl.{u2, u3} R M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4))) (f x)) (TrivSqZeroExt.inl.{u2, u3} R M (AddZeroClass.toHasZero.{u3} M (AddMonoid.toAddZeroClass.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4))) a))
+but is expected to have type
+ forall {α : Type.{u1}} {R : Type.{u3}} (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u3} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : AddCommMonoid.{u3} R] [_inst_4 : AddCommMonoid.{u2} M] {f : α -> R} {a : R}, (HasSum.{u3, u1} R α _inst_3 _inst_1 f a) -> (HasSum.{max u2 u3, u1} (TrivSqZeroExt.{u3, u2} R M) α (TrivSqZeroExt.addCommMonoid.{u3, u2} R M _inst_3 _inst_4) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u3, u2} R M _inst_1 _inst_2) (fun (x : α) => TrivSqZeroExt.inl.{u3, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (f x)) (TrivSqZeroExt.inl.{u3, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) a))
+Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.has_sum_inl TrivSqZeroExt.hasSum_inlₓ'. -/
theorem hasSum_inl [AddCommMonoid R] [AddCommMonoid M] {f : α → R} {a : R} (h : HasSum f a) :
HasSum (fun x => inl (f x)) (inl a : tsze R M) :=
h.map (⟨inl, inl_zero _, inl_add _⟩ : R →+ tsze R M) continuous_inl
#align triv_sq_zero_ext.has_sum_inl TrivSqZeroExt.hasSum_inl
+/- warning: triv_sq_zero_ext.has_sum_inr -> TrivSqZeroExt.hasSum_inr is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {R : Type.{u2}} (M : Type.{u3}) [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : AddCommMonoid.{u2} R] [_inst_4 : AddCommMonoid.{u3} M] {f : α -> M} {a : M}, (HasSum.{u3, u1} M α _inst_4 _inst_2 f a) -> (HasSum.{max u2 u3, u1} (TrivSqZeroExt.{u2, u3} R M) α (TrivSqZeroExt.addCommMonoid.{u2, u3} R M _inst_3 _inst_4) (TrivSqZeroExt.topologicalSpace.{u2, u3} R M _inst_1 _inst_2) (fun (x : α) => TrivSqZeroExt.inr.{u2, u3} R M (AddZeroClass.toHasZero.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R _inst_3))) (f x)) (TrivSqZeroExt.inr.{u2, u3} R M (AddZeroClass.toHasZero.{u2} R (AddMonoid.toAddZeroClass.{u2} R (AddCommMonoid.toAddMonoid.{u2} R _inst_3))) a))
+but is expected to have type
+ forall {α : Type.{u1}} {R : Type.{u3}} (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u3} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : AddCommMonoid.{u3} R] [_inst_4 : AddCommMonoid.{u2} M] {f : α -> M} {a : M}, (HasSum.{u2, u1} M α _inst_4 _inst_2 f a) -> (HasSum.{max u2 u3, u1} (TrivSqZeroExt.{u3, u2} R M) α (TrivSqZeroExt.addCommMonoid.{u3, u2} R M _inst_3 _inst_4) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u3, u2} R M _inst_1 _inst_2) (fun (x : α) => TrivSqZeroExt.inr.{u3, u2} R M (AddMonoid.toZero.{u3} R (AddCommMonoid.toAddMonoid.{u3} R _inst_3)) (f x)) (TrivSqZeroExt.inr.{u3, u2} R M (AddMonoid.toZero.{u3} R (AddCommMonoid.toAddMonoid.{u3} R _inst_3)) a))
+Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.has_sum_inr TrivSqZeroExt.hasSum_inrₓ'. -/
theorem hasSum_inr [AddCommMonoid R] [AddCommMonoid M] {f : α → M} {a : M} (h : HasSum f a) :
HasSum (fun x => inr (f x)) (inr a : tsze R M) :=
h.map (⟨inr, inr_zero _, inr_add _⟩ : M →+ tsze R M) continuous_inr
#align triv_sq_zero_ext.has_sum_inr TrivSqZeroExt.hasSum_inr
+/- warning: triv_sq_zero_ext.has_sum_fst -> TrivSqZeroExt.hasSum_fst is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {R : Type.{u2}} (M : Type.{u3}) [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : AddCommMonoid.{u2} R] [_inst_4 : AddCommMonoid.{u3} M] {f : α -> (TrivSqZeroExt.{u2, u3} R M)} {a : TrivSqZeroExt.{u2, u3} R M}, (HasSum.{max u2 u3, u1} (TrivSqZeroExt.{u2, u3} R M) α (TrivSqZeroExt.addCommMonoid.{u2, u3} R M _inst_3 _inst_4) (TrivSqZeroExt.topologicalSpace.{u2, u3} R M _inst_1 _inst_2) f a) -> (HasSum.{u2, u1} R α _inst_3 _inst_1 (fun (x : α) => TrivSqZeroExt.fst.{u2, u3} R M (f x)) (TrivSqZeroExt.fst.{u2, u3} R M a))
+but is expected to have type
+ forall {α : Type.{u1}} {R : Type.{u3}} (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u3} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : AddCommMonoid.{u3} R] [_inst_4 : AddCommMonoid.{u2} M] {f : α -> (TrivSqZeroExt.{u3, u2} R M)} {a : TrivSqZeroExt.{u3, u2} R M}, (HasSum.{max u3 u2, u1} (TrivSqZeroExt.{u3, u2} R M) α (TrivSqZeroExt.addCommMonoid.{u3, u2} R M _inst_3 _inst_4) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u3, u2} R M _inst_1 _inst_2) f a) -> (HasSum.{u3, u1} R α _inst_3 _inst_1 (fun (x : α) => TrivSqZeroExt.fst.{u3, u2} R M (f x)) (TrivSqZeroExt.fst.{u3, u2} R M a))
+Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.has_sum_fst TrivSqZeroExt.hasSum_fstₓ'. -/
theorem hasSum_fst [AddCommMonoid R] [AddCommMonoid M] {f : α → tsze R M} {a : tsze R M}
(h : HasSum f a) : HasSum (fun x => fst (f x)) (fst a) :=
h.map (⟨fst, fst_zero, fst_add⟩ : tsze R M →+ R) continuous_fst
#align triv_sq_zero_ext.has_sum_fst TrivSqZeroExt.hasSum_fst
+/- warning: triv_sq_zero_ext.has_sum_snd -> TrivSqZeroExt.hasSum_snd is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {R : Type.{u2}} (M : Type.{u3}) [_inst_1 : TopologicalSpace.{u2} R] [_inst_2 : TopologicalSpace.{u3} M] [_inst_3 : AddCommMonoid.{u2} R] [_inst_4 : AddCommMonoid.{u3} M] {f : α -> (TrivSqZeroExt.{u2, u3} R M)} {a : TrivSqZeroExt.{u2, u3} R M}, (HasSum.{max u2 u3, u1} (TrivSqZeroExt.{u2, u3} R M) α (TrivSqZeroExt.addCommMonoid.{u2, u3} R M _inst_3 _inst_4) (TrivSqZeroExt.topologicalSpace.{u2, u3} R M _inst_1 _inst_2) f a) -> (HasSum.{u3, u1} M α _inst_4 _inst_2 (fun (x : α) => TrivSqZeroExt.snd.{u2, u3} R M (f x)) (TrivSqZeroExt.snd.{u2, u3} R M a))
+but is expected to have type
+ forall {α : Type.{u1}} {R : Type.{u3}} (M : Type.{u2}) [_inst_1 : TopologicalSpace.{u3} R] [_inst_2 : TopologicalSpace.{u2} M] [_inst_3 : AddCommMonoid.{u3} R] [_inst_4 : AddCommMonoid.{u2} M] {f : α -> (TrivSqZeroExt.{u3, u2} R M)} {a : TrivSqZeroExt.{u3, u2} R M}, (HasSum.{max u3 u2, u1} (TrivSqZeroExt.{u3, u2} R M) α (TrivSqZeroExt.addCommMonoid.{u3, u2} R M _inst_3 _inst_4) (TrivSqZeroExt.instTopologicalSpaceTrivSqZeroExt.{u3, u2} R M _inst_1 _inst_2) f a) -> (HasSum.{u2, u1} M α _inst_4 _inst_2 (fun (x : α) => TrivSqZeroExt.snd.{u3, u2} R M (f x)) (TrivSqZeroExt.snd.{u3, u2} R M a))
+Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.has_sum_snd TrivSqZeroExt.hasSum_sndₓ'. -/
theorem hasSum_snd [AddCommMonoid R] [AddCommMonoid M] {f : α → tsze R M} {a : tsze R M}
(h : HasSum f a) : HasSum (fun x => snd (f x)) (snd a) :=
h.map (⟨snd, snd_zero, snd_add⟩ : tsze R M →+ M) continuous_snd
mathlib commit https://github.com/leanprover-community/mathlib/commit/22131150f88a2d125713ffa0f4693e3355b1eb49
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Eric Wieser
! This file was ported from Lean 3 source module topology.instances.triv_sq_zero_ext
-! leanprover-community/mathlib commit 32253a1a1071173b33dc7d6a218cf722c6feb514
+! leanprover-community/mathlib commit b8d2eaa69d69ce8f03179a5cda774fc0cde984e4
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -114,20 +114,30 @@ variable {R M}
instance [Add R] [Add M] [ContinuousAdd R] [ContinuousAdd M] : ContinuousAdd (tsze R M) :=
Prod.has_continuous_add
-instance [Mul R] [Add M] [SMul R M] [ContinuousMul R] [ContinuousSMul R M] [ContinuousAdd M] :
- ContinuousMul (tsze R M) :=
+instance [Mul R] [Add M] [SMul R M] [SMul Rᵐᵒᵖ M] [ContinuousMul R] [ContinuousSMul R M]
+ [ContinuousSMul Rᵐᵒᵖ M] [ContinuousAdd M] : ContinuousMul (tsze R M) :=
⟨((continuous_fst.comp continuous_fst).mul (continuous_fst.comp continuous_snd)).prod_mk <|
((continuous_fst.comp continuous_fst).smul (continuous_snd.comp continuous_snd)).add
- ((continuous_fst.comp continuous_snd).smul (continuous_snd.comp continuous_fst))⟩
+ ((MulOpposite.continuous_op.comp <| continuous_fst.comp <| continuous_snd).smul
+ (continuous_snd.comp continuous_fst))⟩
instance [Neg R] [Neg M] [ContinuousNeg R] [ContinuousNeg M] : ContinuousNeg (tsze R M) :=
Prod.has_continuous_neg
-instance [Semiring R] [AddCommMonoid M] [Module R M] [TopologicalSemiring R] [ContinuousAdd M]
- [ContinuousSMul R M] : TopologicalSemiring (tsze R M) where
-
-instance [CommRing R] [AddCommGroup M] [Module R M] [TopologicalRing R] [TopologicalAddGroup M]
- [ContinuousSMul R M] : TopologicalRing (tsze R M) where
+/-- This is not an instance due to complaints by the `fails_quickly` linter. At any rate, we only
+really care about the `topological_ring` instance below. -/
+theorem topologicalSemiring [Semiring R] [AddCommMonoid M] [Module R M] [Module Rᵐᵒᵖ M]
+ [TopologicalSemiring R] [ContinuousAdd M] [ContinuousSMul R M]
+ [ContinuousSMul Rᵐᵒᵖ
+ M] :-- note: lean times out looking for the non_assoc_semiring instance without this hint
+ @TopologicalSemiring
+ (tsze R M) _ (NonAssocSemiring.toNonUnitalNonAssocSemiring _) :=
+ { }
+#align triv_sq_zero_ext.topological_semiring TrivSqZeroExt.topologicalSemiring
+
+instance [Ring R] [AddCommGroup M] [Module R M] [Module Rᵐᵒᵖ M] [TopologicalRing R]
+ [TopologicalAddGroup M] [ContinuousSMul R M] [ContinuousSMul Rᵐᵒᵖ M] :
+ TopologicalRing (tsze R M) where
instance [SMul S R] [SMul S M] [ContinuousConstSMul S R] [ContinuousConstSMul S M] :
ContinuousConstSMul S (tsze R M) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -120,7 +120,7 @@ instance [Mul R] [Add M] [SMul R M] [ContinuousMul R] [ContinuousSMul R M] [Cont
((continuous_fst.comp continuous_fst).smul (continuous_snd.comp continuous_snd)).add
((continuous_fst.comp continuous_snd).smul (continuous_snd.comp continuous_fst))⟩
-instance [Neg R] [Neg M] [HasContinuousNeg R] [HasContinuousNeg M] : HasContinuousNeg (tsze R M) :=
+instance [Neg R] [Neg M] [ContinuousNeg R] [ContinuousNeg M] : ContinuousNeg (tsze R M) :=
Prod.has_continuous_neg
instance [Semiring R] [AddCommMonoid M] [Module R M] [TopologicalSemiring R] [ContinuousAdd M]
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -29,7 +29,6 @@ one value.
open scoped Topology
variable {α S R M : Type*}
--- mathport name: exprtsze
local notation "tsze" => TrivSqZeroExt
namespace TrivSqZeroExt
Also fix GeneralizedContinuedFraction.of_convergence
:
it worked for the Preorder.topology
only.
@@ -26,7 +26,7 @@ one value.
-/
-
+open scoped Topology
variable {α S R M : Type*}
-- mathport name: exprtsze
@@ -44,16 +44,16 @@ instance instTopologicalSpace : TopologicalSpace (tsze R M) :=
instance [T2Space R] [T2Space M] : T2Space (tsze R M) :=
Prod.t2Space
-theorem nhds_def (x : tsze R M) : nhds x = (nhds x.fst).prod (nhds x.snd) := by
+theorem nhds_def (x : tsze R M) : 𝓝 x = (𝓝 x.fst).prod (𝓝 x.snd) := by
cases x
exact nhds_prod_eq
#align triv_sq_zero_ext.nhds_def TrivSqZeroExt.nhds_def
-theorem nhds_inl [Zero M] (x : R) : nhds (inl x : tsze R M) = (nhds x).prod (nhds 0) :=
+theorem nhds_inl [Zero M] (x : R) : 𝓝 (inl x : tsze R M) = (𝓝 x).prod (𝓝 0) :=
nhds_def _
#align triv_sq_zero_ext.nhds_inl TrivSqZeroExt.nhds_inl
-theorem nhds_inr [Zero R] (m : M) : nhds (inr m : tsze R M) = (nhds 0).prod (nhds m) :=
+theorem nhds_inr [Zero R] (m : M) : 𝓝 (inr m : tsze R M) = (𝓝 0).prod (𝓝 m) :=
nhds_def _
#align triv_sq_zero_ext.nhds_inr TrivSqZeroExt.nhds_inr
Clm
-> CLM
, Cle
-> CLE
(#10018)
Rename
Complex.equivRealProdClm
→ Complex.equivRealProdCLM
;
CLE
?Complex.reClm
→ Complex.reCLM
;Complex.imClm
→ Complex.imCLM
;Complex.conjLie
→ Complex.conjLIE
;Complex.conjCle
→ Complex.conjCLE
;Complex.ofRealLi
→ Complex.ofRealLI
;Complex.ofRealClm
→ Complex.ofRealCLM
;fderivInnerClm
→ fderivInnerCLM
;LinearPMap.adjointDomainMkClm
→ LinearPMap.adjointDomainMkCLM
;LinearPMap.adjointDomainMkClmExtend
→ LinearPMap.adjointDomainMkCLMExtend
;IsROrC.reClm
→ IsROrC.reCLM
;IsROrC.imClm
→ IsROrC.imCLM
;IsROrC.conjLie
→ IsROrC.conjLIE
;IsROrC.conjCle
→ IsROrC.conjCLE
;IsROrC.ofRealLi
→ IsROrC.ofRealLI
;IsROrC.ofRealClm
→ IsROrC.ofRealCLM
;MeasureTheory.condexpL1Clm
→ MeasureTheory.condexpL1CLM
;algebraMapClm
→ algebraMapCLM
;WeakDual.CharacterSpace.toClm
→ WeakDual.CharacterSpace.toCLM
;BoundedContinuousFunction.evalClm
→ BoundedContinuousFunction.evalCLM
;ContinuousMap.evalClm
→ ContinuousMap.evalCLM
;TrivSqZeroExt.fstClm
→ TrivSqZeroExt.fstClm
;TrivSqZeroExt.sndClm
→ TrivSqZeroExt.sndCLM
;TrivSqZeroExt.inlClm
→ TrivSqZeroExt.inlCLM
;TrivSqZeroExt.inrClm
→ TrivSqZeroExt.inrCLM
and related theorems.
@@ -85,29 +85,29 @@ variable (R M)
/-- `TrivSqZeroExt.fst` as a continuous linear map. -/
@[simps]
-def fstClm [CommSemiring R] [AddCommMonoid M] [Module R M] : tsze R M →L[R] R :=
+def fstCLM [CommSemiring R] [AddCommMonoid M] [Module R M] : tsze R M →L[R] R :=
{ ContinuousLinearMap.fst R R M with toFun := fst }
-#align triv_sq_zero_ext.fst_clm TrivSqZeroExt.fstClm
+#align triv_sq_zero_ext.fst_clm TrivSqZeroExt.fstCLM
/-- `TrivSqZeroExt.snd` as a continuous linear map. -/
@[simps]
-def sndClm [CommSemiring R] [AddCommMonoid M] [Module R M] : tsze R M →L[R] M :=
+def sndCLM [CommSemiring R] [AddCommMonoid M] [Module R M] : tsze R M →L[R] M :=
{ ContinuousLinearMap.snd R R M with
toFun := snd
cont := continuous_snd }
-#align triv_sq_zero_ext.snd_clm TrivSqZeroExt.sndClm
+#align triv_sq_zero_ext.snd_clm TrivSqZeroExt.sndCLM
/-- `TrivSqZeroExt.inl` as a continuous linear map. -/
@[simps]
-def inlClm [CommSemiring R] [AddCommMonoid M] [Module R M] : R →L[R] tsze R M :=
+def inlCLM [CommSemiring R] [AddCommMonoid M] [Module R M] : R →L[R] tsze R M :=
{ ContinuousLinearMap.inl R R M with toFun := inl }
-#align triv_sq_zero_ext.inl_clm TrivSqZeroExt.inlClm
+#align triv_sq_zero_ext.inl_clm TrivSqZeroExt.inlCLM
/-- `TrivSqZeroExt.inr` as a continuous linear map. -/
@[simps]
-def inrClm [CommSemiring R] [AddCommMonoid M] [Module R M] : M →L[R] tsze R M :=
+def inrCLM [CommSemiring R] [AddCommMonoid M] [Module R M] : M →L[R] tsze R M :=
{ ContinuousLinearMap.inr R R M with toFun := inr }
-#align triv_sq_zero_ext.inr_clm TrivSqZeroExt.inrClm
+#align triv_sq_zero_ext.inr_clm TrivSqZeroExt.inrCLM
variable {R M}
The motivation here is to enable using exp_add_of_commute
on dual numbers.
This Zulip thread has some discussion about other possible norms.
@@ -34,9 +34,11 @@ local notation "tsze" => TrivSqZeroExt
namespace TrivSqZeroExt
+section Topology
+
variable [TopologicalSpace R] [TopologicalSpace M]
-instance : TopologicalSpace (tsze R M) :=
+instance instTopologicalSpace : TopologicalSpace (tsze R M) :=
TopologicalSpace.induced fst ‹_› ⊓ TopologicalSpace.induced snd ‹_›
instance [T2Space R] [T2Space M] : T2Space (tsze R M) :=
@@ -163,4 +165,41 @@ theorem hasSum_snd [AddCommMonoid R] [AddCommMonoid M] {f : α → tsze R M} {a
h.map (⟨⟨snd, snd_zero⟩, snd_add⟩ : tsze R M →+ M) continuous_snd
#align triv_sq_zero_ext.has_sum_snd TrivSqZeroExt.hasSum_snd
+end Topology
+
+section Uniformity
+variable [UniformSpace R] [UniformSpace M]
+
+instance instUniformSpace : UniformSpace (tsze R M) where
+ toTopologicalSpace := instTopologicalSpace
+ __ := instUniformSpaceProd
+
+instance [CompleteSpace R] [CompleteSpace M] : CompleteSpace (tsze R M) :=
+ inferInstanceAs <| CompleteSpace (R × M)
+
+instance [AddGroup R] [AddGroup M] [UniformAddGroup R] [UniformAddGroup M] :
+ UniformAddGroup (tsze R M) :=
+ inferInstanceAs <| UniformAddGroup (R × M)
+
+open Uniformity
+
+theorem uniformity_def :
+ 𝓤 (tsze R M) =
+ ((𝓤 R).comap fun p => (p.1.fst, p.2.fst)) ⊓ ((𝓤 M).comap fun p => (p.1.snd, p.2.snd)) :=
+ rfl
+
+nonrec theorem uniformContinuous_fst : UniformContinuous (fst : tsze R M → R) :=
+ uniformContinuous_fst
+
+nonrec theorem uniformContinuous_snd : UniformContinuous (snd : tsze R M → M) :=
+ uniformContinuous_snd
+
+theorem uniformContinuous_inl [Zero M] : UniformContinuous (inl : R → tsze R M) :=
+ uniformContinuous_id.prod_mk uniformContinuous_const
+
+theorem uniformContinuous_inr [Zero R] : UniformContinuous (inr : M → tsze R M) :=
+ uniformContinuous_const.prod_mk uniformContinuous_id
+
+end Uniformity
+
end TrivSqZeroExt
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -27,7 +27,7 @@ one value.
-/
-variable {α S R M : Type _}
+variable {α S R M : Type*}
-- mathport name: exprtsze
local notation "tsze" => TrivSqZeroExt
@@ -2,16 +2,13 @@
Copyright (c) 2023 Eric Wieser. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Eric Wieser
-
-! This file was ported from Lean 3 source module topology.instances.triv_sq_zero_ext
-! leanprover-community/mathlib commit b8d2eaa69d69ce8f03179a5cda774fc0cde984e4
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Algebra.TrivSqZeroExt
import Mathlib.Topology.Algebra.InfiniteSum.Basic
import Mathlib.Topology.Algebra.Module.Basic
+#align_import topology.instances.triv_sq_zero_ext from "leanprover-community/mathlib"@"b8d2eaa69d69ce8f03179a5cda774fc0cde984e4"
+
/-!
# Topology on `TrivSqZeroExt R M`
The unported dependencies are