topology.order.latticeMathlib.Topology.Order.Lattice

This file has been ported!

Changes since the initial port

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.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -128,35 +128,35 @@ theorem Continuous.sup [Sup L] [ContinuousSup L] {f g : X → L} (hf : Continuou
 #align continuous.sup Continuous.sup
 -/
 
-#print Filter.Tendsto.sup_right_nhds' /-
-theorem Filter.Tendsto.sup_right_nhds' {ι β} [TopologicalSpace β] [Sup β] [ContinuousSup β]
-    {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
+#print Filter.Tendsto.sup_nhds' /-
+theorem Filter.Tendsto.sup_nhds' {ι β} [TopologicalSpace β] [Sup β] [ContinuousSup β] {l : Filter ι}
+    {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (f ⊔ g) l (𝓝 (x ⊔ y)) :=
   (continuous_sup.Tendsto _).comp (Tendsto.prod_mk_nhds hf hg)
-#align filter.tendsto.sup_right_nhds' Filter.Tendsto.sup_right_nhds'
+#align filter.tendsto.sup_right_nhds' Filter.Tendsto.sup_nhds'
 -/
 
-#print Filter.Tendsto.sup_right_nhds /-
-theorem Filter.Tendsto.sup_right_nhds {ι β} [TopologicalSpace β] [Sup β] [ContinuousSup β]
-    {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
+#print Filter.Tendsto.sup_nhds /-
+theorem Filter.Tendsto.sup_nhds {ι β} [TopologicalSpace β] [Sup β] [ContinuousSup β] {l : Filter ι}
+    {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (fun i => f i ⊔ g i) l (𝓝 (x ⊔ y)) :=
-  hf.sup_right_nhds' hg
-#align filter.tendsto.sup_right_nhds Filter.Tendsto.sup_right_nhds
+  hf.sup_nhds' hg
+#align filter.tendsto.sup_right_nhds Filter.Tendsto.sup_nhds
 -/
 
-#print Filter.Tendsto.inf_right_nhds' /-
-theorem Filter.Tendsto.inf_right_nhds' {ι β} [TopologicalSpace β] [Inf β] [ContinuousInf β]
-    {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
+#print Filter.Tendsto.inf_nhds' /-
+theorem Filter.Tendsto.inf_nhds' {ι β} [TopologicalSpace β] [Inf β] [ContinuousInf β] {l : Filter ι}
+    {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (f ⊓ g) l (𝓝 (x ⊓ y)) :=
   (continuous_inf.Tendsto _).comp (Tendsto.prod_mk_nhds hf hg)
-#align filter.tendsto.inf_right_nhds' Filter.Tendsto.inf_right_nhds'
+#align filter.tendsto.inf_right_nhds' Filter.Tendsto.inf_nhds'
 -/
 
-#print Filter.Tendsto.inf_right_nhds /-
-theorem Filter.Tendsto.inf_right_nhds {ι β} [TopologicalSpace β] [Inf β] [ContinuousInf β]
-    {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
+#print Filter.Tendsto.inf_nhds /-
+theorem Filter.Tendsto.inf_nhds {ι β} [TopologicalSpace β] [Inf β] [ContinuousInf β] {l : Filter ι}
+    {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (fun i => f i ⊓ g i) l (𝓝 (x ⊓ y)) :=
-  hf.inf_right_nhds' hg
-#align filter.tendsto.inf_right_nhds Filter.Tendsto.inf_right_nhds
+  hf.inf_nhds' hg
+#align filter.tendsto.inf_right_nhds Filter.Tendsto.inf_nhds
 -/
 
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2021 Christopher Hoskin. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Christopher Hoskin
 -/
-import Mathbin.Topology.Order.Basic
-import Mathbin.Topology.Constructions
+import Topology.Order.Basic
+import Topology.Constructions
 
 #align_import topology.order.lattice from "leanprover-community/mathlib"@"3e32bc908f617039c74c06ea9a897e30c30803c2"
 
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2021 Christopher Hoskin. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Christopher Hoskin
-
-! This file was ported from Lean 3 source module topology.order.lattice
-! leanprover-community/mathlib commit 3e32bc908f617039c74c06ea9a897e30c30803c2
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Topology.Order.Basic
 import Mathbin.Topology.Constructions
 
+#align_import topology.order.lattice from "leanprover-community/mathlib"@"3e32bc908f617039c74c06ea9a897e30c30803c2"
+
 /-!
 # Topological lattices
 
Diff
@@ -101,49 +101,65 @@ variable {L : Type _} [TopologicalSpace L]
 
 variable {X : Type _} [TopologicalSpace X]
 
+#print continuous_inf /-
 @[continuity]
 theorem continuous_inf [Inf L] [ContinuousInf L] : Continuous fun p : L × L => p.1 ⊓ p.2 :=
   ContinuousInf.continuous_inf
 #align continuous_inf continuous_inf
+-/
 
+#print Continuous.inf /-
 @[continuity]
 theorem Continuous.inf [Inf L] [ContinuousInf L] {f g : X → L} (hf : Continuous f)
     (hg : Continuous g) : Continuous fun x => f x ⊓ g x :=
   continuous_inf.comp (hf.prod_mk hg : _)
 #align continuous.inf Continuous.inf
+-/
 
+#print continuous_sup /-
 @[continuity]
 theorem continuous_sup [Sup L] [ContinuousSup L] : Continuous fun p : L × L => p.1 ⊔ p.2 :=
   ContinuousSup.continuous_sup
 #align continuous_sup continuous_sup
+-/
 
+#print Continuous.sup /-
 @[continuity]
 theorem Continuous.sup [Sup L] [ContinuousSup L] {f g : X → L} (hf : Continuous f)
     (hg : Continuous g) : Continuous fun x => f x ⊔ g x :=
   continuous_sup.comp (hf.prod_mk hg : _)
 #align continuous.sup Continuous.sup
+-/
 
+#print Filter.Tendsto.sup_right_nhds' /-
 theorem Filter.Tendsto.sup_right_nhds' {ι β} [TopologicalSpace β] [Sup β] [ContinuousSup β]
     {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (f ⊔ g) l (𝓝 (x ⊔ y)) :=
   (continuous_sup.Tendsto _).comp (Tendsto.prod_mk_nhds hf hg)
 #align filter.tendsto.sup_right_nhds' Filter.Tendsto.sup_right_nhds'
+-/
 
+#print Filter.Tendsto.sup_right_nhds /-
 theorem Filter.Tendsto.sup_right_nhds {ι β} [TopologicalSpace β] [Sup β] [ContinuousSup β]
     {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (fun i => f i ⊔ g i) l (𝓝 (x ⊔ y)) :=
   hf.sup_right_nhds' hg
 #align filter.tendsto.sup_right_nhds Filter.Tendsto.sup_right_nhds
+-/
 
+#print Filter.Tendsto.inf_right_nhds' /-
 theorem Filter.Tendsto.inf_right_nhds' {ι β} [TopologicalSpace β] [Inf β] [ContinuousInf β]
     {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (f ⊓ g) l (𝓝 (x ⊓ y)) :=
   (continuous_inf.Tendsto _).comp (Tendsto.prod_mk_nhds hf hg)
 #align filter.tendsto.inf_right_nhds' Filter.Tendsto.inf_right_nhds'
+-/
 
+#print Filter.Tendsto.inf_right_nhds /-
 theorem Filter.Tendsto.inf_right_nhds {ι β} [TopologicalSpace β] [Inf β] [ContinuousInf β]
     {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (fun i => f i ⊓ g i) l (𝓝 (x ⊓ y)) :=
   hf.inf_right_nhds' hg
 #align filter.tendsto.inf_right_nhds Filter.Tendsto.inf_right_nhds
+-/
 
Diff
@@ -76,7 +76,7 @@ instance (priority := 100) OrderDual.continuousInf (L : Type _) [TopologicalSpac
 Then `L` is said to be a *topological lattice*.
 -/
 class TopologicalLattice (L : Type _) [TopologicalSpace L] [Lattice L] extends ContinuousInf L,
-  ContinuousSup L
+    ContinuousSup L
 #align topological_lattice TopologicalLattice
 -/
 
Diff
@@ -33,7 +33,7 @@ topological, lattice
 
 open Filter
 
-open Topology
+open scoped Topology
 
 #print ContinuousInf /-
 /-- Let `L` be a topological space and let `L×L` be equipped with the product topology and let
Diff
@@ -101,94 +101,46 @@ variable {L : Type _} [TopologicalSpace L]
 
 variable {X : Type _} [TopologicalSpace X]
 
-/- warning: continuous_inf -> continuous_inf is a dubious translation:
-lean 3 declaration is
-  forall {L : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} L] [_inst_3 : Inf.{u1} L] [_inst_4 : ContinuousInf.{u1} L _inst_1 _inst_3], Continuous.{u1, u1} (Prod.{u1, u1} L L) L (Prod.topologicalSpace.{u1, u1} L L _inst_1 _inst_1) _inst_1 (fun (p : Prod.{u1, u1} L L) => Inf.inf.{u1} L _inst_3 (Prod.fst.{u1, u1} L L p) (Prod.snd.{u1, u1} L L p))
-but is expected to have type
-  forall {L : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} L] [_inst_3 : Inf.{u1} L] [_inst_4 : ContinuousInf.{u1} L _inst_1 _inst_3], Continuous.{u1, u1} (Prod.{u1, u1} L L) L (instTopologicalSpaceProd.{u1, u1} L L _inst_1 _inst_1) _inst_1 (fun (p : Prod.{u1, u1} L L) => Inf.inf.{u1} L _inst_3 (Prod.fst.{u1, u1} L L p) (Prod.snd.{u1, u1} L L p))
-Case conversion may be inaccurate. Consider using '#align continuous_inf continuous_infₓ'. -/
 @[continuity]
 theorem continuous_inf [Inf L] [ContinuousInf L] : Continuous fun p : L × L => p.1 ⊓ p.2 :=
   ContinuousInf.continuous_inf
 #align continuous_inf continuous_inf
 
-/- warning: continuous.inf -> Continuous.inf is a dubious translation:
-lean 3 declaration is
-  forall {L : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} L] {X : Type.{u2}} [_inst_2 : TopologicalSpace.{u2} X] [_inst_3 : Inf.{u1} L] [_inst_4 : ContinuousInf.{u1} L _inst_1 _inst_3] {f : X -> L} {g : X -> L}, (Continuous.{u2, u1} X L _inst_2 _inst_1 f) -> (Continuous.{u2, u1} X L _inst_2 _inst_1 g) -> (Continuous.{u2, u1} X L _inst_2 _inst_1 (fun (x : X) => Inf.inf.{u1} L _inst_3 (f x) (g x)))
-but is expected to have type
-  forall {L : Type.{u2}} {_inst_1 : Type.{u1}} [X : TopologicalSpace.{u2} L] [_inst_2 : TopologicalSpace.{u1} _inst_1] [_inst_3 : Inf.{u2} L] [_inst_4 : ContinuousInf.{u2} L X _inst_3] {f : _inst_1 -> L} {g : _inst_1 -> L}, (Continuous.{u1, u2} _inst_1 L _inst_2 X f) -> (Continuous.{u1, u2} _inst_1 L _inst_2 X g) -> (Continuous.{u1, u2} _inst_1 L _inst_2 X (fun (x : _inst_1) => Inf.inf.{u2} L _inst_3 (f x) (g x)))
-Case conversion may be inaccurate. Consider using '#align continuous.inf Continuous.infₓ'. -/
 @[continuity]
 theorem Continuous.inf [Inf L] [ContinuousInf L] {f g : X → L} (hf : Continuous f)
     (hg : Continuous g) : Continuous fun x => f x ⊓ g x :=
   continuous_inf.comp (hf.prod_mk hg : _)
 #align continuous.inf Continuous.inf
 
-/- warning: continuous_sup -> continuous_sup is a dubious translation:
-lean 3 declaration is
-  forall {L : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} L] [_inst_3 : Sup.{u1} L] [_inst_4 : ContinuousSup.{u1} L _inst_1 _inst_3], Continuous.{u1, u1} (Prod.{u1, u1} L L) L (Prod.topologicalSpace.{u1, u1} L L _inst_1 _inst_1) _inst_1 (fun (p : Prod.{u1, u1} L L) => Sup.sup.{u1} L _inst_3 (Prod.fst.{u1, u1} L L p) (Prod.snd.{u1, u1} L L p))
-but is expected to have type
-  forall {L : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} L] [_inst_3 : Sup.{u1} L] [_inst_4 : ContinuousSup.{u1} L _inst_1 _inst_3], Continuous.{u1, u1} (Prod.{u1, u1} L L) L (instTopologicalSpaceProd.{u1, u1} L L _inst_1 _inst_1) _inst_1 (fun (p : Prod.{u1, u1} L L) => Sup.sup.{u1} L _inst_3 (Prod.fst.{u1, u1} L L p) (Prod.snd.{u1, u1} L L p))
-Case conversion may be inaccurate. Consider using '#align continuous_sup continuous_supₓ'. -/
 @[continuity]
 theorem continuous_sup [Sup L] [ContinuousSup L] : Continuous fun p : L × L => p.1 ⊔ p.2 :=
   ContinuousSup.continuous_sup
 #align continuous_sup continuous_sup
 
-/- warning: continuous.sup -> Continuous.sup is a dubious translation:
-lean 3 declaration is
-  forall {L : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} L] {X : Type.{u2}} [_inst_2 : TopologicalSpace.{u2} X] [_inst_3 : Sup.{u1} L] [_inst_4 : ContinuousSup.{u1} L _inst_1 _inst_3] {f : X -> L} {g : X -> L}, (Continuous.{u2, u1} X L _inst_2 _inst_1 f) -> (Continuous.{u2, u1} X L _inst_2 _inst_1 g) -> (Continuous.{u2, u1} X L _inst_2 _inst_1 (fun (x : X) => Sup.sup.{u1} L _inst_3 (f x) (g x)))
-but is expected to have type
-  forall {L : Type.{u2}} {_inst_1 : Type.{u1}} [X : TopologicalSpace.{u2} L] [_inst_2 : TopologicalSpace.{u1} _inst_1] [_inst_3 : Sup.{u2} L] [_inst_4 : ContinuousSup.{u2} L X _inst_3] {f : _inst_1 -> L} {g : _inst_1 -> L}, (Continuous.{u1, u2} _inst_1 L _inst_2 X f) -> (Continuous.{u1, u2} _inst_1 L _inst_2 X g) -> (Continuous.{u1, u2} _inst_1 L _inst_2 X (fun (x : _inst_1) => Sup.sup.{u2} L _inst_3 (f x) (g x)))
-Case conversion may be inaccurate. Consider using '#align continuous.sup Continuous.supₓ'. -/
 @[continuity]
 theorem Continuous.sup [Sup L] [ContinuousSup L] {f g : X → L} (hf : Continuous f)
     (hg : Continuous g) : Continuous fun x => f x ⊔ g x :=
   continuous_sup.comp (hf.prod_mk hg : _)
 #align continuous.sup Continuous.sup
 
-/- warning: filter.tendsto.sup_right_nhds' -> Filter.Tendsto.sup_right_nhds' is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {β : Type.{u2}} [_inst_3 : TopologicalSpace.{u2} β] [_inst_4 : Sup.{u2} β] [_inst_5 : ContinuousSup.{u2} β _inst_3 _inst_4] {l : Filter.{u1} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u1, u2} ι β f l (nhds.{u2} β _inst_3 x)) -> (Filter.Tendsto.{u1, u2} ι β g l (nhds.{u2} β _inst_3 y)) -> (Filter.Tendsto.{u1, u2} ι β (Sup.sup.{max u1 u2} (ι -> β) (Pi.hasSup.{u1, u2} ι (fun (ᾰ : ι) => β) (fun (i : ι) => _inst_4)) f g) l (nhds.{u2} β _inst_3 (Sup.sup.{u2} β _inst_4 x y)))
-but is expected to have type
-  forall {ι : Type.{u2}} {β : Type.{u1}} [_inst_3 : TopologicalSpace.{u1} β] [_inst_4 : Sup.{u1} β] [_inst_5 : ContinuousSup.{u1} β _inst_3 _inst_4] {l : Filter.{u2} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u2, u1} ι β f l (nhds.{u1} β _inst_3 x)) -> (Filter.Tendsto.{u2, u1} ι β g l (nhds.{u1} β _inst_3 y)) -> (Filter.Tendsto.{u2, u1} ι β (Sup.sup.{max u1 u2} (ι -> β) (Pi.instSupForAll.{u2, u1} ι (fun (ᾰ : ι) => β) (fun (i : ι) => _inst_4)) f g) l (nhds.{u1} β _inst_3 (Sup.sup.{u1} β _inst_4 x y)))
-Case conversion may be inaccurate. Consider using '#align filter.tendsto.sup_right_nhds' Filter.Tendsto.sup_right_nhds'ₓ'. -/
 theorem Filter.Tendsto.sup_right_nhds' {ι β} [TopologicalSpace β] [Sup β] [ContinuousSup β]
     {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (f ⊔ g) l (𝓝 (x ⊔ y)) :=
   (continuous_sup.Tendsto _).comp (Tendsto.prod_mk_nhds hf hg)
 #align filter.tendsto.sup_right_nhds' Filter.Tendsto.sup_right_nhds'
 
-/- warning: filter.tendsto.sup_right_nhds -> Filter.Tendsto.sup_right_nhds is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {β : Type.{u2}} [_inst_3 : TopologicalSpace.{u2} β] [_inst_4 : Sup.{u2} β] [_inst_5 : ContinuousSup.{u2} β _inst_3 _inst_4] {l : Filter.{u1} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u1, u2} ι β f l (nhds.{u2} β _inst_3 x)) -> (Filter.Tendsto.{u1, u2} ι β g l (nhds.{u2} β _inst_3 y)) -> (Filter.Tendsto.{u1, u2} ι β (fun (i : ι) => Sup.sup.{u2} β _inst_4 (f i) (g i)) l (nhds.{u2} β _inst_3 (Sup.sup.{u2} β _inst_4 x y)))
-but is expected to have type
-  forall {ι : Type.{u2}} {β : Type.{u1}} [_inst_3 : TopologicalSpace.{u1} β] [_inst_4 : Sup.{u1} β] [_inst_5 : ContinuousSup.{u1} β _inst_3 _inst_4] {l : Filter.{u2} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u2, u1} ι β f l (nhds.{u1} β _inst_3 x)) -> (Filter.Tendsto.{u2, u1} ι β g l (nhds.{u1} β _inst_3 y)) -> (Filter.Tendsto.{u2, u1} ι β (fun (i : ι) => Sup.sup.{u1} β _inst_4 (f i) (g i)) l (nhds.{u1} β _inst_3 (Sup.sup.{u1} β _inst_4 x y)))
-Case conversion may be inaccurate. Consider using '#align filter.tendsto.sup_right_nhds Filter.Tendsto.sup_right_nhdsₓ'. -/
 theorem Filter.Tendsto.sup_right_nhds {ι β} [TopologicalSpace β] [Sup β] [ContinuousSup β]
     {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (fun i => f i ⊔ g i) l (𝓝 (x ⊔ y)) :=
   hf.sup_right_nhds' hg
 #align filter.tendsto.sup_right_nhds Filter.Tendsto.sup_right_nhds
 
-/- warning: filter.tendsto.inf_right_nhds' -> Filter.Tendsto.inf_right_nhds' is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {β : Type.{u2}} [_inst_3 : TopologicalSpace.{u2} β] [_inst_4 : Inf.{u2} β] [_inst_5 : ContinuousInf.{u2} β _inst_3 _inst_4] {l : Filter.{u1} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u1, u2} ι β f l (nhds.{u2} β _inst_3 x)) -> (Filter.Tendsto.{u1, u2} ι β g l (nhds.{u2} β _inst_3 y)) -> (Filter.Tendsto.{u1, u2} ι β (Inf.inf.{max u1 u2} (ι -> β) (Pi.hasInf.{u1, u2} ι (fun (ᾰ : ι) => β) (fun (i : ι) => _inst_4)) f g) l (nhds.{u2} β _inst_3 (Inf.inf.{u2} β _inst_4 x y)))
-but is expected to have type
-  forall {ι : Type.{u2}} {β : Type.{u1}} [_inst_3 : TopologicalSpace.{u1} β] [_inst_4 : Inf.{u1} β] [_inst_5 : ContinuousInf.{u1} β _inst_3 _inst_4] {l : Filter.{u2} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u2, u1} ι β f l (nhds.{u1} β _inst_3 x)) -> (Filter.Tendsto.{u2, u1} ι β g l (nhds.{u1} β _inst_3 y)) -> (Filter.Tendsto.{u2, u1} ι β (Inf.inf.{max u1 u2} (ι -> β) (Pi.instInfForAll.{u2, u1} ι (fun (ᾰ : ι) => β) (fun (i : ι) => _inst_4)) f g) l (nhds.{u1} β _inst_3 (Inf.inf.{u1} β _inst_4 x y)))
-Case conversion may be inaccurate. Consider using '#align filter.tendsto.inf_right_nhds' Filter.Tendsto.inf_right_nhds'ₓ'. -/
 theorem Filter.Tendsto.inf_right_nhds' {ι β} [TopologicalSpace β] [Inf β] [ContinuousInf β]
     {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (f ⊓ g) l (𝓝 (x ⊓ y)) :=
   (continuous_inf.Tendsto _).comp (Tendsto.prod_mk_nhds hf hg)
 #align filter.tendsto.inf_right_nhds' Filter.Tendsto.inf_right_nhds'
 
-/- warning: filter.tendsto.inf_right_nhds -> Filter.Tendsto.inf_right_nhds is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {β : Type.{u2}} [_inst_3 : TopologicalSpace.{u2} β] [_inst_4 : Inf.{u2} β] [_inst_5 : ContinuousInf.{u2} β _inst_3 _inst_4] {l : Filter.{u1} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u1, u2} ι β f l (nhds.{u2} β _inst_3 x)) -> (Filter.Tendsto.{u1, u2} ι β g l (nhds.{u2} β _inst_3 y)) -> (Filter.Tendsto.{u1, u2} ι β (fun (i : ι) => Inf.inf.{u2} β _inst_4 (f i) (g i)) l (nhds.{u2} β _inst_3 (Inf.inf.{u2} β _inst_4 x y)))
-but is expected to have type
-  forall {ι : Type.{u2}} {β : Type.{u1}} [_inst_3 : TopologicalSpace.{u1} β] [_inst_4 : Inf.{u1} β] [_inst_5 : ContinuousInf.{u1} β _inst_3 _inst_4] {l : Filter.{u2} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u2, u1} ι β f l (nhds.{u1} β _inst_3 x)) -> (Filter.Tendsto.{u2, u1} ι β g l (nhds.{u1} β _inst_3 y)) -> (Filter.Tendsto.{u2, u1} ι β (fun (i : ι) => Inf.inf.{u1} β _inst_4 (f i) (g i)) l (nhds.{u1} β _inst_3 (Inf.inf.{u1} β _inst_4 x y)))
-Case conversion may be inaccurate. Consider using '#align filter.tendsto.inf_right_nhds Filter.Tendsto.inf_right_nhdsₓ'. -/
 theorem Filter.Tendsto.inf_right_nhds {ι β} [TopologicalSpace β] [Inf β] [ContinuousInf β]
     {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (fun i => f i ⊓ g i) l (𝓝 (x ⊓ y)) :=
Diff
@@ -40,7 +40,7 @@ open Topology
 `⊓:L×L → L` be an infimum. Then `L` is said to have *(jointly) continuous infimum* if the map
 `⊓:L×L → L` is continuous.
 -/
-class ContinuousInf (L : Type _) [TopologicalSpace L] [HasInf L] : Prop where
+class ContinuousInf (L : Type _) [TopologicalSpace L] [Inf L] : Prop where
   continuous_inf : Continuous fun p : L × L => p.1 ⊓ p.2
 #align has_continuous_inf ContinuousInf
 -/
@@ -50,14 +50,14 @@ class ContinuousInf (L : Type _) [TopologicalSpace L] [HasInf L] : Prop where
 `⊓:L×L → L` be a supremum. Then `L` is said to have *(jointly) continuous supremum* if the map
 `⊓:L×L → L` is continuous.
 -/
-class ContinuousSup (L : Type _) [TopologicalSpace L] [HasSup L] : Prop where
+class ContinuousSup (L : Type _) [TopologicalSpace L] [Sup L] : Prop where
   continuous_sup : Continuous fun p : L × L => p.1 ⊔ p.2
 #align has_continuous_sup ContinuousSup
 -/
 
 #print OrderDual.continuousSup /-
 -- see Note [lower instance priority]
-instance (priority := 100) OrderDual.continuousSup (L : Type _) [TopologicalSpace L] [HasInf L]
+instance (priority := 100) OrderDual.continuousSup (L : Type _) [TopologicalSpace L] [Inf L]
     [ContinuousInf L] : ContinuousSup Lᵒᵈ
     where continuous_sup := @ContinuousInf.continuous_inf L _ _ _
 #align order_dual.has_continuous_sup OrderDual.continuousSup
@@ -65,7 +65,7 @@ instance (priority := 100) OrderDual.continuousSup (L : Type _) [TopologicalSpac
 
 #print OrderDual.continuousInf /-
 -- see Note [lower instance priority]
-instance (priority := 100) OrderDual.continuousInf (L : Type _) [TopologicalSpace L] [HasSup L]
+instance (priority := 100) OrderDual.continuousInf (L : Type _) [TopologicalSpace L] [Sup L]
     [ContinuousSup L] : ContinuousInf Lᵒᵈ
     where continuous_inf := @ContinuousSup.continuous_sup L _ _ _
 #align order_dual.has_continuous_inf OrderDual.continuousInf
@@ -103,57 +103,57 @@ variable {X : Type _} [TopologicalSpace X]
 
 /- warning: continuous_inf -> continuous_inf is a dubious translation:
 lean 3 declaration is
-  forall {L : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} L] [_inst_3 : HasInf.{u1} L] [_inst_4 : ContinuousInf.{u1} L _inst_1 _inst_3], Continuous.{u1, u1} (Prod.{u1, u1} L L) L (Prod.topologicalSpace.{u1, u1} L L _inst_1 _inst_1) _inst_1 (fun (p : Prod.{u1, u1} L L) => HasInf.inf.{u1} L _inst_3 (Prod.fst.{u1, u1} L L p) (Prod.snd.{u1, u1} L L p))
+  forall {L : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} L] [_inst_3 : Inf.{u1} L] [_inst_4 : ContinuousInf.{u1} L _inst_1 _inst_3], Continuous.{u1, u1} (Prod.{u1, u1} L L) L (Prod.topologicalSpace.{u1, u1} L L _inst_1 _inst_1) _inst_1 (fun (p : Prod.{u1, u1} L L) => Inf.inf.{u1} L _inst_3 (Prod.fst.{u1, u1} L L p) (Prod.snd.{u1, u1} L L p))
 but is expected to have type
-  forall {L : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} L] [_inst_3 : HasInf.{u1} L] [_inst_4 : ContinuousInf.{u1} L _inst_1 _inst_3], Continuous.{u1, u1} (Prod.{u1, u1} L L) L (instTopologicalSpaceProd.{u1, u1} L L _inst_1 _inst_1) _inst_1 (fun (p : Prod.{u1, u1} L L) => HasInf.inf.{u1} L _inst_3 (Prod.fst.{u1, u1} L L p) (Prod.snd.{u1, u1} L L p))
+  forall {L : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} L] [_inst_3 : Inf.{u1} L] [_inst_4 : ContinuousInf.{u1} L _inst_1 _inst_3], Continuous.{u1, u1} (Prod.{u1, u1} L L) L (instTopologicalSpaceProd.{u1, u1} L L _inst_1 _inst_1) _inst_1 (fun (p : Prod.{u1, u1} L L) => Inf.inf.{u1} L _inst_3 (Prod.fst.{u1, u1} L L p) (Prod.snd.{u1, u1} L L p))
 Case conversion may be inaccurate. Consider using '#align continuous_inf continuous_infₓ'. -/
 @[continuity]
-theorem continuous_inf [HasInf L] [ContinuousInf L] : Continuous fun p : L × L => p.1 ⊓ p.2 :=
+theorem continuous_inf [Inf L] [ContinuousInf L] : Continuous fun p : L × L => p.1 ⊓ p.2 :=
   ContinuousInf.continuous_inf
 #align continuous_inf continuous_inf
 
 /- warning: continuous.inf -> Continuous.inf is a dubious translation:
 lean 3 declaration is
-  forall {L : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} L] {X : Type.{u2}} [_inst_2 : TopologicalSpace.{u2} X] [_inst_3 : HasInf.{u1} L] [_inst_4 : ContinuousInf.{u1} L _inst_1 _inst_3] {f : X -> L} {g : X -> L}, (Continuous.{u2, u1} X L _inst_2 _inst_1 f) -> (Continuous.{u2, u1} X L _inst_2 _inst_1 g) -> (Continuous.{u2, u1} X L _inst_2 _inst_1 (fun (x : X) => HasInf.inf.{u1} L _inst_3 (f x) (g x)))
+  forall {L : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} L] {X : Type.{u2}} [_inst_2 : TopologicalSpace.{u2} X] [_inst_3 : Inf.{u1} L] [_inst_4 : ContinuousInf.{u1} L _inst_1 _inst_3] {f : X -> L} {g : X -> L}, (Continuous.{u2, u1} X L _inst_2 _inst_1 f) -> (Continuous.{u2, u1} X L _inst_2 _inst_1 g) -> (Continuous.{u2, u1} X L _inst_2 _inst_1 (fun (x : X) => Inf.inf.{u1} L _inst_3 (f x) (g x)))
 but is expected to have type
