(** ** Boolean operations on [RegExp] are morphism. *)
(** [Or] corresponds to plus in Kleene algebra. *)
Add Parametric Morphism : And with
signature re_eq ==> re_eq ==> re_eq as And_morphism.
Add Parametric Morphism : Not with
signature re_eq ==> re_eq as Not_morphism.
(** [matches] is a homomorphism from [RegExp] to bool for [And], [Or], and [Not]. *)

Theorem Or_assoc : forall r r' r'', (r || r') || r'' =R= r || (r' || r'').