(* * Copyright (c) 2009-2010, Andrew Appel, Robert Dockins and Aquinas Hobor. * *)
Local Open Scope pred.
(* Lemma box_contractive {A} `{ageable A} : forall F (M:modality), inclusion _ M fashionR -> contractive F -> contractive (fun X => box M (F X)).  Lemma box_nonexpansive {A} `{ageable A} : forall F (M:modality), inclusion _ M fashionR -> nonexpansive F -> nonexpansive (fun X => box M (F X)).  Lemma diamond_contractive {A} `{ageable A} : forall F (M:modality), inclusion _ M fashionR -> contractive F -> contractive (fun X => diamond M (F X)).  Lemma diamond_nonexpansive {A} `{ageable A} : forall F (M:modality), inclusion _ M fashionR -> nonexpansive F -> nonexpansive (fun X => diamond M (F X)). *)

Lemma sepcon_contractive {A} {JA: Join A}{PA: Perm_alg A}{SA: Sep_alg A}{AG: ageable A}{XA: Age_alg A} : forall F G,
contractive F ->
contractive G ->
contractive (fun x => F x * G x).