let p_app name args = 
  if not (simpl()) then Papp(name,args) 
  else
    match name , args with
      | "eq", [ a ; b ] when bad_eq_terms a b -> Ptrue
      | "neq", [ a ; b ] when bad_eq_terms a b -> Pfalse
      | "le_int" , [a;b] when bad_eq_terms a b -> Ptrue
      | "lt_int" , [a;b] when bad_eq_terms a b -> Pfalse
      | "eq" , [ Tconst(ConstInt a) ; Tconst(ConstInt b) ] ->
          i_compare Big_int.eq_big_int a b
      | "neq" , [ Tconst(ConstInt a) ; Tconst(ConstInt b) ] -> 
          i_compare (fun za zb -> not (Big_int.eq_big_int za zb)) a b
      | "le_int" , [ Tconst(ConstInt a) ; Tconst(ConstInt b) ] -> 
          i_compare Big_int.le_big_int a b
      | "lt_int" , [ Tconst(ConstInt a) ; Tconst(ConstInt b) ] -> 
          i_compare Big_int.lt_big_int a b
      | _ -> Papp (name,args)