(** * Coq codes *)
(** ** Dependencies *)
Require Export RegExp.Utility.
Require Export RegExp.Definitions.
Require Export RegExp.Boolean.
Require Export RegExp.Concat.
Require Export RegExp.Star.
(** ** Define [includes] *)
Definition includes (x y:RegExp) : Prop := (x || y) =R= y.
Notation "x <= y" := (includes x y) (at level 70).
Definition prop_eq (p q:Prop) : Prop := (p <-> q).
Add Parametric Morphism : includes with
signature re_eq ==> re_eq ==> prop_eq as includes_morphism.
(** [x || y] is the least upper bound of [x] and [y] *)
(** ** Monotonicity of [includes] *)

Lemma includes_left_Cat_monotone : forall x y z, x <= y -> (z ++ x) <= (z ++ y).