Includes not constructing a default value for non-first class types (e.g. RegLan) and a missing printer case for re.diff.
case kind::REGEXP_RANGE:
case kind::REGEXP_LOOP:
case kind::REGEXP_COMPLEMENT:
+ case kind::REGEXP_DIFF:
case kind::REGEXP_EMPTY:
case kind::REGEXP_SIGMA:
case kind::SEQ_UNIT:
case kind::REGEXP_RANGE: return "re.range";
case kind::REGEXP_LOOP: return "re.loop";
case kind::REGEXP_COMPLEMENT: return "re.comp";
+ case kind::REGEXP_DIFF: return "re.diff";
case kind::SEQUENCE_TYPE: return "Seq";
case kind::SEQ_UNIT: return "seq.unit";
case kind::SEQ_NTH: return "seq.nth";
void FullModelChecker::preInitializeType( FirstOrderModelFmc * fm, TypeNode tn ){
if( d_preinitialized_types.find( tn )==d_preinitialized_types.end() ){
d_preinitialized_types[tn] = true;
- if (!tn.isFunction() || options::ufHo())
+ if (tn.isFirstClass())
{
Trace("fmc") << "Get model basis term " << tn << "..." << std::endl;
Node mb = fm->getModelBasisTerm(tn);
regress1/sygus/rec-fun-while-infinite.sy
regress1/sygus/re-concat.sy
regress1/sygus/repair-const-rl.sy
+ regress1/sygus/rex-strings-alarm.sy
regress1/sygus/sets-pred-test.sy
regress1/sygus/simple-regexp.sy
regress1/sygus/stopwatch-bt.sy
--- /dev/null
+; EXPECT: unsat
+; COMMAND-LINE: --sygus-out=status --lang=sygus2 --strings-exp
+
+(set-logic S)
+
+(set-option :sygus-rec-fun true)
+(set-option :e-matching false)
+
+(define-sort Rex () RegLan)
+
+
+;SyGuS Grammar Definition.
+(synth-fun phi () Rex
+
+ ((<R> Rex))
+ ((<R> Rex (
+
+ ; alphabets
+ (str.to_re "r") ; r = request
+ (str.to_re "g") ; g = grant
+ (str.to_re "e") ; e = empty
+ (str.to_re "b") ; b = request, grant
+
+; (re.none <R>)
+; (re.all <R>)
+
+ ; CHOICE
+ (re.union <R> <R>)
+
+ ; CONCATENATION
+ (re.++ <R> <R>)
+
+ ; INTERSECTION
+ (re.inter <R> <R>)
+
+ ; STAR
+ (re.* <R>)
+
+ ; PLUS
+ (re.+ <R>)
+
+ ; Complement / Don't work
+ (re.comp <R>)
+
+ ; Difference / Don't work
+ (re.diff <R> <R>)
+
+ (re.opt <R>)
+
+ )))
+)
+
+(define-fun w1() String "ee")
+
+(constraint (str.in_re w1 phi))
+
+(define-fun n1() String "bbegre")
+(constraint (str.in_re n1 (re.comp phi)))
+
+(check-synth)