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"