let negativeClause clause =
List.map(fun term ->
match term with
| PNot(c) -> c
| PCall(s) -> PNot(PCall(s))
| PReturn(s) -> PNot(PReturn(s))
| PCallOrReturn(s) -> PNot(PCallOrReturn(s))
| PIndexedExp(s) -> PNot(PIndexedExp(s))
| PTrue -> PFalse
| PFalse -> PTrue
| PFuncReturn (hash, f) -> PNot(PFuncReturn (hash, f))
| PFuncParam (hash, f, p) -> PNot(PFuncParam (hash, f, p))
| PAnd (_,_)
| POr (_,_) -> assert false
) clause