let pp p fmt (op, al) =
    let arg = p fmt and str = Pretty.string fmt in
      match (op, al) with
        | Empty, [] ->
            Pretty.string fmt "empty"
        | Full, [] ->
            Pretty.string fmt "full"
        | Ite, [a; b; c] -> 
            Pretty.apply p fmt ("ite", [a; b; c])
        | _ ->
            invalid_arg "Ill-formed application in theory of propositional sets"