-  forall {L : Type.{u2}} {_inst_1 : Type.{u1}} [X : TopologicalSpace.{u2} L] [_inst_2 : TopologicalSpace.{u1} _inst_1] [_inst_3 : HasInf.{u2} L] [_inst_4 : ContinuousInf.{u2} L X _inst_3] {f : _inst_1 -> L} {g : _inst_1 -> L}, (Continuous.{u1, u2} _inst_1 L _inst_2 X f) -> (Continuous.{u1, u2} _inst_1 L _inst_2 X g) -> (Continuous.{u1, u2} _inst_1 L _inst_2 X (fun (x : _inst_1) => HasInf.inf.{u2} L _inst_3 (f x) (g x)))
+  forall {L : Type.{u2}} {_inst_1 : Type.{u1}} [X : TopologicalSpace.{u2} L] [_inst_2 : TopologicalSpace.{u1} _inst_1] [_inst_3 : Inf.{u2} L] [_inst_4 : ContinuousInf.{u2} L X _inst_3] {f : _inst_1 -> L} {g : _inst_1 -> L}, (Continuous.{u1, u2} _inst_1 L _inst_2 X f) -> (Continuous.{u1, u2} _inst_1 L _inst_2 X g) -> (Continuous.{u1, u2} _inst_1 L _inst_2 X (fun (x : _inst_1) => Inf.inf.{u2} L _inst_3 (f x) (g x)))
 Case conversion may be inaccurate. Consider using '#align continuous.inf Continuous.infₓ'. -/
 @[continuity]
