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