(* 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)). *)

(* Specifications: *)
Lemma contractive_nonexpansive {A} `{ageable A} : forall F,
contractive F ->
nonexpansive F.
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).
Lemma sepcon_nonexpansive {A}{JA: Join A}{PA: Perm_alg A}{SA: Sep_alg A}{AG: ageable A}{XA: Age_alg A} : forall F G,
nonexpansive F ->
nonexpansive G ->
nonexpansive (fun x => F x * G x).
Lemma wand_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).
Lemma wand_nonexpansive {A} {JA: Join A}{PA: Perm_alg A}{SA: Sep_alg A}{AG: ageable A}{XA: Age_alg A} : forall F G,
nonexpansive F ->
nonexpansive G ->
nonexpansive (fun x => F x -* G x).
Lemma prove_contractive {A} `{ageable A} : forall F,
(forall P Q,
|>(P >=> Q) |-- F P >=> F Q) ->
contractive F.
Lemma prove_HOcontractive1 {A} `{ageable A} : forall X F,
(forall P Q: X -> pred A,
(ALL x:X, |>(P x >=> Q x) |--
ALL x:X, F P x >=> F Q x)) ->
HOcontractive F.
Lemma prove_HOcontractive {A} `{ageable A} : forall X F,
(forall (P Q: X -> pred A) (x: X),
(ALL x:X, (|> P x <=> |> Q x) |-- F P x >=> F Q x)) ->
HOcontractive F.