computability.language
⟷
Mathlib.Computability.Language
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -3,7 +3,7 @@ Copyright (c) 2020 Fox Thomson. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Fox Thomson
-/
-import Algebra.Hom.Ring
+import Algebra.Ring.Hom.Defs
import Algebra.Order.Kleene
import Data.List.Join
import Data.Set.Lattice
@@ -293,7 +293,7 @@ theorem mem_pow {l : Language α} {x : List α} {n : ℕ} :
constructor
· rintro rfl; exact ⟨[], rfl, rfl, fun y h => h.elim⟩
· rintro ⟨_, rfl, rfl, _⟩; rfl
- · simp only [pow_succ, mem_mul, ihn]
+ · simp only [pow_succ', mem_mul, ihn]
constructor
· rintro ⟨a, b, ha, ⟨S, rfl, rfl, hS⟩, rfl⟩
exact ⟨a :: S, rfl, rfl, forall_mem_cons.2 ⟨ha, hS⟩⟩
@@ -326,7 +326,7 @@ theorem map_kstar (f : α → β) (l : Language α) : map f l∗ = (map f l)∗
#print Language.mul_self_kstar_comm /-
theorem mul_self_kstar_comm (l : Language α) : l∗ * l = l * l∗ := by
- simp only [kstar_eq_supr_pow, mul_supr, supr_mul, ← pow_succ, ← pow_succ']
+ simp only [kstar_eq_supr_pow, mul_supr, supr_mul, ← pow_succ', ← pow_succ]
#align language.mul_self_kstar_comm Language.mul_self_kstar_comm
-/
@@ -334,7 +334,7 @@ theorem mul_self_kstar_comm (l : Language α) : l∗ * l = l * l∗ := by
@[simp]
theorem one_add_self_mul_kstar_eq_kstar (l : Language α) : 1 + l * l∗ = l∗ :=
by
- simp only [kstar_eq_supr_pow, mul_supr, ← pow_succ, ← pow_zero l]
+ simp only [kstar_eq_supr_pow, mul_supr, ← pow_succ', ← pow_zero l]
exact sup_iSup_nat_succ _
#align language.one_add_self_mul_kstar_eq_kstar Language.one_add_self_mul_kstar_eq_kstar
-/
@@ -358,7 +358,7 @@ instance : KleeneAlgebra (Language α) :=
refine' iSup_le fun n => _
induction' n with n ih
· simp
- rw [pow_succ', mul_assoc (l ^ n) l m]
+ rw [pow_succ, mul_assoc (l ^ n) l m]
exact le_trans (le_mul_congr le_rfl h) ih
mul_kstar_le_self := fun l m h =>
by
@@ -366,7 +366,7 @@ instance : KleeneAlgebra (Language α) :=
refine' iSup_le fun n => _
induction' n with n ih
· simp
- rw [pow_succ, ← mul_assoc m l (l ^ n)]
+ rw [pow_succ', ← mul_assoc m l (l ^ n)]
exact le_trans (le_mul_congr h le_rfl) ih }
end Language
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -222,7 +222,7 @@ theorem kstar_def_nonempty (l : Language α) :
constructor
· rintro ⟨S, rfl, h⟩
refine' ⟨S.filter fun l => ¬List.isEmpty l, by simp, fun y hy => _⟩
- rw [mem_filter, empty_iff_eq_nil] at hy
+ rw [mem_filter, empty_iff_eq_nil] at hy
exact ⟨h y hy.1, hy.2⟩
· rintro ⟨S, hx, h⟩
exact ⟨S, hx, fun y hy => (h y hy).1⟩
@@ -298,7 +298,7 @@ theorem mem_pow {l : Language α} {x : List α} {n : ℕ} :
· rintro ⟨a, b, ha, ⟨S, rfl, rfl, hS⟩, rfl⟩
exact ⟨a :: S, rfl, rfl, forall_mem_cons.2 ⟨ha, hS⟩⟩
· rintro ⟨_ | ⟨a, S⟩, rfl, hn, hS⟩ <;> cases hn
- rw [forall_mem_cons] at hS
+ rw [forall_mem_cons] at hS
exact ⟨a, _, hS.1, ⟨S, rfl, rfl, hS.2⟩, rfl⟩
#align language.mem_pow Language.mem_pow
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,10 +3,10 @@ Copyright (c) 2020 Fox Thomson. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Fox Thomson
-/
-import Mathbin.Algebra.Hom.Ring
-import Mathbin.Algebra.Order.Kleene
-import Mathbin.Data.List.Join
-import Mathbin.Data.Set.Lattice
+import Algebra.Hom.Ring
+import Algebra.Order.Kleene
+import Data.List.Join
+import Data.Set.Lattice
#align_import computability.language from "leanprover-community/mathlib"@"e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,17 +2,14 @@
Copyright (c) 2020 Fox Thomson. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Fox Thomson
-
-! This file was ported from Lean 3 source module computability.language
-! leanprover-community/mathlib commit e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Algebra.Hom.Ring
import Mathbin.Algebra.Order.Kleene
import Mathbin.Data.List.Join
import Mathbin.Data.Set.Lattice
+#align_import computability.language from "leanprover-community/mathlib"@"e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b"
+
/-!
# Languages
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -87,9 +87,11 @@ theorem one_def : (1 : Language α) = {[]} :=
#align language.one_def Language.one_def
-/
+#print Language.add_def /-
theorem add_def (l m : Language α) : l + m = l ∪ m :=
rfl
#align language.add_def Language.add_def
+-/
#print Language.mul_def /-
theorem mul_def (l m : Language α) : l * m = image2 (· ++ ·) l m :=
@@ -127,9 +129,11 @@ theorem nil_mem_one : [] ∈ (1 : Language α) :=
#align language.nil_mem_one Language.nil_mem_one
-/
+#print Language.mem_add /-
theorem mem_add (l m : Language α) (x : List α) : x ∈ l + m ↔ x ∈ l ∨ x ∈ m :=
Iff.rfl
#align language.mem_add Language.mem_add
+-/
#print Language.mem_mul /-
theorem mem_mul : x ∈ l * m ↔ ∃ a b, a ∈ l ∧ b ∈ m ∧ a ++ b = x :=
@@ -181,11 +185,14 @@ instance : Semiring (Language α) where
left_distrib _ _ _ := image2_union_right
right_distrib _ _ _ := image2_union_left
+#print Language.add_self /-
@[simp]
theorem add_self (l : Language α) : l + l = l :=
sup_idem
#align language.add_self Language.add_self
+-/
+#print Language.map /-
/-- Maps the alphabet of a language. -/
def map (f : α → β) : Language α →+* Language β
where
@@ -195,15 +202,20 @@ def map (f : α → β) : Language α →+* Language β
map_add' := image_union _
map_mul' _ _ := image_image2_distrib <| map_append _
#align language.map Language.map
+-/
+#print Language.map_id /-
@[simp]
theorem map_id (l : Language α) : map id l = l := by simp [map]
#align language.map_id Language.map_id
+-/
+#print Language.map_map /-
@[simp]
theorem map_map (g : β → γ) (f : α → β) (l : Language α) : map g (map f l) = map (g ∘ f) l := by
simp [map, image_image]
#align language.map_map Language.map_map
+-/
#print Language.kstar_def_nonempty /-
theorem kstar_def_nonempty (l : Language α) :
@@ -220,9 +232,11 @@ theorem kstar_def_nonempty (l : Language α) :
#align language.kstar_def_nonempty Language.kstar_def_nonempty
-/
+#print Language.le_iff /-
theorem le_iff (l m : Language α) : l ≤ m ↔ l + m = m :=
sup_eq_right.symm
#align language.le_iff Language.le_iff
+-/
#print Language.le_mul_congr /-
theorem le_mul_congr {l₁ l₂ m₁ m₂ : Language α} : l₁ ≤ m₁ → l₂ ≤ m₂ → l₁ * l₂ ≤ m₁ * m₂ :=
@@ -233,34 +247,47 @@ theorem le_mul_congr {l₁ l₂ m₁ m₂ : Language α} : l₁ ≤ m₁ → l
#align language.le_mul_congr Language.le_mul_congr
-/
+#print Language.le_add_congr /-
theorem le_add_congr {l₁ l₂ m₁ m₂ : Language α} : l₁ ≤ m₁ → l₂ ≤ m₂ → l₁ + l₂ ≤ m₁ + m₂ :=
sup_le_sup
#align language.le_add_congr Language.le_add_congr
+-/
+#print Language.mem_iSup /-
theorem mem_iSup {ι : Sort v} {l : ι → Language α} {x : List α} : (x ∈ ⨆ i, l i) ↔ ∃ i, x ∈ l i :=
mem_iUnion
#align language.mem_supr Language.mem_iSup
+-/
+#print Language.iSup_mul /-
theorem iSup_mul {ι : Sort v} (l : ι → Language α) (m : Language α) :
(⨆ i, l i) * m = ⨆ i, l i * m :=
image2_iUnion_left _ _ _
#align language.supr_mul Language.iSup_mul
+-/
+#print Language.mul_iSup /-
theorem mul_iSup {ι : Sort v} (l : ι → Language α) (m : Language α) :
(m * ⨆ i, l i) = ⨆ i, m * l i :=
image2_iUnion_right _ _ _
#align language.mul_supr Language.mul_iSup
+-/
+#print Language.iSup_add /-
theorem iSup_add {ι : Sort v} [Nonempty ι] (l : ι → Language α) (m : Language α) :
(⨆ i, l i) + m = ⨆ i, l i + m :=
iSup_sup
#align language.supr_add Language.iSup_add
+-/
+#print Language.add_iSup /-
theorem add_iSup {ι : Sort v} [Nonempty ι] (l : ι → Language α) (m : Language α) :
(m + ⨆ i, l i) = ⨆ i, m + l i :=
sup_iSup
#align language.add_supr Language.add_iSup
+-/
+#print Language.mem_pow /-
theorem mem_pow {l : Language α} {x : List α} {n : ℕ} :
x ∈ l ^ n ↔ ∃ S : List (List α), x = S.join ∧ S.length = n ∧ ∀ y ∈ S, y ∈ l :=
by
@@ -277,7 +304,9 @@ theorem mem_pow {l : Language α} {x : List α} {n : ℕ} :
rw [forall_mem_cons] at hS
exact ⟨a, _, hS.1, ⟨S, rfl, rfl, hS.2⟩, rfl⟩
#align language.mem_pow Language.mem_pow
+-/
+#print Language.kstar_eq_iSup_pow /-
theorem kstar_eq_iSup_pow (l : Language α) : l∗ = ⨆ i : ℕ, l ^ i :=
by
ext x
@@ -286,7 +315,9 @@ theorem kstar_eq_iSup_pow (l : Language α) : l∗ = ⨆ i : ℕ, l ^ i :=
· rintro ⟨S, rfl, hS⟩; exact ⟨_, S, rfl, rfl, hS⟩
· rintro ⟨_, S, rfl, rfl, hS⟩; exact ⟨S, rfl, hS⟩
#align language.kstar_eq_supr_pow Language.kstar_eq_iSup_pow
+-/
+#print Language.map_kstar /-
@[simp]
theorem map_kstar (f : α → β) (l : Language α) : map f l∗ = (map f l)∗ :=
by
@@ -294,6 +325,7 @@ theorem map_kstar (f : α → β) (l : Language α) : map f l∗ = (map f l)∗
simp_rw [← map_pow]
exact image_Union
#align language.map_kstar Language.map_kstar
+-/
#print Language.mul_self_kstar_comm /-
theorem mul_self_kstar_comm (l : Language α) : l∗ * l = l * l∗ := by
@@ -301,17 +333,21 @@ theorem mul_self_kstar_comm (l : Language α) : l∗ * l = l * l∗ := by
#align language.mul_self_kstar_comm Language.mul_self_kstar_comm
-/
+#print Language.one_add_self_mul_kstar_eq_kstar /-
@[simp]
theorem one_add_self_mul_kstar_eq_kstar (l : Language α) : 1 + l * l∗ = l∗ :=
by
simp only [kstar_eq_supr_pow, mul_supr, ← pow_succ, ← pow_zero l]
exact sup_iSup_nat_succ _
#align language.one_add_self_mul_kstar_eq_kstar Language.one_add_self_mul_kstar_eq_kstar
+-/
+#print Language.one_add_kstar_mul_self_eq_kstar /-
@[simp]
theorem one_add_kstar_mul_self_eq_kstar (l : Language α) : 1 + l∗ * l = l∗ := by
rw [mul_self_kstar_comm, one_add_self_mul_kstar_eq_kstar]
#align language.one_add_kstar_mul_self_eq_kstar Language.one_add_kstar_mul_self_eq_kstar
+-/
instance : KleeneAlgebra (Language α) :=
{ Language.semiring, Set.completeBooleanAlgebra,
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -34,17 +34,17 @@ universe v
variable {α β γ : Type _}
-/- ./././Mathport/Syntax/Translate/Command.lean:42:9: unsupported derive handler has_mem[has_mem] (list[list] α) -/
-/- ./././Mathport/Syntax/Translate/Command.lean:42:9: unsupported derive handler has_singleton[has_singleton] (list[list] α) -/
-/- ./././Mathport/Syntax/Translate/Command.lean:42:9: unsupported derive handler has_insert[has_insert] (list[list] α) -/
+/- ./././Mathport/Syntax/Translate/Command.lean:43:9: unsupported derive handler has_mem[has_mem] (list[list] α) -/
+/- ./././Mathport/Syntax/Translate/Command.lean:43:9: unsupported derive handler has_singleton[has_singleton] (list[list] α) -/
+/- ./././Mathport/Syntax/Translate/Command.lean:43:9: unsupported derive handler has_insert[has_insert] (list[list] α) -/
#print Language /-
/-- A language is a set of strings over an alphabet. -/
def Language (α) :=
Set (List α)
deriving
- «./././Mathport/Syntax/Translate/Command.lean:42:9: unsupported derive handler has_mem[has_mem] (list[list] α)»,
- «./././Mathport/Syntax/Translate/Command.lean:42:9: unsupported derive handler has_singleton[has_singleton] (list[list] α)»,
- «./././Mathport/Syntax/Translate/Command.lean:42:9: unsupported derive handler has_insert[has_insert] (list[list] α)»,
+ «./././Mathport/Syntax/Translate/Command.lean:43:9: unsupported derive handler has_mem[has_mem] (list[list] α)»,
+ «./././Mathport/Syntax/Translate/Command.lean:43:9: unsupported derive handler has_singleton[has_singleton] (list[list] α)»,
+ «./././Mathport/Syntax/Translate/Command.lean:43:9: unsupported derive handler has_insert[has_insert] (list[list] α)»,
CompleteBooleanAlgebra
#align language Language
-/
@@ -100,11 +100,10 @@ theorem mul_def (l m : Language α) : l * m = image2 (· ++ ·) l m :=
/-- The Kleene star of a language `L` is the set of all strings which can be written by
concatenating strings from `L`. -/
instance : KStar (Language α) :=
- ⟨fun l => { x | ∃ L : List (List α), x = L.join ∧ ∀ y ∈ L, y ∈ l }⟩
+ ⟨fun l => {x | ∃ L : List (List α), x = L.join ∧ ∀ y ∈ L, y ∈ l}⟩
#print Language.kstar_def /-
-theorem kstar_def (l : Language α) :
- l∗ = { x | ∃ L : List (List α), x = L.join ∧ ∀ y ∈ L, y ∈ l } :=
+theorem kstar_def (l : Language α) : l∗ = {x | ∃ L : List (List α), x = L.join ∧ ∀ y ∈ L, y ∈ l} :=
rfl
#align language.kstar_def Language.kstar_def
-/
@@ -208,7 +207,7 @@ theorem map_map (g : β → γ) (f : α → β) (l : Language α) : map g (map f
#print Language.kstar_def_nonempty /-
theorem kstar_def_nonempty (l : Language α) :
- l∗ = { x | ∃ S : List (List α), x = S.join ∧ ∀ y ∈ S, y ∈ l ∧ y ≠ [] } :=
+ l∗ = {x | ∃ S : List (List α), x = S.join ∧ ∀ y ∈ S, y ∈ l ∧ y ≠ []} :=
by
ext x
constructor
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -40,7 +40,8 @@ variable {α β γ : Type _}
#print Language /-
/-- A language is a set of strings over an alphabet. -/
def Language (α) :=
- Set (List α)deriving
+ Set (List α)
+deriving
«./././Mathport/Syntax/Translate/Command.lean:42:9: unsupported derive handler has_mem[has_mem] (list[list] α)»,
«./././Mathport/Syntax/Translate/Command.lean:42:9: unsupported derive handler has_singleton[has_singleton] (list[list] α)»,
«./././Mathport/Syntax/Translate/Command.lean:42:9: unsupported derive handler has_insert[has_insert] (list[list] α)»,
@@ -213,7 +214,7 @@ theorem kstar_def_nonempty (l : Language α) :
constructor
· rintro ⟨S, rfl, h⟩
refine' ⟨S.filter fun l => ¬List.isEmpty l, by simp, fun y hy => _⟩
- rw [mem_filter, empty_iff_eq_nil] at hy
+ rw [mem_filter, empty_iff_eq_nil] at hy
exact ⟨h y hy.1, hy.2⟩
· rintro ⟨S, hx, h⟩
exact ⟨S, hx, fun y hy => (h y hy).1⟩
@@ -228,7 +229,7 @@ theorem le_iff (l m : Language α) : l ≤ m ↔ l + m = m :=
theorem le_mul_congr {l₁ l₂ m₁ m₂ : Language α} : l₁ ≤ m₁ → l₂ ≤ m₂ → l₁ * l₂ ≤ m₁ * m₂ :=
by
intro h₁ h₂ x hx
- simp only [mul_def, exists_and_left, mem_image2, image_prod] at hx⊢
+ simp only [mul_def, exists_and_left, mem_image2, image_prod] at hx ⊢
tauto
#align language.le_mul_congr Language.le_mul_congr
-/
@@ -274,7 +275,7 @@ theorem mem_pow {l : Language α} {x : List α} {n : ℕ} :
· rintro ⟨a, b, ha, ⟨S, rfl, rfl, hS⟩, rfl⟩
exact ⟨a :: S, rfl, rfl, forall_mem_cons.2 ⟨ha, hS⟩⟩
· rintro ⟨_ | ⟨a, S⟩, rfl, hn, hS⟩ <;> cases hn
- rw [forall_mem_cons] at hS
+ rw [forall_mem_cons] at hS
exact ⟨a, _, hS.1, ⟨S, rfl, rfl, hS.2⟩, rfl⟩
#align language.mem_pow Language.mem_pow
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -28,7 +28,7 @@ over the languages.
open List Set
-open Computability
+open scoped Computability
universe v
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -86,12 +86,6 @@ theorem one_def : (1 : Language α) = {[]} :=
#align language.one_def Language.one_def
-/
-/- warning: language.add_def -> Language.add_def is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (l : Language.{u1} α) (m : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.hasAdd.{u1} α)) l m) (Union.union.{u1} (Language.{u1} α) (Set.hasUnion.{u1} (List.{u1} α)) l m)
-but is expected to have type
- forall {α : Type.{u1}} (l : Language.{u1} α) (m : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) l m) (Union.union.{u1} (Set.{u1} (List.{u1} α)) (Set.instUnionSet.{u1} (List.{u1} α)) l m)
-Case conversion may be inaccurate. Consider using '#align language.add_def Language.add_defₓ'. -/
theorem add_def (l m : Language α) : l + m = l ∪ m :=
rfl
#align language.add_def Language.add_def
@@ -133,12 +127,6 @@ theorem nil_mem_one : [] ∈ (1 : Language α) :=
#align language.nil_mem_one Language.nil_mem_one
-/
-/- warning: language.mem_add -> Language.mem_add is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (l : Language.{u1} α) (m : Language.{u1} α) (x : List.{u1} α), Iff (Membership.Mem.{u1, u1} (List.{u1} α) (Language.{u1} α) (Language.hasMem.{u1} α) x (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.hasAdd.{u1} α)) l m)) (Or (Membership.Mem.{u1, u1} (List.{u1} α) (Language.{u1} α) (Language.hasMem.{u1} α) x l) (Membership.Mem.{u1, u1} (List.{u1} α) (Language.{u1} α) (Language.hasMem.{u1} α) x m))
-but is expected to have type
- forall {α : Type.{u1}} (l : Language.{u1} α) (m : Language.{u1} α) (x : List.{u1} α), Iff (Membership.mem.{u1, u1} (List.{u1} α) (Language.{u1} α) (instMembershipListLanguage.{u1} α) x (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) l m)) (Or (Membership.mem.{u1, u1} (List.{u1} α) (Language.{u1} α) (instMembershipListLanguage.{u1} α) x l) (Membership.mem.{u1, u1} (List.{u1} α) (Language.{u1} α) (instMembershipListLanguage.{u1} α) x m))
-Case conversion may be inaccurate. Consider using '#align language.mem_add Language.mem_addₓ'. -/
theorem mem_add (l m : Language α) (x : List α) : x ∈ l + m ↔ x ∈ l ∨ x ∈ m :=
Iff.rfl
#align language.mem_add Language.mem_add
@@ -193,23 +181,11 @@ instance : Semiring (Language α) where
left_distrib _ _ _ := image2_union_right
right_distrib _ _ _ := image2_union_left
-/- warning: language.add_self -> Language.add_self is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.hasAdd.{u1} α)) l l) l
-but is expected to have type
- forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) l l) l
-Case conversion may be inaccurate. Consider using '#align language.add_self Language.add_selfₓ'. -/
@[simp]
theorem add_self (l : Language α) : l + l = l :=
sup_idem
#align language.add_self Language.add_self
-/- warning: language.map -> Language.map is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}}, (α -> β) -> (RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β)))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}}, (α -> β) -> (RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.instSemiringLanguage.{u2} β)))
-Case conversion may be inaccurate. Consider using '#align language.map Language.mapₓ'. -/
/-- Maps the alphabet of a language. -/
def map (f : α → β) : Language α →+* Language β
where
@@ -220,19 +196,10 @@ def map (f : α → β) : Language α →+* Language β
map_mul' _ _ := image_image2_distrib <| map_append _
#align language.map Language.map
-/- warning: language.map_id -> Language.map_id is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α))) (fun (_x : RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α))) => (Language.{u1} α) -> (Language.{u1} α)) (RingHom.hasCoeToFun.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α))) (Language.map.{u1, u1} α α (id.{succ u1} α)) l) l
-but is expected to have type
- forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u1} α) => Language.{u1} α) l) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (fun (_x : Language.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u1} α) => Language.{u1} α) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (RingHom.instRingHomClassRingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))))) (Language.map.{u1, u1} α α (id.{succ u1} α)) l) l
-Case conversion may be inaccurate. Consider using '#align language.map_id Language.map_idₓ'. -/
@[simp]
theorem map_id (l : Language α) : map id l = l := by simp [map]
#align language.map_id Language.map_id
-/- warning: language.map_map -> Language.map_map is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align language.map_map Language.map_mapₓ'. -/
@[simp]
theorem map_map (g : β → γ) (f : α → β) (l : Language α) : map g (map f l) = map (g ∘ f) l := by
simp [map, image_image]
@@ -253,12 +220,6 @@ theorem kstar_def_nonempty (l : Language α) :
#align language.kstar_def_nonempty Language.kstar_def_nonempty
-/
-/- warning: language.le_iff -> Language.le_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (l : Language.{u1} α) (m : Language.{u1} α), Iff (LE.le.{u1} (Language.{u1} α) (Set.hasLe.{u1} (List.{u1} α)) l m) (Eq.{succ u1} (Language.{u1} α) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.hasAdd.{u1} α)) l m) m)
-but is expected to have type
- forall {α : Type.{u1}} (l : Language.{u1} α) (m : Language.{u1} α), Iff (LE.le.{u1} (Language.{u1} α) (Preorder.toLE.{u1} (Language.{u1} α) (PartialOrder.toPreorder.{u1} (Language.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Language.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Language.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Language.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Language.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)))))))) l m) (Eq.{succ u1} (Language.{u1} α) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) l m) m)
-Case conversion may be inaccurate. Consider using '#align language.le_iff Language.le_iffₓ'. -/
theorem le_iff (l m : Language α) : l ≤ m ↔ l + m = m :=
sup_eq_right.symm
#align language.le_iff Language.le_iff
@@ -272,76 +233,34 @@ theorem le_mul_congr {l₁ l₂ m₁ m₂ : Language α} : l₁ ≤ m₁ → l
#align language.le_mul_congr Language.le_mul_congr
-/
-/- warning: language.le_add_congr -> Language.le_add_congr is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {l₁ : Language.{u1} α} {l₂ : Language.{u1} α} {m₁ : Language.{u1} α} {m₂ : Language.{u1} α}, (LE.le.{u1} (Language.{u1} α) (Set.hasLe.{u1} (List.{u1} α)) l₁ m₁) -> (LE.le.{u1} (Language.{u1} α) (Set.hasLe.{u1} (List.{u1} α)) l₂ m₂) -> (LE.le.{u1} (Language.{u1} α) (Set.hasLe.{u1} (List.{u1} α)) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.hasAdd.{u1} α)) l₁ l₂) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.hasAdd.{u1} α)) m₁ m₂))
-but is expected to have type
- forall {α : Type.{u1}} {l₁ : Language.{u1} α} {l₂ : Language.{u1} α} {m₁ : Language.{u1} α} {m₂ : Language.{u1} α}, (LE.le.{u1} (Language.{u1} α) (Preorder.toLE.{u1} (Language.{u1} α) (PartialOrder.toPreorder.{u1} (Language.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Language.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Language.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Language.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Language.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)))))))) l₁ m₁) -> (LE.le.{u1} (Language.{u1} α) (Preorder.toLE.{u1} (Language.{u1} α) (PartialOrder.toPreorder.{u1} (Language.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Language.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Language.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Language.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Language.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)))))))) l₂ m₂) -> (LE.le.{u1} (Language.{u1} α) (Preorder.toLE.{u1} (Language.{u1} α) (PartialOrder.toPreorder.{u1} (Language.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Language.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Language.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Language.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Language.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)))))))) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) l₁ l₂) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) m₁ m₂))
-Case conversion may be inaccurate. Consider using '#align language.le_add_congr Language.le_add_congrₓ'. -/
theorem le_add_congr {l₁ l₂ m₁ m₂ : Language α} : l₁ ≤ m₁ → l₂ ≤ m₂ → l₁ + l₂ ≤ m₁ + m₂ :=
sup_le_sup
#align language.le_add_congr Language.le_add_congr
-/- warning: language.mem_supr -> Language.mem_iSup is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u2}} {ι : Sort.{u1}} {l : ι -> (Language.{u2} α)} {x : List.{u2} α}, Iff (Membership.Mem.{u2, u2} (List.{u2} α) (Language.{u2} α) (Language.hasMem.{u2} α) x (iSup.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => l i))) (Exists.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} (List.{u2} α) (Language.{u2} α) (Language.hasMem.{u2} α) x (l i)))
-but is expected to have type
- forall {α : Type.{u1}} {ι : Sort.{u2}} {l : ι -> (Language.{u1} α)} {x : List.{u1} α}, Iff (Membership.mem.{u1, u1} (List.{u1} α) (Language.{u1} α) (instMembershipListLanguage.{u1} α) x (iSup.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => l i))) (Exists.{u2} ι (fun (i : ι) => Membership.mem.{u1, u1} (List.{u1} α) (Language.{u1} α) (instMembershipListLanguage.{u1} α) x (l i)))
-Case conversion may be inaccurate. Consider using '#align language.mem_supr Language.mem_iSupₓ'. -/
theorem mem_iSup {ι : Sort v} {l : ι → Language α} {x : List α} : (x ∈ ⨆ i, l i) ↔ ∃ i, x ∈ l i :=
mem_iUnion
#align language.mem_supr Language.mem_iSup
-/- warning: language.supr_mul -> Language.iSup_mul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u2}} {ι : Sort.{u1}} (l : ι -> (Language.{u2} α)) (m : Language.{u2} α), Eq.{succ u2} (Language.{u2} α) (HMul.hMul.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHMul.{u2} (Language.{u2} α) (Language.hasMul.{u2} α)) (iSup.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => l i)) m) (iSup.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => HMul.hMul.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHMul.{u2} (Language.{u2} α) (Language.hasMul.{u2} α)) (l i) m))
-but is expected to have type
- forall {α : Type.{u1}} {ι : Sort.{u2}} (l : ι -> (Language.{u1} α)) (m : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HMul.hMul.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHMul.{u1} (Language.{u1} α) (Language.instMulLanguage.{u1} α)) (iSup.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => l i)) m) (iSup.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => HMul.hMul.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHMul.{u1} (Language.{u1} α) (Language.instMulLanguage.{u1} α)) (l i) m))
-Case conversion may be inaccurate. Consider using '#align language.supr_mul Language.iSup_mulₓ'. -/
theorem iSup_mul {ι : Sort v} (l : ι → Language α) (m : Language α) :
(⨆ i, l i) * m = ⨆ i, l i * m :=
image2_iUnion_left _ _ _
#align language.supr_mul Language.iSup_mul
-/- warning: language.mul_supr -> Language.mul_iSup is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u2}} {ι : Sort.{u1}} (l : ι -> (Language.{u2} α)) (m : Language.{u2} α), Eq.{succ u2} (Language.{u2} α) (HMul.hMul.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHMul.{u2} (Language.{u2} α) (Language.hasMul.{u2} α)) m (iSup.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => l i))) (iSup.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => HMul.hMul.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHMul.{u2} (Language.{u2} α) (Language.hasMul.{u2} α)) m (l i)))
-but is expected to have type
- forall {α : Type.{u1}} {ι : Sort.{u2}} (l : ι -> (Language.{u1} α)) (m : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HMul.hMul.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHMul.{u1} (Language.{u1} α) (Language.instMulLanguage.{u1} α)) m (iSup.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => l i))) (iSup.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => HMul.hMul.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHMul.{u1} (Language.{u1} α) (Language.instMulLanguage.{u1} α)) m (l i)))
-Case conversion may be inaccurate. Consider using '#align language.mul_supr Language.mul_iSupₓ'. -/
theorem mul_iSup {ι : Sort v} (l : ι → Language α) (m : Language α) :
(m * ⨆ i, l i) = ⨆ i, m * l i :=
image2_iUnion_right _ _ _
#align language.mul_supr Language.mul_iSup
-/- warning: language.supr_add -> Language.iSup_add is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : Nonempty.{u1} ι] (l : ι -> (Language.{u2} α)) (m : Language.{u2} α), Eq.{succ u2} (Language.{u2} α) (HAdd.hAdd.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHAdd.{u2} (Language.{u2} α) (Language.hasAdd.{u2} α)) (iSup.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => l i)) m) (iSup.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => HAdd.hAdd.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHAdd.{u2} (Language.{u2} α) (Language.hasAdd.{u2} α)) (l i) m))
-but is expected to have type
- forall {α : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (l : ι -> (Language.{u1} α)) (m : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) (iSup.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => l i)) m) (iSup.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) (l i) m))
-Case conversion may be inaccurate. Consider using '#align language.supr_add Language.iSup_addₓ'. -/
theorem iSup_add {ι : Sort v} [Nonempty ι] (l : ι → Language α) (m : Language α) :
(⨆ i, l i) + m = ⨆ i, l i + m :=
iSup_sup
#align language.supr_add Language.iSup_add
-/- warning: language.add_supr -> Language.add_iSup is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : Nonempty.{u1} ι] (l : ι -> (Language.{u2} α)) (m : Language.{u2} α), Eq.{succ u2} (Language.{u2} α) (HAdd.hAdd.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHAdd.{u2} (Language.{u2} α) (Language.hasAdd.{u2} α)) m (iSup.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => l i))) (iSup.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => HAdd.hAdd.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHAdd.{u2} (Language.{u2} α) (Language.hasAdd.{u2} α)) m (l i)))
-but is expected to have type
- forall {α : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (l : ι -> (Language.{u1} α)) (m : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) m (iSup.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => l i))) (iSup.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) m (l i)))
-Case conversion may be inaccurate. Consider using '#align language.add_supr Language.add_iSupₓ'. -/
theorem add_iSup {ι : Sort v} [Nonempty ι] (l : ι → Language α) (m : Language α) :
(m + ⨆ i, l i) = ⨆ i, m + l i :=
sup_iSup
#align language.add_supr Language.add_iSup
-/- warning: language.mem_pow -> Language.mem_pow is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {l : Language.{u1} α} {x : List.{u1} α} {n : Nat}, Iff (Membership.Mem.{u1, u1} (List.{u1} α) (Language.{u1} α) (Language.hasMem.{u1} α) x (HPow.hPow.{u1, 0, u1} (Language.{u1} α) Nat (Language.{u1} α) (instHPow.{u1, 0} (Language.{u1} α) Nat (Monoid.Pow.{u1} (Language.{u1} α) (MonoidWithZero.toMonoid.{u1} (Language.{u1} α) (Semiring.toMonoidWithZero.{u1} (Language.{u1} α) (Language.semiring.{u1} α))))) l n)) (Exists.{succ u1} (List.{u1} (List.{u1} α)) (fun (S : List.{u1} (List.{u1} α)) => And (Eq.{succ u1} (List.{u1} α) x (List.join.{u1} α S)) (And (Eq.{1} Nat (List.length.{u1} (List.{u1} α) S) n) (forall (y : List.{u1} α), (Membership.Mem.{u1, u1} (List.{u1} α) (List.{u1} (List.{u1} α)) (List.hasMem.{u1} (List.{u1} α)) y S) -> (Membership.Mem.{u1, u1} (List.{u1} α) (Language.{u1} α) (Language.hasMem.{u1} α) y l)))))
-but is expected to have type
- forall {α : Type.{u1}} {l : Language.{u1} α} {x : List.{u1} α} {n : Nat}, Iff (Membership.mem.{u1, u1} (List.{u1} α) (Language.{u1} α) (instMembershipListLanguage.{u1} α) x (HPow.hPow.{u1, 0, u1} (Language.{u1} α) Nat (Language.{u1} α) (instHPow.{u1, 0} (Language.{u1} α) Nat (Monoid.Pow.{u1} (Language.{u1} α) (MonoidWithZero.toMonoid.{u1} (Language.{u1} α) (Semiring.toMonoidWithZero.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))))) l n)) (Exists.{succ u1} (List.{u1} (List.{u1} α)) (fun (S : List.{u1} (List.{u1} α)) => And (Eq.{succ u1} (List.{u1} α) x (List.join.{u1} α S)) (And (Eq.{1} Nat (List.length.{u1} (List.{u1} α) S) n) (forall (y : List.{u1} α), (Membership.mem.{u1, u1} (List.{u1} α) (List.{u1} (List.{u1} α)) (List.instMembershipList.{u1} (List.{u1} α)) y S) -> (Membership.mem.{u1, u1} (List.{u1} α) (Language.{u1} α) (instMembershipListLanguage.{u1} α) y l)))))
-Case conversion may be inaccurate. Consider using '#align language.mem_pow Language.mem_powₓ'. -/
theorem mem_pow {l : Language α} {x : List α} {n : ℕ} :
x ∈ l ^ n ↔ ∃ S : List (List α), x = S.join ∧ S.length = n ∧ ∀ y ∈ S, y ∈ l :=
by
@@ -359,12 +278,6 @@ theorem mem_pow {l : Language α} {x : List α} {n : ℕ} :
exact ⟨a, _, hS.1, ⟨S, rfl, rfl, hS.2⟩, rfl⟩
#align language.mem_pow Language.mem_pow
-/- warning: language.kstar_eq_supr_pow -> Language.kstar_eq_iSup_pow is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (KStar.kstar.{u1} (Language.{u1} α) (Language.hasKstar.{u1} α) l) (iSup.{u1, 1} (Language.{u1} α) (Set.hasSup.{u1} (List.{u1} α)) Nat (fun (i : Nat) => HPow.hPow.{u1, 0, u1} (Language.{u1} α) Nat (Language.{u1} α) (instHPow.{u1, 0} (Language.{u1} α) Nat (Monoid.Pow.{u1} (Language.{u1} α) (MonoidWithZero.toMonoid.{u1} (Language.{u1} α) (Semiring.toMonoidWithZero.{u1} (Language.{u1} α) (Language.semiring.{u1} α))))) l i))
-but is expected to have type
- forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (KStar.kstar.{u1} (Language.{u1} α) (Language.instKStarLanguage.{u1} α) l) (iSup.{u1, 1} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) Nat (fun (i : Nat) => HPow.hPow.{u1, 0, u1} (Language.{u1} α) Nat (Language.{u1} α) (instHPow.{u1, 0} (Language.{u1} α) Nat (Monoid.Pow.{u1} (Language.{u1} α) (MonoidWithZero.toMonoid.{u1} (Language.{u1} α) (Semiring.toMonoidWithZero.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))))) l i))
-Case conversion may be inaccurate. Consider using '#align language.kstar_eq_supr_pow Language.kstar_eq_iSup_powₓ'. -/
theorem kstar_eq_iSup_pow (l : Language α) : l∗ = ⨆ i : ℕ, l ^ i :=
by
ext x
@@ -374,12 +287,6 @@ theorem kstar_eq_iSup_pow (l : Language α) : l∗ = ⨆ i : ℕ, l ^ i :=
· rintro ⟨_, S, rfl, rfl, hS⟩; exact ⟨S, rfl, hS⟩
#align language.kstar_eq_supr_pow Language.kstar_eq_iSup_pow
-/- warning: language.map_kstar -> Language.map_kstar is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (l : Language.{u1} α), Eq.{succ u2} (Language.{u2} β) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (fun (_x : RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) => (Language.{u1} α) -> (Language.{u2} β)) (RingHom.hasCoeToFun.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (Language.map.{u1, u2} α β f) (KStar.kstar.{u1} (Language.{u1} α) (Language.hasKstar.{u1} α) l)) (KStar.kstar.{u2} (Language.{u2} β) (Language.hasKstar.{u2} β) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (fun (_x : RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) => (Language.{u1} α) -> (Language.{u2} β)) (RingHom.hasCoeToFun.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (Language.map.{u1, u2} α β f) l))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (l : Language.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u2} α) => Language.{u1} β) (KStar.kstar.{u2} (Language.{u2} α) (Language.instKStarLanguage.{u2} α) l)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (fun (_x : Language.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u2} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u2, u1} α β f) (KStar.kstar.{u2} (Language.{u2} α) (Language.instKStarLanguage.{u2} α) l)) (KStar.kstar.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u2} α) => Language.{u1} β) l) (Language.instKStarLanguage.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (fun (_x : Language.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u2} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u2, u1} α β f) l))
-Case conversion may be inaccurate. Consider using '#align language.map_kstar Language.map_kstarₓ'. -/
@[simp]
theorem map_kstar (f : α → β) (l : Language α) : map f l∗ = (map f l)∗ :=
by
@@ -394,12 +301,6 @@ theorem mul_self_kstar_comm (l : Language α) : l∗ * l = l * l∗ := by
#align language.mul_self_kstar_comm Language.mul_self_kstar_comm
-/
-/- warning: language.one_add_self_mul_kstar_eq_kstar -> Language.one_add_self_mul_kstar_eq_kstar is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.hasAdd.{u1} α)) (OfNat.ofNat.{u1} (Language.{u1} α) 1 (OfNat.mk.{u1} (Language.{u1} α) 1 (One.one.{u1} (Language.{u1} α) (Language.hasOne.{u1} α)))) (HMul.hMul.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHMul.{u1} (Language.{u1} α) (Language.hasMul.{u1} α)) l (KStar.kstar.{u1} (Language.{u1} α) (Language.hasKstar.{u1} α) l))) (KStar.kstar.{u1} (Language.{u1} α) (Language.hasKstar.{u1} α) l)
-but is expected to have type
- forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) (OfNat.ofNat.{u1} (Language.{u1} α) 1 (One.toOfNat1.{u1} (Language.{u1} α) (Language.instOneLanguage.{u1} α))) (HMul.hMul.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHMul.{u1} (Language.{u1} α) (Language.instMulLanguage.{u1} α)) l (KStar.kstar.{u1} (Language.{u1} α) (Language.instKStarLanguage.{u1} α) l))) (KStar.kstar.{u1} (Language.{u1} α) (Language.instKStarLanguage.{u1} α) l)
-Case conversion may be inaccurate. Consider using '#align language.one_add_self_mul_kstar_eq_kstar Language.one_add_self_mul_kstar_eq_kstarₓ'. -/
@[simp]
theorem one_add_self_mul_kstar_eq_kstar (l : Language α) : 1 + l * l∗ = l∗ :=
by
@@ -407,12 +308,6 @@ theorem one_add_self_mul_kstar_eq_kstar (l : Language α) : 1 + l * l∗ = l∗
exact sup_iSup_nat_succ _
#align language.one_add_self_mul_kstar_eq_kstar Language.one_add_self_mul_kstar_eq_kstar
-/- warning: language.one_add_kstar_mul_self_eq_kstar -> Language.one_add_kstar_mul_self_eq_kstar is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.hasAdd.{u1} α)) (OfNat.ofNat.{u1} (Language.{u1} α) 1 (OfNat.mk.{u1} (Language.{u1} α) 1 (One.one.{u1} (Language.{u1} α) (Language.hasOne.{u1} α)))) (HMul.hMul.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHMul.{u1} (Language.{u1} α) (Language.hasMul.{u1} α)) (KStar.kstar.{u1} (Language.{u1} α) (Language.hasKstar.{u1} α) l) l)) (KStar.kstar.{u1} (Language.{u1} α) (Language.hasKstar.{u1} α) l)
-but is expected to have type
- forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) (OfNat.ofNat.{u1} (Language.{u1} α) 1 (One.toOfNat1.{u1} (Language.{u1} α) (Language.instOneLanguage.{u1} α))) (HMul.hMul.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHMul.{u1} (Language.{u1} α) (Language.instMulLanguage.{u1} α)) (KStar.kstar.{u1} (Language.{u1} α) (Language.instKStarLanguage.{u1} α) l) l)) (KStar.kstar.{u1} (Language.{u1} α) (Language.instKStarLanguage.{u1} α) l)
-Case conversion may be inaccurate. Consider using '#align language.one_add_kstar_mul_self_eq_kstar Language.one_add_kstar_mul_self_eq_kstarₓ'. -/
@[simp]
theorem one_add_kstar_mul_self_eq_kstar (l : Language α) : 1 + l∗ * l = l∗ := by
rw [mul_self_kstar_comm, one_add_self_mul_kstar_eq_kstar]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -348,10 +348,8 @@ theorem mem_pow {l : Language α} {x : List α} {n : ℕ} :
induction' n with n ihn generalizing x
· simp only [mem_one, pow_zero, length_eq_zero]
constructor
- · rintro rfl
- exact ⟨[], rfl, rfl, fun y h => h.elim⟩
- · rintro ⟨_, rfl, rfl, _⟩
- rfl
+ · rintro rfl; exact ⟨[], rfl, rfl, fun y h => h.elim⟩
+ · rintro ⟨_, rfl, rfl, _⟩; rfl
· simp only [pow_succ, mem_mul, ihn]
constructor
· rintro ⟨a, b, ha, ⟨S, rfl, rfl, hS⟩, rfl⟩
@@ -372,10 +370,8 @@ theorem kstar_eq_iSup_pow (l : Language α) : l∗ = ⨆ i : ℕ, l ^ i :=
ext x
simp only [mem_kstar, mem_supr, mem_pow]
constructor
- · rintro ⟨S, rfl, hS⟩
- exact ⟨_, S, rfl, rfl, hS⟩
- · rintro ⟨_, S, rfl, rfl, hS⟩
- exact ⟨S, rfl, hS⟩
+ · rintro ⟨S, rfl, hS⟩; exact ⟨_, S, rfl, rfl, hS⟩
+ · rintro ⟨_, S, rfl, rfl, hS⟩; exact ⟨S, rfl, hS⟩
#align language.kstar_eq_supr_pow Language.kstar_eq_iSup_pow
/- warning: language.map_kstar -> Language.map_kstar is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -231,10 +231,7 @@ theorem map_id (l : Language α) : map id l = l := by simp [map]
#align language.map_id Language.map_id
/- warning: language.map_map -> Language.map_map is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} (g : β -> γ) (f : α -> β) (l : Language.{u1} α), Eq.{succ u3} (Language.{u3} γ) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingHom.{u2, u3} (Language.{u2} β) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) (fun (_x : RingHom.{u2, u3} (Language.{u2} β) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) => (Language.{u2} β) -> (Language.{u3} γ)) (RingHom.hasCoeToFun.{u2, u3} (Language.{u2} β) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) (Language.map.{u2, u3} β γ g) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (fun (_x : RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) => (Language.{u1} α) -> (Language.{u2} β)) (RingHom.hasCoeToFun.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (Language.map.{u1, u2} α β f) l)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} (Language.{u1} α) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) (fun (_x : RingHom.{u1, u3} (Language.{u1} α) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) => (Language.{u1} α) -> (Language.{u3} γ)) (RingHom.hasCoeToFun.{u1, u3} (Language.{u1} α) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) (Language.map.{u1, u3} α γ (Function.comp.{succ u1, succ u2, succ u3} α β γ g f)) l)
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u1}} {γ : Type.{u2}} (g : β -> γ) (f : α -> β) (l : Language.{u3} α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u1} β) => Language.{u2} γ) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (fun (a : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u3} α) => Language.{u1} β) a) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u3, u1} α β f) l)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (fun (_x : Language.{u1} β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u1} β) => Language.{u2} γ) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)) (RingHom.instRingHomClassRingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))))) (Language.map.{u1, u2} β γ g) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (fun (_x : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u3} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u3, u1} α β f) l)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (fun (_x : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u3} α) => Language.{u2} γ) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)) (RingHom.instRingHomClassRingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))))) (Language.map.{u3, u2} α γ (Function.comp.{succ u3, succ u1, succ u2} α β γ g f)) l)
+<too large>
Case conversion may be inaccurate. Consider using '#align language.map_map Language.map_mapₓ'. -/
@[simp]
theorem map_map (g : β → γ) (f : α → β) (l : Language α) : map g (map f l) = map (g ∘ f) l := by
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -224,7 +224,7 @@ def map (f : α → β) : Language α →+* Language β
lean 3 declaration is
forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α))) (fun (_x : RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α))) => (Language.{u1} α) -> (Language.{u1} α)) (RingHom.hasCoeToFun.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α))) (Language.map.{u1, u1} α α (id.{succ u1} α)) l) l
but is expected to have type
- forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u1} α) => Language.{u1} α) l) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (fun (_x : Language.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u1} α) => Language.{u1} α) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (RingHom.instRingHomClassRingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))))) (Language.map.{u1, u1} α α (id.{succ u1} α)) l) l
+ forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u1} α) => Language.{u1} α) l) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (fun (_x : Language.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u1} α) => Language.{u1} α) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (RingHom.instRingHomClassRingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))))) (Language.map.{u1, u1} α α (id.{succ u1} α)) l) l
Case conversion may be inaccurate. Consider using '#align language.map_id Language.map_idₓ'. -/
@[simp]
theorem map_id (l : Language α) : map id l = l := by simp [map]
@@ -234,7 +234,7 @@ theorem map_id (l : Language α) : map id l = l := by simp [map]
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} (g : β -> γ) (f : α -> β) (l : Language.{u1} α), Eq.{succ u3} (Language.{u3} γ) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingHom.{u2, u3} (Language.{u2} β) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) (fun (_x : RingHom.{u2, u3} (Language.{u2} β) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) => (Language.{u2} β) -> (Language.{u3} γ)) (RingHom.hasCoeToFun.{u2, u3} (Language.{u2} β) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) (Language.map.{u2, u3} β γ g) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (fun (_x : RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) => (Language.{u1} α) -> (Language.{u2} β)) (RingHom.hasCoeToFun.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (Language.map.{u1, u2} α β f) l)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} (Language.{u1} α) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) (fun (_x : RingHom.{u1, u3} (Language.{u1} α) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) => (Language.{u1} α) -> (Language.{u3} γ)) (RingHom.hasCoeToFun.{u1, u3} (Language.{u1} α) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) (Language.map.{u1, u3} α γ (Function.comp.{succ u1, succ u2, succ u3} α β γ g f)) l)
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u1}} {γ : Type.{u2}} (g : β -> γ) (f : α -> β) (l : Language.{u3} α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u1} β) => Language.{u2} γ) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (fun (a : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u3} α) => Language.{u1} β) a) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u3, u1} α β f) l)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (fun (_x : Language.{u1} β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u1} β) => Language.{u2} γ) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)) (RingHom.instRingHomClassRingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))))) (Language.map.{u1, u2} β γ g) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (fun (_x : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u3} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u3, u1} α β f) l)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (fun (_x : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u3} α) => Language.{u2} γ) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)) (RingHom.instRingHomClassRingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))))) (Language.map.{u3, u2} α γ (Function.comp.{succ u3, succ u1, succ u2} α β γ g f)) l)
+ forall {α : Type.{u3}} {β : Type.{u1}} {γ : Type.{u2}} (g : β -> γ) (f : α -> β) (l : Language.{u3} α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u1} β) => Language.{u2} γ) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (fun (a : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u3} α) => Language.{u1} β) a) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u3, u1} α β f) l)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (fun (_x : Language.{u1} β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u1} β) => Language.{u2} γ) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)) (RingHom.instRingHomClassRingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))))) (Language.map.{u1, u2} β γ g) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (fun (_x : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u3} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u3, u1} α β f) l)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (fun (_x : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u3} α) => Language.{u2} γ) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)) (RingHom.instRingHomClassRingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))))) (Language.map.{u3, u2} α γ (Function.comp.{succ u3, succ u1, succ u2} α β γ g f)) l)
Case conversion may be inaccurate. Consider using '#align language.map_map Language.map_mapₓ'. -/
@[simp]
theorem map_map (g : β → γ) (f : α → β) (l : Language α) : map g (map f l) = map (g ∘ f) l := by
@@ -385,7 +385,7 @@ theorem kstar_eq_iSup_pow (l : Language α) : l∗ = ⨆ i : ℕ, l ^ i :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (l : Language.{u1} α), Eq.{succ u2} (Language.{u2} β) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (fun (_x : RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) => (Language.{u1} α) -> (Language.{u2} β)) (RingHom.hasCoeToFun.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (Language.map.{u1, u2} α β f) (KStar.kstar.{u1} (Language.{u1} α) (Language.hasKstar.{u1} α) l)) (KStar.kstar.{u2} (Language.{u2} β) (Language.hasKstar.{u2} β) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (fun (_x : RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) => (Language.{u1} α) -> (Language.{u2} β)) (RingHom.hasCoeToFun.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (Language.map.{u1, u2} α β f) l))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (l : Language.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u2} α) => Language.{u1} β) (KStar.kstar.{u2} (Language.{u2} α) (Language.instKStarLanguage.{u2} α) l)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (fun (_x : Language.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u2} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u2, u1} α β f) (KStar.kstar.{u2} (Language.{u2} α) (Language.instKStarLanguage.{u2} α) l)) (KStar.kstar.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u2} α) => Language.{u1} β) l) (Language.instKStarLanguage.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (fun (_x : Language.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u2} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u2, u1} α β f) l))
+ forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (l : Language.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u2} α) => Language.{u1} β) (KStar.kstar.{u2} (Language.{u2} α) (Language.instKStarLanguage.{u2} α) l)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (fun (_x : Language.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u2} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u2, u1} α β f) (KStar.kstar.{u2} (Language.{u2} α) (Language.instKStarLanguage.{u2} α) l)) (KStar.kstar.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u2} α) => Language.{u1} β) l) (Language.instKStarLanguage.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (fun (_x : Language.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Language.{u2} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u2, u1} α β f) l))
Case conversion may be inaccurate. Consider using '#align language.map_kstar Language.map_kstarₓ'. -/
@[simp]
theorem map_kstar (f : α → β) (l : Language α) : map f l∗ = (map f l)∗ :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -285,59 +285,59 @@ theorem le_add_congr {l₁ l₂ m₁ m₂ : Language α} : l₁ ≤ m₁ → l
sup_le_sup
#align language.le_add_congr Language.le_add_congr
-/- warning: language.mem_supr -> Language.mem_supᵢ is a dubious translation:
+/- warning: language.mem_supr -> Language.mem_iSup is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u2}} {ι : Sort.{u1}} {l : ι -> (Language.{u2} α)} {x : List.{u2} α}, Iff (Membership.Mem.{u2, u2} (List.{u2} α) (Language.{u2} α) (Language.hasMem.{u2} α) x (supᵢ.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => l i))) (Exists.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} (List.{u2} α) (Language.{u2} α) (Language.hasMem.{u2} α) x (l i)))
+ forall {α : Type.{u2}} {ι : Sort.{u1}} {l : ι -> (Language.{u2} α)} {x : List.{u2} α}, Iff (Membership.Mem.{u2, u2} (List.{u2} α) (Language.{u2} α) (Language.hasMem.{u2} α) x (iSup.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => l i))) (Exists.{u1} ι (fun (i : ι) => Membership.Mem.{u2, u2} (List.{u2} α) (Language.{u2} α) (Language.hasMem.{u2} α) x (l i)))
but is expected to have type
- forall {α : Type.{u1}} {ι : Sort.{u2}} {l : ι -> (Language.{u1} α)} {x : List.{u1} α}, Iff (Membership.mem.{u1, u1} (List.{u1} α) (Language.{u1} α) (instMembershipListLanguage.{u1} α) x (supᵢ.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => l i))) (Exists.{u2} ι (fun (i : ι) => Membership.mem.{u1, u1} (List.{u1} α) (Language.{u1} α) (instMembershipListLanguage.{u1} α) x (l i)))
-Case conversion may be inaccurate. Consider using '#align language.mem_supr Language.mem_supᵢₓ'. -/
-theorem mem_supᵢ {ι : Sort v} {l : ι → Language α} {x : List α} : (x ∈ ⨆ i, l i) ↔ ∃ i, x ∈ l i :=
- mem_unionᵢ
-#align language.mem_supr Language.mem_supᵢ
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {l : ι -> (Language.{u1} α)} {x : List.{u1} α}, Iff (Membership.mem.{u1, u1} (List.{u1} α) (Language.{u1} α) (instMembershipListLanguage.{u1} α) x (iSup.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => l i))) (Exists.{u2} ι (fun (i : ι) => Membership.mem.{u1, u1} (List.{u1} α) (Language.{u1} α) (instMembershipListLanguage.{u1} α) x (l i)))
+Case conversion may be inaccurate. Consider using '#align language.mem_supr Language.mem_iSupₓ'. -/
+theorem mem_iSup {ι : Sort v} {l : ι → Language α} {x : List α} : (x ∈ ⨆ i, l i) ↔ ∃ i, x ∈ l i :=
+ mem_iUnion
+#align language.mem_supr Language.mem_iSup
-/- warning: language.supr_mul -> Language.supᵢ_mul is a dubious translation:
+/- warning: language.supr_mul -> Language.iSup_mul is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u2}} {ι : Sort.{u1}} (l : ι -> (Language.{u2} α)) (m : Language.{u2} α), Eq.{succ u2} (Language.{u2} α) (HMul.hMul.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHMul.{u2} (Language.{u2} α) (Language.hasMul.{u2} α)) (supᵢ.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => l i)) m) (supᵢ.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => HMul.hMul.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHMul.{u2} (Language.{u2} α) (Language.hasMul.{u2} α)) (l i) m))
+ forall {α : Type.{u2}} {ι : Sort.{u1}} (l : ι -> (Language.{u2} α)) (m : Language.{u2} α), Eq.{succ u2} (Language.{u2} α) (HMul.hMul.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHMul.{u2} (Language.{u2} α) (Language.hasMul.{u2} α)) (iSup.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => l i)) m) (iSup.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => HMul.hMul.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHMul.{u2} (Language.{u2} α) (Language.hasMul.{u2} α)) (l i) m))
but is expected to have type
- forall {α : Type.{u1}} {ι : Sort.{u2}} (l : ι -> (Language.{u1} α)) (m : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HMul.hMul.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHMul.{u1} (Language.{u1} α) (Language.instMulLanguage.{u1} α)) (supᵢ.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => l i)) m) (supᵢ.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => HMul.hMul.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHMul.{u1} (Language.{u1} α) (Language.instMulLanguage.{u1} α)) (l i) m))
-Case conversion may be inaccurate. Consider using '#align language.supr_mul Language.supᵢ_mulₓ'. -/
-theorem supᵢ_mul {ι : Sort v} (l : ι → Language α) (m : Language α) :
+ forall {α : Type.{u1}} {ι : Sort.{u2}} (l : ι -> (Language.{u1} α)) (m : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HMul.hMul.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHMul.{u1} (Language.{u1} α) (Language.instMulLanguage.{u1} α)) (iSup.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => l i)) m) (iSup.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => HMul.hMul.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHMul.{u1} (Language.{u1} α) (Language.instMulLanguage.{u1} α)) (l i) m))
+Case conversion may be inaccurate. Consider using '#align language.supr_mul Language.iSup_mulₓ'. -/
+theorem iSup_mul {ι : Sort v} (l : ι → Language α) (m : Language α) :
(⨆ i, l i) * m = ⨆ i, l i * m :=
- image2_unionᵢ_left _ _ _
-#align language.supr_mul Language.supᵢ_mul
+ image2_iUnion_left _ _ _
+#align language.supr_mul Language.iSup_mul
-/- warning: language.mul_supr -> Language.mul_supᵢ is a dubious translation:
+/- warning: language.mul_supr -> Language.mul_iSup is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u2}} {ι : Sort.{u1}} (l : ι -> (Language.{u2} α)) (m : Language.{u2} α), Eq.{succ u2} (Language.{u2} α) (HMul.hMul.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHMul.{u2} (Language.{u2} α) (Language.hasMul.{u2} α)) m (supᵢ.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => l i))) (supᵢ.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => HMul.hMul.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHMul.{u2} (Language.{u2} α) (Language.hasMul.{u2} α)) m (l i)))
+ forall {α : Type.{u2}} {ι : Sort.{u1}} (l : ι -> (Language.{u2} α)) (m : Language.{u2} α), Eq.{succ u2} (Language.{u2} α) (HMul.hMul.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHMul.{u2} (Language.{u2} α) (Language.hasMul.{u2} α)) m (iSup.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => l i))) (iSup.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => HMul.hMul.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHMul.{u2} (Language.{u2} α) (Language.hasMul.{u2} α)) m (l i)))
but is expected to have type
- forall {α : Type.{u1}} {ι : Sort.{u2}} (l : ι -> (Language.{u1} α)) (m : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HMul.hMul.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHMul.{u1} (Language.{u1} α) (Language.instMulLanguage.{u1} α)) m (supᵢ.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => l i))) (supᵢ.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => HMul.hMul.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHMul.{u1} (Language.{u1} α) (Language.instMulLanguage.{u1} α)) m (l i)))
-Case conversion may be inaccurate. Consider using '#align language.mul_supr Language.mul_supᵢₓ'. -/
-theorem mul_supᵢ {ι : Sort v} (l : ι → Language α) (m : Language α) :
+ forall {α : Type.{u1}} {ι : Sort.{u2}} (l : ι -> (Language.{u1} α)) (m : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HMul.hMul.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHMul.{u1} (Language.{u1} α) (Language.instMulLanguage.{u1} α)) m (iSup.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => l i))) (iSup.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => HMul.hMul.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHMul.{u1} (Language.{u1} α) (Language.instMulLanguage.{u1} α)) m (l i)))
+Case conversion may be inaccurate. Consider using '#align language.mul_supr Language.mul_iSupₓ'. -/
+theorem mul_iSup {ι : Sort v} (l : ι → Language α) (m : Language α) :
(m * ⨆ i, l i) = ⨆ i, m * l i :=
- image2_unionᵢ_right _ _ _
-#align language.mul_supr Language.mul_supᵢ
+ image2_iUnion_right _ _ _
+#align language.mul_supr Language.mul_iSup
-/- warning: language.supr_add -> Language.supᵢ_add is a dubious translation:
+/- warning: language.supr_add -> Language.iSup_add is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : Nonempty.{u1} ι] (l : ι -> (Language.{u2} α)) (m : Language.{u2} α), Eq.{succ u2} (Language.{u2} α) (HAdd.hAdd.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHAdd.{u2} (Language.{u2} α) (Language.hasAdd.{u2} α)) (supᵢ.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => l i)) m) (supᵢ.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => HAdd.hAdd.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHAdd.{u2} (Language.{u2} α) (Language.hasAdd.{u2} α)) (l i) m))
+ forall {α : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : Nonempty.{u1} ι] (l : ι -> (Language.{u2} α)) (m : Language.{u2} α), Eq.{succ u2} (Language.{u2} α) (HAdd.hAdd.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHAdd.{u2} (Language.{u2} α) (Language.hasAdd.{u2} α)) (iSup.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => l i)) m) (iSup.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => HAdd.hAdd.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHAdd.{u2} (Language.{u2} α) (Language.hasAdd.{u2} α)) (l i) m))
but is expected to have type
- forall {α : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (l : ι -> (Language.{u1} α)) (m : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) (supᵢ.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => l i)) m) (supᵢ.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) (l i) m))
-Case conversion may be inaccurate. Consider using '#align language.supr_add Language.supᵢ_addₓ'. -/
-theorem supᵢ_add {ι : Sort v} [Nonempty ι] (l : ι → Language α) (m : Language α) :
+ forall {α : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (l : ι -> (Language.{u1} α)) (m : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) (iSup.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => l i)) m) (iSup.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) (l i) m))
+Case conversion may be inaccurate. Consider using '#align language.supr_add Language.iSup_addₓ'. -/
+theorem iSup_add {ι : Sort v} [Nonempty ι] (l : ι → Language α) (m : Language α) :
(⨆ i, l i) + m = ⨆ i, l i + m :=
- supᵢ_sup
-#align language.supr_add Language.supᵢ_add
+ iSup_sup
+#align language.supr_add Language.iSup_add
-/- warning: language.add_supr -> Language.add_supᵢ is a dubious translation:
+/- warning: language.add_supr -> Language.add_iSup is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : Nonempty.{u1} ι] (l : ι -> (Language.{u2} α)) (m : Language.{u2} α), Eq.{succ u2} (Language.{u2} α) (HAdd.hAdd.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHAdd.{u2} (Language.{u2} α) (Language.hasAdd.{u2} α)) m (supᵢ.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => l i))) (supᵢ.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => HAdd.hAdd.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHAdd.{u2} (Language.{u2} α) (Language.hasAdd.{u2} α)) m (l i)))
+ forall {α : Type.{u2}} {ι : Sort.{u1}} [_inst_1 : Nonempty.{u1} ι] (l : ι -> (Language.{u2} α)) (m : Language.{u2} α), Eq.{succ u2} (Language.{u2} α) (HAdd.hAdd.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHAdd.{u2} (Language.{u2} α) (Language.hasAdd.{u2} α)) m (iSup.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => l i))) (iSup.{u2, u1} (Language.{u2} α) (Set.hasSup.{u2} (List.{u2} α)) ι (fun (i : ι) => HAdd.hAdd.{u2, u2, u2} (Language.{u2} α) (Language.{u2} α) (Language.{u2} α) (instHAdd.{u2} (Language.{u2} α) (Language.hasAdd.{u2} α)) m (l i)))
but is expected to have type
- forall {α : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (l : ι -> (Language.{u1} α)) (m : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) m (supᵢ.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => l i))) (supᵢ.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) m (l i)))
-Case conversion may be inaccurate. Consider using '#align language.add_supr Language.add_supᵢₓ'. -/
-theorem add_supᵢ {ι : Sort v} [Nonempty ι] (l : ι → Language α) (m : Language α) :
+ forall {α : Type.{u1}} {ι : Sort.{u2}} [_inst_1 : Nonempty.{u2} ι] (l : ι -> (Language.{u1} α)) (m : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) m (iSup.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => l i))) (iSup.{u1, u2} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) ι (fun (i : ι) => HAdd.hAdd.{u1, u1, u1} (Language.{u1} α) (Language.{u1} α) (Language.{u1} α) (instHAdd.{u1} (Language.{u1} α) (Language.instAddLanguage.{u1} α)) m (l i)))
+Case conversion may be inaccurate. Consider using '#align language.add_supr Language.add_iSupₓ'. -/
+theorem add_iSup {ι : Sort v} [Nonempty ι] (l : ι → Language α) (m : Language α) :
(m + ⨆ i, l i) = ⨆ i, m + l i :=
- sup_supᵢ
-#align language.add_supr Language.add_supᵢ
+ sup_iSup
+#align language.add_supr Language.add_iSup
/- warning: language.mem_pow -> Language.mem_pow is a dubious translation:
lean 3 declaration is
@@ -364,13 +364,13 @@ theorem mem_pow {l : Language α} {x : List α} {n : ℕ} :
exact ⟨a, _, hS.1, ⟨S, rfl, rfl, hS.2⟩, rfl⟩
#align language.mem_pow Language.mem_pow
-/- warning: language.kstar_eq_supr_pow -> Language.kstar_eq_supᵢ_pow is a dubious translation:
+/- warning: language.kstar_eq_supr_pow -> Language.kstar_eq_iSup_pow is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (KStar.kstar.{u1} (Language.{u1} α) (Language.hasKstar.{u1} α) l) (supᵢ.{u1, 1} (Language.{u1} α) (Set.hasSup.{u1} (List.{u1} α)) Nat (fun (i : Nat) => HPow.hPow.{u1, 0, u1} (Language.{u1} α) Nat (Language.{u1} α) (instHPow.{u1, 0} (Language.{u1} α) Nat (Monoid.Pow.{u1} (Language.{u1} α) (MonoidWithZero.toMonoid.{u1} (Language.{u1} α) (Semiring.toMonoidWithZero.{u1} (Language.{u1} α) (Language.semiring.{u1} α))))) l i))
+ forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (KStar.kstar.{u1} (Language.{u1} α) (Language.hasKstar.{u1} α) l) (iSup.{u1, 1} (Language.{u1} α) (Set.hasSup.{u1} (List.{u1} α)) Nat (fun (i : Nat) => HPow.hPow.{u1, 0, u1} (Language.{u1} α) Nat (Language.{u1} α) (instHPow.{u1, 0} (Language.{u1} α) Nat (Monoid.Pow.{u1} (Language.{u1} α) (MonoidWithZero.toMonoid.{u1} (Language.{u1} α) (Semiring.toMonoidWithZero.{u1} (Language.{u1} α) (Language.semiring.{u1} α))))) l i))
but is expected to have type
- forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (KStar.kstar.{u1} (Language.{u1} α) (Language.instKStarLanguage.{u1} α) l) (supᵢ.{u1, 1} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) Nat (fun (i : Nat) => HPow.hPow.{u1, 0, u1} (Language.{u1} α) Nat (Language.{u1} α) (instHPow.{u1, 0} (Language.{u1} α) Nat (Monoid.Pow.{u1} (Language.{u1} α) (MonoidWithZero.toMonoid.{u1} (Language.{u1} α) (Semiring.toMonoidWithZero.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))))) l i))
-Case conversion may be inaccurate. Consider using '#align language.kstar_eq_supr_pow Language.kstar_eq_supᵢ_powₓ'. -/
-theorem kstar_eq_supᵢ_pow (l : Language α) : l∗ = ⨆ i : ℕ, l ^ i :=
+ forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (KStar.kstar.{u1} (Language.{u1} α) (Language.instKStarLanguage.{u1} α) l) (iSup.{u1, 1} (Language.{u1} α) (CompleteBooleanAlgebra.toSupSet.{u1} (Language.{u1} α) (instCompleteBooleanAlgebraLanguage.{u1} α)) Nat (fun (i : Nat) => HPow.hPow.{u1, 0, u1} (Language.{u1} α) Nat (Language.{u1} α) (instHPow.{u1, 0} (Language.{u1} α) Nat (Monoid.Pow.{u1} (Language.{u1} α) (MonoidWithZero.toMonoid.{u1} (Language.{u1} α) (Semiring.toMonoidWithZero.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))))) l i))
+Case conversion may be inaccurate. Consider using '#align language.kstar_eq_supr_pow Language.kstar_eq_iSup_powₓ'. -/
+theorem kstar_eq_iSup_pow (l : Language α) : l∗ = ⨆ i : ℕ, l ^ i :=
by
ext x
simp only [mem_kstar, mem_supr, mem_pow]
@@ -379,7 +379,7 @@ theorem kstar_eq_supᵢ_pow (l : Language α) : l∗ = ⨆ i : ℕ, l ^ i :=
exact ⟨_, S, rfl, rfl, hS⟩
· rintro ⟨_, S, rfl, rfl, hS⟩
exact ⟨S, rfl, hS⟩
-#align language.kstar_eq_supr_pow Language.kstar_eq_supᵢ_pow
+#align language.kstar_eq_supr_pow Language.kstar_eq_iSup_pow
/- warning: language.map_kstar -> Language.map_kstar is a dubious translation:
lean 3 declaration is
@@ -411,7 +411,7 @@ Case conversion may be inaccurate. Consider using '#align language.one_add_self_
theorem one_add_self_mul_kstar_eq_kstar (l : Language α) : 1 + l * l∗ = l∗ :=
by
simp only [kstar_eq_supr_pow, mul_supr, ← pow_succ, ← pow_zero l]
- exact sup_supᵢ_nat_succ _
+ exact sup_iSup_nat_succ _
#align language.one_add_self_mul_kstar_eq_kstar Language.one_add_self_mul_kstar_eq_kstar
/- warning: language.one_add_kstar_mul_self_eq_kstar -> Language.one_add_kstar_mul_self_eq_kstar is a dubious translation:
@@ -434,7 +434,7 @@ instance : KleeneAlgebra (Language α) :=
kstar_mul_le_self := fun l m h =>
by
rw [kstar_eq_supr_pow, supr_mul]
- refine' supᵢ_le fun n => _
+ refine' iSup_le fun n => _
induction' n with n ih
· simp
rw [pow_succ', mul_assoc (l ^ n) l m]
@@ -442,7 +442,7 @@ instance : KleeneAlgebra (Language α) :=
mul_kstar_le_self := fun l m h =>
by
rw [kstar_eq_supr_pow, mul_supr]
- refine' supᵢ_le fun n => _
+ refine' iSup_le fun n => _
induction' n with n ih
· simp
rw [pow_succ, ← mul_assoc m l (l ^ n)]
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -224,7 +224,7 @@ def map (f : α → β) : Language α →+* Language β
lean 3 declaration is
forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α))) (fun (_x : RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α))) => (Language.{u1} α) -> (Language.{u1} α)) (RingHom.hasCoeToFun.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α))) (Language.map.{u1, u1} α α (id.{succ u1} α)) l) l
but is expected to have type
- forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u1} α) => Language.{u1} α) l) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (fun (_x : Language.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u1} α) => Language.{u1} α) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (RingHom.instRingHomClassRingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))))) (Language.map.{u1, u1} α α (id.{succ u1} α)) l) l
+ forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u1} α) => Language.{u1} α) l) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (fun (_x : Language.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u1} α) => Language.{u1} α) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (RingHom.instRingHomClassRingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))))) (Language.map.{u1, u1} α α (id.{succ u1} α)) l) l
Case conversion may be inaccurate. Consider using '#align language.map_id Language.map_idₓ'. -/
@[simp]
theorem map_id (l : Language α) : map id l = l := by simp [map]
@@ -234,7 +234,7 @@ theorem map_id (l : Language α) : map id l = l := by simp [map]
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} (g : β -> γ) (f : α -> β) (l : Language.{u1} α), Eq.{succ u3} (Language.{u3} γ) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingHom.{u2, u3} (Language.{u2} β) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) (fun (_x : RingHom.{u2, u3} (Language.{u2} β) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) => (Language.{u2} β) -> (Language.{u3} γ)) (RingHom.hasCoeToFun.{u2, u3} (Language.{u2} β) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) (Language.map.{u2, u3} β γ g) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (fun (_x : RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) => (Language.{u1} α) -> (Language.{u2} β)) (RingHom.hasCoeToFun.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (Language.map.{u1, u2} α β f) l)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} (Language.{u1} α) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) (fun (_x : RingHom.{u1, u3} (Language.{u1} α) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) => (Language.{u1} α) -> (Language.{u3} γ)) (RingHom.hasCoeToFun.{u1, u3} (Language.{u1} α) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) (Language.map.{u1, u3} α γ (Function.comp.{succ u1, succ u2, succ u3} α β γ g f)) l)
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u1}} {γ : Type.{u2}} (g : β -> γ) (f : α -> β) (l : Language.{u3} α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u1} β) => Language.{u2} γ) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (fun (a : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u3} α) => Language.{u1} β) a) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u3, u1} α β f) l)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (fun (_x : Language.{u1} β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u1} β) => Language.{u2} γ) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)) (RingHom.instRingHomClassRingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))))) (Language.map.{u1, u2} β γ g) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (fun (_x : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u3} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u3, u1} α β f) l)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (fun (_x : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u3} α) => Language.{u2} γ) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)) (RingHom.instRingHomClassRingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))))) (Language.map.{u3, u2} α γ (Function.comp.{succ u3, succ u1, succ u2} α β γ g f)) l)
+ forall {α : Type.{u3}} {β : Type.{u1}} {γ : Type.{u2}} (g : β -> γ) (f : α -> β) (l : Language.{u3} α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u1} β) => Language.{u2} γ) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (fun (a : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u3} α) => Language.{u1} β) a) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u3, u1} α β f) l)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (fun (_x : Language.{u1} β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u1} β) => Language.{u2} γ) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)) (RingHom.instRingHomClassRingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))))) (Language.map.{u1, u2} β γ g) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (fun (_x : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u3} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u3, u1} α β f) l)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (fun (_x : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u3} α) => Language.{u2} γ) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)) (RingHom.instRingHomClassRingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))))) (Language.map.{u3, u2} α γ (Function.comp.{succ u3, succ u1, succ u2} α β γ g f)) l)
Case conversion may be inaccurate. Consider using '#align language.map_map Language.map_mapₓ'. -/
@[simp]
theorem map_map (g : β → γ) (f : α → β) (l : Language α) : map g (map f l) = map (g ∘ f) l := by
@@ -385,7 +385,7 @@ theorem kstar_eq_supᵢ_pow (l : Language α) : l∗ = ⨆ i : ℕ, l ^ i :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (l : Language.{u1} α), Eq.{succ u2} (Language.{u2} β) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (fun (_x : RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) => (Language.{u1} α) -> (Language.{u2} β)) (RingHom.hasCoeToFun.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (Language.map.{u1, u2} α β f) (KStar.kstar.{u1} (Language.{u1} α) (Language.hasKstar.{u1} α) l)) (KStar.kstar.{u2} (Language.{u2} β) (Language.hasKstar.{u2} β) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (fun (_x : RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) => (Language.{u1} α) -> (Language.{u2} β)) (RingHom.hasCoeToFun.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (Language.map.{u1, u2} α β f) l))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (l : Language.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u2} α) => Language.{u1} β) (KStar.kstar.{u2} (Language.{u2} α) (Language.instKStarLanguage.{u2} α) l)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (fun (_x : Language.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u2} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u2, u1} α β f) (KStar.kstar.{u2} (Language.{u2} α) (Language.instKStarLanguage.{u2} α) l)) (KStar.kstar.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u2} α) => Language.{u1} β) l) (Language.instKStarLanguage.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (fun (_x : Language.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u2} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u2, u1} α β f) l))
+ forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (l : Language.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u2} α) => Language.{u1} β) (KStar.kstar.{u2} (Language.{u2} α) (Language.instKStarLanguage.{u2} α) l)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (fun (_x : Language.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u2} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u2, u1} α β f) (KStar.kstar.{u2} (Language.{u2} α) (Language.instKStarLanguage.{u2} α) l)) (KStar.kstar.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u2} α) => Language.{u1} β) l) (Language.instKStarLanguage.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (fun (_x : Language.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Language.{u2} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u2, u1} α β f) l))
Case conversion may be inaccurate. Consider using '#align language.map_kstar Language.map_kstarₓ'. -/
@[simp]
theorem map_kstar (f : α → β) (l : Language α) : map f l∗ = (map f l)∗ :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -224,7 +224,7 @@ def map (f : α → β) : Language α →+* Language β
lean 3 declaration is
forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} (Language.{u1} α) (coeFn.{succ u1, succ u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α))) (fun (_x : RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α))) => (Language.{u1} α) -> (Language.{u1} α)) (RingHom.hasCoeToFun.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α))) (Language.map.{u1, u1} α α (id.{succ u1} α)) l) l
but is expected to have type
- forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Language.{u1} α) => Language.{u1} α) l) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (fun (_x : Language.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Language.{u1} α) => Language.{u1} α) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (RingHom.instRingHomClassRingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))))) (Language.map.{u1, u1} α α (id.{succ u1} α)) l) l
+ forall {α : Type.{u1}} (l : Language.{u1} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u1} α) => Language.{u1} α) l) (FunLike.coe.{succ u1, succ u1, succ u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (fun (_x : Language.{u1} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u1} α) => Language.{u1} α) _x) (MulHomClass.toFunLike.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))) (NonUnitalRingHomClass.toMulHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (RingHomClass.toNonUnitalRingHomClass.{u1, u1, u1} (RingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α))) (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (RingHom.instRingHomClassRingHom.{u1, u1} (Language.{u1} α) (Language.{u1} α) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.instSemiringLanguage.{u1} α)))))) (Language.map.{u1, u1} α α (id.{succ u1} α)) l) l
Case conversion may be inaccurate. Consider using '#align language.map_id Language.map_idₓ'. -/
@[simp]
theorem map_id (l : Language α) : map id l = l := by simp [map]
@@ -234,7 +234,7 @@ theorem map_id (l : Language α) : map id l = l := by simp [map]
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} (g : β -> γ) (f : α -> β) (l : Language.{u1} α), Eq.{succ u3} (Language.{u3} γ) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingHom.{u2, u3} (Language.{u2} β) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) (fun (_x : RingHom.{u2, u3} (Language.{u2} β) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) => (Language.{u2} β) -> (Language.{u3} γ)) (RingHom.hasCoeToFun.{u2, u3} (Language.{u2} β) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) (Language.map.{u2, u3} β γ g) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (fun (_x : RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) => (Language.{u1} α) -> (Language.{u2} β)) (RingHom.hasCoeToFun.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (Language.map.{u1, u2} α β f) l)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} (Language.{u1} α) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) (fun (_x : RingHom.{u1, u3} (Language.{u1} α) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) => (Language.{u1} α) -> (Language.{u3} γ)) (RingHom.hasCoeToFun.{u1, u3} (Language.{u1} α) (Language.{u3} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} γ) (Language.semiring.{u3} γ))) (Language.map.{u1, u3} α γ (Function.comp.{succ u1, succ u2, succ u3} α β γ g f)) l)
but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u1}} {γ : Type.{u2}} (g : β -> γ) (f : α -> β) (l : Language.{u3} α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Language.{u1} β) => Language.{u2} γ) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (fun (a : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Language.{u3} α) => Language.{u1} β) a) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u3, u1} α β f) l)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (fun (_x : Language.{u1} β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Language.{u1} β) => Language.{u2} γ) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)) (RingHom.instRingHomClassRingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))))) (Language.map.{u1, u2} β γ g) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (fun (_x : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Language.{u3} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u3, u1} α β f) l)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (fun (_x : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Language.{u3} α) => Language.{u2} γ) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)) (RingHom.instRingHomClassRingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))))) (Language.map.{u3, u2} α γ (Function.comp.{succ u3, succ u1, succ u2} α β γ g f)) l)
+ forall {α : Type.{u3}} {β : Type.{u1}} {γ : Type.{u2}} (g : β -> γ) (f : α -> β) (l : Language.{u3} α), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u1} β) => Language.{u2} γ) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (fun (a : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u3} α) => Language.{u1} β) a) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u3, u1} α β f) l)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (fun (_x : Language.{u1} β) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u1} β) => Language.{u2} γ) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)) (RingHom.instRingHomClassRingHom.{u1, u2} (Language.{u1} β) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))))) (Language.map.{u1, u2} β γ g) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (fun (_x : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u3} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u3, u1} (Language.{u3} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u3, u1} α β f) l)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (fun (_x : Language.{u3} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u3} α) => Language.{u2} γ) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (NonUnitalNonAssocSemiring.toMul.{u3} (Language.{u3} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)))) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} (Language.{u3} α) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u2, u3, u2} (RingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ))) (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)) (RingHom.instRingHomClassRingHom.{u3, u2} (Language.{u3} α) (Language.{u2} γ) (Semiring.toNonAssocSemiring.{u3} (Language.{u3} α) (Language.instSemiringLanguage.{u3} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} γ) (Language.instSemiringLanguage.{u2} γ)))))) (Language.map.{u3, u2} α γ (Function.comp.{succ u3, succ u1, succ u2} α β γ g f)) l)
Case conversion may be inaccurate. Consider using '#align language.map_map Language.map_mapₓ'. -/
@[simp]
theorem map_map (g : β → γ) (f : α → β) (l : Language α) : map g (map f l) = map (g ∘ f) l := by
@@ -385,7 +385,7 @@ theorem kstar_eq_supᵢ_pow (l : Language α) : l∗ = ⨆ i : ℕ, l ^ i :=
lean 3 declaration is
forall {α : Type.{u1}} {β : Type.{u2}} (f : α -> β) (l : Language.{u1} α), Eq.{succ u2} (Language.{u2} β) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (fun (_x : RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) => (Language.{u1} α) -> (Language.{u2} β)) (RingHom.hasCoeToFun.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (Language.map.{u1, u2} α β f) (KStar.kstar.{u1} (Language.{u1} α) (Language.hasKstar.{u1} α) l)) (KStar.kstar.{u2} (Language.{u2} β) (Language.hasKstar.{u2} β) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (fun (_x : RingHom.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) => (Language.{u1} α) -> (Language.{u2} β)) (RingHom.hasCoeToFun.{u1, u2} (Language.{u1} α) (Language.{u2} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} α) (Language.semiring.{u1} α)) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} β) (Language.semiring.{u2} β))) (Language.map.{u1, u2} α β f) l))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (l : Language.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Language.{u2} α) => Language.{u1} β) (KStar.kstar.{u2} (Language.{u2} α) (Language.instKStarLanguage.{u2} α) l)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (fun (_x : Language.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Language.{u2} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u2, u1} α β f) (KStar.kstar.{u2} (Language.{u2} α) (Language.instKStarLanguage.{u2} α) l)) (KStar.kstar.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Language.{u2} α) => Language.{u1} β) l) (Language.instKStarLanguage.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (fun (_x : Language.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Language.{u2} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u2, u1} α β f) l))
+ forall {α : Type.{u2}} {β : Type.{u1}} (f : α -> β) (l : Language.{u2} α), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u2} α) => Language.{u1} β) (KStar.kstar.{u2} (Language.{u2} α) (Language.instKStarLanguage.{u2} α) l)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (fun (_x : Language.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u2} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u2, u1} α β f) (KStar.kstar.{u2} (Language.{u2} α) (Language.instKStarLanguage.{u2} α) l)) (KStar.kstar.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u2} α) => Language.{u1} β) l) (Language.instKStarLanguage.{u1} β) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (fun (_x : Language.{u2} α) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Language.{u2} α) => Language.{u1} β) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonUnitalNonAssocSemiring.toMul.{u2} (Language.{u2} α) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)))) (NonUnitalNonAssocSemiring.toMul.{u1} (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} (Language.{u2} α) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} (Language.{u1} β) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β))) (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)) (RingHom.instRingHomClassRingHom.{u2, u1} (Language.{u2} α) (Language.{u1} β) (Semiring.toNonAssocSemiring.{u2} (Language.{u2} α) (Language.instSemiringLanguage.{u2} α)) (Semiring.toNonAssocSemiring.{u1} (Language.{u1} β) (Language.instSemiringLanguage.{u1} β)))))) (Language.map.{u2, u1} α β f) l))
Case conversion may be inaccurate. Consider using '#align language.map_kstar Language.map_kstarₓ'. -/
@[simp]
theorem map_kstar (f : α → β) (l : Language α) : map f l∗ = (map f l)∗ :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
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
.@@ -240,7 +240,7 @@ theorem mem_pow {l : Language α} {x : List α} {n : ℕ} :
exact ⟨[], rfl, rfl, fun _ h ↦ by contradiction⟩
· rintro ⟨_, rfl, rfl, _⟩
rfl
- · simp only [pow_succ, mem_mul, ihn]
+ · simp only [pow_succ', mem_mul, ihn]
constructor
· rintro ⟨a, ha, b, ⟨S, rfl, rfl, hS⟩, rfl⟩
exact ⟨a :: S, rfl, rfl, forall_mem_cons.2 ⟨ha, hS⟩⟩
@@ -272,7 +272,7 @@ theorem mul_self_kstar_comm (l : Language α) : l∗ * l = l * l∗ := by
@[simp]
theorem one_add_self_mul_kstar_eq_kstar (l : Language α) : 1 + l * l∗ = l∗ := by
- simp only [kstar_eq_iSup_pow, mul_iSup, ← pow_succ, ← pow_zero l]
+ simp only [kstar_eq_iSup_pow, mul_iSup, ← pow_succ', ← pow_zero l]
exact sup_iSup_nat_succ _
#align language.one_add_self_mul_kstar_eq_kstar Language.one_add_self_mul_kstar_eq_kstar
@@ -292,15 +292,15 @@ instance : KleeneAlgebra (Language α) :=
refine' iSup_le (fun n ↦ _)
induction' n with n ih
· simp
- rw [pow_succ', mul_assoc (l^n) l m]
+ rw [pow_succ, mul_assoc (l^n) l m]
exact le_trans (le_mul_congr le_rfl h) ih,
mul_kstar_le_self := fun l m h ↦ by
rw [kstar_eq_iSup_pow, mul_iSup]
refine' iSup_le (fun n ↦ _)
induction' n with n ih
· simp
- rw [pow_succ, ← mul_assoc m l (l^n)]
- exact le_trans (le_mul_congr h le_rfl) ih }
+ rw [pow_succ, ← mul_assoc m (l^n) l]
+ exact le_trans (le_mul_congr ih le_rfl) h }
/-- Language `l.reverse` is defined as the set of words from `l` backwards. -/
def reverse (l : Language α) : Language α := { w : List α | w.reverse ∈ l }
nsmul
and zsmul
to default automatically (#6262)
This PR removes the default values for nsmul
and zsmul
, forcing the user to populate them manually.
The previous behavior can be obtained by writing nsmul := nsmulRec
and zsmul := zsmulRec
, which is now in the docstring for these fields.
The motivation here is to make it more obvious when module diamonds are being introduced, or at least where they might be hiding; you can now simply search for nsmulRec
in the source code.
Arguably we should do the same thing for intCast
, natCast
, pow
, and zpow
too, but diamonds are less common in those fields, so I'll leave them to a subsequent PR.
Co-authored-by: Matthew Ballard <matt@mrb.email>
@@ -151,6 +151,7 @@ instance instSemiring : Semiring (Language α) where
natCast_succ n := by cases n <;> simp [Nat.cast, add_def, zero_def]
left_distrib _ _ _ := image2_union_right
right_distrib _ _ _ := image2_union_left
+ nsmul := nsmulRec
@[simp]
theorem add_self (l : Language α) : l + l = l :=
Those lemmas have historically been very annoying to use in rw
since all their arguments were implicit. One too many people complained about it on Zulip, so I'm changing them.
Downstream code broken by this change can fix it by adding appropriately many _
s.
Also marks CauSeq.ext
@[ext]
.
Order.BoundedOrder
top_sup_eq
sup_top_eq
bot_sup_eq
sup_bot_eq
top_inf_eq
inf_top_eq
bot_inf_eq
inf_bot_eq
Order.Lattice
sup_idem
sup_comm
sup_assoc
sup_left_idem
sup_right_idem
inf_idem
inf_comm
inf_assoc
inf_left_idem
inf_right_idem
sup_inf_left
sup_inf_right
inf_sup_left
inf_sup_right
Order.MinMax
max_min_distrib_left
max_min_distrib_right
min_max_distrib_left
min_max_distrib_right
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
@@ -154,7 +154,7 @@ instance instSemiring : Semiring (Language α) where
@[simp]
theorem add_self (l : Language α) : l + l = l :=
- sup_idem
+ sup_idem _
#align language.add_self Language.add_self
/-- Maps the alphabet of a language. -/
@@ -179,11 +179,10 @@ lemma mem_kstar_iff_exists_nonempty {x : List α} :
x ∈ l∗ ↔ ∃ S : List (List α), x = S.join ∧ ∀ y ∈ S, y ∈ l ∧ y ≠ [] := by
constructor
· rintro ⟨S, rfl, h⟩
- refine' ⟨S.filter fun l ↦ ¬List.isEmpty l, by simp, fun y hy ↦ _⟩
+ refine' ⟨S.filter fun l ↦ !List.isEmpty l, by simp, fun y hy ↦ _⟩
-- Porting note: The previous code was:
-- rw [mem_filter, empty_iff_eq_nil] at hy
- rw [mem_filter, decide_not, Bool.decide_coe, Bool.not_eq_true', ← Bool.bool_iff_false,
- isEmpty_iff_eq_nil] at hy
+ rw [mem_filter, Bool.not_eq_true', ← Bool.bool_iff_false, isEmpty_iff_eq_nil] at hy
exact ⟨h y hy.1, hy.2⟩
· rintro ⟨S, hx, h⟩
exact ⟨S, hx, fun y hy ↦ (h y hy).1⟩
@@ -1,7 +1,7 @@
/-
Copyright (c) 2020 Fox Thomson. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
-Authors: Fox Thomson
+Authors: Fox Thomson, Martin Dvorak
-/
import Mathlib.Algebra.Order.Kleene
import Mathlib.Algebra.Ring.Hom.Defs
@@ -14,10 +14,12 @@ import Mathlib.Tactic.DeriveFintype
/-!
# Languages
-This file contains the definition and operations on formal languages over an alphabet. Note strings
-are implemented as lists over the alphabet.
-The operations in this file define a [Kleene algebra](https://en.wikipedia.org/wiki/Kleene_algebra)
+This file contains the definition and operations on formal languages over an alphabet.
+Note that "strings" are implemented as lists over the alphabet.
+Union and concatenation define a [Kleene algebra](https://en.wikipedia.org/wiki/Kleene_algebra)
over the languages.
+In addition to that, we define a reversal of a language and prove that it behaves well
+with respect to other language operations.
-/
@@ -300,6 +302,76 @@ instance : KleeneAlgebra (Language α) :=
rw [pow_succ, ← mul_assoc m l (l^n)]
exact le_trans (le_mul_congr h le_rfl) ih }
+/-- Language `l.reverse` is defined as the set of words from `l` backwards. -/
+def reverse (l : Language α) : Language α := { w : List α | w.reverse ∈ l }
+
+@[simp]
+lemma mem_reverse : a ∈ l.reverse ↔ a.reverse ∈ l := Iff.rfl
+
+lemma reverse_mem_reverse : a.reverse ∈ l.reverse ↔ a ∈ l := by
+ rw [mem_reverse, List.reverse_reverse]
+
+lemma reverse_eq_image (l : Language α) : l.reverse = List.reverse '' l :=
+ ((List.reverse_involutive.toPerm _).image_eq_preimage _).symm
+
+@[simp]
+lemma reverse_zero : (0 : Language α).reverse = 0 := rfl
+
+@[simp]
+lemma reverse_one : (1 : Language α).reverse = 1 := by
+ simp [reverse, ← one_def]
+
+lemma reverse_involutive : Function.Involutive (reverse : Language α → _) :=
+ List.reverse_involutive.preimage
+
+lemma reverse_bijective : Function.Bijective (reverse : Language α → _) :=
+ reverse_involutive.bijective
+
+lemma reverse_injective : Function.Injective (reverse : Language α → _) :=
+ reverse_involutive.injective
+
+lemma reverse_surjective : Function.Surjective (reverse : Language α → _) :=
+ reverse_involutive.surjective
+
+@[simp]
+lemma reverse_reverse (l : Language α) : l.reverse.reverse = l := reverse_involutive l
+
+@[simp]
+lemma reverse_add (l m : Language α) : (l + m).reverse = l.reverse + m.reverse := rfl
+
+@[simp]
+lemma reverse_mul (l m : Language α) : (l * m).reverse = m.reverse * l.reverse := by
+ simp only [mul_def, reverse_eq_image, image2_image_left, image2_image_right, image_image2,
+ List.reverse_append]
+ apply image2_swap
+
+@[simp]
+lemma reverse_iSup {ι : Sort*} (l : ι → Language α) : (⨆ i, l i).reverse = ⨆ i, (l i).reverse :=
+ preimage_iUnion
+
+@[simp]
+lemma reverse_iInf {ι : Sort*} (l : ι → Language α) : (⨅ i, l i).reverse = ⨅ i, (l i).reverse :=
+ preimage_iInter
+
+variable (α) in
+/-- `Language.reverse` as a ring isomorphism to the opposite ring. -/
+@[simps]
+def reverseIso : Language α ≃+* (Language α)ᵐᵒᵖ where
+ toFun l := .op l.reverse
+ invFun l' := l'.unop.reverse
+ left_inv := reverse_reverse
+ right_inv l' := MulOpposite.unop_injective <| reverse_reverse l'.unop
+ map_mul' l₁ l₂ := MulOpposite.unop_injective <| reverse_mul l₁ l₂
+ map_add' l₁ l₂ := MulOpposite.unop_injective <| reverse_add l₁ l₂
+
+@[simp]
+lemma reverse_pow (l : Language α) (n : ℕ) : (l ^ n).reverse = l.reverse ^ n :=
+ MulOpposite.op_injective (map_pow (reverseIso α) l n)
+
+@[simp]
+lemma reverse_kstar (l : Language α) : l∗.reverse = l.reverse∗ := by
+ simp only [kstar_eq_iSup_pow, reverse_iSup, reverse_pow]
+
end Language
/-- Symbols for use by all kinds of grammars. -/
Set.image2
etc (#9275)
Set.image2
to use ∃ a ∈ s, ∃ b ∈ t, f a b = c
instead of ∃ a b, a ∈ s ∧ b ∈ t ∧ f a b = c
.Set.seq
as Set.image2
. The new definition is equal to the old one but rw [Set.seq]
gives a different result.Filter.map₂
to use ∃ u ∈ f, ∃ v ∈ g, image2 m u v ⊆ s
instead of ∃ u v, u ∈ f ∧ v ∈ g ∧ ...
Set.mem_image2
, Finset.mem_image₂
, Set.mem_mul
, Finset.mem_div
etcThe two reasons to make the change are:
∃ a ∈ s, ∃ b ∈ t, _
is a simp
-normal form, and@@ -110,7 +110,7 @@ theorem mem_add (l m : Language α) (x : List α) : x ∈ l + m ↔ x ∈ l ∨
Iff.rfl
#align language.mem_add Language.mem_add
-theorem mem_mul : x ∈ l * m ↔ ∃ a b, a ∈ l ∧ b ∈ m ∧ a ++ b = x :=
+theorem mem_mul : x ∈ l * m ↔ ∃ a ∈ l, ∃ b ∈ m, a ++ b = x :=
mem_image2
#align language.mem_mul Language.mem_mul
@@ -240,11 +240,11 @@ theorem mem_pow {l : Language α} {x : List α} {n : ℕ} :
rfl
· simp only [pow_succ, mem_mul, ihn]
constructor
- · rintro ⟨a, b, ha, ⟨S, rfl, rfl, hS⟩, rfl⟩
+ · rintro ⟨a, ha, b, ⟨S, rfl, rfl, hS⟩, rfl⟩
exact ⟨a :: S, rfl, rfl, forall_mem_cons.2 ⟨ha, hS⟩⟩
· rintro ⟨_ | ⟨a, S⟩, rfl, hn, hS⟩ <;> cases hn
rw [forall_mem_cons] at hS
- exact ⟨a, _, hS.1, ⟨S, rfl, rfl, hS.2⟩, rfl⟩
+ exact ⟨a, hS.1, _, ⟨S, rfl, rfl, hS.2⟩, rfl⟩
#align language.mem_pow Language.mem_pow
theorem kstar_eq_iSup_pow (l : Language α) : l∗ = ⨆ i : ℕ, l ^ i := by
Golf a proof. Also add Language.mem_kstar_iff_exists_nonempty
.
@@ -173,9 +173,8 @@ theorem map_map (g : β → γ) (f : α → β) (l : Language α) : map g (map f
simp [map, image_image]
#align language.map_map Language.map_map
-theorem kstar_def_nonempty (l : Language α) :
- l∗ = { x | ∃ S : List (List α), x = S.join ∧ ∀ y ∈ S, y ∈ l ∧ y ≠ [] } := by
- ext x
+lemma mem_kstar_iff_exists_nonempty {x : List α} :
+ x ∈ l∗ ↔ ∃ S : List (List α), x = S.join ∧ ∀ y ∈ S, y ∈ l ∧ y ≠ [] := by
constructor
· rintro ⟨S, rfl, h⟩
refine' ⟨S.filter fun l ↦ ¬List.isEmpty l, by simp, fun y hy ↦ _⟩
@@ -186,6 +185,10 @@ theorem kstar_def_nonempty (l : Language α) :
exact ⟨h y hy.1, hy.2⟩
· rintro ⟨S, hx, h⟩
exact ⟨S, hx, fun y hy ↦ (h y hy).1⟩
+
+theorem kstar_def_nonempty (l : Language α) :
+ l∗ = { x | ∃ S : List (List α), x = S.join ∧ ∀ y ∈ S, y ∈ l ∧ y ≠ [] } := by
+ ext x; apply mem_kstar_iff_exists_nonempty
#align language.kstar_def_nonempty Language.kstar_def_nonempty
theorem le_iff (l m : Language α) : l ≤ m ↔ l + m = m :=
@@ -294,7 +294,7 @@ instance : KleeneAlgebra (Language α) :=
refine' iSup_le (fun n ↦ _)
induction' n with n ih
· simp
- rw [pow_succ, ←mul_assoc m l (l^n)]
+ rw [pow_succ, ← mul_assoc m l (l^n)]
exact le_trans (le_mul_congr h le_rfl) ih }
end Language
Hom
and file name (#8095)
I believe the file defining a type of morphisms belongs alongside the file defining the structure this morphism works on. So I would like to reorganize the files in the Mathlib.Algebra.Hom
folder so that e.g. Mathlib.Algebra.Hom.Ring
becomes Mathlib.Algebra.Ring.Hom
and Mathlib.Algebra.Hom.NonUnitalAlg
becomes Mathlib.Algebra.Algebra.NonUnitalHom
.
While fixing the imports I went ahead and sorted them for good luck.
The full list of changes is: renamed: Mathlib/Algebra/Hom/NonUnitalAlg.lean -> Mathlib/Algebra/Algebra/NonUnitalHom.lean renamed: Mathlib/Algebra/Hom/Aut.lean -> Mathlib/Algebra/Group/Aut.lean renamed: Mathlib/Algebra/Hom/Commute.lean -> Mathlib/Algebra/Group/Commute/Hom.lean renamed: Mathlib/Algebra/Hom/Embedding.lean -> Mathlib/Algebra/Group/Embedding.lean renamed: Mathlib/Algebra/Hom/Equiv/Basic.lean -> Mathlib/Algebra/Group/Equiv/Basic.lean renamed: Mathlib/Algebra/Hom/Equiv/TypeTags.lean -> Mathlib/Algebra/Group/Equiv/TypeTags.lean renamed: Mathlib/Algebra/Hom/Equiv/Units/Basic.lean -> Mathlib/Algebra/Group/Units/Equiv.lean renamed: Mathlib/Algebra/Hom/Equiv/Units/GroupWithZero.lean -> Mathlib/Algebra/GroupWithZero/Units/Equiv.lean renamed: Mathlib/Algebra/Hom/Freiman.lean -> Mathlib/Algebra/Group/Freiman.lean renamed: Mathlib/Algebra/Hom/Group/Basic.lean -> Mathlib/Algebra/Group/Hom/Basic.lean renamed: Mathlib/Algebra/Hom/Group/Defs.lean -> Mathlib/Algebra/Group/Hom/Defs.lean renamed: Mathlib/Algebra/Hom/GroupAction.lean -> Mathlib/GroupTheory/GroupAction/Hom.lean renamed: Mathlib/Algebra/Hom/GroupInstances.lean -> Mathlib/Algebra/Group/Hom/Instances.lean renamed: Mathlib/Algebra/Hom/Iterate.lean -> Mathlib/Algebra/GroupPower/IterateHom.lean renamed: Mathlib/Algebra/Hom/Centroid.lean -> Mathlib/Algebra/Ring/CentroidHom.lean renamed: Mathlib/Algebra/Hom/Ring/Basic.lean -> Mathlib/Algebra/Ring/Hom/Basic.lean renamed: Mathlib/Algebra/Hom/Ring/Defs.lean -> Mathlib/Algebra/Ring/Hom/Defs.lean renamed: Mathlib/Algebra/Hom/Units.lean -> Mathlib/Algebra/Group/Units/Hom.lean
Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Reorganizing.20.60Mathlib.2EAlgebra.2EHom.60
@@ -3,8 +3,8 @@ Copyright (c) 2020 Fox Thomson. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Fox Thomson
-/
-import Mathlib.Algebra.Hom.Ring.Defs
import Mathlib.Algebra.Order.Kleene
+import Mathlib.Algebra.Ring.Hom.Defs
import Mathlib.Data.List.Join
import Mathlib.Data.Set.Lattice
import Mathlib.Tactic.DeriveFintype
@@ -7,6 +7,7 @@ import Mathlib.Algebra.Hom.Ring.Defs
import Mathlib.Algebra.Order.Kleene
import Mathlib.Data.List.Join
import Mathlib.Data.Set.Lattice
+import Mathlib.Tactic.DeriveFintype
#align_import computability.language from "leanprover-community/mathlib"@"a239cd3e7ac2c7cde36c913808f9d40c411344f6"
@@ -297,3 +298,14 @@ instance : KleeneAlgebra (Language α) :=
exact le_trans (le_mul_congr h le_rfl) ih }
end Language
+
+/-- Symbols for use by all kinds of grammars. -/
+inductive Symbol (T N : Type*)
+ /-- Terminal symbols (of the same type as the language) -/
+ | terminal (t : T) : Symbol T N
+ /-- Nonterminal symbols (must not be present at the end of word being generated) -/
+ | nonterminal (n : N) : Symbol T N
+deriving
+ DecidableEq, Repr, Fintype
+
+attribute [nolint docBlame] Symbol.proxyType Symbol.proxyTypeEquiv
@@ -3,7 +3,7 @@ Copyright (c) 2020 Fox Thomson. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Fox Thomson
-/
-import Mathlib.Algebra.Hom.Ring
+import Mathlib.Algebra.Hom.Ring.Defs
import Mathlib.Algebra.Order.Kleene
import Mathlib.Data.List.Join
import Mathlib.Data.Set.Lattice
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -24,7 +24,7 @@ open List Set Computability
universe v
-variable {α β γ : Type _}
+variable {α β γ : Type*}
/-- A language is a set of strings over an alphabet. -/
def Language (α) :=
@@ -129,7 +129,7 @@ theorem nil_mem_kstar (l : Language α) : [] ∈ l∗ :=
⟨[], rfl, fun _ h ↦ by contradiction⟩
#align language.nil_mem_kstar Language.nil_mem_kstar
-instance : Semiring (Language α) where
+instance instSemiring : Semiring (Language α) where
add := (· + ·)
add_assoc := union_assoc
zero := 0
@@ -178,16 +178,11 @@ theorem kstar_def_nonempty (l : Language α) :
constructor
· rintro ⟨S, rfl, h⟩
refine' ⟨S.filter fun l ↦ ¬List.isEmpty l, by simp, fun y hy ↦ _⟩
- simp [mem_filter, List.isEmpty_iff_eq_nil] at hy
-- Porting note: The previous code was:
- -- exact ⟨h y hy.1, hy.2⟩
- --
- -- The goal `y ≠ []` for the second argument cannot be resolved
- -- by `hy.2 : isEmpty y = False`.
- let ⟨hyl, hyr⟩ := hy
- apply And.intro (h y hyl)
- cases y <;> simp only [ne_eq, not_true, not_false_iff]
- contradiction
+ -- rw [mem_filter, empty_iff_eq_nil] at hy
+ rw [mem_filter, decide_not, Bool.decide_coe, Bool.not_eq_true', ← Bool.bool_iff_false,
+ isEmpty_iff_eq_nil] at hy
+ exact ⟨h y hy.1, hy.2⟩
· rintro ⟨S, hx, h⟩
exact ⟨S, hx, fun y hy ↦ (h y hy).1⟩
#align language.kstar_def_nonempty Language.kstar_def_nonempty
@@ -237,15 +232,8 @@ theorem mem_pow {l : Language α} {x : List α} {n : ℕ} :
constructor
· rintro rfl
exact ⟨[], rfl, rfl, fun _ h ↦ by contradiction⟩
- · -- Porting note: The previous code was:
- -- rintro ⟨_, rfl, rfl, _⟩
- -- rfl
- --
- -- The code reports an error for the second `rfl`.
- rintro ⟨_, rfl, h₀, _⟩
- simp; intros _ h₁
- rw [h₀] at h₁
- contradiction
+ · rintro ⟨_, rfl, rfl, _⟩
+ rfl
· simp only [pow_succ, mem_mul, ihn]
constructor
· rintro ⟨a, b, ha, ⟨S, rfl, rfl, hS⟩, rfl⟩
@@ -288,7 +276,7 @@ theorem one_add_kstar_mul_self_eq_kstar (l : Language α) : 1 + l∗ * l = l∗
#align language.one_add_kstar_mul_self_eq_kstar Language.one_add_kstar_mul_self_eq_kstar
instance : KleeneAlgebra (Language α) :=
- { Language.instSemiringLanguage, Set.completeAtomicBooleanAlgebra with
+ { Language.instSemiring, Set.completeAtomicBooleanAlgebra with
kstar := fun L ↦ L∗,
one_le_kstar := fun a l hl ↦ ⟨[], hl, by simp⟩,
mul_kstar_le_kstar := fun a ↦ (one_add_self_mul_kstar_eq_kstar a).le.trans' le_sup_right,
Set
defeq abuse, golf (#6114)
{x | p x}
instead of fun x ↦ p x
to define a set here and there.Con.ker_apply_eq_preimage
with Con.ker_apply
. The old version used to abuse definitional equality between Set M
and M → Prop
.Submonoid.mk*
lemmas to use ⟨_, _⟩
, not ⟨⟨_, _⟩, _⟩
.@@ -45,14 +45,13 @@ variable {l m : Language α} {a b x : List α}
/-- Zero language has no elements. -/
instance : Zero (Language α) :=
- ⟨fun _ => False⟩
+ ⟨(∅ : Set _)⟩
/-- `1 : Language α` contains only one element `[]`. -/
instance : One (Language α) :=
- ⟨fun l => l = []⟩
+ ⟨{[]}⟩
-instance : Inhabited (Language α) :=
- ⟨fun _ => False⟩
+instance : Inhabited (Language α) := ⟨(∅ : Set _)⟩
/-- The sum of two languages is their union. -/
instance : Add (Language α) :=
@@ -2,17 +2,14 @@
Copyright (c) 2020 Fox Thomson. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Fox Thomson
-
-! This file was ported from Lean 3 source module computability.language
-! leanprover-community/mathlib commit a239cd3e7ac2c7cde36c913808f9d40c411344f6
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Algebra.Hom.Ring
import Mathlib.Algebra.Order.Kleene
import Mathlib.Data.List.Join
import Mathlib.Data.Set.Lattice
+#align_import computability.language from "leanprover-community/mathlib"@"a239cd3e7ac2c7cde36c913808f9d40c411344f6"
+
/-!
# Languages
Adds new CompletelyDistribLattice
/CompleteAtomicBooleanAlgebra
classes for complete lattices / complete atomic Boolean algebras that are also completely distributive, and removes the misleading claim that CompleteDistribLattice
/CompleteBooleanAlgebra
are completely distributive.
CompleteDistribLattice
instances are upgraded to CompletelyDistribLattice
.CompleteBooleanAlgebra
instances are upgraded to CompleteAtomicBooleanAlgebra
.@@ -37,7 +37,7 @@ def Language (α) :=
instance : Membership (List α) (Language α) := ⟨Set.Mem⟩
instance : Singleton (List α) (Language α) := ⟨Set.singleton⟩
instance : Insert (List α) (Language α) := ⟨Set.insert⟩
-instance : CompleteBooleanAlgebra (Language α) := Set.instCompleteBooleanAlgebraSet
+instance : CompleteAtomicBooleanAlgebra (Language α) := Set.completeAtomicBooleanAlgebra
namespace Language
@@ -292,7 +292,7 @@ theorem one_add_kstar_mul_self_eq_kstar (l : Language α) : 1 + l∗ * l = l∗
#align language.one_add_kstar_mul_self_eq_kstar Language.one_add_kstar_mul_self_eq_kstar
instance : KleeneAlgebra (Language α) :=
- { Language.instSemiringLanguage, Set.instCompleteBooleanAlgebraSet with
+ { Language.instSemiringLanguage, Set.completeAtomicBooleanAlgebra with
kstar := fun L ↦ L∗,
one_le_kstar := fun a l hl ↦ ⟨[], hl, by simp⟩,
mul_kstar_le_kstar := fun a ↦ (one_add_self_mul_kstar_eq_kstar a).le.trans' le_sup_right,
Co-authored-by: Komyyy <pol_tta@outlook.jp> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com> Co-authored-by: Mario Carneiro <di.gama@gmail.com>
@@ -248,7 +248,6 @@ theorem mem_pow {l : Language α} {x : List α} {n : ℕ} :
-- The code reports an error for the second `rfl`.
rintro ⟨_, rfl, h₀, _⟩
simp; intros _ h₁
- rw [length_eq_zero] at h₀
rw [h₀] at h₁
contradiction
· simp only [pow_succ, mem_mul, ihn]
at
and goals (#5387)
Changes are of the form
some_tactic at h⊢
-> some_tactic at h ⊢
some_tactic at h
-> some_tactic at h
@@ -202,7 +202,7 @@ theorem le_iff (l m : Language α) : l ≤ m ↔ l + m = m :=
theorem le_mul_congr {l₁ l₂ m₁ m₂ : Language α} : l₁ ≤ m₁ → l₂ ≤ m₂ → l₁ * l₂ ≤ m₁ * m₂ := by
intro h₁ h₂ x hx
- simp only [mul_def, exists_and_left, mem_image2, image_prod] at hx⊢
+ simp only [mul_def, exists_and_left, mem_image2, image_prod] at hx ⊢
tauto
#align language.le_mul_congr Language.le_mul_congr
fix-comments.py
on all files.@@ -187,7 +187,7 @@ theorem kstar_def_nonempty (l : Language α) :
-- exact ⟨h y hy.1, hy.2⟩
--
-- The goal `y ≠ []` for the second argument cannot be resolved
- -- by `hy.2 : isEmpty y = false`.
+ -- by `hy.2 : isEmpty y = False`.
let ⟨hyl, hyr⟩ := hy
apply And.intro (h y hyl)
cases y <;> simp only [ne_eq, not_true, not_false_iff]
sSup
/iSup
(#3938)
As discussed on Zulip
supₛ
→ sSup
infₛ
→ sInf
supᵢ
→ iSup
infᵢ
→ iInf
bsupₛ
→ bsSup
binfₛ
→ bsInf
bsupᵢ
→ biSup
binfᵢ
→ biInf
csupₛ
→ csSup
cinfₛ
→ csInf
csupᵢ
→ ciSup
cinfᵢ
→ ciInf
unionₛ
→ sUnion
interₛ
→ sInter
unionᵢ
→ iUnion
interᵢ
→ iInter
bunionₛ
→ bsUnion
binterₛ
→ bsInter
bunionᵢ
→ biUnion
binterᵢ
→ biInter
Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>
@@ -210,29 +210,29 @@ theorem le_add_congr {l₁ l₂ m₁ m₂ : Language α} : l₁ ≤ m₁ → l
sup_le_sup
#align language.le_add_congr Language.le_add_congr
-theorem mem_supᵢ {ι : Sort v} {l : ι → Language α} {x : List α} : (x ∈ ⨆ i, l i) ↔ ∃ i, x ∈ l i :=
- mem_unionᵢ
-#align language.mem_supr Language.mem_supᵢ
+theorem mem_iSup {ι : Sort v} {l : ι → Language α} {x : List α} : (x ∈ ⨆ i, l i) ↔ ∃ i, x ∈ l i :=
+ mem_iUnion
+#align language.mem_supr Language.mem_iSup
-theorem supᵢ_mul {ι : Sort v} (l : ι → Language α) (m : Language α) :
+theorem iSup_mul {ι : Sort v} (l : ι → Language α) (m : Language α) :
(⨆ i, l i) * m = ⨆ i, l i * m :=
- image2_unionᵢ_left _ _ _
-#align language.supr_mul Language.supᵢ_mul
+ image2_iUnion_left _ _ _
+#align language.supr_mul Language.iSup_mul
-theorem mul_supᵢ {ι : Sort v} (l : ι → Language α) (m : Language α) :
+theorem mul_iSup {ι : Sort v} (l : ι → Language α) (m : Language α) :
(m * ⨆ i, l i) = ⨆ i, m * l i :=
- image2_unionᵢ_right _ _ _
-#align language.mul_supr Language.mul_supᵢ
+ image2_iUnion_right _ _ _
+#align language.mul_supr Language.mul_iSup
-theorem supᵢ_add {ι : Sort v} [Nonempty ι] (l : ι → Language α) (m : Language α) :
+theorem iSup_add {ι : Sort v} [Nonempty ι] (l : ι → Language α) (m : Language α) :
(⨆ i, l i) + m = ⨆ i, l i + m :=
- supᵢ_sup
-#align language.supr_add Language.supᵢ_add
+ iSup_sup
+#align language.supr_add Language.iSup_add
-theorem add_supᵢ {ι : Sort v} [Nonempty ι] (l : ι → Language α) (m : Language α) :
+theorem add_iSup {ι : Sort v} [Nonempty ι] (l : ι → Language α) (m : Language α) :
(m + ⨆ i, l i) = ⨆ i, m + l i :=
- sup_supᵢ
-#align language.add_supr Language.add_supᵢ
+ sup_iSup
+#align language.add_supr Language.add_iSup
theorem mem_pow {l : Language α} {x : List α} {n : ℕ} :
x ∈ l ^ n ↔ ∃ S : List (List α), x = S.join ∧ S.length = n ∧ ∀ y ∈ S, y ∈ l := by
@@ -260,31 +260,31 @@ theorem mem_pow {l : Language α} {x : List α} {n : ℕ} :
exact ⟨a, _, hS.1, ⟨S, rfl, rfl, hS.2⟩, rfl⟩
#align language.mem_pow Language.mem_pow
-theorem kstar_eq_supᵢ_pow (l : Language α) : l∗ = ⨆ i : ℕ, l ^ i := by
+theorem kstar_eq_iSup_pow (l : Language α) : l∗ = ⨆ i : ℕ, l ^ i := by
ext x
- simp only [mem_kstar, mem_supᵢ, mem_pow]
+ simp only [mem_kstar, mem_iSup, mem_pow]
constructor
· rintro ⟨S, rfl, hS⟩
exact ⟨_, S, rfl, rfl, hS⟩
· rintro ⟨_, S, rfl, rfl, hS⟩
exact ⟨S, rfl, hS⟩
-#align language.kstar_eq_supr_pow Language.kstar_eq_supᵢ_pow
+#align language.kstar_eq_supr_pow Language.kstar_eq_iSup_pow
@[simp]
theorem map_kstar (f : α → β) (l : Language α) : map f l∗ = (map f l)∗ := by
- rw [kstar_eq_supᵢ_pow, kstar_eq_supᵢ_pow]
+ rw [kstar_eq_iSup_pow, kstar_eq_iSup_pow]
simp_rw [← map_pow]
- exact image_unionᵢ
+ exact image_iUnion
#align language.map_kstar Language.map_kstar
theorem mul_self_kstar_comm (l : Language α) : l∗ * l = l * l∗ := by
- simp only [kstar_eq_supᵢ_pow, mul_supᵢ, supᵢ_mul, ← pow_succ, ← pow_succ']
+ simp only [kstar_eq_iSup_pow, mul_iSup, iSup_mul, ← pow_succ, ← pow_succ']
#align language.mul_self_kstar_comm Language.mul_self_kstar_comm
@[simp]
theorem one_add_self_mul_kstar_eq_kstar (l : Language α) : 1 + l * l∗ = l∗ := by
- simp only [kstar_eq_supᵢ_pow, mul_supᵢ, ← pow_succ, ← pow_zero l]
- exact sup_supᵢ_nat_succ _
+ simp only [kstar_eq_iSup_pow, mul_iSup, ← pow_succ, ← pow_zero l]
+ exact sup_iSup_nat_succ _
#align language.one_add_self_mul_kstar_eq_kstar Language.one_add_self_mul_kstar_eq_kstar
@[simp]
@@ -299,15 +299,15 @@ instance : KleeneAlgebra (Language α) :=
mul_kstar_le_kstar := fun a ↦ (one_add_self_mul_kstar_eq_kstar a).le.trans' le_sup_right,
kstar_mul_le_kstar := fun a ↦ (one_add_kstar_mul_self_eq_kstar a).le.trans' le_sup_right,
kstar_mul_le_self := fun l m h ↦ by
- rw [kstar_eq_supᵢ_pow, supᵢ_mul]
- refine' supᵢ_le (fun n ↦ _)
+ rw [kstar_eq_iSup_pow, iSup_mul]
+ refine' iSup_le (fun n ↦ _)
induction' n with n ih
· simp
rw [pow_succ', mul_assoc (l^n) l m]
exact le_trans (le_mul_congr le_rfl h) ih,
mul_kstar_le_self := fun l m h ↦ by
- rw [kstar_eq_supᵢ_pow, mul_supᵢ]
- refine' supᵢ_le (fun n ↦ _)
+ rw [kstar_eq_iSup_pow, mul_iSup]
+ refine' iSup_le (fun n ↦ _)
induction' n with n ih
· simp
rw [pow_succ, ←mul_assoc m l (l^n)]
KleeneAlgebra (Language α)
instance (#3585)
This is another case of https://github.com/leanprover/lean4/issues/2096
@@ -292,10 +292,9 @@ theorem one_add_kstar_mul_self_eq_kstar (l : Language α) : 1 + l∗ * l = l∗
rw [mul_self_kstar_comm, one_add_self_mul_kstar_eq_kstar]
#align language.one_add_kstar_mul_self_eq_kstar Language.one_add_kstar_mul_self_eq_kstar
--- Porting note: `noncomputable` required.
-noncomputable instance : KleeneAlgebra (Language α) :=
- { Language.instSemiringLanguage, Set.instCompleteBooleanAlgebraSet,
- Language.instKStarLanguage with
+instance : KleeneAlgebra (Language α) :=
+ { Language.instSemiringLanguage, Set.instCompleteBooleanAlgebraSet with
+ kstar := fun L ↦ L∗,
one_le_kstar := fun a l hl ↦ ⟨[], hl, by simp⟩,
mul_kstar_le_kstar := fun a ↦ (one_add_self_mul_kstar_eq_kstar a).le.trans' le_sup_right,
kstar_mul_le_kstar := fun a ↦ (one_add_kstar_mul_self_eq_kstar a).le.trans' le_sup_right,
@@ -44,7 +44,7 @@ namespace Language
variable {l m : Language α} {a b x : List α}
-- Porting note: `reducible` attribute cannot be local.
-attribute [reducible] Language
+-- attribute [local reducible] Language
/-- Zero language has no elements. -/
instance : Zero (Language α) :=
@@ -59,7 +59,7 @@ instance : Inhabited (Language α) :=
/-- The sum of two languages is their union. -/
instance : Add (Language α) :=
- ⟨(· ∪ ·)⟩
+ ⟨((· ∪ ·) : Set (List α) → Set (List α) → Set (List α))⟩
/-- The product of two languages `l` and `m` is the language made of the strings `x ++ y` where
`x ∈ l` and `y ∈ m`. -/
@@ -70,11 +70,11 @@ theorem zero_def : (0 : Language α) = (∅ : Set _) :=
rfl
#align language.zero_def Language.zero_def
-theorem one_def : (1 : Language α) = {[]} :=
+theorem one_def : (1 : Language α) = ({[]} : Set (List α)) :=
rfl
#align language.one_def Language.one_def
-theorem add_def (l m : Language α) : l + m = l ∪ m :=
+theorem add_def (l m : Language α) : l + m = (l ∪ m : Set (List α)) :=
rfl
#align language.add_def Language.add_def
@@ -90,6 +90,12 @@ lemma kstar_def (l : Language α) : l∗ = {x | ∃ L : List (List α), x = L.jo
rfl
#align language.kstar_def Language.kstar_def
+-- Porting note: `reducible` attribute cannot be local,
+-- so this new theorem is required in place of `Set.ext`.
+@[ext]
+theorem ext {l m : Language α} (h : ∀ (x : List α), x ∈ l ↔ x ∈ m) : l = m :=
+ Set.ext h
+
@[simp]
theorem not_mem_zero (x : List α) : x ∉ (0 : Language α) :=
id
The unported dependencies are