--- /dev/null
+; COMMAND-LINE: --inst-max-level=0 --simplification=none
+; EXPECT: unsat
+(set-logic UF)
+(set-info :status unsat)
+(declare-sort Node 0)
+(declare-sort GrassPat 0)
+(declare-sort GrassArray 1)
+(declare-sort ArrayCell 1)
+(declare-sort Loc 1)
+(declare-sort Set 1)
+(declare-sort Map 2)
+(declare-sort GrassByte 0)
+(declare-fun grass_null$0 () (Loc Node))
+(declare-fun grass_read$0 ((Map (Loc Node) (Loc Node)) (Loc Node))
+ (Loc Node))
+(declare-fun grass_emptyset$0 () (Set (Loc Node)))
+(declare-fun grass_singleton$0 ((Loc Node)) (Set (Loc Node)))
+(declare-fun grass_union$0 ((Set (Loc Node)) (Set (Loc Node)))
+ (Set (Loc Node)))
+(declare-fun grass_intersection$0 ((Set (Loc Node)) (Set (Loc Node)))
+ (Set (Loc Node)))
+(declare-fun grass_setminus$0 ((Set (Loc Node)) (Set (Loc Node)))
+ (Set (Loc Node)))
+(declare-fun grass_Btwn$0 ((Map (Loc Node) (Loc Node)) (Loc Node) (Loc Node)
+ (Loc Node)) Bool)
+(declare-fun grass_member$0 ((Loc Node) (Set (Loc Node))) Bool)
+(declare-fun grass_known$0 ((Map (Loc Node) (Loc Node))) GrassPat)
+(declare-fun grass_known$1 (Bool) GrassPat)
+(declare-fun Alloc_Node$0 () (Set (Loc Node)))
+(declare-fun FP_Caller_Node$0 () (Set (Loc Node)))
+(declare-fun FP_Caller_Node_1$0 () (Set (Loc Node)))
+(declare-fun FP_Caller_final_Node_2$0 () (Set (Loc Node)))
+(declare-fun FP_Node$0 () (Set (Loc Node)))
+(declare-fun Label$0 () Bool)
+(declare-fun Label_1$0 () Bool)
+(declare-fun Label_2$0 () Bool)
+(declare-fun Label_3$0 () Bool)
+(declare-fun elt$0 () (Loc Node))
+(declare-fun lseg$0 ((Map (Loc Node) (Loc Node)) (Loc Node) (Loc Node)
+ (Set (Loc Node))) Bool)
+(declare-fun lst$0 () (Loc Node))
+(declare-fun next$0 () (Map (Loc Node) (Loc Node)))
+(declare-fun res_2$0 () (Loc Node))
+(declare-fun set_compr$0 ((Map (Loc Node) (Loc Node)) (Loc Node) (Loc Node))
+ (Set (Loc Node)))
+(declare-fun sk_?X$0 () (Set (Loc Node)))
+(declare-fun sk_?X_1$0 () (Set (Loc Node)))
+(declare-fun sk_?X_2$0 () (Set (Loc Node)))
+(declare-fun sk_?X_3$0 () (Set (Loc Node)))
+(declare-fun sk_?X_4$0 () (Set (Loc Node)))
+(declare-fun sk_?e$0 () (Loc Node))
+
+(assert (not (grass_member$0 grass_null$0 Alloc_Node$0)))
+(assert
+ (and
+ (or
+ (or
+ (and (and (grass_member$0 sk_?e$0 sk_?X_4$0) Label_1$0)
+ (and
+ (not
+ (grass_member$0 sk_?e$0
+ (set_compr$0 next$0 res_2$0 grass_null$0)))
+ Label_1$0))
+ (and
+ (and
+ (grass_member$0 sk_?e$0
+ (set_compr$0 next$0 res_2$0 grass_null$0))
+ Label_1$0)
+ (and (not (grass_member$0 sk_?e$0 sk_?X_4$0)) Label_1$0)))
+ (and
+ (not (grass_Btwn$0 next$0 res_2$0 grass_null$0 grass_null$0))
+ Label$0))
+ Label_2$0))
+(assert (forall ((x (Loc Node))) (not (grass_member$0 x grass_emptyset$0))))
+(assert
+ (forall ((y (Loc Node)) (x (Loc Node)))
+ (or (and (= x y) (grass_member$0 x (grass_singleton$0 y)))
+ (and (not (= x y))
+ (not (grass_member$0 x (grass_singleton$0 y)))))))
+(assert
+ (forall ((x (Loc Node)))
+ (or
+ (and (grass_member$0 x FP_Caller_Node$0)
+ (grass_member$0 x
+ (grass_setminus$0 FP_Caller_Node$0 FP_Node$0))
+ (not (grass_member$0 x FP_Node$0)))
+ (and
+ (or (grass_member$0 x FP_Node$0)
+ (not (grass_member$0 x FP_Caller_Node$0)))
+ (not
+ (grass_member$0 x
+ (grass_setminus$0 FP_Caller_Node$0 FP_Node$0)))))))
+(assert
+ (forall ((x (Loc Node)))
+ (or
+ (and (grass_member$0 x Alloc_Node$0)
+ (grass_member$0 x
+ (grass_setminus$0 Alloc_Node$0 Alloc_Node$0))
+ (not (grass_member$0 x Alloc_Node$0)))
+ (and
+ (or (grass_member$0 x Alloc_Node$0)
+ (not (grass_member$0 x Alloc_Node$0)))
+ (not
+ (grass_member$0 x
+ (grass_setminus$0 Alloc_Node$0 Alloc_Node$0)))))))
+(assert
+ (forall ((x (Loc Node)))
+ (or
+ (and (grass_member$0 x Alloc_Node$0)
+ (grass_member$0 x FP_Node$0)
+ (grass_member$0 x
+ (grass_intersection$0 Alloc_Node$0 FP_Node$0)))
+ (and
+ (or (not (grass_member$0 x Alloc_Node$0))
+ (not (grass_member$0 x FP_Node$0)))
+ (not
+ (grass_member$0 x
+ (grass_intersection$0 Alloc_Node$0 FP_Node$0)))))))
+(assert
+ (forall ((x (Loc Node)))
+ (or
+ (and (grass_member$0 x sk_?X$0)
+ (grass_member$0 x sk_?X_1$0)
+ (grass_member$0 x
+ (grass_intersection$0 sk_?X$0 sk_?X_1$0)))
+ (and
+ (or (not (grass_member$0 x sk_?X$0))
+ (not (grass_member$0 x sk_?X_1$0)))
+ (not
+ (grass_member$0 x
+ (grass_intersection$0 sk_?X$0 sk_?X_1$0)))))))
+(assert
+ (forall ((x (Loc Node)))
+ (or
+ (and
+ (grass_member$0 x
+ (grass_union$0
+ (grass_intersection$0 Alloc_Node$0 FP_Node$0)
+ (grass_setminus$0 Alloc_Node$0 Alloc_Node$0)))
+ (or
+ (grass_member$0 x
+ (grass_intersection$0 Alloc_Node$0 FP_Node$0))
+ (grass_member$0 x
+ (grass_setminus$0 Alloc_Node$0 Alloc_Node$0))))
+ (and
+ (not
+ (grass_member$0 x
+ (grass_intersection$0 Alloc_Node$0 FP_Node$0)))
+ (not
+ (grass_member$0 x
+ (grass_setminus$0 Alloc_Node$0 Alloc_Node$0)))
+ (not
+ (grass_member$0 x
+ (grass_union$0
+ (grass_intersection$0 Alloc_Node$0 FP_Node$0)
+ (grass_setminus$0 Alloc_Node$0 Alloc_Node$0))))))))
+(assert
+ (forall ((x (Loc Node)))
+ (or
+ (and (grass_member$0 x (grass_union$0 sk_?X$0 sk_?X_1$0))
+ (or (grass_member$0 x sk_?X$0)
+ (grass_member$0 x sk_?X_1$0)))
+ (and (not (grass_member$0 x sk_?X$0))
+ (not (grass_member$0 x sk_?X_1$0))
+ (not
+ (grass_member$0 x (grass_union$0 sk_?X$0 sk_?X_1$0)))))))
+(assert
+ (forall ((x (Loc Node)))
+ (or
+ (and
+ (grass_member$0 x
+ (grass_union$0 FP_Caller_Node_1$0 FP_Node$0))
+ (or (grass_member$0 x FP_Caller_Node_1$0)
+ (grass_member$0 x FP_Node$0)))
+ (and (not (grass_member$0 x FP_Caller_Node_1$0))
+ (not (grass_member$0 x FP_Node$0))
+ (not
+ (grass_member$0 x
+ (grass_union$0 FP_Caller_Node_1$0 FP_Node$0)))))))
+(assert
+ (forall ((x (Loc Node)))
+ (or
+ (and
+ (grass_member$0 x
+ (grass_union$0 FP_Node$0 FP_Caller_Node$0))
+ (or (grass_member$0 x FP_Node$0)
+ (grass_member$0 x FP_Caller_Node$0)))
+ (and (not (grass_member$0 x FP_Node$0))
+ (not (grass_member$0 x FP_Caller_Node$0))
+ (not
+ (grass_member$0 x
+ (grass_union$0 FP_Node$0 FP_Caller_Node$0)))))))
+(assert
+ (forall ((x (Loc Node)))
+ (or
+ (and
+ (grass_member$0 x
+ (grass_union$0 FP_Caller_Node$0 Alloc_Node$0))
+ (or (grass_member$0 x FP_Caller_Node$0)
+ (grass_member$0 x Alloc_Node$0)))
+ (and (not (grass_member$0 x FP_Caller_Node$0))
+ (not (grass_member$0 x Alloc_Node$0))
+ (not
+ (grass_member$0 x
+ (grass_union$0 FP_Caller_Node$0 Alloc_Node$0)))))))
+(assert
+ (or (grass_Btwn$0 next$0 lst$0 lst$0 lst$0)
+ (not (lseg$0 next$0 lst$0 lst$0 sk_?X$0))))
+(assert
+ (forall
+ ((next (Map (Loc Node) (Loc Node))) (x (Loc Node))
+ (y (Loc Node)) (z (Loc Node)))
+ (or
+ (and (grass_Btwn$0 next x z y)
+ (grass_member$0 z (set_compr$0 next x y)) (not (= z y)))
+ (and (or (= z y) (not (grass_Btwn$0 next x z y)))
+ (not (grass_member$0 z (set_compr$0 next x y)))))))
+(assert
+ (forall
+ ((?u (Loc Node)) (?x (Loc Node)) (?y (Loc Node))
+ (?z (Loc Node)))
+ (or (not (grass_Btwn$0 next$0 ?x ?y ?z))
+ (not (grass_Btwn$0 next$0 ?x ?u ?y))
+ (and (grass_Btwn$0 next$0 ?x ?u ?z)
+ (grass_Btwn$0 next$0 ?u ?y ?z)))))
+(assert
+ (forall
+ ((?u (Loc Node)) (?x (Loc Node)) (?y (Loc Node))
+ (?z (Loc Node)))
+ (or (not (grass_Btwn$0 next$0 ?x ?y ?z))
+ (not (grass_Btwn$0 next$0 ?y ?u ?z))
+ (and (grass_Btwn$0 next$0 ?x ?y ?u)
+ (grass_Btwn$0 next$0 ?x ?u ?z)))))
+(assert
+ (forall ((?x (Loc Node)) (?y (Loc Node)) (?z (Loc Node)))
+ (or (not (grass_Btwn$0 next$0 ?x ?y ?y))
+ (not (grass_Btwn$0 next$0 ?y ?z ?z))
+ (grass_Btwn$0 next$0 ?x ?z ?z))))
+(assert
+ (forall ((?x (Loc Node)) (?y (Loc Node)) (?z (Loc Node)))
+ (or (not (grass_Btwn$0 next$0 ?x ?y ?z))
+ (and (grass_Btwn$0 next$0 ?x ?y ?y)
+ (grass_Btwn$0 next$0 ?y ?z ?z)))))
+(assert
+ (forall ((?x (Loc Node)) (?y (Loc Node)) (?z (Loc Node)))
+ (or (not (grass_Btwn$0 next$0 ?x ?y ?y))
+ (not (grass_Btwn$0 next$0 ?x ?z ?z))
+ (grass_Btwn$0 next$0 ?x ?y ?z)
+ (grass_Btwn$0 next$0 ?x ?z ?y))))
+(assert
+ (forall ((?x (Loc Node)) (?y (Loc Node)))
+ (or (not (grass_Btwn$0 next$0 ?x ?y ?x)) (= ?x ?y))))
+(assert
+ (forall ((?y (Loc Node)))
+ (or (not (grass_Btwn$0 next$0 res_2$0 ?y ?y)) (= res_2$0 ?y)
+ (grass_Btwn$0 next$0 res_2$0 (grass_read$0 next$0 res_2$0)
+ ?y))))
+(assert
+ (forall ((?y (Loc Node)))
+ (or (not (grass_Btwn$0 next$0 lst$0 ?y ?y)) (= lst$0 ?y)
+ (grass_Btwn$0 next$0 lst$0 (grass_read$0 next$0 lst$0) ?y))))
+(assert
+ (forall ((?y (Loc Node)))
+ (or (not (= (grass_read$0 next$0 res_2$0) res_2$0))
+ (not (grass_Btwn$0 next$0 res_2$0 ?y ?y)) (= res_2$0 ?y))))
+(assert
+ (forall ((?y (Loc Node)))
+ (or (not (= (grass_read$0 next$0 lst$0) lst$0))
+ (not (grass_Btwn$0 next$0 lst$0 ?y ?y)) (= lst$0 ?y))))
+(assert
+ (grass_Btwn$0 next$0 res_2$0 (grass_read$0 next$0 res_2$0)
+ (grass_read$0 next$0 res_2$0)))
+(assert
+ (grass_Btwn$0 next$0 lst$0 (grass_read$0 next$0 lst$0)
+ (grass_read$0 next$0 lst$0)))
+(assert (forall ((?x (Loc Node))) (grass_Btwn$0 next$0 ?x ?x ?x)))
+(assert
+ (or (= sk_?X$0 (set_compr$0 next$0 lst$0 lst$0))
+ (not (lseg$0 next$0 lst$0 lst$0 sk_?X$0))))
+(assert (= (grass_read$0 next$0 grass_null$0) grass_null$0))
+(assert (= FP_Caller_Node_1$0 (grass_setminus$0 FP_Caller_Node$0 FP_Node$0)))
+(assert (and (= lst$0 grass_null$0) Label_3$0))
+(assert (= Alloc_Node$0 (grass_union$0 FP_Caller_Node$0 Alloc_Node$0)))
+(assert
+ (= sk_?X_4$0
+ (grass_union$0 (grass_intersection$0 Alloc_Node$0 FP_Node$0)
+ (grass_setminus$0 Alloc_Node$0 Alloc_Node$0))))
+(assert (= sk_?X_3$0 (grass_union$0 sk_?X$0 sk_?X_2$0)))
+(assert (= sk_?X_2$0 sk_?X_1$0))
+(assert (= sk_?X_1$0 (grass_singleton$0 elt$0)))
+(assert (= (grass_read$0 next$0 elt$0) grass_null$0))
+(assert (= FP_Node$0 sk_?X_3$0))
+(assert (= FP_Caller_Node$0 (grass_union$0 FP_Node$0 FP_Caller_Node$0)))
+(assert (= grass_emptyset$0 (grass_intersection$0 sk_?X$0 sk_?X_2$0)))
+(assert (= grass_emptyset$0 grass_emptyset$0))
+(assert (lseg$0 next$0 lst$0 grass_null$0 sk_?X$0))
+(assert
+ (= FP_Caller_final_Node_2$0
+ (grass_union$0 FP_Caller_Node_1$0 FP_Node$0)))
+(assert (= res_2$0 elt$0))
+(assert (= (grass_union$0 FP_Caller_Node$0 Alloc_Node$0) Alloc_Node$0))
+(assert (= (grass_read$0 next$0 grass_null$0) grass_null$0))
+(assert (= (grass_read$0 next$0 grass_null$0) lst$0))
+(assert (= (grass_read$0 next$0 grass_null$0) (grass_read$0 next$0 elt$0)))
+(assert
+ (= (grass_known$1 (lseg$0 next$0 lst$0 grass_null$0 sk_?X$0))
+ (grass_known$1 (lseg$0 next$0 lst$0 lst$0 sk_?X$0))))
+(assert (= (grass_intersection$0 sk_?X$0 sk_?X_2$0) grass_emptyset$0))
+(assert
+ (=
+ (grass_union$0 (grass_intersection$0 Alloc_Node$0 FP_Node$0)
+ (grass_setminus$0 Alloc_Node$0 Alloc_Node$0))
+ sk_?X_4$0))
+(assert (= res_2$0 elt$0))
+(assert (= (grass_union$0 FP_Node$0 FP_Caller_Node$0) FP_Caller_Node$0))
+(assert (= sk_?X_1$0 (grass_singleton$0 elt$0)))
+(assert (= sk_?X_1$0 sk_?X_2$0))
+(assert
+ (= FP_Caller_final_Node_2$0
+ (grass_union$0 FP_Caller_Node_1$0 FP_Node$0)))
+(assert (= FP_Node$0 sk_?X_3$0))
+(assert (= FP_Node$0 (grass_union$0 sk_?X$0 sk_?X_2$0)))
+(assert (= FP_Caller_Node_1$0 (grass_setminus$0 FP_Caller_Node$0 FP_Node$0)))
+(assert (= sk_?X$0 (set_compr$0 next$0 lst$0 lst$0)))
+(assert (= sk_?X$0 (set_compr$0 next$0 lst$0 grass_null$0)))
+(check-sat)