Issue600

Title integrate CEGAR code
Priority feature Status resolved
Superseder Nosy List florian, jendrik, malte
Assigned To jendrik Keywords
Optional summary

Created on 2015-11-23.17:50:50 by jendrik, last changed by jendrik.

Messages
msg5073 (view) Author: jendrik Date: 2016-01-10.16:14:11
The code is finally merged and pushed to the private repo. Thanks again Florian, 
for your comments!
msg5023 (view) Author: malte Date: 2016-01-05.17:28:45
I meant issue616, I guess, but now I'm confused as you didn't reference
issue616. Is issue616 the one you refer to in msg5016?
msg5022 (view) Author: malte Date: 2016-01-05.17:27:48
Given the size of the code, perhaps I'm not so happy about A).
I'll comment over at issue600 in more detail.
msg5016 (view) Author: jendrik Date: 2016-01-05.15:40:13
Florian meant to say he favors option A). We now agreed on the following plan:

Short term
- Create and merge a new issue for replacing src/search/boost with the boost-1.60 
headers required by any.hpp *and* dynamic_bitset.hpp (11MB)
- Merge the new default into issue600

Long term
- Remove the boost dependencies by writing our own versions of any.hpp and 
dynamic_bitset.hpp
msg5014 (view) Author: malte Date: 2016-01-05.14:25:53
Setting all bits to true or false should be efficient with the "fill" version of
vector<bool>::assign. But this doesn't help with the intersection/subset tests.

I have no strong preference regarding the various choices. If we go with B), the
main challenge is to make sure we update our installation/build instructions
appropriately for platforms we support.
msg5013 (view) Author: jendrik Date: 2016-01-05.10:58:11
As far as I can see vector<bool> doesn't offer efficient implementations of the 
relevant bitset operations: set all bits, reset all bits, testing if a bitset 
intersects or is a subset of another bitset. We could hope that the compiler has 
the relevant specializations for std::fill and possibly std::set_intersection but 
testing this seems tedious.
msg5011 (view) Author: florian Date: 2016-01-05.09:24:14
I would prefer not adding more dependencies. In fact, I was hoping that we could
get rid of the boost::any dependency eventually. So I would prefer option B) as
a medium term solution and option C) as a long term plan.

How much worse is the performance using vector<bool>? As far as I know, this is
also implemented as a bitset and should use the same amount of memory.
msg5010 (view) Author: jendrik Date: 2016-01-05.09:08:20
Thanks again, Florian, for your extensive review of the CEGAR code. The easy 
fixes have been applied already and the rest of the comments have been turned 
into TODO items in the code that can be tackled after the merge.

One remaining issue is how to handle the dependency on boost::dynamic_bitset. As 
far as I can see we have the following options:

A) Use "bcp" to find the headers required by dynamic_bitset.hpp and add them to 
search/ext/boost (as done for any.hpp).
B) Make libboost-dev an external dependency.
C) Get rid of the dependency on dynamic_bitset.

I think C) should only be the last resort. If we go with B) we should later 
remove the code from search/ext/boost. To evaluate option A) I have used bcp to 
prepare subsets of boost that are required by any.hpp, dynamic_bitset.hpp and 
both headers:

1,3M	/home/jendrik/tmp/boost-1.45-any/boost
11M	/home/jendrik/tmp/boost-1.45-both/boost
11M	/home/jendrik/tmp/boost-1.45-dynamic_bitset/boost
1,5M	/home/jendrik/tmp/boost-1.54-any/boost
3,8M	/home/jendrik/tmp/boost-1.54-both/boost
3,7M	/home/jendrik/tmp/boost-1.54-dynamic_bitset/boost
6,5M	/home/jendrik/tmp/boost-1.60-any/boost
11M	/home/jendrik/tmp/boost-1.60-both/boost
11M	/home/jendrik/tmp/boost-1.60-dynamic_bitset/boost

boost-1.45 is the version that we currently include in our repo. 
boost-1.54 is the boost version of the current Ubuntu LTS release (14.04). 
boost-1.60 is the latest boost release.

Given these numbers, I don't think it's a good idea to add the additional boost 
headers to our repo. Therefore, I would go with option B). What do you think?
msg4982 (view) Author: jendrik Date: 2015-12-18.15:17:18
Florian agreed to have look: 
https://bitbucket.org/jendrikseipp/downward/pull-requests/40
History
Date User Action Args
2016-01-10 16:14:11jendriksetstatus: chatting -> resolved
messages: + msg5073
2016-01-05 17:28:45maltesetmessages: + msg5023
2016-01-05 17:27:48maltesetmessages: + msg5022
2016-01-05 15:40:13jendriksetmessages: + msg5016
2016-01-05 14:25:53maltesetmessages: + msg5014
2016-01-05 10:58:11jendriksetmessages: + msg5013
2016-01-05 09:24:14floriansetmessages: + msg5011
2016-01-05 09:08:20jendriksetmessages: + msg5010
2015-12-18 15:17:18jendriksetstatus: unread -> chatting
nosy: + florian
messages: + msg4982
2015-11-23 17:50:50jendrikcreate