(** * Coq codes *)
(** ** Dependencies *)
Require Export RegExp.Utility.
Require Export RegExp.Definitions.
Require Export RegExp.Boolean.
(** ** [Cat] is morphism *)
Add Parametric Morphism : Cat with
signature re_eq ==> re_eq ==> re_eq as Cat_mor.
(** ** [Empty] *)
(** [Empty] corresponds to 0 in Kleene algebra. *)
(** ** [Cat] matches concatination of strings. *)

Lemma matches_Cat : forall s s' r r',
r ~==s -> r' ~== s' -> (r ++ r') ~== (s ++ s')%string.