topology.locally_constant.algebra
⟷
Mathlib.Topology.LocallyConstant.Algebra
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)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,8 +3,8 @@ Copyright (c) 2021 Johan Commelin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin
-/
-import Mathbin.Algebra.Algebra.Pi
-import Mathbin.Topology.LocallyConstant.Basic
+import Algebra.Algebra.Pi
+import Topology.LocallyConstant.Basic
#align_import topology.locally_constant.algebra from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -211,8 +211,8 @@ instance [CommMonoid Y] : CommMonoid (LocallyConstant X Y) :=
instance [Group Y] : Group (LocallyConstant X Y) :=
{ LocallyConstant.monoid, LocallyConstant.hasInv,
LocallyConstant.hasDiv with
- mul_left_inv := by intros; ext; simp only [mul_apply, inv_apply, one_apply, mul_left_inv]
- div_eq_mul_inv := by intros; ext; simp only [mul_apply, inv_apply, div_apply, div_eq_mul_inv] }
+ hMul_left_inv := by intros; ext; simp only [mul_apply, inv_apply, one_apply, mul_left_inv]
+ div_eq_hMul_inv := by intros; ext; simp only [mul_apply, inv_apply, div_apply, div_eq_mul_inv] }
@[to_additive]
instance [CommGroup Y] : CommGroup (LocallyConstant X Y) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,15 +2,12 @@
Copyright (c) 2021 Johan Commelin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin
-
-! This file was ported from Lean 3 source module topology.locally_constant.algebra
-! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Algebra.Algebra.Pi
import Mathbin.Topology.LocallyConstant.Basic
+#align_import topology.locally_constant.algebra from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
+
/-!
# Algebraic structure on locally constant functions
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -92,6 +92,7 @@ instance [MulOneClass Y] : MulOneClass (LocallyConstant X Y) :=
one_mul := by intros; ext; simp only [mul_apply, one_apply, one_mul]
mul_one := by intros; ext; simp only [mul_apply, one_apply, mul_one] }
+#print LocallyConstant.coeFnMonoidHom /-
/-- `coe_fn` is a `monoid_hom`. -/
@[to_additive "`coe_fn` is an `add_monoid_hom`.", simps]
def coeFnMonoidHom [MulOneClass Y] : LocallyConstant X Y →* X → Y
@@ -101,7 +102,9 @@ def coeFnMonoidHom [MulOneClass Y] : LocallyConstant X Y →* X → Y
map_mul' _ _ := rfl
#align locally_constant.coe_fn_monoid_hom LocallyConstant.coeFnMonoidHom
#align locally_constant.coe_fn_add_monoid_hom LocallyConstant.coeFnAddMonoidHom
+-/
+#print LocallyConstant.constMonoidHom /-
/-- The constant-function embedding, as a multiplicative monoid hom. -/
@[to_additive "The constant-function embedding, as an additive monoid hom.", simps]
def constMonoidHom [MulOneClass Y] : Y →* LocallyConstant X Y
@@ -111,6 +114,7 @@ def constMonoidHom [MulOneClass Y] : Y →* LocallyConstant X Y
map_mul' _ _ := rfl
#align locally_constant.const_monoid_hom LocallyConstant.constMonoidHom
#align locally_constant.const_add_monoid_hom LocallyConstant.constAddMonoidHom
+-/
instance [MulZeroClass Y] : MulZeroClass (LocallyConstant X Y) :=
{ LocallyConstant.hasZero,
@@ -133,17 +137,23 @@ noncomputable def charFn (hU : IsClopen U) : LocallyConstant X Y :=
#align locally_constant.char_fn LocallyConstant.charFn
-/
+#print LocallyConstant.coe_charFn /-
theorem coe_charFn (hU : IsClopen U) : (charFn Y hU : X → Y) = Set.indicator U 1 :=
rfl
#align locally_constant.coe_char_fn LocallyConstant.coe_charFn
+-/
+#print LocallyConstant.charFn_eq_one /-
theorem charFn_eq_one [Nontrivial Y] (x : X) (hU : IsClopen U) : charFn Y hU x = (1 : Y) ↔ x ∈ U :=
Set.indicator_eq_one_iff_mem _
#align locally_constant.char_fn_eq_one LocallyConstant.charFn_eq_one
+-/
+#print LocallyConstant.charFn_eq_zero /-
theorem charFn_eq_zero [Nontrivial Y] (x : X) (hU : IsClopen U) : charFn Y hU x = (0 : Y) ↔ x ∉ U :=
Set.indicator_eq_zero_iff_not_mem _
#align locally_constant.char_fn_eq_zero LocallyConstant.charFn_eq_zero
+-/
#print LocallyConstant.charFn_inj /-
theorem charFn_inj [Nontrivial Y] (hU : IsClopen U) (hV : IsClopen V)
@@ -228,11 +238,13 @@ instance [NonAssocSemiring Y] : NonAssocSemiring (LocallyConstant X Y) :=
{ LocallyConstant.mulOneClass, LocallyConstant.addMonoidWithOne,
LocallyConstant.nonUnitalNonAssocSemiring with }
+#print LocallyConstant.constRingHom /-
/-- The constant-function embedding, as a ring hom. -/
@[simps]
def constRingHom [NonAssocSemiring Y] : Y →+* LocallyConstant X Y :=
{ constMonoidHom, constAddMonoidHom with toFun := const X }
#align locally_constant.const_ring_hom LocallyConstant.constRingHom
+-/
instance [Semiring Y] : Semiring (LocallyConstant X Y) :=
{ LocallyConstant.nonAssocSemiring, LocallyConstant.monoid with }
@@ -302,10 +314,12 @@ instance : Algebra R (LocallyConstant X Y)
commutes' := by intros; ext; exact Algebra.commutes' _ _
smul_def' := by intros; ext; exact Algebra.smul_def' _ _
+#print LocallyConstant.coe_algebraMap /-
@[simp]
theorem coe_algebraMap (r : R) : ⇑(algebraMap R (LocallyConstant X Y) r) = algebraMap R (X → Y) r :=
rfl
#align locally_constant.coe_algebra_map LocallyConstant.coe_algebraMap
+-/
end Algebra
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -89,8 +89,8 @@ theorem mul_apply [Mul Y] (f g : LocallyConstant X Y) (x : X) : (f * g) x = f x
instance [MulOneClass Y] : MulOneClass (LocallyConstant X Y) :=
{ LocallyConstant.hasOne,
LocallyConstant.hasMul with
- one_mul := by intros ; ext; simp only [mul_apply, one_apply, one_mul]
- mul_one := by intros ; ext; simp only [mul_apply, one_apply, mul_one] }
+ one_mul := by intros; ext; simp only [mul_apply, one_apply, one_mul]
+ mul_one := by intros; ext; simp only [mul_apply, one_apply, mul_one] }
/-- `coe_fn` is a `monoid_hom`. -/
@[to_additive "`coe_fn` is an `add_monoid_hom`.", simps]
@@ -115,8 +115,8 @@ def constMonoidHom [MulOneClass Y] : Y →* LocallyConstant X Y
instance [MulZeroClass Y] : MulZeroClass (LocallyConstant X Y) :=
{ LocallyConstant.hasZero,
LocallyConstant.hasMul with
- zero_mul := by intros ; ext; simp only [mul_apply, zero_apply, MulZeroClass.zero_mul]
- mul_zero := by intros ; ext; simp only [mul_apply, zero_apply, MulZeroClass.mul_zero] }
+ zero_mul := by intros; ext; simp only [mul_apply, zero_apply, MulZeroClass.zero_mul]
+ mul_zero := by intros; ext; simp only [mul_apply, zero_apply, MulZeroClass.mul_zero] }
instance [MulZeroOneClass Y] : MulZeroOneClass (LocallyConstant X Y) :=
{ LocallyConstant.mulZeroClass, LocallyConstant.mulOneClass with }
@@ -176,14 +176,14 @@ theorem div_apply [Div Y] (f g : LocallyConstant X Y) (x : X) : (f / g) x = f x
@[to_additive]
instance [Semigroup Y] : Semigroup (LocallyConstant X Y) :=
- { LocallyConstant.hasMul with mul_assoc := by intros ; ext; simp only [mul_apply, mul_assoc] }
+ { LocallyConstant.hasMul with mul_assoc := by intros; ext; simp only [mul_apply, mul_assoc] }
instance [SemigroupWithZero Y] : SemigroupWithZero (LocallyConstant X Y) :=
{ LocallyConstant.mulZeroClass, LocallyConstant.semigroup with }
@[to_additive]
instance [CommSemigroup Y] : CommSemigroup (LocallyConstant X Y) :=
- { LocallyConstant.semigroup with mul_comm := by intros ; ext; simp only [mul_apply, mul_comm] }
+ { LocallyConstant.semigroup with mul_comm := by intros; ext; simp only [mul_apply, mul_comm] }
@[to_additive]
instance [Monoid Y] : Monoid (LocallyConstant X Y) :=
@@ -204,8 +204,8 @@ instance [CommMonoid Y] : CommMonoid (LocallyConstant X Y) :=
instance [Group Y] : Group (LocallyConstant X Y) :=
{ LocallyConstant.monoid, LocallyConstant.hasInv,
LocallyConstant.hasDiv with
- mul_left_inv := by intros ; ext; simp only [mul_apply, inv_apply, one_apply, mul_left_inv]
- div_eq_mul_inv := by intros ; ext; simp only [mul_apply, inv_apply, div_apply, div_eq_mul_inv] }
+ mul_left_inv := by intros; ext; simp only [mul_apply, inv_apply, one_apply, mul_left_inv]
+ div_eq_mul_inv := by intros; ext; simp only [mul_apply, inv_apply, div_apply, div_eq_mul_inv] }
@[to_additive]
instance [CommGroup Y] : CommGroup (LocallyConstant X Y) :=
@@ -214,8 +214,8 @@ instance [CommGroup Y] : CommGroup (LocallyConstant X Y) :=
instance [Distrib Y] : Distrib (LocallyConstant X Y) :=
{ LocallyConstant.hasAdd,
LocallyConstant.hasMul with
- left_distrib := by intros ; ext; simp only [mul_apply, add_apply, mul_add]
- right_distrib := by intros ; ext; simp only [mul_apply, add_apply, add_mul] }
+ left_distrib := by intros; ext; simp only [mul_apply, add_apply, mul_add]
+ right_distrib := by intros; ext; simp only [mul_apply, add_apply, add_mul] }
instance [NonUnitalNonAssocSemiring Y] : NonUnitalNonAssocSemiring (LocallyConstant X Y) :=
{ LocallyConstant.addCommMonoid, LocallyConstant.hasMul, LocallyConstant.distrib,
@@ -299,8 +299,8 @@ variable [CommSemiring R] [Semiring Y] [Algebra R Y]
instance : Algebra R (LocallyConstant X Y)
where
toRingHom := constRingHom.comp <| algebraMap R Y
- commutes' := by intros ; ext; exact Algebra.commutes' _ _
- smul_def' := by intros ; ext; exact Algebra.smul_def' _ _
+ commutes' := by intros; ext; exact Algebra.commutes' _ _
+ smul_def' := by intros; ext; exact Algebra.smul_def' _ _
@[simp]
theorem coe_algebraMap (r : R) : ⇑(algebraMap R (LocallyConstant X Y) r) = algebraMap R (X → Y) r :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -92,12 +92,6 @@ instance [MulOneClass Y] : MulOneClass (LocallyConstant X Y) :=
one_mul := by intros ; ext; simp only [mul_apply, one_apply, one_mul]
mul_one := by intros ; ext; simp only [mul_apply, one_apply, mul_one] }
-/- warning: locally_constant.coe_fn_monoid_hom -> LocallyConstant.coeFnMonoidHom is a dubious translation:
-lean 3 declaration is
- forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulOneClass.{u2} Y], MonoidHom.{max u1 u2, max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (X -> Y) (LocallyConstant.mulOneClass.{u1, u2} X Y _inst_1 _inst_2) (Pi.mulOneClass.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_2))
-but is expected to have type
- forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulOneClass.{u2} Y], MonoidHom.{max u2 u1, max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (X -> Y) (LocallyConstant.instMulOneClassLocallyConstant.{u1, u2} X Y _inst_1 _inst_2) (Pi.mulOneClass.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_2))
-Case conversion may be inaccurate. Consider using '#align locally_constant.coe_fn_monoid_hom LocallyConstant.coeFnMonoidHomₓ'. -/
/-- `coe_fn` is a `monoid_hom`. -/
@[to_additive "`coe_fn` is an `add_monoid_hom`.", simps]
def coeFnMonoidHom [MulOneClass Y] : LocallyConstant X Y →* X → Y
@@ -108,12 +102,6 @@ def coeFnMonoidHom [MulOneClass Y] : LocallyConstant X Y →* X → Y
#align locally_constant.coe_fn_monoid_hom LocallyConstant.coeFnMonoidHom
#align locally_constant.coe_fn_add_monoid_hom LocallyConstant.coeFnAddMonoidHom
-/- warning: locally_constant.const_monoid_hom -> LocallyConstant.constMonoidHom is a dubious translation:
-lean 3 declaration is
- forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulOneClass.{u2} Y], MonoidHom.{u2, max u1 u2} Y (LocallyConstant.{u1, u2} X Y _inst_1) _inst_2 (LocallyConstant.mulOneClass.{u1, u2} X Y _inst_1 _inst_2)
-but is expected to have type
- forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulOneClass.{u2} Y], MonoidHom.{u2, max u2 u1} Y (LocallyConstant.{u1, u2} X Y _inst_1) _inst_2 (LocallyConstant.instMulOneClassLocallyConstant.{u1, u2} X Y _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align locally_constant.const_monoid_hom LocallyConstant.constMonoidHomₓ'. -/
/-- The constant-function embedding, as a multiplicative monoid hom. -/
@[to_additive "The constant-function embedding, as an additive monoid hom.", simps]
def constMonoidHom [MulOneClass Y] : Y →* LocallyConstant X Y
@@ -145,32 +133,14 @@ noncomputable def charFn (hU : IsClopen U) : LocallyConstant X Y :=
#align locally_constant.char_fn LocallyConstant.charFn
-/
-/- warning: locally_constant.coe_char_fn -> LocallyConstant.coe_charFn is a dubious translation:
-lean 3 declaration is
- forall {X : Type.{u1}} (Y : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulZeroOneClass.{u2} Y] {U : Set.{u1} X} (hU : IsClopen.{u1} X _inst_1 U), Eq.{max (succ u1) (succ u2)} ((fun (_x : LocallyConstant.{u1, u2} X Y _inst_1) => X -> Y) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyConstant.{u1, u2} X Y _inst_1) (fun (_x : LocallyConstant.{u1, u2} X Y _inst_1) => X -> Y) (LocallyConstant.hasCoeToFun.{u1, u2} X Y _inst_1) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU)) (Set.indicator.{u1, u2} X Y (MulZeroClass.toHasZero.{u2} Y (MulZeroOneClass.toMulZeroClass.{u2} Y _inst_2)) U (OfNat.ofNat.{max u1 u2} (X -> Y) 1 (OfNat.mk.{max u1 u2} (X -> Y) 1 (One.one.{max u1 u2} (X -> Y) (Pi.instOne.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => MulOneClass.toHasOne.{u2} Y (MulZeroOneClass.toMulOneClass.{u2} Y _inst_2)))))))
-but is expected to have type
- forall {X : Type.{u2}} (Y : Type.{u1}) [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : MulZeroOneClass.{u1} Y] {U : Set.{u2} X} (hU : IsClopen.{u2} X _inst_1 U), Eq.{max (succ u2) (succ u1)} (forall (a : X), (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (LocallyConstant.{u2, u1} X Y _inst_1) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u2, u1} X Y _inst_1) (LocallyConstant.charFn.{u2, u1} X Y _inst_1 _inst_2 U hU)) (Set.indicator.{u2, u1} X Y (MulZeroOneClass.toZero.{u1} Y _inst_2) U (OfNat.ofNat.{max u2 u1} (X -> Y) 1 (One.toOfNat1.{max u2 u1} (X -> Y) (Pi.instOne.{u2, u1} X (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : X) => Y) (fun (i : X) => MulOneClass.toOne.{u1} Y (MulZeroOneClass.toMulOneClass.{u1} Y _inst_2))))))
-Case conversion may be inaccurate. Consider using '#align locally_constant.coe_char_fn LocallyConstant.coe_charFnₓ'. -/
theorem coe_charFn (hU : IsClopen U) : (charFn Y hU : X → Y) = Set.indicator U 1 :=
rfl
#align locally_constant.coe_char_fn LocallyConstant.coe_charFn
-/- warning: locally_constant.char_fn_eq_one -> LocallyConstant.charFn_eq_one is a dubious translation:
-lean 3 declaration is
- forall {X : Type.{u1}} (Y : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulZeroOneClass.{u2} Y] {U : Set.{u1} X} [_inst_3 : Nontrivial.{u2} Y] (x : X) (hU : IsClopen.{u1} X _inst_1 U), Iff (Eq.{succ u2} Y (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyConstant.{u1, u2} X Y _inst_1) (fun (_x : LocallyConstant.{u1, u2} X Y _inst_1) => X -> Y) (LocallyConstant.hasCoeToFun.{u1, u2} X Y _inst_1) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU) x) (OfNat.ofNat.{u2} Y 1 (OfNat.mk.{u2} Y 1 (One.one.{u2} Y (MulOneClass.toHasOne.{u2} Y (MulZeroOneClass.toMulOneClass.{u2} Y _inst_2)))))) (Membership.Mem.{u1, u1} X (Set.{u1} X) (Set.hasMem.{u1} X) x U)
-but is expected to have type
- forall {X : Type.{u1}} (Y : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulZeroOneClass.{u2} Y] {U : Set.{u1} X} [_inst_3 : Nontrivial.{u2} Y] (x : X) (hU : IsClopen.{u1} X _inst_1 U), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (LocallyConstant.{u1, u2} X Y _inst_1) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU) x) (OfNat.ofNat.{u2} Y 1 (One.toOfNat1.{u2} Y (MulOneClass.toOne.{u2} Y (MulZeroOneClass.toMulOneClass.{u2} Y _inst_2))))) (Membership.mem.{u1, u1} X (Set.{u1} X) (Set.instMembershipSet.{u1} X) x U)
-Case conversion may be inaccurate. Consider using '#align locally_constant.char_fn_eq_one LocallyConstant.charFn_eq_oneₓ'. -/
theorem charFn_eq_one [Nontrivial Y] (x : X) (hU : IsClopen U) : charFn Y hU x = (1 : Y) ↔ x ∈ U :=
Set.indicator_eq_one_iff_mem _
#align locally_constant.char_fn_eq_one LocallyConstant.charFn_eq_one
-/- warning: locally_constant.char_fn_eq_zero -> LocallyConstant.charFn_eq_zero is a dubious translation:
-lean 3 declaration is
- forall {X : Type.{u1}} (Y : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulZeroOneClass.{u2} Y] {U : Set.{u1} X} [_inst_3 : Nontrivial.{u2} Y] (x : X) (hU : IsClopen.{u1} X _inst_1 U), Iff (Eq.{succ u2} Y (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyConstant.{u1, u2} X Y _inst_1) (fun (_x : LocallyConstant.{u1, u2} X Y _inst_1) => X -> Y) (LocallyConstant.hasCoeToFun.{u1, u2} X Y _inst_1) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU) x) (OfNat.ofNat.{u2} Y 0 (OfNat.mk.{u2} Y 0 (Zero.zero.{u2} Y (MulZeroClass.toHasZero.{u2} Y (MulZeroOneClass.toMulZeroClass.{u2} Y _inst_2)))))) (Not (Membership.Mem.{u1, u1} X (Set.{u1} X) (Set.hasMem.{u1} X) x U))
-but is expected to have type
- forall {X : Type.{u1}} (Y : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulZeroOneClass.{u2} Y] {U : Set.{u1} X} [_inst_3 : Nontrivial.{u2} Y] (x : X) (hU : IsClopen.{u1} X _inst_1 U), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (LocallyConstant.{u1, u2} X Y _inst_1) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU) x) (OfNat.ofNat.{u2} Y 0 (Zero.toOfNat0.{u2} Y (MulZeroOneClass.toZero.{u2} Y _inst_2)))) (Not (Membership.mem.{u1, u1} X (Set.{u1} X) (Set.instMembershipSet.{u1} X) x U))
-Case conversion may be inaccurate. Consider using '#align locally_constant.char_fn_eq_zero LocallyConstant.charFn_eq_zeroₓ'. -/
theorem charFn_eq_zero [Nontrivial Y] (x : X) (hU : IsClopen U) : charFn Y hU x = (0 : Y) ↔ x ∉ U :=
Set.indicator_eq_zero_iff_not_mem _
#align locally_constant.char_fn_eq_zero LocallyConstant.charFn_eq_zero
@@ -258,12 +228,6 @@ instance [NonAssocSemiring Y] : NonAssocSemiring (LocallyConstant X Y) :=
{ LocallyConstant.mulOneClass, LocallyConstant.addMonoidWithOne,
LocallyConstant.nonUnitalNonAssocSemiring with }
-/- warning: locally_constant.const_ring_hom -> LocallyConstant.constRingHom is a dubious translation:
-lean 3 declaration is
- forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : NonAssocSemiring.{u2} Y], RingHom.{u2, max u1 u2} Y (LocallyConstant.{u1, u2} X Y _inst_1) _inst_2 (LocallyConstant.nonAssocSemiring.{u1, u2} X Y _inst_1 _inst_2)
-but is expected to have type
- forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : NonAssocSemiring.{u2} Y], RingHom.{u2, max u2 u1} Y (LocallyConstant.{u1, u2} X Y _inst_1) _inst_2 (LocallyConstant.instNonAssocSemiringLocallyConstant.{u1, u2} X Y _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align locally_constant.const_ring_hom LocallyConstant.constRingHomₓ'. -/
/-- The constant-function embedding, as a ring hom. -/
@[simps]
def constRingHom [NonAssocSemiring Y] : Y →+* LocallyConstant X Y :=
@@ -338,9 +302,6 @@ instance : Algebra R (LocallyConstant X Y)
commutes' := by intros ; ext; exact Algebra.commutes' _ _
smul_def' := by intros ; ext; exact Algebra.smul_def' _ _
-/- warning: locally_constant.coe_algebra_map -> LocallyConstant.coe_algebraMap is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align locally_constant.coe_algebra_map LocallyConstant.coe_algebraMapₓ'. -/
@[simp]
theorem coe_algebraMap (r : R) : ⇑(algebraMap R (LocallyConstant X Y) r) = algebraMap R (X → Y) r :=
rfl
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -89,14 +89,8 @@ theorem mul_apply [Mul Y] (f g : LocallyConstant X Y) (x : X) : (f * g) x = f x
instance [MulOneClass Y] : MulOneClass (LocallyConstant X Y) :=
{ LocallyConstant.hasOne,
LocallyConstant.hasMul with
- one_mul := by
- intros
- ext
- simp only [mul_apply, one_apply, one_mul]
- mul_one := by
- intros
- ext
- simp only [mul_apply, one_apply, mul_one] }
+ one_mul := by intros ; ext; simp only [mul_apply, one_apply, one_mul]
+ mul_one := by intros ; ext; simp only [mul_apply, one_apply, mul_one] }
/- warning: locally_constant.coe_fn_monoid_hom -> LocallyConstant.coeFnMonoidHom is a dubious translation:
lean 3 declaration is
@@ -133,14 +127,8 @@ def constMonoidHom [MulOneClass Y] : Y →* LocallyConstant X Y
instance [MulZeroClass Y] : MulZeroClass (LocallyConstant X Y) :=
{ LocallyConstant.hasZero,
LocallyConstant.hasMul with
- zero_mul := by
- intros
- ext
- simp only [mul_apply, zero_apply, MulZeroClass.zero_mul]
- mul_zero := by
- intros
- ext
- simp only [mul_apply, zero_apply, MulZeroClass.mul_zero] }
+ zero_mul := by intros ; ext; simp only [mul_apply, zero_apply, MulZeroClass.zero_mul]
+ mul_zero := by intros ; ext; simp only [mul_apply, zero_apply, MulZeroClass.mul_zero] }
instance [MulZeroOneClass Y] : MulZeroOneClass (LocallyConstant X Y) :=
{ LocallyConstant.mulZeroClass, LocallyConstant.mulOneClass with }
@@ -218,22 +206,14 @@ theorem div_apply [Div Y] (f g : LocallyConstant X Y) (x : X) : (f / g) x = f x
@[to_additive]
instance [Semigroup Y] : Semigroup (LocallyConstant X Y) :=
- { LocallyConstant.hasMul with
- mul_assoc := by
- intros
- ext
- simp only [mul_apply, mul_assoc] }
+ { LocallyConstant.hasMul with mul_assoc := by intros ; ext; simp only [mul_apply, mul_assoc] }
instance [SemigroupWithZero Y] : SemigroupWithZero (LocallyConstant X Y) :=
{ LocallyConstant.mulZeroClass, LocallyConstant.semigroup with }
@[to_additive]
instance [CommSemigroup Y] : CommSemigroup (LocallyConstant X Y) :=
- { LocallyConstant.semigroup with
- mul_comm := by
- intros
- ext
- simp only [mul_apply, mul_comm] }
+ { LocallyConstant.semigroup with mul_comm := by intros ; ext; simp only [mul_apply, mul_comm] }
@[to_additive]
instance [Monoid Y] : Monoid (LocallyConstant X Y) :=
@@ -254,14 +234,8 @@ instance [CommMonoid Y] : CommMonoid (LocallyConstant X Y) :=
instance [Group Y] : Group (LocallyConstant X Y) :=
{ LocallyConstant.monoid, LocallyConstant.hasInv,
LocallyConstant.hasDiv with
- mul_left_inv := by
- intros
- ext
- simp only [mul_apply, inv_apply, one_apply, mul_left_inv]
- div_eq_mul_inv := by
- intros
- ext
- simp only [mul_apply, inv_apply, div_apply, div_eq_mul_inv] }
+ mul_left_inv := by intros ; ext; simp only [mul_apply, inv_apply, one_apply, mul_left_inv]
+ div_eq_mul_inv := by intros ; ext; simp only [mul_apply, inv_apply, div_apply, div_eq_mul_inv] }
@[to_additive]
instance [CommGroup Y] : CommGroup (LocallyConstant X Y) :=
@@ -270,14 +244,8 @@ instance [CommGroup Y] : CommGroup (LocallyConstant X Y) :=
instance [Distrib Y] : Distrib (LocallyConstant X Y) :=
{ LocallyConstant.hasAdd,
LocallyConstant.hasMul with
- left_distrib := by
- intros
- ext
- simp only [mul_apply, add_apply, mul_add]
- right_distrib := by
- intros
- ext
- simp only [mul_apply, add_apply, add_mul] }
+ left_distrib := by intros ; ext; simp only [mul_apply, add_apply, mul_add]
+ right_distrib := by intros ; ext; simp only [mul_apply, add_apply, add_mul] }
instance [NonUnitalNonAssocSemiring Y] : NonUnitalNonAssocSemiring (LocallyConstant X Y) :=
{ LocallyConstant.addCommMonoid, LocallyConstant.hasMul, LocallyConstant.distrib,
@@ -367,14 +335,8 @@ variable [CommSemiring R] [Semiring Y] [Algebra R Y]
instance : Algebra R (LocallyConstant X Y)
where
toRingHom := constRingHom.comp <| algebraMap R Y
- commutes' := by
- intros
- ext
- exact Algebra.commutes' _ _
- smul_def' := by
- intros
- ext
- exact Algebra.smul_def' _ _
+ commutes' := by intros ; ext; exact Algebra.commutes' _ _
+ smul_def' := by intros ; ext; exact Algebra.smul_def' _ _
/- warning: locally_constant.coe_algebra_map -> LocallyConstant.coe_algebraMap is a dubious translation:
<too large>
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -377,10 +377,7 @@ instance : Algebra R (LocallyConstant X Y)
exact Algebra.smul_def' _ _
/- warning: locally_constant.coe_algebra_map -> LocallyConstant.coe_algebraMap is a dubious translation:
-lean 3 declaration is
- forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] {R : Type.{u3}} [_inst_2 : CommSemiring.{u3} R] [_inst_3 : Semiring.{u2} Y] [_inst_4 : Algebra.{u3, u2} R Y _inst_2 _inst_3] (r : R), Eq.{max (succ u1) (succ u2)} (X -> Y) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyConstant.{u1, u2} X Y _inst_1) (fun (_x : LocallyConstant.{u1, u2} X Y _inst_1) => X -> Y) (LocallyConstant.hasCoeToFun.{u1, u2} X Y _inst_1) (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ u3) (succ (max u1 u2))} (RingHom.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3))) (fun (_x : RingHom.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3))) => R -> (LocallyConstant.{u1, u2} X Y _inst_1)) (RingHom.hasCoeToFun.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3))) (algebraMap.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) _inst_2 (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3) (LocallyConstant.algebra.{u1, u2, u3} X Y _inst_1 R _inst_2 _inst_3 _inst_4)) r)) (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ u3) (succ (max u1 u2))} (RingHom.{u3, max u1 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (X -> Y) (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)))) (fun (_x : RingHom.{u3, max u1 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (X -> Y) (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)))) => R -> X -> Y) (RingHom.hasCoeToFun.{u3, max u1 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (X -> Y) (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)))) (algebraMap.{u3, max u1 u2} R (X -> Y) _inst_2 (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)) (Function.algebra.{u3, u1, u2} R X Y _inst_2 _inst_3 _inst_4)) r)
-but is expected to have type
- forall {X : Type.{u3}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} X] {R : Type.{u1}} [_inst_2 : CommSemiring.{u1} R] [_inst_3 : Semiring.{u2} Y] [_inst_4 : Algebra.{u1, u2} R Y _inst_2 _inst_3] (r : R), Eq.{max (succ u3) (succ u2)} (forall (ᾰ : X), (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) ᾰ) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocallyConstant.{u3, u2} X Y _inst_1) r) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u3, u2} X Y _inst_1) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocallyConstant.{u3, u2} X Y _inst_1) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))))) (algebraMap.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) _inst_2 (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3) (LocallyConstant.instAlgebraLocallyConstantInstSemiringLocallyConstant.{u3, u2, u1} X Y _inst_1 R _inst_2 _inst_3 _inst_4)) r)) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => X -> Y) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3))) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3))))))) (algebraMap.{u1, max u3 u2} R (X -> Y) _inst_2 (Pi.semiring.{u3, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)) (Pi.algebra.{u3, u2, u1} X R (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) _inst_2 (fun (i : X) => _inst_3) (fun (i : X) => _inst_4))) r)
+<too large>
Case conversion may be inaccurate. Consider using '#align locally_constant.coe_algebra_map LocallyConstant.coe_algebraMapₓ'. -/
@[simp]
theorem coe_algebraMap (r : R) : ⇑(algebraMap R (LocallyConstant X Y) r) = algebraMap R (X → Y) r :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -380,7 +380,7 @@ instance : Algebra R (LocallyConstant X Y)
lean 3 declaration is
forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] {R : Type.{u3}} [_inst_2 : CommSemiring.{u3} R] [_inst_3 : Semiring.{u2} Y] [_inst_4 : Algebra.{u3, u2} R Y _inst_2 _inst_3] (r : R), Eq.{max (succ u1) (succ u2)} (X -> Y) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyConstant.{u1, u2} X Y _inst_1) (fun (_x : LocallyConstant.{u1, u2} X Y _inst_1) => X -> Y) (LocallyConstant.hasCoeToFun.{u1, u2} X Y _inst_1) (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ u3) (succ (max u1 u2))} (RingHom.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3))) (fun (_x : RingHom.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3))) => R -> (LocallyConstant.{u1, u2} X Y _inst_1)) (RingHom.hasCoeToFun.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3))) (algebraMap.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) _inst_2 (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3) (LocallyConstant.algebra.{u1, u2, u3} X Y _inst_1 R _inst_2 _inst_3 _inst_4)) r)) (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ u3) (succ (max u1 u2))} (RingHom.{u3, max u1 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (X -> Y) (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)))) (fun (_x : RingHom.{u3, max u1 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (X -> Y) (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)))) => R -> X -> Y) (RingHom.hasCoeToFun.{u3, max u1 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (X -> Y) (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)))) (algebraMap.{u3, max u1 u2} R (X -> Y) _inst_2 (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)) (Function.algebra.{u3, u1, u2} R X Y _inst_2 _inst_3 _inst_4)) r)
but is expected to have type
- forall {X : Type.{u3}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} X] {R : Type.{u1}} [_inst_2 : CommSemiring.{u1} R] [_inst_3 : Semiring.{u2} Y] [_inst_4 : Algebra.{u1, u2} R Y _inst_2 _inst_3] (r : R), Eq.{max (succ u3) (succ u2)} (forall (ᾰ : X), (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) ᾰ) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocallyConstant.{u3, u2} X Y _inst_1) r) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u3, u2} X Y _inst_1) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocallyConstant.{u3, u2} X Y _inst_1) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))))) (algebraMap.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) _inst_2 (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3) (LocallyConstant.instAlgebraLocallyConstantInstSemiringLocallyConstant.{u3, u2, u1} X Y _inst_1 R _inst_2 _inst_3 _inst_4)) r)) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => X -> Y) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3))) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3))))))) (algebraMap.{u1, max u3 u2} R (X -> Y) _inst_2 (Pi.semiring.{u3, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)) (Pi.algebra.{u3, u2, u1} X R (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) _inst_2 (fun (i : X) => _inst_3) (fun (i : X) => _inst_4))) r)
+ forall {X : Type.{u3}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} X] {R : Type.{u1}} [_inst_2 : CommSemiring.{u1} R] [_inst_3 : Semiring.{u2} Y] [_inst_4 : Algebra.{u1, u2} R Y _inst_2 _inst_3] (r : R), Eq.{max (succ u3) (succ u2)} (forall (ᾰ : X), (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) ᾰ) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocallyConstant.{u3, u2} X Y _inst_1) r) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u3, u2} X Y _inst_1) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => LocallyConstant.{u3, u2} X Y _inst_1) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))))) (algebraMap.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) _inst_2 (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3) (LocallyConstant.instAlgebraLocallyConstantInstSemiringLocallyConstant.{u3, u2, u1} X Y _inst_1 R _inst_2 _inst_3 _inst_4)) r)) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => X -> Y) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3))) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3))))))) (algebraMap.{u1, max u3 u2} R (X -> Y) _inst_2 (Pi.semiring.{u3, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)) (Pi.algebra.{u3, u2, u1} X R (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) _inst_2 (fun (i : X) => _inst_3) (fun (i : X) => _inst_4))) r)
Case conversion may be inaccurate. Consider using '#align locally_constant.coe_algebra_map LocallyConstant.coe_algebraMapₓ'. -/
@[simp]
theorem coe_algebraMap (r : R) : ⇑(algebraMap R (LocallyConstant X Y) r) = algebraMap R (X → Y) r :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/02ba8949f486ebecf93fe7460f1ed0564b5e442c
@@ -161,7 +161,7 @@ noncomputable def charFn (hU : IsClopen U) : LocallyConstant X Y :=
lean 3 declaration is
forall {X : Type.{u1}} (Y : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulZeroOneClass.{u2} Y] {U : Set.{u1} X} (hU : IsClopen.{u1} X _inst_1 U), Eq.{max (succ u1) (succ u2)} ((fun (_x : LocallyConstant.{u1, u2} X Y _inst_1) => X -> Y) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyConstant.{u1, u2} X Y _inst_1) (fun (_x : LocallyConstant.{u1, u2} X Y _inst_1) => X -> Y) (LocallyConstant.hasCoeToFun.{u1, u2} X Y _inst_1) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU)) (Set.indicator.{u1, u2} X Y (MulZeroClass.toHasZero.{u2} Y (MulZeroOneClass.toMulZeroClass.{u2} Y _inst_2)) U (OfNat.ofNat.{max u1 u2} (X -> Y) 1 (OfNat.mk.{max u1 u2} (X -> Y) 1 (One.one.{max u1 u2} (X -> Y) (Pi.instOne.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => MulOneClass.toHasOne.{u2} Y (MulZeroOneClass.toMulOneClass.{u2} Y _inst_2)))))))
but is expected to have type
- forall {X : Type.{u2}} (Y : Type.{u1}) [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : MulZeroOneClass.{u1} Y] {U : Set.{u2} X} (hU : IsClopen.{u2} X _inst_1 U), Eq.{max (succ u2) (succ u1)} (forall (a : X), (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (LocallyConstant.{u2, u1} X Y _inst_1) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u2, u1} X Y _inst_1) (LocallyConstant.charFn.{u2, u1} X Y _inst_1 _inst_2 U hU)) (Set.indicator.{u2, u1} X Y (MulZeroOneClass.toZero.{u1} Y _inst_2) U (OfNat.ofNat.{max u2 u1} (X -> Y) 1 (One.toOfNat1.{max u2 u1} (X -> Y) (Pi.instOne.{u2, u1} X (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : X) => Y) (fun (i : X) => MulOneClass.toOne.{u1} Y (MulZeroOneClass.toMulOneClass.{u1} Y _inst_2))))))
+ forall {X : Type.{u2}} (Y : Type.{u1}) [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : MulZeroOneClass.{u1} Y] {U : Set.{u2} X} (hU : IsClopen.{u2} X _inst_1 U), Eq.{max (succ u2) (succ u1)} (forall (a : X), (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (LocallyConstant.{u2, u1} X Y _inst_1) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u2, u1} X Y _inst_1) (LocallyConstant.charFn.{u2, u1} X Y _inst_1 _inst_2 U hU)) (Set.indicator.{u2, u1} X Y (MulZeroOneClass.toZero.{u1} Y _inst_2) U (OfNat.ofNat.{max u2 u1} (X -> Y) 1 (One.toOfNat1.{max u2 u1} (X -> Y) (Pi.instOne.{u2, u1} X (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : X) => Y) (fun (i : X) => MulOneClass.toOne.{u1} Y (MulZeroOneClass.toMulOneClass.{u1} Y _inst_2))))))
Case conversion may be inaccurate. Consider using '#align locally_constant.coe_char_fn LocallyConstant.coe_charFnₓ'. -/
theorem coe_charFn (hU : IsClopen U) : (charFn Y hU : X → Y) = Set.indicator U 1 :=
rfl
@@ -171,7 +171,7 @@ theorem coe_charFn (hU : IsClopen U) : (charFn Y hU : X → Y) = Set.indicator U
lean 3 declaration is
forall {X : Type.{u1}} (Y : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulZeroOneClass.{u2} Y] {U : Set.{u1} X} [_inst_3 : Nontrivial.{u2} Y] (x : X) (hU : IsClopen.{u1} X _inst_1 U), Iff (Eq.{succ u2} Y (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyConstant.{u1, u2} X Y _inst_1) (fun (_x : LocallyConstant.{u1, u2} X Y _inst_1) => X -> Y) (LocallyConstant.hasCoeToFun.{u1, u2} X Y _inst_1) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU) x) (OfNat.ofNat.{u2} Y 1 (OfNat.mk.{u2} Y 1 (One.one.{u2} Y (MulOneClass.toHasOne.{u2} Y (MulZeroOneClass.toMulOneClass.{u2} Y _inst_2)))))) (Membership.Mem.{u1, u1} X (Set.{u1} X) (Set.hasMem.{u1} X) x U)
but is expected to have type
- forall {X : Type.{u1}} (Y : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulZeroOneClass.{u2} Y] {U : Set.{u1} X} [_inst_3 : Nontrivial.{u2} Y] (x : X) (hU : IsClopen.{u1} X _inst_1 U), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (LocallyConstant.{u1, u2} X Y _inst_1) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU) x) (OfNat.ofNat.{u2} Y 1 (One.toOfNat1.{u2} Y (MulOneClass.toOne.{u2} Y (MulZeroOneClass.toMulOneClass.{u2} Y _inst_2))))) (Membership.mem.{u1, u1} X (Set.{u1} X) (Set.instMembershipSet.{u1} X) x U)
+ forall {X : Type.{u1}} (Y : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulZeroOneClass.{u2} Y] {U : Set.{u1} X} [_inst_3 : Nontrivial.{u2} Y] (x : X) (hU : IsClopen.{u1} X _inst_1 U), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (LocallyConstant.{u1, u2} X Y _inst_1) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU) x) (OfNat.ofNat.{u2} Y 1 (One.toOfNat1.{u2} Y (MulOneClass.toOne.{u2} Y (MulZeroOneClass.toMulOneClass.{u2} Y _inst_2))))) (Membership.mem.{u1, u1} X (Set.{u1} X) (Set.instMembershipSet.{u1} X) x U)
Case conversion may be inaccurate. Consider using '#align locally_constant.char_fn_eq_one LocallyConstant.charFn_eq_oneₓ'. -/
theorem charFn_eq_one [Nontrivial Y] (x : X) (hU : IsClopen U) : charFn Y hU x = (1 : Y) ↔ x ∈ U :=
Set.indicator_eq_one_iff_mem _
@@ -181,7 +181,7 @@ theorem charFn_eq_one [Nontrivial Y] (x : X) (hU : IsClopen U) : charFn Y hU x =
lean 3 declaration is
forall {X : Type.{u1}} (Y : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulZeroOneClass.{u2} Y] {U : Set.{u1} X} [_inst_3 : Nontrivial.{u2} Y] (x : X) (hU : IsClopen.{u1} X _inst_1 U), Iff (Eq.{succ u2} Y (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyConstant.{u1, u2} X Y _inst_1) (fun (_x : LocallyConstant.{u1, u2} X Y _inst_1) => X -> Y) (LocallyConstant.hasCoeToFun.{u1, u2} X Y _inst_1) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU) x) (OfNat.ofNat.{u2} Y 0 (OfNat.mk.{u2} Y 0 (Zero.zero.{u2} Y (MulZeroClass.toHasZero.{u2} Y (MulZeroOneClass.toMulZeroClass.{u2} Y _inst_2)))))) (Not (Membership.Mem.{u1, u1} X (Set.{u1} X) (Set.hasMem.{u1} X) x U))
but is expected to have type
- forall {X : Type.{u1}} (Y : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulZeroOneClass.{u2} Y] {U : Set.{u1} X} [_inst_3 : Nontrivial.{u2} Y] (x : X) (hU : IsClopen.{u1} X _inst_1 U), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (LocallyConstant.{u1, u2} X Y _inst_1) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU) x) (OfNat.ofNat.{u2} Y 0 (Zero.toOfNat0.{u2} Y (MulZeroOneClass.toZero.{u2} Y _inst_2)))) (Not (Membership.mem.{u1, u1} X (Set.{u1} X) (Set.instMembershipSet.{u1} X) x U))
+ forall {X : Type.{u1}} (Y : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulZeroOneClass.{u2} Y] {U : Set.{u1} X} [_inst_3 : Nontrivial.{u2} Y] (x : X) (hU : IsClopen.{u1} X _inst_1 U), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (LocallyConstant.{u1, u2} X Y _inst_1) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU) x) (OfNat.ofNat.{u2} Y 0 (Zero.toOfNat0.{u2} Y (MulZeroOneClass.toZero.{u2} Y _inst_2)))) (Not (Membership.mem.{u1, u1} X (Set.{u1} X) (Set.instMembershipSet.{u1} X) x U))
Case conversion may be inaccurate. Consider using '#align locally_constant.char_fn_eq_zero LocallyConstant.charFn_eq_zeroₓ'. -/
theorem charFn_eq_zero [Nontrivial Y] (x : X) (hU : IsClopen U) : charFn Y hU x = (0 : Y) ↔ x ∉ U :=
Set.indicator_eq_zero_iff_not_mem _
@@ -380,7 +380,7 @@ instance : Algebra R (LocallyConstant X Y)
lean 3 declaration is
forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] {R : Type.{u3}} [_inst_2 : CommSemiring.{u3} R] [_inst_3 : Semiring.{u2} Y] [_inst_4 : Algebra.{u3, u2} R Y _inst_2 _inst_3] (r : R), Eq.{max (succ u1) (succ u2)} (X -> Y) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyConstant.{u1, u2} X Y _inst_1) (fun (_x : LocallyConstant.{u1, u2} X Y _inst_1) => X -> Y) (LocallyConstant.hasCoeToFun.{u1, u2} X Y _inst_1) (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ u3) (succ (max u1 u2))} (RingHom.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3))) (fun (_x : RingHom.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3))) => R -> (LocallyConstant.{u1, u2} X Y _inst_1)) (RingHom.hasCoeToFun.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3))) (algebraMap.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) _inst_2 (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3) (LocallyConstant.algebra.{u1, u2, u3} X Y _inst_1 R _inst_2 _inst_3 _inst_4)) r)) (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ u3) (succ (max u1 u2))} (RingHom.{u3, max u1 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (X -> Y) (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)))) (fun (_x : RingHom.{u3, max u1 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (X -> Y) (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)))) => R -> X -> Y) (RingHom.hasCoeToFun.{u3, max u1 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (X -> Y) (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)))) (algebraMap.{u3, max u1 u2} R (X -> Y) _inst_2 (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)) (Function.algebra.{u3, u1, u2} R X Y _inst_2 _inst_3 _inst_4)) r)
but is expected to have type
- forall {X : Type.{u3}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} X] {R : Type.{u1}} [_inst_2 : CommSemiring.{u1} R] [_inst_3 : Semiring.{u2} Y] [_inst_4 : Algebra.{u1, u2} R Y _inst_2 _inst_3] (r : R), Eq.{max (succ u3) (succ u2)} (forall (ᾰ : X), (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) ᾰ) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocallyConstant.{u3, u2} X Y _inst_1) r) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u3, u2} X Y _inst_1) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocallyConstant.{u3, u2} X Y _inst_1) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))))) (algebraMap.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) _inst_2 (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3) (LocallyConstant.instAlgebraLocallyConstantInstSemiringLocallyConstant.{u3, u2, u1} X Y _inst_1 R _inst_2 _inst_3 _inst_4)) r)) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => X -> Y) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3))) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3))))))) (algebraMap.{u1, max u3 u2} R (X -> Y) _inst_2 (Pi.semiring.{u3, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)) (Pi.algebra.{u3, u2, u1} X R (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) _inst_2 (fun (i : X) => _inst_3) (fun (i : X) => _inst_4))) r)
+ forall {X : Type.{u3}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} X] {R : Type.{u1}} [_inst_2 : CommSemiring.{u1} R] [_inst_3 : Semiring.{u2} Y] [_inst_4 : Algebra.{u1, u2} R Y _inst_2 _inst_3] (r : R), Eq.{max (succ u3) (succ u2)} (forall (ᾰ : X), (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) ᾰ) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocallyConstant.{u3, u2} X Y _inst_1) r) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u3, u2} X Y _inst_1) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocallyConstant.{u3, u2} X Y _inst_1) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))))) (algebraMap.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) _inst_2 (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3) (LocallyConstant.instAlgebraLocallyConstantInstSemiringLocallyConstant.{u3, u2, u1} X Y _inst_1 R _inst_2 _inst_3 _inst_4)) r)) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => X -> Y) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3))) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3))))))) (algebraMap.{u1, max u3 u2} R (X -> Y) _inst_2 (Pi.semiring.{u3, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)) (Pi.algebra.{u3, u2, u1} X R (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) _inst_2 (fun (i : X) => _inst_3) (fun (i : X) => _inst_4))) r)
Case conversion may be inaccurate. Consider using '#align locally_constant.coe_algebra_map LocallyConstant.coe_algebraMapₓ'. -/
@[simp]
theorem coe_algebraMap (r : R) : ⇑(algebraMap R (LocallyConstant X Y) r) = algebraMap R (X → Y) r :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -380,7 +380,7 @@ instance : Algebra R (LocallyConstant X Y)
lean 3 declaration is
forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] {R : Type.{u3}} [_inst_2 : CommSemiring.{u3} R] [_inst_3 : Semiring.{u2} Y] [_inst_4 : Algebra.{u3, u2} R Y _inst_2 _inst_3] (r : R), Eq.{max (succ u1) (succ u2)} (X -> Y) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyConstant.{u1, u2} X Y _inst_1) (fun (_x : LocallyConstant.{u1, u2} X Y _inst_1) => X -> Y) (LocallyConstant.hasCoeToFun.{u1, u2} X Y _inst_1) (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ u3) (succ (max u1 u2))} (RingHom.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3))) (fun (_x : RingHom.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3))) => R -> (LocallyConstant.{u1, u2} X Y _inst_1)) (RingHom.hasCoeToFun.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3))) (algebraMap.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) _inst_2 (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3) (LocallyConstant.algebra.{u1, u2, u3} X Y _inst_1 R _inst_2 _inst_3 _inst_4)) r)) (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ u3) (succ (max u1 u2))} (RingHom.{u3, max u1 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (X -> Y) (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)))) (fun (_x : RingHom.{u3, max u1 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (X -> Y) (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)))) => R -> X -> Y) (RingHom.hasCoeToFun.{u3, max u1 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (X -> Y) (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)))) (algebraMap.{u3, max u1 u2} R (X -> Y) _inst_2 (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)) (Function.algebra.{u3, u1, u2} R X Y _inst_2 _inst_3 _inst_4)) r)
but is expected to have type
- forall {X : Type.{u3}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} X] {R : Type.{u1}} [_inst_2 : CommSemiring.{u1} R] [_inst_3 : Semiring.{u2} Y] [_inst_4 : Algebra.{u1, u2} R Y _inst_2 _inst_3] (r : R), Eq.{max (succ u3) (succ u2)} (forall (ᾰ : X), (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) ᾰ) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => LocallyConstant.{u3, u2} X Y _inst_1) r) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u3, u2} X Y _inst_1) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => LocallyConstant.{u3, u2} X Y _inst_1) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))))) (algebraMap.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) _inst_2 (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3) (LocallyConstant.instAlgebraLocallyConstantInstSemiringLocallyConstant.{u3, u2, u1} X Y _inst_1 R _inst_2 _inst_3 _inst_4)) r)) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => X -> Y) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3))) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3))))))) (algebraMap.{u1, max u3 u2} R (X -> Y) _inst_2 (Pi.semiring.{u3, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)) (Pi.algebra.{u3, u2, u1} X R (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) _inst_2 (fun (i : X) => _inst_3) (fun (i : X) => _inst_4))) r)
+ forall {X : Type.{u3}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} X] {R : Type.{u1}} [_inst_2 : CommSemiring.{u1} R] [_inst_3 : Semiring.{u2} Y] [_inst_4 : Algebra.{u1, u2} R Y _inst_2 _inst_3] (r : R), Eq.{max (succ u3) (succ u2)} (forall (ᾰ : X), (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) ᾰ) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocallyConstant.{u3, u2} X Y _inst_1) r) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u3, u2} X Y _inst_1) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => LocallyConstant.{u3, u2} X Y _inst_1) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))))) (algebraMap.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) _inst_2 (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3) (LocallyConstant.instAlgebraLocallyConstantInstSemiringLocallyConstant.{u3, u2, u1} X Y _inst_1 R _inst_2 _inst_3 _inst_4)) r)) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => X -> Y) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3))) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) (fun (i : X) => _inst_3))))))) (algebraMap.{u1, max u3 u2} R (X -> Y) _inst_2 (Pi.semiring.{u3, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)) (Pi.algebra.{u3, u2, u1} X R (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2488 : X) => Y) _inst_2 (fun (i : X) => _inst_3) (fun (i : X) => _inst_4))) r)
Case conversion may be inaccurate. Consider using '#align locally_constant.coe_algebra_map LocallyConstant.coe_algebraMapₓ'. -/
@[simp]
theorem coe_algebraMap (r : R) : ⇑(algebraMap R (LocallyConstant X Y) r) = algebraMap R (X → Y) r :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -136,11 +136,11 @@ instance [MulZeroClass Y] : MulZeroClass (LocallyConstant X Y) :=
zero_mul := by
intros
ext
- simp only [mul_apply, zero_apply, zero_mul]
+ simp only [mul_apply, zero_apply, MulZeroClass.zero_mul]
mul_zero := by
intros
ext
- simp only [mul_apply, zero_apply, mul_zero] }
+ simp only [mul_apply, zero_apply, MulZeroClass.mul_zero] }
instance [MulZeroOneClass Y] : MulZeroOneClass (LocallyConstant X Y) :=
{ LocallyConstant.mulZeroClass, LocallyConstant.mulOneClass with }
mathlib commit https://github.com/leanprover-community/mathlib/commit/21e3562c5e12d846c7def5eff8cdbc520d7d4936
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin
! This file was ported from Lean 3 source module topology.locally_constant.algebra
-! leanprover-community/mathlib commit bcfa726826abd57587355b4b5b7e78ad6527b7e4
+! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -14,6 +14,9 @@ import Mathbin.Topology.LocallyConstant.Basic
/-!
# Algebraic structure on locally constant functions
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
This file puts algebraic structure (`add_group`, etc)
on the type of locally constant functions.
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -377,7 +377,7 @@ instance : Algebra R (LocallyConstant X Y)
lean 3 declaration is
forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] {R : Type.{u3}} [_inst_2 : CommSemiring.{u3} R] [_inst_3 : Semiring.{u2} Y] [_inst_4 : Algebra.{u3, u2} R Y _inst_2 _inst_3] (r : R), Eq.{max (succ u1) (succ u2)} (X -> Y) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyConstant.{u1, u2} X Y _inst_1) (fun (_x : LocallyConstant.{u1, u2} X Y _inst_1) => X -> Y) (LocallyConstant.hasCoeToFun.{u1, u2} X Y _inst_1) (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ u3) (succ (max u1 u2))} (RingHom.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3))) (fun (_x : RingHom.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3))) => R -> (LocallyConstant.{u1, u2} X Y _inst_1)) (RingHom.hasCoeToFun.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3))) (algebraMap.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) _inst_2 (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3) (LocallyConstant.algebra.{u1, u2, u3} X Y _inst_1 R _inst_2 _inst_3 _inst_4)) r)) (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ u3) (succ (max u1 u2))} (RingHom.{u3, max u1 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (X -> Y) (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)))) (fun (_x : RingHom.{u3, max u1 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (X -> Y) (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)))) => R -> X -> Y) (RingHom.hasCoeToFun.{u3, max u1 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (X -> Y) (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)))) (algebraMap.{u3, max u1 u2} R (X -> Y) _inst_2 (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)) (Function.algebra.{u3, u1, u2} R X Y _inst_2 _inst_3 _inst_4)) r)
but is expected to have type
- forall {X : Type.{u3}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} X] {R : Type.{u1}} [_inst_2 : CommSemiring.{u1} R] [_inst_3 : Semiring.{u2} Y] [_inst_4 : Algebra.{u1, u2} R Y _inst_2 _inst_3] (r : R), Eq.{max (succ u3) (succ u2)} (forall (ᾰ : X), (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) ᾰ) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => LocallyConstant.{u3, u2} X Y _inst_1) r) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u3, u2} X Y _inst_1) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => LocallyConstant.{u3, u2} X Y _inst_1) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))))) (algebraMap.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) _inst_2 (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3) (LocallyConstant.instAlgebraLocallyConstantInstSemiringLocallyConstant.{u3, u2, u1} X Y _inst_1 R _inst_2 _inst_3 _inst_4)) r)) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => X -> Y) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3))) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3))))))) (algebraMap.{u1, max u3 u2} R (X -> Y) _inst_2 (Pi.semiring.{u3, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)) (Pi.algebra.{u3, u2, u1} X R (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) _inst_2 (fun (i : X) => _inst_3) (fun (i : X) => _inst_4))) r)
+ forall {X : Type.{u3}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} X] {R : Type.{u1}} [_inst_2 : CommSemiring.{u1} R] [_inst_3 : Semiring.{u2} Y] [_inst_4 : Algebra.{u1, u2} R Y _inst_2 _inst_3] (r : R), Eq.{max (succ u3) (succ u2)} (forall (ᾰ : X), (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) ᾰ) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => LocallyConstant.{u3, u2} X Y _inst_1) r) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u3, u2} X Y _inst_1) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => LocallyConstant.{u3, u2} X Y _inst_1) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))))) (algebraMap.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) _inst_2 (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3) (LocallyConstant.instAlgebraLocallyConstantInstSemiringLocallyConstant.{u3, u2, u1} X Y _inst_1 R _inst_2 _inst_3 _inst_4)) r)) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => X -> Y) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3))) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3))))))) (algebraMap.{u1, max u3 u2} R (X -> Y) _inst_2 (Pi.semiring.{u3, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)) (Pi.algebra.{u3, u2, u1} X R (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) _inst_2 (fun (i : X) => _inst_3) (fun (i : X) => _inst_4))) r)
Case conversion may be inaccurate. Consider using '#align locally_constant.coe_algebra_map LocallyConstant.coe_algebraMapₓ'. -/
@[simp]
theorem coe_algebraMap (r : R) : ⇑(algebraMap R (LocallyConstant X Y) r) = algebraMap R (X → Y) r :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/62e8311c791f02c47451bf14aa2501048e7c2f33
@@ -27,48 +27,60 @@ variable {X Y : Type _} [TopologicalSpace X]
@[to_additive]
instance [One Y] : One (LocallyConstant X Y) where one := const X 1
+#print LocallyConstant.coe_one /-
@[simp, to_additive]
theorem coe_one [One Y] : ⇑(1 : LocallyConstant X Y) = (1 : X → Y) :=
rfl
#align locally_constant.coe_one LocallyConstant.coe_one
#align locally_constant.coe_zero LocallyConstant.coe_zero
+-/
+#print LocallyConstant.one_apply /-
@[to_additive]
theorem one_apply [One Y] (x : X) : (1 : LocallyConstant X Y) x = 1 :=
rfl
#align locally_constant.one_apply LocallyConstant.one_apply
#align locally_constant.zero_apply LocallyConstant.zero_apply
+-/
@[to_additive]
instance [Inv Y] : Inv (LocallyConstant X Y) where inv f := ⟨f⁻¹, f.IsLocallyConstant.inv⟩
+#print LocallyConstant.coe_inv /-
@[simp, to_additive]
theorem coe_inv [Inv Y] (f : LocallyConstant X Y) : ⇑f⁻¹ = f⁻¹ :=
rfl
#align locally_constant.coe_inv LocallyConstant.coe_inv
#align locally_constant.coe_neg LocallyConstant.coe_neg
+-/
+#print LocallyConstant.inv_apply /-
@[to_additive]
theorem inv_apply [Inv Y] (f : LocallyConstant X Y) (x : X) : f⁻¹ x = (f x)⁻¹ :=
rfl
#align locally_constant.inv_apply LocallyConstant.inv_apply
#align locally_constant.neg_apply LocallyConstant.neg_apply
+-/
@[to_additive]
instance [Mul Y] : Mul (LocallyConstant X Y)
where mul f g := ⟨f * g, f.IsLocallyConstant.mul g.IsLocallyConstant⟩
+#print LocallyConstant.coe_mul /-
@[simp, to_additive]
theorem coe_mul [Mul Y] (f g : LocallyConstant X Y) : ⇑(f * g) = f * g :=
rfl
#align locally_constant.coe_mul LocallyConstant.coe_mul
#align locally_constant.coe_add LocallyConstant.coe_add
+-/
+#print LocallyConstant.mul_apply /-
@[to_additive]
theorem mul_apply [Mul Y] (f g : LocallyConstant X Y) (x : X) : (f * g) x = f x * g x :=
rfl
#align locally_constant.mul_apply LocallyConstant.mul_apply
#align locally_constant.add_apply LocallyConstant.add_apply
+-/
@[to_additive]
instance [MulOneClass Y] : MulOneClass (LocallyConstant X Y) :=
@@ -83,6 +95,12 @@ instance [MulOneClass Y] : MulOneClass (LocallyConstant X Y) :=
ext
simp only [mul_apply, one_apply, mul_one] }
+/- warning: locally_constant.coe_fn_monoid_hom -> LocallyConstant.coeFnMonoidHom is a dubious translation:
+lean 3 declaration is
+ forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulOneClass.{u2} Y], MonoidHom.{max u1 u2, max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (X -> Y) (LocallyConstant.mulOneClass.{u1, u2} X Y _inst_1 _inst_2) (Pi.mulOneClass.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_2))
+but is expected to have type
+ forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulOneClass.{u2} Y], MonoidHom.{max u2 u1, max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (X -> Y) (LocallyConstant.instMulOneClassLocallyConstant.{u1, u2} X Y _inst_1 _inst_2) (Pi.mulOneClass.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_2))
+Case conversion may be inaccurate. Consider using '#align locally_constant.coe_fn_monoid_hom LocallyConstant.coeFnMonoidHomₓ'. -/
/-- `coe_fn` is a `monoid_hom`. -/
@[to_additive "`coe_fn` is an `add_monoid_hom`.", simps]
def coeFnMonoidHom [MulOneClass Y] : LocallyConstant X Y →* X → Y
@@ -93,6 +111,12 @@ def coeFnMonoidHom [MulOneClass Y] : LocallyConstant X Y →* X → Y
#align locally_constant.coe_fn_monoid_hom LocallyConstant.coeFnMonoidHom
#align locally_constant.coe_fn_add_monoid_hom LocallyConstant.coeFnAddMonoidHom
+/- warning: locally_constant.const_monoid_hom -> LocallyConstant.constMonoidHom is a dubious translation:
+lean 3 declaration is
+ forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulOneClass.{u2} Y], MonoidHom.{u2, max u1 u2} Y (LocallyConstant.{u1, u2} X Y _inst_1) _inst_2 (LocallyConstant.mulOneClass.{u1, u2} X Y _inst_1 _inst_2)
+but is expected to have type
+ forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulOneClass.{u2} Y], MonoidHom.{u2, max u2 u1} Y (LocallyConstant.{u1, u2} X Y _inst_1) _inst_2 (LocallyConstant.instMulOneClassLocallyConstant.{u1, u2} X Y _inst_1 _inst_2)
+Case conversion may be inaccurate. Consider using '#align locally_constant.const_monoid_hom LocallyConstant.constMonoidHomₓ'. -/
/-- The constant-function embedding, as a multiplicative monoid hom. -/
@[to_additive "The constant-function embedding, as an additive monoid hom.", simps]
def constMonoidHom [MulOneClass Y] : Y →* LocallyConstant X Y
@@ -122,28 +146,50 @@ section CharFn
variable (Y) [MulZeroOneClass Y] {U V : Set X}
+#print LocallyConstant.charFn /-
/-- Characteristic functions are locally constant functions taking `x : X` to `1` if `x ∈ U`,
where `U` is a clopen set, and `0` otherwise. -/
noncomputable def charFn (hU : IsClopen U) : LocallyConstant X Y :=
indicator 1 hU
#align locally_constant.char_fn LocallyConstant.charFn
+-/
+/- warning: locally_constant.coe_char_fn -> LocallyConstant.coe_charFn is a dubious translation:
+lean 3 declaration is
+ forall {X : Type.{u1}} (Y : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulZeroOneClass.{u2} Y] {U : Set.{u1} X} (hU : IsClopen.{u1} X _inst_1 U), Eq.{max (succ u1) (succ u2)} ((fun (_x : LocallyConstant.{u1, u2} X Y _inst_1) => X -> Y) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyConstant.{u1, u2} X Y _inst_1) (fun (_x : LocallyConstant.{u1, u2} X Y _inst_1) => X -> Y) (LocallyConstant.hasCoeToFun.{u1, u2} X Y _inst_1) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU)) (Set.indicator.{u1, u2} X Y (MulZeroClass.toHasZero.{u2} Y (MulZeroOneClass.toMulZeroClass.{u2} Y _inst_2)) U (OfNat.ofNat.{max u1 u2} (X -> Y) 1 (OfNat.mk.{max u1 u2} (X -> Y) 1 (One.one.{max u1 u2} (X -> Y) (Pi.instOne.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => MulOneClass.toHasOne.{u2} Y (MulZeroOneClass.toMulOneClass.{u2} Y _inst_2)))))))
+but is expected to have type
+ forall {X : Type.{u2}} (Y : Type.{u1}) [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : MulZeroOneClass.{u1} Y] {U : Set.{u2} X} (hU : IsClopen.{u2} X _inst_1 U), Eq.{max (succ u2) (succ u1)} (forall (a : X), (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (LocallyConstant.{u2, u1} X Y _inst_1) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u2, u1} X Y _inst_1) (LocallyConstant.charFn.{u2, u1} X Y _inst_1 _inst_2 U hU)) (Set.indicator.{u2, u1} X Y (MulZeroOneClass.toZero.{u1} Y _inst_2) U (OfNat.ofNat.{max u2 u1} (X -> Y) 1 (One.toOfNat1.{max u2 u1} (X -> Y) (Pi.instOne.{u2, u1} X (fun (a._@.Mathlib.Algebra.IndicatorFunction._hyg.77 : X) => Y) (fun (i : X) => MulOneClass.toOne.{u1} Y (MulZeroOneClass.toMulOneClass.{u1} Y _inst_2))))))
+Case conversion may be inaccurate. Consider using '#align locally_constant.coe_char_fn LocallyConstant.coe_charFnₓ'. -/
theorem coe_charFn (hU : IsClopen U) : (charFn Y hU : X → Y) = Set.indicator U 1 :=
rfl
#align locally_constant.coe_char_fn LocallyConstant.coe_charFn
+/- warning: locally_constant.char_fn_eq_one -> LocallyConstant.charFn_eq_one is a dubious translation:
+lean 3 declaration is
+ forall {X : Type.{u1}} (Y : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulZeroOneClass.{u2} Y] {U : Set.{u1} X} [_inst_3 : Nontrivial.{u2} Y] (x : X) (hU : IsClopen.{u1} X _inst_1 U), Iff (Eq.{succ u2} Y (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyConstant.{u1, u2} X Y _inst_1) (fun (_x : LocallyConstant.{u1, u2} X Y _inst_1) => X -> Y) (LocallyConstant.hasCoeToFun.{u1, u2} X Y _inst_1) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU) x) (OfNat.ofNat.{u2} Y 1 (OfNat.mk.{u2} Y 1 (One.one.{u2} Y (MulOneClass.toHasOne.{u2} Y (MulZeroOneClass.toMulOneClass.{u2} Y _inst_2)))))) (Membership.Mem.{u1, u1} X (Set.{u1} X) (Set.hasMem.{u1} X) x U)
+but is expected to have type
+ forall {X : Type.{u1}} (Y : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulZeroOneClass.{u2} Y] {U : Set.{u1} X} [_inst_3 : Nontrivial.{u2} Y] (x : X) (hU : IsClopen.{u1} X _inst_1 U), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (LocallyConstant.{u1, u2} X Y _inst_1) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU) x) (OfNat.ofNat.{u2} Y 1 (One.toOfNat1.{u2} Y (MulOneClass.toOne.{u2} Y (MulZeroOneClass.toMulOneClass.{u2} Y _inst_2))))) (Membership.mem.{u1, u1} X (Set.{u1} X) (Set.instMembershipSet.{u1} X) x U)
+Case conversion may be inaccurate. Consider using '#align locally_constant.char_fn_eq_one LocallyConstant.charFn_eq_oneₓ'. -/
theorem charFn_eq_one [Nontrivial Y] (x : X) (hU : IsClopen U) : charFn Y hU x = (1 : Y) ↔ x ∈ U :=
Set.indicator_eq_one_iff_mem _
#align locally_constant.char_fn_eq_one LocallyConstant.charFn_eq_one
+/- warning: locally_constant.char_fn_eq_zero -> LocallyConstant.charFn_eq_zero is a dubious translation:
+lean 3 declaration is
+ forall {X : Type.{u1}} (Y : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulZeroOneClass.{u2} Y] {U : Set.{u1} X} [_inst_3 : Nontrivial.{u2} Y] (x : X) (hU : IsClopen.{u1} X _inst_1 U), Iff (Eq.{succ u2} Y (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyConstant.{u1, u2} X Y _inst_1) (fun (_x : LocallyConstant.{u1, u2} X Y _inst_1) => X -> Y) (LocallyConstant.hasCoeToFun.{u1, u2} X Y _inst_1) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU) x) (OfNat.ofNat.{u2} Y 0 (OfNat.mk.{u2} Y 0 (Zero.zero.{u2} Y (MulZeroClass.toHasZero.{u2} Y (MulZeroOneClass.toMulZeroClass.{u2} Y _inst_2)))))) (Not (Membership.Mem.{u1, u1} X (Set.{u1} X) (Set.hasMem.{u1} X) x U))
+but is expected to have type
+ forall {X : Type.{u1}} (Y : Type.{u2}) [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : MulZeroOneClass.{u2} Y] {U : Set.{u1} X} [_inst_3 : Nontrivial.{u2} Y] (x : X) (hU : IsClopen.{u1} X _inst_1 U), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (LocallyConstant.{u1, u2} X Y _inst_1) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.charFn.{u1, u2} X Y _inst_1 _inst_2 U hU) x) (OfNat.ofNat.{u2} Y 0 (Zero.toOfNat0.{u2} Y (MulZeroOneClass.toZero.{u2} Y _inst_2)))) (Not (Membership.mem.{u1, u1} X (Set.{u1} X) (Set.instMembershipSet.{u1} X) x U))
+Case conversion may be inaccurate. Consider using '#align locally_constant.char_fn_eq_zero LocallyConstant.charFn_eq_zeroₓ'. -/
theorem charFn_eq_zero [Nontrivial Y] (x : X) (hU : IsClopen U) : charFn Y hU x = (0 : Y) ↔ x ∉ U :=
Set.indicator_eq_zero_iff_not_mem _
#align locally_constant.char_fn_eq_zero LocallyConstant.charFn_eq_zero
+#print LocallyConstant.charFn_inj /-
theorem charFn_inj [Nontrivial Y] (hU : IsClopen U) (hV : IsClopen V)
(h : charFn Y hU = charFn Y hV) : U = V :=
Set.indicator_one_inj Y <| coe_inj.mpr h
#align locally_constant.char_fn_inj LocallyConstant.charFn_inj
+-/
end CharFn
@@ -151,17 +197,21 @@ end CharFn
instance [Div Y] : Div (LocallyConstant X Y)
where div f g := ⟨f / g, f.IsLocallyConstant.div g.IsLocallyConstant⟩
+#print LocallyConstant.coe_div /-
@[to_additive]
theorem coe_div [Div Y] (f g : LocallyConstant X Y) : ⇑(f / g) = f / g :=
rfl
#align locally_constant.coe_div LocallyConstant.coe_div
#align locally_constant.coe_sub LocallyConstant.coe_sub
+-/
+#print LocallyConstant.div_apply /-
@[to_additive]
theorem div_apply [Div Y] (f g : LocallyConstant X Y) (x : X) : (f / g) x = f x / g x :=
rfl
#align locally_constant.div_apply LocallyConstant.div_apply
#align locally_constant.sub_apply LocallyConstant.sub_apply
+-/
@[to_additive]
instance [Semigroup Y] : Semigroup (LocallyConstant X Y) :=
@@ -237,6 +287,12 @@ instance [NonAssocSemiring Y] : NonAssocSemiring (LocallyConstant X Y) :=
{ LocallyConstant.mulOneClass, LocallyConstant.addMonoidWithOne,
LocallyConstant.nonUnitalNonAssocSemiring with }
+/- warning: locally_constant.const_ring_hom -> LocallyConstant.constRingHom is a dubious translation:
+lean 3 declaration is
+ forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : NonAssocSemiring.{u2} Y], RingHom.{u2, max u1 u2} Y (LocallyConstant.{u1, u2} X Y _inst_1) _inst_2 (LocallyConstant.nonAssocSemiring.{u1, u2} X Y _inst_1 _inst_2)
+but is expected to have type
+ forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : NonAssocSemiring.{u2} Y], RingHom.{u2, max u2 u1} Y (LocallyConstant.{u1, u2} X Y _inst_1) _inst_2 (LocallyConstant.instNonAssocSemiringLocallyConstant.{u1, u2} X Y _inst_1 _inst_2)
+Case conversion may be inaccurate. Consider using '#align locally_constant.const_ring_hom LocallyConstant.constRingHomₓ'. -/
/-- The constant-function embedding, as a ring hom. -/
@[simps]
def constRingHom [NonAssocSemiring Y] : Y →+* LocallyConstant X Y :=
@@ -278,14 +334,18 @@ instance [SMul R Y] : SMul R (LocallyConstant X Y)
{ toFun := r • f
IsLocallyConstant := (f.IsLocallyConstant.comp ((· • ·) r) : _) }
+#print LocallyConstant.coe_smul /-
@[simp]
theorem coe_smul [SMul R Y] (r : R) (f : LocallyConstant X Y) : ⇑(r • f) = r • f :=
rfl
#align locally_constant.coe_smul LocallyConstant.coe_smul
+-/
+#print LocallyConstant.smul_apply /-
theorem smul_apply [SMul R Y] (r : R) (f : LocallyConstant X Y) (x : X) : (r • f) x = r • f x :=
rfl
#align locally_constant.smul_apply LocallyConstant.smul_apply
+-/
instance [Monoid R] [MulAction R Y] : MulAction R (LocallyConstant X Y) :=
Function.Injective.mulAction _ coe_injective fun _ _ => rfl
@@ -313,6 +373,12 @@ instance : Algebra R (LocallyConstant X Y)
ext
exact Algebra.smul_def' _ _
+/- warning: locally_constant.coe_algebra_map -> LocallyConstant.coe_algebraMap is a dubious translation:
+lean 3 declaration is
+ forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] {R : Type.{u3}} [_inst_2 : CommSemiring.{u3} R] [_inst_3 : Semiring.{u2} Y] [_inst_4 : Algebra.{u3, u2} R Y _inst_2 _inst_3] (r : R), Eq.{max (succ u1) (succ u2)} (X -> Y) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyConstant.{u1, u2} X Y _inst_1) (fun (_x : LocallyConstant.{u1, u2} X Y _inst_1) => X -> Y) (LocallyConstant.hasCoeToFun.{u1, u2} X Y _inst_1) (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ u3) (succ (max u1 u2))} (RingHom.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3))) (fun (_x : RingHom.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3))) => R -> (LocallyConstant.{u1, u2} X Y _inst_1)) (RingHom.hasCoeToFun.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (LocallyConstant.{u1, u2} X Y _inst_1) (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3))) (algebraMap.{u3, max u1 u2} R (LocallyConstant.{u1, u2} X Y _inst_1) _inst_2 (LocallyConstant.semiring.{u1, u2} X Y _inst_1 _inst_3) (LocallyConstant.algebra.{u1, u2, u3} X Y _inst_1 R _inst_2 _inst_3 _inst_4)) r)) (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ u3) (succ (max u1 u2))} (RingHom.{u3, max u1 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (X -> Y) (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)))) (fun (_x : RingHom.{u3, max u1 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (X -> Y) (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)))) => R -> X -> Y) (RingHom.hasCoeToFun.{u3, max u1 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u3} R (CommSemiring.toSemiring.{u3} R _inst_2)) (Semiring.toNonAssocSemiring.{max u1 u2} (X -> Y) (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)))) (algebraMap.{u3, max u1 u2} R (X -> Y) _inst_2 (Pi.semiring.{u1, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)) (Function.algebra.{u3, u1, u2} R X Y _inst_2 _inst_3 _inst_4)) r)
+but is expected to have type
+ forall {X : Type.{u3}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u3} X] {R : Type.{u1}} [_inst_2 : CommSemiring.{u1} R] [_inst_3 : Semiring.{u2} Y] [_inst_4 : Algebra.{u1, u2} R Y _inst_2 _inst_3] (r : R), Eq.{max (succ u3) (succ u2)} (forall (ᾰ : X), (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) ᾰ) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => LocallyConstant.{u3, u2} X Y _inst_1) r) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => Y) _x) (LocallyConstant.instFunLikeLocallyConstant.{u3, u2} X Y _inst_1) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => LocallyConstant.{u3, u2} X Y _inst_1) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3))) R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (LocallyConstant.{u3, u2} X Y _inst_1) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u2 u3} (LocallyConstant.{u3, u2} X Y _inst_1) (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3)))))) (algebraMap.{u1, max u2 u3} R (LocallyConstant.{u3, u2} X Y _inst_1) _inst_2 (LocallyConstant.instSemiringLocallyConstant.{u3, u2} X Y _inst_1 _inst_3) (LocallyConstant.instAlgebraLocallyConstantInstSemiringLocallyConstant.{u3, u2, u1} X Y _inst_1 R _inst_2 _inst_3 _inst_4)) r)) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => X -> Y) _x) (MulHomClass.toFunLike.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (X -> Y) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max (max u3 u2) u1, u1, max u3 u2} (RingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3)))) R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3))) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (X -> Y) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_2)) (Semiring.toNonAssocSemiring.{max u3 u2} (X -> Y) (Pi.semiring.{u3, u2} X (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) (fun (i : X) => _inst_3))))))) (algebraMap.{u1, max u3 u2} R (X -> Y) _inst_2 (Pi.semiring.{u3, u2} X (fun (ᾰ : X) => Y) (fun (i : X) => _inst_3)) (Pi.algebra.{u3, u2, u1} X R (fun (a._@.Mathlib.Topology.LocallyConstant.Algebra._hyg.2456 : X) => Y) _inst_2 (fun (i : X) => _inst_3) (fun (i : X) => _inst_4))) r)
+Case conversion may be inaccurate. Consider using '#align locally_constant.coe_algebra_map LocallyConstant.coe_algebraMapₓ'. -/
@[simp]
theorem coe_algebraMap (r : R) : ⇑(algebraMap R (LocallyConstant X Y) r) = algebraMap R (X → Y) r :=
rfl
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
LocallyConstant.comap
(#12136)
Changes the definition of LocallyConstant.comap
so that it takes an argument of the form C(X, Y)
instead of X → Y
. There was no example of a non-continuous argument in mathlib, and this definition generally makes proofs easier.
@@ -346,49 +346,49 @@ variable [TopologicalSpace Y] {Z : Type*}
/-- `LocallyConstant.comap` as a `MulHom`. -/
@[to_additive (attr := simps) "`LocallyConstant.comap` as an `AddHom`."]
noncomputable
-def comapMulHom [Mul Z] (f : X → Y) (hf : Continuous f) :
+def comapMulHom [Mul Z] (f : C(X, Y)) :
LocallyConstant Y Z →ₙ* LocallyConstant X Z where
toFun := comap f
- map_mul' r s := by ext x; simp [hf]
+ map_mul' _ _ := rfl
/-- `LocallyConstant.comap` as a `MonoidHom`. -/
@[to_additive (attr := simps) "`LocallyConstant.comap` as an `AddMonoidHom`."]
noncomputable
-def comapMonoidHom [MulOneClass Z] (f : X → Y) (hf : Continuous f) :
+def comapMonoidHom [MulOneClass Z] (f : C(X, Y)) :
LocallyConstant Y Z →* LocallyConstant X Z where
toFun := comap f
- map_one' := by ext x; simp [hf]
- map_mul' := map_mul (comapMulHom f hf)
+ map_one' := rfl
+ map_mul' := map_mul (comapMulHom f)
/-- `LocallyConstant.comap` as a linear map. -/
@[simps!]
noncomputable
-def comapₗ (R : Type*) [Semiring R] [AddCommMonoid Z] [Module R Z] (f : X → Y)
- (hf : Continuous f) : LocallyConstant Y Z →ₗ[R] LocallyConstant X Z where
+def comapₗ (R : Type*) [Semiring R] [AddCommMonoid Z] [Module R Z] (f : C(X, Y)) :
+ LocallyConstant Y Z →ₗ[R] LocallyConstant X Z where
toFun := comap f
- map_add' := map_add (comapAddMonoidHom f hf)
- map_smul' r s := by ext x; simp [hf]
+ map_add' := map_add (comapAddMonoidHom f)
+ map_smul' _ _ := rfl
/-- `LocallyConstant.comap` as a `RingHom`. -/
@[simps!]
noncomputable
-def comapRingHom [Semiring Z] (f : X → Y) (hf : Continuous f) :
+def comapRingHom [Semiring Z] (f : C(X, Y)) :
LocallyConstant Y Z →+* LocallyConstant X Z where
- toMonoidHom := comapMonoidHom f hf
- __ := comapAddMonoidHom f hf
+ toMonoidHom := comapMonoidHom f
+ __ := (comapAddMonoidHom f)
/-- `LocallyConstant.comap` as an `AlgHom` -/
@[simps!]
noncomputable
def comapₐ (R : Type*) [CommSemiring R] [Semiring Z] [Algebra R Z]
- (f : X → Y) (hf : Continuous f) : LocallyConstant Y Z →ₐ[R] LocallyConstant X Z where
- toRingHom := comapRingHom f hf
- commutes' r := by ext x; simp [hf]
+ (f : C(X, Y)) : LocallyConstant Y Z →ₐ[R] LocallyConstant X Z where
+ toRingHom := comapRingHom f
+ commutes' _ := rfl
-lemma ker_comapₗ [Semiring R] [AddCommMonoid Z] [Module R Z] (f : X → Y)
- (hf : Continuous f) (hfs : Function.Surjective f) :
- LinearMap.ker (comapₗ R f hf : LocallyConstant Y Z →ₗ[R] LocallyConstant X Z) = ⊥ :=
- LinearMap.ker_eq_bot_of_injective <| comap_injective _ hf hfs
+lemma ker_comapₗ [Semiring R] [AddCommMonoid Z] [Module R Z] (f : C(X, Y))
+ (hfs : Function.Surjective f) :
+ LinearMap.ker (comapₗ R f : LocallyConstant Y Z →ₗ[R] LocallyConstant X Z) = ⊥ :=
+ LinearMap.ker_eq_bot_of_injective <| comap_injective _ hfs
/-- `LocallyConstant.congrLeft` as a `MulEquiv`. -/
@[to_additive (attr := simps!) "`LocallyConstant.congrLeft` as an `AddEquiv`."]
@@ -396,14 +396,14 @@ noncomputable
def congrLeftMulEquiv [Mul Z] (e : X ≃ₜ Y) :
LocallyConstant X Z ≃* LocallyConstant Y Z where
toEquiv := congrLeft e
- map_mul' := map_mul (comapMulHom _ e.symm.continuous)
+ map_mul' := map_mul (comapMulHom ⟨_, e.symm.continuous⟩)
/-- `LocallyConstant.congrLeft` as a linear equivalence. -/
@[simps!]
noncomputable
def congrLeftₗ (R : Type*) [Semiring R] [AddCommMonoid Z] [Module R Z] (e : X ≃ₜ Y) :
LocallyConstant X Z ≃ₗ[R] LocallyConstant Y Z where
- toLinearMap := comapₗ R _ e.symm.continuous
+ toLinearMap := comapₗ R ⟨_, e.symm.continuous⟩
__ := congrLeft e
/-- `LocallyConstant.congrLeft` as a `RingEquiv`. -/
@@ -412,8 +412,8 @@ noncomputable
def congrLeftRingEquiv [Semiring Z] (e : X ≃ₜ Y) :
LocallyConstant X Z ≃+* LocallyConstant Y Z where
toEquiv := congrLeft e
- __ := comapMonoidHom _ e.symm.continuous
- __ := comapAddMonoidHom _ e.symm.continuous
+ __ := comapMonoidHom ⟨_, e.symm.continuous⟩
+ __ := comapAddMonoidHom ⟨_, e.symm.continuous⟩
/-- `LocallyConstant.congrLeft` as an `AlgEquiv`. -/
@[simps!]
@@ -421,7 +421,7 @@ noncomputable
def congrLeftₐ (R : Type*) [CommSemiring R] [Semiring Z] [Algebra R Z] (e : X ≃ₜ Y) :
LocallyConstant X Z ≃ₐ[R] LocallyConstant Y Z where
toEquiv := congrLeft e
- __ := comapₐ R _ e.symm.continuous
+ __ := comapₐ R ⟨_, e.symm.continuous⟩
end Comap
@@ -375,7 +375,7 @@ noncomputable
def comapRingHom [Semiring Z] (f : X → Y) (hf : Continuous f) :
LocallyConstant Y Z →+* LocallyConstant X Z where
toMonoidHom := comapMonoidHom f hf
- __ := (comapAddMonoidHom f hf)
+ __ := comapAddMonoidHom f hf
/-- `LocallyConstant.comap` as an `AlgHom` -/
@[simps!]
@@ -17,8 +17,6 @@ on the type of locally constant functions.
-/
-set_option autoImplicit true
-
namespace LocallyConstant
variable {X Y : Type*} [TopologicalSpace X]
@@ -153,6 +151,8 @@ instance [SemigroupWithZero Y] : SemigroupWithZero (LocallyConstant X Y) :=
instance [CommSemigroup Y] : CommSemigroup (LocallyConstant X Y) :=
Function.Injective.commSemigroup DFunLike.coe DFunLike.coe_injective' fun _ _ => rfl
+variable {α R : Type*}
+
@[to_additive]
instance smul [SMul α Y] : SMul α (LocallyConstant X Y) where
smul n f := f.map (n • ·)
@@ -341,7 +341,7 @@ end Eval
section Comap
-variable [TopologicalSpace Y]
+variable [TopologicalSpace Y] {Z : Type*}
/-- `LocallyConstant.comap` as a `MulHom`. -/
@[to_additive (attr := simps) "`LocallyConstant.comap` as an `AddHom`."]
FunLike
to DFunLike
(#9785)
This prepares for the introduction of a non-dependent synonym of FunLike, which helps a lot with keeping #8386 readable.
This is entirely search-and-replace in 680197f combined with manual fixes in 4145626, e900597 and b8428f8. The commands that generated this change:
sed -i 's/\bFunLike\b/DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoFunLike\b/toDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/import Mathlib.Data.DFunLike/import Mathlib.Data.FunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bHom_FunLike\b/Hom_DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\binstFunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bfunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoo many metavariables to apply `fun_like.has_coe_to_fun`/too many metavariables to apply `DFunLike.hasCoeToFun`/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
@@ -71,12 +71,12 @@ theorem mul_apply [Mul Y] (f g : LocallyConstant X Y) (x : X) : (f * g) x = f x
@[to_additive]
instance [MulOneClass Y] : MulOneClass (LocallyConstant X Y) :=
- Function.Injective.mulOneClass FunLike.coe FunLike.coe_injective' rfl fun _ _ => rfl
+ Function.Injective.mulOneClass DFunLike.coe DFunLike.coe_injective' rfl fun _ _ => rfl
-/-- `FunLike.coe` as a `MonoidHom`. -/
-@[to_additive (attr := simps) "`FunLike.coe` as an `AddMonoidHom`."]
+/-- `DFunLike.coe` as a `MonoidHom`. -/
+@[to_additive (attr := simps) "`DFunLike.coe` as an `AddMonoidHom`."]
def coeFnMonoidHom [MulOneClass Y] : LocallyConstant X Y →* X → Y where
- toFun := FunLike.coe
+ toFun := DFunLike.coe
map_one' := rfl
map_mul' _ _ := rfl
#align locally_constant.coe_fn_monoid_hom LocallyConstant.coeFnMonoidHom
@@ -92,10 +92,10 @@ def constMonoidHom [MulOneClass Y] : Y →* LocallyConstant X Y where
#align locally_constant.const_add_monoid_hom LocallyConstant.constAddMonoidHom
instance [MulZeroClass Y] : MulZeroClass (LocallyConstant X Y) :=
- Function.Injective.mulZeroClass FunLike.coe FunLike.coe_injective' rfl fun _ _ => rfl
+ Function.Injective.mulZeroClass DFunLike.coe DFunLike.coe_injective' rfl fun _ _ => rfl
instance [MulZeroOneClass Y] : MulZeroOneClass (LocallyConstant X Y) :=
- Function.Injective.mulZeroOneClass FunLike.coe FunLike.coe_injective' rfl rfl fun _ _ => rfl
+ Function.Injective.mulZeroOneClass DFunLike.coe DFunLike.coe_injective' rfl rfl fun _ _ => rfl
section CharFn
@@ -144,14 +144,14 @@ theorem div_apply [Div Y] (f g : LocallyConstant X Y) (x : X) : (f / g) x = f x
@[to_additive]
instance [Semigroup Y] : Semigroup (LocallyConstant X Y) :=
- Function.Injective.semigroup FunLike.coe FunLike.coe_injective' fun _ _ => rfl
+ Function.Injective.semigroup DFunLike.coe DFunLike.coe_injective' fun _ _ => rfl
instance [SemigroupWithZero Y] : SemigroupWithZero (LocallyConstant X Y) :=
- Function.Injective.semigroupWithZero FunLike.coe FunLike.coe_injective' rfl fun _ _ => rfl
+ Function.Injective.semigroupWithZero DFunLike.coe DFunLike.coe_injective' rfl fun _ _ => rfl
@[to_additive]
instance [CommSemigroup Y] : CommSemigroup (LocallyConstant X Y) :=
- Function.Injective.commSemigroup FunLike.coe FunLike.coe_injective' fun _ _ => rfl
+ Function.Injective.commSemigroup DFunLike.coe DFunLike.coe_injective' fun _ _ => rfl
@[to_additive]
instance smul [SMul α Y] : SMul α (LocallyConstant X Y) where
@@ -173,7 +173,7 @@ instance [Pow Y α] : Pow (LocallyConstant X Y) α where
@[to_additive]
instance [Monoid Y] : Monoid (LocallyConstant X Y) :=
- Function.Injective.monoid FunLike.coe FunLike.coe_injective' rfl (fun _ _ => rfl) fun _ _ => rfl
+ Function.Injective.monoid DFunLike.coe DFunLike.coe_injective' rfl (fun _ _ => rfl) fun _ _ => rfl
instance [NatCast Y] : NatCast (LocallyConstant X Y) where
natCast n := const X n
@@ -182,37 +182,37 @@ instance [IntCast Y] : IntCast (LocallyConstant X Y) where
intCast n := const X n
instance [AddMonoidWithOne Y] : AddMonoidWithOne (LocallyConstant X Y) :=
- Function.Injective.addMonoidWithOne FunLike.coe FunLike.coe_injective' rfl rfl (fun _ _ => rfl)
+ Function.Injective.addMonoidWithOne DFunLike.coe DFunLike.coe_injective' rfl rfl (fun _ _ => rfl)
(fun _ _ => rfl) fun _ => rfl
@[to_additive]
instance [CommMonoid Y] : CommMonoid (LocallyConstant X Y) :=
- Function.Injective.commMonoid FunLike.coe FunLike.coe_injective' rfl (fun _ _ => rfl)
+ Function.Injective.commMonoid DFunLike.coe DFunLike.coe_injective' rfl (fun _ _ => rfl)
fun _ _ => rfl
@[to_additive]
instance [Group Y] : Group (LocallyConstant X Y) :=
- Function.Injective.group FunLike.coe FunLike.coe_injective' rfl (fun _ _ => rfl)
+ Function.Injective.group DFunLike.coe DFunLike.coe_injective' rfl (fun _ _ => rfl)
(fun _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl)
@[to_additive]
instance [CommGroup Y] : CommGroup (LocallyConstant X Y) :=
- Function.Injective.commGroup FunLike.coe FunLike.coe_injective' rfl (fun _ _ => rfl)
+ Function.Injective.commGroup DFunLike.coe DFunLike.coe_injective' rfl (fun _ _ => rfl)
(fun _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl)
instance [Distrib Y] : Distrib (LocallyConstant X Y) :=
- Function.Injective.distrib FunLike.coe FunLike.coe_injective' (fun _ _ => rfl) fun _ _ => rfl
+ Function.Injective.distrib DFunLike.coe DFunLike.coe_injective' (fun _ _ => rfl) fun _ _ => rfl
instance [NonUnitalNonAssocSemiring Y] : NonUnitalNonAssocSemiring (LocallyConstant X Y) :=
- Function.Injective.nonUnitalNonAssocSemiring FunLike.coe FunLike.coe_injective' rfl
+ Function.Injective.nonUnitalNonAssocSemiring DFunLike.coe DFunLike.coe_injective' rfl
(fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl)
instance [NonUnitalSemiring Y] : NonUnitalSemiring (LocallyConstant X Y) :=
- Function.Injective.nonUnitalSemiring FunLike.coe FunLike.coe_injective' rfl
+ Function.Injective.nonUnitalSemiring DFunLike.coe DFunLike.coe_injective' rfl
(fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl)
instance [NonAssocSemiring Y] : NonAssocSemiring (LocallyConstant X Y) :=
- Function.Injective.nonAssocSemiring FunLike.coe FunLike.coe_injective' rfl rfl
+ Function.Injective.nonAssocSemiring DFunLike.coe DFunLike.coe_injective' rfl rfl
(fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) fun _ => rfl
/-- The constant-function embedding, as a ring hom. -/
@@ -222,41 +222,41 @@ def constRingHom [NonAssocSemiring Y] : Y →+* LocallyConstant X Y :=
#align locally_constant.const_ring_hom LocallyConstant.constRingHom
instance [Semiring Y] : Semiring (LocallyConstant X Y) :=
- Function.Injective.semiring FunLike.coe FunLike.coe_injective' rfl rfl
+ Function.Injective.semiring DFunLike.coe DFunLike.coe_injective' rfl rfl
(fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) fun _ => rfl
instance [NonUnitalCommSemiring Y] : NonUnitalCommSemiring (LocallyConstant X Y) :=
- Function.Injective.nonUnitalCommSemiring FunLike.coe FunLike.coe_injective' rfl
+ Function.Injective.nonUnitalCommSemiring DFunLike.coe DFunLike.coe_injective' rfl
(fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl)
instance [CommSemiring Y] : CommSemiring (LocallyConstant X Y) :=
- Function.Injective.commSemiring FunLike.coe FunLike.coe_injective' rfl rfl
+ Function.Injective.commSemiring DFunLike.coe DFunLike.coe_injective' rfl rfl
(fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) fun _ => rfl
instance [NonUnitalNonAssocRing Y] : NonUnitalNonAssocRing (LocallyConstant X Y) :=
- Function.Injective.nonUnitalNonAssocRing FunLike.coe FunLike.coe_injective' rfl (fun _ _ => rfl)
+ Function.Injective.nonUnitalNonAssocRing DFunLike.coe DFunLike.coe_injective' rfl (fun _ _ => rfl)
(fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl)
instance [NonUnitalRing Y] : NonUnitalRing (LocallyConstant X Y) :=
- Function.Injective.nonUnitalRing FunLike.coe FunLike.coe_injective' rfl (fun _ _ => rfl)
+ Function.Injective.nonUnitalRing DFunLike.coe DFunLike.coe_injective' rfl (fun _ _ => rfl)
(fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl)
instance [NonAssocRing Y] : NonAssocRing (LocallyConstant X Y) :=
- Function.Injective.nonAssocRing FunLike.coe FunLike.coe_injective' rfl rfl (fun _ _ => rfl)
+ Function.Injective.nonAssocRing DFunLike.coe DFunLike.coe_injective' rfl rfl (fun _ _ => rfl)
(fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl)
(fun _ => rfl) (fun _ => rfl)
instance [Ring Y] : Ring (LocallyConstant X Y) :=
- Function.Injective.ring FunLike.coe FunLike.coe_injective' rfl rfl (fun _ _ => rfl)
+ Function.Injective.ring DFunLike.coe DFunLike.coe_injective' rfl rfl (fun _ _ => rfl)
(fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl)
(fun _ _ => rfl) (fun _ => rfl) fun _ => rfl
instance [NonUnitalCommRing Y] : NonUnitalCommRing (LocallyConstant X Y) :=
- Function.Injective.nonUnitalCommRing FunLike.coe FunLike.coe_injective' rfl (fun _ _ => rfl)
+ Function.Injective.nonUnitalCommRing DFunLike.coe DFunLike.coe_injective' rfl (fun _ _ => rfl)
(fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl)
instance [CommRing Y] : CommRing (LocallyConstant X Y) :=
- Function.Injective.commRing FunLike.coe FunLike.coe_injective' rfl rfl (fun _ _ => rfl)
+ Function.Injective.commRing DFunLike.coe DFunLike.coe_injective' rfl rfl (fun _ _ => rfl)
(fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl)
(fun _ _ => rfl) (fun _ => rfl) fun _ => rfl
@@ -296,18 +296,18 @@ end Algebra
section coeFn
-/-- `FunLike.coe` as a `RingHom`. -/
+/-- `DFunLike.coe` as a `RingHom`. -/
@[simps!] def coeFnRingHom [Semiring Y] : LocallyConstant X Y →+* X → Y where
toMonoidHom := coeFnMonoidHom
__ := coeFnAddMonoidHom
-/-- `FunLike.coe` as a linear map. -/
+/-- `DFunLike.coe` as a linear map. -/
@[simps!] def coeFnₗ (R : Type*) [Semiring R] [AddCommMonoid Y]
[Module R Y] : LocallyConstant X Y →ₗ[R] X → Y where
toAddHom := coeFnAddMonoidHom.toAddHom
map_smul' _ _ := rfl
-/-- `FunLike.coe` as an `AlgHom`. -/
+/-- `DFunLike.coe` as an `AlgHom`. -/
@[simps!] def coeFnAlgHom (R : Type*) [CommSemiring R] [Semiring Y] [Algebra R Y] :
LocallyConstant X Y →ₐ[R] X → Y where
toRingHom := coeFnRingHom
@@ -380,7 +380,7 @@ def comapRingHom [Semiring Z] (f : X → Y) (hf : Continuous f) :
/-- `LocallyConstant.comap` as an `AlgHom` -/
@[simps!]
noncomputable
-def comapₐ (R: Type*) [CommSemiring R] [Semiring Z] [Algebra R Z]
+def comapₐ (R : Type*) [CommSemiring R] [Semiring Z] [Algebra R Z]
(f : X → Y) (hf : Continuous f) : LocallyConstant Y Z →ₐ[R] LocallyConstant X Z where
toRingHom := comapRingHom f hf
commutes' r := by ext x; simp [hf]
@@ -401,7 +401,7 @@ def congrLeftMulEquiv [Mul Z] (e : X ≃ₜ Y) :
/-- `LocallyConstant.congrLeft` as a linear equivalence. -/
@[simps!]
noncomputable
-def congrLeftₗ (R: Type*) [Semiring R] [AddCommMonoid Z] [Module R Z] (e : X ≃ₜ Y) :
+def congrLeftₗ (R : Type*) [Semiring R] [AddCommMonoid Z] [Module R Z] (e : X ≃ₜ Y) :
LocallyConstant X Z ≃ₗ[R] LocallyConstant Y Z where
toLinearMap := comapₗ R _ e.symm.continuous
__ := congrLeft e
@@ -418,7 +418,7 @@ def congrLeftRingEquiv [Semiring Z] (e : X ≃ₜ Y) :
/-- `LocallyConstant.congrLeft` as an `AlgEquiv`. -/
@[simps!]
noncomputable
-def congrLeftₐ (R: Type*) [CommSemiring R] [Semiring Z] [Algebra R Z] (e : X ≃ₜ Y) :
+def congrLeftₐ (R : Type*) [CommSemiring R] [Semiring Z] [Algebra R Z] (e : X ≃ₜ Y) :
LocallyConstant X Z ≃ₐ[R] LocallyConstant Y Z where
toEquiv := congrLeft e
__ := comapₐ R _ e.symm.continuous
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin
-/
import Mathlib.Algebra.Algebra.Pi
+import Mathlib.LinearAlgebra.Pi
import Mathlib.Topology.LocallyConstant.Basic
#align_import topology.locally_constant.algebra from "leanprover-community/mathlib"@"bcfa726826abd57587355b4b5b7e78ad6527b7e4"
@@ -72,8 +73,8 @@ theorem mul_apply [Mul Y] (f g : LocallyConstant X Y) (x : X) : (f * g) x = f x
instance [MulOneClass Y] : MulOneClass (LocallyConstant X Y) :=
Function.Injective.mulOneClass FunLike.coe FunLike.coe_injective' rfl fun _ _ => rfl
-/-- `FunLike.coe` is a `MonoidHom`. -/
-@[to_additive (attr := simps) "`FunLike.coe` is an `AddMonoidHom`."]
+/-- `FunLike.coe` as a `MonoidHom`. -/
+@[to_additive (attr := simps) "`FunLike.coe` as an `AddMonoidHom`."]
def coeFnMonoidHom [MulOneClass Y] : LocallyConstant X Y →* X → Y where
toFun := FunLike.coe
map_one' := rfl
@@ -293,48 +294,134 @@ theorem coe_algebraMap (r : R) : ⇑(algebraMap R (LocallyConstant X Y) r) = alg
end Algebra
+section coeFn
+
+/-- `FunLike.coe` as a `RingHom`. -/
+@[simps!] def coeFnRingHom [Semiring Y] : LocallyConstant X Y →+* X → Y where
+ toMonoidHom := coeFnMonoidHom
+ __ := coeFnAddMonoidHom
+
+/-- `FunLike.coe` as a linear map. -/
+@[simps!] def coeFnₗ (R : Type*) [Semiring R] [AddCommMonoid Y]
+ [Module R Y] : LocallyConstant X Y →ₗ[R] X → Y where
+ toAddHom := coeFnAddMonoidHom.toAddHom
+ map_smul' _ _ := rfl
+
+/-- `FunLike.coe` as an `AlgHom`. -/
+@[simps!] def coeFnAlgHom (R : Type*) [CommSemiring R] [Semiring Y] [Algebra R Y] :
+ LocallyConstant X Y →ₐ[R] X → Y where
+ toRingHom := coeFnRingHom
+ commutes' _ := rfl
+
+end coeFn
+
+section Eval
+
+/-- Evaluation as a `MonoidHom` -/
+@[to_additive (attr := simps!) "Evaluation as an `AddMonoidHom`"]
+def evalMonoidHom [MulOneClass Y] (x : X) : LocallyConstant X Y →* Y :=
+ (Pi.evalMonoidHom _ x).comp coeFnMonoidHom
+
+/-- Evaluation as a linear map -/
+@[simps!] def evalₗ (R : Type*) [Semiring R] [AddCommMonoid Y]
+ [Module R Y] (x : X) : LocallyConstant X Y →ₗ[R] Y :=
+ (LinearMap.proj x).comp (coeFnₗ R)
+
+/-- Evaluation as a `RingHom` -/
+@[simps!] def evalRingHom [Semiring Y] (x : X) : LocallyConstant X Y →+* Y :=
+ (Pi.evalRingHom _ x).comp coeFnRingHom
+
+/-- Evaluation as an `AlgHom` -/
+@[simps!]
+def evalₐ (R : Type*) [CommSemiring R] [Semiring Y] [Algebra R Y] (x : X) :
+ LocallyConstant X Y →ₐ[R] Y :=
+ (Pi.evalAlgHom _ _ x).comp (coeFnAlgHom R)
+
+end Eval
+
section Comap
variable [TopologicalSpace Y]
-/-- `LocallyConstant.comap` is a `MonoidHom`. -/
-@[to_additive "`LocallyConstant.comap` is an `AddMonoidHom`."]
+/-- `LocallyConstant.comap` as a `MulHom`. -/
+@[to_additive (attr := simps) "`LocallyConstant.comap` as an `AddHom`."]
+noncomputable
+def comapMulHom [Mul Z] (f : X → Y) (hf : Continuous f) :
+ LocallyConstant Y Z →ₙ* LocallyConstant X Z where
+ toFun := comap f
+ map_mul' r s := by ext x; simp [hf]
+
+/-- `LocallyConstant.comap` as a `MonoidHom`. -/
+@[to_additive (attr := simps) "`LocallyConstant.comap` as an `AddMonoidHom`."]
noncomputable
def comapMonoidHom [MulOneClass Z] (f : X → Y) (hf : Continuous f) :
LocallyConstant Y Z →* LocallyConstant X Z where
toFun := comap f
- map_one' := by
- ext x
- simp only [hf, coe_comap, coe_one, Function.comp_apply, Pi.one_apply]
- map_mul' r s := by
- ext x
- simp only [hf, coe_comap, coe_mul, Function.comp_apply, Pi.mul_apply]
-
-/-- `LocallyConstant.comap` is a linear map. -/
+ map_one' := by ext x; simp [hf]
+ map_mul' := map_mul (comapMulHom f hf)
+
+/-- `LocallyConstant.comap` as a linear map. -/
+@[simps!]
noncomputable
-def comapₗ {R : Type*} [Semiring R] [AddCommMonoid Z] [Module R Z] (f : X → Y)
+def comapₗ (R : Type*) [Semiring R] [AddCommMonoid Z] [Module R Z] (f : X → Y)
(hf : Continuous f) : LocallyConstant Y Z →ₗ[R] LocallyConstant X Z where
toFun := comap f
- map_add' := (comapAddMonoidHom f hf).map_add'
- map_smul' r s := by
- ext x
- simp only [hf, coe_comap, coe_smul, Function.comp_apply, Pi.smul_apply, RingHom.id_apply]
+ map_add' := map_add (comapAddMonoidHom f hf)
+ map_smul' r s := by ext x; simp [hf]
+
+/-- `LocallyConstant.comap` as a `RingHom`. -/
+@[simps!]
+noncomputable
+def comapRingHom [Semiring Z] (f : X → Y) (hf : Continuous f) :
+ LocallyConstant Y Z →+* LocallyConstant X Z where
+ toMonoidHom := comapMonoidHom f hf
+ __ := (comapAddMonoidHom f hf)
+
+/-- `LocallyConstant.comap` as an `AlgHom` -/
+@[simps!]
+noncomputable
+def comapₐ (R: Type*) [CommSemiring R] [Semiring Z] [Algebra R Z]
+ (f : X → Y) (hf : Continuous f) : LocallyConstant Y Z →ₐ[R] LocallyConstant X Z where
+ toRingHom := comapRingHom f hf
+ commutes' r := by ext x; simp [hf]
-lemma ker_comapₗ {R : Type*} [Semiring R] [AddCommMonoid Z] [Module R Z] (f : X → Y)
+lemma ker_comapₗ [Semiring R] [AddCommMonoid Z] [Module R Z] (f : X → Y)
(hf : Continuous f) (hfs : Function.Surjective f) :
- LinearMap.ker (comapₗ f hf : LocallyConstant Y Z →ₗ[R] LocallyConstant X Z) = ⊥ :=
+ LinearMap.ker (comapₗ R f hf : LocallyConstant Y Z →ₗ[R] LocallyConstant X Z) = ⊥ :=
LinearMap.ker_eq_bot_of_injective <| comap_injective _ hf hfs
-/-- `LocallyConstant.congrLeft` is a linear equivalence. -/
+/-- `LocallyConstant.congrLeft` as a `MulEquiv`. -/
+@[to_additive (attr := simps!) "`LocallyConstant.congrLeft` as an `AddEquiv`."]
+noncomputable
+def congrLeftMulEquiv [Mul Z] (e : X ≃ₜ Y) :
+ LocallyConstant X Z ≃* LocallyConstant Y Z where
+ toEquiv := congrLeft e
+ map_mul' := map_mul (comapMulHom _ e.symm.continuous)
+
+/-- `LocallyConstant.congrLeft` as a linear equivalence. -/
+@[simps!]
noncomputable
-def congrLeftₗ {R : Type*} [Semiring R] [AddCommMonoid Z] [Module R Z] (e : X ≃ₜ Y) :
+def congrLeftₗ (R: Type*) [Semiring R] [AddCommMonoid Z] [Module R Z] (e : X ≃ₜ Y) :
LocallyConstant X Z ≃ₗ[R] LocallyConstant Y Z where
- toFun := (congrLeft e).toFun
- map_smul' := (comapₗ _ e.continuous_invFun).map_smul'
- map_add' := (comapAddMonoidHom _ e.continuous_invFun).map_add'
- invFun := (congrLeft e).invFun
- left_inv := (congrLeft e).left_inv
- right_inv := (congrLeft e).right_inv
+ toLinearMap := comapₗ R _ e.symm.continuous
+ __ := congrLeft e
+
+/-- `LocallyConstant.congrLeft` as a `RingEquiv`. -/
+@[simps!]
+noncomputable
+def congrLeftRingEquiv [Semiring Z] (e : X ≃ₜ Y) :
+ LocallyConstant X Z ≃+* LocallyConstant Y Z where
+ toEquiv := congrLeft e
+ __ := comapMonoidHom _ e.symm.continuous
+ __ := comapAddMonoidHom _ e.symm.continuous
+
+/-- `LocallyConstant.congrLeft` as an `AlgEquiv`. -/
+@[simps!]
+noncomputable
+def congrLeftₐ (R: Type*) [CommSemiring R] [Semiring Z] [Algebra R Z] (e : X ≃ₜ Y) :
+ LocallyConstant X Z ≃ₐ[R] LocallyConstant Y Z where
+ toEquiv := congrLeft e
+ __ := comapₐ R _ e.symm.continuous
end Comap
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:
variables
are in scope, but pasting the lemma in the wrong sectionHaving set_option autoImplicit false
as the default prevents these types of mistake being made in the 90% of files where autoImplicit
s 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.
@@ -16,6 +16,8 @@ on the type of locally constant functions.
-/
+set_option autoImplicit true
+
namespace LocallyConstant
variable {X Y : Type*} [TopologicalSpace X]
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -18,7 +18,7 @@ on the type of locally constant functions.
namespace LocallyConstant
-variable {X Y : Type _} [TopologicalSpace X]
+variable {X Y : Type*} [TopologicalSpace X]
@[to_additive]
instance [One Y] : One (LocallyConstant X Y) where one := const X 1
@@ -257,7 +257,7 @@ instance [CommRing Y] : CommRing (LocallyConstant X Y) :=
(fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl)
(fun _ _ => rfl) (fun _ => rfl) fun _ => rfl
-variable {R : Type _}
+variable {R : Type*}
instance [Monoid R] [MulAction R Y] : MulAction R (LocallyConstant X Y) :=
Function.Injective.mulAction _ coe_injective fun _ _ => rfl
@@ -310,7 +310,7 @@ def comapMonoidHom [MulOneClass Z] (f : X → Y) (hf : Continuous f) :
/-- `LocallyConstant.comap` is a linear map. -/
noncomputable
-def comapₗ {R : Type _} [Semiring R] [AddCommMonoid Z] [Module R Z] (f : X → Y)
+def comapₗ {R : Type*} [Semiring R] [AddCommMonoid Z] [Module R Z] (f : X → Y)
(hf : Continuous f) : LocallyConstant Y Z →ₗ[R] LocallyConstant X Z where
toFun := comap f
map_add' := (comapAddMonoidHom f hf).map_add'
@@ -318,14 +318,14 @@ def comapₗ {R : Type _} [Semiring R] [AddCommMonoid Z] [Module R Z] (f : X →
ext x
simp only [hf, coe_comap, coe_smul, Function.comp_apply, Pi.smul_apply, RingHom.id_apply]
-lemma ker_comapₗ {R : Type _} [Semiring R] [AddCommMonoid Z] [Module R Z] (f : X → Y)
+lemma ker_comapₗ {R : Type*} [Semiring R] [AddCommMonoid Z] [Module R Z] (f : X → Y)
(hf : Continuous f) (hfs : Function.Surjective f) :
LinearMap.ker (comapₗ f hf : LocallyConstant Y Z →ₗ[R] LocallyConstant X Z) = ⊥ :=
LinearMap.ker_eq_bot_of_injective <| comap_injective _ hf hfs
/-- `LocallyConstant.congrLeft` is a linear equivalence. -/
noncomputable
-def congrLeftₗ {R : Type _} [Semiring R] [AddCommMonoid Z] [Module R Z] (e : X ≃ₜ Y) :
+def congrLeftₗ {R : Type*} [Semiring R] [AddCommMonoid Z] [Module R Z] (e : X ≃ₜ Y) :
LocallyConstant X Z ≃ₗ[R] LocallyConstant Y Z where
toFun := (congrLeft e).toFun
map_smul' := (comapₗ _ e.continuous_invFun).map_smul'
We give algebraic versions of LocallyConstant.comap
given the relevant algebraic structure on the target.
@@ -291,4 +291,49 @@ theorem coe_algebraMap (r : R) : ⇑(algebraMap R (LocallyConstant X Y) r) = alg
end Algebra
+section Comap
+
+variable [TopologicalSpace Y]
+
+/-- `LocallyConstant.comap` is a `MonoidHom`. -/
+@[to_additive "`LocallyConstant.comap` is an `AddMonoidHom`."]
+noncomputable
+def comapMonoidHom [MulOneClass Z] (f : X → Y) (hf : Continuous f) :
+ LocallyConstant Y Z →* LocallyConstant X Z where
+ toFun := comap f
+ map_one' := by
+ ext x
+ simp only [hf, coe_comap, coe_one, Function.comp_apply, Pi.one_apply]
+ map_mul' r s := by
+ ext x
+ simp only [hf, coe_comap, coe_mul, Function.comp_apply, Pi.mul_apply]
+
+/-- `LocallyConstant.comap` is a linear map. -/
+noncomputable
+def comapₗ {R : Type _} [Semiring R] [AddCommMonoid Z] [Module R Z] (f : X → Y)
+ (hf : Continuous f) : LocallyConstant Y Z →ₗ[R] LocallyConstant X Z where
+ toFun := comap f
+ map_add' := (comapAddMonoidHom f hf).map_add'
+ map_smul' r s := by
+ ext x
+ simp only [hf, coe_comap, coe_smul, Function.comp_apply, Pi.smul_apply, RingHom.id_apply]
+
+lemma ker_comapₗ {R : Type _} [Semiring R] [AddCommMonoid Z] [Module R Z] (f : X → Y)
+ (hf : Continuous f) (hfs : Function.Surjective f) :
+ LinearMap.ker (comapₗ f hf : LocallyConstant Y Z →ₗ[R] LocallyConstant X Z) = ⊥ :=
+ LinearMap.ker_eq_bot_of_injective <| comap_injective _ hf hfs
+
+/-- `LocallyConstant.congrLeft` is a linear equivalence. -/
+noncomputable
+def congrLeftₗ {R : Type _} [Semiring R] [AddCommMonoid Z] [Module R Z] (e : X ≃ₜ Y) :
+ LocallyConstant X Z ≃ₗ[R] LocallyConstant Y Z where
+ toFun := (congrLeft e).toFun
+ map_smul' := (comapₗ _ e.continuous_invFun).map_smul'
+ map_add' := (comapAddMonoidHom _ e.continuous_invFun).map_add'
+ invFun := (congrLeft e).invFun
+ left_inv := (congrLeft e).left_inv
+ right_inv := (congrLeft e).right_inv
+
+end Comap
+
end LocallyConstant
@@ -2,15 +2,12 @@
Copyright (c) 2021 Johan Commelin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin
-
-! This file was ported from Lean 3 source module topology.locally_constant.algebra
-! leanprover-community/mathlib commit bcfa726826abd57587355b4b5b7e78ad6527b7e4
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Algebra.Algebra.Pi
import Mathlib.Topology.LocallyConstant.Basic
+#align_import topology.locally_constant.algebra from "leanprover-community/mathlib"@"bcfa726826abd57587355b4b5b7e78ad6527b7e4"
+
/-!
# Algebraic structure on locally constant functions
@@ -54,8 +54,8 @@ theorem inv_apply [Inv Y] (f : LocallyConstant X Y) (x : X) : f⁻¹ x = (f x)
#align locally_constant.neg_apply LocallyConstant.neg_apply
@[to_additive]
-instance [Mul Y] : Mul (LocallyConstant X Y)
- where mul f g := ⟨f * g, f.isLocallyConstant.mul g.isLocallyConstant⟩
+instance [Mul Y] : Mul (LocallyConstant X Y) where
+ mul f g := ⟨f * g, f.isLocallyConstant.mul g.isLocallyConstant⟩
@[to_additive (attr := simp)]
theorem coe_mul [Mul Y] (f g : LocallyConstant X Y) : ⇑(f * g) = f * g :=
@@ -73,8 +73,8 @@ theorem mul_apply [Mul Y] (f g : LocallyConstant X Y) (x : X) : (f * g) x = f x
instance [MulOneClass Y] : MulOneClass (LocallyConstant X Y) :=
Function.Injective.mulOneClass FunLike.coe FunLike.coe_injective' rfl fun _ _ => rfl
-/-- `coe_fn` is a `monoid_hom`. -/
-@[to_additive (attr := simps) "`coe_fn` is an `add_monoid_hom`."]
+/-- `FunLike.coe` is a `MonoidHom`. -/
+@[to_additive (attr := simps) "`FunLike.coe` is an `AddMonoidHom`."]
def coeFnMonoidHom [MulOneClass Y] : LocallyConstant X Y →* X → Y where
toFun := FunLike.coe
map_one' := rfl
@@ -127,8 +127,8 @@ theorem charFn_inj [Nontrivial Y] (hU : IsClopen U) (hV : IsClopen V)
end CharFn
@[to_additive]
-instance [Div Y] : Div (LocallyConstant X Y)
- where div f g := ⟨f / g, f.isLocallyConstant.div g.isLocallyConstant⟩
+instance [Div Y] : Div (LocallyConstant X Y) where
+ div f g := ⟨f / g, f.isLocallyConstant.div g.isLocallyConstant⟩
@[to_additive]
theorem coe_div [Div Y] (f g : LocallyConstant X Y) : ⇑(f / g) = f / g :=
@@ -154,7 +154,7 @@ instance [CommSemigroup Y] : CommSemigroup (LocallyConstant X Y) :=
Function.Injective.commSemigroup FunLike.coe FunLike.coe_injective' fun _ _ => rfl
@[to_additive]
-instance instSMulLocallyConstant [SMul α Y] : SMul α (LocallyConstant X Y) where
+instance smul [SMul α Y] : SMul α (LocallyConstant X Y) where
smul n f := f.map (n • ·)
@[to_additive (attr := simp)]
@@ -167,7 +167,7 @@ theorem smul_apply [SMul R Y] (r : R) (f : LocallyConstant X Y) (x : X) : (r •
rfl
#align locally_constant.smul_apply LocallyConstant.smul_apply
-@[to_additive existing instSMulLocallyConstant]
+@[to_additive existing LocallyConstant.smul]
instance [Pow Y α] : Pow (LocallyConstant X Y) α where
pow f n := f.map (· ^ n)
@@ -74,7 +74,7 @@ instance [MulOneClass Y] : MulOneClass (LocallyConstant X Y) :=
Function.Injective.mulOneClass FunLike.coe FunLike.coe_injective' rfl fun _ _ => rfl
/-- `coe_fn` is a `monoid_hom`. -/
-@[to_additive "`coe_fn` is an `add_monoid_hom`.", simps]
+@[to_additive (attr := simps) "`coe_fn` is an `add_monoid_hom`."]
def coeFnMonoidHom [MulOneClass Y] : LocallyConstant X Y →* X → Y where
toFun := FunLike.coe
map_one' := rfl
@@ -83,7 +83,7 @@ def coeFnMonoidHom [MulOneClass Y] : LocallyConstant X Y →* X → Y where
#align locally_constant.coe_fn_add_monoid_hom LocallyConstant.coeFnAddMonoidHom
/-- The constant-function embedding, as a multiplicative monoid hom. -/
-@[to_additive "The constant-function embedding, as an additive monoid hom.", simps]
+@[to_additive (attr := simps) "The constant-function embedding, as an additive monoid hom."]
def constMonoidHom [MulOneClass Y] : Y →* LocallyConstant X Y where
toFun := const X
map_one' := rfl
The unported dependencies are