(*s Defining the negation of a formula :
	  $\neg x \leq y+d \Leftrightarrow x>y+d \Leftrightarrow x \geq y+d+1$
 *)
Fixpoint CGSnot (fs : CGSForm) : CGSForm :=
  match fs with
  | CGSleq x y d => CGSleq y x (Dneg (Dplus d Done))
  | CGSand f0 f1 => CGSor (CGSnot f0) (CGSnot f1)
  | CGSor f0 f1 => CGSand (CGSnot f0) (CGSnot f1)
  end.

(* Specifications: *)
Lemma Dmone_neg : Dle Dz (Dneg Done) = false.
Lemma Dminus_one_1 : forall d : D, Dle d (Dplus d (Dneg Done)) = false.
Lemma Dle_lt_1 : forall d d' : D, Dle d' d = false -> Dle d (Dplus d' (Dneg Done)) = true.
Lemma Dle_lt_2 : forall d d' : D, Dle d (Dplus d' (Dneg Done)) = true -> Dle d' d = false.
Lemma CGSnot_correct : forall (fs : CGSForm) (rho : ad -> D), CGSeval rho fs -> ~ CGSeval rho (CGSnot fs).
Lemma CGSnot_complete : forall (fs : CGSForm) (rho : ad -> D), ~ CGSeval rho (CGSnot fs) -> CGSeval rho fs.