Decidable predicate ADT