(** ** Correctness with a monotonic function, a weakly monotonic function, and a controlled simulation *)
Section ControlledCorrect.
Variable B: relation X.
Hypothesis HB: controlled TX TY B.
Variables F G: function X Y.
Hypothesis HF : monotonic TX TY F.
Hypothesis HG : wmonotonic TX TY G.
Hypothesis HBF: transparent B F.
Hypothesis HFG: contains F G.
Hypothesis HBG: contains (chaining_l (star B)) G.
(*     Hypothesis HBG: forall R, incl (comp (star B) (G R)) (G R).  *)
Variable R: relation2 X Y.
Hypothesis HRt: evolve_t TX TY R (comp (star B) (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) (comp (star B) (UExp F R (S n))).
Let silent: simulation_t TX TY (comp (star B) (UIter F R)).
Let HFGn: forall n, incl (UExp F R n) (UExp G R n).
Let HBGGn: forall R n, incl (comp (star B) (UExp G R n)) (UExp G R (S n)).
Let visible: evolve_a TX TY (comp (star B) (UIter F R)) (UIter G (comp (star B) (UIter F R))).
Let HGGBF: eeq (UIter (UIter G) (comp (star B) (UIter F R))) (UIter (UIter G) R).

(** Proposition 3.4 *)
Theorem controlled_correct: simulation TX TY (UIter (UIter G) R).
End ControlledCorrect.