proposition: Lemma union_regular: forall L1 L2, Regular L1 -> Regular L2 -> Regular (Lang.Union L1 L2).
proof: Proof. intros. inversion H; subst; clear H. inversion H0; subst; clear H0. apply regular_def with (r:=r_union r r0). split; intros. - inversion H0; subst; clear H0. + apply union_in_l. apply H1. assumption. + apply union_in_r. apply H. assumption. - destruct H0. + apply H1 in H0. apply accept_union_l. assumption. + apply H in H0. apply accept_union_r. assumption. Qed.
imports: Coq.Strings.Ascii Coq.Lists.List Coq.Strings.Ascii Coq.Arith.PeanoNat Coq.micromega.Lia Turing.Lang Turing.Regex Turing.Util