-theorem Continuous.inf [HasInf L] [ContinuousInf L] {f g : X → L} (hf : Continuous f)
+theorem Continuous.inf [Inf L] [ContinuousInf L] {f g : X → L} (hf : Continuous f)
     (hg : Continuous g) : Continuous fun x => f x ⊓ g x :=
   continuous_inf.comp (hf.prod_mk hg : _)
 #align continuous.inf Continuous.inf
 
 /- warning: continuous_sup -> continuous_sup is a dubious translation:
 lean 3 declaration is
-  forall {L : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} L] [_inst_3 : HasSup.{u1} L] [_inst_4 : ContinuousSup.{u1} L _inst_1 _inst_3], Continuous.{u1, u1} (Prod.{u1, u1} L L) L (Prod.topologicalSpace.{u1, u1} L L _inst_1 _inst_1) _inst_1 (fun (p : Prod.{u1, u1} L L) => HasSup.sup.{u1} L _inst_3 (Prod.fst.{u1, u1} L L p) (Prod.snd.{u1, u1} L L p))
+  forall {L : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} L] [_inst_3 : Sup.{u1} L] [_inst_4 : ContinuousSup.{u1} L _inst_1 _inst_3], Continuous.{u1, u1} (Prod.{u1, u1} L L) L (Prod.topologicalSpace.{u1, u1} L L _inst_1 _inst_1) _inst_1 (fun (p : Prod.{u1, u1} L L) => Sup.sup.{u1} L _inst_3 (Prod.fst.{u1, u1} L L p) (Prod.snd.{u1, u1} L L p))
 but is expected to have type
-  forall {L : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} L] [_inst_3 : HasSup.{u1} L] [_inst_4 : ContinuousSup.{u1} L _inst_1 _inst_3], Continuous.{u1, u1} (Prod.{u1, u1} L L) L (instTopologicalSpaceProd.{u1, u1} L L _inst_1 _inst_1) _inst_1 (fun (p : Prod.{u1, u1} L L) => HasSup.sup.{u1} L _inst_3 (Prod.fst.{u1, u1} L L p) (Prod.snd.{u1, u1} L L p))
+  forall {L : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} L] [_inst_3 : Sup.{u1} L] [_inst_4 : ContinuousSup.{u1} L _inst_1 _inst_3], Continuous.{u1, u1} (Prod.{u1, u1} L L) L (instTopologicalSpaceProd.{u1, u1} L L _inst_1 _inst_1) _inst_1 (fun (p : Prod.{u1, u1} L L) => Sup.sup.{u1} L _inst_3 (Prod.fst.{u1, u1} L L p) (Prod.snd.{u1, u1} L L p))
 Case conversion may be inaccurate. Consider using '#align continuous_sup continuous_supₓ'. -/
 @[continuity]
-theorem continuous_sup [HasSup L] [ContinuousSup L] : Continuous fun p : L × L => p.1 ⊔ p.2 :=
+theorem continuous_sup [Sup L] [ContinuousSup L] : Continuous fun p : L × L => p.1 ⊔ p.2 :=
   ContinuousSup.continuous_sup
 #align continuous_sup continuous_sup
 
 /- warning: continuous.sup -> Continuous.sup is a dubious translation:
 lean 3 declaration is
-  forall {L : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} L] {X : Type.{u2}} [_inst_2 : TopologicalSpace.{u2} X] [_inst_3 : HasSup.{u1} L] [_inst_4 : ContinuousSup.{u1} L _inst_1 _inst_3] {f : X -> L} {g : X -> L}, (Continuous.{u2, u1} X L _inst_2 _inst_1 f) -> (Continuous.{u2, u1} X L _inst_2 _inst_1 g) -> (Continuous.{u2, u1} X L _inst_2 _inst_1 (fun (x : X) => HasSup.sup.{u1} L _inst_3 (f x) (g x)))
+  forall {L : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} L] {X : Type.{u2}} [_inst_2 : TopologicalSpace.{u2} X] [_inst_3 : Sup.{u1} L] [_inst_4 : ContinuousSup.{u1} L _inst_1 _inst_3] {f : X -> L} {g : X -> L}, (Continuous.{u2, u1} X L _inst_2 _inst_1 f) -> (Continuous.{u2, u1} X L _inst_2 _inst_1 g) -> (Continuous.{u2, u1} X L _inst_2 _inst_1 (fun (x : X) => Sup.sup.{u1} L _inst_3 (f x) (g x)))
 but is expected to have type
