Language Operations #
This file defines basic operations on languages used throughout the closure-property proofs.
Main declarations #
@[simp]
@[simp]
Equations
- L.permuteLang π = L.bijemapLang π
Instances For
@[simp]
theorem
Language.bijemapLang_symm_bijemapLang
{T : Type u_2}
{T' : Type u_1}
(L : Language T)
(π : T ≃ T')
:
The right quotient of L by R: the set of words w such that w ++ v ∈ L for some
v ∈ R. This generalises prefixLang (which is rightQuotient L Set.univ).
Instances For
Equations
Equations
- Language.«term_\\_» = Lean.ParserDescr.trailingNode `Language.«term_\\_» 70 70 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " \\\\ ") (Lean.ParserDescr.cat `term 71))
Instances For
@[simp]
theorem
Language.leftQuotient_mono
{α : Type u_1}
{L₁ L₂ : Language α}
(h : L₁ ≤ L₂)
(x : List α)
:
(fun (x : List α) (L : Language α) => L.leftQuotient x) x L₁ ≤ (fun (x : List α) (L : Language α) => L.leftQuotient x) x L₂
@[simp]
@[simp]
@[simp]
theorem
Language.cons_leftQuotient
{α : Type u_1}
(a : α)
(x : List α)
(L : Language α)
:
(fun (x : List α) (L : Language α) => L.leftQuotient x) (a :: x) L = (fun (x : List α) (L : Language α) => L.leftQuotient x) x
((fun (x : List α) (L : Language α) => L.leftQuotient x) [a] L)
@[simp]
theorem
Language.append_leftQuotient
{α : Type u_1}
(x y : List α)
(L : Language α)
:
(fun (x : List α) (L : Language α) => L.leftQuotient x) (x ++ y) L = (fun (x : List α) (L : Language α) => L.leftQuotient x) y
((fun (x : List α) (L : Language α) => L.leftQuotient x) x L)
@[simp]
theorem
Language.leftQuotient_add
{α : Type u_1}
(x : List α)
(L₁ L₂ : Language α)
:
(fun (x : List α) (L : Language α) => L.leftQuotient x) x (L₁ + L₂) = (fun (x : List α) (L : Language α) => L.leftQuotient x) x L₁ + (fun (x : List α) (L : Language α) => L.leftQuotient x) x L₂