algebra.order.kleene
⟷
Mathlib.Algebra.Order.Kleene
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)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -154,7 +154,7 @@ theorem add_idem (a : α) : a + a = a := by simp
theorem nsmul_eq_self : ∀ {n : ℕ} (hn : n ≠ 0) (a : α), n • a = a
| 0, h => (h rfl).elim
| 1, h => one_nsmul
- | n + 2, h => fun a => by rw [succ_nsmul, nsmul_eq_self n.succ_ne_zero, add_idem]
+ | n + 2, h => fun a => by rw [succ_nsmul', nsmul_eq_self n.succ_ne_zero, add_idem]
#align nsmul_eq_self nsmul_eq_self
-/
@@ -335,7 +335,7 @@ theorem kstar_idem (a : α) : a∗∗ = a∗ :=
@[simp]
theorem pow_le_kstar : ∀ {n : ℕ}, a ^ n ≤ a∗
| 0 => (pow_zero _).trans_le one_le_kstar
- | n + 1 => by rw [pow_succ]; exact (mul_le_mul_left' pow_le_kstar _).trans mul_kstar_le_kstar
+ | n + 1 => by rw [pow_succ']; exact (mul_le_mul_left' pow_le_kstar _).trans mul_kstar_le_kstar
#align pow_le_kstar pow_le_kstar
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -470,9 +470,9 @@ protected def kleeneAlgebra [KleeneAlgebra α] [Zero β] [One β] [Add β] [Mul
mul_kstar_le_kstar := fun a => by change f _ ≤ _; erw [mul, kstar]; exact mul_kstar_le_kstar
kstar_mul_le_kstar := fun a => by change f _ ≤ _; erw [mul, kstar]; exact kstar_mul_le_kstar
mul_kstar_le_self := fun a b (h : f _ ≤ _) => by change f _ ≤ _; erw [mul, kstar];
- erw [mul] at h ; exact mul_kstar_le_self h
+ erw [mul] at h; exact mul_kstar_le_self h
kstar_mul_le_self := fun a b (h : f _ ≤ _) => by change f _ ≤ _; erw [mul, kstar];
- erw [mul] at h ; exact kstar_mul_le_self h }
+ erw [mul] at h; exact kstar_mul_le_self h }
#align function.injective.kleene_algebra Function.Injective.kleeneAlgebra
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -185,17 +185,17 @@ theorem add_le (ha : a ≤ c) (hb : b ≤ c) : a + b ≤ c :=
#align add_le add_le
-/
-#print IdemSemiring.toCanonicallyOrderedAddMonoid /-
+#print IdemSemiring.toCanonicallyOrderedAddCommMonoid /-
-- See note [lower instance priority]
-instance (priority := 100) IdemSemiring.toCanonicallyOrderedAddMonoid :
- CanonicallyOrderedAddMonoid α :=
+instance (priority := 100) IdemSemiring.toCanonicallyOrderedAddCommMonoid :
+ CanonicallyOrderedAddCommMonoid α :=
{
‹IdemSemiring
α› with
add_le_add_left := fun a b hbc c => by simp_rw [add_eq_sup]; exact sup_le_sup_left hbc _
exists_add_of_le := fun a b h => ⟨b, h.add_eq_right.symm⟩
le_self_add := fun a b => add_eq_right_iff_le.1 <| by rw [← add_assoc, add_idem] }
-#align idem_semiring.to_canonically_ordered_add_monoid IdemSemiring.toCanonicallyOrderedAddMonoid
+#align idem_semiring.to_canonically_ordered_add_monoid IdemSemiring.toCanonicallyOrderedAddCommMonoid
-/
#print IdemSemiring.toCovariantClass_mul_le /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,10 +3,10 @@ Copyright (c) 2022 Siddhartha Prasad, Yaël Dillies. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Siddhartha Prasad, Yaël Dillies
-/
-import Mathbin.Algebra.Order.Ring.Canonical
-import Mathbin.Algebra.Ring.Pi
-import Mathbin.Algebra.Ring.Prod
-import Mathbin.Order.Hom.CompleteLattice
+import Algebra.Order.Ring.Canonical
+import Algebra.Ring.Pi
+import Algebra.Ring.Prod
+import Order.Hom.CompleteLattice
#align_import algebra.order.kleene from "leanprover-community/mathlib"@"ac34df03f74e6f797efd6991df2e3b7f7d8d33e0"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -168,10 +168,10 @@ theorem add_eq_right_iff_le : a + b = b ↔ a ≤ b := by simp
#align add_eq_right_iff_le add_eq_right_iff_le
-/
-alias add_eq_left_iff_le ↔ _ LE.le.add_eq_left
+alias ⟨_, LE.le.add_eq_left⟩ := add_eq_left_iff_le
#align has_le.le.add_eq_left LE.le.add_eq_left
-alias add_eq_right_iff_le ↔ _ LE.le.add_eq_right
+alias ⟨_, LE.le.add_eq_right⟩ := add_eq_right_iff_le
#align has_le.le.add_eq_right LE.le.add_eq_right
#print add_le_iff /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,17 +2,14 @@
Copyright (c) 2022 Siddhartha Prasad, Yaël Dillies. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Siddhartha Prasad, Yaël Dillies
-
-! This file was ported from Lean 3 source module algebra.order.kleene
-! leanprover-community/mathlib commit ac34df03f74e6f797efd6991df2e3b7f7d8d33e0
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Algebra.Order.Ring.Canonical
import Mathbin.Algebra.Ring.Pi
import Mathbin.Algebra.Ring.Prod
import Mathbin.Order.Hom.CompleteLattice
+#align_import algebra.order.kleene from "leanprover-community/mathlib"@"ac34df03f74e6f797efd6991df2e3b7f7d8d33e0"
+
/-!
# Kleene Algebras
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -90,7 +90,6 @@ class KStar (α : Type _) where
#align has_kstar KStar
-/
--- mathport name: «expr ∗»
scoped[Computability] postfix:1024 "∗" => KStar.kstar
#print KleeneAlgebra /-
@@ -118,6 +117,7 @@ instance (priority := 100) IdemSemiring.toOrderBot [IdemSemiring α] : OrderBot
#align idem_semiring.to_order_bot IdemSemiring.toOrderBot
-/
+#print IdemSemiring.ofSemiring /-
-- See note [reducible non-instances]
/-- Construct an idempotent semiring from an idempotent addition. -/
@[reducible]
@@ -135,18 +135,23 @@ def IdemSemiring.ofSemiring [Semiring α] (h : ∀ a : α, a + a = a) : IdemSemi
bot := 0
bot_le := zero_add }
#align idem_semiring.of_semiring IdemSemiring.ofSemiring
+-/
section IdemSemiring
variable [IdemSemiring α] {a b c : α}
+#print add_eq_sup /-
@[simp]
theorem add_eq_sup (a b : α) : a + b = a ⊔ b :=
IdemSemiring.add_eq_sup _ _
#align add_eq_sup add_eq_sup
+-/
+#print add_idem /-
theorem add_idem (a : α) : a + a = a := by simp
#align add_idem add_idem
+-/
#print nsmul_eq_self /-
theorem nsmul_eq_self : ∀ {n : ℕ} (hn : n ≠ 0) (a : α), n • a = a
@@ -156,11 +161,15 @@ theorem nsmul_eq_self : ∀ {n : ℕ} (hn : n ≠ 0) (a : α), n • a = a
#align nsmul_eq_self nsmul_eq_self
-/
+#print add_eq_left_iff_le /-
theorem add_eq_left_iff_le : a + b = a ↔ b ≤ a := by simp
#align add_eq_left_iff_le add_eq_left_iff_le
+-/
+#print add_eq_right_iff_le /-
theorem add_eq_right_iff_le : a + b = b ↔ a ≤ b := by simp
#align add_eq_right_iff_le add_eq_right_iff_le
+-/
alias add_eq_left_iff_le ↔ _ LE.le.add_eq_left
#align has_le.le.add_eq_left LE.le.add_eq_left
@@ -168,12 +177,16 @@ alias add_eq_left_iff_le ↔ _ LE.le.add_eq_left
alias add_eq_right_iff_le ↔ _ LE.le.add_eq_right
#align has_le.le.add_eq_right LE.le.add_eq_right
+#print add_le_iff /-
theorem add_le_iff : a + b ≤ c ↔ a ≤ c ∧ b ≤ c := by simp
#align add_le_iff add_le_iff
+-/
+#print add_le /-
theorem add_le (ha : a ≤ c) (hb : b ≤ c) : a + b ≤ c :=
add_le_iff.2 ⟨ha, hb⟩
#align add_le add_le
+-/
#print IdemSemiring.toCanonicallyOrderedAddMonoid /-
-- See note [lower instance priority]
@@ -188,17 +201,21 @@ instance (priority := 100) IdemSemiring.toCanonicallyOrderedAddMonoid :
#align idem_semiring.to_canonically_ordered_add_monoid IdemSemiring.toCanonicallyOrderedAddMonoid
-/
+#print IdemSemiring.toCovariantClass_mul_le /-
-- See note [lower instance priority]
instance (priority := 100) IdemSemiring.toCovariantClass_mul_le :
CovariantClass α α (· * ·) (· ≤ ·) :=
⟨fun a b c hbc => add_eq_left_iff_le.1 <| by rw [← mul_add, hbc.add_eq_left]⟩
#align idem_semiring.to_covariant_class_mul_le IdemSemiring.toCovariantClass_mul_le
+-/
+#print IdemSemiring.toCovariantClass_swap_mul_le /-
-- See note [lower instance priority]
instance (priority := 100) IdemSemiring.toCovariantClass_swap_mul_le :
CovariantClass α α (swap (· * ·)) (· ≤ ·) :=
⟨fun a b c hbc => add_eq_left_iff_le.1 <| by rw [← add_mul, hbc.add_eq_left]⟩
#align idem_semiring.to_covariant_class_swap_mul_le IdemSemiring.toCovariantClass_swap_mul_le
+-/
end IdemSemiring
@@ -206,88 +223,124 @@ section KleeneAlgebra
variable [KleeneAlgebra α] {a b c : α}
+#print one_le_kstar /-
@[simp]
theorem one_le_kstar : 1 ≤ a∗ :=
KleeneAlgebra.one_le_kstar _
#align one_le_kstar one_le_kstar
+-/
+#print mul_kstar_le_kstar /-
theorem mul_kstar_le_kstar : a * a∗ ≤ a∗ :=
KleeneAlgebra.mul_kstar_le_kstar _
#align mul_kstar_le_kstar mul_kstar_le_kstar
+-/
+#print kstar_mul_le_kstar /-
theorem kstar_mul_le_kstar : a∗ * a ≤ a∗ :=
KleeneAlgebra.kstar_mul_le_kstar _
#align kstar_mul_le_kstar kstar_mul_le_kstar
+-/
+#print mul_kstar_le_self /-
theorem mul_kstar_le_self : b * a ≤ b → b * a∗ ≤ b :=
KleeneAlgebra.mul_kstar_le_self _ _
#align mul_kstar_le_self mul_kstar_le_self
+-/
+#print kstar_mul_le_self /-
theorem kstar_mul_le_self : a * b ≤ b → a∗ * b ≤ b :=
KleeneAlgebra.kstar_mul_le_self _ _
#align kstar_mul_le_self kstar_mul_le_self
+-/
+#print mul_kstar_le /-
theorem mul_kstar_le (hb : b ≤ c) (ha : c * a ≤ c) : b * a∗ ≤ c :=
(mul_le_mul_right' hb _).trans <| mul_kstar_le_self ha
#align mul_kstar_le mul_kstar_le
+-/
+#print kstar_mul_le /-
theorem kstar_mul_le (hb : b ≤ c) (ha : a * c ≤ c) : a∗ * b ≤ c :=
(mul_le_mul_left' hb _).trans <| kstar_mul_le_self ha
#align kstar_mul_le kstar_mul_le
+-/
+#print kstar_le_of_mul_le_left /-
theorem kstar_le_of_mul_le_left (hb : 1 ≤ b) : b * a ≤ b → a∗ ≤ b := by simpa using mul_kstar_le hb
#align kstar_le_of_mul_le_left kstar_le_of_mul_le_left
+-/
+#print kstar_le_of_mul_le_right /-
theorem kstar_le_of_mul_le_right (hb : 1 ≤ b) : a * b ≤ b → a∗ ≤ b := by simpa using kstar_mul_le hb
#align kstar_le_of_mul_le_right kstar_le_of_mul_le_right
+-/
+#print le_kstar /-
@[simp]
theorem le_kstar : a ≤ a∗ :=
le_trans (le_mul_of_one_le_left' one_le_kstar) kstar_mul_le_kstar
#align le_kstar le_kstar
+-/
+#print kstar_mono /-
@[mono]
theorem kstar_mono : Monotone (KStar.kstar : α → α) := fun a b h =>
kstar_le_of_mul_le_left one_le_kstar <| kstar_mul_le (h.trans le_kstar) <| mul_kstar_le_kstar
#align kstar_mono kstar_mono
+-/
+#print kstar_eq_one /-
@[simp]
theorem kstar_eq_one : a∗ = 1 ↔ a ≤ 1 :=
⟨le_kstar.trans_eq, fun h =>
one_le_kstar.antisymm' <| kstar_le_of_mul_le_left le_rfl <| by rwa [one_mul]⟩
#align kstar_eq_one kstar_eq_one
+-/
+#print kstar_zero /-
@[simp]
theorem kstar_zero : (0 : α)∗ = 1 :=
kstar_eq_one.2 zero_le_one
#align kstar_zero kstar_zero
+-/
+#print kstar_one /-
@[simp]
theorem kstar_one : (1 : α)∗ = 1 :=
kstar_eq_one.2 le_rfl
#align kstar_one kstar_one
+-/
+#print kstar_mul_kstar /-
@[simp]
theorem kstar_mul_kstar (a : α) : a∗ * a∗ = a∗ :=
(mul_kstar_le le_rfl <| kstar_mul_le_kstar).antisymm <| le_mul_of_one_le_left' one_le_kstar
#align kstar_mul_kstar kstar_mul_kstar
+-/
+#print kstar_eq_self /-
@[simp]
theorem kstar_eq_self : a∗ = a ↔ a * a = a ∧ 1 ≤ a :=
⟨fun h => ⟨by rw [← h, kstar_mul_kstar], one_le_kstar.trans_eq h⟩, fun h =>
(kstar_le_of_mul_le_left h.2 h.1.le).antisymm le_kstar⟩
#align kstar_eq_self kstar_eq_self
+-/
+#print kstar_idem /-
@[simp]
theorem kstar_idem (a : α) : a∗∗ = a∗ :=
kstar_eq_self.2 ⟨kstar_mul_kstar _, one_le_kstar⟩
#align kstar_idem kstar_idem
+-/
+#print pow_le_kstar /-
@[simp]
theorem pow_le_kstar : ∀ {n : ℕ}, a ^ n ≤ a∗
| 0 => (pow_zero _).trans_le one_le_kstar
| n + 1 => by rw [pow_succ]; exact (mul_le_mul_left' pow_le_kstar _).trans mul_kstar_le_kstar
#align pow_le_kstar pow_le_kstar
+-/
end KleeneAlgebra
@@ -311,19 +364,25 @@ instance : KleeneAlgebra (α × β) :=
mul_kstar_le_self := fun a b => And.imp mul_kstar_le_self mul_kstar_le_self
kstar_mul_le_self := fun a b => And.imp kstar_mul_le_self kstar_mul_le_self }
+#print Prod.kstar_def /-
theorem kstar_def (a : α × β) : a∗ = (a.1∗, a.2∗) :=
rfl
#align prod.kstar_def Prod.kstar_def
+-/
+#print Prod.fst_kstar /-
@[simp]
theorem fst_kstar (a : α × β) : a∗.1 = a.1∗ :=
rfl
#align prod.fst_kstar Prod.fst_kstar
+-/
+#print Prod.snd_kstar /-
@[simp]
theorem snd_kstar (a : α × β) : a∗.2 = a.2∗ :=
rfl
#align prod.snd_kstar Prod.snd_kstar
+-/
end Prod
@@ -347,19 +406,24 @@ instance : KleeneAlgebra (∀ i, π i) :=
mul_kstar_le_self := fun a b h i => mul_kstar_le_self <| h _
kstar_mul_le_self := fun a b h i => kstar_mul_le_self <| h _ }
+#print Pi.kstar_def /-
theorem kstar_def (a : ∀ i, π i) : a∗ = fun i => (a i)∗ :=
rfl
#align pi.kstar_def Pi.kstar_def
+-/
+#print Pi.kstar_apply /-
@[simp]
theorem kstar_apply (a : ∀ i, π i) (i : ι) : a∗ i = (a i)∗ :=
rfl
#align pi.kstar_apply Pi.kstar_apply
+-/
end Pi
namespace Function.Injective
+#print Function.Injective.idemSemiring /-
-- See note [reducible non-instances]
/-- Pullback an `idem_semiring` instance along an injective function. -/
@[reducible]
@@ -375,7 +439,9 @@ protected def idemSemiring [IdemSemiring α] [Zero β] [One β] [Add β] [Mul β
bot := ⊥
bot_le := fun a => bot.trans_le <| @bot_le _ _ _ <| f a }
#align function.injective.idem_semiring Function.Injective.idemSemiring
+-/
+#print Function.Injective.idemCommSemiring /-
-- See note [reducible non-instances]
/-- Pullback an `idem_comm_semiring` instance along an injective function. -/
@[reducible]
@@ -388,7 +454,9 @@ protected def idemCommSemiring [IdemCommSemiring α] [Zero β] [One β] [Add β]
{ hf.CommSemiring f zero one add mul nsmul npow nat_cast,
hf.IdemSemiring f zero one add mul nsmul npow nat_cast sup bot with }
#align function.injective.idem_comm_semiring Function.Injective.idemCommSemiring
+-/
+#print Function.Injective.kleeneAlgebra /-
-- See note [reducible non-instances]
/-- Pullback an `idem_comm_semiring` instance along an injective function. -/
@[reducible]
@@ -409,6 +477,7 @@ protected def kleeneAlgebra [KleeneAlgebra α] [Zero β] [One β] [Add β] [Mul
kstar_mul_le_self := fun a b (h : f _ ≤ _) => by change f _ ≤ _; erw [mul, kstar];
erw [mul] at h ; exact kstar_mul_le_self h }
#align function.injective.kleene_algebra Function.Injective.kleeneAlgebra
+-/
end Function.Injective
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -68,7 +68,7 @@ variable {α β ι : Type _} {π : ι → Type _}
@[protect_proj]
class IdemSemiring (α : Type u) extends Semiring α, SemilatticeSup α where
sup := (· + ·)
- add_eq_sup : ∀ a b : α, a + b = a ⊔ b := by intros ; rfl
+ add_eq_sup : ∀ a b : α, a + b = a ⊔ b := by intros; rfl
bot : α := 0
bot_le : ∀ a, bot ≤ a
#align idem_semiring IdemSemiring
@@ -405,9 +405,9 @@ protected def kleeneAlgebra [KleeneAlgebra α] [Zero β] [One β] [Add β] [Mul
mul_kstar_le_kstar := fun a => by change f _ ≤ _; erw [mul, kstar]; exact mul_kstar_le_kstar
kstar_mul_le_kstar := fun a => by change f _ ≤ _; erw [mul, kstar]; exact kstar_mul_le_kstar
mul_kstar_le_self := fun a b (h : f _ ≤ _) => by change f _ ≤ _; erw [mul, kstar];
- erw [mul] at h; exact mul_kstar_le_self h
+ erw [mul] at h ; exact mul_kstar_le_self h
kstar_mul_le_self := fun a b (h : f _ ≤ _) => by change f _ ≤ _; erw [mul, kstar];
- erw [mul] at h; exact kstar_mul_le_self h }
+ erw [mul] at h ; exact kstar_mul_le_self h }
#align function.injective.kleene_algebra Function.Injective.kleeneAlgebra
end Function.Injective
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -111,10 +111,12 @@ class KleeneAlgebra (α : Type _) extends IdemSemiring α, KStar α where
#align kleene_algebra KleeneAlgebra
-/
+#print IdemSemiring.toOrderBot /-
-- See note [lower instance priority]
instance (priority := 100) IdemSemiring.toOrderBot [IdemSemiring α] : OrderBot α :=
{ ‹IdemSemiring α› with }
#align idem_semiring.to_order_bot IdemSemiring.toOrderBot
+-/
-- See note [reducible non-instances]
/-- Construct an idempotent semiring from an idempotent addition. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -111,23 +111,11 @@ class KleeneAlgebra (α : Type _) extends IdemSemiring α, KStar α where
#align kleene_algebra KleeneAlgebra
-/
-/- warning: idem_semiring.to_order_bot -> IdemSemiring.toOrderBot is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1))))
-Case conversion may be inaccurate. Consider using '#align idem_semiring.to_order_bot IdemSemiring.toOrderBotₓ'. -/
-- See note [lower instance priority]
instance (priority := 100) IdemSemiring.toOrderBot [IdemSemiring α] : OrderBot α :=
{ ‹IdemSemiring α› with }
#align idem_semiring.to_order_bot IdemSemiring.toOrderBot
-/- warning: idem_semiring.of_semiring -> IdemSemiring.ofSemiring is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : Semiring.{u1} α], (forall (a : α), Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_1))))) a a) a) -> (IdemSemiring.{u1} α)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : Semiring.{u1} α], (forall (a : α), Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α _inst_1))))) a a) a) -> (IdemSemiring.{u1} α)
-Case conversion may be inaccurate. Consider using '#align idem_semiring.of_semiring IdemSemiring.ofSemiringₓ'. -/
-- See note [reducible non-instances]
/-- Construct an idempotent semiring from an idempotent addition. -/
@[reducible]
@@ -150,23 +138,11 @@ section IdemSemiring
variable [IdemSemiring α] {a b c : α}
-/- warning: add_eq_sup -> add_eq_sup is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] (a : α) (b : α), Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)) a b)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] (a : α) (b : α), Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)) a b)
-Case conversion may be inaccurate. Consider using '#align add_eq_sup add_eq_supₓ'. -/
@[simp]
theorem add_eq_sup (a b : α) : a + b = a ⊔ b :=
IdemSemiring.add_eq_sup _ _
#align add_eq_sup add_eq_sup
-/- warning: add_idem -> add_idem is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] (a : α), Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a a) a
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] (a : α), Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a a) a
-Case conversion may be inaccurate. Consider using '#align add_idem add_idemₓ'. -/
theorem add_idem (a : α) : a + a = a := by simp
#align add_idem add_idem
@@ -178,57 +154,21 @@ theorem nsmul_eq_self : ∀ {n : ℕ} (hn : n ≠ 0) (a : α), n • a = a
#align nsmul_eq_self nsmul_eq_self
-/
-/- warning: add_eq_left_iff_le -> add_eq_left_iff_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, Iff (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) a) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b a)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, Iff (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) a) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b a)
-Case conversion may be inaccurate. Consider using '#align add_eq_left_iff_le add_eq_left_iff_leₓ'. -/
theorem add_eq_left_iff_le : a + b = a ↔ b ≤ a := by simp
#align add_eq_left_iff_le add_eq_left_iff_le
-/- warning: add_eq_right_iff_le -> add_eq_right_iff_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, Iff (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) b) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a b)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, Iff (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) b) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a b)
-Case conversion may be inaccurate. Consider using '#align add_eq_right_iff_le add_eq_right_iff_leₓ'. -/
theorem add_eq_right_iff_le : a + b = b ↔ a ≤ b := by simp
#align add_eq_right_iff_le add_eq_right_iff_le
-/- warning: has_le.le.add_eq_left -> LE.le.add_eq_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b a) -> (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) a)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b a) -> (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) a)
-Case conversion may be inaccurate. Consider using '#align has_le.le.add_eq_left LE.le.add_eq_leftₓ'. -/
alias add_eq_left_iff_le ↔ _ LE.le.add_eq_left
#align has_le.le.add_eq_left LE.le.add_eq_left
-/- warning: has_le.le.add_eq_right -> LE.le.add_eq_right is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a b) -> (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) b)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a b) -> (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) b)
-Case conversion may be inaccurate. Consider using '#align has_le.le.add_eq_right LE.le.add_eq_rightₓ'. -/
alias add_eq_right_iff_le ↔ _ LE.le.add_eq_right
#align has_le.le.add_eq_right LE.le.add_eq_right
-/- warning: add_le_iff -> add_le_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α} {c : α}, Iff (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) c) (And (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a c) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b c))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α} {c : α}, Iff (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) c) (And (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a c) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b c))
-Case conversion may be inaccurate. Consider using '#align add_le_iff add_le_iffₓ'. -/
theorem add_le_iff : a + b ≤ c ↔ a ≤ c ∧ b ≤ c := by simp
#align add_le_iff add_le_iff
-/- warning: add_le -> add_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α} {c : α}, (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a c) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b c) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) c)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α} {c : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) c)
-Case conversion may be inaccurate. Consider using '#align add_le add_leₓ'. -/
theorem add_le (ha : a ≤ c) (hb : b ≤ c) : a + b ≤ c :=
add_le_iff.2 ⟨ha, hb⟩
#align add_le add_le
@@ -246,24 +186,12 @@ instance (priority := 100) IdemSemiring.toCanonicallyOrderedAddMonoid :
#align idem_semiring.to_canonically_ordered_add_monoid IdemSemiring.toCanonicallyOrderedAddMonoid
-/
-/- warning: idem_semiring.to_covariant_class_mul_le -> IdemSemiring.toCovariantClass_mul_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))))) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1699 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1701 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1699 x._@.Mathlib.Algebra.Order.Kleene._hyg.1701) (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1714 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1716 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1714 x._@.Mathlib.Algebra.Order.Kleene._hyg.1716)
-Case conversion may be inaccurate. Consider using '#align idem_semiring.to_covariant_class_mul_le IdemSemiring.toCovariantClass_mul_leₓ'. -/
-- See note [lower instance priority]
instance (priority := 100) IdemSemiring.toCovariantClass_mul_le :
CovariantClass α α (· * ·) (· ≤ ·) :=
⟨fun a b c hbc => add_eq_left_iff_le.1 <| by rw [← mul_add, hbc.add_eq_left]⟩
#align idem_semiring.to_covariant_class_mul_le IdemSemiring.toCovariantClass_mul_le
-/- warning: idem_semiring.to_covariant_class_swap_mul_le -> IdemSemiring.toCovariantClass_swap_mul_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (Function.swap.{succ u1, succ u1, succ u1} α α (fun (ᾰ : α) (ᾰ : α) => α) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))))) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (Function.swap.{succ u1, succ u1, succ u1} α α (fun (ᾰ : α) (ᾰ : α) => α) (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1794 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1796 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1794 x._@.Mathlib.Algebra.Order.Kleene._hyg.1796)) (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1809 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1811 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1809 x._@.Mathlib.Algebra.Order.Kleene._hyg.1811)
-Case conversion may be inaccurate. Consider using '#align idem_semiring.to_covariant_class_swap_mul_le IdemSemiring.toCovariantClass_swap_mul_leₓ'. -/
-- See note [lower instance priority]
instance (priority := 100) IdemSemiring.toCovariantClass_swap_mul_le :
CovariantClass α α (swap (· * ·)) (· ≤ ·) :=
@@ -276,191 +204,83 @@ section KleeneAlgebra
variable [KleeneAlgebra α] {a b c : α}
-/- warning: one_le_kstar -> one_le_kstar is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)
-Case conversion may be inaccurate. Consider using '#align one_le_kstar one_le_kstarₓ'. -/
@[simp]
theorem one_le_kstar : 1 ≤ a∗ :=
KleeneAlgebra.one_le_kstar _
#align one_le_kstar one_le_kstar
-/- warning: mul_kstar_le_kstar -> mul_kstar_le_kstar is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) a (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)
-Case conversion may be inaccurate. Consider using '#align mul_kstar_le_kstar mul_kstar_le_kstarₓ'. -/
theorem mul_kstar_le_kstar : a * a∗ ≤ a∗ :=
KleeneAlgebra.mul_kstar_le_kstar _
#align mul_kstar_le_kstar mul_kstar_le_kstar
-/- warning: kstar_mul_le_kstar -> kstar_mul_le_kstar is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) a) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a) a) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)
-Case conversion may be inaccurate. Consider using '#align kstar_mul_le_kstar kstar_mul_le_kstarₓ'. -/
theorem kstar_mul_le_kstar : a∗ * a ≤ a∗ :=
KleeneAlgebra.kstar_mul_le_kstar _
#align kstar_mul_le_kstar kstar_mul_le_kstar
-/- warning: mul_kstar_le_self -> mul_kstar_le_self is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) b a) b) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) b (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)) b)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) b a) b) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) b (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)) b)
-Case conversion may be inaccurate. Consider using '#align mul_kstar_le_self mul_kstar_le_selfₓ'. -/
theorem mul_kstar_le_self : b * a ≤ b → b * a∗ ≤ b :=
KleeneAlgebra.mul_kstar_le_self _ _
#align mul_kstar_le_self mul_kstar_le_self
-/- warning: kstar_mul_le_self -> kstar_mul_le_self is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) a b) b) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) b) b)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a b) b) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a) b) b)
-Case conversion may be inaccurate. Consider using '#align kstar_mul_le_self kstar_mul_le_selfₓ'. -/
theorem kstar_mul_le_self : a * b ≤ b → a∗ * b ≤ b :=
KleeneAlgebra.kstar_mul_le_self _ _
#align kstar_mul_le_self kstar_mul_le_self
-/- warning: mul_kstar_le -> mul_kstar_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α} {c : α}, (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) b c) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) c a) c) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) b (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)) c)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α} {c : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) b c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) c a) c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) b (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)) c)
-Case conversion may be inaccurate. Consider using '#align mul_kstar_le mul_kstar_leₓ'. -/
theorem mul_kstar_le (hb : b ≤ c) (ha : c * a ≤ c) : b * a∗ ≤ c :=
(mul_le_mul_right' hb _).trans <| mul_kstar_le_self ha
#align mul_kstar_le mul_kstar_le
-/- warning: kstar_mul_le -> kstar_mul_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α} {c : α}, (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) b c) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) a c) c) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) b) c)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α} {c : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) b c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a c) c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a) b) c)
-Case conversion may be inaccurate. Consider using '#align kstar_mul_le kstar_mul_leₓ'. -/
theorem kstar_mul_le (hb : b ≤ c) (ha : a * c ≤ c) : a∗ * b ≤ c :=
(mul_le_mul_left' hb _).trans <| kstar_mul_le_self ha
#align kstar_mul_le kstar_mul_le
-/- warning: kstar_le_of_mul_le_left -> kstar_le_of_mul_le_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))))) b) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) b a) b) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) b)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))) b) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) b a) b) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a) b)
-Case conversion may be inaccurate. Consider using '#align kstar_le_of_mul_le_left kstar_le_of_mul_le_leftₓ'. -/
theorem kstar_le_of_mul_le_left (hb : 1 ≤ b) : b * a ≤ b → a∗ ≤ b := by simpa using mul_kstar_le hb
#align kstar_le_of_mul_le_left kstar_le_of_mul_le_left
-/- warning: kstar_le_of_mul_le_right -> kstar_le_of_mul_le_right is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))))) b) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) a b) b) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) b)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))) b) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a b) b) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a) b)
-Case conversion may be inaccurate. Consider using '#align kstar_le_of_mul_le_right kstar_le_of_mul_le_rightₓ'. -/
theorem kstar_le_of_mul_le_right (hb : 1 ≤ b) : a * b ≤ b → a∗ ≤ b := by simpa using kstar_mul_le hb
#align kstar_le_of_mul_le_right kstar_le_of_mul_le_right
-/- warning: le_kstar -> le_kstar is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)
-Case conversion may be inaccurate. Consider using '#align le_kstar le_kstarₓ'. -/
@[simp]
theorem le_kstar : a ≤ a∗ :=
le_trans (le_mul_of_one_le_left' one_le_kstar) kstar_mul_le_kstar
#align le_kstar le_kstar
-/- warning: kstar_mono -> kstar_mono is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α], Monotone.{u1, u1} α α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))) (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α], Monotone.{u1, u1} α α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))) (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1))
-Case conversion may be inaccurate. Consider using '#align kstar_mono kstar_monoₓ'. -/
@[mono]
theorem kstar_mono : Monotone (KStar.kstar : α → α) := fun a b h =>
kstar_le_of_mul_le_left one_le_kstar <| kstar_mul_le (h.trans le_kstar) <| mul_kstar_le_kstar
#align kstar_mono kstar_mono
-/- warning: kstar_eq_one -> kstar_eq_one is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, Iff (Eq.{succ u1} α (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))))))) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, Iff (Eq.{succ u1} α (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))
-Case conversion may be inaccurate. Consider using '#align kstar_eq_one kstar_eq_oneₓ'. -/
@[simp]
theorem kstar_eq_one : a∗ = 1 ↔ a ≤ 1 :=
⟨le_kstar.trans_eq, fun h =>
one_le_kstar.antisymm' <| kstar_le_of_mul_le_left le_rfl <| by rwa [one_mul]⟩
#align kstar_eq_one kstar_eq_one
-/- warning: kstar_zero -> kstar_zero is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α], Eq.{succ u1} α (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))))))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α], Eq.{succ u1} α (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align kstar_zero kstar_zeroₓ'. -/
@[simp]
theorem kstar_zero : (0 : α)∗ = 1 :=
kstar_eq_one.2 zero_le_one
#align kstar_zero kstar_zero
-/- warning: kstar_one -> kstar_one is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α], Eq.{succ u1} α (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))))))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α], Eq.{succ u1} α (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align kstar_one kstar_oneₓ'. -/
@[simp]
theorem kstar_one : (1 : α)∗ = 1 :=
kstar_eq_one.2 le_rfl
#align kstar_one kstar_one
-/- warning: kstar_mul_kstar -> kstar_mul_kstar is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] (a : α), Eq.{succ u1} α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] (a : α), Eq.{succ u1} α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)
-Case conversion may be inaccurate. Consider using '#align kstar_mul_kstar kstar_mul_kstarₓ'. -/
@[simp]
theorem kstar_mul_kstar (a : α) : a∗ * a∗ = a∗ :=
(mul_kstar_le le_rfl <| kstar_mul_le_kstar).antisymm <| le_mul_of_one_le_left' one_le_kstar
#align kstar_mul_kstar kstar_mul_kstar
-/- warning: kstar_eq_self -> kstar_eq_self is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, Iff (Eq.{succ u1} α (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) a) (And (Eq.{succ u1} α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) a a) a) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))))) a))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, Iff (Eq.{succ u1} α (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a) a) (And (Eq.{succ u1} α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a a) a) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))) a))
-Case conversion may be inaccurate. Consider using '#align kstar_eq_self kstar_eq_selfₓ'. -/
@[simp]
theorem kstar_eq_self : a∗ = a ↔ a * a = a ∧ 1 ≤ a :=
⟨fun h => ⟨by rw [← h, kstar_mul_kstar], one_le_kstar.trans_eq h⟩, fun h =>
(kstar_le_of_mul_le_left h.2 h.1.le).antisymm le_kstar⟩
#align kstar_eq_self kstar_eq_self
-/- warning: kstar_idem -> kstar_idem is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] (a : α), Eq.{succ u1} α (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] (a : α), Eq.{succ u1} α (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)
-Case conversion may be inaccurate. Consider using '#align kstar_idem kstar_idemₓ'. -/
@[simp]
theorem kstar_idem (a : α) : a∗∗ = a∗ :=
kstar_eq_self.2 ⟨kstar_mul_kstar _, one_le_kstar⟩
#align kstar_idem kstar_idem
-/- warning: pow_le_kstar -> pow_le_kstar is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {n : Nat}, LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a n) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {n : Nat}, LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a n) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)
-Case conversion may be inaccurate. Consider using '#align pow_le_kstar pow_le_kstarₓ'. -/
@[simp]
theorem pow_le_kstar : ∀ {n : ℕ}, a ^ n ≤ a∗
| 0 => (pow_zero _).trans_le one_le_kstar
@@ -489,33 +309,15 @@ instance : KleeneAlgebra (α × β) :=
mul_kstar_le_self := fun a b => And.imp mul_kstar_le_self mul_kstar_le_self
kstar_mul_le_self := fun a b => And.imp kstar_mul_le_self kstar_mul_le_self }
-/- warning: prod.kstar_def -> Prod.kstar_def is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : KleeneAlgebra.{u1} α] [_inst_2 : KleeneAlgebra.{u2} β] (a : Prod.{u1, u2} α β), Eq.{succ (max u1 u2)} (Prod.{u1, u2} α β) (KStar.kstar.{max u1 u2} (Prod.{u1, u2} α β) (KleeneAlgebra.toHasKstar.{max u1 u2} (Prod.{u1, u2} α β) (Prod.kleeneAlgebra.{u1, u2} α β _inst_1 _inst_2)) a) (Prod.mk.{u1, u2} α β (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) (Prod.fst.{u1, u2} α β a)) (KStar.kstar.{u2} β (KleeneAlgebra.toHasKstar.{u2} β _inst_2) (Prod.snd.{u1, u2} α β a)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : KleeneAlgebra.{u2} α] [_inst_2 : KleeneAlgebra.{u1} β] (a : Prod.{u2, u1} α β), Eq.{max (succ u2) (succ u1)} (Prod.{u2, u1} α β) (KStar.kstar.{max u2 u1} (Prod.{u2, u1} α β) (KleeneAlgebra.toKStar.{max u2 u1} (Prod.{u2, u1} α β) (Prod.instKleeneAlgebraProd.{u2, u1} α β _inst_1 _inst_2)) a) (Prod.mk.{u2, u1} α β (KStar.kstar.{u2} α (KleeneAlgebra.toKStar.{u2} α _inst_1) (Prod.fst.{u2, u1} α β a)) (KStar.kstar.{u1} β (KleeneAlgebra.toKStar.{u1} β _inst_2) (Prod.snd.{u2, u1} α β a)))
-Case conversion may be inaccurate. Consider using '#align prod.kstar_def Prod.kstar_defₓ'. -/
theorem kstar_def (a : α × β) : a∗ = (a.1∗, a.2∗) :=
rfl
#align prod.kstar_def Prod.kstar_def
-/- warning: prod.fst_kstar -> Prod.fst_kstar is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : KleeneAlgebra.{u1} α] [_inst_2 : KleeneAlgebra.{u2} β] (a : Prod.{u1, u2} α β), Eq.{succ u1} α (Prod.fst.{u1, u2} α β (KStar.kstar.{max u1 u2} (Prod.{u1, u2} α β) (KleeneAlgebra.toHasKstar.{max u1 u2} (Prod.{u1, u2} α β) (Prod.kleeneAlgebra.{u1, u2} α β _inst_1 _inst_2)) a)) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) (Prod.fst.{u1, u2} α β a))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : KleeneAlgebra.{u2} α] [_inst_2 : KleeneAlgebra.{u1} β] (a : Prod.{u2, u1} α β), Eq.{succ u2} α (Prod.fst.{u2, u1} α β (KStar.kstar.{max u2 u1} (Prod.{u2, u1} α β) (KleeneAlgebra.toKStar.{max u2 u1} (Prod.{u2, u1} α β) (Prod.instKleeneAlgebraProd.{u2, u1} α β _inst_1 _inst_2)) a)) (KStar.kstar.{u2} α (KleeneAlgebra.toKStar.{u2} α _inst_1) (Prod.fst.{u2, u1} α β a))
-Case conversion may be inaccurate. Consider using '#align prod.fst_kstar Prod.fst_kstarₓ'. -/
@[simp]
theorem fst_kstar (a : α × β) : a∗.1 = a.1∗ :=
rfl
#align prod.fst_kstar Prod.fst_kstar
-/- warning: prod.snd_kstar -> Prod.snd_kstar is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : KleeneAlgebra.{u1} α] [_inst_2 : KleeneAlgebra.{u2} β] (a : Prod.{u1, u2} α β), Eq.{succ u2} β (Prod.snd.{u1, u2} α β (KStar.kstar.{max u1 u2} (Prod.{u1, u2} α β) (KleeneAlgebra.toHasKstar.{max u1 u2} (Prod.{u1, u2} α β) (Prod.kleeneAlgebra.{u1, u2} α β _inst_1 _inst_2)) a)) (KStar.kstar.{u2} β (KleeneAlgebra.toHasKstar.{u2} β _inst_2) (Prod.snd.{u1, u2} α β a))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : KleeneAlgebra.{u2} α] [_inst_2 : KleeneAlgebra.{u1} β] (a : Prod.{u2, u1} α β), Eq.{succ u1} β (Prod.snd.{u2, u1} α β (KStar.kstar.{max u2 u1} (Prod.{u2, u1} α β) (KleeneAlgebra.toKStar.{max u2 u1} (Prod.{u2, u1} α β) (Prod.instKleeneAlgebraProd.{u2, u1} α β _inst_1 _inst_2)) a)) (KStar.kstar.{u1} β (KleeneAlgebra.toKStar.{u1} β _inst_2) (Prod.snd.{u2, u1} α β a))
-Case conversion may be inaccurate. Consider using '#align prod.snd_kstar Prod.snd_kstarₓ'. -/
@[simp]
theorem snd_kstar (a : α × β) : a∗.2 = a.2∗ :=
rfl
@@ -543,22 +345,10 @@ instance : KleeneAlgebra (∀ i, π i) :=
mul_kstar_le_self := fun a b h i => mul_kstar_le_self <| h _
kstar_mul_le_self := fun a b h i => kstar_mul_le_self <| h _ }
-/- warning: pi.kstar_def -> Pi.kstar_def is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {π : ι -> Type.{u2}} [_inst_1 : forall (i : ι), KleeneAlgebra.{u2} (π i)] (a : forall (i : ι), π i), Eq.{succ (max u1 u2)} (forall (i : ι), π i) (KStar.kstar.{max u1 u2} (forall (i : ι), π i) (KleeneAlgebra.toHasKstar.{max u1 u2} (forall (i : ι), π i) (Pi.kleeneAlgebra.{u1, u2} ι (fun (i : ι) => π i) (fun (i : ι) => _inst_1 i))) a) (fun (i : ι) => KStar.kstar.{u2} (π i) (KleeneAlgebra.toHasKstar.{u2} (π i) (_inst_1 i)) (a i))
-but is expected to have type
- forall {ι : Type.{u2}} {π : ι -> Type.{u1}} [_inst_1 : forall (i : ι), KleeneAlgebra.{u1} (π i)] (a : forall (i : ι), π i), Eq.{max (succ u2) (succ u1)} (forall (i : ι), π i) (KStar.kstar.{max u2 u1} (forall (i : ι), π i) (KleeneAlgebra.toKStar.{max u2 u1} (forall (i : ι), π i) (Pi.instKleeneAlgebraForAll.{u2, u1} ι (fun (i : ι) => π i) (fun (i : ι) => _inst_1 i))) a) (fun (i : ι) => KStar.kstar.{u1} (π i) (KleeneAlgebra.toKStar.{u1} (π i) (_inst_1 i)) (a i))
-Case conversion may be inaccurate. Consider using '#align pi.kstar_def Pi.kstar_defₓ'. -/
theorem kstar_def (a : ∀ i, π i) : a∗ = fun i => (a i)∗ :=
rfl
#align pi.kstar_def Pi.kstar_def
-/- warning: pi.kstar_apply -> Pi.kstar_apply is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {π : ι -> Type.{u2}} [_inst_1 : forall (i : ι), KleeneAlgebra.{u2} (π i)] (a : forall (i : ι), π i) (i : ι), Eq.{succ u2} (π i) (KStar.kstar.{max u1 u2} (forall (i : ι), π i) (KleeneAlgebra.toHasKstar.{max u1 u2} (forall (i : ι), π i) (Pi.kleeneAlgebra.{u1, u2} ι (fun (i : ι) => π i) (fun (i : ι) => _inst_1 i))) a i) (KStar.kstar.{u2} (π i) (KleeneAlgebra.toHasKstar.{u2} (π i) (_inst_1 i)) (a i))
-but is expected to have type
- forall {ι : Type.{u1}} {π : ι -> Type.{u2}} [_inst_1 : forall (i : ι), KleeneAlgebra.{u2} (π i)] (a : forall (i : ι), π i) (i : ι), Eq.{succ u2} (π i) (KStar.kstar.{max u1 u2} (forall (i : ι), π i) (KleeneAlgebra.toKStar.{max u1 u2} (forall (i : ι), π i) (Pi.instKleeneAlgebraForAll.{u1, u2} ι (fun (i : ι) => π i) (fun (i : ι) => _inst_1 i))) a i) (KStar.kstar.{u2} (π i) (KleeneAlgebra.toKStar.{u2} (π i) (_inst_1 i)) (a i))
-Case conversion may be inaccurate. Consider using '#align pi.kstar_apply Pi.kstar_applyₓ'. -/
@[simp]
theorem kstar_apply (a : ∀ i, π i) (i : ι) : a∗ i = (a i)∗ :=
rfl
@@ -568,9 +358,6 @@ end Pi
namespace Function.Injective
-/- warning: function.injective.idem_semiring -> Function.Injective.idemSemiring is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align function.injective.idem_semiring Function.Injective.idemSemiringₓ'. -/
-- See note [reducible non-instances]
/-- Pullback an `idem_semiring` instance along an injective function. -/
@[reducible]
@@ -587,9 +374,6 @@ protected def idemSemiring [IdemSemiring α] [Zero β] [One β] [Add β] [Mul β
bot_le := fun a => bot.trans_le <| @bot_le _ _ _ <| f a }
#align function.injective.idem_semiring Function.Injective.idemSemiring
-/- warning: function.injective.idem_comm_semiring -> Function.Injective.idemCommSemiring is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align function.injective.idem_comm_semiring Function.Injective.idemCommSemiringₓ'. -/
-- See note [reducible non-instances]
/-- Pullback an `idem_comm_semiring` instance along an injective function. -/
@[reducible]
@@ -603,9 +387,6 @@ protected def idemCommSemiring [IdemCommSemiring α] [Zero β] [One β] [Add β]
hf.IdemSemiring f zero one add mul nsmul npow nat_cast sup bot with }
#align function.injective.idem_comm_semiring Function.Injective.idemCommSemiring
-/- warning: function.injective.kleene_algebra -> Function.Injective.kleeneAlgebra is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align function.injective.kleene_algebra Function.Injective.kleeneAlgebraₓ'. -/
-- See note [reducible non-instances]
/-- Pullback an `idem_comm_semiring` instance along an injective function. -/
@[reducible]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -68,9 +68,7 @@ variable {α β ι : Type _} {π : ι → Type _}
@[protect_proj]
class IdemSemiring (α : Type u) extends Semiring α, SemilatticeSup α where
sup := (· + ·)
- add_eq_sup : ∀ a b : α, a + b = a ⊔ b := by
- intros
- rfl
+ add_eq_sup : ∀ a b : α, a + b = a ⊔ b := by intros ; rfl
bot : α := 0
bot_le : ∀ a, bot ≤ a
#align idem_semiring IdemSemiring
@@ -137,21 +135,13 @@ def IdemSemiring.ofSemiring [Semiring α] (h : ∀ a : α, a + a = a) : IdemSemi
{ ‹Semiring α› with
le := fun a b => a + b = b
le_refl := h
- le_trans := fun a b c (hab : _ = _) (hbc : _ = _) =>
- by
- change _ = _
+ le_trans := fun a b c (hab : _ = _) (hbc : _ = _) => by change _ = _;
rw [← hbc, ← add_assoc, hab]
le_antisymm := fun a b (hab : _ = _) (hba : _ = _) => by rwa [← hba, add_comm]
sup := (· + ·)
- le_sup_left := fun a b => by
- change _ = _
- rw [← add_assoc, h]
- le_sup_right := fun a b => by
- change _ = _
- rw [add_comm, add_assoc, h]
- sup_le := fun a b c hab (hbc : _ = _) => by
- change _ = _
- rwa [add_assoc, hbc]
+ le_sup_left := fun a b => by change _ = _; rw [← add_assoc, h]
+ le_sup_right := fun a b => by change _ = _; rw [add_comm, add_assoc, h]
+ sup_le := fun a b c hab (hbc : _ = _) => by change _ = _; rwa [add_assoc, hbc]
bot := 0
bot_le := zero_add }
#align idem_semiring.of_semiring IdemSemiring.ofSemiring
@@ -250,9 +240,7 @@ instance (priority := 100) IdemSemiring.toCanonicallyOrderedAddMonoid :
{
‹IdemSemiring
α› with
- add_le_add_left := fun a b hbc c => by
- simp_rw [add_eq_sup]
- exact sup_le_sup_left hbc _
+ add_le_add_left := fun a b hbc c => by simp_rw [add_eq_sup]; exact sup_le_sup_left hbc _
exists_add_of_le := fun a b h => ⟨b, h.add_eq_right.symm⟩
le_self_add := fun a b => add_eq_right_iff_le.1 <| by rw [← add_assoc, add_idem] }
#align idem_semiring.to_canonically_ordered_add_monoid IdemSemiring.toCanonicallyOrderedAddMonoid
@@ -476,9 +464,7 @@ Case conversion may be inaccurate. Consider using '#align pow_le_kstar pow_le_ks
@[simp]
theorem pow_le_kstar : ∀ {n : ℕ}, a ^ n ≤ a∗
| 0 => (pow_zero _).trans_le one_le_kstar
- | n + 1 => by
- rw [pow_succ]
- exact (mul_le_mul_left' pow_le_kstar _).trans mul_kstar_le_kstar
+ | n + 1 => by rw [pow_succ]; exact (mul_le_mul_left' pow_le_kstar _).trans mul_kstar_le_kstar
#align pow_le_kstar pow_le_kstar
end KleeneAlgebra
@@ -632,30 +618,13 @@ protected def kleeneAlgebra [KleeneAlgebra α] [Zero β] [One β] [Add β] [Mul
{ hf.IdemSemiring f zero one add mul nsmul npow nat_cast sup bot,
‹KStar
β› with
- one_le_kstar := fun a =>
- one.trans_le <| by
- erw [kstar]
- exact one_le_kstar
- mul_kstar_le_kstar := fun a => by
- change f _ ≤ _
- erw [mul, kstar]
- exact mul_kstar_le_kstar
- kstar_mul_le_kstar := fun a => by
- change f _ ≤ _
- erw [mul, kstar]
- exact kstar_mul_le_kstar
- mul_kstar_le_self := fun a b (h : f _ ≤ _) =>
- by
- change f _ ≤ _
- erw [mul, kstar]
- erw [mul] at h
- exact mul_kstar_le_self h
- kstar_mul_le_self := fun a b (h : f _ ≤ _) =>
- by
- change f _ ≤ _
- erw [mul, kstar]
- erw [mul] at h
- exact kstar_mul_le_self h }
+ one_le_kstar := fun a => one.trans_le <| by erw [kstar]; exact one_le_kstar
+ mul_kstar_le_kstar := fun a => by change f _ ≤ _; erw [mul, kstar]; exact mul_kstar_le_kstar
+ kstar_mul_le_kstar := fun a => by change f _ ≤ _; erw [mul, kstar]; exact kstar_mul_le_kstar
+ mul_kstar_le_self := fun a b (h : f _ ≤ _) => by change f _ ≤ _; erw [mul, kstar];
+ erw [mul] at h; exact mul_kstar_le_self h
+ kstar_mul_le_self := fun a b (h : f _ ≤ _) => by change f _ ≤ _; erw [mul, kstar];
+ erw [mul] at h; exact kstar_mul_le_self h }
#align function.injective.kleene_algebra Function.Injective.kleeneAlgebra
end Function.Injective
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -583,10 +583,7 @@ end Pi
namespace Function.Injective
/- warning: function.injective.idem_semiring -> Function.Injective.idemSemiring is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : IdemSemiring.{u1} α] [_inst_2 : Zero.{u2} β] [_inst_3 : One.{u2} β] [_inst_4 : Add.{u2} β] [_inst_5 : Mul.{u2} β] [_inst_6 : Pow.{u2, 0} β Nat] [_inst_7 : SMul.{0, u2} Nat β] [_inst_8 : NatCast.{u2} β] [_inst_9 : Sup.{u2} β] [_inst_10 : Bot.{u2} β] (f : β -> α), (Function.Injective.{succ u2, succ u1} β α f) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β _inst_2)))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))))))) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 1 (OfNat.mk.{u2} β 1 (One.one.{u2} β _inst_3)))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))))))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β _inst_4) x y)) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) (f x) (f y))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β _inst_5) x y)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) (f x) (f y))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (SMul.smul.{0, u2} Nat β _inst_7 n x)) (SMul.smul.{0, u1} Nat α (AddMonoid.SMul.{u1} α (AddMonoidWithOne.toAddMonoid.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) n (f x))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat _inst_6) x n)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) (f x) n)) -> (forall (n : Nat), Eq.{succ u1} α (f ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat β (HasLiftT.mk.{1, succ u2} Nat β (CoeTCₓ.coe.{1, succ u2} Nat β (Nat.castCoe.{u2} β _inst_8))) n)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat α (HasLiftT.mk.{1, succ u1} Nat α (CoeTCₓ.coe.{1, succ u1} Nat α (Nat.castCoe.{u1} α (AddMonoidWithOne.toNatCast.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))))) n)) -> (forall (a : β) (b : β), Eq.{succ u1} α (f (Sup.sup.{u2} β _inst_9 a b)) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)) (f a) (f b))) -> (Eq.{succ u1} α (f (Bot.bot.{u2} β _inst_10)) (Bot.bot.{u1} α (CanonicallyOrderedAddMonoid.toHasBot.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1)))) -> (IdemSemiring.{u2} β)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : IdemSemiring.{u1} α] [_inst_2 : Zero.{u2} β] [_inst_3 : One.{u2} β] [_inst_4 : Add.{u2} β] [_inst_5 : Mul.{u2} β] [_inst_6 : Pow.{u2, 0} β Nat] [_inst_7 : SMul.{0, u2} Nat β] [_inst_8 : NatCast.{u2} β] [_inst_9 : Sup.{u2} β] [_inst_10 : Bot.{u2} β] (f : β -> α), (Function.Injective.{succ u2, succ u1} β α f) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 0 (Zero.toOfNat0.{u2} β _inst_2))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 1 (One.toOfNat1.{u2} β _inst_3))) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β _inst_4) x y)) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) (f x) (f y))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β _inst_5) x y)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) (f x) (f y))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HSMul.hSMul.{0, u2, u2} Nat β β (instHSMul.{0, u2} Nat β _inst_7) n x)) (HSMul.hSMul.{0, u1, u1} Nat α α (instHSMul.{0, u1} Nat α (AddMonoid.SMul.{u1} α (AddMonoidWithOne.toAddMonoid.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))))) n (f x))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat _inst_6) x n)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) (f x) n)) -> (forall (n : Nat), Eq.{succ u1} α (f (Nat.cast.{u2} β _inst_8 n)) (Nat.cast.{u1} α (Semiring.toNatCast.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)) n)) -> (forall (a : β) (b : β), Eq.{succ u1} α (f (Sup.sup.{u2} β _inst_9 a b)) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)) (f a) (f b))) -> (Eq.{succ u1} α (f (Bot.bot.{u2} β _inst_10)) (Bot.bot.{u1} α (CanonicallyOrderedAddMonoid.toBot.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1)))) -> (IdemSemiring.{u2} β)
+<too large>
Case conversion may be inaccurate. Consider using '#align function.injective.idem_semiring Function.Injective.idemSemiringₓ'. -/
-- See note [reducible non-instances]
/-- Pullback an `idem_semiring` instance along an injective function. -/
@@ -605,10 +602,7 @@ protected def idemSemiring [IdemSemiring α] [Zero β] [One β] [Add β] [Mul β
#align function.injective.idem_semiring Function.Injective.idemSemiring
/- warning: function.injective.idem_comm_semiring -> Function.Injective.idemCommSemiring is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : IdemCommSemiring.{u1} α] [_inst_2 : Zero.{u2} β] [_inst_3 : One.{u2} β] [_inst_4 : Add.{u2} β] [_inst_5 : Mul.{u2} β] [_inst_6 : Pow.{u2, 0} β Nat] [_inst_7 : SMul.{0, u2} Nat β] [_inst_8 : NatCast.{u2} β] [_inst_9 : Sup.{u2} β] [_inst_10 : Bot.{u2} β] (f : β -> α), (Function.Injective.{succ u2, succ u1} β α f) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β _inst_2)))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))))))) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 1 (OfNat.mk.{u2} β 1 (One.one.{u2} β _inst_3)))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))))))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β _inst_4) x y)) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))))) (f x) (f y))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β _inst_5) x y)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))))) (f x) (f y))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (SMul.smul.{0, u2} Nat β _inst_7 n x)) (SMul.smul.{0, u1} Nat α (AddMonoid.SMul.{u1} α (AddMonoidWithOne.toAddMonoid.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))))) n (f x))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat _inst_6) x n)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))) (f x) n)) -> (forall (n : Nat), Eq.{succ u1} α (f ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat β (HasLiftT.mk.{1, succ u2} Nat β (CoeTCₓ.coe.{1, succ u2} Nat β (Nat.castCoe.{u2} β _inst_8))) n)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat α (HasLiftT.mk.{1, succ u1} Nat α (CoeTCₓ.coe.{1, succ u1} Nat α (Nat.castCoe.{u1} α (AddMonoidWithOne.toNatCast.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))))))) n)) -> (forall (a : β) (b : β), Eq.{succ u1} α (f (Sup.sup.{u2} β _inst_9 a b)) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))) (f a) (f b))) -> (Eq.{succ u1} α (f (Bot.bot.{u2} β _inst_10)) (Bot.bot.{u1} α (CanonicallyOrderedAddMonoid.toHasBot.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))) -> (IdemCommSemiring.{u2} β)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : IdemCommSemiring.{u1} α] [_inst_2 : Zero.{u2} β] [_inst_3 : One.{u2} β] [_inst_4 : Add.{u2} β] [_inst_5 : Mul.{u2} β] [_inst_6 : Pow.{u2, 0} β Nat] [_inst_7 : SMul.{0, u2} Nat β] [_inst_8 : NatCast.{u2} β] [_inst_9 : Sup.{u2} β] [_inst_10 : Bot.{u2} β] (f : β -> α), (Function.Injective.{succ u2, succ u1} β α f) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 0 (Zero.toOfNat0.{u2} β _inst_2))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CommSemiring.toCommMonoidWithZero.{u1} α (IdemCommSemiring.toCommSemiring.{u1} α _inst_1)))))) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 1 (One.toOfNat1.{u2} β _inst_3))) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β _inst_4) x y)) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))))) (f x) (f y))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β _inst_5) x y)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))) (f x) (f y))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HSMul.hSMul.{0, u2, u2} Nat β β (instHSMul.{0, u2} Nat β _inst_7) n x)) (HSMul.hSMul.{0, u1, u1} Nat α α (instHSMul.{0, u1} Nat α (AddMonoid.SMul.{u1} α (AddMonoidWithOne.toAddMonoid.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))))) n (f x))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat _inst_6) x n)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))) (f x) n)) -> (forall (n : Nat), Eq.{succ u1} α (f (Nat.cast.{u2} β _inst_8 n)) (Nat.cast.{u1} α (Semiring.toNatCast.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))) n)) -> (forall (a : β) (b : β), Eq.{succ u1} α (f (Sup.sup.{u2} β _inst_9 a b)) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α (IdemCommSemiring.toSemilatticeSup.{u1} α _inst_1)) (f a) (f b))) -> (Eq.{succ u1} α (f (Bot.bot.{u2} β _inst_10)) (Bot.bot.{u1} α (CanonicallyOrderedAddMonoid.toBot.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))) -> (IdemCommSemiring.{u2} β)
+<too large>
Case conversion may be inaccurate. Consider using '#align function.injective.idem_comm_semiring Function.Injective.idemCommSemiringₓ'. -/
-- See note [reducible non-instances]
/-- Pullback an `idem_comm_semiring` instance along an injective function. -/
@@ -624,10 +618,7 @@ protected def idemCommSemiring [IdemCommSemiring α] [Zero β] [One β] [Add β]
#align function.injective.idem_comm_semiring Function.Injective.idemCommSemiring
/- warning: function.injective.kleene_algebra -> Function.Injective.kleeneAlgebra is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : KleeneAlgebra.{u1} α] [_inst_2 : Zero.{u2} β] [_inst_3 : One.{u2} β] [_inst_4 : Add.{u2} β] [_inst_5 : Mul.{u2} β] [_inst_6 : Pow.{u2, 0} β Nat] [_inst_7 : SMul.{0, u2} Nat β] [_inst_8 : NatCast.{u2} β] [_inst_9 : Sup.{u2} β] [_inst_10 : Bot.{u2} β] [_inst_11 : KStar.{u2} β] (f : β -> α), (Function.Injective.{succ u2, succ u1} β α f) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β _inst_2)))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))))))) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 1 (OfNat.mk.{u2} β 1 (One.one.{u2} β _inst_3)))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))))))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β _inst_4) x y)) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (f x) (f y))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β _inst_5) x y)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (f x) (f y))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (SMul.smul.{0, u2} Nat β _inst_7 n x)) (SMul.smul.{0, u1} Nat α (AddMonoid.SMul.{u1} α (AddMonoidWithOne.toAddMonoid.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) n (f x))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat _inst_6) x n)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (f x) n)) -> (forall (n : Nat), Eq.{succ u1} α (f ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat β (HasLiftT.mk.{1, succ u2} Nat β (CoeTCₓ.coe.{1, succ u2} Nat β (Nat.castCoe.{u2} β _inst_8))) n)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat α (HasLiftT.mk.{1, succ u1} Nat α (CoeTCₓ.coe.{1, succ u1} Nat α (Nat.castCoe.{u1} α (AddMonoidWithOne.toNatCast.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))))) n)) -> (forall (a : β) (b : β), Eq.{succ u1} α (f (Sup.sup.{u2} β _inst_9 a b)) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))) (f a) (f b))) -> (Eq.{succ u1} α (f (Bot.bot.{u2} β _inst_10)) (Bot.bot.{u1} α (CanonicallyOrderedAddMonoid.toHasBot.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))) -> (forall (a : β), Eq.{succ u1} α (f (KStar.kstar.{u2} β _inst_11 a)) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) (f a))) -> (KleeneAlgebra.{u2} β)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : KleeneAlgebra.{u1} α] [_inst_2 : Zero.{u2} β] [_inst_3 : One.{u2} β] [_inst_4 : Add.{u2} β] [_inst_5 : Mul.{u2} β] [_inst_6 : Pow.{u2, 0} β Nat] [_inst_7 : SMul.{0, u2} Nat β] [_inst_8 : NatCast.{u2} β] [_inst_9 : Sup.{u2} β] [_inst_10 : Bot.{u2} β] [_inst_11 : KStar.{u2} β] (f : β -> α), (Function.Injective.{succ u2, succ u1} β α f) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 0 (Zero.toOfNat0.{u2} β _inst_2))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 1 (One.toOfNat1.{u2} β _inst_3))) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β _inst_4) x y)) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (f x) (f y))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β _inst_5) x y)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (f x) (f y))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HSMul.hSMul.{0, u2, u2} Nat β β (instHSMul.{0, u2} Nat β _inst_7) n x)) (HSMul.hSMul.{0, u1, u1} Nat α α (instHSMul.{0, u1} Nat α (AddMonoid.SMul.{u1} α (AddMonoidWithOne.toAddMonoid.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))))) n (f x))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat _inst_6) x n)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (f x) n)) -> (forall (n : Nat), Eq.{succ u1} α (f (Nat.cast.{u2} β _inst_8 n)) (Nat.cast.{u1} α (Semiring.toNatCast.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))) n)) -> (forall (a : β) (b : β), Eq.{succ u1} α (f (Sup.sup.{u2} β _inst_9 a b)) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))) (f a) (f b))) -> (Eq.{succ u1} α (f (Bot.bot.{u2} β _inst_10)) (Bot.bot.{u1} α (CanonicallyOrderedAddMonoid.toBot.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))) -> (forall (a : β), Eq.{succ u1} α (f (KStar.kstar.{u2} β _inst_11 a)) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) (f a))) -> (KleeneAlgebra.{u2} β)
+<too large>
Case conversion may be inaccurate. Consider using '#align function.injective.kleene_algebra Function.Injective.kleeneAlgebraₓ'. -/
-- See note [reducible non-instances]
/-- Pullback an `idem_comm_semiring` instance along an injective function. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -113,12 +113,16 @@ class KleeneAlgebra (α : Type _) extends IdemSemiring α, KStar α where
#align kleene_algebra KleeneAlgebra
-/
-#print IdemSemiring.toOrderBot /-
+/- warning: idem_semiring.to_order_bot -> IdemSemiring.toOrderBot is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], OrderBot.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1))))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], OrderBot.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1))))
+Case conversion may be inaccurate. Consider using '#align idem_semiring.to_order_bot IdemSemiring.toOrderBotₓ'. -/
-- See note [lower instance priority]
instance (priority := 100) IdemSemiring.toOrderBot [IdemSemiring α] : OrderBot α :=
{ ‹IdemSemiring α› with }
#align idem_semiring.to_order_bot IdemSemiring.toOrderBot
--/
/- warning: idem_semiring.of_semiring -> IdemSemiring.ofSemiring is a dubious translation:
lean 3 declaration is
@@ -186,7 +190,7 @@ theorem nsmul_eq_self : ∀ {n : ℕ} (hn : n ≠ 0) (a : α), n • a = a
/- warning: add_eq_left_iff_le -> add_eq_left_iff_le is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, Iff (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) a) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b a)
+ forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, Iff (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) a) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b a)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, Iff (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) a) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b a)
Case conversion may be inaccurate. Consider using '#align add_eq_left_iff_le add_eq_left_iff_leₓ'. -/
@@ -195,7 +199,7 @@ theorem add_eq_left_iff_le : a + b = a ↔ b ≤ a := by simp
/- warning: add_eq_right_iff_le -> add_eq_right_iff_le is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, Iff (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) b) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a b)
+ forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, Iff (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) b) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a b)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, Iff (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) b) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a b)
Case conversion may be inaccurate. Consider using '#align add_eq_right_iff_le add_eq_right_iff_leₓ'. -/
@@ -204,7 +208,7 @@ theorem add_eq_right_iff_le : a + b = b ↔ a ≤ b := by simp
/- warning: has_le.le.add_eq_left -> LE.le.add_eq_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b a) -> (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) a)
+ forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b a) -> (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) a)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b a) -> (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) a)
Case conversion may be inaccurate. Consider using '#align has_le.le.add_eq_left LE.le.add_eq_leftₓ'. -/
@@ -213,7 +217,7 @@ alias add_eq_left_iff_le ↔ _ LE.le.add_eq_left
/- warning: has_le.le.add_eq_right -> LE.le.add_eq_right is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a b) -> (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) b)
+ forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a b) -> (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) b)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a b) -> (Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) b)
Case conversion may be inaccurate. Consider using '#align has_le.le.add_eq_right LE.le.add_eq_rightₓ'. -/
@@ -222,7 +226,7 @@ alias add_eq_right_iff_le ↔ _ LE.le.add_eq_right
/- warning: add_le_iff -> add_le_iff is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α} {c : α}, Iff (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) c) (And (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a c) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b c))
+ forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α} {c : α}, Iff (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) c) (And (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a c) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b c))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α} {c : α}, Iff (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) c) (And (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a c) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b c))
Case conversion may be inaccurate. Consider using '#align add_le_iff add_le_iffₓ'. -/
@@ -231,7 +235,7 @@ theorem add_le_iff : a + b ≤ c ↔ a ≤ c ∧ b ≤ c := by simp
/- warning: add_le -> add_le is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α} {c : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) c)
+ forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α} {c : α}, (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a c) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b c) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) c)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] {a : α} {b : α} {c : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) a c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) b c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeSup.toPartialOrder.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)))) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) c)
Case conversion may be inaccurate. Consider using '#align add_le add_leₓ'. -/
@@ -256,7 +260,7 @@ instance (priority := 100) IdemSemiring.toCanonicallyOrderedAddMonoid :
/- warning: idem_semiring.to_covariant_class_mul_le -> IdemSemiring.toCovariantClass_mul_le is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))))) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))))
+ forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))))) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1699 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1701 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1699 x._@.Mathlib.Algebra.Order.Kleene._hyg.1701) (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1714 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1716 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1714 x._@.Mathlib.Algebra.Order.Kleene._hyg.1716)
Case conversion may be inaccurate. Consider using '#align idem_semiring.to_covariant_class_mul_le IdemSemiring.toCovariantClass_mul_leₓ'. -/
@@ -268,7 +272,7 @@ instance (priority := 100) IdemSemiring.toCovariantClass_mul_le :
/- warning: idem_semiring.to_covariant_class_swap_mul_le -> IdemSemiring.toCovariantClass_swap_mul_le is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (Function.swap.{succ u1, succ u1, succ u1} α α (fun (ᾰ : α) (ᾰ : α) => α) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))))) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))))
+ forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (Function.swap.{succ u1, succ u1, succ u1} α α (fun (ᾰ : α) (ᾰ : α) => α) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))))) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (Function.swap.{succ u1, succ u1, succ u1} α α (fun (ᾰ : α) (ᾰ : α) => α) (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1794 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1796 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1794 x._@.Mathlib.Algebra.Order.Kleene._hyg.1796)) (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1809 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1811 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1809 x._@.Mathlib.Algebra.Order.Kleene._hyg.1811)
Case conversion may be inaccurate. Consider using '#align idem_semiring.to_covariant_class_swap_mul_le IdemSemiring.toCovariantClass_swap_mul_leₓ'. -/
@@ -286,7 +290,7 @@ variable [KleeneAlgebra α] {a b c : α}
/- warning: one_le_kstar -> one_le_kstar is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)
+ forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)
Case conversion may be inaccurate. Consider using '#align one_le_kstar one_le_kstarₓ'. -/
@@ -297,7 +301,7 @@ theorem one_le_kstar : 1 ≤ a∗ :=
/- warning: mul_kstar_le_kstar -> mul_kstar_le_kstar is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) a (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)
+ forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) a (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)
Case conversion may be inaccurate. Consider using '#align mul_kstar_le_kstar mul_kstar_le_kstarₓ'. -/
@@ -307,7 +311,7 @@ theorem mul_kstar_le_kstar : a * a∗ ≤ a∗ :=
/- warning: kstar_mul_le_kstar -> kstar_mul_le_kstar is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) a) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)
+ forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) a) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a) a) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)
Case conversion may be inaccurate. Consider using '#align kstar_mul_le_kstar kstar_mul_le_kstarₓ'. -/
@@ -317,7 +321,7 @@ theorem kstar_mul_le_kstar : a∗ * a ≤ a∗ :=
/- warning: mul_kstar_le_self -> mul_kstar_le_self is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) b a) b) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) b (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)) b)
+ forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) b a) b) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) b (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)) b)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) b a) b) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) b (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)) b)
Case conversion may be inaccurate. Consider using '#align mul_kstar_le_self mul_kstar_le_selfₓ'. -/
@@ -327,7 +331,7 @@ theorem mul_kstar_le_self : b * a ≤ b → b * a∗ ≤ b :=
/- warning: kstar_mul_le_self -> kstar_mul_le_self is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) a b) b) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) b) b)
+ forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) a b) b) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) b) b)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a b) b) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a) b) b)
Case conversion may be inaccurate. Consider using '#align kstar_mul_le_self kstar_mul_le_selfₓ'. -/
@@ -337,7 +341,7 @@ theorem kstar_mul_le_self : a * b ≤ b → a∗ * b ≤ b :=
/- warning: mul_kstar_le -> mul_kstar_le is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α} {c : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) b c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) c a) c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) b (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)) c)
+ forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α} {c : α}, (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) b c) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) c a) c) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) b (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)) c)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α} {c : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) b c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) c a) c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) b (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)) c)
Case conversion may be inaccurate. Consider using '#align mul_kstar_le mul_kstar_leₓ'. -/
@@ -347,7 +351,7 @@ theorem mul_kstar_le (hb : b ≤ c) (ha : c * a ≤ c) : b * a∗ ≤ c :=
/- warning: kstar_mul_le -> kstar_mul_le is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α} {c : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) b c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) a c) c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) b) c)
+ forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α} {c : α}, (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) b c) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) a c) c) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) b) c)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α} {c : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) b c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a c) c) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a) b) c)
Case conversion may be inaccurate. Consider using '#align kstar_mul_le kstar_mul_leₓ'. -/
@@ -357,7 +361,7 @@ theorem kstar_mul_le (hb : b ≤ c) (ha : a * c ≤ c) : a∗ * b ≤ c :=
/- warning: kstar_le_of_mul_le_left -> kstar_le_of_mul_le_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))))) b) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) b a) b) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) b)
+ forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))))) b) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) b a) b) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) b)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))) b) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) b a) b) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a) b)
Case conversion may be inaccurate. Consider using '#align kstar_le_of_mul_le_left kstar_le_of_mul_le_leftₓ'. -/
@@ -366,7 +370,7 @@ theorem kstar_le_of_mul_le_left (hb : 1 ≤ b) : b * a ≤ b → a∗ ≤ b := b
/- warning: kstar_le_of_mul_le_right -> kstar_le_of_mul_le_right is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))))) b) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) a b) b) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) b)
+ forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))))) b) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) a b) b) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) b)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {b : α}, (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))) b) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a b) b) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a) b)
Case conversion may be inaccurate. Consider using '#align kstar_le_of_mul_le_right kstar_le_of_mul_le_rightₓ'. -/
@@ -375,7 +379,7 @@ theorem kstar_le_of_mul_le_right (hb : 1 ≤ b) : a * b ≤ b → a∗ ≤ b :=
/- warning: le_kstar -> le_kstar is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)
+ forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)
Case conversion may be inaccurate. Consider using '#align le_kstar le_kstarₓ'. -/
@@ -397,7 +401,7 @@ theorem kstar_mono : Monotone (KStar.kstar : α → α) := fun a b h =>
/- warning: kstar_eq_one -> kstar_eq_one is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, Iff (Eq.{succ u1} α (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))))))) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))))))
+ forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, Iff (Eq.{succ u1} α (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))))))) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))))))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, Iff (Eq.{succ u1} α (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))
Case conversion may be inaccurate. Consider using '#align kstar_eq_one kstar_eq_oneₓ'. -/
@@ -442,7 +446,7 @@ theorem kstar_mul_kstar (a : α) : a∗ * a∗ = a∗ :=
/- warning: kstar_eq_self -> kstar_eq_self is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, Iff (Eq.{succ u1} α (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) a) (And (Eq.{succ u1} α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) a a) a) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))))) a))
+ forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, Iff (Eq.{succ u1} α (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a) a) (And (Eq.{succ u1} α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) a a) a) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))))) a))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α}, Iff (Eq.{succ u1} α (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a) a) (And (Eq.{succ u1} α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a a) a) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))) a))
Case conversion may be inaccurate. Consider using '#align kstar_eq_self kstar_eq_selfₓ'. -/
@@ -465,7 +469,7 @@ theorem kstar_idem (a : α) : a∗∗ = a∗ :=
/- warning: pow_le_kstar -> pow_le_kstar is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {n : Nat}, LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a n) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)
+ forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {n : Nat}, LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a n) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) a)
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : KleeneAlgebra.{u1} α] {a : α} {n : Nat}, LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) a n) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) a)
Case conversion may be inaccurate. Consider using '#align pow_le_kstar pow_le_kstarₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/36b8aa61ea7c05727161f96a0532897bd72aedab
@@ -258,7 +258,7 @@ instance (priority := 100) IdemSemiring.toCanonicallyOrderedAddMonoid :
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))))) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1701 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1703 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1701 x._@.Mathlib.Algebra.Order.Kleene._hyg.1703) (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1716 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1718 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1716 x._@.Mathlib.Algebra.Order.Kleene._hyg.1718)
+ forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1699 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1701 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1699 x._@.Mathlib.Algebra.Order.Kleene._hyg.1701) (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1714 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1716 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1714 x._@.Mathlib.Algebra.Order.Kleene._hyg.1716)
Case conversion may be inaccurate. Consider using '#align idem_semiring.to_covariant_class_mul_le IdemSemiring.toCovariantClass_mul_leₓ'. -/
-- See note [lower instance priority]
instance (priority := 100) IdemSemiring.toCovariantClass_mul_le :
@@ -270,7 +270,7 @@ instance (priority := 100) IdemSemiring.toCovariantClass_mul_le :
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (Function.swap.{succ u1, succ u1, succ u1} α α (fun (ᾰ : α) (ᾰ : α) => α) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))))) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (Function.swap.{succ u1, succ u1, succ u1} α α (fun (ᾰ : α) (ᾰ : α) => α) (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1796 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1798 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1796 x._@.Mathlib.Algebra.Order.Kleene._hyg.1798)) (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1811 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1813 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1811 x._@.Mathlib.Algebra.Order.Kleene._hyg.1813)
+ forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (Function.swap.{succ u1, succ u1, succ u1} α α (fun (ᾰ : α) (ᾰ : α) => α) (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1794 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1796 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1794 x._@.Mathlib.Algebra.Order.Kleene._hyg.1796)) (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1809 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1811 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1809 x._@.Mathlib.Algebra.Order.Kleene._hyg.1811)
Case conversion may be inaccurate. Consider using '#align idem_semiring.to_covariant_class_swap_mul_le IdemSemiring.toCovariantClass_swap_mul_leₓ'. -/
-- See note [lower instance priority]
instance (priority := 100) IdemSemiring.toCovariantClass_swap_mul_le :
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -258,7 +258,7 @@ instance (priority := 100) IdemSemiring.toCanonicallyOrderedAddMonoid :
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))))) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1691 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1693 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1691 x._@.Mathlib.Algebra.Order.Kleene._hyg.1693) (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1706 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1708 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1706 x._@.Mathlib.Algebra.Order.Kleene._hyg.1708)
+ forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1701 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1703 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1701 x._@.Mathlib.Algebra.Order.Kleene._hyg.1703) (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1716 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1718 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1716 x._@.Mathlib.Algebra.Order.Kleene._hyg.1718)
Case conversion may be inaccurate. Consider using '#align idem_semiring.to_covariant_class_mul_le IdemSemiring.toCovariantClass_mul_leₓ'. -/
-- See note [lower instance priority]
instance (priority := 100) IdemSemiring.toCovariantClass_mul_le :
@@ -270,7 +270,7 @@ instance (priority := 100) IdemSemiring.toCovariantClass_mul_le :
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (Function.swap.{succ u1, succ u1, succ u1} α α (fun (ᾰ : α) (ᾰ : α) => α) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))))) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (Function.swap.{succ u1, succ u1, succ u1} α α (fun (ᾰ : α) (ᾰ : α) => α) (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1786 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1788 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1786 x._@.Mathlib.Algebra.Order.Kleene._hyg.1788)) (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1801 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1803 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1801 x._@.Mathlib.Algebra.Order.Kleene._hyg.1803)
+ forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α], CovariantClass.{u1, u1} α α (Function.swap.{succ u1, succ u1, succ u1} α α (fun (ᾰ : α) (ᾰ : α) => α) (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1796 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1798 : α) => HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1796 x._@.Mathlib.Algebra.Order.Kleene._hyg.1798)) (fun (x._@.Mathlib.Algebra.Order.Kleene._hyg.1811 : α) (x._@.Mathlib.Algebra.Order.Kleene._hyg.1813 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedAddCommMonoid.toPartialOrder.{u1} α (CanonicallyOrderedAddMonoid.toOrderedAddCommMonoid.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1))))) x._@.Mathlib.Algebra.Order.Kleene._hyg.1811 x._@.Mathlib.Algebra.Order.Kleene._hyg.1813)
Case conversion may be inaccurate. Consider using '#align idem_semiring.to_covariant_class_swap_mul_le IdemSemiring.toCovariantClass_swap_mul_leₓ'. -/
-- See note [lower instance priority]
instance (priority := 100) IdemSemiring.toCovariantClass_swap_mul_le :
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -158,9 +158,9 @@ variable [IdemSemiring α] {a b c : α}
/- warning: add_eq_sup -> add_eq_sup is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] (a : α) (b : α), Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) (HasSup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)) a b)
+ forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] (a : α) (b : α), Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)) a b)
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] (a : α) (b : α), Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) (HasSup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)) a b)
+ forall {α : Type.{u1}} [_inst_1 : IdemSemiring.{u1} α] (a : α) (b : α), Eq.{succ u1} α (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) a b) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)) a b)
Case conversion may be inaccurate. Consider using '#align add_eq_sup add_eq_supₓ'. -/
@[simp]
theorem add_eq_sup (a b : α) : a + b = a ⊔ b :=
@@ -580,15 +580,15 @@ namespace Function.Injective
/- warning: function.injective.idem_semiring -> Function.Injective.idemSemiring is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : IdemSemiring.{u1} α] [_inst_2 : Zero.{u2} β] [_inst_3 : One.{u2} β] [_inst_4 : Add.{u2} β] [_inst_5 : Mul.{u2} β] [_inst_6 : Pow.{u2, 0} β Nat] [_inst_7 : SMul.{0, u2} Nat β] [_inst_8 : NatCast.{u2} β] [_inst_9 : HasSup.{u2} β] [_inst_10 : Bot.{u2} β] (f : β -> α), (Function.Injective.{succ u2, succ u1} β α f) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β _inst_2)))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))))))) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 1 (OfNat.mk.{u2} β 1 (One.one.{u2} β _inst_3)))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))))))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β _inst_4) x y)) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) (f x) (f y))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β _inst_5) x y)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) (f x) (f y))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (SMul.smul.{0, u2} Nat β _inst_7 n x)) (SMul.smul.{0, u1} Nat α (AddMonoid.SMul.{u1} α (AddMonoidWithOne.toAddMonoid.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) n (f x))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat _inst_6) x n)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) (f x) n)) -> (forall (n : Nat), Eq.{succ u1} α (f ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat β (HasLiftT.mk.{1, succ u2} Nat β (CoeTCₓ.coe.{1, succ u2} Nat β (Nat.castCoe.{u2} β _inst_8))) n)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat α (HasLiftT.mk.{1, succ u1} Nat α (CoeTCₓ.coe.{1, succ u1} Nat α (Nat.castCoe.{u1} α (AddMonoidWithOne.toNatCast.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))))) n)) -> (forall (a : β) (b : β), Eq.{succ u1} α (f (HasSup.sup.{u2} β _inst_9 a b)) (HasSup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)) (f a) (f b))) -> (Eq.{succ u1} α (f (Bot.bot.{u2} β _inst_10)) (Bot.bot.{u1} α (CanonicallyOrderedAddMonoid.toHasBot.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1)))) -> (IdemSemiring.{u2} β)
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : IdemSemiring.{u1} α] [_inst_2 : Zero.{u2} β] [_inst_3 : One.{u2} β] [_inst_4 : Add.{u2} β] [_inst_5 : Mul.{u2} β] [_inst_6 : Pow.{u2, 0} β Nat] [_inst_7 : SMul.{0, u2} Nat β] [_inst_8 : NatCast.{u2} β] [_inst_9 : Sup.{u2} β] [_inst_10 : Bot.{u2} β] (f : β -> α), (Function.Injective.{succ u2, succ u1} β α f) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β _inst_2)))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))))))) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 1 (OfNat.mk.{u2} β 1 (One.one.{u2} β _inst_3)))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))))))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β _inst_4) x y)) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) (f x) (f y))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β _inst_5) x y)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) (f x) (f y))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (SMul.smul.{0, u2} Nat β _inst_7 n x)) (SMul.smul.{0, u1} Nat α (AddMonoid.SMul.{u1} α (AddMonoidWithOne.toAddMonoid.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) n (f x))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat _inst_6) x n)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) (f x) n)) -> (forall (n : Nat), Eq.{succ u1} α (f ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat β (HasLiftT.mk.{1, succ u2} Nat β (CoeTCₓ.coe.{1, succ u2} Nat β (Nat.castCoe.{u2} β _inst_8))) n)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat α (HasLiftT.mk.{1, succ u1} Nat α (CoeTCₓ.coe.{1, succ u1} Nat α (Nat.castCoe.{u1} α (AddMonoidWithOne.toNatCast.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))))) n)) -> (forall (a : β) (b : β), Eq.{succ u1} α (f (Sup.sup.{u2} β _inst_9 a b)) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)) (f a) (f b))) -> (Eq.{succ u1} α (f (Bot.bot.{u2} β _inst_10)) (Bot.bot.{u1} α (CanonicallyOrderedAddMonoid.toHasBot.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1)))) -> (IdemSemiring.{u2} β)
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : IdemSemiring.{u1} α] [_inst_2 : Zero.{u2} β] [_inst_3 : One.{u2} β] [_inst_4 : Add.{u2} β] [_inst_5 : Mul.{u2} β] [_inst_6 : Pow.{u2, 0} β Nat] [_inst_7 : SMul.{0, u2} Nat β] [_inst_8 : NatCast.{u2} β] [_inst_9 : HasSup.{u2} β] [_inst_10 : Bot.{u2} β] (f : β -> α), (Function.Injective.{succ u2, succ u1} β α f) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 0 (Zero.toOfNat0.{u2} β _inst_2))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 1 (One.toOfNat1.{u2} β _inst_3))) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β _inst_4) x y)) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) (f x) (f y))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β _inst_5) x y)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) (f x) (f y))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HSMul.hSMul.{0, u2, u2} Nat β β (instHSMul.{0, u2} Nat β _inst_7) n x)) (HSMul.hSMul.{0, u1, u1} Nat α α (instHSMul.{0, u1} Nat α (AddMonoid.SMul.{u1} α (AddMonoidWithOne.toAddMonoid.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))))) n (f x))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat _inst_6) x n)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) (f x) n)) -> (forall (n : Nat), Eq.{succ u1} α (f (Nat.cast.{u2} β _inst_8 n)) (Nat.cast.{u1} α (Semiring.toNatCast.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)) n)) -> (forall (a : β) (b : β), Eq.{succ u1} α (f (HasSup.sup.{u2} β _inst_9 a b)) (HasSup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)) (f a) (f b))) -> (Eq.{succ u1} α (f (Bot.bot.{u2} β _inst_10)) (Bot.bot.{u1} α (CanonicallyOrderedAddMonoid.toBot.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1)))) -> (IdemSemiring.{u2} β)
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : IdemSemiring.{u1} α] [_inst_2 : Zero.{u2} β] [_inst_3 : One.{u2} β] [_inst_4 : Add.{u2} β] [_inst_5 : Mul.{u2} β] [_inst_6 : Pow.{u2, 0} β Nat] [_inst_7 : SMul.{0, u2} Nat β] [_inst_8 : NatCast.{u2} β] [_inst_9 : Sup.{u2} β] [_inst_10 : Bot.{u2} β] (f : β -> α), (Function.Injective.{succ u2, succ u1} β α f) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 0 (Zero.toOfNat0.{u2} β _inst_2))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 1 (One.toOfNat1.{u2} β _inst_3))) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β _inst_4) x y)) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)))))) (f x) (f y))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β _inst_5) x y)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) (f x) (f y))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HSMul.hSMul.{0, u2, u2} Nat β β (instHSMul.{0, u2} Nat β _inst_7) n x)) (HSMul.hSMul.{0, u1, u1} Nat α α (instHSMul.{0, u1} Nat α (AddMonoid.SMul.{u1} α (AddMonoidWithOne.toAddMonoid.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))))) n (f x))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat _inst_6) x n)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1))))) (f x) n)) -> (forall (n : Nat), Eq.{succ u1} α (f (Nat.cast.{u2} β _inst_8 n)) (Nat.cast.{u1} α (Semiring.toNatCast.{u1} α (IdemSemiring.toSemiring.{u1} α _inst_1)) n)) -> (forall (a : β) (b : β), Eq.{succ u1} α (f (Sup.sup.{u2} β _inst_9 a b)) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α _inst_1)) (f a) (f b))) -> (Eq.{succ u1} α (f (Bot.bot.{u2} β _inst_10)) (Bot.bot.{u1} α (CanonicallyOrderedAddMonoid.toBot.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α _inst_1)))) -> (IdemSemiring.{u2} β)
Case conversion may be inaccurate. Consider using '#align function.injective.idem_semiring Function.Injective.idemSemiringₓ'. -/
-- See note [reducible non-instances]
/-- Pullback an `idem_semiring` instance along an injective function. -/
@[reducible]
protected def idemSemiring [IdemSemiring α] [Zero β] [One β] [Add β] [Mul β] [Pow β ℕ] [SMul ℕ β]
- [NatCast β] [HasSup β] [Bot β] (f : β → α) (hf : Injective f) (zero : f 0 = 0) (one : f 1 = 1)
+ [NatCast β] [Sup β] [Bot β] (f : β → α) (hf : Injective f) (zero : f 0 = 0) (one : f 1 = 1)
(add : ∀ x y, f (x + y) = f x + f y) (mul : ∀ x y, f (x * y) = f x * f y)
(nsmul : ∀ (x) (n : ℕ), f (n • x) = n • f x) (npow : ∀ (x) (n : ℕ), f (x ^ n) = f x ^ n)
(nat_cast : ∀ n : ℕ, f n = n) (sup : ∀ a b, f (a ⊔ b) = f a ⊔ f b) (bot : f ⊥ = ⊥) :
@@ -602,15 +602,15 @@ protected def idemSemiring [IdemSemiring α] [Zero β] [One β] [Add β] [Mul β
/- warning: function.injective.idem_comm_semiring -> Function.Injective.idemCommSemiring is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : IdemCommSemiring.{u1} α] [_inst_2 : Zero.{u2} β] [_inst_3 : One.{u2} β] [_inst_4 : Add.{u2} β] [_inst_5 : Mul.{u2} β] [_inst_6 : Pow.{u2, 0} β Nat] [_inst_7 : SMul.{0, u2} Nat β] [_inst_8 : NatCast.{u2} β] [_inst_9 : HasSup.{u2} β] [_inst_10 : Bot.{u2} β] (f : β -> α), (Function.Injective.{succ u2, succ u1} β α f) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β _inst_2)))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))))))) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 1 (OfNat.mk.{u2} β 1 (One.one.{u2} β _inst_3)))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))))))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β _inst_4) x y)) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))))) (f x) (f y))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β _inst_5) x y)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))))) (f x) (f y))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (SMul.smul.{0, u2} Nat β _inst_7 n x)) (SMul.smul.{0, u1} Nat α (AddMonoid.SMul.{u1} α (AddMonoidWithOne.toAddMonoid.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))))) n (f x))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat _inst_6) x n)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))) (f x) n)) -> (forall (n : Nat), Eq.{succ u1} α (f ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat β (HasLiftT.mk.{1, succ u2} Nat β (CoeTCₓ.coe.{1, succ u2} Nat β (Nat.castCoe.{u2} β _inst_8))) n)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat α (HasLiftT.mk.{1, succ u1} Nat α (CoeTCₓ.coe.{1, succ u1} Nat α (Nat.castCoe.{u1} α (AddMonoidWithOne.toNatCast.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))))))) n)) -> (forall (a : β) (b : β), Eq.{succ u1} α (f (HasSup.sup.{u2} β _inst_9 a b)) (HasSup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))) (f a) (f b))) -> (Eq.{succ u1} α (f (Bot.bot.{u2} β _inst_10)) (Bot.bot.{u1} α (CanonicallyOrderedAddMonoid.toHasBot.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))) -> (IdemCommSemiring.{u2} β)
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : IdemCommSemiring.{u1} α] [_inst_2 : Zero.{u2} β] [_inst_3 : One.{u2} β] [_inst_4 : Add.{u2} β] [_inst_5 : Mul.{u2} β] [_inst_6 : Pow.{u2, 0} β Nat] [_inst_7 : SMul.{0, u2} Nat β] [_inst_8 : NatCast.{u2} β] [_inst_9 : Sup.{u2} β] [_inst_10 : Bot.{u2} β] (f : β -> α), (Function.Injective.{succ u2, succ u1} β α f) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β _inst_2)))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))))))) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 1 (OfNat.mk.{u2} β 1 (One.one.{u2} β _inst_3)))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))))))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β _inst_4) x y)) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))))) (f x) (f y))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β _inst_5) x y)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))))) (f x) (f y))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (SMul.smul.{0, u2} Nat β _inst_7 n x)) (SMul.smul.{0, u1} Nat α (AddMonoid.SMul.{u1} α (AddMonoidWithOne.toAddMonoid.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))))) n (f x))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat _inst_6) x n)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))) (f x) n)) -> (forall (n : Nat), Eq.{succ u1} α (f ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat β (HasLiftT.mk.{1, succ u2} Nat β (CoeTCₓ.coe.{1, succ u2} Nat β (Nat.castCoe.{u2} β _inst_8))) n)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat α (HasLiftT.mk.{1, succ u1} Nat α (CoeTCₓ.coe.{1, succ u1} Nat α (Nat.castCoe.{u1} α (AddMonoidWithOne.toNatCast.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))))))) n)) -> (forall (a : β) (b : β), Eq.{succ u1} α (f (Sup.sup.{u2} β _inst_9 a b)) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))) (f a) (f b))) -> (Eq.{succ u1} α (f (Bot.bot.{u2} β _inst_10)) (Bot.bot.{u1} α (CanonicallyOrderedAddMonoid.toHasBot.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))) -> (IdemCommSemiring.{u2} β)
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : IdemCommSemiring.{u1} α] [_inst_2 : Zero.{u2} β] [_inst_3 : One.{u2} β] [_inst_4 : Add.{u2} β] [_inst_5 : Mul.{u2} β] [_inst_6 : Pow.{u2, 0} β Nat] [_inst_7 : SMul.{0, u2} Nat β] [_inst_8 : NatCast.{u2} β] [_inst_9 : HasSup.{u2} β] [_inst_10 : Bot.{u2} β] (f : β -> α), (Function.Injective.{succ u2, succ u1} β α f) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 0 (Zero.toOfNat0.{u2} β _inst_2))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CommSemiring.toCommMonoidWithZero.{u1} α (IdemCommSemiring.toCommSemiring.{u1} α _inst_1)))))) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 1 (One.toOfNat1.{u2} β _inst_3))) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β _inst_4) x y)) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))))) (f x) (f y))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β _inst_5) x y)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))) (f x) (f y))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HSMul.hSMul.{0, u2, u2} Nat β β (instHSMul.{0, u2} Nat β _inst_7) n x)) (HSMul.hSMul.{0, u1, u1} Nat α α (instHSMul.{0, u1} Nat α (AddMonoid.SMul.{u1} α (AddMonoidWithOne.toAddMonoid.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))))) n (f x))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat _inst_6) x n)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))) (f x) n)) -> (forall (n : Nat), Eq.{succ u1} α (f (Nat.cast.{u2} β _inst_8 n)) (Nat.cast.{u1} α (Semiring.toNatCast.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))) n)) -> (forall (a : β) (b : β), Eq.{succ u1} α (f (HasSup.sup.{u2} β _inst_9 a b)) (HasSup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (IdemCommSemiring.toSemilatticeSup.{u1} α _inst_1)) (f a) (f b))) -> (Eq.{succ u1} α (f (Bot.bot.{u2} β _inst_10)) (Bot.bot.{u1} α (CanonicallyOrderedAddMonoid.toBot.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))) -> (IdemCommSemiring.{u2} β)
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : IdemCommSemiring.{u1} α] [_inst_2 : Zero.{u2} β] [_inst_3 : One.{u2} β] [_inst_4 : Add.{u2} β] [_inst_5 : Mul.{u2} β] [_inst_6 : Pow.{u2, 0} β Nat] [_inst_7 : SMul.{0, u2} Nat β] [_inst_8 : NatCast.{u2} β] [_inst_9 : Sup.{u2} β] [_inst_10 : Bot.{u2} β] (f : β -> α), (Function.Injective.{succ u2, succ u1} β α f) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 0 (Zero.toOfNat0.{u2} β _inst_2))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (CommMonoidWithZero.toZero.{u1} α (CommSemiring.toCommMonoidWithZero.{u1} α (IdemCommSemiring.toCommSemiring.{u1} α _inst_1)))))) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 1 (One.toOfNat1.{u2} β _inst_3))) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β _inst_4) x y)) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))))) (f x) (f y))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β _inst_5) x y)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))) (f x) (f y))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HSMul.hSMul.{0, u2, u2} Nat β β (instHSMul.{0, u2} Nat β _inst_7) n x)) (HSMul.hSMul.{0, u1, u1} Nat α α (instHSMul.{0, u1} Nat α (AddMonoid.SMul.{u1} α (AddMonoidWithOne.toAddMonoid.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))))) n (f x))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat _inst_6) x n)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1)))))) (f x) n)) -> (forall (n : Nat), Eq.{succ u1} α (f (Nat.cast.{u2} β _inst_8 n)) (Nat.cast.{u1} α (Semiring.toNatCast.{u1} α (IdemSemiring.toSemiring.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))) n)) -> (forall (a : β) (b : β), Eq.{succ u1} α (f (Sup.sup.{u2} β _inst_9 a b)) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α (IdemCommSemiring.toSemilatticeSup.{u1} α _inst_1)) (f a) (f b))) -> (Eq.{succ u1} α (f (Bot.bot.{u2} β _inst_10)) (Bot.bot.{u1} α (CanonicallyOrderedAddMonoid.toBot.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (IdemCommSemiring.toIdemSemiring.{u1} α _inst_1))))) -> (IdemCommSemiring.{u2} β)
Case conversion may be inaccurate. Consider using '#align function.injective.idem_comm_semiring Function.Injective.idemCommSemiringₓ'. -/
-- See note [reducible non-instances]
/-- Pullback an `idem_comm_semiring` instance along an injective function. -/
@[reducible]
protected def idemCommSemiring [IdemCommSemiring α] [Zero β] [One β] [Add β] [Mul β] [Pow β ℕ]
- [SMul ℕ β] [NatCast β] [HasSup β] [Bot β] (f : β → α) (hf : Injective f) (zero : f 0 = 0)
+ [SMul ℕ β] [NatCast β] [Sup β] [Bot β] (f : β → α) (hf : Injective f) (zero : f 0 = 0)
(one : f 1 = 1) (add : ∀ x y, f (x + y) = f x + f y) (mul : ∀ x y, f (x * y) = f x * f y)
(nsmul : ∀ (x) (n : ℕ), f (n • x) = n • f x) (npow : ∀ (x) (n : ℕ), f (x ^ n) = f x ^ n)
(nat_cast : ∀ n : ℕ, f n = n) (sup : ∀ a b, f (a ⊔ b) = f a ⊔ f b) (bot : f ⊥ = ⊥) :
@@ -621,15 +621,15 @@ protected def idemCommSemiring [IdemCommSemiring α] [Zero β] [One β] [Add β]
/- warning: function.injective.kleene_algebra -> Function.Injective.kleeneAlgebra is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : KleeneAlgebra.{u1} α] [_inst_2 : Zero.{u2} β] [_inst_3 : One.{u2} β] [_inst_4 : Add.{u2} β] [_inst_5 : Mul.{u2} β] [_inst_6 : Pow.{u2, 0} β Nat] [_inst_7 : SMul.{0, u2} Nat β] [_inst_8 : NatCast.{u2} β] [_inst_9 : HasSup.{u2} β] [_inst_10 : Bot.{u2} β] [_inst_11 : KStar.{u2} β] (f : β -> α), (Function.Injective.{succ u2, succ u1} β α f) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β _inst_2)))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))))))) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 1 (OfNat.mk.{u2} β 1 (One.one.{u2} β _inst_3)))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))))))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β _inst_4) x y)) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (f x) (f y))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β _inst_5) x y)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (f x) (f y))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (SMul.smul.{0, u2} Nat β _inst_7 n x)) (SMul.smul.{0, u1} Nat α (AddMonoid.SMul.{u1} α (AddMonoidWithOne.toAddMonoid.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) n (f x))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat _inst_6) x n)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (f x) n)) -> (forall (n : Nat), Eq.{succ u1} α (f ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat β (HasLiftT.mk.{1, succ u2} Nat β (CoeTCₓ.coe.{1, succ u2} Nat β (Nat.castCoe.{u2} β _inst_8))) n)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat α (HasLiftT.mk.{1, succ u1} Nat α (CoeTCₓ.coe.{1, succ u1} Nat α (Nat.castCoe.{u1} α (AddMonoidWithOne.toNatCast.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))))) n)) -> (forall (a : β) (b : β), Eq.{succ u1} α (f (HasSup.sup.{u2} β _inst_9 a b)) (HasSup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))) (f a) (f b))) -> (Eq.{succ u1} α (f (Bot.bot.{u2} β _inst_10)) (Bot.bot.{u1} α (CanonicallyOrderedAddMonoid.toHasBot.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))) -> (forall (a : β), Eq.{succ u1} α (f (KStar.kstar.{u2} β _inst_11 a)) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) (f a))) -> (KleeneAlgebra.{u2} β)
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : KleeneAlgebra.{u1} α] [_inst_2 : Zero.{u2} β] [_inst_3 : One.{u2} β] [_inst_4 : Add.{u2} β] [_inst_5 : Mul.{u2} β] [_inst_6 : Pow.{u2, 0} β Nat] [_inst_7 : SMul.{0, u2} Nat β] [_inst_8 : NatCast.{u2} β] [_inst_9 : Sup.{u2} β] [_inst_10 : Bot.{u2} β] [_inst_11 : KStar.{u2} β] (f : β -> α), (Function.Injective.{succ u2, succ u1} β α f) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 0 (OfNat.mk.{u2} β 0 (Zero.zero.{u2} β _inst_2)))) (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (MulZeroClass.toHasZero.{u1} α (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))))))) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 1 (OfNat.mk.{u2} β 1 (One.one.{u2} β _inst_3)))) (OfNat.ofNat.{u1} α 1 (OfNat.mk.{u1} α 1 (One.one.{u1} α (AddMonoidWithOne.toOne.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))))))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β _inst_4) x y)) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toHasAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (f x) (f y))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β _inst_5) x y)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (Distrib.toHasMul.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (f x) (f y))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (SMul.smul.{0, u2} Nat β _inst_7 n x)) (SMul.smul.{0, u1} Nat α (AddMonoid.SMul.{u1} α (AddMonoidWithOne.toAddMonoid.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) n (f x))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat _inst_6) x n)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (f x) n)) -> (forall (n : Nat), Eq.{succ u1} α (f ((fun (a : Type) (b : Type.{u2}) [self : HasLiftT.{1, succ u2} a b] => self.0) Nat β (HasLiftT.mk.{1, succ u2} Nat β (CoeTCₓ.coe.{1, succ u2} Nat β (Nat.castCoe.{u2} β _inst_8))) n)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat α (HasLiftT.mk.{1, succ u1} Nat α (CoeTCₓ.coe.{1, succ u1} Nat α (Nat.castCoe.{u1} α (AddMonoidWithOne.toNatCast.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))))) n)) -> (forall (a : β) (b : β), Eq.{succ u1} α (f (Sup.sup.{u2} β _inst_9 a b)) (Sup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))) (f a) (f b))) -> (Eq.{succ u1} α (f (Bot.bot.{u2} β _inst_10)) (Bot.bot.{u1} α (CanonicallyOrderedAddMonoid.toHasBot.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))) -> (forall (a : β), Eq.{succ u1} α (f (KStar.kstar.{u2} β _inst_11 a)) (KStar.kstar.{u1} α (KleeneAlgebra.toHasKstar.{u1} α _inst_1) (f a))) -> (KleeneAlgebra.{u2} β)
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : KleeneAlgebra.{u1} α] [_inst_2 : Zero.{u2} β] [_inst_3 : One.{u2} β] [_inst_4 : Add.{u2} β] [_inst_5 : Mul.{u2} β] [_inst_6 : Pow.{u2, 0} β Nat] [_inst_7 : SMul.{0, u2} Nat β] [_inst_8 : NatCast.{u2} β] [_inst_9 : HasSup.{u2} β] [_inst_10 : Bot.{u2} β] [_inst_11 : KStar.{u2} β] (f : β -> α), (Function.Injective.{succ u2, succ u1} β α f) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 0 (Zero.toOfNat0.{u2} β _inst_2))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 1 (One.toOfNat1.{u2} β _inst_3))) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β _inst_4) x y)) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (f x) (f y))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β _inst_5) x y)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (f x) (f y))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HSMul.hSMul.{0, u2, u2} Nat β β (instHSMul.{0, u2} Nat β _inst_7) n x)) (HSMul.hSMul.{0, u1, u1} Nat α α (instHSMul.{0, u1} Nat α (AddMonoid.SMul.{u1} α (AddMonoidWithOne.toAddMonoid.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))))) n (f x))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat _inst_6) x n)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (f x) n)) -> (forall (n : Nat), Eq.{succ u1} α (f (Nat.cast.{u2} β _inst_8 n)) (Nat.cast.{u1} α (Semiring.toNatCast.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))) n)) -> (forall (a : β) (b : β), Eq.{succ u1} α (f (HasSup.sup.{u2} β _inst_9 a b)) (HasSup.sup.{u1} α (SemilatticeSup.toHasSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))) (f a) (f b))) -> (Eq.{succ u1} α (f (Bot.bot.{u2} β _inst_10)) (Bot.bot.{u1} α (CanonicallyOrderedAddMonoid.toBot.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))) -> (forall (a : β), Eq.{succ u1} α (f (KStar.kstar.{u2} β _inst_11 a)) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) (f a))) -> (KleeneAlgebra.{u2} β)
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : KleeneAlgebra.{u1} α] [_inst_2 : Zero.{u2} β] [_inst_3 : One.{u2} β] [_inst_4 : Add.{u2} β] [_inst_5 : Mul.{u2} β] [_inst_6 : Pow.{u2, 0} β Nat] [_inst_7 : SMul.{0, u2} Nat β] [_inst_8 : NatCast.{u2} β] [_inst_9 : Sup.{u2} β] [_inst_10 : Bot.{u2} β] [_inst_11 : KStar.{u2} β] (f : β -> α), (Function.Injective.{succ u2, succ u1} β α f) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 0 (Zero.toOfNat0.{u2} β _inst_2))) (OfNat.ofNat.{u1} α 0 (Zero.toOfNat0.{u1} α (MonoidWithZero.toZero.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) -> (Eq.{succ u1} α (f (OfNat.ofNat.{u2} β 1 (One.toOfNat1.{u2} β _inst_3))) (OfNat.ofNat.{u1} α 1 (One.toOfNat1.{u1} α (Semiring.toOne.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HAdd.hAdd.{u2, u2, u2} β β β (instHAdd.{u2} β _inst_4) x y)) (HAdd.hAdd.{u1, u1, u1} α α α (instHAdd.{u1} α (Distrib.toAdd.{u1} α (NonUnitalNonAssocSemiring.toDistrib.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))))) (f x) (f y))) -> (forall (x : β) (y : β), Eq.{succ u1} α (f (HMul.hMul.{u2, u2, u2} β β β (instHMul.{u2} β _inst_5) x y)) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (NonUnitalNonAssocSemiring.toMul.{u1} α (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (f x) (f y))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HSMul.hSMul.{0, u2, u2} Nat β β (instHSMul.{0, u2} Nat β _inst_7) n x)) (HSMul.hSMul.{0, u1, u1} Nat α α (instHSMul.{0, u1} Nat α (AddMonoid.SMul.{u1} α (AddMonoidWithOne.toAddMonoid.{u1} α (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} α (NonAssocSemiring.toAddCommMonoidWithOne.{u1} α (Semiring.toNonAssocSemiring.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))))) n (f x))) -> (forall (x : β) (n : Nat), Eq.{succ u1} α (f (HPow.hPow.{u2, 0, u2} β Nat β (instHPow.{u2, 0} β Nat _inst_6) x n)) (HPow.hPow.{u1, 0, u1} α Nat α (instHPow.{u1, 0} α Nat (Monoid.Pow.{u1} α (MonoidWithZero.toMonoid.{u1} α (Semiring.toMonoidWithZero.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1)))))) (f x) n)) -> (forall (n : Nat), Eq.{succ u1} α (f (Nat.cast.{u2} β _inst_8 n)) (Nat.cast.{u1} α (Semiring.toNatCast.{u1} α (IdemSemiring.toSemiring.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))) n)) -> (forall (a : β) (b : β), Eq.{succ u1} α (f (Sup.sup.{u2} β _inst_9 a b)) (Sup.sup.{u1} α (SemilatticeSup.toSup.{u1} α (IdemSemiring.toSemilatticeSup.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))) (f a) (f b))) -> (Eq.{succ u1} α (f (Bot.bot.{u2} β _inst_10)) (Bot.bot.{u1} α (CanonicallyOrderedAddMonoid.toBot.{u1} α (IdemSemiring.toCanonicallyOrderedAddMonoid.{u1} α (KleeneAlgebra.toIdemSemiring.{u1} α _inst_1))))) -> (forall (a : β), Eq.{succ u1} α (f (KStar.kstar.{u2} β _inst_11 a)) (KStar.kstar.{u1} α (KleeneAlgebra.toKStar.{u1} α _inst_1) (f a))) -> (KleeneAlgebra.{u2} β)
Case conversion may be inaccurate. Consider using '#align function.injective.kleene_algebra Function.Injective.kleeneAlgebraₓ'. -/
-- See note [reducible non-instances]
/-- Pullback an `idem_comm_semiring` instance along an injective function. -/
@[reducible]
protected def kleeneAlgebra [KleeneAlgebra α] [Zero β] [One β] [Add β] [Mul β] [Pow β ℕ] [SMul ℕ β]
- [NatCast β] [HasSup β] [Bot β] [KStar β] (f : β → α) (hf : Injective f) (zero : f 0 = 0)
+ [NatCast β] [Sup β] [Bot β] [KStar β] (f : β → α) (hf : Injective f) (zero : f 0 = 0)
(one : f 1 = 1) (add : ∀ x y, f (x + y) = f x + f y) (mul : ∀ x y, f (x * y) = f x * f y)
(nsmul : ∀ (x) (n : ℕ), f (n • x) = n • f x) (npow : ∀ (x) (n : ℕ), f (x ^ n) = f x ^ n)
(nat_cast : ∀ n : ℕ, f n = n) (sup : ∀ a b, f (a ⊔ b) = f a ⊔ f b) (bot : f ⊥ = ⊥)
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
nat_cast
/int_cast
/rat_cast
to natCast
/intCast
/ratCast
(#11486)
Now that I am defining NNRat.cast
, I want a definitive answer to this naming issue. Plenty of lemmas in mathlib already use natCast
/intCast
/ratCast
over nat_cast
/int_cast
/rat_cast
, and this matches with the general expectation that underscore-separated name parts correspond to a single declaration.
@@ -361,9 +361,9 @@ protected def idemSemiring [IdemSemiring α] [Zero β] [One β] [Add β] [Mul β
[NatCast β] [Sup β] [Bot β] (f : β → α) (hf : Injective f) (zero : f 0 = 0) (one : f 1 = 1)
(add : ∀ x y, f (x + y) = f x + f y) (mul : ∀ x y, f (x * y) = f x * f y)
(nsmul : ∀ (n : ℕ) (x), f (n • x) = n • f x) (npow : ∀ (x) (n : ℕ), f (x ^ n) = f x ^ n)
- (nat_cast : ∀ n : ℕ, f n = n) (sup : ∀ a b, f (a ⊔ b) = f a ⊔ f b) (bot : f ⊥ = ⊥) :
+ (natCast : ∀ n : ℕ, f n = n) (sup : ∀ a b, f (a ⊔ b) = f a ⊔ f b) (bot : f ⊥ = ⊥) :
IdemSemiring β :=
- { hf.semiring f zero one add mul nsmul npow nat_cast, hf.semilatticeSup _ sup,
+ { hf.semiring f zero one add mul nsmul npow natCast, hf.semilatticeSup _ sup,
‹Bot β› with
add_eq_sup := fun a b ↦ hf <| by erw [sup, add, add_eq_sup]
bot := ⊥
@@ -377,10 +377,10 @@ protected def idemCommSemiring [IdemCommSemiring α] [Zero β] [One β] [Add β]
[SMul ℕ β] [NatCast β] [Sup β] [Bot β] (f : β → α) (hf : Injective f) (zero : f 0 = 0)
(one : f 1 = 1) (add : ∀ x y, f (x + y) = f x + f y) (mul : ∀ x y, f (x * y) = f x * f y)
(nsmul : ∀ (n : ℕ) (x), f (n • x) = n • f x) (npow : ∀ (x) (n : ℕ), f (x ^ n) = f x ^ n)
- (nat_cast : ∀ n : ℕ, f n = n) (sup : ∀ a b, f (a ⊔ b) = f a ⊔ f b) (bot : f ⊥ = ⊥) :
+ (natCast : ∀ n : ℕ, f n = n) (sup : ∀ a b, f (a ⊔ b) = f a ⊔ f b) (bot : f ⊥ = ⊥) :
IdemCommSemiring β :=
- { hf.commSemiring f zero one add mul nsmul npow nat_cast,
- hf.idemSemiring f zero one add mul nsmul npow nat_cast sup bot with }
+ { hf.commSemiring f zero one add mul nsmul npow natCast,
+ hf.idemSemiring f zero one add mul nsmul npow natCast sup bot with }
#align function.injective.idem_comm_semiring Function.Injective.idemCommSemiring
-- See note [reducible non-instances]
@@ -390,9 +390,9 @@ protected def kleeneAlgebra [KleeneAlgebra α] [Zero β] [One β] [Add β] [Mul
[NatCast β] [Sup β] [Bot β] [KStar β] (f : β → α) (hf : Injective f) (zero : f 0 = 0)
(one : f 1 = 1) (add : ∀ x y, f (x + y) = f x + f y) (mul : ∀ x y, f (x * y) = f x * f y)
(nsmul : ∀ (n : ℕ) (x), f (n • x) = n • f x) (npow : ∀ (x) (n : ℕ), f (x ^ n) = f x ^ n)
- (nat_cast : ∀ n : ℕ, f n = n) (sup : ∀ a b, f (a ⊔ b) = f a ⊔ f b) (bot : f ⊥ = ⊥)
+ (natCast : ∀ n : ℕ, f n = n) (sup : ∀ a b, f (a ⊔ b) = f a ⊔ f b) (bot : f ⊥ = ⊥)
(kstar : ∀ a, f a∗ = (f a)∗) : KleeneAlgebra β :=
- { hf.idemSemiring f zero one add mul nsmul npow nat_cast sup bot,
+ { hf.idemSemiring f zero one add mul nsmul npow natCast sup bot,
‹KStar β› with
one_le_kstar := fun a ↦ one.trans_le <| by
erw [kstar]
Among other things, change the nsmul
, zsmul
, qsmul
fields to have n
/q
come before x
, because this matches the lemmas we want to write about them. It would be preferrable to perform the same changes to the AddMonoid
/AddGroup
-like typeclasses, but this is impossible with the current to_additive
framework, so instead I have inserted some Function.swap
at the interface between AddMonoid
/AddGroup
and Ring
/Field
.
Reduce the diff of #11203
@@ -360,7 +360,7 @@ namespace Function.Injective
protected def idemSemiring [IdemSemiring α] [Zero β] [One β] [Add β] [Mul β] [Pow β ℕ] [SMul ℕ β]
[NatCast β] [Sup β] [Bot β] (f : β → α) (hf : Injective f) (zero : f 0 = 0) (one : f 1 = 1)
(add : ∀ x y, f (x + y) = f x + f y) (mul : ∀ x y, f (x * y) = f x * f y)
- (nsmul : ∀ (x) (n : ℕ), f (n • x) = n • f x) (npow : ∀ (x) (n : ℕ), f (x ^ n) = f x ^ n)
+ (nsmul : ∀ (n : ℕ) (x), f (n • x) = n • f x) (npow : ∀ (x) (n : ℕ), f (x ^ n) = f x ^ n)
(nat_cast : ∀ n : ℕ, f n = n) (sup : ∀ a b, f (a ⊔ b) = f a ⊔ f b) (bot : f ⊥ = ⊥) :
IdemSemiring β :=
{ hf.semiring f zero one add mul nsmul npow nat_cast, hf.semilatticeSup _ sup,
@@ -376,7 +376,7 @@ protected def idemSemiring [IdemSemiring α] [Zero β] [One β] [Add β] [Mul β
protected def idemCommSemiring [IdemCommSemiring α] [Zero β] [One β] [Add β] [Mul β] [Pow β ℕ]
[SMul ℕ β] [NatCast β] [Sup β] [Bot β] (f : β → α) (hf : Injective f) (zero : f 0 = 0)
(one : f 1 = 1) (add : ∀ x y, f (x + y) = f x + f y) (mul : ∀ x y, f (x * y) = f x * f y)
- (nsmul : ∀ (x) (n : ℕ), f (n • x) = n • f x) (npow : ∀ (x) (n : ℕ), f (x ^ n) = f x ^ n)
+ (nsmul : ∀ (n : ℕ) (x), f (n • x) = n • f x) (npow : ∀ (x) (n : ℕ), f (x ^ n) = f x ^ n)
(nat_cast : ∀ n : ℕ, f n = n) (sup : ∀ a b, f (a ⊔ b) = f a ⊔ f b) (bot : f ⊥ = ⊥) :
IdemCommSemiring β :=
{ hf.commSemiring f zero one add mul nsmul npow nat_cast,
@@ -389,7 +389,7 @@ protected def idemCommSemiring [IdemCommSemiring α] [Zero β] [One β] [Add β]
protected def kleeneAlgebra [KleeneAlgebra α] [Zero β] [One β] [Add β] [Mul β] [Pow β ℕ] [SMul ℕ β]
[NatCast β] [Sup β] [Bot β] [KStar β] (f : β → α) (hf : Injective f) (zero : f 0 = 0)
(one : f 1 = 1) (add : ∀ x y, f (x + y) = f x + f y) (mul : ∀ x y, f (x * y) = f x * f y)
- (nsmul : ∀ (x) (n : ℕ), f (n • x) = n • f x) (npow : ∀ (x) (n : ℕ), f (x ^ n) = f x ^ n)
+ (nsmul : ∀ (n : ℕ) (x), f (n • x) = n • f x) (npow : ∀ (x) (n : ℕ), f (x ^ n) = f x ^ n)
(nat_cast : ∀ n : ℕ, f n = n) (sup : ∀ a b, f (a ⊔ b) = f a ⊔ f b) (bot : f ⊥ = ⊥)
(kstar : ∀ a, f a∗ = (f a)∗) : KleeneAlgebra β :=
{ hf.idemSemiring f zero one add mul nsmul npow nat_cast sup bot,
We cannot literally use @[inherit_doc] in these cases, but we can slightly modify the underlying docstring or a turn a regular comment into a doc comment.
@@ -63,6 +63,7 @@ class IdemSemiring (α : Type u) extends Semiring α, SemilatticeSup α where
protected add_eq_sup : ∀ a b : α, a + b = a ⊔ b := by
intros
rfl
+ /-- The bottom element of an idempotent semiring: `0` by default -/
protected bot : α := 0
protected bot_le : ∀ a, bot ≤ a
#align idem_semiring IdemSemiring
@@ -74,11 +75,12 @@ class IdemCommSemiring (α : Type u) extends CommSemiring α, IdemSemiring α
/-- Notation typeclass for the Kleene star `∗`. -/
class KStar (α : Type*) where
+ /-- The Kleene star operator on a Kleene algebra -/
protected kstar : α → α
#align has_kstar KStar
--- mathport name: «expr ∗»
-scoped[Computability] postfix:1024 "∗" => KStar.kstar
+@[inherit_doc] scoped[Computability] postfix:1024 "∗" => KStar.kstar
+
open Computability
/-- A Kleene Algebra is an idempotent semiring with an additional unary operator `kstar` (for Kleene
LinearOrderedCommGroupWithZero
(#11716)
Reconstitute the file Algebra.Order.Monoid.WithZero
from three files:
Algebra.Order.Monoid.WithZero.Defs
Algebra.Order.Monoid.WithZero.Basic
Algebra.Order.WithZero
Avoid importing it in many files. Most uses were just to get le_zero_iff
to work on Nat
.
Before
After
@@ -249,9 +249,7 @@ theorem kstar_eq_one : a∗ = 1 ↔ a ≤ 1 :=
fun h ↦ one_le_kstar.antisymm' <| kstar_le_of_mul_le_left le_rfl <| by rwa [one_mul]⟩
#align kstar_eq_one kstar_eq_one
-@[simp]
-theorem kstar_zero : (0 : α)∗ = 1 :=
- kstar_eq_one.2 zero_le_one
+@[simp] lemma kstar_zero : (0 : α)∗ = 1 := kstar_eq_one.2 (zero_le _)
#align kstar_zero kstar_zero
@[simp]
We change the following field in the definition of an additive commutative monoid:
nsmul_succ : ∀ (n : ℕ) (x : G),
- AddMonoid.nsmul (n + 1) x = x + AddMonoid.nsmul n x
+ AddMonoid.nsmul (n + 1) x = AddMonoid.nsmul n x + x
where the latter is more natural
We adjust the definitions of ^
in monoids, groups, etc.
Originally there was a warning comment about why this natural order was preferred
use
x * npowRec n x
and notnpowRec n x * x
in the definition to make sure that definitional unfolding ofnpowRec
is blocked, to avoid deep recursion issues.
but it seems to no longer apply.
Remarks on the PR :
pow_succ
and pow_succ'
have switched their meanings.Ideal.IsPrime.mul_mem_pow
which is defined in [Mathlib/RingTheory/DedekindDomain/Ideal.lean]. Changing the order of operation forced me to add the symmetric lemma Ideal.IsPrime.mem_pow_mul
.@@ -279,7 +279,7 @@ theorem kstar_idem (a : α) : a∗∗ = a∗ :=
theorem pow_le_kstar : ∀ {n : ℕ}, a ^ n ≤ a∗
| 0 => (pow_zero _).trans_le one_le_kstar
| n + 1 => by
- rw [pow_succ]
+ rw [pow_succ']
exact (mul_le_mul_left' pow_le_kstar _).trans mul_kstar_le_kstar
#align pow_le_kstar pow_le_kstar
inst
prefix to instance names (#11238)
This is not exhaustive; it largely does not rename instances that relate to algebra, and only focuses on the "core" order files.
@@ -288,7 +288,7 @@ end KleeneAlgebra
namespace Prod
instance instIdemSemiring [IdemSemiring α] [IdemSemiring β] : IdemSemiring (α × β) :=
- { Prod.instSemiring, Prod.semilatticeSup _ _, Prod.orderBot _ _ with
+ { Prod.instSemiring, Prod.instSemilatticeSup _ _, Prod.instOrderBot _ _ with
add_eq_sup := fun _ _ ↦ ext (add_eq_sup _ _) (add_eq_sup _ _) }
instance [IdemCommSemiring α] [IdemCommSemiring β] : IdemCommSemiring (α × β) :=
@@ -324,7 +324,7 @@ end Prod
namespace Pi
instance instIdemSemiring [∀ i, IdemSemiring (π i)] : IdemSemiring (∀ i, π i) :=
- { Pi.semiring, Pi.semilatticeSup, Pi.orderBot with
+ { Pi.semiring, Pi.instSemilatticeSup, Pi.instOrderBot with
add_eq_sup := fun _ _ ↦ funext fun _ ↦ add_eq_sup _ _ }
instance [∀ i, IdemCommSemiring (π i)] : IdemCommSemiring (∀ i, π i) :=
@@ -3,10 +3,10 @@ Copyright (c) 2022 Siddhartha Prasad, Yaël Dillies. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Siddhartha Prasad, Yaël Dillies
-/
-import Mathlib.Algebra.Order.Ring.Canonical
import Mathlib.Algebra.Ring.Pi
import Mathlib.Algebra.Ring.Prod
-import Mathlib.Order.Hom.CompleteLattice
+import Mathlib.Algebra.Ring.InjSurj
+import Mathlib.Tactic.Monotonicity.Attr
#align_import algebra.order.kleene from "leanprover-community/mathlib"@"98e83c3d541c77cdb7da20d79611a780ff8e7d90"
Renames:
CanonicallyOrderedMonoid
->
CanonicallyOrderedCommMonoid
CanonicallyOrderedAddMonoid
->
CanonicallyOrderedAddCommMonoid
CanonicallyLinearOrderedMonoid
->
CanonicallyLinearOrderedCommMonoid
CanonicallyLinearOrderedAddMonoid
->
CanonicallyLinearOrderedAddCommMonoid
@@ -167,15 +167,15 @@ theorem add_le (ha : a ≤ c) (hb : b ≤ c) : a + b ≤ c :=
#align add_le add_le
-- See note [lower instance priority]
-instance (priority := 100) IdemSemiring.toCanonicallyOrderedAddMonoid :
- CanonicallyOrderedAddMonoid α :=
+instance (priority := 100) IdemSemiring.toCanonicallyOrderedAddCommMonoid :
+ CanonicallyOrderedAddCommMonoid α :=
{ ‹IdemSemiring α› with
add_le_add_left := fun a b hbc c ↦ by
simp_rw [add_eq_sup]
exact sup_le_sup_left hbc _
exists_add_of_le := fun h ↦ ⟨_, h.add_eq_right.symm⟩
le_self_add := fun a b ↦ add_eq_right_iff_le.1 <| by rw [← add_assoc, add_idem] }
-#align idem_semiring.to_canonically_ordered_add_monoid IdemSemiring.toCanonicallyOrderedAddMonoid
+#align idem_semiring.to_canonically_ordered_add_monoid IdemSemiring.toCanonicallyOrderedAddCommMonoid
-- See note [lower instance priority]
instance (priority := 100) IdemSemiring.toCovariantClass_mul_le :
@@ -153,10 +153,10 @@ theorem add_eq_left_iff_le : a + b = a ↔ b ≤ a := by simp
theorem add_eq_right_iff_le : a + b = b ↔ a ≤ b := by simp
#align add_eq_right_iff_le add_eq_right_iff_le
-alias add_eq_left_iff_le ↔ _ LE.le.add_eq_left
+alias ⟨_, LE.le.add_eq_left⟩ := add_eq_left_iff_le
#align has_le.le.add_eq_left LE.le.add_eq_left
-alias add_eq_right_iff_le ↔ _ LE.le.add_eq_right
+alias ⟨_, LE.le.add_eq_right⟩ := add_eq_right_iff_le
#align has_le.le.add_eq_right LE.le.add_eq_right
theorem add_le_iff : a + b ≤ c ↔ a ≤ c ∧ b ≤ c := by simp
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -54,7 +54,7 @@ open Function
universe u
-variable {α β ι : Type _} {π : ι → Type _}
+variable {α β ι : Type*} {π : ι → Type*}
/-- An idempotent semiring is a semiring with the additional property that addition is idempotent.
-/
@@ -73,7 +73,7 @@ class IdemCommSemiring (α : Type u) extends CommSemiring α, IdemSemiring α
#align idem_comm_semiring IdemCommSemiring
/-- Notation typeclass for the Kleene star `∗`. -/
-class KStar (α : Type _) where
+class KStar (α : Type*) where
protected kstar : α → α
#align has_kstar KStar
@@ -88,7 +88,7 @@ star) that satisfies the following properties:
* If `a * c + b ≤ c`, then `a∗ * b ≤ c`
* If `c * a + b ≤ c`, then `b * a∗ ≤ c`
-/
-class KleeneAlgebra (α : Type _) extends IdemSemiring α, KStar α where
+class KleeneAlgebra (α : Type*) extends IdemSemiring α, KStar α where
protected one_le_kstar : ∀ a : α, 1 ≤ a∗
protected mul_kstar_le_kstar : ∀ a : α, a * a∗ ≤ a∗
protected kstar_mul_le_kstar : ∀ a : α, a∗ * a ≤ a∗
@@ -287,17 +287,17 @@ end KleeneAlgebra
namespace Prod
-instance [IdemSemiring α] [IdemSemiring β] : IdemSemiring (α × β) :=
- { Prod.instSemiringProd, Prod.semilatticeSup _ _, Prod.orderBot _ _ with
+instance instIdemSemiring [IdemSemiring α] [IdemSemiring β] : IdemSemiring (α × β) :=
+ { Prod.instSemiring, Prod.semilatticeSup _ _, Prod.orderBot _ _ with
add_eq_sup := fun _ _ ↦ ext (add_eq_sup _ _) (add_eq_sup _ _) }
instance [IdemCommSemiring α] [IdemCommSemiring β] : IdemCommSemiring (α × β) :=
- { Prod.instCommSemiringProd, Prod.instIdemSemiringProd with }
+ { Prod.instCommSemiring, Prod.instIdemSemiring with }
variable [KleeneAlgebra α] [KleeneAlgebra β]
instance : KleeneAlgebra (α × β) :=
- { Prod.instIdemSemiringProd with
+ { Prod.instIdemSemiring with
kstar := fun a ↦ (a.1∗, a.2∗)
one_le_kstar := fun _ ↦ ⟨one_le_kstar, one_le_kstar⟩
mul_kstar_le_kstar := fun _ ↦ ⟨mul_kstar_le_kstar, mul_kstar_le_kstar⟩
@@ -323,17 +323,17 @@ end Prod
namespace Pi
-instance [∀ i, IdemSemiring (π i)] : IdemSemiring (∀ i, π i) :=
+instance instIdemSemiring [∀ i, IdemSemiring (π i)] : IdemSemiring (∀ i, π i) :=
{ Pi.semiring, Pi.semilatticeSup, Pi.orderBot with
add_eq_sup := fun _ _ ↦ funext fun _ ↦ add_eq_sup _ _ }
instance [∀ i, IdemCommSemiring (π i)] : IdemCommSemiring (∀ i, π i) :=
- { Pi.commSemiring, Pi.instIdemSemiringForAll with }
+ { Pi.commSemiring, Pi.instIdemSemiring with }
variable [∀ i, KleeneAlgebra (π i)]
instance : KleeneAlgebra (∀ i, π i) :=
- { Pi.instIdemSemiringForAll with
+ { Pi.instIdemSemiring with
kstar := fun a i ↦ (a i)∗
one_le_kstar := fun _ _ ↦ one_le_kstar
mul_kstar_le_kstar := fun _ _ ↦ mul_kstar_le_kstar
@@ -2,17 +2,14 @@
Copyright (c) 2022 Siddhartha Prasad, Yaël Dillies. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Siddhartha Prasad, Yaël Dillies
-
-! This file was ported from Lean 3 source module algebra.order.kleene
-! leanprover-community/mathlib commit 98e83c3d541c77cdb7da20d79611a780ff8e7d90
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Algebra.Order.Ring.Canonical
import Mathlib.Algebra.Ring.Pi
import Mathlib.Algebra.Ring.Prod
import Mathlib.Order.Hom.CompleteLattice
+#align_import algebra.order.kleene from "leanprover-community/mathlib"@"98e83c3d541c77cdb7da20d79611a780ff8e7d90"
+
/-!
# Kleene Algebras
@@ -61,26 +61,23 @@ variable {α β ι : Type _} {π : ι → Type _}
/-- An idempotent semiring is a semiring with the additional property that addition is idempotent.
-/
--- @[protect_proj] -- Porting note: Not yet implemented
class IdemSemiring (α : Type u) extends Semiring α, SemilatticeSup α where
- sup := (· + ·)
- add_eq_sup : ∀ a b : α, a + b = a ⊔ b := by
+ protected sup := (· + ·)
+ protected add_eq_sup : ∀ a b : α, a + b = a ⊔ b := by
intros
rfl
- bot : α := 0
- bot_le : ∀ a, bot ≤ a
+ protected bot : α := 0
+ protected bot_le : ∀ a, bot ≤ a
#align idem_semiring IdemSemiring
/-- An idempotent commutative semiring is a commutative semiring with the additional property that
addition is idempotent. -/
--- @[protect_proj] -- Porting note: Not yet implemented
class IdemCommSemiring (α : Type u) extends CommSemiring α, IdemSemiring α
#align idem_comm_semiring IdemCommSemiring
/-- Notation typeclass for the Kleene star `∗`. -/
--- @[protect_proj] -- Porting note: Not yet implemented
class KStar (α : Type _) where
- kstar : α → α
+ protected kstar : α → α
#align has_kstar KStar
-- mathport name: «expr ∗»
@@ -94,13 +91,12 @@ star) that satisfies the following properties:
* If `a * c + b ≤ c`, then `a∗ * b ≤ c`
* If `c * a + b ≤ c`, then `b * a∗ ≤ c`
-/
--- @[protect_proj] -- Porting note: Not yet implemented
class KleeneAlgebra (α : Type _) extends IdemSemiring α, KStar α where
- one_le_kstar : ∀ a : α, 1 ≤ a∗
- mul_kstar_le_kstar : ∀ a : α, a * a∗ ≤ a∗
- kstar_mul_le_kstar : ∀ a : α, a∗ * a ≤ a∗
- mul_kstar_le_self : ∀ a b : α, b * a ≤ b → b * a∗ ≤ b
- kstar_mul_le_self : ∀ a b : α, a * b ≤ b → a∗ * b ≤ b
+ protected one_le_kstar : ∀ a : α, 1 ≤ a∗
+ protected mul_kstar_le_kstar : ∀ a : α, a * a∗ ≤ a∗
+ protected kstar_mul_le_kstar : ∀ a : α, a∗ * a ≤ a∗
+ protected mul_kstar_le_self : ∀ a b : α, b * a ≤ b → b * a∗ ≤ b
+ protected kstar_mul_le_self : ∀ a b : α, a * b ≤ b → a∗ * b ≤ b
#align kleene_algebra KleeneAlgebra
-- See note [lower instance priority]
This makes a mathlib4 version of mathlib3's tactic.basic
, now called Mathlib.Tactic.Common
, which imports all tactics which do not have significant theory requirements, and then is imported all across the base of the hierarchy.
This ensures that all common tactics are available nearly everywhere in the library, rather than having to be imported one-by-one as you need them.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -12,7 +12,6 @@ import Mathlib.Algebra.Order.Ring.Canonical
import Mathlib.Algebra.Ring.Pi
import Mathlib.Algebra.Ring.Prod
import Mathlib.Order.Hom.CompleteLattice
-import Mathlib.Tactic.ScopedNS -- Porting note: `scoped[]`
/-!
# Kleene Algebras
@@ -245,7 +245,7 @@ theorem le_kstar : a ≤ a∗ :=
le_trans (le_mul_of_one_le_left' one_le_kstar) kstar_mul_le_kstar
#align le_kstar le_kstar
--- @[mono] -- Porting note: unknown attribute [mono]
+@[mono]
theorem kstar_mono : Monotone (KStar.kstar : α → α) :=
fun _ _ h ↦
kstar_le_of_mul_le_left one_le_kstar <| kstar_mul_le (h.trans le_kstar) <| mul_kstar_le_kstar
@@ -366,7 +366,7 @@ namespace Function.Injective
/-- Pullback an `IdemSemiring` instance along an injective function. -/
@[reducible]
protected def idemSemiring [IdemSemiring α] [Zero β] [One β] [Add β] [Mul β] [Pow β ℕ] [SMul ℕ β]
- [NatCast β] [HasSup β] [Bot β] (f : β → α) (hf : Injective f) (zero : f 0 = 0) (one : f 1 = 1)
+ [NatCast β] [Sup β] [Bot β] (f : β → α) (hf : Injective f) (zero : f 0 = 0) (one : f 1 = 1)
(add : ∀ x y, f (x + y) = f x + f y) (mul : ∀ x y, f (x * y) = f x * f y)
(nsmul : ∀ (x) (n : ℕ), f (n • x) = n • f x) (npow : ∀ (x) (n : ℕ), f (x ^ n) = f x ^ n)
(nat_cast : ∀ n : ℕ, f n = n) (sup : ∀ a b, f (a ⊔ b) = f a ⊔ f b) (bot : f ⊥ = ⊥) :
@@ -382,7 +382,7 @@ protected def idemSemiring [IdemSemiring α] [Zero β] [One β] [Add β] [Mul β
/-- Pullback an `IdemCommSemiring` instance along an injective function. -/
@[reducible]
protected def idemCommSemiring [IdemCommSemiring α] [Zero β] [One β] [Add β] [Mul β] [Pow β ℕ]
- [SMul ℕ β] [NatCast β] [HasSup β] [Bot β] (f : β → α) (hf : Injective f) (zero : f 0 = 0)
+ [SMul ℕ β] [NatCast β] [Sup β] [Bot β] (f : β → α) (hf : Injective f) (zero : f 0 = 0)
(one : f 1 = 1) (add : ∀ x y, f (x + y) = f x + f y) (mul : ∀ x y, f (x * y) = f x * f y)
(nsmul : ∀ (x) (n : ℕ), f (n • x) = n • f x) (npow : ∀ (x) (n : ℕ), f (x ^ n) = f x ^ n)
(nat_cast : ∀ n : ℕ, f n = n) (sup : ∀ a b, f (a ⊔ b) = f a ⊔ f b) (bot : f ⊥ = ⊥) :
@@ -395,7 +395,7 @@ protected def idemCommSemiring [IdemCommSemiring α] [Zero β] [One β] [Add β]
/-- Pullback a `KleeneAlgebra` instance along an injective function. -/
@[reducible]
protected def kleeneAlgebra [KleeneAlgebra α] [Zero β] [One β] [Add β] [Mul β] [Pow β ℕ] [SMul ℕ β]
- [NatCast β] [HasSup β] [Bot β] [KStar β] (f : β → α) (hf : Injective f) (zero : f 0 = 0)
+ [NatCast β] [Sup β] [Bot β] [KStar β] (f : β → α) (hf : Injective f) (zero : f 0 = 0)
(one : f 1 = 1) (add : ∀ x y, f (x + y) = f x + f y) (mul : ∀ x y, f (x * y) = f x * f y)
(nsmul : ∀ (x) (n : ℕ), f (n • x) = n • f x) (npow : ∀ (x) (n : ℕ), f (x ^ n) = f x ^ n)
(nat_cast : ∀ n : ℕ, f n = n) (sup : ∀ a b, f (a ⊔ b) = f a ⊔ f b) (bot : f ⊥ = ⊥)
The unported dependencies are