-  forall {L : Type.{u2}} {_inst_1 : Type.{u1}} [X : TopologicalSpace.{u2} L] [_inst_2 : TopologicalSpace.{u1} _inst_1] [_inst_3 : HasSup.{u2} L] [_inst_4 : ContinuousSup.{u2} L X _inst_3] {f : _inst_1 -> L} {g : _inst_1 -> L}, (Continuous.{u1, u2} _inst_1 L _inst_2 X f) -> (Continuous.{u1, u2} _inst_1 L _inst_2 X g) -> (Continuous.{u1, u2} _inst_1 L _inst_2 X (fun (x : _inst_1) => HasSup.sup.{u2} L _inst_3 (f x) (g x)))
+  forall {L : Type.{u2}} {_inst_1 : Type.{u1}} [X : TopologicalSpace.{u2} L] [_inst_2 : TopologicalSpace.{u1} _inst_1] [_inst_3 : Sup.{u2} L] [_inst_4 : ContinuousSup.{u2} L X _inst_3] {f : _inst_1 -> L} {g : _inst_1 -> L}, (Continuous.{u1, u2} _inst_1 L _inst_2 X f) -> (Continuous.{u1, u2} _inst_1 L _inst_2 X g) -> (Continuous.{u1, u2} _inst_1 L _inst_2 X (fun (x : _inst_1) => Sup.sup.{u2} L _inst_3 (f x) (g x)))
 Case conversion may be inaccurate. Consider using '#align continuous.sup Continuous.supₓ'. -/
 @[continuity]
-theorem Continuous.sup [HasSup L] [ContinuousSup L] {f g : X → L} (hf : Continuous f)
+theorem Continuous.sup [Sup L] [ContinuousSup L] {f g : X → L} (hf : Continuous f)
     (hg : Continuous g) : Continuous fun x => f x ⊔ g x :=
   continuous_sup.comp (hf.prod_mk hg : _)
 #align continuous.sup Continuous.sup
 
 /- warning: filter.tendsto.sup_right_nhds' -> Filter.Tendsto.sup_right_nhds' is a dubious translation:
 lean 3 declaration is
-  forall {ι : Type.{u1}} {β : Type.{u2}} [_inst_3 : TopologicalSpace.{u2} β] [_inst_4 : HasSup.{u2} β] [_inst_5 : ContinuousSup.{u2} β _inst_3 _inst_4] {l : Filter.{u1} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u1, u2} ι β f l (nhds.{u2} β _inst_3 x)) -> (Filter.Tendsto.{u1, u2} ι β g l (nhds.{u2} β _inst_3 y)) -> (Filter.Tendsto.{u1, u2} ι β (HasSup.sup.{max u1 u2} (ι -> β) (Pi.hasSup.{u1, u2} ι (fun (ᾰ : ι) => β) (fun (i : ι) => _inst_4)) f g) l (nhds.{u2} β _inst_3 (HasSup.sup.{u2} β _inst_4 x y)))
+  forall {ι : Type.{u1}} {β : Type.{u2}} [_inst_3 : TopologicalSpace.{u2} β] [_inst_4 : Sup.{u2} β] [_inst_5 : ContinuousSup.{u2} β _inst_3 _inst_4] {l : Filter.{u1} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u1, u2} ι β f l (nhds.{u2} β _inst_3 x)) -> (Filter.Tendsto.{u1, u2} ι β g l (nhds.{u2} β _inst_3 y)) -> (Filter.Tendsto.{u1, u2} ι β (Sup.sup.{max u1 u2} (ι -> β) (Pi.hasSup.{u1, u2} ι (fun (ᾰ : ι) => β) (fun (i : ι) => _inst_4)) f g) l (nhds.{u2} β _inst_3 (Sup.sup.{u2} β _inst_4 x y)))
 but is expected to have type
-  forall {ι : Type.{u2}} {β : Type.{u1}} [_inst_3 : TopologicalSpace.{u1} β] [_inst_4 : HasSup.{u1} β] [_inst_5 : ContinuousSup.{u1} β _inst_3 _inst_4] {l : Filter.{u2} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u2, u1} ι β f l (nhds.{u1} β _inst_3 x)) -> (Filter.Tendsto.{u2, u1} ι β g l (nhds.{u1} β _inst_3 y)) -> (Filter.Tendsto.{u2, u1} ι β (HasSup.sup.{max u1 u2} (ι -> β) (Pi.instHasSupForAll.{u2, u1} ι (fun (ᾰ : ι) => β) (fun (i : ι) => _inst_4)) f g) l (nhds.{u1} β _inst_3 (HasSup.sup.{u1} β _inst_4 x y)))
+  forall {ι : Type.{u2}} {β : Type.{u1}} [_inst_3 : TopologicalSpace.{u1} β] [_inst_4 : Sup.{u1} β] [_inst_5 : ContinuousSup.{u1} β _inst_3 _inst_4] {l : Filter.{u2} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u2, u1} ι β f l (nhds.{u1} β _inst_3 x)) -> (Filter.Tendsto.{u2, u1} ι β g l (nhds.{u1} β _inst_3 y)) -> (Filter.Tendsto.{u2, u1} ι β (Sup.sup.{max u1 u2} (ι -> β) (Pi.instSupForAll.{u2, u1} ι (fun (ᾰ : ι) => β) (fun (i : ι) => _inst_4)) f g) l (nhds.{u1} β _inst_3 (Sup.sup.{u1} β _inst_4 x y)))
 Case conversion may be inaccurate. Consider using '#align filter.tendsto.sup_right_nhds' Filter.Tendsto.sup_right_nhds'ₓ'. -/
-theorem Filter.Tendsto.sup_right_nhds' {ι β} [TopologicalSpace β] [HasSup β] [ContinuousSup β]
+theorem Filter.Tendsto.sup_right_nhds' {ι β} [TopologicalSpace β] [Sup β] [ContinuousSup β]
     {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (f ⊔ g) l (𝓝 (x ⊔ y)) :=
   (continuous_sup.Tendsto _).comp (Tendsto.prod_mk_nhds hf hg)
@@ -161,11 +161,11 @@ theorem Filter.Tendsto.sup_right_nhds' {ι β} [TopologicalSpace β] [HasSup β]
 
 /- warning: filter.tendsto.sup_right_nhds -> Filter.Tendsto.sup_right_nhds is a dubious translation:
 lean 3 declaration is
-  forall {ι : Type.{u1}} {β : Type.{u2}} [_inst_3 : TopologicalSpace.{u2} β] [_inst_4 : HasSup.{u2} β] [_inst_5 : ContinuousSup.{u2} β _inst_3 _inst_4] {l : Filter.{u1} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u1, u2} ι β f l (nhds.{u2} β _inst_3 x)) -> (Filter.Tendsto.{u1, u2} ι β g l (nhds.{u2} β _inst_3 y)) -> (Filter.Tendsto.{u1, u2} ι β (fun (i : ι) => HasSup.sup.{u2} β _inst_4 (f i) (g i)) l (nhds.{u2} β _inst_3 (HasSup.sup.{u2} β _inst_4 x y)))
+  forall {ι : Type.{u1}} {β : Type.{u2}} [_inst_3 : TopologicalSpace.{u2} β] [_inst_4 : Sup.{u2} β] [_inst_5 : ContinuousSup.{u2} β _inst_3 _inst_4] {l : Filter.{u1} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u1, u2} ι β f l (nhds.{u2} β _inst_3 x)) -> (Filter.Tendsto.{u1, u2} ι β g l (nhds.{u2} β _inst_3 y)) -> (Filter.Tendsto.{u1, u2} ι β (fun (i : ι) => Sup.sup.{u2} β _inst_4 (f i) (g i)) l (nhds.{u2} β _inst_3 (Sup.sup.{u2} β _inst_4 x y)))
 but is expected to have type
-  forall {ι : Type.{u2}} {β : Type.{u1}} [_inst_3 : TopologicalSpace.{u1} β] [_inst_4 : HasSup.{u1} β] [_inst_5 : ContinuousSup.{u1} β _inst_3 _inst_4] {l : Filter.{u2} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u2, u1} ι β f l (nhds.{u1} β _inst_3 x)) -> (Filter.Tendsto.{u2, u1} ι β g l (nhds.{u1} β _inst_3 y)) -> (Filter.Tendsto.{u2, u1} ι β (fun (i : ι) => HasSup.sup.{u1} β _inst_4 (f i) (g i)) l (nhds.{u1} β _inst_3 (HasSup.sup.{u1} β _inst_4 x y)))
+  forall {ι : Type.{u2}} {β : Type.{u1}} [_inst_3 : TopologicalSpace.{u1} β] [_inst_4 : Sup.{u1} β] [_inst_5 : ContinuousSup.{u1} β _inst_3 _inst_4] {l : Filter.{u2} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u2, u1} ι β f l (nhds.{u1} β _inst_3 x)) -> (Filter.Tendsto.{u2, u1} ι β g l (nhds.{u1} β _inst_3 y)) -> (Filter.Tendsto.{u2, u1} ι β (fun (i : ι) => Sup.sup.{u1} β _inst_4 (f i) (g i)) l (nhds.{u1} β _inst_3 (Sup.sup.{u1} β _inst_4 x y)))
 Case conversion may be inaccurate. Consider using '#align filter.tendsto.sup_right_nhds Filter.Tendsto.sup_right_nhdsₓ'. -/
-theorem Filter.Tendsto.sup_right_nhds {ι β} [TopologicalSpace β] [HasSup β] [ContinuousSup β]
+theorem Filter.Tendsto.sup_right_nhds {ι β} [TopologicalSpace β] [Sup β] [ContinuousSup β]
     {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (fun i => f i ⊔ g i) l (𝓝 (x ⊔ y)) :=
   hf.sup_right_nhds' hg
@@ -173,11 +173,11 @@ theorem Filter.Tendsto.sup_right_nhds {ι β} [TopologicalSpace β] [HasSup β]
 
 /- warning: filter.tendsto.inf_right_nhds' -> Filter.Tendsto.inf_right_nhds' is a dubious translation:
 lean 3 declaration is
-  forall {ι : Type.{u1}} {β : Type.{u2}} [_inst_3 : TopologicalSpace.{u2} β] [_inst_4 : HasInf.{u2} β] [_inst_5 : ContinuousInf.{u2} β _inst_3 _inst_4] {l : Filter.{u1} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u1, u2} ι β f l (nhds.{u2} β _inst_3 x)) -> (Filter.Tendsto.{u1, u2} ι β g l (nhds.{u2} β _inst_3 y)) -> (Filter.Tendsto.{u1, u2} ι β (HasInf.inf.{max u1 u2} (ι -> β) (Pi.hasInf.{u1, u2} ι (fun (ᾰ : ι) => β) (fun (i : ι) => _inst_4)) f g) l (nhds.{u2} β _inst_3 (HasInf.inf.{u2} β _inst_4 x y)))
+  forall {ι : Type.{u1}} {β : Type.{u2}} [_inst_3 : TopologicalSpace.{u2} β] [_inst_4 : Inf.{u2} β] [_inst_5 : ContinuousInf.{u2} β _inst_3 _inst_4] {l : Filter.{u1} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u1, u2} ι β f l (nhds.{u2} β _inst_3 x)) -> (Filter.Tendsto.{u1, u2} ι β g l (nhds.{u2} β _inst_3 y)) -> (Filter.Tendsto.{u1, u2} ι β (Inf.inf.{max u1 u2} (ι -> β) (Pi.hasInf.{u1, u2} ι (fun (ᾰ : ι) => β) (fun (i : ι) => _inst_4)) f g) l (nhds.{u2} β _inst_3 (Inf.inf.{u2} β _inst_4 x y)))
 but is expected to have type
