@@ -14,16 +14,28 @@ Author: CM Wintersteiger
1414
1515#include < langapi/language_util.h>
1616
17+ #include < solvers/prop/literal.h>
18+
1719#include < cuddObj.hh> // CUDD Library
1820
1921/* ! \cond */
2022// FIX FOR THE CUDD LIBRARY
2123
22- inline DdNode *
23- DD::getNode () const
24+ /* ******************************************************************\
25+
26+ Function: DD::getNode
27+
28+ Inputs:
29+
30+ Outputs:
31+
32+ Purpose:
33+
34+ \*******************************************************************/
35+
36+ inline DdNode *DD::getNode () const
2437{
2538 return node;
26-
2739} // DD::getNode
2840/* ! \endcond */
2941
@@ -44,7 +56,7 @@ Function: qbf_bdd_certificatet::qbf_bdd_certificatet
4456
4557qbf_bdd_certificatet::qbf_bdd_certificatet (void ) : qdimacs_coret()
4658{
47- bdd_manager=new Cudd (0 ,0 );
59+ bdd_manager=new Cudd (0 , 0 );
4860}
4961
5062/* ******************************************************************\
@@ -61,11 +73,10 @@ Function: qbf_bdd_certificatet::~qbf_bdd_certificatet
6173
6274qbf_bdd_certificatet::~qbf_bdd_certificatet (void )
6375{
64- for (model_bddst::iterator it=model_bdds.begin ();
65- it!=model_bdds.end ();
66- it++)
76+ for (const BDD* model : model_bdds)
6777 {
68- if (*it!=NULL ) { delete (*it); *it=NULL ; }
78+ if (model)
79+ delete model;
6980 }
7081 model_bdds.clear ();
7182
@@ -127,16 +138,18 @@ Function: qbf_bdd_coret::~qbf_bdd_coret
127138
128139qbf_bdd_coret::~qbf_bdd_coret ()
129140{
130- for (bdd_variable_mapt::iterator it=bdd_variable_map.begin ();
131- it!=bdd_variable_map.end ();
132- it++)
141+ for (const BDD* variable : bdd_variable_map)
133142 {
134- if (*it) { delete (*it); *it=NULL ; }
143+ if (variable)
144+ delete variable;
135145 }
136146 bdd_variable_map.clear ();
137147
138- if (matrix) delete (matrix);
139- matrix=NULL ;
148+ if (matrix)
149+ {
150+ delete (matrix);
151+ matrix=NULL ;
152+ }
140153}
141154
142155/* ******************************************************************\
@@ -189,17 +202,15 @@ Function: qbf_bdd_coret::prop_solve
189202propt::resultt qbf_bdd_coret::prop_solve ()
190203{
191204 {
192- std::string msg=
193- solver_text () + " : " +
194- std::to_string (no_variables ())+" variables, " +
195- std::to_string (matrix->nodeCount ())+" nodes" ;
196- messaget::status () << msg << messaget::eom;
205+ status () << solver_text () << " : "
206+ << std::to_string (no_variables ()) << " variables, "
207+ << std::to_string (matrix->nodeCount ()) << " nodes" << eom;
197208 }
198209
199210 model_bdds.resize (no_variables ()+1 , NULL );
200211
201212 // Eliminate variables
202- for (quantifierst::const_reverse_iterator it=quantifiers.rbegin ();
213+ for (auto it=quantifiers.rbegin ();
203214 it!=quantifiers.rend ();
204215 it++)
205216 {
@@ -212,13 +223,14 @@ propt::resultt qbf_bdd_coret::prop_solve()
212223 matrix->nodeCount() << " nodes" << std::endl;
213224 #endif
214225
215- BDD* model = new BDD ();
226+ BDD * model= new BDD ();
216227 const BDD &varbdd=*bdd_variable_map[var];
217- *model = matrix->AndAbstract (varbdd.Xnor (bdd_manager->bddOne ()),
218- varbdd);
228+ *model=matrix->AndAbstract (
229+ varbdd.Xnor (bdd_manager->bddOne ()),
230+ varbdd);
219231 model_bdds[var]=model;
220232
221- *matrix = matrix->ExistAbstract (*bdd_variable_map[var]);
233+ *matrix= matrix->ExistAbstract (*bdd_variable_map[var]);
222234 }
223235 else if (it->type ==quantifiert::UNIVERSAL)
224236 {
@@ -227,10 +239,10 @@ propt::resultt qbf_bdd_coret::prop_solve()
227239 matrix->nodeCount() << " nodes" << std::endl;
228240 #endif
229241
230- *matrix = matrix->UnivAbstract (*bdd_variable_map[var]);
242+ *matrix= matrix->UnivAbstract (*bdd_variable_map[var]);
231243 }
232244 else
233- throw ( " Unquantified variable" ) ;
245+ throw " unquantified variable" ;
234246 }
235247
236248 if (*matrix==bdd_manager->bddOne ())
@@ -261,7 +273,7 @@ Function: qbf_bdd_coret::is_in_core
261273
262274bool qbf_bdd_coret::is_in_core (literalt l) const
263275{
264- throw ( " NYI " ) ;
276+ throw " nyi " ;
265277}
266278
267279/* ******************************************************************\
@@ -278,7 +290,7 @@ Function: qbf_bdd_coret::m_get
278290
279291qdimacs_coret::modeltypet qbf_bdd_coret::m_get (literalt a) const
280292{
281- throw ( " NYI " ) ;
293+ throw " nyi " ;
282294}
283295
284296/* ******************************************************************\
@@ -299,7 +311,7 @@ literalt qbf_bdd_coret::new_variable()
299311
300312 bdd_variable_map.resize (res.var_no ()+1 , NULL );
301313 BDD &var=*(new BDD ());
302- var = bdd_manager->bddVar ();
314+ var= bdd_manager->bddVar ();
303315 bdd_variable_map[res.var_no ()]=&var;
304316
305317 return res;
@@ -326,17 +338,17 @@ void qbf_bdd_coret::lcnf(const bvt &bv)
326338
327339 BDD clause (bdd_manager->bddZero ());
328340
329- for (unsigned long i= 0 ; i<new_bv. size (); i++ )
341+ for (const literalt &l : new_bv )
330342 {
331- literalt l=new_bv[i];
332343 BDD v (*bdd_variable_map[l.var_no ()]);
333344
334- if (l.sign ()) v = ~v;
345+ if (l.sign ())
346+ v=~v;
335347
336- clause |= v;
348+ clause|= v;
337349 }
338350
339- *matrix &= clause;
351+ *matrix&= clause;
340352}
341353
342354/* ******************************************************************\
@@ -353,15 +365,17 @@ Function: qbf_bdd_coret::lor
353365
354366literalt qbf_bdd_coret::lor (literalt a, literalt b)
355367{
356- literalt nl = new_variable ();
368+ literalt nl= new_variable ();
357369
358370 BDD abdd (*bdd_variable_map[a.var_no ()]);
359371 BDD bbdd (*bdd_variable_map[b.var_no ()]);
360372
361- if (a.sign ()) abdd = ~abdd;
362- if (b.sign ()) bbdd = ~bbdd;
373+ if (a.sign ())
374+ abdd=~abdd;
375+ if (b.sign ())
376+ bbdd=~bbdd;
363377
364- *bdd_variable_map[nl.var_no ()] |= abdd | bbdd;
378+ *bdd_variable_map[nl.var_no ()]|= abdd | bbdd;
365379
366380 return nl;
367381}
@@ -380,25 +394,26 @@ Function: qbf_bdd_coret::lor
380394
381395literalt qbf_bdd_coret::lor (const bvt &bv)
382396{
383- forall_literals (it, bv)
384- if (*it==const_literal (true ))
385- return const_literal (true );
397+ for (const literalt &literal : bv)
398+ {
399+ if (literal==const_literal (true ))
400+ return literal;
401+ }
386402
387- literalt nl = new_variable ();
403+ literalt nl= new_variable ();
388404
389- BDD &orbdd = *bdd_variable_map[nl.var_no ()];
405+ BDD &orbdd= *bdd_variable_map[nl.var_no ()];
390406
391- forall_literals (it, bv)
407+ for ( const literalt &literal : bv)
392408 {
393- literalt l=*it;
394-
395- if (l==const_literal (false ))
409+ if (literal==const_literal (false ))
396410 continue ;
397411
398- BDD v (*bdd_variable_map[l.var_no ()]);
399- if (l.sign ()) v = ~v;
412+ BDD v (*bdd_variable_map[literal.var_no ()]);
413+ if (literal.sign ())
414+ v=~v;
400415
401- orbdd |= v;
416+ orbdd|= v;
402417 }
403418
404419 return nl;
@@ -420,23 +435,19 @@ void qbf_bdd_coret::compress_certificate(void)
420435{
421436 status () << " Compressing Certificate" << eom;
422437
423- for (quantifierst::const_iterator it=quantifiers.begin ();
424- it!=quantifiers.end ();
425- it++)
438+ for (const quantifiert& quantifier : quantifiers)
426439 {
427- if (it-> type ==quantifiert::EXISTENTIAL)
440+ if (quantifier. type ==quantifiert::EXISTENTIAL)
428441 {
429- const BDD &var=*bdd_variable_map[it-> var_no ];
430- const BDD &model=*model_bdds[it-> var_no ];
442+ const BDD &var=*bdd_variable_map[quantifier. var_no ];
443+ const BDD &model=*model_bdds[quantifier. var_no ];
431444
432445 if (model==bdd_manager->bddOne () ||
433446 model==bdd_manager->bddZero ())
434447 {
435- for (quantifierst::const_iterator it2=it;
436- it2!=quantifiers.end ();
437- it2++)
448+ for (const quantifiert &quantifier2 : quantifier)
438449 {
439- BDD &model2=*model_bdds[it2-> var_no ];
450+ BDD &model2=*model_bdds[quantifier2. var_no ];
440451
441452 if (model==bdd_manager->bddZero ())
442453 model2=model2.AndAbstract (~var, var);
@@ -464,7 +475,7 @@ const exprt qbf_bdd_certificatet::f_get(literalt l)
464475{
465476 quantifiert q;
466477 if (!find_quantifier (l, q))
467- throw ( " No model for unquantified variable" ) ;
478+ throw " no model for unquantified variable" ;
468479
469480 // universal?
470481 if (q.type ==quantifiert::UNIVERSAL)
@@ -473,7 +484,7 @@ const exprt qbf_bdd_certificatet::f_get(literalt l)
473484 variable_mapt::const_iterator it=variable_map.find (l.var_no ());
474485
475486 if (it==variable_map.end ())
476- throw " Variable map error" ;
487+ throw " variable map error" ;
477488
478489 const exprt &sym=it->second .first ;
479490 unsigned index=it->second .second ;
@@ -485,7 +496,8 @@ const exprt qbf_bdd_certificatet::f_get(literalt l)
485496 uint_type.set (ID_width, 32 );
486497 extract_expr.copy_to_operands (from_integer (index, uint_type));
487498
488- if (l.sign ()) extract_expr.negate ();
499+ if (l.sign ())
500+ extract_expr.negate ();
489501
490502 return extract_expr;
491503 }
@@ -517,17 +529,17 @@ const exprt qbf_bdd_certificatet::f_get(literalt l)
517529 model.PrintMinterm();
518530 #endif
519531
520- int * cube;
532+ int * cube;
521533 DdGen *generator;
522- // CUDD_VALUE_TYPE value;
523534
524535 exprt result=or_exprt ();
525536
526- Cudd_ForeachPrime (bdd_manager->getManager (),
527- model.getNode (), model.getNode (),
528- generator,
529- cube)
530- // Cudd_ForeachCube(bdd_manager->getManager(), model.getNode(), generator, cube, value)
537+ Cudd_ForeachPrime (
538+ bdd_manager->getManager (),
539+ model.getNode (),
540+ model.getNode (),
541+ generator,
542+ cube)
531543 {
532544 exprt prime=and_exprt ();
533545
@@ -540,7 +552,8 @@ const exprt qbf_bdd_certificatet::f_get(literalt l)
540552
541553 for (signed i=0 ; i<bdd_manager->ReadSize (); i++)
542554 {
543- if (quantifiers[i].var_no ==l.var_no ()) break ; // is this sound?
555+ if (quantifiers[i].var_no ==l.var_no ())
556+ break ; // is this sound?
544557
545558 if (cube[i]!=2 )
546559 {
@@ -567,9 +580,10 @@ const exprt qbf_bdd_certificatet::f_get(literalt l)
567580 final =false_exprt ();
568581 else if (result.operands ().size ()==1 )
569582 final =result.op0 ();
570- else final =result;
583+ else
584+ final =result;
571585
572- function_cache[l.var_no ()] = final ;
586+ function_cache[l.var_no ()]= final ;
573587
574588 if (l.sign ())
575589 return not_exprt (final );
0 commit comments