deprecated.ring
⟷
Mathlib.Deprecated.Ring
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)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -37,10 +37,10 @@ universe u v w
variable {α : Type u}
#print IsSemiringHom /-
-/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`map_zero] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`map_hMul] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:400:30: infer kinds are unsupported in Lean 4: #[`map_zero] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:400:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:400:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:400:30: infer kinds are unsupported in Lean 4: #[`map_hMul] [] -/
/-- Predicate for semiring homomorphisms (deprecated -- use the bundled `ring_hom` version). -/
structure IsSemiringHom {α : Type u} {β : Type v} [Semiring α] [Semiring β] (f : α → β) : Prop where
map_zero : f 0 = 0
@@ -90,9 +90,9 @@ theorem to_isMonoidHom (hf : IsSemiringHom f) : IsMonoidHom f :=
end IsSemiringHom
#print IsRingHom /-
-/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`map_hMul] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:400:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:400:30: infer kinds are unsupported in Lean 4: #[`map_hMul] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:400:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
/-- Predicate for ring homomorphisms (deprecated -- use the bundled `ring_hom` version). -/
structure IsRingHom {α : Type u} {β : Type v} [Ring α] [Ring β] (f : α → β) : Prop where
map_one : f 1 = 1
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -37,10 +37,10 @@ universe u v w
variable {α : Type u}
#print IsSemiringHom /-
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_zero] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_hMul] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`map_zero] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`map_hMul] [] -/
/-- Predicate for semiring homomorphisms (deprecated -- use the bundled `ring_hom` version). -/
structure IsSemiringHom {α : Type u} {β : Type v} [Semiring α] [Semiring β] (f : α → β) : Prop where
map_zero : f 0 = 0
@@ -90,9 +90,9 @@ theorem to_isMonoidHom (hf : IsSemiringHom f) : IsMonoidHom f :=
end IsSemiringHom
#print IsRingHom /-
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_hMul] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`map_hMul] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
/-- Predicate for ring homomorphisms (deprecated -- use the bundled `ring_hom` version). -/
structure IsRingHom {α : Type u} {β : Type v} [Ring α] [Ring β] (f : α → β) : Prop where
map_one : f 1 = 1
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2020 Mario Carneiro. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Mario Carneiro
-/
-import Mathbin.Deprecated.Group
+import Deprecated.Group
#align_import deprecated.ring from "leanprover-community/mathlib"@"10708587e81b68c763fcdb7505f279d52e569768"
@@ -37,10 +37,10 @@ universe u v w
variable {α : Type u}
#print IsSemiringHom /-
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_zero] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_hMul] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_zero] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_hMul] [] -/
/-- Predicate for semiring homomorphisms (deprecated -- use the bundled `ring_hom` version). -/
structure IsSemiringHom {α : Type u} {β : Type v} [Semiring α] [Semiring β] (f : α → β) : Prop where
map_zero : f 0 = 0
@@ -90,9 +90,9 @@ theorem to_isMonoidHom (hf : IsSemiringHom f) : IsMonoidHom f :=
end IsSemiringHom
#print IsRingHom /-
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_hMul] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_hMul] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
/-- Predicate for ring homomorphisms (deprecated -- use the bundled `ring_hom` version). -/
structure IsRingHom {α : Type u} {β : Type v} [Ring α] [Ring β] (f : α → β) : Prop where
map_one : f 1 = 1
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -40,13 +40,13 @@ variable {α : Type u}
/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_zero] [] -/
/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_mul] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_hMul] [] -/
/-- Predicate for semiring homomorphisms (deprecated -- use the bundled `ring_hom` version). -/
structure IsSemiringHom {α : Type u} {β : Type v} [Semiring α] [Semiring β] (f : α → β) : Prop where
map_zero : f 0 = 0
map_one : f 1 = 1
map_add : ∀ {x y}, f (x + y) = f x + f y
- map_mul : ∀ {x y}, f (x * y) = f x * f y
+ map_hMul : ∀ {x y}, f (x * y) = f x * f y
#align is_semiring_hom IsSemiringHom
-/
@@ -69,7 +69,7 @@ theorem comp (hf : IsSemiringHom f) {γ} [Semiring γ] {g : β → γ} (hg : IsS
{ map_zero := by simpa [map_zero hf] using map_zero hg
map_one := by simpa [map_one hf] using map_one hg
map_add := fun x y => by simp [map_add hf, map_add hg]
- map_mul := fun x y => by simp [map_mul hf, map_mul hg] }
+ map_hMul := fun x y => by simp [map_mul hf, map_mul hg] }
#align is_semiring_hom.comp IsSemiringHom.comp
-/
@@ -91,12 +91,12 @@ end IsSemiringHom
#print IsRingHom /-
/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_mul] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_hMul] [] -/
/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
/-- Predicate for ring homomorphisms (deprecated -- use the bundled `ring_hom` version). -/
structure IsRingHom {α : Type u} {β : Type v} [Ring α] [Ring β] (f : α → β) : Prop where
map_one : f 1 = 1
- map_mul : ∀ {x y}, f (x * y) = f x * f y
+ map_hMul : ∀ {x y}, f (x * y) = f x * f y
map_add : ∀ {x y}, f (x + y) = f x + f y
#align is_ring_hom IsRingHom
-/
@@ -150,7 +150,7 @@ theorem id : IsRingHom (@id α) := by refine' { .. } <;> intros <;> rfl
/-- The composition of two ring homomorphisms is a ring homomorphism. -/
theorem comp (hf : IsRingHom f) {γ} [Ring γ] {g : β → γ} (hg : IsRingHom g) : IsRingHom (g ∘ f) :=
{ map_add := fun x y => by simp [map_add hf] <;> rw [map_add hg] <;> rfl
- map_mul := fun x y => by simp [map_mul hf] <;> rw [map_mul hg] <;> rfl
+ map_hMul := fun x y => by simp [map_mul hf] <;> rw [map_mul hg] <;> rfl
map_one := by simp [map_one hf] <;> exact map_one hg }
#align is_ring_hom.comp IsRingHom.comp
-/
@@ -195,7 +195,7 @@ theorem to_isSemiringHom (f : α →+* β) : IsSemiringHom f :=
{ map_zero := f.map_zero
map_one := f.map_one
map_add := f.map_add
- map_mul := f.map_mul }
+ map_hMul := f.map_hMul }
#align ring_hom.to_is_semiring_hom RingHom.to_isSemiringHom
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2020 Mario Carneiro. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Mario Carneiro
-
-! This file was ported from Lean 3 source module deprecated.ring
-! leanprover-community/mathlib commit 10708587e81b68c763fcdb7505f279d52e569768
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Deprecated.Group
+#align_import deprecated.ring from "leanprover-community/mathlib"@"10708587e81b68c763fcdb7505f279d52e569768"
+
/-!
# Unbundled semiring and ring homomorphisms (deprecated)
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -40,10 +40,10 @@ universe u v w
variable {α : Type u}
#print IsSemiringHom /-
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_zero] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_mul] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_zero] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_mul] [] -/
/-- Predicate for semiring homomorphisms (deprecated -- use the bundled `ring_hom` version). -/
structure IsSemiringHom {α : Type u} {β : Type v} [Semiring α] [Semiring β] (f : α → β) : Prop where
map_zero : f 0 = 0
@@ -65,6 +65,7 @@ theorem id : IsSemiringHom (@id α) := by refine' { .. } <;> intros <;> rfl
#align is_semiring_hom.id IsSemiringHom.id
-/
+#print IsSemiringHom.comp /-
/-- The composition of two semiring homomorphisms is a semiring homomorphism. -/
theorem comp (hf : IsSemiringHom f) {γ} [Semiring γ] {g : β → γ} (hg : IsSemiringHom g) :
IsSemiringHom (g ∘ f) :=
@@ -73,6 +74,7 @@ theorem comp (hf : IsSemiringHom f) {γ} [Semiring γ] {g : β → γ} (hg : IsS
map_add := fun x y => by simp [map_add hf, map_add hg]
map_mul := fun x y => by simp [map_mul hf, map_mul hg] }
#align is_semiring_hom.comp IsSemiringHom.comp
+-/
#print IsSemiringHom.to_isAddMonoidHom /-
/-- A semiring homomorphism is an additive monoid homomorphism. -/
@@ -91,9 +93,9 @@ theorem to_isMonoidHom (hf : IsSemiringHom f) : IsMonoidHom f :=
end IsSemiringHom
#print IsRingHom /-
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_mul] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_mul] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
/-- Predicate for ring homomorphisms (deprecated -- use the bundled `ring_hom` version). -/
structure IsRingHom {α : Type u} {β : Type v} [Ring α] [Ring β] (f : α → β) : Prop where
map_one : f 1 = 1
@@ -115,24 +117,30 @@ theorem of_semiring {f : α → β} (H : IsSemiringHom f) : IsRingHom f :=
variable {f : α → β} (hf : IsRingHom f) {x y : α}
+#print IsRingHom.map_zero /-
/-- Ring homomorphisms map zero to zero. -/
theorem map_zero (hf : IsRingHom f) : f 0 = 0 :=
calc
f 0 = f (0 + 0) - f 0 := by rw [hf.map_add] <;> simp
_ = 0 := by simp
#align is_ring_hom.map_zero IsRingHom.map_zero
+-/
+#print IsRingHom.map_neg /-
/-- Ring homomorphisms preserve additive inverses. -/
theorem map_neg (hf : IsRingHom f) : f (-x) = -f x :=
calc
f (-x) = f (-x + x) - f x := by rw [hf.map_add] <;> simp
_ = -f x := by simp [hf.map_zero]
#align is_ring_hom.map_neg IsRingHom.map_neg
+-/
+#print IsRingHom.map_sub /-
/-- Ring homomorphisms preserve subtraction. -/
theorem map_sub (hf : IsRingHom f) : f (x - y) = f x - f y := by
simp [sub_eq_add_neg, hf.map_add, hf.map_neg]
#align is_ring_hom.map_sub IsRingHom.map_sub
+-/
#print IsRingHom.id /-
/-- The identity map is a ring homomorphism. -/
@@ -140,6 +148,7 @@ theorem id : IsRingHom (@id α) := by refine' { .. } <;> intros <;> rfl
#align is_ring_hom.id IsRingHom.id
-/
+#print IsRingHom.comp /-
-- see Note [no instance on morphisms]
/-- The composition of two ring homomorphisms is a ring homomorphism. -/
theorem comp (hf : IsRingHom f) {γ} [Ring γ] {g : β → γ} (hg : IsRingHom g) : IsRingHom (g ∘ f) :=
@@ -147,6 +156,7 @@ theorem comp (hf : IsRingHom f) {γ} [Ring γ] {g : β → γ} (hg : IsRingHom g
map_mul := fun x y => by simp [map_mul hf] <;> rw [map_mul hg] <;> rfl
map_one := by simp [map_one hf] <;> exact map_one hg }
#align is_ring_hom.comp IsRingHom.comp
+-/
#print IsRingHom.to_isSemiringHom /-
/-- A ring homomorphism is also a semiring homomorphism. -/
@@ -155,9 +165,11 @@ theorem to_isSemiringHom (hf : IsRingHom f) : IsSemiringHom f :=
#align is_ring_hom.to_is_semiring_hom IsRingHom.to_isSemiringHom
-/
+#print IsRingHom.to_isAddGroupHom /-
theorem to_isAddGroupHom (hf : IsRingHom f) : IsAddGroupHom f :=
{ map_add := fun _ _ => hf.map_add }
#align is_ring_hom.to_is_add_group_hom IsRingHom.to_isAddGroupHom
+-/
end IsRingHom
@@ -167,8 +179,6 @@ namespace RingHom
section
-include rα rβ
-
#print RingHom.of /-
/-- Interpret `f : α → β` with `is_semiring_hom f` as a ring homomorphism. -/
def of {f : α → β} (hf : IsSemiringHom f) : α →+* β :=
@@ -176,23 +186,29 @@ def of {f : α → β} (hf : IsSemiringHom f) : α →+* β :=
#align ring_hom.of RingHom.of
-/
+#print RingHom.coe_of /-
@[simp]
theorem coe_of {f : α → β} (hf : IsSemiringHom f) : ⇑(of hf) = f :=
rfl
#align ring_hom.coe_of RingHom.coe_of
+-/
+#print RingHom.to_isSemiringHom /-
theorem to_isSemiringHom (f : α →+* β) : IsSemiringHom f :=
{ map_zero := f.map_zero
map_one := f.map_one
map_add := f.map_add
map_mul := f.map_mul }
#align ring_hom.to_is_semiring_hom RingHom.to_isSemiringHom
+-/
end
+#print RingHom.to_isRingHom /-
theorem to_isRingHom {α γ} [Ring α] [Ring γ] (g : α →+* γ) : IsRingHom g :=
IsRingHom.of_semiring g.to_isSemiringHom
#align ring_hom.to_is_ring_hom RingHom.to_isRingHom
+-/
end RingHom
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -120,7 +120,6 @@ theorem map_zero (hf : IsRingHom f) : f 0 = 0 :=
calc
f 0 = f (0 + 0) - f 0 := by rw [hf.map_add] <;> simp
_ = 0 := by simp
-
#align is_ring_hom.map_zero IsRingHom.map_zero
/-- Ring homomorphisms preserve additive inverses. -/
@@ -128,7 +127,6 @@ theorem map_neg (hf : IsRingHom f) : f (-x) = -f x :=
calc
f (-x) = f (-x + x) - f x := by rw [hf.map_add] <;> simp
_ = -f x := by simp [hf.map_zero]
-
#align is_ring_hom.map_neg IsRingHom.map_neg
/-- Ring homomorphisms preserve subtraction. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -40,10 +40,10 @@ universe u v w
variable {α : Type u}
#print IsSemiringHom /-
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_zero] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_mul] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_zero] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_mul] [] -/
/-- Predicate for semiring homomorphisms (deprecated -- use the bundled `ring_hom` version). -/
structure IsSemiringHom {α : Type u} {β : Type v} [Semiring α] [Semiring β] (f : α → β) : Prop where
map_zero : f 0 = 0
@@ -91,9 +91,9 @@ theorem to_isMonoidHom (hf : IsSemiringHom f) : IsMonoidHom f :=
end IsSemiringHom
#print IsRingHom /-
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_mul] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_mul] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
/-- Predicate for ring homomorphisms (deprecated -- use the bundled `ring_hom` version). -/
structure IsRingHom {α : Type u} {β : Type v} [Ring α] [Ring β] (f : α → β) : Prop where
map_one : f 1 = 1
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -65,12 +65,6 @@ theorem id : IsSemiringHom (@id α) := by refine' { .. } <;> intros <;> rfl
#align is_semiring_hom.id IsSemiringHom.id
-/
-/- warning: is_semiring_hom.comp -> IsSemiringHom.comp is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Semiring.{u1} α] [_inst_2 : Semiring.{u2} β] {f : α -> β}, (IsSemiringHom.{u1, u2} α β _inst_1 _inst_2 f) -> (forall {γ : Type.{u3}} [_inst_3 : Semiring.{u3} γ] {g : β -> γ}, (IsSemiringHom.{u2, u3} β γ _inst_2 _inst_3 g) -> (IsSemiringHom.{u1, u3} α γ _inst_1 _inst_3 (Function.comp.{succ u1, succ u2, succ u3} α β γ g f)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : Semiring.{u2} α] [_inst_2 : Semiring.{u3} β] {f : α -> β}, (IsSemiringHom.{u2, u3} α β _inst_1 _inst_2 f) -> (forall {γ : Type.{u1}} [_inst_3 : Semiring.{u1} γ] {g : β -> γ}, (IsSemiringHom.{u3, u1} β γ _inst_2 _inst_3 g) -> (IsSemiringHom.{u2, u1} α γ _inst_1 _inst_3 (Function.comp.{succ u2, succ u3, succ u1} α β γ g f)))
-Case conversion may be inaccurate. Consider using '#align is_semiring_hom.comp IsSemiringHom.compₓ'. -/
/-- The composition of two semiring homomorphisms is a semiring homomorphism. -/
theorem comp (hf : IsSemiringHom f) {γ} [Semiring γ] {g : β → γ} (hg : IsSemiringHom g) :
IsSemiringHom (g ∘ f) :=
@@ -121,12 +115,6 @@ theorem of_semiring {f : α → β} (H : IsSemiringHom f) : IsRingHom f :=
variable {f : α → β} (hf : IsRingHom f) {x y : α}
-/- warning: is_ring_hom.map_zero -> IsRingHom.map_zero is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (Eq.{succ u2} β (f (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} α (NonAssocRing.toNonUnitalNonAssocRing.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1))))))))) (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β (MulZeroClass.toHasZero.{u2} β (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} β (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} β (NonAssocRing.toNonUnitalNonAssocRing.{u2} β (Ring.toNonAssocRing.{u2} β _inst_2)))))))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (Eq.{succ u2} β (f (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (Ring.toSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u2} β 0 (Zero.toOfNat0.{u2} β (MonoidWithZero.toZero.{u2} β (Semiring.toMonoidWithZero.{u2} β (Ring.toSemiring.{u2} β _inst_2))))))
-Case conversion may be inaccurate. Consider using '#align is_ring_hom.map_zero IsRingHom.map_zeroₓ'. -/
/-- Ring homomorphisms map zero to zero. -/
theorem map_zero (hf : IsRingHom f) : f 0 = 0 :=
calc
@@ -135,12 +123,6 @@ theorem map_zero (hf : IsRingHom f) : f 0 = 0 :=
#align is_ring_hom.map_zero IsRingHom.map_zero
-/- warning: is_ring_hom.map_neg -> IsRingHom.map_neg is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β} {x : α}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (Eq.{succ u2} β (f (Neg.neg.{u1} α (SubNegMonoid.toHasNeg.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1))))) x)) (Neg.neg.{u2} β (SubNegMonoid.toHasNeg.{u2} β (AddGroup.toSubNegMonoid.{u2} β (AddGroupWithOne.toAddGroup.{u2} β (AddCommGroupWithOne.toAddGroupWithOne.{u2} β (Ring.toAddCommGroupWithOne.{u2} β _inst_2))))) (f x)))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β} {x : α}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (Eq.{succ u2} β (f (Neg.neg.{u1} α (Ring.toNeg.{u1} α _inst_1) x)) (Neg.neg.{u2} β (Ring.toNeg.{u2} β _inst_2) (f x)))
-Case conversion may be inaccurate. Consider using '#align is_ring_hom.map_neg IsRingHom.map_negₓ'. -/
/-- Ring homomorphisms preserve additive inverses. -/
theorem map_neg (hf : IsRingHom f) : f (-x) = -f x :=
calc
@@ -149,12 +131,6 @@ theorem map_neg (hf : IsRingHom f) : f (-x) = -f x :=
#align is_ring_hom.map_neg IsRingHom.map_neg
-/- warning: is_ring_hom.map_sub -> IsRingHom.map_sub is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β} {x : α} {y : α}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (Eq.{succ u2} β (f (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (SubNegMonoid.toHasSub.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))))) x y)) (HSub.hSub.{u2, u2, u2} β β β (instHSub.{u2} β (SubNegMonoid.toHasSub.{u2} β (AddGroup.toSubNegMonoid.{u2} β (AddGroupWithOne.toAddGroup.{u2} β (AddCommGroupWithOne.toAddGroupWithOne.{u2} β (Ring.toAddCommGroupWithOne.{u2} β _inst_2)))))) (f x) (f y)))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β} {x : α} {y : α}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (Eq.{succ u2} β (f (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (Ring.toSub.{u1} α _inst_1)) x y)) (HSub.hSub.{u2, u2, u2} β β β (instHSub.{u2} β (Ring.toSub.{u2} β _inst_2)) (f x) (f y)))
-Case conversion may be inaccurate. Consider using '#align is_ring_hom.map_sub IsRingHom.map_subₓ'. -/
/-- Ring homomorphisms preserve subtraction. -/
theorem map_sub (hf : IsRingHom f) : f (x - y) = f x - f y := by
simp [sub_eq_add_neg, hf.map_add, hf.map_neg]
@@ -166,12 +142,6 @@ theorem id : IsRingHom (@id α) := by refine' { .. } <;> intros <;> rfl
#align is_ring_hom.id IsRingHom.id
-/
-/- warning: is_ring_hom.comp -> IsRingHom.comp is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (forall {γ : Type.{u3}} [_inst_3 : Ring.{u3} γ] {g : β -> γ}, (IsRingHom.{u2, u3} β γ _inst_2 _inst_3 g) -> (IsRingHom.{u1, u3} α γ _inst_1 _inst_3 (Function.comp.{succ u1, succ u2, succ u3} α β γ g f)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : Ring.{u2} α] [_inst_2 : Ring.{u3} β] {f : α -> β}, (IsRingHom.{u2, u3} α β _inst_1 _inst_2 f) -> (forall {γ : Type.{u1}} [_inst_3 : Ring.{u1} γ] {g : β -> γ}, (IsRingHom.{u3, u1} β γ _inst_2 _inst_3 g) -> (IsRingHom.{u2, u1} α γ _inst_1 _inst_3 (Function.comp.{succ u2, succ u3, succ u1} α β γ g f)))
-Case conversion may be inaccurate. Consider using '#align is_ring_hom.comp IsRingHom.compₓ'. -/
-- see Note [no instance on morphisms]
/-- The composition of two ring homomorphisms is a ring homomorphism. -/
theorem comp (hf : IsRingHom f) {γ} [Ring γ] {g : β → γ} (hg : IsRingHom g) : IsRingHom (g ∘ f) :=
@@ -187,12 +157,6 @@ theorem to_isSemiringHom (hf : IsRingHom f) : IsSemiringHom f :=
#align is_ring_hom.to_is_semiring_hom IsRingHom.to_isSemiringHom
-/
-/- warning: is_ring_hom.to_is_add_group_hom -> IsRingHom.to_isAddGroupHom is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (IsAddGroupHom.{u1, u2} α β (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1))) (AddGroupWithOne.toAddGroup.{u2} β (AddCommGroupWithOne.toAddGroupWithOne.{u2} β (Ring.toAddCommGroupWithOne.{u2} β _inst_2))) f)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (IsAddGroupHom.{u1, u2} α β (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1)) (AddGroupWithOne.toAddGroup.{u2} β (Ring.toAddGroupWithOne.{u2} β _inst_2)) f)
-Case conversion may be inaccurate. Consider using '#align is_ring_hom.to_is_add_group_hom IsRingHom.to_isAddGroupHomₓ'. -/
theorem to_isAddGroupHom (hf : IsRingHom f) : IsAddGroupHom f :=
{ map_add := fun _ _ => hf.map_add }
#align is_ring_hom.to_is_add_group_hom IsRingHom.to_isAddGroupHom
@@ -214,23 +178,11 @@ def of {f : α → β} (hf : IsSemiringHom f) : α →+* β :=
#align ring_hom.of RingHom.of
-/
-/- warning: ring_hom.coe_of -> RingHom.coe_of is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [rα : Semiring.{u1} α] [rβ : Semiring.{u2} β] {f : α -> β} (hf : IsSemiringHom.{u1, u2} α β rα rβ f), Eq.{max (succ u1) (succ u2)} (α -> β) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) (fun (_x : RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) => α -> β) (RingHom.hasCoeToFun.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) (RingHom.of.{u1, u2} α β rα rβ f hf)) f
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {rα : Semiring.{u1} α} {rβ : Semiring.{u2} β} {f : α -> β} (hf : IsSemiringHom.{u1, u2} α β rα rβ f), Eq.{max (succ u1) (succ u2)} (forall (ᾰ : α), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : α) => β) ᾰ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα))) (NonUnitalNonAssocSemiring.toMul.{u2} β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ) (RingHom.instRingHomClassRingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ))))) (RingHom.of.{u1, u2} α β rα rβ f hf)) f
-Case conversion may be inaccurate. Consider using '#align ring_hom.coe_of RingHom.coe_ofₓ'. -/
@[simp]
theorem coe_of {f : α → β} (hf : IsSemiringHom f) : ⇑(of hf) = f :=
rfl
#align ring_hom.coe_of RingHom.coe_of
-/- warning: ring_hom.to_is_semiring_hom -> RingHom.to_isSemiringHom is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [rα : Semiring.{u1} α] [rβ : Semiring.{u2} β] (f : RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)), IsSemiringHom.{u1, u2} α β rα rβ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) (fun (_x : RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) => α -> β) (RingHom.hasCoeToFun.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) f)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {rα : Semiring.{u1} α} {rβ : Semiring.{u2} β} (f : RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)), IsSemiringHom.{u1, u2} α β rα rβ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα))) (NonUnitalNonAssocSemiring.toMul.{u2} β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ) (RingHom.instRingHomClassRingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ))))) f)
-Case conversion may be inaccurate. Consider using '#align ring_hom.to_is_semiring_hom RingHom.to_isSemiringHomₓ'. -/
theorem to_isSemiringHom (f : α →+* β) : IsSemiringHom f :=
{ map_zero := f.map_zero
map_one := f.map_one
@@ -240,12 +192,6 @@ theorem to_isSemiringHom (f : α →+* β) : IsSemiringHom f :=
end
-/- warning: ring_hom.to_is_ring_hom -> RingHom.to_isRingHom is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {γ : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} γ] (g : RingHom.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))), IsRingHom.{u1, u2} α γ _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))) (fun (_x : RingHom.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))) => α -> γ) (RingHom.hasCoeToFun.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))) g)
-but is expected to have type
- forall {α : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Ring.{u2} α] [_inst_2 : Ring.{u1} γ] (g : RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))), IsRingHom.{u2, u1} α γ _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : α) => γ) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) α γ (NonUnitalNonAssocSemiring.toMul.{u2} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} α (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} γ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} γ (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) α γ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} α (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} γ (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2)))))) g)
-Case conversion may be inaccurate. Consider using '#align ring_hom.to_is_ring_hom RingHom.to_isRingHomₓ'. -/
theorem to_isRingHom {α γ} [Ring α] [Ring γ] (g : α →+* γ) : IsRingHom g :=
IsRingHom.of_semiring g.to_isSemiringHom
#align ring_hom.to_is_ring_hom RingHom.to_isRingHom
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -218,7 +218,7 @@ def of {f : α → β} (hf : IsSemiringHom f) : α →+* β :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [rα : Semiring.{u1} α] [rβ : Semiring.{u2} β] {f : α -> β} (hf : IsSemiringHom.{u1, u2} α β rα rβ f), Eq.{max (succ u1) (succ u2)} (α -> β) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) (fun (_x : RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) => α -> β) (RingHom.hasCoeToFun.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) (RingHom.of.{u1, u2} α β rα rβ f hf)) f
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {rα : Semiring.{u1} α} {rβ : Semiring.{u2} β} {f : α -> β} (hf : IsSemiringHom.{u1, u2} α β rα rβ f), Eq.{max (succ u1) (succ u2)} (forall (ᾰ : α), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => β) ᾰ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα))) (NonUnitalNonAssocSemiring.toMul.{u2} β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ) (RingHom.instRingHomClassRingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ))))) (RingHom.of.{u1, u2} α β rα rβ f hf)) f
+ forall {α : Type.{u1}} {β : Type.{u2}} {rα : Semiring.{u1} α} {rβ : Semiring.{u2} β} {f : α -> β} (hf : IsSemiringHom.{u1, u2} α β rα rβ f), Eq.{max (succ u1) (succ u2)} (forall (ᾰ : α), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : α) => β) ᾰ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα))) (NonUnitalNonAssocSemiring.toMul.{u2} β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ) (RingHom.instRingHomClassRingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ))))) (RingHom.of.{u1, u2} α β rα rβ f hf)) f
Case conversion may be inaccurate. Consider using '#align ring_hom.coe_of RingHom.coe_ofₓ'. -/
@[simp]
theorem coe_of {f : α → β} (hf : IsSemiringHom f) : ⇑(of hf) = f :=
@@ -229,7 +229,7 @@ theorem coe_of {f : α → β} (hf : IsSemiringHom f) : ⇑(of hf) = f :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [rα : Semiring.{u1} α] [rβ : Semiring.{u2} β] (f : RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)), IsSemiringHom.{u1, u2} α β rα rβ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) (fun (_x : RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) => α -> β) (RingHom.hasCoeToFun.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) f)
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {rα : Semiring.{u1} α} {rβ : Semiring.{u2} β} (f : RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)), IsSemiringHom.{u1, u2} α β rα rβ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα))) (NonUnitalNonAssocSemiring.toMul.{u2} β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ) (RingHom.instRingHomClassRingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ))))) f)
+ forall {α : Type.{u1}} {β : Type.{u2}} {rα : Semiring.{u1} α} {rβ : Semiring.{u2} β} (f : RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)), IsSemiringHom.{u1, u2} α β rα rβ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα))) (NonUnitalNonAssocSemiring.toMul.{u2} β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ) (RingHom.instRingHomClassRingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ))))) f)
Case conversion may be inaccurate. Consider using '#align ring_hom.to_is_semiring_hom RingHom.to_isSemiringHomₓ'. -/
theorem to_isSemiringHom (f : α →+* β) : IsSemiringHom f :=
{ map_zero := f.map_zero
@@ -244,7 +244,7 @@ end
lean 3 declaration is
forall {α : Type.{u1}} {γ : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} γ] (g : RingHom.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))), IsRingHom.{u1, u2} α γ _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))) (fun (_x : RingHom.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))) => α -> γ) (RingHom.hasCoeToFun.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))) g)
but is expected to have type
- forall {α : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Ring.{u2} α] [_inst_2 : Ring.{u1} γ] (g : RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))), IsRingHom.{u2, u1} α γ _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => γ) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) α γ (NonUnitalNonAssocSemiring.toMul.{u2} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} α (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} γ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} γ (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) α γ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} α (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} γ (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2)))))) g)
+ forall {α : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Ring.{u2} α] [_inst_2 : Ring.{u1} γ] (g : RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))), IsRingHom.{u2, u1} α γ _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : α) => γ) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) α γ (NonUnitalNonAssocSemiring.toMul.{u2} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} α (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} γ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} γ (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) α γ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} α (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} γ (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2)))))) g)
Case conversion may be inaccurate. Consider using '#align ring_hom.to_is_ring_hom RingHom.to_isRingHomₓ'. -/
theorem to_isRingHom {α γ} [Ring α] [Ring γ] (g : α →+* γ) : IsRingHom g :=
IsRingHom.of_semiring g.to_isSemiringHom
mathlib commit https://github.com/leanprover-community/mathlib/commit/08e1d8d4d989df3a6df86f385e9053ec8a372cc1
@@ -244,7 +244,7 @@ end
lean 3 declaration is
forall {α : Type.{u1}} {γ : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} γ] (g : RingHom.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))), IsRingHom.{u1, u2} α γ _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))) (fun (_x : RingHom.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))) => α -> γ) (RingHom.hasCoeToFun.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))) g)
but is expected to have type
- forall {α : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Ring.{u2} α] [_inst_2 : Ring.{u1} γ] (g : RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))), IsRingHom.{u2, u1} α γ _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => γ) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α γ (NonUnitalNonAssocSemiring.toMul.{u2} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} α (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} γ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} γ (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α γ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} α (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} γ (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2)))))) g)
+ forall {α : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Ring.{u2} α] [_inst_2 : Ring.{u1} γ] (g : RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))), IsRingHom.{u2, u1} α γ _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => γ) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) α γ (NonUnitalNonAssocSemiring.toMul.{u2} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} α (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} γ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} γ (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) α γ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} α (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} γ (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2))) α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u1} α γ (Semiring.toNonAssocSemiring.{u2} α (Ring.toSemiring.{u2} α _inst_1)) (Semiring.toNonAssocSemiring.{u1} γ (Ring.toSemiring.{u1} γ _inst_2)))))) g)
Case conversion may be inaccurate. Consider using '#align ring_hom.to_is_ring_hom RingHom.to_isRingHomₓ'. -/
theorem to_isRingHom {α γ} [Ring α] [Ring γ] (g : α →+* γ) : IsRingHom g :=
IsRingHom.of_semiring g.to_isSemiringHom
mathlib commit https://github.com/leanprover-community/mathlib/commit/09079525fd01b3dda35e96adaa08d2f943e1648c
@@ -40,10 +40,10 @@ universe u v w
variable {α : Type u}
#print IsSemiringHom /-
-/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`map_zero] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`map_mul] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_zero] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_mul] [] -/
/-- Predicate for semiring homomorphisms (deprecated -- use the bundled `ring_hom` version). -/
structure IsSemiringHom {α : Type u} {β : Type v} [Semiring α] [Semiring β] (f : α → β) : Prop where
map_zero : f 0 = 0
@@ -97,9 +97,9 @@ theorem to_isMonoidHom (hf : IsSemiringHom f) : IsMonoidHom f :=
end IsSemiringHom
#print IsRingHom /-
-/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`map_mul] [] -/
-/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_one] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_mul] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`map_add] [] -/
/-- Predicate for ring homomorphisms (deprecated -- use the bundled `ring_hom` version). -/
structure IsRingHom {α : Type u} {β : Type v} [Ring α] [Ring β] (f : α → β) : Prop where
map_one : f 1 = 1
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce86f4e05e9a9b8da5e316b22c76ce76440c56a1
@@ -137,7 +137,7 @@ theorem map_zero (hf : IsRingHom f) : f 0 = 0 :=
/- warning: is_ring_hom.map_neg -> IsRingHom.map_neg is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β} {x : α}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (Eq.{succ u2} β (f (Neg.neg.{u1} α (SubNegMonoid.toHasNeg.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1))))) x)) (Neg.neg.{u2} β (SubNegMonoid.toHasNeg.{u2} β (AddGroup.toSubNegMonoid.{u2} β (AddGroupWithOne.toAddGroup.{u2} β (NonAssocRing.toAddGroupWithOne.{u2} β (Ring.toNonAssocRing.{u2} β _inst_2))))) (f x)))
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β} {x : α}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (Eq.{succ u2} β (f (Neg.neg.{u1} α (SubNegMonoid.toHasNeg.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1))))) x)) (Neg.neg.{u2} β (SubNegMonoid.toHasNeg.{u2} β (AddGroup.toSubNegMonoid.{u2} β (AddGroupWithOne.toAddGroup.{u2} β (AddCommGroupWithOne.toAddGroupWithOne.{u2} β (Ring.toAddCommGroupWithOne.{u2} β _inst_2))))) (f x)))
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β} {x : α}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (Eq.{succ u2} β (f (Neg.neg.{u1} α (Ring.toNeg.{u1} α _inst_1) x)) (Neg.neg.{u2} β (Ring.toNeg.{u2} β _inst_2) (f x)))
Case conversion may be inaccurate. Consider using '#align is_ring_hom.map_neg IsRingHom.map_negₓ'. -/
@@ -151,7 +151,7 @@ theorem map_neg (hf : IsRingHom f) : f (-x) = -f x :=
/- warning: is_ring_hom.map_sub -> IsRingHom.map_sub is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β} {x : α} {y : α}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (Eq.{succ u2} β (f (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (SubNegMonoid.toHasSub.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)))))) x y)) (HSub.hSub.{u2, u2, u2} β β β (instHSub.{u2} β (SubNegMonoid.toHasSub.{u2} β (AddGroup.toSubNegMonoid.{u2} β (AddGroupWithOne.toAddGroup.{u2} β (NonAssocRing.toAddGroupWithOne.{u2} β (Ring.toNonAssocRing.{u2} β _inst_2)))))) (f x) (f y)))
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β} {x : α} {y : α}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (Eq.{succ u2} β (f (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (SubNegMonoid.toHasSub.{u1} α (AddGroup.toSubNegMonoid.{u1} α (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1)))))) x y)) (HSub.hSub.{u2, u2, u2} β β β (instHSub.{u2} β (SubNegMonoid.toHasSub.{u2} β (AddGroup.toSubNegMonoid.{u2} β (AddGroupWithOne.toAddGroup.{u2} β (AddCommGroupWithOne.toAddGroupWithOne.{u2} β (Ring.toAddCommGroupWithOne.{u2} β _inst_2)))))) (f x) (f y)))
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β} {x : α} {y : α}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (Eq.{succ u2} β (f (HSub.hSub.{u1, u1, u1} α α α (instHSub.{u1} α (Ring.toSub.{u1} α _inst_1)) x y)) (HSub.hSub.{u2, u2, u2} β β β (instHSub.{u2} β (Ring.toSub.{u2} β _inst_2)) (f x) (f y)))
Case conversion may be inaccurate. Consider using '#align is_ring_hom.map_sub IsRingHom.map_subₓ'. -/
@@ -189,7 +189,7 @@ theorem to_isSemiringHom (hf : IsRingHom f) : IsSemiringHom f :=
/- warning: is_ring_hom.to_is_add_group_hom -> IsRingHom.to_isAddGroupHom is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (IsAddGroupHom.{u1, u2} α β (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1))) (AddGroupWithOne.toAddGroup.{u2} β (NonAssocRing.toAddGroupWithOne.{u2} β (Ring.toNonAssocRing.{u2} β _inst_2))) f)
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (IsAddGroupHom.{u1, u2} α β (AddGroupWithOne.toAddGroup.{u1} α (AddCommGroupWithOne.toAddGroupWithOne.{u1} α (Ring.toAddCommGroupWithOne.{u1} α _inst_1))) (AddGroupWithOne.toAddGroup.{u2} β (AddCommGroupWithOne.toAddGroupWithOne.{u2} β (Ring.toAddCommGroupWithOne.{u2} β _inst_2))) f)
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (IsAddGroupHom.{u1, u2} α β (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1)) (AddGroupWithOne.toAddGroup.{u2} β (Ring.toAddGroupWithOne.{u2} β _inst_2)) f)
Case conversion may be inaccurate. Consider using '#align is_ring_hom.to_is_add_group_hom IsRingHom.to_isAddGroupHomₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/b19481deb571022990f1baa9cbf9172e6757a479
@@ -187,11 +187,15 @@ theorem to_isSemiringHom (hf : IsRingHom f) : IsSemiringHom f :=
#align is_ring_hom.to_is_semiring_hom IsRingHom.to_isSemiringHom
-/
-#print IsRingHom.to_isAddGroupHom /-
+/- warning: is_ring_hom.to_is_add_group_hom -> IsRingHom.to_isAddGroupHom is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (IsAddGroupHom.{u1, u2} α β (AddGroupWithOne.toAddGroup.{u1} α (NonAssocRing.toAddGroupWithOne.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1))) (AddGroupWithOne.toAddGroup.{u2} β (NonAssocRing.toAddGroupWithOne.{u2} β (Ring.toNonAssocRing.{u2} β _inst_2))) f)
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} β] {f : α -> β}, (IsRingHom.{u1, u2} α β _inst_1 _inst_2 f) -> (IsAddGroupHom.{u1, u2} α β (AddGroupWithOne.toAddGroup.{u1} α (Ring.toAddGroupWithOne.{u1} α _inst_1)) (AddGroupWithOne.toAddGroup.{u2} β (Ring.toAddGroupWithOne.{u2} β _inst_2)) f)
+Case conversion may be inaccurate. Consider using '#align is_ring_hom.to_is_add_group_hom IsRingHom.to_isAddGroupHomₓ'. -/
theorem to_isAddGroupHom (hf : IsRingHom f) : IsAddGroupHom f :=
{ map_add := fun _ _ => hf.map_add }
#align is_ring_hom.to_is_add_group_hom IsRingHom.to_isAddGroupHom
--/
end IsRingHom
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -214,7 +214,7 @@ def of {f : α → β} (hf : IsSemiringHom f) : α →+* β :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [rα : Semiring.{u1} α] [rβ : Semiring.{u2} β] {f : α -> β} (hf : IsSemiringHom.{u1, u2} α β rα rβ f), Eq.{max (succ u1) (succ u2)} (α -> β) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) (fun (_x : RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) => α -> β) (RingHom.hasCoeToFun.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) (RingHom.of.{u1, u2} α β rα rβ f hf)) f
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {rα : Semiring.{u1} α} {rβ : Semiring.{u2} β} {f : α -> β} (hf : IsSemiringHom.{u1, u2} α β rα rβ f), Eq.{max (succ u1) (succ u2)} (forall (ᾰ : α), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : α) => β) ᾰ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα))) (NonUnitalNonAssocSemiring.toMul.{u2} β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ) (RingHom.instRingHomClassRingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ))))) (RingHom.of.{u1, u2} α β rα rβ f hf)) f
+ forall {α : Type.{u1}} {β : Type.{u2}} {rα : Semiring.{u1} α} {rβ : Semiring.{u2} β} {f : α -> β} (hf : IsSemiringHom.{u1, u2} α β rα rβ f), Eq.{max (succ u1) (succ u2)} (forall (ᾰ : α), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => β) ᾰ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα))) (NonUnitalNonAssocSemiring.toMul.{u2} β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ) (RingHom.instRingHomClassRingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ))))) (RingHom.of.{u1, u2} α β rα rβ f hf)) f
Case conversion may be inaccurate. Consider using '#align ring_hom.coe_of RingHom.coe_ofₓ'. -/
@[simp]
theorem coe_of {f : α → β} (hf : IsSemiringHom f) : ⇑(of hf) = f :=
@@ -225,7 +225,7 @@ theorem coe_of {f : α → β} (hf : IsSemiringHom f) : ⇑(of hf) = f :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [rα : Semiring.{u1} α] [rβ : Semiring.{u2} β] (f : RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)), IsSemiringHom.{u1, u2} α β rα rβ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) (fun (_x : RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) => α -> β) (RingHom.hasCoeToFun.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) f)
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {rα : Semiring.{u1} α} {rβ : Semiring.{u2} β} (f : RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)), IsSemiringHom.{u1, u2} α β rα rβ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα))) (NonUnitalNonAssocSemiring.toMul.{u2} β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ) (RingHom.instRingHomClassRingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ))))) f)
+ forall {α : Type.{u1}} {β : Type.{u2}} {rα : Semiring.{u1} α} {rβ : Semiring.{u2} β} (f : RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)), IsSemiringHom.{u1, u2} α β rα rβ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα))) (NonUnitalNonAssocSemiring.toMul.{u2} β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ) (RingHom.instRingHomClassRingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ))))) f)
Case conversion may be inaccurate. Consider using '#align ring_hom.to_is_semiring_hom RingHom.to_isSemiringHomₓ'. -/
theorem to_isSemiringHom (f : α →+* β) : IsSemiringHom f :=
{ map_zero := f.map_zero
@@ -240,7 +240,7 @@ end
lean 3 declaration is
forall {α : Type.{u1}} {γ : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} γ] (g : RingHom.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))), IsRingHom.{u1, u2} α γ _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))) (fun (_x : RingHom.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))) => α -> γ) (RingHom.hasCoeToFun.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))) g)
but is expected to have type
- forall {α : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Ring.{u2} α] [_inst_2 : Ring.{u1} γ] (g : RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))), IsRingHom.{u2, u1} α γ _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : α) => γ) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α γ (NonUnitalNonAssocSemiring.toMul.{u2} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} α (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} γ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} γ (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α γ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} α (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} γ (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2)))))) g)
+ forall {α : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Ring.{u2} α] [_inst_2 : Ring.{u1} γ] (g : RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))), IsRingHom.{u2, u1} α γ _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : α) => γ) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α γ (NonUnitalNonAssocSemiring.toMul.{u2} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} α (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} γ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} γ (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α γ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} α (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} γ (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2)))))) g)
Case conversion may be inaccurate. Consider using '#align ring_hom.to_is_ring_hom RingHom.to_isRingHomₓ'. -/
theorem to_isRingHom {α γ} [Ring α] [Ring γ] (g : α →+* γ) : IsRingHom g :=
IsRingHom.of_semiring g.to_isSemiringHom
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -214,7 +214,7 @@ def of {f : α → β} (hf : IsSemiringHom f) : α →+* β :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [rα : Semiring.{u1} α] [rβ : Semiring.{u2} β] {f : α -> β} (hf : IsSemiringHom.{u1, u2} α β rα rβ f), Eq.{max (succ u1) (succ u2)} (α -> β) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) (fun (_x : RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) => α -> β) (RingHom.hasCoeToFun.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) (RingHom.of.{u1, u2} α β rα rβ f hf)) f
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {rα : Semiring.{u1} α} {rβ : Semiring.{u2} β} {f : α -> β} (hf : IsSemiringHom.{u1, u2} α β rα rβ f), Eq.{max (succ u1) (succ u2)} (forall (ᾰ : α), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : α) => β) ᾰ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα))) (NonUnitalNonAssocSemiring.toMul.{u2} β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ) (RingHom.instRingHomClassRingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ))))) (RingHom.of.{u1, u2} α β rα rβ f hf)) f
+ forall {α : Type.{u1}} {β : Type.{u2}} {rα : Semiring.{u1} α} {rβ : Semiring.{u2} β} {f : α -> β} (hf : IsSemiringHom.{u1, u2} α β rα rβ f), Eq.{max (succ u1) (succ u2)} (forall (ᾰ : α), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : α) => β) ᾰ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα))) (NonUnitalNonAssocSemiring.toMul.{u2} β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ) (RingHom.instRingHomClassRingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ))))) (RingHom.of.{u1, u2} α β rα rβ f hf)) f
Case conversion may be inaccurate. Consider using '#align ring_hom.coe_of RingHom.coe_ofₓ'. -/
@[simp]
theorem coe_of {f : α → β} (hf : IsSemiringHom f) : ⇑(of hf) = f :=
@@ -225,7 +225,7 @@ theorem coe_of {f : α → β} (hf : IsSemiringHom f) : ⇑(of hf) = f :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} [rα : Semiring.{u1} α] [rβ : Semiring.{u2} β] (f : RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)), IsSemiringHom.{u1, u2} α β rα rβ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) (fun (_x : RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) => α -> β) (RingHom.hasCoeToFun.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) f)
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {rα : Semiring.{u1} α} {rβ : Semiring.{u2} β} (f : RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)), IsSemiringHom.{u1, u2} α β rα rβ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα))) (NonUnitalNonAssocSemiring.toMul.{u2} β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ) (RingHom.instRingHomClassRingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ))))) f)
+ forall {α : Type.{u1}} {β : Type.{u2}} {rα : Semiring.{u1} α} {rβ : Semiring.{u2} β} (f : RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)), IsSemiringHom.{u1, u2} α β rα rβ (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : α) => β) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα))) (NonUnitalNonAssocSemiring.toMul.{u2} β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α rα)) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} β (Semiring.toNonAssocSemiring.{u2} β rβ)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ)) α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ) (RingHom.instRingHomClassRingHom.{u1, u2} α β (Semiring.toNonAssocSemiring.{u1} α rα) (Semiring.toNonAssocSemiring.{u2} β rβ))))) f)
Case conversion may be inaccurate. Consider using '#align ring_hom.to_is_semiring_hom RingHom.to_isSemiringHomₓ'. -/
theorem to_isSemiringHom (f : α →+* β) : IsSemiringHom f :=
{ map_zero := f.map_zero
@@ -240,7 +240,7 @@ end
lean 3 declaration is
forall {α : Type.{u1}} {γ : Type.{u2}} [_inst_1 : Ring.{u1} α] [_inst_2 : Ring.{u2} γ] (g : RingHom.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))), IsRingHom.{u1, u2} α γ _inst_1 _inst_2 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))) (fun (_x : RingHom.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))) => α -> γ) (RingHom.hasCoeToFun.{u1, u2} α γ (NonAssocRing.toNonAssocSemiring.{u1} α (Ring.toNonAssocRing.{u1} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u2} γ (Ring.toNonAssocRing.{u2} γ _inst_2))) g)
but is expected to have type
- forall {α : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Ring.{u2} α] [_inst_2 : Ring.{u1} γ] (g : RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))), IsRingHom.{u2, u1} α γ _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : α) => γ) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α γ (NonUnitalNonAssocSemiring.toMul.{u2} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} α (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} γ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} γ (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α γ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} α (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} γ (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2)))))) g)
+ forall {α : Type.{u2}} {γ : Type.{u1}} [_inst_1 : Ring.{u2} α] [_inst_2 : Ring.{u1} γ] (g : RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))), IsRingHom.{u2, u1} α γ _inst_1 _inst_2 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α (fun (_x : α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : α) => γ) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α γ (NonUnitalNonAssocSemiring.toMul.{u2} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} α (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} γ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} γ (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α γ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} α (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} γ (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2))) α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2)) (RingHom.instRingHomClassRingHom.{u2, u1} α γ (NonAssocRing.toNonAssocSemiring.{u2} α (Ring.toNonAssocRing.{u2} α _inst_1)) (NonAssocRing.toNonAssocSemiring.{u1} γ (Ring.toNonAssocRing.{u1} γ _inst_2)))))) g)
Case conversion may be inaccurate. Consider using '#align ring_hom.to_is_ring_hom RingHom.to_isRingHomₓ'. -/
theorem to_isRingHom {α γ} [Ring α] [Ring γ] (g : α →+* γ) : IsRingHom g :=
IsRingHom.of_semiring g.to_isSemiringHom
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -48,7 +48,6 @@ structure IsSemiringHom {α : Type u} {β : Type v} [Semiring α] [Semiring β]
namespace IsSemiringHom
variable {β : Type v} [Semiring α] [Semiring β]
-
variable {f : α → β} (hf : IsSemiringHom f) {x y : α}
/-- The identity map is a semiring homomorphism. -/
@@ -123,9 +123,9 @@ theorem id : IsRingHom (@id α) := by refine' { .. } <;> intros <;> rfl
-- see Note [no instance on morphisms]
/-- The composition of two ring homomorphisms is a ring homomorphism. -/
theorem comp (hf : IsRingHom f) {γ} [Ring γ] {g : β → γ} (hg : IsRingHom g) : IsRingHom (g ∘ f) :=
- { map_add := fun x y => by simp [map_add hf]; rw [map_add hg]
- map_mul := fun x y => by simp [map_mul hf]; rw [map_mul hg]
- map_one := by simp [map_one hf]; exact map_one hg }
+ { map_add := fun x y => by simp only [Function.comp_apply, map_add hf, map_add hg]
+ map_mul := fun x y => by simp only [Function.comp_apply, map_mul hf, map_mul hg]
+ map_one := by simp only [Function.comp_apply, map_one hf, map_one hg] }
#align is_ring_hom.comp IsRingHom.comp
/-- A ring homomorphism is also a semiring homomorphism. -/
@@ -2,14 +2,11 @@
Copyright (c) 2020 Mario Carneiro. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Mario Carneiro
-
-! This file was ported from Lean 3 source module deprecated.ring
-! leanprover-community/mathlib commit 5a3e819569b0f12cbec59d740a2613018e7b8eec
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Deprecated.Group
+#align_import deprecated.ring from "leanprover-community/mathlib"@"5a3e819569b0f12cbec59d740a2613018e7b8eec"
+
/-!
# Unbundled semiring and ring homomorphisms (deprecated)
This PR fixes two things:
align
statements for definitions and theorems and instances that are separated by two newlines from the relevant declaration (s/\n\n#align/\n#align
). This is often seen in the mathport output after ending calc
blocks.#align
statements. (This was needed for a script I wrote for #3630.)@@ -105,7 +105,6 @@ theorem map_zero (hf : IsRingHom f) : f 0 = 0 :=
calc
f 0 = f (0 + 0) - f 0 := by rw [hf.map_add]; simp
_ = 0 := by simp
-
#align is_ring_hom.map_zero IsRingHom.map_zero
/-- Ring homomorphisms preserve additive inverses. -/
@@ -113,7 +112,6 @@ theorem map_neg (hf : IsRingHom f) : f (-x) = -f x :=
calc
f (-x) = f (-x + x) - f x := by rw [hf.map_add]; simp
_ = -f x := by simp [hf.map_zero]
-
#align is_ring_hom.map_neg IsRingHom.map_neg
/-- Ring homomorphisms preserve subtraction. -/
All dependencies are ported!