Skip to content

Commit 24262e8

Browse files
authored
Merge pull request #478 from diffblue/trans-to-netlist-invar
state invariants are now converted into AIG state constraints
2 parents ee122e1 + 1352e26 commit 24262e8

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

src/trans-netlist/trans_to_netlist.cpp

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Author: Daniel Kroening, [email protected]
1111
#include <util/arith_tools.h>
1212
#include <util/bitvector_expr.h>
1313
#include <util/ebmc_util.h>
14+
#include <util/expr_util.h>
1415
#include <util/mathematical_expr.h>
1516
#include <util/namespace.h>
1617
#include <util/std_expr.h>
@@ -25,6 +26,8 @@ Author: Daniel Kroening, [email protected]
2526
#include "instantiate_netlist.h"
2627
#include "netlist.h"
2728

29+
#include <algorithm>
30+
2831
/*******************************************************************\
2932
3033
Class: convert_trans_to_netlistt
@@ -78,8 +81,9 @@ class convert_trans_to_netlistt:public messaget
7881

7982
typedef std::list<exprt> constraint_listt;
8083
constraint_listt constraint_list;
81-
bvt transition_constraints;
82-
84+
85+
bvt invar_constraints, transition_constraints;
86+
8387
class rhst
8488
{
8589
public:
@@ -299,7 +303,10 @@ void convert_trans_to_netlistt::operator()(const irep_idt &module)
299303

300304
// do the remaining transition constraints
301305
convert_constraints(aig_prop);
302-
306+
307+
dest.constraints.insert(
308+
dest.constraints.end(), invar_constraints.begin(), invar_constraints.end());
309+
303310
dest.transition.insert(
304311
dest.transition.end(),
305312
transition_constraints.begin(),
@@ -402,6 +409,9 @@ Function: convert_trans_to_netlistt::convert_constraints
402409

403410
void convert_trans_to_netlistt::convert_constraints(propt &prop)
404411
{
412+
invar_constraints.reserve(
413+
transition_constraints.size() + constraint_list.size());
414+
405415
transition_constraints.reserve(
406416
transition_constraints.size()+constraint_list.size());
407417

@@ -412,7 +422,11 @@ void convert_trans_to_netlistt::convert_constraints(propt &prop)
412422
{
413423
literalt l=
414424
instantiate_convert(prop, dest.var_map, *it, ns, get_message_handler());
415-
transition_constraints.push_back(l);
425+
426+
if(has_subexpr(*it, ID_next_symbol))
427+
transition_constraints.push_back(l);
428+
else
429+
invar_constraints.push_back(l);
416430
}
417431
}
418432

0 commit comments

Comments
 (0)