3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-05-05 06:45:45 +00:00

working on symbolic execution trace unfolding

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2012-10-16 16:54:03 -07:00
parent 6b414ba5cf
commit 3a837037d4
8 changed files with 165 additions and 206 deletions

View file

@ -507,13 +507,13 @@ namespace datalog {
//
// -----------------------------------
template<class Set>
void set_intersection(Set & tgt, const Set & src) {
svector<typename Set::data> to_remove;
typename Set::iterator vit = tgt.begin();
typename Set::iterator vend = tgt.end();
template<class Set1, class Set2>
void set_intersection(Set1 & tgt, const Set2 & src) {
svector<typename Set1::data> to_remove;
typename Set1::iterator vit = tgt.begin();
typename Set1::iterator vend = tgt.end();
for(;vit!=vend;++vit) {
typename Set::data itm=*vit;
typename Set1::data itm=*vit;
if(!src.contains(itm)) {
to_remove.push_back(itm);
}
@ -534,12 +534,12 @@ namespace datalog {
}
}
template<class Set>
void set_union(Set & tgt, const Set & to_add) {
typename Set::iterator vit = to_add.begin();
typename Set::iterator vend = to_add.end();
template<class Set1, class Set2>
void set_union(Set1 & tgt, const Set2 & to_add) {
typename Set2::iterator vit = to_add.begin();
typename Set2::iterator vend = to_add.end();
for(;vit!=vend;++vit) {
typename Set::data itm=*vit;
typename Set1::data itm=*vit;
tgt.insert(itm);
}
}