# enough (for now) ? Once we support quantifiers, maybe reconsider
# this..
cardinality SORT_TYPE "Cardinality(Cardinality::INTEGERS)"
-well-founded SORT_TYPE false
-
+well-founded SORT_TYPE \
+ "::CVC4::theory::builtin::SortProperties::isWellFounded(%TYPE%)" \
+ "::CVC4::theory::builtin::SortProperties::mkGroundTerm(%TYPE%)"
# A kind representing "inlined" operators defined with OPERATOR
# Conceptually, (EQUAL a b) is actually an (APPLY EQUAL a b), but it's
}
};/* class StringConstantTypeRule */
+class SortProperties {
+//private: //FIXME?
+// static std::map< TypeNode, TNode > d_groundTerms;
+public:
+ inline static bool isWellFounded(TypeNode type) {
+ return true;
+ }
+ inline static Node mkGroundTerm(TypeNode type) {
+ Assert(type.getKind() == kind::SORT_TYPE);
+ //if( d_groundTerms.find( type )==d_groundTerms.end() ){
+ // d_groundTerms[type] = NodeManager::currentNM()->mkVar( type );
+ //}
+ //return d_groundTerms[type];
+ return NodeManager::currentNM()->mkVar( type );
+ }
+};
class FunctionProperties {
public: