RIS.alpha_regexp
Set Implicit Arguments.
Require Export tools algebra language regexp words positive_regexp.
Section s.
Context {atom : Set}{๐ : Atom atom}.
Context {X : Set} {๐ : Alphabet ๐ X}.
Require Export tools algebra language regexp words positive_regexp.
Section s.
Context {atom : Set}{๐ : Atom atom}.
Context {X : Set} {๐ : Alphabet ๐ X}.
Global Instance actReg : Action ๐ (@regexp letter) :=
fix act p e {struct e} :=
match e with
| โชxโซ โ โชpโxโซ
| e_un โ e_un
| e_zero โ e_zero
| e_add e f โ e_add (act p e) (act p f)
| e_prod e f โ e_prod (act p e) (act p f)
| e_star e โ e_star (act p e)
end.
Global Instance supReg : Support ๐ (@regexp letter) :=
fix sup e {struct e} :=
match e with
| โชxโซ โ โxโ
| e_un โ []
| e_zero โ []
| e_add e f โ sup e ++ sup f
| e_prod e f โ sup e ++ sup f
| e_star e โ sup e
end.
Global Instance nominalReg : Nominal ๐ (@regexp letter).
fix act p e {struct e} :=
match e with
| โชxโซ โ โชpโxโซ
| e_un โ e_un
| e_zero โ e_zero
| e_add e f โ e_add (act p e) (act p f)
| e_prod e f โ e_prod (act p e) (act p f)
| e_star e โ e_star (act p e)
end.
Global Instance supReg : Support ๐ (@regexp letter) :=
fix sup e {struct e} :=
match e with
| โชxโซ โ โxโ
| e_un โ []
| e_zero โ []
| e_add e f โ sup e ++ sup f
| e_prod e f โ sup e ++ sup f
| e_star e โ sup e
end.
Global Instance nominalReg : Nominal ๐ (@regexp letter).
Lemma support_lang e u : โฆeโง u โ โuโ โ โeโ.
Lemma ฮฃ_support L : โLโ โ โฮฃ Lโ.
Lemma prefixes_support e : โprefixes eโ โ โeโ.
Lemma fresh_lang e a u : a # e โ โฆeโง u โ a # u.
Lemma support_join e f : โeโชfโ = โeโ++โfโ.
Lemma support_prod e f : โeยทfโ = โeโ++โfโ.
Lemma support_star e : โeโโ = โeโ.
Lemma support_Var e : โeโ โ โVar eโ.
Lemma support_ฯต e : โฯต eโ = [].
Lemma ฮฃ_support L : โLโ โ โฮฃ Lโ.
Lemma prefixes_support e : โprefixes eโ โ โeโ.
Lemma fresh_lang e a u : a # e โ โฆeโง u โ a # u.
Lemma support_join e f : โeโชfโ = โeโ++โfโ.
Lemma support_prod e f : โeยทfโ = โeโ++โfโ.
Lemma support_star e : โeโโ = โeโ.
Lemma support_Var e : โeโ โ โVar eโ.
Lemma support_ฯต e : โฯต eโ = [].
Lemma act_lang e p u : โฆpโeโง u โ โฆeโง (pโโu).
Lemma ฯต_act p e : ฯต (pโe) = ฯต e.
Lemma ฮด_act p l e : ฮด l (pโe) = pโ ฮด (pโโl) e.
Lemma test0_act p e : test0 (pโe) = test0 e.
Lemma sizeExpr_act p e : sizeExpr (pโe) = sizeExpr e.
Lemma ฮฃ_act p L : p โ ฮฃ L = ฮฃ (pโL).
Lemma positive_act p e : positive (pโe) = p โ (positive e).
Lemma KA_act p e f : e =KA f โ p โ e =KA p โ f.
Lemma ฯต_act p e : ฯต (pโe) = ฯต e.
Lemma ฮด_act p l e : ฮด l (pโe) = pโ ฮด (pโโl) e.
Lemma test0_act p e : test0 (pโe) = test0 e.
Lemma sizeExpr_act p e : sizeExpr (pโe) = sizeExpr e.
Lemma ฮฃ_act p L : p โ ฮฃ L = ฮฃ (pโL).
Lemma positive_act p e : positive (pโe) = p โ (positive e).
Lemma KA_act p e f : e =KA f โ p โ e =KA p โ f.
Fixpoint sizeAt e (a : atom) :=
match e with
| e_un | e_zero | โชvar _โซ โ 0
| โชopen bโซ | โชclose bโซ โ if a=?=b then 1 else 0
| e_add e f | e_prod e f โ sizeAt e a + sizeAt f a
| e_star e โ sizeAt e a
end.
Lemma sizeAt_fresh e a : a # e โ sizeAt e a = 0.
Lemma size_sizeAt e : sum (sizeAt e) {{โeโ}} โค sizeExpr e.
End s.
match e with
| e_un | e_zero | โชvar _โซ โ 0
| โชopen bโซ | โชclose bโซ โ if a=?=b then 1 else 0
| e_add e f | e_prod e f โ sizeAt e a + sizeAt f a
| e_star e โ sizeAt e a
end.
Lemma sizeAt_fresh e a : a # e โ sizeAt e a = 0.
Lemma size_sizeAt e : sum (sizeAt e) {{โeโ}} โค sizeExpr e.
End s.