-  forall {ι : Type.{u2}} {β : Type.{u1}} [_inst_3 : TopologicalSpace.{u1} β] [_inst_4 : HasInf.{u1} β] [_inst_5 : ContinuousInf.{u1} β _inst_3 _inst_4] {l : Filter.{u2} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u2, u1} ι β f l (nhds.{u1} β _inst_3 x)) -> (Filter.Tendsto.{u2, u1} ι β g l (nhds.{u1} β _inst_3 y)) -> (Filter.Tendsto.{u2, u1} ι β (HasInf.inf.{max u1 u2} (ι -> β) (Pi.instHasInfForAll.{u2, u1} ι (fun (ᾰ : ι) => β) (fun (i : ι) => _inst_4)) f g) l (nhds.{u1} β _inst_3 (HasInf.inf.{u1} β _inst_4 x y)))
+  forall {ι : Type.{u2}} {β : Type.{u1}} [_inst_3 : TopologicalSpace.{u1} β] [_inst_4 : Inf.{u1} β] [_inst_5 : ContinuousInf.{u1} β _inst_3 _inst_4] {l : Filter.{u2} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u2, u1} ι β f l (nhds.{u1} β _inst_3 x)) -> (Filter.Tendsto.{u2, u1} ι β g l (nhds.{u1} β _inst_3 y)) -> (Filter.Tendsto.{u2, u1} ι β (Inf.inf.{max u1 u2} (ι -> β) (Pi.instInfForAll.{u2, u1} ι (fun (ᾰ : ι) => β) (fun (i : ι) => _inst_4)) f g) l (nhds.{u1} β _inst_3 (Inf.inf.{u1} β _inst_4 x y)))
 Case conversion may be inaccurate. Consider using '#align filter.tendsto.inf_right_nhds' Filter.Tendsto.inf_right_nhds'ₓ'. -/
-theorem Filter.Tendsto.inf_right_nhds' {ι β} [TopologicalSpace β] [HasInf β] [ContinuousInf β]
+theorem Filter.Tendsto.inf_right_nhds' {ι β} [TopologicalSpace β] [Inf β] [ContinuousInf β]
     {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (f ⊓ g) l (𝓝 (x ⊓ y)) :=
   (continuous_inf.Tendsto _).comp (Tendsto.prod_mk_nhds hf hg)
@@ -185,11 +185,11 @@ theorem Filter.Tendsto.inf_right_nhds' {ι β} [TopologicalSpace β] [HasInf β]
 
 /- warning: filter.tendsto.inf_right_nhds -> Filter.Tendsto.inf_right_nhds is a dubious translation:
 lean 3 declaration is
-  forall {ι : Type.{u1}} {β : Type.{u2}} [_inst_3 : TopologicalSpace.{u2} β] [_inst_4 : HasInf.{u2} β] [_inst_5 : ContinuousInf.{u2} β _inst_3 _inst_4] {l : Filter.{u1} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u1, u2} ι β f l (nhds.{u2} β _inst_3 x)) -> (Filter.Tendsto.{u1, u2} ι β g l (nhds.{u2} β _inst_3 y)) -> (Filter.Tendsto.{u1, u2} ι β (fun (i : ι) => HasInf.inf.{u2} β _inst_4 (f i) (g i)) l (nhds.{u2} β _inst_3 (HasInf.inf.{u2} β _inst_4 x y)))
+  forall {ι : Type.{u1}} {β : Type.{u2}} [_inst_3 : TopologicalSpace.{u2} β] [_inst_4 : Inf.{u2} β] [_inst_5 : ContinuousInf.{u2} β _inst_3 _inst_4] {l : Filter.{u1} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u1, u2} ι β f l (nhds.{u2} β _inst_3 x)) -> (Filter.Tendsto.{u1, u2} ι β g l (nhds.{u2} β _inst_3 y)) -> (Filter.Tendsto.{u1, u2} ι β (fun (i : ι) => Inf.inf.{u2} β _inst_4 (f i) (g i)) l (nhds.{u2} β _inst_3 (Inf.inf.{u2} β _inst_4 x y)))
 but is expected to have type
-  forall {ι : Type.{u2}} {β : Type.{u1}} [_inst_3 : TopologicalSpace.{u1} β] [_inst_4 : HasInf.{u1} β] [_inst_5 : ContinuousInf.{u1} β _inst_3 _inst_4] {l : Filter.{u2} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u2, u1} ι β f l (nhds.{u1} β _inst_3 x)) -> (Filter.Tendsto.{u2, u1} ι β g l (nhds.{u1} β _inst_3 y)) -> (Filter.Tendsto.{u2, u1} ι β (fun (i : ι) => HasInf.inf.{u1} β _inst_4 (f i) (g i)) l (nhds.{u1} β _inst_3 (HasInf.inf.{u1} β _inst_4 x y)))
+  forall {ι : Type.{u2}} {β : Type.{u1}} [_inst_3 : TopologicalSpace.{u1} β] [_inst_4 : Inf.{u1} β] [_inst_5 : ContinuousInf.{u1} β _inst_3 _inst_4] {l : Filter.{u2} ι} {f : ι -> β} {g : ι -> β} {x : β} {y : β}, (Filter.Tendsto.{u2, u1} ι β f l (nhds.{u1} β _inst_3 x)) -> (Filter.Tendsto.{u2, u1} ι β g l (nhds.{u1} β _inst_3 y)) -> (Filter.Tendsto.{u2, u1} ι β (fun (i : ι) => Inf.inf.{u1} β _inst_4 (f i) (g i)) l (nhds.{u1} β _inst_3 (Inf.inf.{u1} β _inst_4 x y)))
 Case conversion may be inaccurate. Consider using '#align filter.tendsto.inf_right_nhds Filter.Tendsto.inf_right_nhdsₓ'. -/
