let rec termsAreEqual term1 term2 =
match term1,term2 with
| PTrue,PTrue
| PFalse,PFalse -> true
| PCall(a),PCall(b)
| PReturn(a),PReturn(b)
| PCallOrReturn(a),PCallOrReturn(b) -> (String.compare a b)=0
| PIndexedExp(a),PIndexedExp(b) ->
expAreEqual a b
| PNot(a),PNot(b) -> termsAreEqual a b
| _ -> false