@@ -20,6 +20,10 @@ bool isInCore(PTRef fla, vec<PTRef> const & coreTerms) {
2020 return std::find (coreTerms.begin (), coreTerms.end (), fla) != coreTerms.end ();
2121}
2222
23+ bool isNameInCore (TermName const & name, std::vector<std::string> const & coreNames) {
24+ return std::find (coreNames.begin (), coreNames.end (), name) != coreNames.end ();
25+ }
26+
2327template <typename LogicT>
2428class UnsatCoreTestBase {
2529protected:
@@ -132,7 +136,14 @@ TEST_F(UFUnsatCoreTest, Bool_Simple) {
132136 auto & coreTerms = core->getTerms ();
133137 ASSERT_EQ (coreTerms.size (), 2 );
134138 EXPECT_TRUE (isInCore (b1, coreTerms));
139+ EXPECT_FALSE (isInCore (b2, coreTerms));
135140 EXPECT_TRUE (isInCore (nb1, coreTerms));
141+ auto const & namedCore = static_cast <NamedUnsatCore &>(*core);
142+ auto coreNames = namedCore.makeTermNames ();
143+ ASSERT_EQ (coreNames.size (), 2 );
144+ EXPECT_TRUE (isNameInCore (" a1" , coreNames));
145+ EXPECT_FALSE (isNameInCore (" a2" , coreNames));
146+ EXPECT_TRUE (isNameInCore (" a3" , coreNames));
136147}
137148
138149TEST_F (MinUFUnsatCoreTest, Min_Bool_Simple) {
@@ -146,7 +157,14 @@ TEST_F(MinUFUnsatCoreTest, Min_Bool_Simple) {
146157 auto & coreTerms = core->getTerms ();
147158 ASSERT_EQ (coreTerms.size (), 2 );
148159 EXPECT_TRUE (isInCore (b1, coreTerms));
160+ EXPECT_FALSE (isInCore (b2, coreTerms));
149161 EXPECT_TRUE (isInCore (nb1, coreTerms));
162+ auto const & namedCore = static_cast <NamedUnsatCore &>(*core);
163+ auto coreNames = namedCore.makeTermNames ();
164+ ASSERT_EQ (coreNames.size (), 2 );
165+ EXPECT_TRUE (isNameInCore (" a1" , coreNames));
166+ EXPECT_FALSE (isNameInCore (" a2" , coreNames));
167+ EXPECT_TRUE (isNameInCore (" a3" , coreNames));
150168}
151169
152170TEST_F (MinUFUnsatCoreTest, Min_Bool_Simple_Unnamed1) {
@@ -160,7 +178,14 @@ TEST_F(MinUFUnsatCoreTest, Min_Bool_Simple_Unnamed1) {
160178 auto & coreTerms = core->getTerms ();
161179 ASSERT_EQ (coreTerms.size (), 1 );
162180 EXPECT_FALSE (isInCore (b1, coreTerms));
181+ EXPECT_FALSE (isInCore (b2, coreTerms));
163182 EXPECT_TRUE (isInCore (nb1, coreTerms));
183+ auto const & namedCore = static_cast <NamedUnsatCore &>(*core);
184+ auto coreNames = namedCore.makeTermNames ();
185+ ASSERT_EQ (coreNames.size (), 1 );
186+ EXPECT_FALSE (isNameInCore (" a1" , coreNames));
187+ EXPECT_FALSE (isNameInCore (" a2" , coreNames));
188+ EXPECT_TRUE (isNameInCore (" a3" , coreNames));
164189}
165190
166191TEST_F (MinUFUnsatCoreTest, Min_Bool_Simple_Unnamed2) {
@@ -174,7 +199,14 @@ TEST_F(MinUFUnsatCoreTest, Min_Bool_Simple_Unnamed2) {
174199 auto & coreTerms = core->getTerms ();
175200 ASSERT_EQ (coreTerms.size (), 2 );
176201 EXPECT_TRUE (isInCore (b1, coreTerms));
202+ EXPECT_FALSE (isInCore (b2, coreTerms));
177203 EXPECT_TRUE (isInCore (nb1, coreTerms));
204+ auto const & namedCore = static_cast <NamedUnsatCore &>(*core);
205+ auto coreNames = namedCore.makeTermNames ();
206+ ASSERT_EQ (coreNames.size (), 2 );
207+ EXPECT_TRUE (isNameInCore (" a1" , coreNames));
208+ EXPECT_FALSE (isNameInCore (" a2" , coreNames));
209+ EXPECT_TRUE (isNameInCore (" a3" , coreNames));
178210}
179211
180212TEST_F (MinUFUnsatCoreTest, Min_Bool_Simple_Unnamed3) {
@@ -188,7 +220,14 @@ TEST_F(MinUFUnsatCoreTest, Min_Bool_Simple_Unnamed3) {
188220 auto & coreTerms = core->getTerms ();
189221 ASSERT_EQ (coreTerms.size (), 1 );
190222 EXPECT_TRUE (isInCore (b1, coreTerms));
223+ EXPECT_FALSE (isInCore (b2, coreTerms));
191224 EXPECT_FALSE (isInCore (nb1, coreTerms));
225+ auto const & namedCore = static_cast <NamedUnsatCore &>(*core);
226+ auto coreNames = namedCore.makeTermNames ();
227+ ASSERT_EQ (coreNames.size (), 1 );
228+ EXPECT_TRUE (isNameInCore (" a1" , coreNames));
229+ EXPECT_FALSE (isNameInCore (" a2" , coreNames));
230+ EXPECT_FALSE (isNameInCore (" a3" , coreNames));
192231}
193232
194233TEST_F (FullUFUnsatCoreTest, Full_Bool_Simple) {
@@ -202,6 +241,7 @@ TEST_F(FullUFUnsatCoreTest, Full_Bool_Simple) {
202241 auto & coreTerms = core->getTerms ();
203242 ASSERT_EQ (coreTerms.size (), 2 );
204243 EXPECT_TRUE (isInCore (b1, coreTerms));
244+ EXPECT_FALSE (isInCore (b2, coreTerms));
205245 EXPECT_TRUE (isInCore (nb1, coreTerms));
206246}
207247
@@ -216,6 +256,7 @@ TEST_F(MinFullUFUnsatCoreTest, Min_Full_Bool_Simple) {
216256 auto & coreTerms = core->getTerms ();
217257 ASSERT_EQ (coreTerms.size (), 2 );
218258 EXPECT_TRUE (isInCore (b1, coreTerms));
259+ EXPECT_FALSE (isInCore (b2, coreTerms));
219260 EXPECT_TRUE (isInCore (nb1, coreTerms));
220261}
221262
@@ -230,6 +271,7 @@ TEST_F(MinFullUFUnsatCoreTest, Min_Full_Bool_Simple_Unnamed1) {
230271 auto & coreTerms = core->getTerms ();
231272 ASSERT_EQ (coreTerms.size (), 2 );
232273 EXPECT_TRUE (isInCore (b1, coreTerms));
274+ EXPECT_FALSE (isInCore (b2, coreTerms));
233275 EXPECT_TRUE (isInCore (nb1, coreTerms));
234276}
235277
@@ -244,6 +286,7 @@ TEST_F(MinFullUFUnsatCoreTest, Min_Full_Bool_Simple_Unnamed2) {
244286 auto & coreTerms = core->getTerms ();
245287 ASSERT_EQ (coreTerms.size (), 2 );
246288 EXPECT_TRUE (isInCore (b1, coreTerms));
289+ EXPECT_FALSE (isInCore (b2, coreTerms));
247290 EXPECT_TRUE (isInCore (nb1, coreTerms));
248291}
249292
@@ -258,6 +301,7 @@ TEST_F(MinFullUFUnsatCoreTest, Min_Full_Bool_Simple_Unnamed3) {
258301 auto & coreTerms = core->getTerms ();
259302 ASSERT_EQ (coreTerms.size (), 2 );
260303 EXPECT_TRUE (isInCore (b1, coreTerms));
304+ EXPECT_FALSE (isInCore (b2, coreTerms));
261305 EXPECT_TRUE (isInCore (nb1, coreTerms));
262306}
263307
0 commit comments