-theorem Filter.Tendsto.inf_right_nhds {ι β} [TopologicalSpace β] [HasInf β] [ContinuousInf β]
+theorem Filter.Tendsto.inf_right_nhds {ι β} [TopologicalSpace β] [Inf β] [ContinuousInf β]
     {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (fun i => f i ⊓ g i) l (𝓝 (x ⊓ y)) :=
   hf.inf_right_nhds' hg

Changes in mathlib4

mathlib3
mathlib4
chore: redistribute tags for fun_prop regarding continuity across the library (#10494)

Co-authored-by: Yury G. Kudryashov <urkud@urkud.name>

Diff
@@ -84,7 +84,7 @@ theorem continuous_inf [Inf L] [ContinuousInf L] : Continuous fun p : L × L =>
   ContinuousInf.continuous_inf
 #align continuous_inf continuous_inf
 
-@[continuity]
+@[continuity, fun_prop]
 theorem Continuous.inf [Inf L] [ContinuousInf L] {f g : X → L} (hf : Continuous f)
     (hg : Continuous g) : Continuous fun x => f x ⊓ g x :=
   continuous_inf.comp (hf.prod_mk hg : _)
@@ -95,7 +95,7 @@ theorem continuous_sup [Sup L] [ContinuousSup L] : Continuous fun p : L × L =>
   ContinuousSup.continuous_sup
 #align continuous_sup continuous_sup
 
-@[continuity]
+@[continuity, fun_prop]
 theorem Continuous.sup [Sup L] [ContinuousSup L] {f g : X → L} (hf : Continuous f)
     (hg : Continuous g) : Continuous fun x => f x ⊔ g x :=
   continuous_sup.comp (hf.prod_mk hg : _)
@@ -189,6 +189,7 @@ lemma ContinuousAt.sup' (hf : ContinuousAt f x) (hg : ContinuousAt g x) :
     ContinuousAt (f ⊔ g) x :=
   hf.sup_nhds' hg
 
+@[fun_prop]
 lemma ContinuousAt.sup (hf : ContinuousAt f x) (hg : ContinuousAt g x) :
     ContinuousAt (fun a ↦ f a ⊔ g a) x :=
   hf.sup' hg
@@ -205,6 +206,7 @@ lemma ContinuousOn.sup' (hf : ContinuousOn f s) (hg : ContinuousOn g s) :
     ContinuousOn (f ⊔ g) s := fun x hx ↦
   (hf x hx).sup' (hg x hx)
 
+@[fun_prop]
 lemma ContinuousOn.sup (hf : ContinuousOn f s) (hg : ContinuousOn g s) :
     ContinuousOn (fun a ↦ f a ⊔ g a) s :=
   hf.sup' hg
@@ -221,6 +223,7 @@ lemma ContinuousAt.inf' (hf : ContinuousAt f x) (hg : ContinuousAt g x) :
     ContinuousAt (f ⊓ g) x :=
   hf.inf_nhds' hg
 
+@[fun_prop]
 lemma ContinuousAt.inf (hf : ContinuousAt f x) (hg : ContinuousAt g x) :
     ContinuousAt (fun a ↦ f a ⊓ g a) x :=
   hf.inf' hg
@@ -237,6 +240,7 @@ lemma ContinuousOn.inf' (hf : ContinuousOn f s) (hg : ContinuousOn g s) :
     ContinuousOn (f ⊓ g) s := fun x hx ↦
   (hf x hx).inf' (hg x hx)
 
+@[fun_prop]
 lemma ContinuousOn.inf (hf : ContinuousOn f s) (hg : ContinuousOn g s) :
     ContinuousOn (fun a ↦ f a ⊓ g a) s :=
   hf.inf' hg
chore(Topology/Order): move OrderClosedTopology to a new file (#10497)
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2021 Christopher Hoskin. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Christopher Hoskin
 -/
-import Mathlib.Topology.Order.Basic
 import Mathlib.Topology.Constructions
+import Mathlib.Topology.Order.OrderClosed
 
 #align_import topology.order.lattice from "leanprover-community/mathlib"@"0a0ec35061ed9960bf0e7ffb0335f44447b58977"
 
chore(Topology): remove autoImplicit in some files (#9689)

... where this is easy to do.

Co-authored-by: grunweg <grunweg@posteo.de>

Diff
@@ -24,8 +24,6 @@ class `TopologicalLattice` as a topological space and lattice `L` extending `Con
 topological, lattice
 -/
 
-set_option autoImplicit true
-
 open Filter
 
 open Topology
@@ -79,7 +77,7 @@ instance (priority := 100) LinearOrder.topologicalLattice {L : Type*} [Topologic
   continuous_sup := continuous_max
 #align linear_order.topological_lattice LinearOrder.topologicalLattice
 
-variable [TopologicalSpace L] [TopologicalSpace X]
+variable {L X : Type*} [TopologicalSpace L] [TopologicalSpace X]
 
 @[continuity]
 theorem continuous_inf [Inf L] [ContinuousInf L] : Continuous fun p : L × L => p.1 ⊓ p.2 :=
@@ -133,7 +131,7 @@ end SupInf
 
 open Finset
 
-variable {ι : Type*} {s : Finset ι} {f : ι → α → L} {g : ι → L}
+variable {ι α : Type*} {s : Finset ι} {f : ι → α → L} {l : Filter α} {g : ι → L}
 
 lemma finset_sup'_nhds [SemilatticeSup L] [ContinuousSup L]
     (hne : s.Nonempty) (hs : ∀ i ∈ s, Tendsto (f i) l (𝓝 (g i))) :
feat(Topology/Order): continuity of Finset.sup, partialSups etc (#8141)

Also rename Filter.Tendsto.sup_right_nhds to Filter.Tendsto.sup_nhds etc.

Diff
@@ -26,7 +26,6 @@ topological, lattice
 
 set_option autoImplicit true
 
-
 open Filter
 
 open Topology
@@ -75,8 +74,7 @@ instance (priority := 100) OrderDual.topologicalLattice (L : Type*) [Topological
 
 -- see Note [lower instance priority]
 instance (priority := 100) LinearOrder.topologicalLattice {L : Type*} [TopologicalSpace L]
-    [LinearOrder L] [OrderClosedTopology L] : TopologicalLattice L
-    where
+    [LinearOrder L] [OrderClosedTopology L] : TopologicalLattice L where
   continuous_inf := continuous_min
   continuous_sup := continuous_max
 #align linear_order.topological_lattice LinearOrder.topologicalLattice
@@ -105,26 +103,308 @@ theorem Continuous.sup [Sup L] [ContinuousSup L] {f g : X → L} (hf : Continuou
   continuous_sup.comp (hf.prod_mk hg : _)
 #align continuous.sup Continuous.sup
 
-theorem Filter.Tendsto.sup_right_nhds' {ι β} [TopologicalSpace β] [Sup β] [ContinuousSup β]
-    {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
+namespace Filter.Tendsto
+
+section SupInf
+
+variable {α : Type*} {l : Filter α} {f g : α → L} {x y : L}
+
+lemma sup_nhds' [Sup L] [ContinuousSup L] (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (f ⊔ g) l (𝓝 (x ⊔ y)) :=
   (continuous_sup.tendsto _).comp (Tendsto.prod_mk_nhds hf hg)
-#align filter.tendsto.sup_right_nhds' Filter.Tendsto.sup_right_nhds'
+#align filter.tendsto.sup_right_nhds' Filter.Tendsto.sup_nhds'
 
-theorem Filter.Tendsto.sup_right_nhds {ι β} [TopologicalSpace β] [Sup β] [ContinuousSup β]
-    {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
+lemma sup_nhds [Sup L] [ContinuousSup L] (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (fun i => f i ⊔ g i) l (𝓝 (x ⊔ y)) :=
-  hf.sup_right_nhds' hg
-#align filter.tendsto.sup_right_nhds Filter.Tendsto.sup_right_nhds
+  hf.sup_nhds' hg
+#align filter.tendsto.sup_right_nhds Filter.Tendsto.sup_nhds
 
-theorem Filter.Tendsto.inf_right_nhds' {ι β} [TopologicalSpace β] [Inf β] [ContinuousInf β]
-    {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
+lemma inf_nhds' [Inf L] [ContinuousInf L] (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (f ⊓ g) l (𝓝 (x ⊓ y)) :=
   (continuous_inf.tendsto _).comp (Tendsto.prod_mk_nhds hf hg)
-#align filter.tendsto.inf_right_nhds' Filter.Tendsto.inf_right_nhds'
+#align filter.tendsto.inf_right_nhds' Filter.Tendsto.inf_nhds'
 
-theorem Filter.Tendsto.inf_right_nhds {ι β} [TopologicalSpace β] [Inf β] [ContinuousInf β]
-    {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
+lemma inf_nhds [Inf L] [ContinuousInf L] (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (fun i => f i ⊓ g i) l (𝓝 (x ⊓ y)) :=
-  hf.inf_right_nhds' hg
-#align filter.tendsto.inf_right_nhds Filter.Tendsto.inf_right_nhds
+  hf.inf_nhds' hg
+#align filter.tendsto.inf_right_nhds Filter.Tendsto.inf_nhds
+
+end SupInf
+
+open Finset
+
+variable {ι : Type*} {s : Finset ι} {f : ι → α → L} {g : ι → L}
+
+lemma finset_sup'_nhds [SemilatticeSup L] [ContinuousSup L]
+    (hne : s.Nonempty) (hs : ∀ i ∈ s, Tendsto (f i) l (𝓝 (g i))) :
+    Tendsto (s.sup' hne f) l (𝓝 (s.sup' hne g)) := by
+  induction hne using Finset.Nonempty.cons_induction with
+  | h₀ => simpa using hs
+  | h₁ s ha hne ihs =>
+    rw [forall_mem_cons] at hs
+    simp only [sup'_cons, hne]
+    exact hs.1.sup_nhds (ihs hs.2)
+
+lemma finset_sup'_nhds_apply [SemilatticeSup L] [ContinuousSup L]
+    (hne : s.Nonempty) (hs : ∀ i ∈ s, Tendsto (f i) l (𝓝 (g i))) :
+    Tendsto (fun a ↦ s.sup' hne (f · a)) l (𝓝 (s.sup' hne g)) := by
+  simpa only [← Finset.sup'_apply] using finset_sup'_nhds hne hs
+
+lemma finset_inf'_nhds [SemilatticeInf L] [ContinuousInf L]
+    (hne : s.Nonempty) (hs : ∀ i ∈ s, Tendsto (f i) l (𝓝 (g i))) :
+    Tendsto (s.inf' hne f) l (𝓝 (s.inf' hne g)) :=
+  finset_sup'_nhds (L := Lᵒᵈ) hne hs
+
+lemma finset_inf'_nhds_apply [SemilatticeInf L] [ContinuousInf L]
+    (hne : s.Nonempty) (hs : ∀ i ∈ s, Tendsto (f i) l (𝓝 (g i))) :
+    Tendsto (fun a ↦ s.inf' hne (f · a)) l (𝓝 (s.inf' hne g)) :=
+  finset_sup'_nhds_apply (L := Lᵒᵈ) hne hs
+
+lemma finset_sup_nhds [SemilatticeSup L] [OrderBot L] [ContinuousSup L]
+    (hs : ∀ i ∈ s, Tendsto (f i) l (𝓝 (g i))) : Tendsto (s.sup f) l (𝓝 (s.sup g)) := by
+  rcases s.eq_empty_or_nonempty with rfl | hne
+  · simpa using tendsto_const_nhds
+  · simp only [← sup'_eq_sup hne]
+    exact finset_sup'_nhds hne hs
+
+lemma finset_sup_nhds_apply [SemilatticeSup L] [OrderBot L] [ContinuousSup L]
+    (hs : ∀ i ∈ s, Tendsto (f i) l (𝓝 (g i))) :
+    Tendsto (fun a ↦ s.sup (f · a)) l (𝓝 (s.sup g)) := by
+  simpa only [← Finset.sup_apply] using finset_sup_nhds hs
+
+lemma finset_inf_nhds [SemilatticeInf L] [OrderTop L] [ContinuousInf L]
+    (hs : ∀ i ∈ s, Tendsto (f i) l (𝓝 (g i))) : Tendsto (s.inf f) l (𝓝 (s.inf g)) :=
+  finset_sup_nhds (L := Lᵒᵈ) hs
+
+lemma finset_inf_nhds_apply [SemilatticeInf L] [OrderTop L] [ContinuousInf L]
+    (hs : ∀ i ∈ s, Tendsto (f i) l (𝓝 (g i))) :
+    Tendsto (fun a ↦ s.inf (f · a)) l (𝓝 (s.inf g)) :=
+  finset_sup_nhds_apply (L := Lᵒᵈ) hs
+
+end Filter.Tendsto
+
+section Sup
+
+variable [Sup L] [ContinuousSup L] {f g : X → L} {s : Set X} {x : X}
+
+lemma ContinuousAt.sup' (hf : ContinuousAt f x) (hg : ContinuousAt g x) :
+    ContinuousAt (f ⊔ g) x :=
+  hf.sup_nhds' hg
+
+lemma ContinuousAt.sup (hf : ContinuousAt f x) (hg : ContinuousAt g x) :
+    ContinuousAt (fun a ↦ f a ⊔ g a) x :=
+  hf.sup' hg
+
+lemma ContinuousWithinAt.sup' (hf : ContinuousWithinAt f s x) (hg : ContinuousWithinAt g s x) :
+    ContinuousWithinAt (f ⊔ g) s x :=
+  hf.sup_nhds' hg
+
+lemma ContinuousWithinAt.sup (hf : ContinuousWithinAt f s x) (hg : ContinuousWithinAt g s x) :
+    ContinuousWithinAt (fun a ↦ f a ⊔ g a) s x :=
+  hf.sup' hg
+
+lemma ContinuousOn.sup' (hf : ContinuousOn f s) (hg : ContinuousOn g s) :
+    ContinuousOn (f ⊔ g) s := fun x hx ↦
+  (hf x hx).sup' (hg x hx)
+
+lemma ContinuousOn.sup (hf : ContinuousOn f s) (hg : ContinuousOn g s) :
+    ContinuousOn (fun a ↦ f a ⊔ g a) s :=
+  hf.sup' hg
+
+lemma Continuous.sup' (hf : Continuous f) (hg : Continuous g) : Continuous (f ⊔ g) := hf.sup hg
+
+end Sup
+
+section Inf
+
+variable [Inf L] [ContinuousInf L] {f g : X → L} {s : Set X} {x : X}
+
+lemma ContinuousAt.inf' (hf : ContinuousAt f x) (hg : ContinuousAt g x) :
+    ContinuousAt (f ⊓ g) x :=
+  hf.inf_nhds' hg
+
+lemma ContinuousAt.inf (hf : ContinuousAt f x) (hg : ContinuousAt g x) :
+    ContinuousAt (fun a ↦ f a ⊓ g a) x :=
+  hf.inf' hg
+
+lemma ContinuousWithinAt.inf' (hf : ContinuousWithinAt f s x) (hg : ContinuousWithinAt g s x) :
+    ContinuousWithinAt (f ⊓ g) s x :=
+  hf.inf_nhds' hg
+
+lemma ContinuousWithinAt.inf (hf : ContinuousWithinAt f s x) (hg : ContinuousWithinAt g s x) :
+    ContinuousWithinAt (fun a ↦ f a ⊓ g a) s x :=
+  hf.inf' hg
+
+lemma ContinuousOn.inf' (hf : ContinuousOn f s) (hg : ContinuousOn g s) :
+    ContinuousOn (f ⊓ g) s := fun x hx ↦
+  (hf x hx).inf' (hg x hx)
+
+lemma ContinuousOn.inf (hf : ContinuousOn f s) (hg : ContinuousOn g s) :
+    ContinuousOn (fun a ↦ f a ⊓ g a) s :=
+  hf.inf' hg
+
+lemma Continuous.inf' (hf : Continuous f) (hg : Continuous g) : Continuous (f ⊓ g) := hf.inf hg
+
+end Inf
+
+section FinsetSup'
+
+variable {ι : Type*} [SemilatticeSup L] [ContinuousSup L] {s : Finset ι}
+  {f : ι → X → L} {t : Set X} {x : X}
+
+lemma ContinuousAt.finset_sup'_apply (hne : s.Nonempty) (hs : ∀ i ∈ s, ContinuousAt (f i) x) :
+    ContinuousAt (fun a ↦ s.sup' hne (f · a)) x :=
+  Tendsto.finset_sup'_nhds_apply hne hs
+
+lemma ContinuousAt.finset_sup' (hne : s.Nonempty) (hs : ∀ i ∈ s, ContinuousAt (f i) x) :
+    ContinuousAt (s.sup' hne f) x := by
+  simpa only [← Finset.sup'_apply] using finset_sup'_apply hne hs
+
+lemma ContinuousWithinAt.finset_sup'_apply (hne : s.Nonempty)
+    (hs : ∀ i ∈ s, ContinuousWithinAt (f i) t x) :
+    ContinuousWithinAt (fun a ↦ s.sup' hne (f · a)) t x :=
+  Tendsto.finset_sup'_nhds_apply hne hs
+
+lemma ContinuousWithinAt.finset_sup' (hne : s.Nonempty)
+    (hs : ∀ i ∈ s, ContinuousWithinAt (f i) t x) : ContinuousWithinAt (s.sup' hne f) t x := by
+  simpa only [← Finset.sup'_apply] using finset_sup'_apply hne hs
+
+lemma ContinuousOn.finset_sup'_apply (hne : s.Nonempty) (hs : ∀ i ∈ s, ContinuousOn (f i) t) :
+    ContinuousOn (fun a ↦ s.sup' hne (f · a)) t := fun x hx ↦
+  ContinuousWithinAt.finset_sup'_apply hne fun i hi ↦ hs i hi x hx
+
+lemma ContinuousOn.finset_sup' (hne : s.Nonempty) (hs : ∀ i ∈ s, ContinuousOn (f i) t) :
+    ContinuousOn (s.sup' hne f) t := fun x hx ↦
+  ContinuousWithinAt.finset_sup' hne fun i hi ↦ hs i hi x hx
+
+lemma Continuous.finset_sup'_apply (hne : s.Nonempty) (hs : ∀ i ∈ s, Continuous (f i)) :
+    Continuous (fun a ↦ s.sup' hne (f · a)) :=
+  continuous_iff_continuousAt.2 fun _ ↦ ContinuousAt.finset_sup'_apply _ fun i hi ↦
+    (hs i hi).continuousAt
+
+lemma Continuous.finset_sup' (hne : s.Nonempty) (hs : ∀ i ∈ s, Continuous (f i)) :
+    Continuous (s.sup' hne f) :=
+  continuous_iff_continuousAt.2 fun _ ↦ ContinuousAt.finset_sup' _ fun i hi ↦ (hs i hi).continuousAt
+
+end FinsetSup'
+
+section FinsetSup
+
+variable {ι : Type*} [SemilatticeSup L] [OrderBot L] [ContinuousSup L] {s : Finset ι}
+  {f : ι → X → L} {t : Set X} {x : X}
+
+lemma ContinuousAt.finset_sup_apply (hs : ∀ i ∈ s, ContinuousAt (f i) x) :
+    ContinuousAt (fun a ↦ s.sup (f · a)) x :=
+  Tendsto.finset_sup_nhds_apply hs
+
+lemma ContinuousAt.finset_sup (hs : ∀ i ∈ s, ContinuousAt (f i) x) :
+    ContinuousAt (s.sup f) x := by
+  simpa only [← Finset.sup_apply] using finset_sup_apply hs
+
+lemma ContinuousWithinAt.finset_sup_apply
+    (hs : ∀ i ∈ s, ContinuousWithinAt (f i) t x) :
+    ContinuousWithinAt (fun a ↦ s.sup (f · a)) t x :=
+  Tendsto.finset_sup_nhds_apply hs
+
+lemma ContinuousWithinAt.finset_sup
+    (hs : ∀ i ∈ s, ContinuousWithinAt (f i) t x) : ContinuousWithinAt (s.sup f) t x := by
+  simpa only [← Finset.sup_apply] using finset_sup_apply hs
+
+lemma ContinuousOn.finset_sup_apply (hs : ∀ i ∈ s, ContinuousOn (f i) t) :
+    ContinuousOn (fun a ↦ s.sup (f · a)) t := fun x hx ↦
+  ContinuousWithinAt.finset_sup_apply fun i hi ↦ hs i hi x hx
+
+lemma ContinuousOn.finset_sup (hs : ∀ i ∈ s, ContinuousOn (f i) t) :
+    ContinuousOn (s.sup f) t := fun x hx ↦
+  ContinuousWithinAt.finset_sup fun i hi ↦ hs i hi x hx
+
+lemma Continuous.finset_sup_apply (hs : ∀ i ∈ s, Continuous (f i)) :
+    Continuous (fun a ↦ s.sup (f · a)) :=
+  continuous_iff_continuousAt.2 fun _ ↦ ContinuousAt.finset_sup_apply fun i hi ↦
+    (hs i hi).continuousAt
+
+lemma Continuous.finset_sup (hs : ∀ i ∈ s, Continuous (f i)) : Continuous (s.sup f) :=
+  continuous_iff_continuousAt.2 fun _ ↦ ContinuousAt.finset_sup fun i hi ↦ (hs i hi).continuousAt
+
+end FinsetSup
+
+section FinsetInf'
+
+variable {ι : Type*} [SemilatticeInf L] [ContinuousInf L] {s : Finset ι}
+  {f : ι → X → L} {t : Set X} {x : X}
+
+lemma ContinuousAt.finset_inf'_apply (hne : s.Nonempty) (hs : ∀ i ∈ s, ContinuousAt (f i) x) :
+    ContinuousAt (fun a ↦ s.inf' hne (f · a)) x :=
+  Tendsto.finset_inf'_nhds_apply hne hs
+
+lemma ContinuousAt.finset_inf' (hne : s.Nonempty) (hs : ∀ i ∈ s, ContinuousAt (f i) x) :
+    ContinuousAt (s.inf' hne f) x := by
+  simpa only [← Finset.inf'_apply] using finset_inf'_apply hne hs
+
+lemma ContinuousWithinAt.finset_inf'_apply (hne : s.Nonempty)
+    (hs : ∀ i ∈ s, ContinuousWithinAt (f i) t x) :
+    ContinuousWithinAt (fun a ↦ s.inf' hne (f · a)) t x :=
+  Tendsto.finset_inf'_nhds_apply hne hs
+
+lemma ContinuousWithinAt.finset_inf' (hne : s.Nonempty)
+    (hs : ∀ i ∈ s, ContinuousWithinAt (f i) t x) : ContinuousWithinAt (s.inf' hne f) t x := by
+  simpa only [← Finset.inf'_apply] using finset_inf'_apply hne hs
+
+lemma ContinuousOn.finset_inf'_apply (hne : s.Nonempty) (hs : ∀ i ∈ s, ContinuousOn (f i) t) :
+    ContinuousOn (fun a ↦ s.inf' hne (f · a)) t := fun x hx ↦
+  ContinuousWithinAt.finset_inf'_apply hne fun i hi ↦ hs i hi x hx
+
+lemma ContinuousOn.finset_inf' (hne : s.Nonempty) (hs : ∀ i ∈ s, ContinuousOn (f i) t) :
+    ContinuousOn (s.inf' hne f) t := fun x hx ↦
+  ContinuousWithinAt.finset_inf' hne fun i hi ↦ hs i hi x hx
+
+lemma Continuous.finset_inf'_apply (hne : s.Nonempty) (hs : ∀ i ∈ s, Continuous (f i)) :
+    Continuous (fun a ↦ s.inf' hne (f · a)) :=
+  continuous_iff_continuousAt.2 fun _ ↦ ContinuousAt.finset_inf'_apply _ fun i hi ↦
+    (hs i hi).continuousAt
+
+lemma Continuous.finset_inf' (hne : s.Nonempty) (hs : ∀ i ∈ s, Continuous (f i)) :
+    Continuous (s.inf' hne f) :=
+  continuous_iff_continuousAt.2 fun _ ↦ ContinuousAt.finset_inf' _ fun i hi ↦ (hs i hi).continuousAt
+
+end FinsetInf'
+
+section FinsetInf
+
+variable {ι : Type*} [SemilatticeInf L] [OrderTop L] [ContinuousInf L] {s : Finset ι}
+  {f : ι → X → L} {t : Set X} {x : X}
+
+lemma ContinuousAt.finset_inf_apply (hs : ∀ i ∈ s, ContinuousAt (f i) x) :
+    ContinuousAt (fun a ↦ s.inf (f · a)) x :=
+  Tendsto.finset_inf_nhds_apply hs
+
+lemma ContinuousAt.finset_inf (hs : ∀ i ∈ s, ContinuousAt (f i) x) :
+    ContinuousAt (s.inf f) x := by
+  simpa only [← Finset.inf_apply] using finset_inf_apply hs
+
+lemma ContinuousWithinAt.finset_inf_apply
+    (hs : ∀ i ∈ s, ContinuousWithinAt (f i) t x) :
+    ContinuousWithinAt (fun a ↦ s.inf (f · a)) t x :=
+  Tendsto.finset_inf_nhds_apply hs
+
+lemma ContinuousWithinAt.finset_inf
+    (hs : ∀ i ∈ s, ContinuousWithinAt (f i) t x) : ContinuousWithinAt (s.inf f) t x := by
+  simpa only [← Finset.inf_apply] using finset_inf_apply hs
+
+lemma ContinuousOn.finset_inf_apply (hs : ∀ i ∈ s, ContinuousOn (f i) t) :
+    ContinuousOn (fun a ↦ s.inf (f · a)) t := fun x hx ↦
+  ContinuousWithinAt.finset_inf_apply fun i hi ↦ hs i hi x hx
+
+lemma ContinuousOn.finset_inf (hs : ∀ i ∈ s, ContinuousOn (f i) t) :
+    ContinuousOn (s.inf f) t := fun x hx ↦
+  ContinuousWithinAt.finset_inf fun i hi ↦ hs i hi x hx
+
+lemma Continuous.finset_inf_apply (hs : ∀ i ∈ s, Continuous (f i)) :
+    Continuous (fun a ↦ s.inf (f · a)) :=
+  continuous_iff_continuousAt.2 fun _ ↦ ContinuousAt.finset_inf_apply fun i hi ↦
+    (hs i hi).continuousAt
+
+lemma Continuous.finset_inf (hs : ∀ i ∈ s, Continuous (f i)) : Continuous (s.inf f) :=
+  continuous_iff_continuousAt.2 fun _ ↦ ContinuousAt.finset_inf fun i hi ↦ (hs i hi).continuousAt
+
+end FinsetInf
style: fix wrapping of where (#7149)
Diff
@@ -51,14 +51,14 @@ class ContinuousSup (L : Type*) [TopologicalSpace L] [Sup L] : Prop where
 
 -- see Note [lower instance priority]
 instance (priority := 100) OrderDual.continuousSup (L : Type*) [TopologicalSpace L] [Inf L]
-    [ContinuousInf L] : ContinuousSup Lᵒᵈ
-    where continuous_sup := @ContinuousInf.continuous_inf L _ _ _
+    [ContinuousInf L] : ContinuousSup Lᵒᵈ where
+  continuous_sup := @ContinuousInf.continuous_inf L _ _ _
 #align order_dual.has_continuous_sup OrderDual.continuousSup
 
 -- see Note [lower instance priority]
 instance (priority := 100) OrderDual.continuousInf (L : Type*) [TopologicalSpace L] [Sup L]
-    [ContinuousSup L] : ContinuousInf Lᵒᵈ
-    where continuous_inf := @ContinuousSup.continuous_sup L _ _ _
+    [ContinuousSup L] : ContinuousInf Lᵒᵈ where
+  continuous_inf := @ContinuousSup.continuous_sup L _ _ _
 #align order_dual.has_continuous_inf OrderDual.continuousInf
 
 /-- Let `L` be a lattice equipped with a topology such that `L` has continuous infimum and supremum.
fix: disable autoImplicit globally (#6528)

Autoimplicits are highly controversial and also defeat the performance-improving work in #6474.

The intent of this PR is to make autoImplicit opt-in on a per-file basis, by disabling it in the lakefile and enabling it again with set_option autoImplicit true in the few files that rely on it.

That also keeps this PR small, as opposed to attempting to "fix" files to not need it any more.

I claim that many of the uses of autoImplicit in these files are accidental; situations such as:

  • Assuming variables are in scope, but pasting the lemma in the wrong section
  • Pasting in a lemma from a scratch file without checking to see if the variable names are consistent with the rest of the file
  • Making a copy-paste error between lemmas and forgetting to add an explicit arguments.

Having set_option autoImplicit false as the default prevents these types of mistake being made in the 90% of files where autoImplicits are not used at all, and causes them to be caught by CI during review.

I think there were various points during the port where we encouraged porters to delete the universes u v lines; I think having autoparams for universe variables only would cover a lot of the cases we actually use them, while avoiding any real shortcomings.

A Zulip poll (after combining overlapping votes accordingly) was in favor of this change with 5:5:18 as the no:dontcare:yes vote ratio.

While this PR was being reviewed, a handful of files gained some more likely-accidental autoImplicits. In these places, set_option autoImplicit true has been placed locally within a section, rather than at the top of the file.

Diff
@@ -24,6 +24,8 @@ class `TopologicalLattice` as a topological space and lattice `L` extending `Con
 topological, lattice
 -/
 
+set_option autoImplicit true
+
 
 open Filter
 
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -33,7 +33,7 @@ open Topology
 `⊓:L×L → L` be an infimum. Then `L` is said to have *(jointly) continuous infimum* if the map
 `⊓:L×L → L` is continuous.
 -/
-class ContinuousInf (L : Type _) [TopologicalSpace L] [Inf L] : Prop where
+class ContinuousInf (L : Type*) [TopologicalSpace L] [Inf L] : Prop where
   /-- The infimum is continuous -/
   continuous_inf : Continuous fun p : L × L => p.1 ⊓ p.2
 #align has_continuous_inf ContinuousInf
@@ -42,19 +42,19 @@ class ContinuousInf (L : Type _) [TopologicalSpace L] [Inf L] : Prop where
 `⊓:L×L → L` be a supremum. Then `L` is said to have *(jointly) continuous supremum* if the map
 `⊓:L×L → L` is continuous.
 -/
-class ContinuousSup (L : Type _) [TopologicalSpace L] [Sup L] : Prop where
+class ContinuousSup (L : Type*) [TopologicalSpace L] [Sup L] : Prop where
   /-- The supremum is continuous -/
   continuous_sup : Continuous fun p : L × L => p.1 ⊔ p.2
 #align has_continuous_sup ContinuousSup
 
 -- see Note [lower instance priority]
-instance (priority := 100) OrderDual.continuousSup (L : Type _) [TopologicalSpace L] [Inf L]
+instance (priority := 100) OrderDual.continuousSup (L : Type*) [TopologicalSpace L] [Inf L]
     [ContinuousInf L] : ContinuousSup Lᵒᵈ
     where continuous_sup := @ContinuousInf.continuous_inf L _ _ _
 #align order_dual.has_continuous_sup OrderDual.continuousSup
 
 -- see Note [lower instance priority]
-instance (priority := 100) OrderDual.continuousInf (L : Type _) [TopologicalSpace L] [Sup L]
+instance (priority := 100) OrderDual.continuousInf (L : Type*) [TopologicalSpace L] [Sup L]
     [ContinuousSup L] : ContinuousInf Lᵒᵈ
     where continuous_inf := @ContinuousSup.continuous_sup L _ _ _
 #align order_dual.has_continuous_inf OrderDual.continuousInf
@@ -62,17 +62,17 @@ instance (priority := 100) OrderDual.continuousInf (L : Type _) [TopologicalSpac
 /-- Let `L` be a lattice equipped with a topology such that `L` has continuous infimum and supremum.
 Then `L` is said to be a *topological lattice*.
 -/
-class TopologicalLattice (L : Type _) [TopologicalSpace L] [Lattice L]
+class TopologicalLattice (L : Type*) [TopologicalSpace L] [Lattice L]
   extends ContinuousInf L, ContinuousSup L : Prop
 #align topological_lattice TopologicalLattice
 
 -- see Note [lower instance priority]
-instance (priority := 100) OrderDual.topologicalLattice (L : Type _) [TopologicalSpace L]
+instance (priority := 100) OrderDual.topologicalLattice (L : Type*) [TopologicalSpace L]
     [Lattice L] [TopologicalLattice L] : TopologicalLattice Lᵒᵈ where
 #align order_dual.topological_lattice OrderDual.topologicalLattice
 
 -- see Note [lower instance priority]
-instance (priority := 100) LinearOrder.topologicalLattice {L : Type _} [TopologicalSpace L]
+instance (priority := 100) LinearOrder.topologicalLattice {L : Type*} [TopologicalSpace L]
     [LinearOrder L] [OrderClosedTopology L] : TopologicalLattice L
     where
   continuous_inf := continuous_min
feat: Linter that checks that Prop classes are Props (#6148)
Diff
@@ -62,8 +62,8 @@ instance (priority := 100) OrderDual.continuousInf (L : Type _) [TopologicalSpac
 /-- Let `L` be a lattice equipped with a topology such that `L` has continuous infimum and supremum.
 Then `L` is said to be a *topological lattice*.
 -/
-class TopologicalLattice (L : Type _) [TopologicalSpace L] [Lattice L] extends ContinuousInf L,
-  ContinuousSup L
+class TopologicalLattice (L : Type _) [TopologicalSpace L] [Lattice L]
+  extends ContinuousInf L, ContinuousSup L : Prop
 #align topological_lattice TopologicalLattice
 
 -- see Note [lower instance priority]
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2021 Christopher Hoskin. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Christopher Hoskin
-
-! This file was ported from Lean 3 source module topology.order.lattice
-! leanprover-community/mathlib commit 0a0ec35061ed9960bf0e7ffb0335f44447b58977
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Topology.Order.Basic
 import Mathlib.Topology.Constructions
 
+#align_import topology.order.lattice from "leanprover-community/mathlib"@"0a0ec35061ed9960bf0e7ffb0335f44447b58977"
+
 /-!
 # Topological lattices
 
chore: fix many typos (#4967)

These are all doc fixes

Diff
@@ -37,7 +37,7 @@ open Topology
 `⊓:L×L → L` is continuous.
 -/
 class ContinuousInf (L : Type _) [TopologicalSpace L] [Inf L] : Prop where
-  /-- The infinimum is continuous -/
+  /-- The infimum is continuous -/
   continuous_inf : Continuous fun p : L × L => p.1 ⊓ p.2
 #align has_continuous_inf ContinuousInf
 
refactor: rename HasSup/HasInf to Sup/Inf (#2475)

Co-authored-by: Yury G. Kudryashov <urkud@urkud.name>

Diff
@@ -36,7 +36,7 @@ open Topology
 `⊓:L×L → L` be an infimum. Then `L` is said to have *(jointly) continuous infimum* if the map
 `⊓:L×L → L` is continuous.
 -/
-class ContinuousInf (L : Type _) [TopologicalSpace L] [HasInf L] : Prop where
+class ContinuousInf (L : Type _) [TopologicalSpace L] [Inf L] : Prop where
   /-- The infinimum is continuous -/
   continuous_inf : Continuous fun p : L × L => p.1 ⊓ p.2
 #align has_continuous_inf ContinuousInf
@@ -45,19 +45,19 @@ class ContinuousInf (L : Type _) [TopologicalSpace L] [HasInf L] : Prop where
 `⊓:L×L → L` be a supremum. Then `L` is said to have *(jointly) continuous supremum* if the map
 `⊓:L×L → L` is continuous.
 -/
-class ContinuousSup (L : Type _) [TopologicalSpace L] [HasSup L] : Prop where
+class ContinuousSup (L : Type _) [TopologicalSpace L] [Sup L] : Prop where
   /-- The supremum is continuous -/
   continuous_sup : Continuous fun p : L × L => p.1 ⊔ p.2
 #align has_continuous_sup ContinuousSup
 
 -- see Note [lower instance priority]
-instance (priority := 100) OrderDual.continuousSup (L : Type _) [TopologicalSpace L] [HasInf L]
+instance (priority := 100) OrderDual.continuousSup (L : Type _) [TopologicalSpace L] [Inf L]
     [ContinuousInf L] : ContinuousSup Lᵒᵈ
     where continuous_sup := @ContinuousInf.continuous_inf L _ _ _
 #align order_dual.has_continuous_sup OrderDual.continuousSup
 
 -- see Note [lower instance priority]
-instance (priority := 100) OrderDual.continuousInf (L : Type _) [TopologicalSpace L] [HasSup L]
+instance (priority := 100) OrderDual.continuousInf (L : Type _) [TopologicalSpace L] [Sup L]
     [ContinuousSup L] : ContinuousInf Lᵒᵈ
     where continuous_inf := @ContinuousSup.continuous_sup L _ _ _
 #align order_dual.has_continuous_inf OrderDual.continuousInf
@@ -85,46 +85,46 @@ instance (priority := 100) LinearOrder.topologicalLattice {L : Type _} [Topologi
 variable [TopologicalSpace L] [TopologicalSpace X]
 
 @[continuity]
-theorem continuous_inf [HasInf L] [ContinuousInf L] : Continuous fun p : L × L => p.1 ⊓ p.2 :=
+theorem continuous_inf [Inf L] [ContinuousInf L] : Continuous fun p : L × L => p.1 ⊓ p.2 :=
   ContinuousInf.continuous_inf
 #align continuous_inf continuous_inf
 
 @[continuity]
-theorem Continuous.inf [HasInf L] [ContinuousInf L] {f g : X → L} (hf : Continuous f)
+theorem Continuous.inf [Inf L] [ContinuousInf L] {f g : X → L} (hf : Continuous f)
     (hg : Continuous g) : Continuous fun x => f x ⊓ g x :=
   continuous_inf.comp (hf.prod_mk hg : _)
 #align continuous.inf Continuous.inf
 
 @[continuity]
-theorem continuous_sup [HasSup L] [ContinuousSup L] : Continuous fun p : L × L => p.1 ⊔ p.2 :=
+theorem continuous_sup [Sup L] [ContinuousSup L] : Continuous fun p : L × L => p.1 ⊔ p.2 :=
   ContinuousSup.continuous_sup
 #align continuous_sup continuous_sup
 
 @[continuity]
-theorem Continuous.sup [HasSup L] [ContinuousSup L] {f g : X → L} (hf : Continuous f)
+theorem Continuous.sup [Sup L] [ContinuousSup L] {f g : X → L} (hf : Continuous f)
     (hg : Continuous g) : Continuous fun x => f x ⊔ g x :=
   continuous_sup.comp (hf.prod_mk hg : _)
 #align continuous.sup Continuous.sup
 
-theorem Filter.Tendsto.sup_right_nhds' {ι β} [TopologicalSpace β] [HasSup β] [ContinuousSup β]
+theorem Filter.Tendsto.sup_right_nhds' {ι β} [TopologicalSpace β] [Sup β] [ContinuousSup β]
     {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (f ⊔ g) l (𝓝 (x ⊔ y)) :=
   (continuous_sup.tendsto _).comp (Tendsto.prod_mk_nhds hf hg)
 #align filter.tendsto.sup_right_nhds' Filter.Tendsto.sup_right_nhds'
 
-theorem Filter.Tendsto.sup_right_nhds {ι β} [TopologicalSpace β] [HasSup β] [ContinuousSup β]
+theorem Filter.Tendsto.sup_right_nhds {ι β} [TopologicalSpace β] [Sup β] [ContinuousSup β]
     {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (fun i => f i ⊔ g i) l (𝓝 (x ⊔ y)) :=
   hf.sup_right_nhds' hg
 #align filter.tendsto.sup_right_nhds Filter.Tendsto.sup_right_nhds
 
-theorem Filter.Tendsto.inf_right_nhds' {ι β} [TopologicalSpace β] [HasInf β] [ContinuousInf β]
+theorem Filter.Tendsto.inf_right_nhds' {ι β} [TopologicalSpace β] [Inf β] [ContinuousInf β]
     {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (f ⊓ g) l (𝓝 (x ⊓ y)) :=
   (continuous_inf.tendsto _).comp (Tendsto.prod_mk_nhds hf hg)
 #align filter.tendsto.inf_right_nhds' Filter.Tendsto.inf_right_nhds'
 
-theorem Filter.Tendsto.inf_right_nhds {ι β} [TopologicalSpace β] [HasInf β] [ContinuousInf β]
+theorem Filter.Tendsto.inf_right_nhds {ι β} [TopologicalSpace β] [Inf β] [ContinuousInf β]
     {l : Filter ι} {f g : ι → β} {x y : β} (hf : Tendsto f l (𝓝 x)) (hg : Tendsto g l (𝓝 y)) :
     Tendsto (fun i => f i ⊓ g i) l (𝓝 (x ⊓ y)) :=
   hf.inf_right_nhds' hg
feat: port continuity tactic (#2145)

We implement the continuity tactic using aesop, this makes it more robust and reduces the code to trivial macros.

Diff
@@ -84,23 +84,23 @@ instance (priority := 100) LinearOrder.topologicalLattice {L : Type _} [Topologi
 
 variable [TopologicalSpace L] [TopologicalSpace X]
 
--- @[continuity] -- Porting note: restore `continuity`
+@[continuity]
 theorem continuous_inf [HasInf L] [ContinuousInf L] : Continuous fun p : L × L => p.1 ⊓ p.2 :=
   ContinuousInf.continuous_inf
 #align continuous_inf continuous_inf
 
--- @[continuity] -- Porting note: restore `continuity`
+@[continuity]
 theorem Continuous.inf [HasInf L] [ContinuousInf L] {f g : X → L} (hf : Continuous f)
     (hg : Continuous g) : Continuous fun x => f x ⊓ g x :=
   continuous_inf.comp (hf.prod_mk hg : _)
 #align continuous.inf Continuous.inf
 
--- @[continuity] -- Porting note: restore `continuity`
+@[continuity]
 theorem continuous_sup [HasSup L] [ContinuousSup L] : Continuous fun p : L × L => p.1 ⊔ p.2 :=
   ContinuousSup.continuous_sup
 #align continuous_sup continuous_sup
 
--- @[continuity] -- Porting note: restore `continuity`
+@[continuity]
 theorem Continuous.sup [HasSup L] [ContinuousSup L] {f g : X → L} (hf : Continuous f)
     (hg : Continuous g) : Continuous fun x => f x ⊔ g x :=
   continuous_sup.comp (hf.prod_mk hg : _)
feat: port Topology.Order.Lattice (#2129)

Dependencies 8 + 317

318 files ported (97.5%)
139664 lines ported (96.5%)
Show graph

The unported dependencies are