Ltac union_evolve n := unfold UIter, simulation_t, evolve_t; apply union_evolve; intro n; apply evolve_union.

(* Specifications: *)
Lemma evolve_union: forall l J R S, (exists j:J, evolve_1 l R (S j)) -> evolve_1 l R (union S).
Lemma incl_evolve: forall l R R' S, incl R R' -> evolve_1 l R' S -> evolve_1 l R S.
Lemma evolve_incl: forall l S R S', incl S S' -> evolve_1 l R S -> evolve_1 l R S'.
Lemma simulation_eeq: forall R S, eeq R S -> simulation R -> simulation S.
Lemma simulation_t_eeq: forall R S, eeq R S -> simulation_t R -> simulation_t S.