(** ** Correctness with a monotonic function, and a weakly monotonic function *)
Section UnifiedCorrect.
Variables F G: function X Y.
Hypothesis HF : monotonic TX TY F.
Hypothesis HG : wmonotonic TX TY G.
Variable R: relation2 X Y.
Hypothesis HFG: contains F G.
Hypothesis HRt: evolve_t TX TY R (F R).
Hypothesis HRa: evolve_a TX TY R (G R).
(** first induction predicate *)
Let pre_silent: forall n, evolve_t TX TY (UExp F R n) (UExp F R (S n)).
Let silent: simulation_t TX TY (UIter F R).
Let HFGn: forall n, incl (UExp F R n) (UExp G R n).
(** second induction predicate *)
Let pre_visible: forall n, evolve TX TY (UExp F R n) (UExp G R (S n)).
Let visible: evolve_a TX TY (UIter F R) (UIter G R).
Let HGFGn: forall n, incl (UExp (UIter G) (UIter G R) n) (UExp (UIter G) R (S n)).
Let HGFG: eeq (UIter (UIter G) (UIter F R)) (UIter (UIter G) R).

(** Proposition 2.4 *)
Theorem unified_correct: simulation TX TY (UIter (UIter G) R).
End UnifiedCorrect.