summaryrefslogtreecommitdiff
path: root/cryptominisat5/cryptominisat-5.6.3/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'cryptominisat5/cryptominisat-5.6.3/scripts')
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/appveyor.ps113
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/aws/README.markdown14
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/aws/RequestSpotClient.py172
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/aws/build_Maple_LCM_Dist.sh29
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/aws/build_cmsat_satcomp16.sh30
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/aws/build_cryptominisat.sh42
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/aws/build_drat-trim2.sh30
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/aws/build_glucose2016.sh31
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/aws/build_lingeling_ayv.sh32
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/aws/build_lingeling_bbc.sh32
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/aws/build_maplecomsps_drup.sh33
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/aws/build_swdia5by.sh31
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/aws/build_swdia5by_old.sh32
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/aws/client.py821
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/aws/common_aws.py86
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp11_updated300
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp13_updated300
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp14_updated300
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp16_updated300
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp17_updated350
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satrace15_updated300
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/test_updated8
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/unsat_small_candidates_fullpath425
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/aws/ec2-spot-instance-test.cfg47
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/aws/ec2-spot-instance.cfg51
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/aws/launch_server.py153
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/aws/pack_cnf_lists.py39
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/aws/pre-server.py36
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/aws/satcomp091113_updated751
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/aws/server.py432
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/aws/server_option_parser.py194
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/check_all_licenses.sh21
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/docker/Dockerfile9
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/CMakeLists.txt29
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/debuglib.py148
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/fuzz/fuzz_test.py871
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/fuzz/intersperse.py31
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/fuzz/verifier.py589
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/fuzz/verifier_test.py83
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/xor_to_cnf_class.py238
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/learn/add_lemma_ind.py126
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/learn/gen_pandas.py771
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/learn/predict.py372
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/learn/predict_one.sh64
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/output_parser/convert_to_cactusplot.py27
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/output_parser/merge_sqlite.sh24
-rw-r--r--cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/plotit45
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/output_parser/solvetimes_from_output.sh28
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/output_parser/solvetimes_from_output_glucose.sh16
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/output_parser/solvetimes_from_output_lingeling.sh7
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/output_parser/sqlite3_checks.py290
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/reconf/count_plus_minus.sh46
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/reconf/generate_reconf.py108
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/reconf/reconf.py334
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/reconf/tocpp.py208
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/travis-cmake.sh471
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/travis-install-cmake.sh34
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/travis-install-lcov.sh27
-rwxr-xr-xcryptominisat5/cryptominisat-5.6.3/scripts/xxd-alike.py61
59 files changed, 10492 insertions, 0 deletions
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/appveyor.ps1 b/cryptominisat5/cryptominisat-5.6.3/scripts/appveyor.ps1
new file mode 100644
index 000000000..0be04c24d
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/appveyor.ps1
@@ -0,0 +1,13 @@
+Add-Type -AssemblyName System.IO.Compression.FileSystem
+
+function Unzip
+{
+ param([string]$zipfile, [string]$outpath)
+
+ [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
+}
+
+$wc = New-Object System.Net.WebClient
+$wc.DownloadFile("http://bit.ly/1JPHkL3", "C:\projects\cryptominisat\boost_1_59_0.zip")
+
+Unzip "C:\projects\cryptominisat\boost_1_59_0.zip" "C:\projects\cryptominisat"
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/README.markdown b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/README.markdown
new file mode 100644
index 000000000..a46aa0852
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/README.markdown
@@ -0,0 +1,14 @@
+Testing in AWS
+===========================================
+
+Only use
+
+```
+./launch_server.py --help
+```
+
+The other scripts are all used by this script. Lists of files to be solved are in files:
+
+* satcomp14
+* satcomp091113
+* satcomp16
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/RequestSpotClient.py b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/RequestSpotClient.py
new file mode 100644
index 000000000..01b30ea6f
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/RequestSpotClient.py
@@ -0,0 +1,172 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2018 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+from __future__ import print_function
+import sys
+import configparser
+from boto.ec2.connection import EC2Connection
+from common_aws import *
+import logging
+
+
+class RequestSpotClient:
+ def __init__(self, revision, test, noshutdown=False, count=1):
+ self.conf = configparser.ConfigParser()
+ self.count = count
+ if test:
+ self.conf.read('ec2-spot-instance-test.cfg')
+ self.limit_create = 1
+ else:
+ self.conf.read('ec2-spot-instance.cfg')
+ self.limit_create = 8
+
+ if self.count is None:
+ self.count = int(self.conf.get('ec2', 'count'))
+
+ self.ec2conn = self.__create_ec2conn()
+ if self.ec2conn is None:
+ print('Unable to create EC2 ec2conn')
+ sys.exit(0)
+
+ self.user_data = self.__get_user_data(revision, noshutdown)
+ self.our_ids = []
+
+ def __get_user_data(self, revision, noshutdown):
+ extra_args = ""
+ if noshutdown:
+ extra_args = " --noshutdown"
+ user_data = """#!/bin/bash
+set -e
+
+apt-get update -y
+apt-get install -y python
+apt-get -y install git python-pip
+pip install --force-reinstall --upgrade awscli
+pip install --force-reinstall --upgrade boto
+pip install configparser
+apt-get -y install cmake make g++ libboost-all-dev
+apt-get -y install libsqlite3-dev awscli unzip
+apt-get install zlib1g-dev
+# apt-get -y install linux-cloud-tools-generic linux-tools-generic
+# apt-get -y install linux-cloud-tools-3.13.0-53-generic linux-tools-3.13.0-53-generic
+
+# Get AWS log agent
+cd /home/ubuntu/
+
+cat > "aws-logs-client.conf" << EOF
+[general]
+state_file = /home/ubuntu/cloudwatch.state
+
+[logstream1]
+log_group_name = cyrptominisat-perftest
+log_stream_name = client
+file = /home/ubuntu/*.log
+
+[messages]
+log_group_name = cyrptominisat-perftest
+log_stream_name = client
+file = /var/log/messages
+EOF
+
+curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
+python ./awslogs-agent-setup.py --region {region} -c aws-logs-client.conf -n
+
+# Get CMS
+sudo -H -u ubuntu bash -c 'ssh-keyscan github.com >> ~/.ssh/known_hosts'
+sudo -H -u ubuntu bash -c 'git clone --no-single-branch --depth 50 https://github.com/msoos/cryptominisat.git'
+cd /home/ubuntu/cryptominisat
+sudo -H -u ubuntu bash -c 'git checkout {revision}'
+sudo -H -u ubuntu bash -c 'git submodule init'
+sudo -H -u ubuntu bash -c 'git submodule update'
+cd /home/ubuntu/
+# sudo -H -u ubuntu bash -c 'aws s3 cp s3://msoos-solve-data/solvers/features_to_reconf.cpp /home/ubuntu/cryptominisat/src/ --region={region}'
+
+# Get credentials
+cd /home/ubuntu/
+sudo -H -u ubuntu bash -c 'aws s3 cp s3://msoos-solve-data/solvers/email.conf . --region={region}'
+
+# build solvers
+sudo -H -u ubuntu bash -c '/home/ubuntu/cryptominisat/scripts/aws/build_maplecomsps_drup.sh >> /home/ubuntu/build.log'
+sudo -H -u ubuntu bash -c '/home/ubuntu/cryptominisat/scripts/aws/build_swdia5by.sh >> /home/ubuntu/build.log'
+sudo -H -u ubuntu bash -c '/home/ubuntu/cryptominisat/scripts/aws/build_swdia5by_old.sh >> /home/ubuntu/build.log'
+sudo -H -u ubuntu bash -c '/home/ubuntu/cryptominisat/scripts/aws/build_lingeling_ayv.sh >> /home/ubuntu/build.log'
+sudo -H -u ubuntu bash -c '/home/ubuntu/cryptominisat/scripts/aws/build_drat-trim2.sh >> /home/ubuntu/build.log'
+sudo -H -u ubuntu bash -c '/home/ubuntu/cryptominisat/scripts/aws/build_glucose2016.sh >> /home/ubuntu/build.log'
+sudo -H -u ubuntu bash -c '/home/ubuntu/cryptominisat/scripts/aws/build_cmsat_satcomp16.sh >> /home/ubuntu/build.log'
+sudo -H -u ubuntu bash -c '/home/ubuntu/cryptominisat/scripts/aws/build_lingeling_bbc.sh >> /home/ubuntu/build.log'
+sudo -H -u ubuntu bash -c '/home/ubuntu/cryptominisat/scripts/aws/build_Maple_LCM_Dist.sh >> /home/ubuntu/build.log'
+
+# Start client
+cd /home/ubuntu/cryptominisat
+sudo -H -u ubuntu bash -c 'nohup /home/ubuntu/cryptominisat/scripts/aws/client.py {extra_args} > /home/ubuntu/python_log.log 2>&1' &
+
+DATA="{ip}"
+""".format(revision=revision, extra_args=extra_args, ip=get_ip_address("eth0"), region=self.conf.get("ec2", "region"))
+
+ return user_data
+
+ def __create_ec2conn(self):
+ ec2conn = EC2Connection()
+ regions = ec2conn.get_all_regions()
+ for r in regions:
+ if r.name == self.conf.get('ec2', 'region'):
+ ec2conn = EC2Connection(region=r)
+ return ec2conn
+ return None
+
+ def __provision_instances(self):
+ reqs = self.ec2conn.request_spot_instances(
+ price=self.conf.get('ec2', 'max_bid'),
+ count=self.count,
+ image_id=self.conf.get('ec2', 'ami_id'),
+ subnet_id=self.conf.get('ec2', 'subnet_id'),
+ instance_type=self.conf.get('ec2', 'type'),
+ instance_profile_arn=self.conf.get('ec2', 'instance_profile_arn'),
+ user_data=self.user_data,
+ key_name=self.conf.get('ec2', 'key_name'),
+ security_group_ids=[self.conf.get('ec2', 'security_group_client')])
+
+ logging.info("Request created, got back IDs %s" % [r.id for r in reqs])
+ return reqs
+
+ def create_spots_if_needed(self):
+ # Valid values: open | active | closed | cancelled | failed
+ run_wait_spots = self.ec2conn.get_all_spot_instance_requests(filters={'state': 'open'})
+ run_wait_spots.extend(self.ec2conn.get_all_spot_instance_requests(filters={'state': 'active'}))
+
+ for spot in run_wait_spots:
+ if spot.id in self.our_ids:
+ logging.info("ID %s is either waiting or running, not requesting a new one" % spot.id)
+ return
+
+ if len(self.our_ids) >= self.limit_create:
+ logging.error("Something really wrong has happened, we have reqested 4 spots aready! Not requesting more.")
+ return
+
+ self.create_spots()
+
+ def create_spots(self):
+ reqs = self.__provision_instances()
+
+ for req in reqs:
+ logging.info('New req state: %s ID: %s' % (req.state, req.id))
+ self.our_ids.append(req.id)
+
+ return self.our_ids
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_Maple_LCM_Dist.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_Maple_LCM_Dist.sh
new file mode 100755
index 000000000..7d22ad4d9
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_Maple_LCM_Dist.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+set -e
+
+# Copyright (C) 2018 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+cd /home/ubuntu
+git clone https://github.com/msoos/Maple_LCM_Dist
+cd Maple_LCM_Dist
+./starexec_build.sh
+
+#binary is now at:
+# Maple_LCM_Dist/Maple_LCM_Dist
+
+cd /home/ubuntu
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_cmsat_satcomp16.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_cmsat_satcomp16.sh
new file mode 100755
index 000000000..b3227e1d7
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_cmsat_satcomp16.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -e
+
+# Copyright (C) 2018 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+cd /home/ubuntu/
+aws s3 cp s3://msoos-solve-data/solvers/cmsat-satcomp16.tar.gz . --region=us-west-2
+tar xzvf cmsat-satcomp16.tar.gz
+cd cmsat-satcomp16
+./starexec_build
+
+# binary is now at:
+# --solver cmsat-satcomp16/bin/cryptominisat4_simple
+
+cd /home/ubuntu/
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_cryptominisat.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_cryptominisat.sh
new file mode 100755
index 000000000..43e241f60
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_cryptominisat.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+set -e
+
+# Copyright (C) 2018 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+cd /home/ubuntu/
+rm -rf m4ri-20140914*
+aws s3 cp s3://msoos-solve-data/solvers/m4ri-20140914.tar.gz . --region us-west-2
+tar xzvf m4ri-20140914.tar.gz
+cd m4ri-20140914/
+./configure
+make "-j$2"
+sudo make install
+echo "built and installed M4RI"
+
+cd /home/ubuntu/cryptominisat
+rm -rf build
+mkdir -p build
+cd build
+rm -rf C* c*
+cmake ${3} ..
+make "-j${2}" VERBOSE=1
+echo "built CMS"
+
+# solver is now in cryptominisat/build/cryptominisat5
+
+exit 0
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_drat-trim2.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_drat-trim2.sh
new file mode 100755
index 000000000..1b1b524b1
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_drat-trim2.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -e
+
+# Copyright (C) 2018 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+cd /home/ubuntu
+git clone https://github.com/msoos/drat-trim.git
+cd drat-trim
+cmake .
+make
+
+#binary is now at:
+# drat-trim/drat-trim
+
+cd /home/ubuntu
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_glucose2016.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_glucose2016.sh
new file mode 100755
index 000000000..2ff499b5e
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_glucose2016.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -e
+
+# Copyright (C) 2018 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+cd /home/ubuntu
+git clone https://github.com/msoos/glucose2016.git
+cd glucose2016
+cd simp
+make rs
+
+mv /home/ubuntu/glucose2016/simp/glucose_static /home/ubuntu/glucose2016/simp/glucose_static_2016
+#binary is now at:
+# --solver glucose2016/simp/glucose_static_2016
+
+cd /home/ubuntu
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_lingeling_ayv.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_lingeling_ayv.sh
new file mode 100755
index 000000000..92f8015e6
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_lingeling_ayv.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -e
+
+# Copyright (C) 2018 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+cd /home/ubuntu
+mkdir -p lingeling_ayv
+cd lingeling_ayv
+aws s3 cp s3://msoos-solve-data/solvers/lingeling-ayv-86bf266-140429.zip . --region=us-west-2
+unzip lingeling-ayv-86bf266-140429.zip
+./build.sh
+
+mv /home/ubuntu/lingeling_ayv/binary/lingeling /home/ubuntu/lingeling_ayv/binary/lingeling_ayv
+#binary is now at:
+# --solver lingeling_ayv/binary/lingeling_ayv
+
+cd /home/ubuntu
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_lingeling_bbc.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_lingeling_bbc.sh
new file mode 100755
index 000000000..240cb75af
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_lingeling_bbc.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -e
+
+# Copyright (C) 2018 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+cd /home/ubuntu/
+
+aws s3 cp s3://msoos-solve-data/solvers/lingeling-bbc.tar.gz . --region=us-west-2
+tar xzvf lingeling-bbc.tar.gz
+cd lingeling-bbc/build
+sh build.sh
+mv lingeling/lingeling lingeling/lingeling_bbc
+
+# lingeling is now in
+# --solver lingeling-bbc/build/lingeling/lingeling_bbc
+
+cd /home/ubuntu/
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_maplecomsps_drup.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_maplecomsps_drup.sh
new file mode 100755
index 000000000..128f3472b
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_maplecomsps_drup.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -e
+
+# Copyright (C) 2018 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+cd /home/ubuntu/
+mkdir -p MapleCOMSPS
+cd MapleCOMSPS/
+aws s3 cp s3://msoos-solve-data/solvers/MapleCOMSPS.tar.gz . --region=us-west-2
+tar xzvf MapleCOMSPS.tar.gz
+cd simp
+MROOT=.. make clean rs
+mv minisat_static maplecomsps_static
+
+# binary is now at:
+# --solver MapleCOMSPS/simp/maplecomsps_static
+
+cd /home/ubuntu/
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_swdia5by.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_swdia5by.sh
new file mode 100755
index 000000000..6138997e2
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_swdia5by.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+set -e
+
+# Copyright (C) 2018 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+cd /home/ubuntu/
+aws s3 cp s3://msoos-solve-data/solvers/SWDiA5BY.alt.vd.res.va2.15000.looseres.3tierC5.tar.gz . --region=us-west-2
+tar xzvf SWDiA5BY.alt.vd.res.va2.15000.looseres.3tierC5.tar.gz
+cd SWDiA5BY.alt.vd.res.va2.15000.looseres.3tierC5
+./build.sh
+
+mv /home/ubuntu/SWDiA5BY.alt.vd.res.va2.15000.looseres.3tierC5/binary/SWDiA5BY_static /home/ubuntu/SWDiA5BY.alt.vd.res.va2.15000.looseres.3tierC5/binary/SWDiA5BY_static.alt.vd
+# binary is now at:
+# --solver SWDiA5BY.alt.vd.res.va2.15000.looseres.3tierC5/binary/SWDiA5BY_static.alt.vd
+
+cd /home/ubuntu/
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_swdia5by_old.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_swdia5by_old.sh
new file mode 100755
index 000000000..f9de76fc5
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/build_swdia5by_old.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -e
+
+# Copyright (C) 2018 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+cd /home/ubuntu/
+mkdir -p SWDiA5BY_A26
+cd SWDiA5BY_A26
+aws s3 cp s3://msoos-solve-data/solvers/SWDiA5BY_A26.zip . --region=us-west-2
+unzip SWDiA5BY_A26.zip
+./build.sh
+
+mv /home/ubuntu/SWDiA5BY_A26/binary/SWDiA5BY_static /home/ubuntu/SWDiA5BY_A26/binary/SWDiA5BY_static_A26
+# binary is now at:
+# --solver SWDiA5BY_A26/binary/SWDiA5BY_static_A26
+
+cd /home/ubuntu/
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/client.py b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/client.py
new file mode 100755
index 000000000..fcdc632ab
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/client.py
@@ -0,0 +1,821 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2018 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+from __future__ import print_function
+import os
+import socket
+import sys
+import optparse
+import struct
+import pickle
+import threading
+import random
+import time
+import subprocess
+import resource
+import pprint
+import traceback
+import boto
+import boto.utils
+import boto.ec2
+import logging
+import functools
+import string
+
+# for importing in systems where "." is not in the PATH
+sys.path.append(os.getcwd()+"/scripts/learn/")
+from common_aws import *
+import add_lemma_ind as addlemm
+
+pp = pprint.PrettyPrinter(depth=6)
+
+
+class PlainHelpFormatter(optparse.IndentedHelpFormatter):
+
+ def format_description(self, description):
+ if description:
+ return description + "\n"
+ else:
+ return ""
+
+
+def uptime():
+ with open('/proc/uptime', 'r') as f:
+ return float(f.readline().split()[0])
+
+ return None
+
+
+def get_n_bytes_from_connection(sock, MSGLEN):
+ chunks = []
+ bytes_recd = 0
+ while bytes_recd < MSGLEN:
+ chunk = sock.recv(min(MSGLEN - bytes_recd, 2048))
+ if chunk == '':
+ raise RuntimeError("socket connection broken")
+ chunks.append(chunk)
+ bytes_recd = bytes_recd + len(chunk)
+
+ return ''.join(chunks)
+
+
+def connect_client(threadID):
+ # Create a socket object
+ sock = socket.socket()
+
+ # Get local machine name
+ if options.host is None:
+ print("You must supply the host to connect to as a client")
+ exit(-1)
+
+ logging.info("Getting host by name %s", options.host,
+ extra={"threadid": threadID})
+ host = socket.gethostbyname_ex(options.host)
+ logging.info("Connecting to host %s", host,
+ extra={"threadid": threadID})
+ sock.connect((host[2][0], options.port))
+
+ return sock
+
+
+def send_command(sock, command, tosend=None):
+ # can't set tosend={} because of Python weirdness
+ tosend = tosend or {}
+
+ tosend["command"] = command
+ tosend = pickle.dumps(tosend)
+ tosend = struct.pack('!q', len(tosend)) + tosend
+ sock.sendall(tosend)
+
+
+def ask_for_data(sock, command, threadID):
+ logging.info("Asking for %s", command, extra={"threadid": threadID})
+ tosend = {}
+ tosend["uptime"] = uptime()
+ send_command(sock, command, tosend)
+
+ # get stuff to solve
+ data = get_n_bytes_from_connection(sock, 8)
+ length = struct.unpack('!q', data)[0]
+ data = get_n_bytes_from_connection(sock, length)
+ indata = pickle.loads(data)
+ return indata
+
+
+def signal_error_to_master():
+ sock = connect_client(100)
+ send_command(sock, "error")
+ sock.close()
+
+
+def setlimits(time_limit, mem_limit):
+ #logging.info(
+ #"Setting resource limit in child (pid %d). Time %d s"
+ #"Mem %d MB\n", os.getpid(), time_limit,
+ #mem_limit,
+ #extra=self.logextra)
+
+ resource.setrlimit(resource.RLIMIT_CPU, (
+ time_limit,
+ time_limit))
+
+ resource.setrlimit(resource.RLIMIT_DATA, (
+ mem_limit * 1024 * 1024,
+ mem_limit * 1024 * 1024))
+
+
+class solverThread (threading.Thread):
+
+ def __init__(self, threadID):
+ threading.Thread.__init__(self)
+ self.threadID = threadID
+ self.logextra = {'threadid': self.threadID}
+ self.temp_space = self.create_temp_space()
+ logging.info("Initializing thread", extra=self.logextra)
+
+ def create_temp_space(self):
+ newdir = options.temp_space + "/thread-%s" % self.threadID
+ try:
+ os.system("sudo mkdir %s" % newdir)
+ os.system("sudo chown ubuntu:ubuntu %s" % newdir)
+ except:
+ exc_type, exc_value, exc_traceback = sys.exc_info()
+ the_trace = traceback.format_exc().rstrip().replace("\n", " || ")
+ logging.warning("Error creating directory: %s",
+ the_trace, extra={"threadid": -1})
+
+ return newdir
+
+ def get_fname_no_dir(self):
+ fname = self.indata["cnf_filename"]
+ slash_at = fname.find("/")
+ return fname[slash_at+1:]
+
+ def get_tmp_cnf_fname(self):
+ return "%s/%s" % (
+ self.temp_space,
+ self.get_fname_no_dir()
+ )
+
+ def get_stdout_fname(self):
+ return self.get_tmp_cnf_fname() + "-" + self.indata["uniq_cnt"] + ".stdout"
+
+ def get_stderr_fname(self):
+ return self.get_tmp_cnf_fname() + "-" + self.indata["uniq_cnt"] + ".stderr"
+
+ def get_sqlite_fname(self):
+ return self.get_tmp_cnf_fname() + "-" + self.indata["uniq_cnt"] + ".sqlite"
+
+ def get_lemmas_fname(self):
+ return "%s/lemmas" % self.temp_space
+
+ def get_drat_fname(self):
+ return "%s/drat" % self.temp_space
+
+ def get_toexec(self):
+ logging.info("Getting file to solve {cnf}".format(cnf=self.indata["cnf_filename"]),
+ extra=self.logextra)
+
+ key = boto.connect_s3().get_bucket("msoos-solve-data").get_key(self.indata["cnf_filename"])
+ key.get_contents_to_filename(self.get_tmp_cnf_fname())
+
+ toexec = []
+ toexec.append("%s/%s" % (options.base_dir, self.indata["solver"]))
+ toexec.append(self.indata["extra_opts"].replace(",", " "))
+ if "cryptominisat5" in self.indata["solver"]:
+ toexec.append("--printsol 0")
+ if self.indata["stats"]:
+ toexec.append("--sql 2")
+ toexec.append("--sqlitedb %s" % self.get_sqlite_fname())
+
+ toexec.append(self.get_tmp_cnf_fname())
+ if self.indata["drat"]:
+ if "Maple" in self.indata["solver"]:
+ toexec.extend(["-drup-file=%s" % self.get_drat_fname()])
+ if "cryptominisat5" in self.indata["solver"]:
+ toexec.extend(["--drat", self.get_drat_fname()])
+ # never stop search() to simplify anything
+ # toexec.append("-n 1")
+ # toexec.append("--ml 0")
+ # toexec.append("--gluecut0 100")
+ # toexec.append("--otfsubsume 0")
+ if self.indata["stats"]:
+ toexec.append("--clid")
+ else:
+ if "cryptominisat5" in self.indata["solver"] and self.indata["stats"]:
+ toexec.append("--sqlfull 0")
+
+ return " ".join(toexec)
+
+ def execute_solver(self):
+ toexec = self.get_toexec()
+ stdout_file = open(self.get_stdout_fname(), "w")
+ stderr_file = open(self.get_stderr_fname(), "w")
+
+ # limit time
+ limits_printed = "Thread %d executing '%s' with timeout %d s and memout %d MB" % (
+ self.threadID,
+ toexec,
+ self.indata["timeout_in_secs"],
+ self.indata["mem_limit_in_mb"]
+ )
+ logging.info(limits_printed, extra=self.logextra)
+ stderr_file.write(limits_printed + "\n")
+ stderr_file.flush()
+ stdout_file.write(limits_printed + "\n")
+ stdout_file.flush()
+
+ tstart = time.time()
+ p = subprocess.Popen(
+ toexec.rsplit(), stderr=stderr_file, stdout=stdout_file,
+ preexec_fn=functools.partial(
+ setlimits,
+ self.indata["timeout_in_secs"],
+ self.indata["mem_limit_in_mb"]))
+ p.wait()
+ tend = time.time()
+
+ towrite = "Finished in %f seconds by thread %s return code: %d\n" % (
+ tend - tstart, self.threadID, p.returncode)
+ stderr_file.write(towrite)
+ stdout_file.write(towrite)
+ stderr_file.close()
+ stdout_file.close()
+ logging.info(towrite.strip(), extra=self.logextra)
+
+ return p.returncode, toexec
+
+ def run_drat_trim(self):
+ toexec = "%s/drat-trim/drat-trim %s %s -x %s" % (
+ options.base_dir,
+ self.get_tmp_cnf_fname(),
+ self.get_drat_fname(),
+ self.get_lemmas_fname())
+ logging.info("Current working dir: %s", os.getcwd(), extra=self.logextra)
+ logging.info("Executing %s", toexec, extra=self.logextra)
+
+ stdout_file = open(self.get_stdout_fname(), "a")
+ stderr_file = open(self.get_stderr_fname(), "a")
+ tstart = time.time()
+ p = subprocess.Popen(
+ toexec.rsplit(), stderr=stderr_file, stdout=stdout_file,
+ preexec_fn=functools.partial(
+ setlimits,
+ 10*self.indata["timeout_in_secs"],
+ 2*self.indata["mem_limit_in_mb"]))
+ p.wait()
+ tend = time.time()
+
+ towrite = "Finished DRAT-TRIM2 in %f seconds by thread %s return code: %d\n" % (
+ tend - tstart, self.threadID, p.returncode)
+ stderr_file.write(towrite)
+ stdout_file.write(towrite)
+ stderr_file.close()
+ stdout_file.close()
+
+ return p.returncode
+
+ def add_lemma_idx_to_sqlite(self, lemmafname, dbfname):
+ logging.info("Updating sqlite with DRAT info."
+ "Using sqlite3db file %s. Using lemma file %s",
+ dbfname, lemmafname, extra=self.logextra)
+
+ useful_lemma_ids = []
+ with addlemm.Query(dbfname) as q:
+ useful_lemma_ids = addlemm.parse_lemmas(lemmafname, q.runID)
+ q.add_goods(useful_lemma_ids)
+
+ logging.info("Num good IDs: %d",
+ len(useful_lemma_ids), extra=self.logextra)
+
+ os.unlink(self.get_lemmas_fname())
+
+ def create_url(self, bucket, folder, key):
+ return 'https://%s.s3.amazonaws.com/%s/%s' % (bucket, folder, key)
+
+ def rnd_id(self):
+ return ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(5))
+
+ def copy_solution_to_s3(self):
+ exists = boto_conn.lookup(self.indata["s3_bucket"])
+ if not exists:
+ boto_conn.create_bucket(self.indata["s3_bucket"])
+ boto_bucket = boto_conn.get_bucket(self.indata["s3_bucket"])
+ k = boto.s3.key.Key(boto_bucket)
+
+ s3_folder = get_s3_folder(self.indata["given_folder"],
+ self.indata["git_rev"],
+ self.indata["solver"],
+ self.indata["timeout_in_secs"],
+ self.indata["mem_limit_in_mb"])
+
+ s3_folder_and_fname = s3_folder + "/" + self.get_fname_no_dir() + "-" + self.indata["uniq_cnt"]
+ s3_folder_and_fname_clean = s3_folder + "/" + self.get_fname_no_dir()
+
+ toreturn = []
+
+ # stdout
+ ret = os.system("gzip -f %s" % self.get_stdout_fname())
+ logging.info("Return from gzip '%s': %s", self.get_stdout_fname(),
+ ret, extra=self.logextra)
+ fname = s3_folder_and_fname + ".stdout.gz-tmp" + self.rnd_id()
+ fname_clean = s3_folder_and_fname_clean + ".stdout.gz"
+ k.key = fname
+ boto_bucket.delete_key(k)
+ ret = k.set_contents_from_filename(self.get_stdout_fname() + ".gz")
+ logging.info("Return from S3 writing file '%s': %s",
+ fname, ret, extra=self.logextra)
+ toreturn.append([fname, fname_clean])
+
+ # stderr
+ ret = os.system("gzip -f %s" % self.get_stderr_fname())
+ logging.info("Return from gzip '%s': %s", self.get_stderr_fname(),
+ ret, extra=self.logextra)
+ fname = s3_folder_and_fname + ".stderr.gz-tmp" + self.rnd_id()
+ fname_clean = s3_folder_and_fname_clean + ".stderr.gz"
+ k.key = fname
+ boto_bucket.delete_key(k)
+ ret = k.set_contents_from_filename(self.get_stderr_fname() + ".gz")
+ logging.info("Return from S3 writing file '%s': %s",
+ fname, ret, extra=self.logextra)
+ toreturn.append([fname, fname_clean])
+
+ # sqlite
+ if "cryptominisat5" in self.indata["solver"] and self.indata["stats"]:
+ ret = os.system("gzip -f %s" % self.get_sqlite_fname())
+ logging.info("Return from gzip '%s': %s", self.get_sqlite_fname(),
+ ret, extra=self.logextra)
+ fname = s3_folder_and_fname + ".sqlite.gz-tmp" + self.rnd_id()
+ fname_clean = s3_folder_and_fname_clean + ".sqlite.gz"
+ k.key = fname
+ boto_bucket.delete_key(k)
+ ret = k.set_contents_from_filename(self.get_sqlite_fname() + ".gz")
+ logging.info("Return from S3 writing file '%s': %s",
+ fname, ret, extra=self.logextra)
+ toreturn.append([fname, fname_clean])
+
+ logging.info("Uploaded stdout+stderr+sqlite files: %s",
+ toreturn, extra=self.logextra)
+
+ os.unlink(self.get_stdout_fname() + ".gz")
+ os.unlink(self.get_stderr_fname() + ".gz")
+ if "cryptominisat5" in self.indata["solver"] and self.indata["stats"]:
+ os.unlink(self.get_sqlite_fname() + ".gz")
+
+ return toreturn
+
+ def run_loop(self):
+ global exitapp
+ num_connect_problems = 0
+ while not exitapp:
+ if (num_connect_problems >= 20):
+ logging.error("Too many connection problems, exiting.",
+ extra=self.logextra)
+ exitapp = True
+ return
+
+ time.sleep(random.randint(0, 100) / 20.0)
+ try:
+ sock = connect_client(self.threadID)
+ except:
+ exc_type, exc_value, exc_traceback = sys.exc_info()
+ the_trace = traceback.format_exc().rstrip().replace("\n", " || ")
+ logging.warn("Problem trying to connect"
+ "waiting and re-connecting."
+ " Trace: %s", the_trace,
+ extra=self.logextra)
+ time.sleep(3)
+ num_connect_problems += 1
+ continue
+
+ self.indata = ask_for_data(sock, "need", self.threadID)
+ sock.close()
+
+ logging.info("Got data from server %s",
+ pprint.pformat(self.indata, indent=4).replace("\n", " || "),
+ extra=self.logextra)
+ options.noshutdown |= self.indata["noshutdown"]
+
+ # handle 'finish'
+ if self.indata["command"] == "finish":
+ logging.warn("Client received that there is nothing more"
+ " to solve, exiting this thread",
+ extra=self.logextra)
+ return
+
+ # handle 'wait'
+ if self.indata["command"] == "wait":
+ time.sleep(20)
+ continue
+
+ # handle 'solve'
+ if self.indata["command"] == "solve":
+ returncode, executed = self.execute_solver()
+ if returncode == 20 and self.indata["drat"] and self.indata["stats"]:
+ if self.run_drat_trim() == 0:
+ self.add_lemma_idx_to_sqlite(
+ self.get_lemmas_fname(),
+ self.get_sqlite_fname())
+ os.unlink(self.get_tmp_cnf_fname())
+ if self.indata["drat"]:
+ os.unlink(self.get_drat_fname())
+ files = self.copy_solution_to_s3()
+ self.send_back_that_we_solved(returncode, files)
+ continue
+
+ logging.error("Data unrecognised by client: %s, exiting",
+ self.logextra)
+ return
+
+ logging.info("Exit asked for by another thread. Exiting",
+ extra=self.logextra)
+
+ def send_back_that_we_solved(self, returncode, files):
+ logging.info("Trying to send to server that we are done",
+ extra=self.logextra)
+ fail_connect = 0
+ while True:
+ if fail_connect > 5:
+ logging.error("Too many errors connecting to server to"
+ " send results. Shutting down",
+ extra=self.logextra)
+ shutdown(-1)
+ try:
+ sock = connect_client(self.threadID)
+ break
+ except:
+ exc_type, exc_value, exc_traceback = sys.exc_info()
+ the_trace = traceback.format_exc().rstrip().replace("\n", " || ")
+
+ logging.warn("Problem, waiting and re-connecting."
+ " Trace: %s", the_trace,
+ extra=self.logextra)
+ time.sleep(random.randint(0, 5) / 10.0)
+ fail_connect += 1
+
+ tosend = {}
+ tosend["file_num"] = self.indata["file_num"]
+ tosend["returncode"] = returncode
+ tosend["files"] = files
+ send_command(sock, "done", tosend)
+ logging.info("Sent that we finished %s with retcode %d",
+ self.indata["file_num"], returncode, extra=self.logextra)
+
+ sock.close()
+
+ def run(self):
+ logging.info("Starting thread", extra=self.logextra)
+ global exitapp
+
+ try:
+ self.run_loop()
+ except KeyboardInterrupt:
+ exitapp = True
+ raise
+ except:
+ exc_type, exc_value, exc_traceback = sys.exc_info()
+ the_trace = traceback.format_exc().rstrip().replace("\n", " || ")
+
+ exitapp = True
+ logging.error("Unexpected error in thread: %s", the_trace,
+ extra=self.logextra)
+ shutdown(-1)
+ raise
+
+
+def build_cryptominisat(indata):
+ opts = []
+ opts.append(indata["git_rev"])
+ opts.append(str(options.num_threads))
+ if indata["stats"]:
+ opts.append("-DSTATS=ON")
+
+ if indata["gauss"]:
+ opts.append("-DUSE_GAUSS=ON")
+
+ ret = os.system('%s/cryptominisat/scripts/aws/build_cryptominisat.sh %s >> %s/build.log 2>&1' %
+ (options.base_dir,
+ " ".join(opts),
+ options.base_dir))
+ global s3_folder
+ s3_folder = get_s3_folder(indata["given_folder"],
+ indata["git_rev"],
+ indata["solver"],
+ indata["timeout_in_secs"],
+ indata["mem_limit_in_mb"]
+ )
+ global s3_bucket
+ s3_bucket = indata["s3_bucket"]
+ logging.info("s3 bucket: %, s3 folder: %", s3_bucket, s3_folder, extra={"threadid": "-1"})
+ if ret != 0:
+ logging.error("Error building cryptominisat, shutting down!",
+ extra={"threadid": -1}
+ )
+ shutdown(-1)
+
+
+def build_system():
+ built_system = False
+ logging.info("Building system", extra={"threadid": -1})
+ tries = 0
+ while not built_system and tries < 10:
+ try:
+ tries += 1
+ sock = connect_client(-1)
+ except Exception:
+ exc_type, exc_value, exc_traceback = sys.exc_info()
+ the_trace = traceback.format_exc().rstrip().replace("\n", " || ")
+ logging.warning("Problem, waiting and re-connecting. Error: %s",
+ the_trace,
+ extra={"threadid": -1})
+ time.sleep(3)
+ continue
+
+ indata = ask_for_data(sock, "build", -1)
+ options.noshutdown |= indata["noshutdown"]
+ sock.close()
+
+ if "cryptominisat5" in indata["solver"]:
+ build_cryptominisat(indata)
+
+ built_system = True
+
+ if not built_system:
+ shutdown(-1)
+
+
+def num_cpus():
+ num_cpu = 0
+ cpuinfo = open("/proc/cpuinfo", "r")
+ for line in cpuinfo:
+ if "processor" in line:
+ num_cpu += 1
+
+ cpuinfo.close()
+ return num_cpu
+
+
+def shutdown(exitval=0):
+ toexec = "sudo shutdown -h now"
+ logging.info("SHUTTING DOWN", extra={"threadid": -1})
+
+ # signal error to master
+ if exitval != 0:
+ try:
+ signal_error_to_master()
+ except:
+ pass
+
+ # send email
+ if exitval == 0:
+ reason = "OK"
+ else:
+ reason = "FAIL"
+
+ try:
+ send_email("Client shutting down %s" % reason,
+ "Client finished.", options.logfile_name)
+ except:
+ exc_type, exc_value, exc_traceback = sys.exc_info()
+ the_trace = traceback.format_exc().rstrip().replace("\n", " || ")
+ logging.error("Cannot send email! Traceback: %s", the_trace,
+ extra={"threadid": -1})
+
+ if not options.noshutdown:
+ os.system(toexec)
+
+ exit(exitval)
+
+
+def set_up_logging():
+ form = '[ %(asctime)-15s thread %(threadid)s '
+ form += get_ip_address(options.network_device)
+ form += " %(levelname)s %(message)s ]"
+
+ logformatter = logging.Formatter(form)
+
+ consoleHandler = logging.StreamHandler()
+ consoleHandler.setFormatter(logformatter)
+ logging.getLogger().addHandler(consoleHandler)
+
+ try:
+ os.unlink(options.logfile_name)
+ except:
+ pass
+ fileHandler = logging.FileHandler(options.logfile_name)
+ fileHandler.setFormatter(logformatter)
+ logging.getLogger().addHandler(fileHandler)
+
+ logging.getLogger().setLevel(logging.INFO)
+
+
+def update_num_threads():
+ if options.num_threads is None:
+ options.num_threads = num_cpus()/2
+ options.num_threads = max(options.num_threads, 1)
+
+ logging.info("Running with %d threads", options.num_threads,
+ extra={"threadid": -1})
+
+
+def build_system_full():
+ try:
+ build_system()
+ except:
+ exc_type, exc_value, exc_traceback = sys.exc_info()
+ the_trace = traceback.format_exc().rstrip().replace("\n", " || ")
+ logging.error("Error getting data for building system: %s",
+ the_trace, extra={"threadid": -1})
+ shutdown(-1)
+
+
+def start_threads():
+ threads = []
+ # we should test at least 2 threads, it's only used during testing anyway
+ options.num_threads = max(options.num_threads, 2)
+ for i in range(options.num_threads):
+ threads.append(solverThread(i))
+
+ for t in threads:
+ t.setDaemon(True)
+ t.start()
+
+
+def print_to_log_local_setup():
+ data = boto.utils.get_instance_metadata()
+ for a, b in data.items():
+ logging.info("%s -- %s", a, b, extra={"threadid": -1})
+
+
+class VolumeAdderMount():
+ def __init__(self):
+ pass
+
+ def add_volume(self):
+ os.system("sudo mkfs.ext3 /dev/xvdb")
+ os.system("sudo mkdir %s" % options.temp_space)
+ os.system("sudo mount /dev/xvdb %s" % options.temp_space)
+
+ def delete_volume(self):
+ pass
+
+
+class VolumeAdder():
+ def __init__(self):
+ self.conn = boto.ec2.connect_to_region(self._get_region())
+
+ def _get_instance_id(self):
+ instance_id = boto.utils.get_instance_metadata()
+ return instance_id['instance-id']
+
+ def _get_availability_zone(self):
+ dat = boto.utils.get_instance_metadata()
+ return dat["placement"]["availability-zone"]
+
+ def _get_region(self):
+ region = boto.utils.get_instance_metadata()
+ return region['local-hostname'].split('.')[1]
+
+ def add_volume(self):
+ self.vol = self.conn.create_volume(50, self._get_availability_zone())
+ while self.vol.status != 'available':
+ print('Vol state: ', self.vol.status)
+ time.sleep(5)
+ self.vol.update()
+
+ dev = "xvdc"
+ logging.info("Created volume, attaching... %s", self.vol,
+ extra={"threadid": -1})
+ self.conn.attach_volume(self.vol.id, self._get_instance_id(), dev)
+ logging.info("Waiting for volume to show up...", extra={"threadid": -1})
+ time.sleep(10)
+
+ logging.info("Trying to mkfs, mkdir and mount", extra={"threadid": -1})
+ os.system("sudo mkfs.ext3 /dev/%s" % dev)
+ os.system("sudo mkdir %s" % options.temp_space)
+ os.system("sudo chown ubuntu:ubuntu %s" % options.temp_space)
+ os.system("sudo mount /dev/%s %s" % (dev, options.temp_space))
+
+ return self.vol.id
+
+ def delete_volume(self):
+ try:
+ os.system("sudo umount /mnt2")
+ time.sleep(2)
+ except:
+ logging.error("Issue with unmounting, but ignored",
+ extra={"threadid": -1})
+
+ self.conn.detach_volume(self.vol.id, force=True)
+ time.sleep(1)
+ self.conn.delete_volume(self.vol.id)
+
+
+def parse_command_line():
+ usage = "usage: %prog"
+ parser = optparse.OptionParser(usage=usage, formatter=PlainHelpFormatter())
+ parser.add_option("--verbose", "-v", action="store_true", default=False,
+ dest="verbose", help="Be more verbose"
+ )
+
+ parser.add_option("--host", dest="host",
+ help="Host to connect to as a client")
+ parser.add_option("--port", "-p", default=10000, dest="port",
+ type="int", help="Port to use"
+ " [default: %default]",
+ )
+
+ parser.add_option("--temp", default="/mnt2", dest="temp_space", type=str,
+ help="Temporary space to use"
+ " [default: %default]",
+ )
+
+ parser.add_option("--noshutdown", "-n", default=False, dest="noshutdown",
+ action="store_true", help="Do not shut down"
+ )
+
+ parser.add_option("--dir", default="/home/ubuntu/", dest="base_dir", type=str,
+ help="The home dir of cryptominisat"
+ " [default: %default]",
+ )
+ parser.add_option("--net", default="ens3", dest="network_device", type=str,
+ help="The network device we will be using"
+ " [default: %default]",
+ )
+
+ parser.add_option("--threads", dest="num_threads", type=int,
+ help="Force using this many threads")
+
+ parser.add_option("--dev", dest="dev", type=str, default="xvdc",
+ help="Device name")
+
+ parser.add_option("--logfile", dest="logfile_name", type=str,
+ default="python_log.log", help="Name of LOG file")
+
+ (options, args) = parser.parse_args()
+
+ return options, args
+
+
+if __name__ == "__main__":
+ global s3_bucket
+ global s3_folder
+ s3_bucket = "msoos-no-bucket"
+ s3_folder = "no_s3_folder"
+ options, args = parse_command_line()
+
+ exitapp = False
+ options.logfile_name = options.base_dir + options.logfile_name
+
+ # get host
+ if options.host is None:
+ for line in boto.utils.get_instance_userdata().split("\n"):
+ if "DATA" in line:
+ options.host = line.split("=")[1].strip().strip('"')
+
+ print("HOST has beeen set to %s" % options.host)
+
+ try:
+ set_up_logging()
+ logging.info("Client called with parameters: %s",
+ pprint.pformat(options, indent=4).replace("\n", " || "),
+ extra={"threadid": -1})
+ print_to_log_local_setup()
+ v = VolumeAdderMount()
+ v.add_volume()
+
+ boto_conn = boto.connect_s3()
+ update_num_threads()
+ build_system_full()
+ start_threads()
+ while threading.active_count() > 1:
+ time.sleep(0.1)
+
+ # finish up
+ logging.info("Exiting Main Thread, shutting down", extra={"threadid": -1})
+ v.delete_volume()
+ except:
+ exc_type, exc_value, exc_traceback = sys.exc_info()
+ the_trace = traceback.format_exc().rstrip().replace("\n", " || ")
+ logging.error("Problem in __main__"
+ "Trace: %s", the_trace, extra={"threadid": -1})
+ shutdown(-1)
+
+ shutdown()
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/common_aws.py b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/common_aws.py
new file mode 100644
index 000000000..4af1cfb0b
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/common_aws.py
@@ -0,0 +1,86 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2018 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+from __future__ import print_function
+import boto
+import traceback
+import sys
+import subprocess
+import socket
+import fcntl
+import struct
+from email.mime.text import MIMEText
+from email.mime.application import MIMEApplication
+from email.mime.multipart import MIMEMultipart
+import smtplib
+import ConfigParser
+config = ConfigParser.ConfigParser()
+config.read("/home/ubuntu/email.conf")
+
+
+def send_email(subject, text, fname=None):
+ msg = MIMEMultipart()
+ msg['Subject'] = 'Email from solver: %s' % subject
+ msg['From'] = 'msoos@msoos.org'
+ msg['To'] = 'soos.mate@gmail.com'
+
+ # That is what you see if you have no email client:
+ msg.preamble = 'Multipart massage.\n'
+
+ # Text part
+ part = MIMEText(text)
+ msg.attach(part)
+
+ # Attachment(s)
+ if fname:
+ part = MIMEApplication(open(fname, "rb").read())
+ part.add_header('Content-Disposition', 'attachment', filename="attachment.txt")
+ msg.attach(part)
+
+ # Connect to STMP server
+ email_login = config.get("email", "login")
+ email_pass = config.get("email", "pass")
+
+ smtp = smtplib.SMTP_SSL("email-smtp.us-west-2.amazonaws.com")
+ smtp.login(email_login, email_pass)
+
+ # Send email
+ smtp.sendmail(msg['From'], msg['To'], msg.as_string())
+
+
+def get_ip_address(ifname):
+ s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+ return socket.inet_ntoa(fcntl.ioctl(
+ s.fileno(),
+ 0x8915, # SIOCGIFADDR
+ struct.pack('256s', ifname[:15])
+ )[20:24])
+
+
+def get_revision(full_solver_path, base_dir):
+ revision = subprocess.check_output(['git', 'rev-parse', 'HEAD'])
+ return revision.strip()
+
+
+def get_s3_folder(folder, rev, solver, timeout, memout):
+ print("folder: %s rev: %s tout: %s memout %s" % (folder, rev, timeout, memout))
+ solver_exe = solver[solver.rfind("/")+1:]
+ return folder + "-{rev}-{solver}-tout-{tout}-mout-{mout}".format(
+ rev=rev[:9], solver=solver_exe, tout=timeout, mout=memout)
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp11_updated b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp11_updated
new file mode 100644
index 000000000..2854d28ac
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp11_updated
@@ -0,0 +1,300 @@
+satcomp11/11pipe_11_ooo.cnf.gz
+satcomp11/11pipe_k.cnf.gz
+satcomp11/12pipe_bug4_q0.used-as.sat04-723.cnf.gz
+satcomp11/12pipe_bug6_q0.used-as.sat04-725.cnf.gz
+satcomp11/1dlx_c_iq57_a.cnf.gz
+satcomp11/1dlx_c_iq60_a.cnf.gz
+satcomp11/2dlx_ca_bp_f_liveness.cnf.gz
+satcomp11/6pipe_6_ooo.shuffled-as.sat03-413.cnf.gz
+satcomp11/9dlx_vliw_at_b_iq6.used-as.sat04-347.cnf.gz
+satcomp11/9dlx_vliw_at_b_iq7.cnf.gz
+satcomp11/9dlx_vliw_at_b_iq8.used-as.sat04-718.cnf.gz
+satcomp11/9dlx_vliw_at_b_iq9.used-as.sat04-719.cnf.gz
+satcomp11/9vliw_m_9stages_iq3_C1_bug5.cnf.gz
+satcomp11/9vliw_m_9stages_iq3_C1_bug6.cnf.gz
+satcomp11/ACG-10-10p0.cnf.gz
+satcomp11/ACG-15-5p1.cnf.gz
+satcomp11/AProVE07-01.cnf.gz
+satcomp11/AProVE07-03.cnf.gz
+satcomp11/AProVE07-21.cnf.gz
+satcomp11/AProVE11-02.cnf.gz
+satcomp11/AProVE11-06.cnf.gz
+satcomp11/AProVE11-07.cnf.gz
+satcomp11/AProVE11-09.cnf.gz
+satcomp11/AProVE11-10.cnf.gz
+satcomp11/AProVE11-11.cnf.gz
+satcomp11/AProVE11-12.cnf.gz
+satcomp11/AProVE11-13.cnf.gz
+satcomp11/AProVE11-15.cnf.gz
+satcomp11/AProVE11-16.cnf.gz
+satcomp11/E00N23.cnf.gz
+satcomp11/E00X23.cnf.gz
+satcomp11/E02F17.cnf.gz
+satcomp11/E02F20.cnf.gz
+satcomp11/E02F22.cnf.gz
+satcomp11/E03N17.cnf.gz
+satcomp11/E04F19.cnf.gz
+satcomp11/E04F20.cnf.gz
+satcomp11/E04N18.cnf.gz
+satcomp11/E05F18.cnf.gz
+satcomp11/E05F20.cnf.gz
+satcomp11/E05X15.cnf.gz
+satcomp11/E07N15.cnf.gz
+satcomp11/E15N15.cnf.gz
+satcomp11/IBM_FV_2004_rule_batch_30_SAT_dat.k55.cnf.gz
+satcomp11/IBM_FV_2004_rule_batch_30_SAT_dat.k80.cnf.gz
+satcomp11/SAT_dat.k100.cnf.gz
+satcomp11/SAT_dat.k20.cnf.gz
+satcomp11/SAT_dat.k45.cnf.gz
+satcomp11/SAT_dat.k80.cnf.gz
+satcomp11/SAT_dat.k80_04.cnf.gz
+satcomp11/SAT_dat.k85.cnf.gz
+satcomp11/UCG-15-10p0.cnf.gz
+satcomp11/UCG-15-10p1.cnf.gz
+satcomp11/UCG-15-5p0.cnf.gz
+satcomp11/UCG-20-5p1.cnf.gz
+satcomp11/UR-10-10p1.cnf.gz
+satcomp11/UR-20-10p0.cnf.gz
+satcomp11/UR-20-10p1.cnf.gz
+satcomp11/UTI-10-5t1.cnf.gz
+satcomp11/UTI-20-10p0.cnf.gz
+satcomp11/UTI-20-10p1.cnf.gz
+satcomp11/UTI-20-10t0.cnf.gz
+satcomp11/UTI-20-10t1.cnf.gz
+satcomp11/aaai10-planning-ipc5-TPP-21-step11.cnf.gz
+satcomp11/aaai10-planning-ipc5-TPP-30-step11.cnf.gz
+satcomp11/aaai10-planning-ipc5-pathways-13-step17.cnf.gz
+satcomp11/aaai10-planning-ipc5-pathways-17-step20.cnf.gz
+satcomp11/aaai10-planning-ipc5-pathways-17-step21.cnf.gz
+satcomp11/aaai10-planning-ipc5-pipesworld-12-step15.cnf.gz
+satcomp11/aaai10-planning-ipc5-pipesworld-12-step16.cnf.gz
+satcomp11/aaai10-planning-ipc5-pipesworld-18-step15.cnf.gz
+satcomp11/aaai10-planning-ipc5-pipesworld-18-step16.cnf.gz
+satcomp11/aaai10-planning-ipc5-pipesworld-27-step13.cnf.gz
+satcomp11/aaai10-planning-ipc5-pipesworld-27-step14.cnf.gz
+satcomp11/aaai10-planning-ipc5-rovers-18-step11.cnf.gz
+satcomp11/aaai10-planning-ipc5-rovers-18-step12.cnf.gz
+satcomp11/abb313GPIA-9-c.used-as.sat04-317.cnf.gz
+satcomp11/abb313GPIA-9-tr.used-as.sat04-321.cnf.gz
+satcomp11/aes_128_10_keyfind_1.cnf.gz
+satcomp11/aes_128_1_keyfind_1.cnf.gz
+satcomp11/aes_128_2_keyfind_1.cnf.gz
+satcomp11/aes_128_3_keyfind_1.cnf.gz
+satcomp11/aes_32_1_keyfind_1.cnf.gz
+satcomp11/aes_32_2_keyfind_1.cnf.gz
+satcomp11/aes_32_3_keyfind_1.cnf.gz
+satcomp11/aes_32_4_keyfind_1.cnf.gz
+satcomp11/aes_32_5_keyfind_1.cnf.gz
+satcomp11/aes_64_1_keyfind_1.cnf.gz
+satcomp11/aes_64_2_keyfind_1.cnf.gz
+satcomp11/aes_64_3_keyfind_1.cnf.gz
+satcomp11/aes_64_4_keyfind_1.cnf.gz
+satcomp11/all.used-as.sat04-986.cnf.gz
+satcomp11/am_7_7.shuffled-as.sat03-363.cnf.gz
+satcomp11/bart17.shuffled.cnf.gz
+satcomp11/bc57-sensors-1-k303-unsat.shuffled-as.sat03-406.cnf.gz
+satcomp11/blocks-4-ipc5-h21-unknown.cnf.gz
+satcomp11/blocks-blocks-36-0.120-NOTKNOWN.cnf.gz
+satcomp11/blocks-blocks-36-0.160-NOTKNOWN.cnf.gz
+satcomp11/blocks-blocks-36-0.170-NOTKNOWN.cnf.gz
+satcomp11/blocks-blocks-36-0.180-SAT.cnf.gz
+satcomp11/blocks-blocks-37-1.120-NOTKNOWN.cnf.gz
+satcomp11/blocks-blocks-37-1.130-NOTKNOWN.cnf.gz
+satcomp11/blocks-blocks-37-1.150-SAT.cnf.gz
+satcomp11/c10idw_i.cnf.gz
+satcomp11/c6288mul.miter.shuffled-as.sat03-346.cnf.gz
+satcomp11/clauses-8.renamed-as.sat05-1964.cnf.gz
+satcomp11/comb1.shuffled.cnf.gz
+satcomp11/countbitsarray04_32.cnf.gz
+satcomp11/countbitsrotate032.cnf.gz
+satcomp11/countbitssrl064.cnf.gz
+satcomp11/countbitswegner128.cnf.gz
+satcomp11/cube-11-h14-sat.cnf.gz
+satcomp11/dated-10-17-u.cnf.gz
+satcomp11/dated-5-11-u.cnf.gz
+satcomp11/dated-5-13-u.cnf.gz
+satcomp11/dekker.used-as.sat04-989.cnf.gz
+satcomp11/dme-03-1-k247-unsat.shuffled-as.sat03-407.cnf.gz
+satcomp11/dp04s04.shuffled.cnf.gz
+satcomp11/dp04u03.shuffled.cnf.gz
+satcomp11/dp10s10.shuffled.cnf.gz
+satcomp11/driverlog1_ks99i.renamed-as.sat05-3951.cnf.gz
+satcomp11/driverlog3_v01a.renamed-as.sat05-3963.cnf.gz
+satcomp11/dspam_dump_vc949.cnf.gz
+satcomp11/eq.atree.braun.11.unsat.cnf.gz
+satcomp11/eq.atree.braun.12.unsat.cnf.gz
+satcomp11/ferry5_ks99i.renamed-as.sat05-3994.cnf.gz
+satcomp11/grid-strips-grid-y-3.035-NOTKNOWN.cnf.gz
+satcomp11/grid-strips-grid-y-4.025-NOTKNOWN.cnf.gz
+satcomp11/gripper13u.shuffled-as.sat03-395.cnf.gz
+satcomp11/gss-14-s100.cnf.gz
+satcomp11/gss-16-s100.cnf.gz
+satcomp11/gss-19-s100.cnf.gz
+satcomp11/gss-21-s100.cnf.gz
+satcomp11/gss-22-s100.cnf.gz
+satcomp11/gss-27-s100.cnf.gz
+satcomp11/gus-md5-11.cnf.gz
+satcomp11/gus-md5-12.cnf.gz
+satcomp11/hard-18-U-10652.cnf.gz
+satcomp11/hard-25-U-7061.cnf.gz
+satcomp11/hard-6-U-7061.cnf.gz
+satcomp11/homer14.shuffled.cnf.gz
+satcomp11/homer16.shuffled.cnf.gz
+satcomp11/homer17.shuffled.cnf.gz
+satcomp11/hsat_vc12062.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k45-bc57sensorsp1-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k45-bobsm5378d2-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k45-bobsmhdlc2-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k45-pdtpmsgoodbakery-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k45-pdtpmspalu-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k45-pdtswvqis8x8p2-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k45-pdtswvrod6x8p1-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k45-pdtswvtms14x8p1-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k45-pdtviseisenberg1-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k45-pdtvisns3p02-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k45-pdtvissoap1-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k50-bc57sensorsp2-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k50-bc57sensorsp3-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k50-bjrb07amba2andenv-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k50-eijkbs6669-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k50-nusmvreactorp4-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k50-pdtpmsns2-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k50-pdtswvsam6x8p3-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k50-pdtviseisenberg2-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k50-pdtvisns2p3-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k50-pdtvisns3p00-tseitin.cnf.gz
+satcomp11/ibm-2002-21r-k95.cnf.gz
+satcomp11/ibm-2002-30r-k85.cnf.gz
+satcomp11/ibm-2004-01-k90.cnf.gz
+satcomp11/ibm-2004-23-k100.cnf.gz
+satcomp11/k2fix_gr_rcs_w8.shuffled.cnf.gz
+satcomp11/k2fix_gr_rcs_w9.shuffled.cnf.gz
+satcomp11/k2mul.miter.shuffled-as.sat03-355.cnf.gz
+satcomp11/korf-15.cnf.gz
+satcomp11/korf-17.cnf.gz
+satcomp11/korf-18.cnf.gz
+satcomp11/li-exam-61.shuffled-as.sat03-366.cnf.gz
+satcomp11/li-test4-100.shuffled-as.sat03-370.cnf.gz
+satcomp11/manol-pipe-c10nidw.cnf.gz
+satcomp11/manol-pipe-c6bidw_i.cnf.gz
+satcomp11/manol-pipe-f7idw.cnf.gz
+satcomp11/manol-pipe-f7nidw.cnf.gz
+satcomp11/maxor128.cnf.gz
+satcomp11/maxxor032.cnf.gz
+satcomp11/maxxor064.cnf.gz
+satcomp11/maxxor128.cnf.gz
+satcomp11/maxxororand064.cnf.gz
+satcomp11/md5_48_3.cnf.gz
+satcomp11/minandmaxor016.cnf.gz
+satcomp11/minandmaxor128.cnf.gz
+satcomp11/minxorminand128.cnf.gz
+satcomp11/mizh-sha0-36-2.cnf.gz
+satcomp11/mizh-sha0-36-4.cnf.gz
+satcomp11/mulhs016.cnf.gz
+satcomp11/myciel6-tr.used-as.sat04-320.cnf.gz
+satcomp11/ndhf_xits_19_UNKNOWN.cnf.gz
+satcomp11/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_1.025-NOTKNOWN.cnf.gz
+satcomp11/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_1.035-NOTKNOWN.cnf.gz
+satcomp11/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_1.045-NOTKNOWN.cnf.gz
+satcomp11/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_3.025-NOTKNOWN.cnf.gz
+satcomp11/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_3.035-NOTKNOWN.cnf.gz
+satcomp11/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_3.045-NOTKNOWN.cnf.gz
+satcomp11/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_3.085-SAT.cnf.gz
+satcomp11/partial-10-13-s.cnf.gz
+satcomp11/partial-10-15-s.cnf.gz
+satcomp11/partial-10-17-s.cnf.gz
+satcomp11/partial-5-11-u.cnf.gz
+satcomp11/post-c32s-gcdm16-23.cnf.gz
+satcomp11/post-cbmc-zfcp-2.8-u2-noholes.cnf.gz
+satcomp11/q_query_3_L150_coli.sat.cnf.gz
+satcomp11/q_query_3_L70_coli.sat.cnf.gz
+satcomp11/q_query_3_l46_lambda.cnf.gz
+satcomp11/rand_net60-25-10.shuffled.cnf.gz
+satcomp11/rand_net60-30-1.shuffled.cnf.gz
+satcomp11/rand_net60-40-10.shuffled.cnf.gz
+satcomp11/rand_net70-60-10.shuffled.cnf.gz
+satcomp11/rbcl_xits_08_UNSAT.cnf.gz
+satcomp11/rbcl_xits_09_UNKNOWN.cnf.gz
+satcomp11/rbcl_xits_15_SAT.cnf.gz
+satcomp11/rbcl_xits_18_SAT.cnf.gz
+satcomp11/rovers1_ks99i.renamed-as.sat05-3971.cnf.gz
+satcomp11/rpoc_xits_09_UNSAT.cnf.gz
+satcomp11/sha0_36_5.cnf.gz
+satcomp11/slp-synthesis-aes-bottom12.cnf.gz
+satcomp11/slp-synthesis-aes-bottom13.cnf.gz
+satcomp11/slp-synthesis-aes-bottom14.cnf.gz
+satcomp11/slp-synthesis-aes-bottom15.cnf.gz
+satcomp11/slp-synthesis-aes-bottom16.cnf.gz
+satcomp11/slp-synthesis-aes-bottom17.cnf.gz
+satcomp11/slp-synthesis-aes-bottom18.cnf.gz
+satcomp11/slp-synthesis-aes-bottom19.cnf.gz
+satcomp11/slp-synthesis-aes-bottom20.cnf.gz
+satcomp11/slp-synthesis-aes-bottom21.cnf.gz
+satcomp11/slp-synthesis-aes-bottom22.cnf.gz
+satcomp11/slp-synthesis-aes-bottom23.cnf.gz
+satcomp11/slp-synthesis-aes-bottom24.cnf.gz
+satcomp11/slp-synthesis-aes-bottom25.cnf.gz
+satcomp11/slp-synthesis-aes-bottom26.cnf.gz
+satcomp11/slp-synthesis-aes-top21.cnf.gz
+satcomp11/slp-synthesis-aes-top22.cnf.gz
+satcomp11/slp-synthesis-aes-top23.cnf.gz
+satcomp11/slp-synthesis-aes-top24.cnf.gz
+satcomp11/slp-synthesis-aes-top25.cnf.gz
+satcomp11/slp-synthesis-aes-top26.cnf.gz
+satcomp11/slp-synthesis-aes-top28.cnf.gz
+satcomp11/slp-synthesis-aes-top29.cnf.gz
+satcomp11/slp-synthesis-aes-top30.cnf.gz
+satcomp11/smtlib-qfbv-aigs-VS3-benchmark-S2-tseitin.cnf.gz
+satcomp11/smtlib-qfbv-aigs-bin_libmsrpc_vc1225336-tseitin.cnf.gz
+satcomp11/smtlib-qfbv-aigs-bin_libsmbclient_vc1228502-tseitin.cnf.gz
+satcomp11/smtlib-qfbv-aigs-bin_libsmbsharemodes_vc5759-tseitin.cnf.gz
+satcomp11/smtlib-qfbv-aigs-countbits128-tseitin.cnf.gz
+satcomp11/smtlib-qfbv-aigs-ext_con_032_008_0256-tseitin.cnf.gz
+satcomp11/smtlib-qfbv-aigs-lfsr_004_127_112-tseitin.cnf.gz
+satcomp11/smtlib-qfbv-aigs-lfsr_008_063_080-tseitin.cnf.gz
+satcomp11/smtlib-qfbv-aigs-lfsr_008_079_112-tseitin.cnf.gz
+satcomp11/smtlib-qfbv-aigs-nlzbe256-tseitin.cnf.gz
+satcomp11/smtlib-qfbv-aigs-rfunit_flat-64-tseitin.cnf.gz
+satcomp11/smtlib-qfbv-aigs-servers_slapd_a_vc149789-tseitin.cnf.gz
+satcomp11/smtlib-qfbv-aigs-src_wget_vc18517-tseitin.cnf.gz
+satcomp11/smulo064.cnf.gz
+satcomp11/sokoban-sequential-p145-microban-sequential.030-NOTKNOWN.cnf.gz
+satcomp11/sokoban-sequential-p145-microban-sequential.040-NOTKNOWN.cnf.gz
+satcomp11/sokoban-sequential-p145-microban-sequential.050-NOTKNOWN.cnf.gz
+satcomp11/sokoban-sequential-p145-microban-sequential.060-NOTKNOWN.cnf.gz
+satcomp11/sokoban-sequential-p145-microban-sequential.070-NOTKNOWN.cnf.gz
+satcomp11/sokoban-sequential-p145-microban-sequential.080-SAT.cnf.gz
+satcomp11/sortnet-7-ipc5-h15-unsat.cnf.gz
+satcomp11/sortnet-8-ipc5-h19-sat.cnf.gz
+satcomp11/total-10-17-u.cnf.gz
+satcomp11/traffic_3_uc_sat.cnf.gz
+satcomp11/traffic_3b_unknown.cnf.gz
+satcomp11/traffic_b_unsat.cnf.gz
+satcomp11/traffic_f_unknown.cnf.gz
+satcomp11/traffic_fb_unknown.cnf.gz
+satcomp11/traffic_kkb_unknown.cnf.gz
+satcomp11/traffic_pcb_unknown.cnf.gz
+satcomp11/traffic_r_sat.cnf.gz
+satcomp11/traffic_r_uc_sat.cnf.gz
+satcomp11/transport-transport-city-sequential-25nodes-1000size-3degree-100mindistance-3trucks-10packages-2008seed.060-SAT.cnf.gz
+satcomp11/transport-transport-city-sequential-35nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.030-NOTKNOWN.cnf.gz
+satcomp11/transport-transport-city-sequential-35nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.040-NOTKNOWN.cnf.gz
+satcomp11/transport-transport-city-sequential-35nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.050-SAT.cnf.gz
+satcomp11/transport-transport-three-cities-sequential-14nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.020-NOTKNOWN.cnf.gz
+satcomp11/transport-transport-three-cities-sequential-14nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.030-NOTKNOWN.cnf.gz
+satcomp11/transport-transport-three-cities-sequential-14nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.040-NOTKNOWN.cnf.gz
+satcomp11/transport-transport-two-cities-sequential-15nodes-1000size-3degree-100mindistance-3trucks-10packages-2008seed.040-SAT.cnf.gz
+satcomp11/valves-gates-1-k617-unsat.shuffled-as.sat03-412.cnf.gz
+satcomp11/vda_gr_rcs_w9.shuffled.cnf.gz
+satcomp11/velev-npe-1.0-9dlx-b71.cnf.gz
+satcomp11/velev-pipe-o-uns-1.0-7.cnf.gz
+satcomp11/velev-pipe-o-uns-1.1-6.cnf.gz
+satcomp11/velev-pipe-sat-1.0-b9.cnf.gz
+satcomp11/velev-vliw-uns-4.0-9-i1.cnf.gz
+satcomp11/vmpc_25.renamed-as.sat05-1913.cnf.gz
+satcomp11/vmpc_29.renamed-as.sat05-1916.cnf.gz
+satcomp11/vmpc_32.renamed-as.sat05-1919.cnf.gz
+satcomp11/vmpc_34.renamed-as.sat05-1926.cnf.gz
+satcomp11/vmpc_35.renamed-as.sat05-1921.cnf.gz
+satcomp11/vmpc_36.renamed-as.sat05-1922.cnf.gz
+satcomp11/x1mul.miter.shuffled-as.sat03-359.cnf.gz
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp13_updated b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp13_updated
new file mode 100644
index 000000000..07c46e919
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp13_updated
@@ -0,0 +1,300 @@
+satcomp13/11pipe_11_ooo.cnf.gz
+satcomp13/11pipe_k.cnf.gz
+satcomp13/12pipe_bug4_q0.used-as.sat04-723.cnf.gz
+satcomp13/12pipe_bug6_q0.used-as.sat04-725.cnf.gz
+satcomp13/1dlx_c_iq57_a.cnf.gz
+satcomp13/1dlx_c_iq60_a.cnf.gz
+satcomp13/2dlx_ca_bp_f_liveness.cnf.gz
+satcomp13/6pipe_6_ooo.shuffled-as.sat03-413.cnf.gz
+satcomp13/9dlx_vliw_at_b_iq6.used-as.sat04-347.cnf.gz
+satcomp13/9dlx_vliw_at_b_iq7.cnf.gz
+satcomp13/9dlx_vliw_at_b_iq8.used-as.sat04-718.cnf.gz
+satcomp13/9dlx_vliw_at_b_iq9.used-as.sat04-719.cnf.gz
+satcomp13/9vliw_m_9stages_iq3_C1_bug5.cnf.gz
+satcomp13/9vliw_m_9stages_iq3_C1_bug6.cnf.gz
+satcomp13/ACG-10-10p0.cnf.gz
+satcomp13/ACG-15-5p1.cnf.gz
+satcomp13/AProVE07-01.cnf.gz
+satcomp13/AProVE07-03.cnf.gz
+satcomp13/AProVE07-21.cnf.gz
+satcomp13/AProVE11-02.cnf.gz
+satcomp13/AProVE11-06.cnf.gz
+satcomp13/AProVE11-07.cnf.gz
+satcomp13/AProVE11-09.cnf.gz
+satcomp13/AProVE11-10.cnf.gz
+satcomp13/AProVE11-11.cnf.gz
+satcomp13/AProVE11-12.cnf.gz
+satcomp13/AProVE11-13.cnf.gz
+satcomp13/AProVE11-15.cnf.gz
+satcomp13/AProVE11-16.cnf.gz
+satcomp13/E00N23.cnf.gz
+satcomp13/E00X23.cnf.gz
+satcomp13/E02F17.cnf.gz
+satcomp13/E02F20.cnf.gz
+satcomp13/E02F22.cnf.gz
+satcomp13/E03N17.cnf.gz
+satcomp13/E04F19.cnf.gz
+satcomp13/E04F20.cnf.gz
+satcomp13/E04N18.cnf.gz
+satcomp13/E05F18.cnf.gz
+satcomp13/E05F20.cnf.gz
+satcomp13/E05X15.cnf.gz
+satcomp13/E07N15.cnf.gz
+satcomp13/E15N15.cnf.gz
+satcomp13/IBM_FV_2004_rule_batch_30_SAT_dat.k55.cnf.gz
+satcomp13/IBM_FV_2004_rule_batch_30_SAT_dat.k80.cnf.gz
+satcomp13/SAT_dat.k100.cnf.gz
+satcomp13/SAT_dat.k20.cnf.gz
+satcomp13/SAT_dat.k45.cnf.gz
+satcomp13/SAT_dat.k80.cnf.gz
+satcomp13/SAT_dat.k80_04.cnf.gz
+satcomp13/SAT_dat.k85.cnf.gz
+satcomp13/UCG-15-10p0.cnf.gz
+satcomp13/UCG-15-10p1.cnf.gz
+satcomp13/UCG-15-5p0.cnf.gz
+satcomp13/UCG-20-5p1.cnf.gz
+satcomp13/UR-10-10p1.cnf.gz
+satcomp13/UR-20-10p0.cnf.gz
+satcomp13/UR-20-10p1.cnf.gz
+satcomp13/UTI-10-5t1.cnf.gz
+satcomp13/UTI-20-10p0.cnf.gz
+satcomp13/UTI-20-10p1.cnf.gz
+satcomp13/UTI-20-10t0.cnf.gz
+satcomp13/UTI-20-10t1.cnf.gz
+satcomp13/aaai10-planning-ipc5-TPP-21-step11.cnf.gz
+satcomp13/aaai10-planning-ipc5-TPP-30-step11.cnf.gz
+satcomp13/aaai10-planning-ipc5-pathways-13-step17.cnf.gz
+satcomp13/aaai10-planning-ipc5-pathways-17-step20.cnf.gz
+satcomp13/aaai10-planning-ipc5-pathways-17-step21.cnf.gz
+satcomp13/aaai10-planning-ipc5-pipesworld-12-step15.cnf.gz
+satcomp13/aaai10-planning-ipc5-pipesworld-12-step16.cnf.gz
+satcomp13/aaai10-planning-ipc5-pipesworld-18-step15.cnf.gz
+satcomp13/aaai10-planning-ipc5-pipesworld-18-step16.cnf.gz
+satcomp13/aaai10-planning-ipc5-pipesworld-27-step13.cnf.gz
+satcomp13/aaai10-planning-ipc5-pipesworld-27-step14.cnf.gz
+satcomp13/aaai10-planning-ipc5-rovers-18-step11.cnf.gz
+satcomp13/aaai10-planning-ipc5-rovers-18-step12.cnf.gz
+satcomp13/abb313GPIA-9-c.used-as.sat04-317.cnf.gz
+satcomp13/abb313GPIA-9-tr.used-as.sat04-321.cnf.gz
+satcomp13/aes_128_10_keyfind_1.cnf.gz
+satcomp13/aes_128_1_keyfind_1.cnf.gz
+satcomp13/aes_128_2_keyfind_1.cnf.gz
+satcomp13/aes_128_3_keyfind_1.cnf.gz
+satcomp13/aes_32_1_keyfind_1.cnf.gz
+satcomp13/aes_32_2_keyfind_1.cnf.gz
+satcomp13/aes_32_3_keyfind_1.cnf.gz
+satcomp13/aes_32_4_keyfind_1.cnf.gz
+satcomp13/aes_32_5_keyfind_1.cnf.gz
+satcomp13/aes_64_1_keyfind_1.cnf.gz
+satcomp13/aes_64_2_keyfind_1.cnf.gz
+satcomp13/aes_64_3_keyfind_1.cnf.gz
+satcomp13/aes_64_4_keyfind_1.cnf.gz
+satcomp13/all.used-as.sat04-986.cnf.gz
+satcomp13/am_7_7.shuffled-as.sat03-363.cnf.gz
+satcomp13/bart17.shuffled.cnf.gz
+satcomp13/bc57-sensors-1-k303-unsat.shuffled-as.sat03-406.cnf.gz
+satcomp13/blocks-4-ipc5-h21-unknown.cnf.gz
+satcomp13/blocks-blocks-36-0.120-NOTKNOWN.cnf.gz
+satcomp13/blocks-blocks-36-0.160-NOTKNOWN.cnf.gz
+satcomp13/blocks-blocks-36-0.170-NOTKNOWN.cnf.gz
+satcomp13/blocks-blocks-36-0.180-SAT.cnf.gz
+satcomp13/blocks-blocks-37-1.120-NOTKNOWN.cnf.gz
+satcomp13/blocks-blocks-37-1.130-NOTKNOWN.cnf.gz
+satcomp13/blocks-blocks-37-1.150-SAT.cnf.gz
+satcomp13/c10idw_i.cnf.gz
+satcomp13/c6288mul.miter.shuffled-as.sat03-346.cnf.gz
+satcomp13/clauses-8.renamed-as.sat05-1964.cnf.gz
+satcomp13/comb1.shuffled.cnf.gz
+satcomp13/countbitsarray04_32.cnf.gz
+satcomp13/countbitsrotate032.cnf.gz
+satcomp13/countbitssrl064.cnf.gz
+satcomp13/countbitswegner128.cnf.gz
+satcomp13/cube-11-h14-sat.cnf.gz
+satcomp13/dated-10-17-u.cnf.gz
+satcomp13/dated-5-11-u.cnf.gz
+satcomp13/dated-5-13-u.cnf.gz
+satcomp13/dekker.used-as.sat04-989.cnf.gz
+satcomp13/dme-03-1-k247-unsat.shuffled-as.sat03-407.cnf.gz
+satcomp13/dp04s04.shuffled.cnf.gz
+satcomp13/dp04u03.shuffled.cnf.gz
+satcomp13/dp10s10.shuffled.cnf.gz
+satcomp13/driverlog1_ks99i.renamed-as.sat05-3951.cnf.gz
+satcomp13/driverlog3_v01a.renamed-as.sat05-3963.cnf.gz
+satcomp13/dspam_dump_vc949.cnf.gz
+satcomp13/eq.atree.braun.11.unsat.cnf.gz
+satcomp13/eq.atree.braun.12.unsat.cnf.gz
+satcomp13/ferry5_ks99i.renamed-as.sat05-3994.cnf.gz
+satcomp13/grid-strips-grid-y-3.035-NOTKNOWN.cnf.gz
+satcomp13/grid-strips-grid-y-4.025-NOTKNOWN.cnf.gz
+satcomp13/gripper13u.shuffled-as.sat03-395.cnf.gz
+satcomp13/gss-14-s100.cnf.gz
+satcomp13/gss-16-s100.cnf.gz
+satcomp13/gss-19-s100.cnf.gz
+satcomp13/gss-21-s100.cnf.gz
+satcomp13/gss-22-s100.cnf.gz
+satcomp13/gss-27-s100.cnf.gz
+satcomp13/gus-md5-11.cnf.gz
+satcomp13/gus-md5-12.cnf.gz
+satcomp13/hard-18-U-10652.cnf.gz
+satcomp13/hard-25-U-7061.cnf.gz
+satcomp13/hard-6-U-7061.cnf.gz
+satcomp13/homer14.shuffled.cnf.gz
+satcomp13/homer16.shuffled.cnf.gz
+satcomp13/homer17.shuffled.cnf.gz
+satcomp13/hsat_vc12062.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k45-bc57sensorsp1-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k45-bobsm5378d2-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k45-bobsmhdlc2-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k45-pdtpmsgoodbakery-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k45-pdtpmspalu-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k45-pdtswvqis8x8p2-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k45-pdtswvrod6x8p1-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k45-pdtswvtms14x8p1-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k45-pdtviseisenberg1-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k45-pdtvisns3p02-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k45-pdtvissoap1-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k50-bc57sensorsp2-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k50-bc57sensorsp3-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k50-bjrb07amba2andenv-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k50-eijkbs6669-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k50-nusmvreactorp4-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k50-pdtpmsns2-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k50-pdtswvsam6x8p3-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k50-pdtviseisenberg2-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k50-pdtvisns2p3-tseitin.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k50-pdtvisns3p00-tseitin.cnf.gz
+satcomp13/ibm-2002-21r-k95.cnf.gz
+satcomp13/ibm-2002-30r-k85.cnf.gz
+satcomp13/ibm-2004-01-k90.cnf.gz
+satcomp13/ibm-2004-23-k100.cnf.gz
+satcomp13/k2fix_gr_rcs_w8.shuffled.cnf.gz
+satcomp13/k2fix_gr_rcs_w9.shuffled.cnf.gz
+satcomp13/k2mul.miter.shuffled-as.sat03-355.cnf.gz
+satcomp13/korf-15.cnf.gz
+satcomp13/korf-17.cnf.gz
+satcomp13/korf-18.cnf.gz
+satcomp13/li-exam-61.shuffled-as.sat03-366.cnf.gz
+satcomp13/li-test4-100.shuffled-as.sat03-370.cnf.gz
+satcomp13/manol-pipe-c10nidw.cnf.gz
+satcomp13/manol-pipe-c6bidw_i.cnf.gz
+satcomp13/manol-pipe-f7idw.cnf.gz
+satcomp13/manol-pipe-f7nidw.cnf.gz
+satcomp13/maxor128.cnf.gz
+satcomp13/maxxor032.cnf.gz
+satcomp13/maxxor064.cnf.gz
+satcomp13/maxxor128.cnf.gz
+satcomp13/maxxororand064.cnf.gz
+satcomp13/md5_48_3.cnf.gz
+satcomp13/minandmaxor016.cnf.gz
+satcomp13/minandmaxor128.cnf.gz
+satcomp13/minxorminand128.cnf.gz
+satcomp13/mizh-sha0-36-2.cnf.gz
+satcomp13/mizh-sha0-36-4.cnf.gz
+satcomp13/mulhs016.cnf.gz
+satcomp13/myciel6-tr.used-as.sat04-320.cnf.gz
+satcomp13/ndhf_xits_19_UNKNOWN.cnf.gz
+satcomp13/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_1.025-NOTKNOWN.cnf.gz
+satcomp13/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_1.035-NOTKNOWN.cnf.gz
+satcomp13/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_1.045-NOTKNOWN.cnf.gz
+satcomp13/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_3.025-NOTKNOWN.cnf.gz
+satcomp13/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_3.035-NOTKNOWN.cnf.gz
+satcomp13/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_3.045-NOTKNOWN.cnf.gz
+satcomp13/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_3.085-SAT.cnf.gz
+satcomp13/partial-10-13-s.cnf.gz
+satcomp13/partial-10-15-s.cnf.gz
+satcomp13/partial-10-17-s.cnf.gz
+satcomp13/partial-5-11-u.cnf.gz
+satcomp13/post-c32s-gcdm16-23.cnf.gz
+satcomp13/post-cbmc-zfcp-2.8-u2-noholes.cnf.gz
+satcomp13/q_query_3_L150_coli.sat.cnf.gz
+satcomp13/q_query_3_L70_coli.sat.cnf.gz
+satcomp13/q_query_3_l46_lambda.cnf.gz
+satcomp13/rand_net60-25-10.shuffled.cnf.gz
+satcomp13/rand_net60-30-1.shuffled.cnf.gz
+satcomp13/rand_net60-40-10.shuffled.cnf.gz
+satcomp13/rand_net70-60-10.shuffled.cnf.gz
+satcomp13/rbcl_xits_08_UNSAT.cnf.gz
+satcomp13/rbcl_xits_09_UNKNOWN.cnf.gz
+satcomp13/rbcl_xits_15_SAT.cnf.gz
+satcomp13/rbcl_xits_18_SAT.cnf.gz
+satcomp13/rovers1_ks99i.renamed-as.sat05-3971.cnf.gz
+satcomp13/rpoc_xits_09_UNSAT.cnf.gz
+satcomp13/sha0_36_5.cnf.gz
+satcomp13/slp-synthesis-aes-bottom12.cnf.gz
+satcomp13/slp-synthesis-aes-bottom13.cnf.gz
+satcomp13/slp-synthesis-aes-bottom14.cnf.gz
+satcomp13/slp-synthesis-aes-bottom15.cnf.gz
+satcomp13/slp-synthesis-aes-bottom16.cnf.gz
+satcomp13/slp-synthesis-aes-bottom17.cnf.gz
+satcomp13/slp-synthesis-aes-bottom18.cnf.gz
+satcomp13/slp-synthesis-aes-bottom19.cnf.gz
+satcomp13/slp-synthesis-aes-bottom20.cnf.gz
+satcomp13/slp-synthesis-aes-bottom21.cnf.gz
+satcomp13/slp-synthesis-aes-bottom22.cnf.gz
+satcomp13/slp-synthesis-aes-bottom23.cnf.gz
+satcomp13/slp-synthesis-aes-bottom24.cnf.gz
+satcomp13/slp-synthesis-aes-bottom25.cnf.gz
+satcomp13/slp-synthesis-aes-bottom26.cnf.gz
+satcomp13/slp-synthesis-aes-top21.cnf.gz
+satcomp13/slp-synthesis-aes-top22.cnf.gz
+satcomp13/slp-synthesis-aes-top23.cnf.gz
+satcomp13/slp-synthesis-aes-top24.cnf.gz
+satcomp13/slp-synthesis-aes-top25.cnf.gz
+satcomp13/slp-synthesis-aes-top26.cnf.gz
+satcomp13/slp-synthesis-aes-top28.cnf.gz
+satcomp13/slp-synthesis-aes-top29.cnf.gz
+satcomp13/slp-synthesis-aes-top30.cnf.gz
+satcomp13/smtlib-qfbv-aigs-VS3-benchmark-S2-tseitin.cnf.gz
+satcomp13/smtlib-qfbv-aigs-bin_libmsrpc_vc1225336-tseitin.cnf.gz
+satcomp13/smtlib-qfbv-aigs-bin_libsmbclient_vc1228502-tseitin.cnf.gz
+satcomp13/smtlib-qfbv-aigs-bin_libsmbsharemodes_vc5759-tseitin.cnf.gz
+satcomp13/smtlib-qfbv-aigs-countbits128-tseitin.cnf.gz
+satcomp13/smtlib-qfbv-aigs-ext_con_032_008_0256-tseitin.cnf.gz
+satcomp13/smtlib-qfbv-aigs-lfsr_004_127_112-tseitin.cnf.gz
+satcomp13/smtlib-qfbv-aigs-lfsr_008_063_080-tseitin.cnf.gz
+satcomp13/smtlib-qfbv-aigs-lfsr_008_079_112-tseitin.cnf.gz
+satcomp13/smtlib-qfbv-aigs-nlzbe256-tseitin.cnf.gz
+satcomp13/smtlib-qfbv-aigs-rfunit_flat-64-tseitin.cnf.gz
+satcomp13/smtlib-qfbv-aigs-servers_slapd_a_vc149789-tseitin.cnf.gz
+satcomp13/smtlib-qfbv-aigs-src_wget_vc18517-tseitin.cnf.gz
+satcomp13/smulo064.cnf.gz
+satcomp13/sokoban-sequential-p145-microban-sequential.030-NOTKNOWN.cnf.gz
+satcomp13/sokoban-sequential-p145-microban-sequential.040-NOTKNOWN.cnf.gz
+satcomp13/sokoban-sequential-p145-microban-sequential.050-NOTKNOWN.cnf.gz
+satcomp13/sokoban-sequential-p145-microban-sequential.060-NOTKNOWN.cnf.gz
+satcomp13/sokoban-sequential-p145-microban-sequential.070-NOTKNOWN.cnf.gz
+satcomp13/sokoban-sequential-p145-microban-sequential.080-SAT.cnf.gz
+satcomp13/sortnet-7-ipc5-h15-unsat.cnf.gz
+satcomp13/sortnet-8-ipc5-h19-sat.cnf.gz
+satcomp13/total-10-17-u.cnf.gz
+satcomp13/traffic_3_uc_sat.cnf.gz
+satcomp13/traffic_3b_unknown.cnf.gz
+satcomp13/traffic_b_unsat.cnf.gz
+satcomp13/traffic_f_unknown.cnf.gz
+satcomp13/traffic_fb_unknown.cnf.gz
+satcomp13/traffic_kkb_unknown.cnf.gz
+satcomp13/traffic_pcb_unknown.cnf.gz
+satcomp13/traffic_r_sat.cnf.gz
+satcomp13/traffic_r_uc_sat.cnf.gz
+satcomp13/transport-transport-city-sequential-25nodes-1000size-3degree-100mindistance-3trucks-10packages-2008seed.060-SAT.cnf.gz
+satcomp13/transport-transport-city-sequential-35nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.030-NOTKNOWN.cnf.gz
+satcomp13/transport-transport-city-sequential-35nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.040-NOTKNOWN.cnf.gz
+satcomp13/transport-transport-city-sequential-35nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.050-SAT.cnf.gz
+satcomp13/transport-transport-three-cities-sequential-14nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.020-NOTKNOWN.cnf.gz
+satcomp13/transport-transport-three-cities-sequential-14nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.030-NOTKNOWN.cnf.gz
+satcomp13/transport-transport-three-cities-sequential-14nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.040-NOTKNOWN.cnf.gz
+satcomp13/transport-transport-two-cities-sequential-15nodes-1000size-3degree-100mindistance-3trucks-10packages-2008seed.040-SAT.cnf.gz
+satcomp13/valves-gates-1-k617-unsat.shuffled-as.sat03-412.cnf.gz
+satcomp13/vda_gr_rcs_w9.shuffled.cnf.gz
+satcomp13/velev-npe-1.0-9dlx-b71.cnf.gz
+satcomp13/velev-pipe-o-uns-1.0-7.cnf.gz
+satcomp13/velev-pipe-o-uns-1.1-6.cnf.gz
+satcomp13/velev-pipe-sat-1.0-b9.cnf.gz
+satcomp13/velev-vliw-uns-4.0-9-i1.cnf.gz
+satcomp13/vmpc_25.renamed-as.sat05-1913.cnf.gz
+satcomp13/vmpc_29.renamed-as.sat05-1916.cnf.gz
+satcomp13/vmpc_32.renamed-as.sat05-1919.cnf.gz
+satcomp13/vmpc_34.renamed-as.sat05-1926.cnf.gz
+satcomp13/vmpc_35.renamed-as.sat05-1921.cnf.gz
+satcomp13/vmpc_36.renamed-as.sat05-1922.cnf.gz
+satcomp13/x1mul.miter.shuffled-as.sat03-359.cnf.gz
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp14_updated b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp14_updated
new file mode 100644
index 000000000..8e0553b8e
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp14_updated
@@ -0,0 +1,300 @@
+satcomp14/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_3.025-NOTKNOWN.cnf.gz
+satcomp14/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_1.025-NOTKNOWN.cnf.gz
+satcomp14/slp-synthesis-aes-top29.cnf.gz
+satcomp14/gss-25-s100.cnf.gz
+satcomp14/aes_32_2_keyfind_1.cnf.gz
+satcomp14/aes_24_4_keyfind_4.cnf.gz
+satcomp14/korf-18.cnf.gz
+satcomp14/smtlib-qfbv-aigs-ext_con_032_008_0256-tseitin.cnf.gz
+satcomp14/slp-synthesis-aes-top28.cnf.gz
+satcomp14/gss-22-s100.cnf.gz
+satcomp14/partial-10-17-s.cnf.gz
+satcomp14/gss-24-s100.cnf.gz
+satcomp14/gss-23-s100.cnf.gz
+satcomp14/hitag2-7-60-0-0xe8fa35372ed37e2-80.cnf.gz
+satcomp14/hitag2-8-60-0-0xfba1a41b5dfd7f7-52.cnf.gz
+satcomp14/hitag2-8-60-0-0xdcdbc8bf368ee73-37.cnf.gz
+satcomp14/hitag2-8-60-0-0x1eb82244d7f1c3c-47.cnf.gz
+satcomp14/hitag2-10-60-0-0xfee9637399d85a2-78.cnf.gz
+satcomp14/hitag2-10-60-0-0xe6754daf48162bf-46.cnf.gz
+satcomp14/hitag2-10-60-0-0xe14721bd199894a-99.cnf.gz
+satcomp14/hitag2-10-60-0-0x8edc44db7837bbf-65.cnf.gz
+satcomp14/hitag2-10-60-0-0x0ffdbe60727f161-57.cnf.gz
+satcomp14/ctl_4291_567_5_unsat_pre.cnf.gz
+satcomp14/6s151.cnf.gz
+satcomp14/6s137.cnf.gz
+satcomp14/6s123.cnf.gz
+satcomp14/SAT_dat.k95-24_1_rule_3.cnf.gz
+satcomp14/SAT_dat.k95-24_1_rule_2.cnf.gz
+satcomp14/SAT_dat.k95-24_1_rule_1.cnf.gz
+satcomp14/SAT_dat.k90.debugged.cnf.gz
+satcomp14/SAT_dat.k85-24_1_rule_1.cnf.gz
+satcomp14/SAT_dat.k100-24_1_rule_3.cnf.gz
+satcomp14/SAT_dat.k100-24_1_rule_2.cnf.gz
+satcomp14/SAT_dat.k100-24_1_rule_1.cnf.gz
+satcomp14/6s126-opt.cnf.gz
+satcomp14/15pipe_q0_k.cnf.gz
+satcomp14/010-23-80.cnf.gz
+satcomp14/010-22-160.cnf.gz
+satcomp14/010-22-144.cnf.gz
+satcomp14/009-23-64.cnf.gz
+satcomp14/006-23-96.cnf.gz
+satcomp14/006-23-80.cnf.gz
+satcomp14/006-22-160.cnf.gz
+satcomp14/006-22-144.cnf.gz
+satcomp14/005-22-160.cnf.gz
+satcomp14/004-22-160.cnf.gz
+satcomp14/004-22-144.cnf.gz
+satcomp14/003-23-80.cnf.gz
+satcomp14/002-23-96.cnf.gz
+satcomp14/stable-400-0.1-5-9876543214005.cnf.gz
+satcomp14/stable-400-0.1-4-9876543214004.cnf.gz
+satcomp14/stable-400-0.1-2-9876543214002.cnf.gz
+satcomp14/stable-400-0.1-11-98765432140011.cnf.gz
+satcomp14/atco_enc1_opt2_10_16.cnf.gz
+satcomp14/MD5-32-5.cnf.gz
+satcomp14/MD5-32-4.cnf.gz
+satcomp14/MD5-32-3.cnf.gz
+satcomp14/MD5-32-2.cnf.gz
+satcomp14/MD5-32-1.cnf.gz
+satcomp14/MD5-31-5.cnf.gz
+satcomp14/MD5-31-4.cnf.gz
+satcomp14/MD5-30-5.cnf.gz
+satcomp14/MD5-30-4.cnf.gz
+satcomp14/MD5-30-2.cnf.gz
+satcomp14/MD5-30-1.cnf.gz
+satcomp14/MD5-29-5.cnf.gz
+satcomp14/MD5-29-4.cnf.gz
+satcomp14/MD5-29-3.cnf.gz
+satcomp14/MD5-29-2.cnf.gz
+satcomp14/MD5-28-5.cnf.gz
+satcomp14/MD5-28-4.cnf.gz
+satcomp14/MD5-28-3.cnf.gz
+satcomp14/MD5-28-2.cnf.gz
+satcomp14/MD5-28-1.cnf.gz
+satcomp14/dimacs.cnf.gz
+satcomp14/SAT_dat.k35-31_2_rule_2.cnf.gz
+satcomp14/aes_32_2_keyfind_3.cnf.gz
+satcomp14/SAT_dat.k85-24_1_rule_2.cnf.gz
+satcomp14/SAT_dat.k85-24_1_rule_3.cnf.gz
+satcomp14/rbcl_xits_08_UNSAT.cnf.gz
+satcomp14/ctl_3791_556_unsat_pre.cnf.gz
+satcomp14/UR-20-10p1.cnf.gz
+satcomp14/SAT_dat.k80-24_1_rule_2.cnf.gz
+satcomp14/11pipe_11_ooo.cnf.gz
+satcomp14/dated-5-13-u.cnf.gz
+satcomp14/AProVE07-01.cnf.gz
+satcomp14/SAT_dat.k80-24_1_rule_1.cnf.gz
+satcomp14/hwmcc10-timeframe-expansion-k45-pdtvisns3p02-tseitin.cnf.gz
+satcomp14/ACG-20-10p1.cnf.gz
+satcomp14/minandmaxor128.cnf.gz
+satcomp14/UR-20-10p0.cnf.gz
+satcomp14/IBM_FV_2004_rule_batch_1_31_1_SAT_dat.k40.debugged.cnf.gz
+satcomp14/SAT_dat.k75-24_1_rule_3.cnf.gz
+satcomp14/SAT_dat.k70-24_1_rule_1.cnf.gz
+satcomp14/SAT_dat.k30-30_rule.cnf.gz
+satcomp14/aaai10-planning-ipc5-pathways-17-step21.cnf.gz
+satcomp14/vmpc_33.cnf.gz
+satcomp14/SAT_dat.k70-24_1_rule_3.cnf.gz
+satcomp14/aes_24_4_keyfind_5.cnf.gz
+satcomp14/atco_enc3_opt2_18_44.cnf.gz
+satcomp14/dated-10-17-u.cnf.gz
+satcomp14/aes_32_3_keyfind_1.cnf.gz
+satcomp14/atco_enc1_opt2_20_12.cnf.gz
+satcomp14/reg_s_2_unknown.cnf.gz
+satcomp14/9dlx_vliw_at_b_iq9.cnf.gz
+satcomp14/hwmcc10-timeframe-expansion-k50-pdtvisns3p00-tseitin.cnf.gz
+satcomp14/UCG-20-10p1.cnf.gz
+satcomp14/UCG-20-10p0.cnf.gz
+satcomp14/atco_enc3_opt2_10_12.cnf.gz
+satcomp14/atco_enc3_opt2_05_21.cnf.gz
+satcomp14/9dlx_vliw_at_b_iq8.used-as.sat04-718.cnf.gz
+satcomp14/11pipe_k.cnf.gz
+satcomp14/gss-20-s100.cnf.gz
+satcomp14/002-80-12.cnf.gz
+satcomp14/atco_enc2_opt2_10_21.cnf.gz
+satcomp14/atco_enc3_opt2_10_14.cnf.gz
+satcomp14/UTI-20-10p1.cnf.gz
+satcomp14/transport-transport-city-sequential-35nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.040-NOTKNOWN.cnf.gz
+satcomp14/velev-vliw-uns-4.0-9-i1.cnf.gz
+satcomp14/010-80-12.cnf.gz
+satcomp14/001-80-12.cnf.gz
+satcomp14/007-80-12.cnf.gz
+satcomp14/008-80-12.cnf.gz
+satcomp14/009-80-8.cnf.gz
+satcomp14/ACG-20-5p1.cnf.gz
+satcomp14/atco_enc3_opt1_13_48.cnf.gz
+satcomp14/stable-400-0.1-12-98765432140012.cnf.gz
+satcomp14/004-80-8.cnf.gz
+satcomp14/14pipe_q0_k.cnf.gz
+satcomp14/ACG-20-5p0.cnf.gz
+satcomp14/002-80-8.cnf.gz
+satcomp14/003-80-8.cnf.gz
+satcomp14/9dlx_vliw_at_b_iq7.cnf.gz
+satcomp14/aaai10-planning-ipc5-TPP-21-step11.cnf.gz
+satcomp14/atco_enc1_opt1_10_15.cnf.gz
+satcomp14/AProVE09-06.cnf.gz
+satcomp14/008-80-8.cnf.gz
+satcomp14/ACG-15-10p1.cnf.gz
+satcomp14/atco_enc2_opt2_05_9.cnf.gz
+satcomp14/bob12m02-opt.cnf.gz
+satcomp14/007-80-8.cnf.gz
+satcomp14/blocks-blocks-36-0.120-NOTKNOWN.cnf.gz
+satcomp14/atco_enc3_opt1_04_50.cnf.gz
+satcomp14/13pipe_q0_k.cnf.gz
+satcomp14/UR-15-10p0.cnf.gz
+satcomp14/gss-19-s100.cnf.gz
+satcomp14/AProVE07-27.cnf.gz
+satcomp14/bjrb07amba10andenv.cnf.gz
+satcomp14/partial-10-11-s.cnf.gz
+satcomp14/korf-17.cnf.gz
+satcomp14/vmpc_32.renamed-as.sat05-1919.cnf.gz
+satcomp14/atco_enc2_opt1_20_11.cnf.gz
+satcomp14/ACG-15-10p0.cnf.gz
+satcomp14/UR-15-10p1.cnf.gz
+satcomp14/atco_enc1_opt1_10_21.cnf.gz
+satcomp14/UCG-15-10p0.cnf.gz
+satcomp14/atco_enc2_opt1_10_21.cnf.gz
+satcomp14/UCG-20-5p0.cnf.gz
+satcomp14/blocks-blocks-37-1.130-NOTKNOWN.cnf.gz
+satcomp14/UCG-15-10p1.cnf.gz
+satcomp14/9dlx_vliw_at_b_iq6.used-as.sat04-347.cnf.gz
+satcomp14/005-80-12.cnf.gz
+satcomp14/atco_enc1_opt2_10_14.cnf.gz
+satcomp14/aaai10-planning-ipc5-pathways-13-step17.cnf.gz
+satcomp14/UTI-20-10p0.cnf.gz
+satcomp14/atco_enc1_opt2_10_15.cnf.gz
+satcomp14/atco_enc2_opt2_20_11.cnf.gz
+satcomp14/006-80-4.cnf.gz
+satcomp14/bob12m02.cnf.gz
+satcomp14/009-80-4.cnf.gz
+satcomp14/6s16-opt.cnf.gz
+satcomp14/countbitssrl032.cnf.gz
+satcomp14/stable-400-0.1-7-9876543214007.cnf.gz
+satcomp14/E02F22.cnf.gz
+satcomp14/12pipe_q0_k.cnf.gz
+satcomp14/008-80-4.cnf.gz
+satcomp14/atco_enc3_opt1_03_53.cnf.gz
+satcomp14/hwmcc10-timeframe-expansion-k50-pdtpmsns2-tseitin.cnf.gz
+satcomp14/6s12.cnf.gz
+satcomp14/bob12s02.cnf.gz
+satcomp14/6s16.cnf.gz
+satcomp14/dated-10-13-u.cnf.gz
+satcomp14/6s184.cnf.gz
+satcomp14/UR-20-5p0.cnf.gz
+satcomp14/6s131-opt.cnf.gz
+satcomp14/6s17-opt.cnf.gz
+satcomp14/6s9.cnf.gz
+satcomp14/6s10.cnf.gz
+satcomp14/6s11-opt.cnf.gz
+satcomp14/6s13-opt.cnf.gz
+satcomp14/UTI-20-5p1.cnf.gz
+satcomp14/bob12m09-opt.cnf.gz
+satcomp14/aaai10-planning-ipc5-pathways-17-step20.cnf.gz
+satcomp14/velev-vliw-uns-2.0-uq5.cnf.gz
+satcomp14/6s130-opt.cnf.gz
+satcomp14/stable-300-0.1-20-98765432130020.cnf.gz
+satcomp14/atco_enc1_opt2_10_12.cnf.gz
+satcomp14/dated-10-11-u.cnf.gz
+satcomp14/grieu-vmpc-31.cnf.gz
+satcomp14/11pipe_q0_k.cnf.gz
+satcomp14/6s133.cnf.gz
+satcomp14/AProVE07-08.cnf.gz
+satcomp14/UCG-20-5p1.cnf.gz
+satcomp14/10pipe_q0_k.cnf.gz
+satcomp14/esawn_uw3.debugged.cnf.gz
+satcomp14/grid-strips-grid-y-3.055-NOTKNOWN.cnf.gz
+satcomp14/atco_enc2_opt2_05_4.cnf.gz
+satcomp14/minxor128.cnf.gz
+satcomp14/vmpc_29.cnf.gz
+satcomp14/002-80-4.cnf.gz
+satcomp14/bob12s09-opt.cnf.gz
+satcomp14/manol-pipe-c10nidw.cnf.gz
+satcomp14/partial-5-17-s.cnf.gz
+satcomp14/total-10-13-u.cnf.gz
+satcomp14/atco_enc1_opt1_18_18.cnf.gz
+satcomp14/minxorminand064.cnf.gz
+satcomp14/manol-pipe-g10bid_i.cnf.gz
+satcomp14/grid-strips-grid-y-3.065-SAT.cnf.gz
+satcomp14/9vliw_m_9stages_iq3_C1_bug1.cnf.gz
+satcomp14/transport-transport-city-sequential-25nodes-1000size-3degree-100mindistance-3trucks-10packages-2008seed.050-NOTKNOWN.cnf.gz
+satcomp14/9dlx_vliw_at_b_iq4.cnf.gz
+satcomp14/atco_enc1_opt1_04_32.cnf.gz
+satcomp14/blocks-blocks-36-0.130-NOTKNOWN.cnf.gz
+satcomp14/q_query_3_l48_lambda.cnf.gz
+satcomp14/manol-pipe-c10nid_i.cnf.gz
+satcomp14/grid-strips-grid-y-3.035-NOTKNOWN.cnf.gz
+satcomp14/atco_enc1_opt2_05_4.cnf.gz
+satcomp14/q_query_3_l46_lambda.cnf.gz
+satcomp14/q_query_3_l45_lambda.cnf.gz
+satcomp14/gss-18-s100.cnf.gz
+satcomp14/hwmcc10-timeframe-expansion-k45-pdtpmsgoodbakery-tseitin.cnf.gz
+satcomp14/6s169-opt.cnf.gz
+satcomp14/pb_300_10_lb_08.cnf.gz
+satcomp14/8pipe_k.cnf.gz
+satcomp14/9vliw_m_9stages_iq3_C1_bug9.cnf.gz
+satcomp14/q_query_3_L200_coli.sat.cnf.gz
+satcomp14/AProVE07-03.cnf.gz
+satcomp14/velev-vliw-uns-4.0-9.cnf.gz
+satcomp14/beempgsol5b1.cnf.gz
+satcomp14/beempgsol2b1.cnf.gz
+satcomp14/post-cbmc-aes-ee-r2-noholes.cnf.gz
+satcomp14/E02F20.cnf.gz
+satcomp14/post-c32s-ss-8.cnf.gz
+satcomp14/9vliw_m_9stages_iq3_C1_bug8.cnf.gz
+satcomp14/manol-pipe-c8nidw.cnf.gz
+satcomp14/atco_enc1_opt1_03_56.cnf.gz
+satcomp14/post-cbmc-aes-d-r2.cnf.gz
+satcomp14/post-cbmc-aes-d-r2-noholes.cnf.gz
+satcomp14/c10bi_i.cnf.gz
+satcomp14/q_query_3_L150_coli.sat.cnf.gz
+satcomp14/bob12m04.cnf.gz
+satcomp14/9dlx_vliw_at_b_iq3.cnf.gz
+satcomp14/atco_enc2_opt1_15_100.cnf.gz
+satcomp14/partial-5-15-s.cnf.gz
+satcomp14/9vliw_m_9stages_iq3_C1_bug7.cnf.gz
+satcomp14/9vliw_m_9stages_iq3_C1_bug10.cnf.gz
+satcomp14/9vliw_m_9stages_iq3_C1_bug4.cnf.gz
+satcomp14/9vliw_m_9stages_iq3_C1_bug3.cnf.gz
+satcomp14/6s167-opt.cnf.gz
+satcomp14/zfcp-2.8-u2-nh.cnf.gz
+satcomp14/6s153.cnf.gz
+satcomp14/post-cbmc-zfcp-2.8-u2.cnf.gz
+satcomp14/7pipe_k.cnf.gz
+satcomp14/pb_300_10_lb_07.cnf.gz
+satcomp14/atco_enc1_opt1_15_240.cnf.gz
+satcomp14/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_3.085-SAT.cnf.gz
+satcomp14/openstacks-p30_3.085-SAT.cnf.gz
+satcomp14/atco_enc1_opt1_05_21.cnf.gz
+satcomp14/q_query_3_L100_coli.sat.cnf.gz
+satcomp14/transport-transport-city-sequential-25nodes-1000size-3degree-100mindistance-3trucks-10packages-2008seed.040-NOTKNOWN.cnf.gz
+satcomp14/6s168-opt.cnf.gz
+satcomp14/MD5-27-4.cnf.gz
+satcomp14/maxxor032.cnf.gz
+satcomp14/q_query_3_L80_coli.sat.cnf.gz
+satcomp14/aaai10-planning-ipc5-TPP-30-step11.cnf.gz
+satcomp14/q_query_3_L90_coli.sat.cnf.gz
+satcomp14/k2fix_gr_rcs_w9.shuffled.cnf.gz
+satcomp14/transport-transport-city-sequential-25nodes-1000size-3degree-100mindistance-3trucks-10packages-2008seed.030-NOTKNOWN.cnf.gz
+satcomp14/atco_enc2_opt1_05_21.cnf.gz
+satcomp14/transport-transport-city-sequential-25nodes-1000size-3degree-100mindistance-3trucks-10packages-2008seed.020-NOTKNOWN.cnf.gz
+satcomp14/manol-pipe-c10nidw_s.cnf.gz
+satcomp14/complete-500-0.1-17-98765432150017.cnf.gz
+satcomp14/complete-500-0.1-8-9876543215008.cnf.gz
+satcomp14/complete-500-0.1-7-9876543215007.cnf.gz
+satcomp14/complete-500-0.1-15-98765432150015.cnf.gz
+satcomp14/complete-500-0.1-1-9876543215001.cnf.gz
+satcomp14/6s165-nonopt.cnf.gz
+satcomp14/rbcl_xits_14_SAT.cnf.gz
+satcomp14/aes_64_1_keyfind_1.cnf.gz
+satcomp14/smtlib-qfbv-aigs-lfsr_004_127_112-tseitin.cnf.gz
+satcomp14/complete-400-0.1-3-9876543214003.cnf.gz
+satcomp14/complete-400-0.1-12-98765432140012.cnf.gz
+satcomp14/complete-400-0.1-16-98765432140016.cnf.gz
+satcomp14/rpoc_xits_15_SAT.cnf.gz
+satcomp14/complete-400-0.1-7-9876543214007.cnf.gz
+satcomp14/itox_vc1130.cnf.gz
+satcomp14/complete-300-0.1-4-9876543213004.cnf.gz
+satcomp14/complete-300-0.1-8-9876543213008.cnf.gz
+satcomp14/complete-300-0.1-18-98765432130018.cnf.gz
+satcomp14/complete-300-0.1-7-9876543213007.cnf.gz
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp16_updated b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp16_updated
new file mode 100644
index 000000000..21425bd38
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp16_updated
@@ -0,0 +1,300 @@
+satcomp16/10pipe_k.cnf.gz
+satcomp16/14pipe_q0_k.cnf.gz
+satcomp16/16pipe_16_ooo.cnf.gz
+satcomp16/1dlx_c_iq57_a.cnf.gz
+satcomp16/26_stack_cas_longest_true-unreach-call.i-cbmc-u2.cnf.gz
+satcomp16/9dlx_vliw_at_b_iq4.used-as.sat04-345.cnf.gz
+satcomp16/9dlx_vliw_at_b_iq8.used-as.sat04-718.cnf.gz
+satcomp16/9dlx_vliw_at_b_iq9.used-as.sat04-719.cnf.gz
+satcomp16/ACG-20-10p0.cnf.gz
+satcomp16/ACG-20-5p1.cnf.gz
+satcomp16/AProVE07-25.cnf.gz
+satcomp16/AProVE11-06.cnf.gz
+satcomp16/C168_FW_UT_518.cnf.gz
+satcomp16/E00N23.cnf.gz
+satcomp16/E02F22.cnf.gz
+satcomp16/Sz1024_34824.smt2-stp212.cnf.gz
+satcomp16/Sz512_15127_1.smt2-stp212.cnf.gz
+satcomp16/Sz512_15127_3.smt2-cvc4.cnf.gz
+satcomp16/Sz512_15127_4.smt2-cvc4.cnf.gz
+satcomp16/Sz512_15127_5.smt2-stp212.cnf.gz
+satcomp16/Sz512_15127_6.smt2-stp212.cnf.gz
+satcomp16/Sz512_15128_0.smt2-stp212.cnf.gz
+satcomp16/Sz512_15128_1.smt2-cvc4.cnf.gz
+satcomp16/UCG-20-5p1.cnf.gz
+satcomp16/UR-15-10p0.cnf.gz
+satcomp16/UTI-20-10p1.cnf.gz
+satcomp16/UTI-20-5p1.cnf.gz
+satcomp16/abb313GPIA-9-c.used-as.sat04-317.cnf.gz
+satcomp16/ablmulub16x4o.cnf.gz
+satcomp16/ablmulub2x32o.cnf.gz
+satcomp16/ablmulub8x16o.cnf.gz
+satcomp16/add_01_1000_4.smt2-cvc4.cnf.gz
+satcomp16/aes_32_3_keyfind_2.cnf.gz
+satcomp16/aes_32_5_keyfind_1.cnf.gz
+satcomp16/aes_64_2_keyfind_1.cnf.gz
+satcomp16/aes_64_3_keyfind_1.cnf.gz
+satcomp16/ak016modbtsimpbisc.cnf.gz
+satcomp16/ak032diagodiagoisc.cnf.gz
+satcomp16/ak032modbtmodbtisc.cnf.gz
+satcomp16/ak032modbtsimpbisc.cnf.gz
+satcomp16/ak064boothboothisc.cnf.gz
+satcomp16/ak064diagodiagoisc.cnf.gz
+satcomp16/ak064modasbg2asisc.cnf.gz
+satcomp16/ak064modbtmodbtisc.cnf.gz
+satcomp16/ak064paralbg2btaig.cnf.gz
+satcomp16/ak064paralparalisc.cnf.gz
+satcomp16/ak064simpbbg2btaig.cnf.gz
+satcomp16/ak128astepbg2msaig.cnf.gz
+satcomp16/ak128boothbg2btisc.cnf.gz
+satcomp16/ak128boothboothisc.cnf.gz
+satcomp16/ak128diagobg2asaig.cnf.gz
+satcomp16/ak128modasbg2asisc.cnf.gz
+satcomp16/ak128modbtbg2msisc.cnf.gz
+satcomp16/ak128paralbg2msisc.cnf.gz
+satcomp16/ak128paralparalisc.cnf.gz
+satcomp16/ak128simpbbg2msisc.cnf.gz
+satcomp16/am_7_7.shuffled-as.sat03-363.cnf.gz
+satcomp16/am_9_9.cnf.gz
+satcomp16/arcfour_initialPermutation_5_32.cnf.gz
+satcomp16/arcfour_initialPermutation_6_14.cnf.gz
+satcomp16/barman-pfile06-022.sas.ex.7.cnf.gz
+satcomp16/barman-pfile07-027.sas.cr.37.cnf.gz
+satcomp16/barman-pfile07-028.sas.ex.15.cnf.gz
+satcomp16/barman-pfile08-030.sas.cr.27.cnf.gz
+satcomp16/barman-pfile08-032.sas.ex.15.cnf.gz
+satcomp16/barman-pfile08-032.sas.ex.7.cnf.gz
+satcomp16/barman-pfile09-036.sas.cr.33.cnf.gz
+satcomp16/barman-pfile10-037.sas.ex.7.cnf.gz
+satcomp16/barman-pfile10-038.sas.cr.25.cnf.gz
+satcomp16/barman-pfile10-038.sas.ex.15.cnf.gz
+satcomp16/barman-pfile10-039.sas.ex.15.cnf.gz
+satcomp16/barman-pfile10-040.sas.cr.17.cnf.gz
+satcomp16/barman-pfile10-040.sas.cr.21.cnf.gz
+satcomp16/barman-pfile10-040.sas.ex.15.cnf.gz
+satcomp16/countbitsarray04_32.cnf.gz
+satcomp16/countbitssrl128.cnf.gz
+satcomp16/ctl_3791_556_unsat.cnf.gz
+satcomp16/ctl_4291_567_8_unsat.cnf.gz
+satcomp16/cube-11-h13-unsat.cnf.gz
+satcomp16/custmulsb2x32o.cnf.gz
+satcomp16/custmulun16x16o.cnf.gz
+satcomp16/dated-10-19-u.cnf.gz
+satcomp16/div2.c.20.smt2-stp212.cnf.gz
+satcomp16/e2_1.c.smt2-stp212.cnf.gz
+satcomp16/e2_2.c.smt2-cvc4.cnf.gz
+satcomp16/e2a_2.c.smt2-cvc4.cnf.gz
+satcomp16/eq.atree.braun.11.unsat.cnf.gz
+satcomp16/eq.atree.braun.12.unsat.cnf.gz
+satcomp16/eq.atree.braun.13.unsat.cnf.gz
+satcomp16/esawn_uw3.debugged.cnf.gz
+satcomp16/f1000.cnf.gz
+satcomp16/f600.cnf.gz
+satcomp16/g250.29.cnf.gz
+satcomp16/gaussian.c.75.smt2-cvc4.cnf.gz
+satcomp16/gripper14u.cnf.gz
+satcomp16/gss-20-s100.cnf.gz
+satcomp16/gss-24-s100.cnf.gz
+satcomp16/gss-26-s100.cnf.gz
+satcomp16/gss-27-s100.cnf.gz
+satcomp16/gss-28-s100.cnf.gz
+satcomp16/gss-29-s100.cnf.gz
+satcomp16/gus-md5-10.cnf.gz
+satcomp16/gus-md5-12.cnf.gz
+satcomp16/hitag2-8-60-0-0xb2021557d918860-94.cnf.gz
+satcomp16/homer17.cnf.gz
+satcomp16/ibm-2002-23r-k90.cnf.gz
+satcomp16/k2mul.miter.cnf.gz
+satcomp16/k_unsat.cnf.gz
+satcomp16/korf-18.cnf.gz
+satcomp16/li-exam-61.cnf.gz
+satcomp16/li-exam-61.shuffled-as.sat03-366.cnf.gz
+satcomp16/li-exam-62.cnf.gz
+satcomp16/li-exam-63.cnf.gz
+satcomp16/li-test4-100.cnf.gz
+satcomp16/li-test4-95.cnf.gz
+satcomp16/li-test4-96.cnf.gz
+satcomp16/li-test4-98.cnf.gz
+satcomp16/li-test4-99.cnf.gz
+satcomp16/maxor128.cnf.gz
+satcomp16/maxxororand032.cnf.gz
+satcomp16/minxorminand128.cnf.gz
+satcomp16/mix034_rmo.opt_false-unreach-call.i-cbmc-u2.cnf.gz
+satcomp16/miza-sr06-md5-48-01.cnf.gz
+satcomp16/mizh-md5-47-3.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-1006.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-11953.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-12992.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-13845.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-1434.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-14424.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-14808.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-15163.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-15606.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-1585.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-16597.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-1876.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-18788.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-18972.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-19419.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-2087.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-21438.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-22556.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-25297.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-28046.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-29020.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-3230.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-3866.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-4208.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-5377.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-6295.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-6336.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-6967.cnf.gz
+satcomp16/modgen-n200-m90860q08c40-9056.cnf.gz
+satcomp16/mul_03_3000_1.smt2-cvc4.cnf.gz
+satcomp16/mulhs016.cnf.gz
+satcomp16/mulhs032.cnf.gz
+satcomp16/mulhs064.cnf.gz
+satcomp16/ndhf_xits_09_UNSAT.cnf.gz
+satcomp16/ndhf_xits_17_UNKNOWN.cnf.gz
+satcomp16/newton.2.2.i.smt2-cvc4.cnf.gz
+satcomp16/newton.2.3.i.smt2-cvc4.cnf.gz
+satcomp16/newton.2.3.i.smt2-stp212.cnf.gz
+satcomp16/newton.3.3.i.smt2-stp212.cnf.gz
+satcomp16/newton.4.3.i.smt2-stp212.cnf.gz
+satcomp16/newton.5.1.i.smt2-cvc4.cnf.gz
+satcomp16/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_1.035-NOTKNOWN.cnf.gz
+satcomp16/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_3.045-NOTKNOWN.cnf.gz
+satcomp16/par32-1-c.cnf.gz
+satcomp16/par32-3-c.cnf.gz
+satcomp16/partial-10-13-u.cnf.gz
+satcomp16/partial-10-15-s.cnf.gz
+satcomp16/partial-10-19-s.cnf.gz
+satcomp16/partial-10-19-u.cnf.gz
+satcomp16/partial-5-11-u.cnf.gz
+satcomp16/partial-5-15-u.cnf.gz
+satcomp16/partial-5-17-u.cnf.gz
+satcomp16/partial-5-19-u.cnf.gz
+satcomp16/pb_400_02_lb_15.cnf.gz
+satcomp16/podwr001_power.opt_false-unreach-call.i-cbmc-u2.cnf.gz
+satcomp16/q_query_3_L200_coli.sat.cnf.gz
+satcomp16/qurt.c.20.smt2-cvc4.cnf.gz
+satcomp16/rbcl_xits_09_UNKNOWN.cnf.gz
+satcomp16/rbcl_xits_11_UNKNOWN.cnf.gz
+satcomp16/rbcl_xits_13_UNKNOWN.cnf.gz
+satcomp16/rpoc_xits_08_UNSAT.cnf.gz
+satcomp16/rpoc_xits_09_UNSAT.cnf.gz
+satcomp16/rpoc_xits_10_UNKNOWN.cnf.gz
+satcomp16/rpoc_xits_11_UNKNOWN.cnf.gz
+satcomp16/rpoc_xits_14_UNKNOWN.cnf.gz
+satcomp16/safe-30-h29-unsat.cnf.gz
+satcomp16/safe009_pso.oepc_true-unreach-call.i-cbmc-u2.cnf.gz
+satcomp16/safe027_pso.opt_true-unreach-call.i-cbmc-u2.cnf.gz
+satcomp16/safe028_tso.oepc_true-unreach-call.i-cbmc-u2.cnf.gz
+satcomp16/safe029_power.opt_false-unreach-call.i-cbmc-u2.cnf.gz
+satcomp16/sat_prob_143.cnf.gz
+satcomp16/sat_prob_23.cnf.gz
+satcomp16/sat_prob_3.cnf.gz
+satcomp16/sat_prob_63.cnf.gz
+satcomp16/sat_prob_83.cnf.gz
+satcomp16/schup-l2s-bc56s-1-k391.cnf.gz
+satcomp16/servers_slapd_a_vc149923.cnf.gz
+satcomp16/sin.c.75.smt2-cvc4.cnf.gz
+satcomp16/sin2.c.2.smt2-cvc4.cnf.gz
+satcomp16/sin2.c.20.smt2-cvc4.cnf.gz
+satcomp16/slp-synthesis-aes-top21.cnf.gz
+satcomp16/slp-synthesis-aes-top23.cnf.gz
+satcomp16/slp-synthesis-aes-top26.cnf.gz
+satcomp16/smtlib-qfbv-aigs-VS3-benchmark-S2-tseitin.cnf.gz
+satcomp16/smulo128.cnf.gz
+satcomp16/sncf_model_ixl_bmc_depth_07.cnf.gz
+satcomp16/sncf_model_ixl_bmc_depth_08.cnf.gz
+satcomp16/sncf_model_ixl_bmc_depth_09.cnf.gz
+satcomp16/sncf_model_ixl_bmc_depth_10.cnf.gz
+satcomp16/sncf_model_ixl_bmc_depth_11.cnf.gz
+satcomp16/sncf_model_ixl_bmc_depth_12.cnf.gz
+satcomp16/sncf_model_ixl_bmc_depth_13.cnf.gz
+satcomp16/sncf_model_ixl_bmc_depth_14.cnf.gz
+satcomp16/sncf_model_ixl_bmc_depth_15.cnf.gz
+satcomp16/snw_13_8_CCSEncnopre.cnf.gz
+satcomp16/snw_13_8_CCSpreOptEncpre.cnf.gz
+satcomp16/snw_13_8_CCSpreOptnopre.cnf.gz
+satcomp16/snw_13_8_CCSpreOptpre.cnf.gz
+satcomp16/snw_13_8_pre.cnf.gz
+satcomp16/snw_13_9_CCSEncpre.cnf.gz
+satcomp16/snw_13_9_CCSpre.cnf.gz
+satcomp16/snw_13_9_Encpre.cnf.gz
+satcomp16/snw_13_9_pre.cnf.gz
+satcomp16/snw_13_9_preOptEncpre.cnf.gz
+satcomp16/snw_13_9_preOpt_pre.cnf.gz
+satcomp16/snw_16_8_nopre.cnf.gz
+satcomp16/snw_16_8_pre.cnf.gz
+satcomp16/snw_16_8_preOpt_pre.cnf.gz
+satcomp16/snw_16_9_CCSpre.cnf.gz
+satcomp16/snw_16_9_CCSpreOptpre.cnf.gz
+satcomp16/snw_16_9_Encpre.cnf.gz
+satcomp16/snw_16_9_pre.cnf.gz
+satcomp16/snw_16_9_preOptEncpre.cnf.gz
+satcomp16/snw_16_9_preOpt_pre.cnf.gz
+satcomp16/snw_17_9_CCSpreOptEncpre.cnf.gz
+satcomp16/sokoban-p01.sas.ex.17.cnf.gz
+satcomp16/sokoban-p04.sas.ex.13.cnf.gz
+satcomp16/sokoban-p09.sas.cr.25.cnf.gz
+satcomp16/sokoban-p10.sas.cr.35.cnf.gz
+satcomp16/sokoban-p16.sas.cr.37.cnf.gz
+satcomp16/sokoban-p16.sas.cr.39.cnf.gz
+satcomp16/sokoban-p16.sas.ex.15.cnf.gz
+satcomp16/sokoban-p16.sas.ex.17.cnf.gz
+satcomp16/sokoban-p16.sas.ex.19.cnf.gz
+satcomp16/sokoban-p16.sas.ex.21.cnf.gz
+satcomp16/sokoban-p16.sas.ex.23.cnf.gz
+satcomp16/sokoban-p17.sas.ex.11.cnf.gz
+satcomp16/sokoban-p18.sas.cr.29.cnf.gz
+satcomp16/sokoban-p19.sas.cr.23.cnf.gz
+satcomp16/sokoban-p20.sas.cr.21.cnf.gz
+satcomp16/sokoban-p20.sas.cr.23.cnf.gz
+satcomp16/sokoban-p20.sas.cr.25.cnf.gz
+satcomp16/sokoban-p20.sas.cr.27.cnf.gz
+satcomp16/sokoban-p20.sas.cr.29.cnf.gz
+satcomp16/sokoban-p20.sas.cr.31.cnf.gz
+satcomp16/sokoban-p20.sas.cr.33.cnf.gz
+satcomp16/sokoban-p20.sas.cr.35.cnf.gz
+satcomp16/sokoban-p20.sas.cr.37.cnf.gz
+satcomp16/sokoban-p20.sas.cr.39.cnf.gz
+satcomp16/sokoban-p20.sas.ex.11.cnf.gz
+satcomp16/sokoban-p20.sas.ex.13.cnf.gz
+satcomp16/sokoban-p20.sas.ex.15.cnf.gz
+satcomp16/sokoban-p20.sas.ex.17.cnf.gz
+satcomp16/sokoban-p20.sas.ex.19.cnf.gz
+satcomp16/sokoban-p20.sas.ex.21.cnf.gz
+satcomp16/sokoban-p20.sas.ex.23.cnf.gz
+satcomp16/sokoban-sequential-p145-microban-sequential.050-NOTKNOWN.cnf.gz
+satcomp16/sokoban-sequential-p145-microban-sequential.070-NOTKNOWN.cnf.gz
+satcomp16/sortnet-7-ipc5-h15-unsat.cnf.gz
+satcomp16/sortnet-8-ipc5-h18-unsat.cnf.gz
+satcomp16/square.2.0.i.smt2-cvc4.cnf.gz
+satcomp16/test_v3_r3_vr10_c1_s24300.smt2-stp212.cnf.gz
+satcomp16/test_v3_r8_vr5_c1_s8257.smt2-stp212.cnf.gz
+satcomp16/test_v5_r5_vr1_c1_s15604.smt2-stp212.cnf.gz
+satcomp16/test_v7_r12_vr10_c1_s18160.smt2-cvc4.cnf.gz
+satcomp16/test_v7_r12_vr10_c1_s18160.smt2-stp212.cnf.gz
+satcomp16/test_v7_r12_vr1_c1_s22787.smt2-cvc4.cnf.gz
+satcomp16/test_v7_r17_vr10_c1_s3680.smt2-stp212.cnf.gz
+satcomp16/test_v7_r17_vr1_c1_s30331.smt2-stp212.cnf.gz
+satcomp16/test_v7_r17_vr5_c1_s25451.smt2-cvc4.cnf.gz
+satcomp16/test_v7_r17_vr5_c1_s2807.smt2-stp212.cnf.gz
+satcomp16/test_v7_r7_vr10_c1_s32506.smt2-cvc4.cnf.gz
+satcomp16/total-10-13-u.cnf.gz
+satcomp16/total-10-19-u.cnf.gz
+satcomp16/total-5-17-u.cnf.gz
+satcomp16/traffic_3_uc_sat.cnf.gz
+satcomp16/transport-transport-city-sequential-35nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.020-NOTKNOWN.cnf.gz
+satcomp16/transport-transport-city-sequential-35nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.050-SAT.cnf.gz
+satcomp16/transport-transport-three-cities-sequential-14nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.040-NOTKNOWN.cnf.gz
+satcomp16/transport-transport-two-cities-sequential-15nodes-1000size-3degree-100mindistance-3trucks-10packages-2008seed.020-NOTKNOWN.cnf.gz
+satcomp16/transport-transport-two-cities-sequential-15nodes-1000size-3degree-100mindistance-3trucks-10packages-2008seed.040-SAT.cnf.gz
+satcomp16/uum16.smt2-cvc4.cnf.gz
+satcomp16/uum8.smt2-stp212.cnf.gz
+satcomp16/valves-gates-1-k617-unsat.cnf.gz
+satcomp16/velev-pipe-oun-1.1-05.cnf.gz
+satcomp16/velev-vliw-uns-2.0-uq5.cnf.gz
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp17_updated b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp17_updated
new file mode 100644
index 000000000..29894b0b4
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satcomp17_updated
@@ -0,0 +1,350 @@
+satcomp17/g2-ACG-15-10p1.cnf.gz
+satcomp17/g2-ACG-20-10p1.cnf.gz
+satcomp17/g2-ACG-20-5p1.cnf.gz
+satcomp17/g2-Sz512_15128_1.smt2-cvc4.cnf.gz
+satcomp17/g2-T1.2.1.cnf.gz
+satcomp17/g2-T100.2.0.cnf.gz
+satcomp17/g2-T101.2.0.cnf.gz
+satcomp17/g2-T102.2.1.cnf.gz
+satcomp17/g2-T103.2.1.cnf.gz
+satcomp17/g2-T104.1.0.cnf.gz
+satcomp17/g2-T105.2.1.cnf.gz
+satcomp17/g2-T106.2.0.cnf.gz
+satcomp17/g2-T108.2.1.cnf.gz
+satcomp17/g2-T109.2.0.cnf.gz
+satcomp17/g2-T110.2.1.cnf.gz
+satcomp17/g2-T112.1.0.cnf.gz
+satcomp17/g2-T118.2.1.cnf.gz
+satcomp17/g2-T122.1.0.cnf.gz
+satcomp17/g2-T124.2.0.cnf.gz
+satcomp17/g2-T124.2.1.cnf.gz
+satcomp17/g2-T133.2.1.cnf.gz
+satcomp17/g2-T135.1.1.cnf.gz
+satcomp17/g2-T141.1.0.cnf.gz
+satcomp17/g2-T154.1.0.cnf.gz
+satcomp17/g2-T155.1.0.cnf.gz
+satcomp17/g2-T169.1.0.cnf.gz
+satcomp17/g2-T169.2.0.cnf.gz
+satcomp17/g2-T49.2.0.cnf.gz
+satcomp17/g2-T50.2.0.cnf.gz
+satcomp17/g2-T55.2.0.cnf.gz
+satcomp17/g2-T58.2.0.cnf.gz
+satcomp17/g2-T65.2.0.cnf.gz
+satcomp17/g2-T65.2.1.cnf.gz
+satcomp17/g2-T75.2.0.cnf.gz
+satcomp17/g2-T81.2.1.cnf.gz
+satcomp17/g2-T83.2.1.cnf.gz
+satcomp17/g2-T85.2.1.cnf.gz
+satcomp17/g2-T88.2.1.cnf.gz
+satcomp17/g2-T89.2.1.cnf.gz
+satcomp17/g2-T93.2.1.cnf.gz
+satcomp17/g2-T96.1.1.cnf.gz
+satcomp17/g2-T97.2.1.cnf.gz
+satcomp17/g2-T99.2.0.cnf.gz
+satcomp17/g2-T99.2.1.cnf.gz
+satcomp17/g2-UCG-15-10p1.cnf.gz
+satcomp17/g2-UCG-20-10p1.cnf.gz
+satcomp17/g2-UCG-20-5p1.cnf.gz
+satcomp17/g2-UR-20-10p1.cnf.gz
+satcomp17/g2-UR-20-5p1.cnf.gz
+satcomp17/g2-UTI-20-10p1.cnf.gz
+satcomp17/g2-UTI-20-5p1.cnf.gz
+satcomp17/g2-ak128astepbg1btisc.cnf.gz
+satcomp17/g2-ak128astepbg2asisc.cnf.gz
+satcomp17/g2-ak128astepbg2msaig.cnf.gz
+satcomp17/g2-ak128astepbg2msisc.cnf.gz
+satcomp17/g2-ak128astepmodasaig.cnf.gz
+satcomp17/g2-ak128astepmodbtisc.cnf.gz
+satcomp17/g2-ak128boothbg1btisc.cnf.gz
+satcomp17/g2-ak128boothbg2asisc.cnf.gz
+satcomp17/g2-ak128boothbg2msaig.cnf.gz
+satcomp17/g2-ak128boothbg2msisc.cnf.gz
+satcomp17/g2-ak128boothboothisc.cnf.gz
+satcomp17/g2-ak128boothdiagoaig.cnf.gz
+satcomp17/g2-ak128boothmodasaig.cnf.gz
+satcomp17/g2-ak128diagobg1btaig.cnf.gz
+satcomp17/g2-ak128diagobg2asaig.cnf.gz
+satcomp17/g2-ak128diagodiagoisc.cnf.gz
+satcomp17/g2-ak128modasbg1msisc.cnf.gz
+satcomp17/g2-ak128modasbg1sbisc.cnf.gz
+satcomp17/g2-ak128modasmodasisc.cnf.gz
+satcomp17/g2-ak128modbtbg1asaig.cnf.gz
+satcomp17/g2-ak128modbtbg1asisc.cnf.gz
+satcomp17/g2-ak128modbtbg1btaig.cnf.gz
+satcomp17/g2-ak128modbtbg2msisc.cnf.gz
+satcomp17/g2-ak128modbtsimpbaig.cnf.gz
+satcomp17/g2-ak128paralbg1sbisc.cnf.gz
+satcomp17/g2-ak128paralbg2asaig.cnf.gz
+satcomp17/g2-ak128paralparalisc.cnf.gz
+satcomp17/g2-ak128paralsimpbaig.cnf.gz
+satcomp17/g2-ak128simpbbg1sbisc.cnf.gz
+satcomp17/g2-ak128simpbbg2asaig.cnf.gz
+satcomp17/g2-gss-22-s100.cnf.gz
+satcomp17/g2-gss-24-s100.cnf.gz
+satcomp17/g2-gss-26-s100.cnf.gz
+satcomp17/g2-gss-28-s100.cnf.gz
+satcomp17/g2-gss-30-s100.cnf.gz
+satcomp17/g2-gss-32-s100.cnf.gz
+satcomp17/g2-gss-34-s100.cnf.gz
+satcomp17/g2-gss-36-s100.cnf.gz
+satcomp17/g2-gss-38-s100.cnf.gz
+satcomp17/g2-gss-40-s100.cnf.gz
+satcomp17/g2-hwmcc15deep-6s105-k35.cnf.gz
+satcomp17/g2-hwmcc15deep-6s161-k17.cnf.gz
+satcomp17/g2-hwmcc15deep-6s161-k18.cnf.gz
+satcomp17/g2-hwmcc15deep-6s179-k17.cnf.gz
+satcomp17/g2-hwmcc15deep-6s188-k44.cnf.gz
+satcomp17/g2-hwmcc15deep-6s188-k46.cnf.gz
+satcomp17/g2-hwmcc15deep-6s33-k33.cnf.gz
+satcomp17/g2-hwmcc15deep-6s33-k34.cnf.gz
+satcomp17/g2-hwmcc15deep-6s340rb63-k16.cnf.gz
+satcomp17/g2-hwmcc15deep-6s340rb63-k22.cnf.gz
+satcomp17/g2-hwmcc15deep-6s341r-k16.cnf.gz
+satcomp17/g2-hwmcc15deep-6s341r-k19.cnf.gz
+satcomp17/g2-hwmcc15deep-6s366r-k72.cnf.gz
+satcomp17/g2-hwmcc15deep-6s399b02-k02.cnf.gz
+satcomp17/g2-hwmcc15deep-6s399b03-k02.cnf.gz
+satcomp17/g2-hwmcc15deep-6s44-k38.cnf.gz
+satcomp17/g2-hwmcc15deep-6s44-k40.cnf.gz
+satcomp17/g2-hwmcc15deep-6s516r-k17.cnf.gz
+satcomp17/g2-hwmcc15deep-6s516r-k18.cnf.gz
+satcomp17/g2-hwmcc15deep-beembkry8b1-k45.cnf.gz
+satcomp17/g2-hwmcc15deep-beemcmbrdg7f2-k32.cnf.gz
+satcomp17/g2-hwmcc15deep-beemfwt4b1-k48.cnf.gz
+satcomp17/g2-hwmcc15deep-beemhanoi4b1-k32.cnf.gz
+satcomp17/g2-hwmcc15deep-beemhanoi4b1-k37.cnf.gz
+satcomp17/g2-hwmcc15deep-beemlifts3b1-k29.cnf.gz
+satcomp17/g2-hwmcc15deep-beemloyd3b1-k31.cnf.gz
+satcomp17/g2-hwmcc15deep-bob12s02-k16.cnf.gz
+satcomp17/g2-hwmcc15deep-bob12s02-k17.cnf.gz
+satcomp17/g2-hwmcc15deep-bobpcihm-k30.cnf.gz
+satcomp17/g2-hwmcc15deep-bobpcihm-k31.cnf.gz
+satcomp17/g2-hwmcc15deep-bobpcihm-k32.cnf.gz
+satcomp17/g2-hwmcc15deep-bobpcihm-k33.cnf.gz
+satcomp17/g2-hwmcc15deep-intel032-k84.cnf.gz
+satcomp17/g2-hwmcc15deep-intel065-k11.cnf.gz
+satcomp17/g2-hwmcc15deep-intel066-k10.cnf.gz
+satcomp17/g2-hwmcc15deep-oski15a10b06s-k24.cnf.gz
+satcomp17/g2-hwmcc15deep-oski15a10b08s-k23.cnf.gz
+satcomp17/g2-hwmcc15deep-oski15a10b10s-k20.cnf.gz
+satcomp17/g2-hwmcc15deep-oski15a10b10s-k22.cnf.gz
+satcomp17/g2-hwmcc15deep-oski15a14b04s-k16.cnf.gz
+satcomp17/g2-hwmcc15deep-oski15a14b30s-k24.cnf.gz
+satcomp17/g2-mizh-md5-47-3.cnf.gz
+satcomp17/g2-mizh-md5-47-5.cnf.gz
+satcomp17/g2-mizh-md5-48-2.cnf.gz
+satcomp17/g2-mizh-md5-48-5.cnf.gz
+satcomp17/g2-modgen-n200-m90860q08c40-13698.cnf.gz
+satcomp17/g2-modgen-n200-m90860q08c40-16823.cnf.gz
+satcomp17/g2-modgen-n200-m90860q08c40-29667.cnf.gz
+satcomp17/g2-modgen-n200-m90860q08c40-3230.cnf.gz
+satcomp17/g2-modgen-n200-m90860q08c40-6967.cnf.gz
+satcomp17/g2-mult1.c.50.smt2-cvc4.cnf.gz
+satcomp17/g2-newton.8.3.i.smt2-cvc4.cnf.gz
+satcomp17/g2-slp-synthesis-aes-top24.cnf.gz
+satcomp17/g2-slp-synthesis-aes-top25.cnf.gz
+satcomp17/g2-slp-synthesis-aes-top26.cnf.gz
+satcomp17/g2-slp-synthesis-aes-top28.cnf.gz
+satcomp17/g2-slp-synthesis-aes-top29.cnf.gz
+satcomp17/g2-slp-synthesis-aes-top30.cnf.gz
+satcomp17/g2-test_v5_r10_vr10_c1_s21502.smt2-cvc4.cnf.gz
+satcomp17/g2-test_v7_r7_vr5_c1_s14675.smt2-cvc4.cnf.gz
+satcomp17/mp1-21.0.cnf.gz
+satcomp17/mp1-21.1.cnf.gz
+satcomp17/mp1-21.2.cnf.gz
+satcomp17/mp1-21.3.cnf.gz
+satcomp17/mp1-21.4.cnf.gz
+satcomp17/mp1-21.5.cnf.gz
+satcomp17/mp1-21.6.cnf.gz
+satcomp17/mp1-21.7.cnf.gz
+satcomp17/mp1-21.8.cnf.gz
+satcomp17/mp1-21.9.cnf.gz
+satcomp17/mp1-22.0.cnf.gz
+satcomp17/mp1-22.1.cnf.gz
+satcomp17/mp1-22.2.cnf.gz
+satcomp17/mp1-22.3.cnf.gz
+satcomp17/mp1-22.4.cnf.gz
+satcomp17/mp1-22.5.cnf.gz
+satcomp17/mp1-22.6.cnf.gz
+satcomp17/mp1-22.7.cnf.gz
+satcomp17/mp1-22.8.cnf.gz
+satcomp17/mp1-22.9.cnf.gz
+satcomp17/mp1-23.0.cnf.gz
+satcomp17/mp1-23.1.cnf.gz
+satcomp17/mp1-23.2.cnf.gz
+satcomp17/mp1-23.3.cnf.gz
+satcomp17/mp1-23.4.cnf.gz
+satcomp17/mp1-23.5.cnf.gz
+satcomp17/mp1-23.6.cnf.gz
+satcomp17/mp1-23.7.cnf.gz
+satcomp17/mp1-23.8.cnf.gz
+satcomp17/mp1-24.0.cnf.gz
+satcomp17/mp1-24.1.cnf.gz
+satcomp17/mp1-24.2.cnf.gz
+satcomp17/mp1-24.3.cnf.gz
+satcomp17/mp1-24.4.cnf.gz
+satcomp17/mp1-24.5.cnf.gz
+satcomp17/mp1-24.6.cnf.gz
+satcomp17/mp1-24.7.cnf.gz
+satcomp17/mp1-24.8.cnf.gz
+satcomp17/mp1-24.9.cnf.gz
+satcomp17/mp1-9_1.cnf.gz
+satcomp17/mp1-9_11.cnf.gz
+satcomp17/mp1-9_12.cnf.gz
+satcomp17/mp1-9_14.cnf.gz
+satcomp17/mp1-9_19.cnf.gz
+satcomp17/mp1-9_21.cnf.gz
+satcomp17/mp1-9_22.cnf.gz
+satcomp17/mp1-9_24.cnf.gz
+satcomp17/mp1-9_25.cnf.gz
+satcomp17/mp1-9_27.cnf.gz
+satcomp17/mp1-9_29.cnf.gz
+satcomp17/mp1-9_3.cnf.gz
+satcomp17/mp1-9_31.cnf.gz
+satcomp17/mp1-9_34.cnf.gz
+satcomp17/mp1-9_38.cnf.gz
+satcomp17/mp1-9_4.cnf.gz
+satcomp17/mp1-9_44.cnf.gz
+satcomp17/mp1-9_49.cnf.gz
+satcomp17/mp1-9_50.cnf.gz
+satcomp17/mp1-9_9.cnf.gz
+satcomp17/mp1-Nb5T06.cnf.gz
+satcomp17/mp1-Nb5T07.cnf.gz
+satcomp17/mp1-Nb5T14.cnf.gz
+satcomp17/mp1-Nb5T15.cnf.gz
+satcomp17/mp1-Nb5T16.cnf.gz
+satcomp17/mp1-Nb6T06.cnf.gz
+satcomp17/mp1-Nb6T07.cnf.gz
+satcomp17/mp1-Nb6T25.cnf.gz
+satcomp17/mp1-Nb6T27.cnf.gz
+satcomp17/mp1-Nb6T28.cnf.gz
+satcomp17/mp1-Nb6T29.cnf.gz
+satcomp17/mp1-Nb6T30.cnf.gz
+satcomp17/mp1-Nb7T07.cnf.gz
+satcomp17/mp1-Nb7T08.cnf.gz
+satcomp17/mp1-Nb7T42.cnf.gz
+satcomp17/mp1-Nb7T43.cnf.gz
+satcomp17/mp1-Nb7T44.cnf.gz
+satcomp17/mp1-Nb7T45.cnf.gz
+satcomp17/mp1-Nb7T46.cnf.gz
+satcomp17/mp1-blockpuzzle_5x10_s2_free5.cnf.gz
+satcomp17/mp1-blockpuzzle_5x10_s3_free4.cnf.gz
+satcomp17/mp1-blockpuzzle_5x10_s5_free3.cnf.gz
+satcomp17/mp1-blockpuzzle_5x10_s7_free4.cnf.gz
+satcomp17/mp1-blockpuzzle_5x10_s8_free3.cnf.gz
+satcomp17/mp1-blockpuzzle_5x12_s6_free3.cnf.gz
+satcomp17/mp1-blockpuzzle_7x10_s10_free4.cnf.gz
+satcomp17/mp1-blockpuzzle_7x10_s7_free8.cnf.gz
+satcomp17/mp1-blockpuzzle_7x10_s9_free6.cnf.gz
+satcomp17/mp1-blockpuzzle_8x8_s1_free4.cnf.gz
+satcomp17/mp1-blockpuzzle_9x9_s1_free10.cnf.gz
+satcomp17/mp1-blockpuzzle_9x9_s1_free7.cnf.gz
+satcomp17/mp1-blockpuzzle_9x9_s1_free8.cnf.gz
+satcomp17/mp1-blockpuzzle_9x9_s1_free9.cnf.gz
+satcomp17/mp1-blockpuzzle_9x9_s4_free3.cnf.gz
+satcomp17/mp1-blockpuzzle_9x9_s5_free3.cnf.gz
+satcomp17/mp1-blockpuzzle_9x9_s7_free8.cnf.gz
+satcomp17/mp1-blockpuzzle_9x9_s7_free9.cnf.gz
+satcomp17/mp1-blockpuzzle_9x9_s8_free3.cnf.gz
+satcomp17/mp1-blockpuzzle_9x9_s8_free7.cnf.gz
+satcomp17/mp1-bsat180-648.cnf.gz
+satcomp17/mp1-bsat192-689.cnf.gz
+satcomp17/mp1-bsat201-707.cnf.gz
+satcomp17/mp1-bsat210-739.cnf.gz
+satcomp17/mp1-klieber2017s-0300-032-t12.cnf.gz
+satcomp17/mp1-klieber2017s-0300-033-t12.cnf.gz
+satcomp17/mp1-klieber2017s-0300-034-t12.cnf.gz
+satcomp17/mp1-klieber2017s-0300-035-t12.cnf.gz
+satcomp17/mp1-klieber2017s-0490-022-t12.cnf.gz
+satcomp17/mp1-klieber2017s-0490-023-t12.cnf.gz
+satcomp17/mp1-klieber2017s-0490-024-t12.cnf.gz
+satcomp17/mp1-klieber2017s-0500-022-t12.cnf.gz
+satcomp17/mp1-klieber2017s-0500-023-t12.cnf.gz
+satcomp17/mp1-klieber2017s-0500-024-t12.cnf.gz
+satcomp17/mp1-klieber2017s-1000-023-eq.cnf.gz
+satcomp17/mp1-klieber2017s-1000-024-eq.cnf.gz
+satcomp17/mp1-klieber2017s-1200-022-eq.cnf.gz
+satcomp17/mp1-klieber2017s-1200-023-eq.cnf.gz
+satcomp17/mp1-klieber2017s-1200-024-eq.cnf.gz
+satcomp17/mp1-klieber2017s-1600-022-eq.cnf.gz
+satcomp17/mp1-klieber2017s-1600-023-eq.cnf.gz
+satcomp17/mp1-klieber2017s-1600-024-eq.cnf.gz
+satcomp17/mp1-klieber2017s-2000-022-eq.cnf.gz
+satcomp17/mp1-klieber2017s-2000-023-eq.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.6_0_1.45_0.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.6_0_1.45_2.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.6_0_1.45_4.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.6_0_1.45_6.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.6_0_1.45_8.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.6_0_1.50_0.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.6_0_1.50_2.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.6_0_1.50_4.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.6_0_1.50_6.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.6_0_1.50_8.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.7_0_1.45_0.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.7_0_1.45_2.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.7_0_1.45_4.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.7_0_1.45_6.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.7_0_1.45_8.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.7_0_1.50_0.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.7_0_1.50_2.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.7_0_1.50_4.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.7_0_1.50_6.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.7_0_1.50_8.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.50_0.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.50_2.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.50_4.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.50_6.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.50_8.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.55_0.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.55_2.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.55_4.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.55_6.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.55_8.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.60_0.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.60_2.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.60_4.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.60_6.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.60_8.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.70_0.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.70_2.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.70_4.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.70_6.cnf.gz
+satcomp17/mp1-ps_5000_21250_3_0_0.8_0_1.70_8.cnf.gz
+satcomp17/mp1-qpr-bmp280-driver-14.cnf.gz
+satcomp17/mp1-qpr-bmp280-driver-5.cnf.gz
+satcomp17/mp1-rubikcube012.cnf.gz
+satcomp17/mp1-rubikcube031.cnf.gz
+satcomp17/mp1-rubikcube101.cnf.gz
+satcomp17/mp1-rubikcube120.cnf.gz
+satcomp17/mp1-rubikcube212.cnf.gz
+satcomp17/mp1-rubikcube220.cnf.gz
+satcomp17/mp1-rubikcube301.cnf.gz
+satcomp17/mp1-rubikcube312.cnf.gz
+satcomp17/mp1-rubikcube401.cnf.gz
+satcomp17/mp1-rubikcube420.cnf.gz
+satcomp17/mp1-rubikcube512.cnf.gz
+satcomp17/mp1-rubikcube520.cnf.gz
+satcomp17/mp1-rubikcube601.cnf.gz
+satcomp17/mp1-rubikcube612.cnf.gz
+satcomp17/mp1-rubikcube701.cnf.gz
+satcomp17/mp1-rubikcube720.cnf.gz
+satcomp17/mp1-rubikcube812.cnf.gz
+satcomp17/mp1-rubikcube820.cnf.gz
+satcomp17/mp1-rubikcube901.cnf.gz
+satcomp17/mp1-rubikcube912.cnf.gz
+satcomp17/mp1-squ_ali_s10x10_c39_abio_SAT.cnf.gz
+satcomp17/mp1-squ_ali_s10x10_c39_abix_SAT.cnf.gz
+satcomp17/mp1-squ_ali_s10x10_c39_bail_SAT.cnf.gz
+satcomp17/mp1-squ_ali_s10x10_c39_sinx_SAT.cnf.gz
+satcomp17/mp1-squ_ali_s10x10_c39_sinz_SAT.cnf.gz
+satcomp17/mp1-squ_any_s09x07_c27_abio_UNS.cnf.gz
+satcomp17/mp1-squ_any_s09x07_c27_abix_UNS.cnf.gz
+satcomp17/mp1-squ_any_s09x07_c27_bail_UNS.cnf.gz
+satcomp17/mp1-squ_any_s09x07_c27_sinx_UNS.cnf.gz
+satcomp17/mp1-squ_any_s09x07_c27_sinz_UNS.cnf.gz
+satcomp17/mp1-tri_ali_s11_c35_abio_UNS.cnf.gz
+satcomp17/mp1-tri_ali_s11_c35_abix_UNS.cnf.gz
+satcomp17/mp1-tri_ali_s11_c35_bail_UNS.cnf.gz
+satcomp17/mp1-tri_ali_s11_c35_sinx_UNS.cnf.gz
+satcomp17/mp1-tri_ali_s11_c35_sinz_UNS.cnf.gz
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satrace15_updated b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satrace15_updated
new file mode 100644
index 000000000..b256c5a09
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/satrace15_updated
@@ -0,0 +1,300 @@
+satrace15/002-80-12.cnf.gz
+satrace15/002-80-4.cnf.gz
+satrace15/002-80-8.cnf.gz
+satrace15/003-80-8.cnf.gz
+satrace15/004-80-8.cnf.gz
+satrace15/005-80-12.cnf.gz
+satrace15/007-80-12.cnf.gz
+satrace15/007-80-8.cnf.gz
+satrace15/008-80-12.cnf.gz
+satrace15/008-80-4.cnf.gz
+satrace15/008-80-8.cnf.gz
+satrace15/009-23-64.cnf.gz
+satrace15/009-80-4.cnf.gz
+satrace15/009-80-8.cnf.gz
+satrace15/010-22-144.cnf.gz
+satrace15/010-23-80.cnf.gz
+satrace15/010-80-12.cnf.gz
+satrace15/10pipe_q0_k.cnf.gz
+satrace15/11pipe_k.cnf.gz
+satrace15/13pipe_q0_k.cnf.gz
+satrace15/38bits_10.dimacs.cnf.gz
+satrace15/40bits_10.dimacs.cnf.gz
+satrace15/42bits_12.dimacs.cnf.gz
+satrace15/44bits_11.dimacs.cnf.gz
+satrace15/46bits_11.dimacs.cnf.gz
+satrace15/46bits_12.dimacs.cnf.gz
+satrace15/46bits_14.dimacs.cnf.gz
+satrace15/48bits_11.dimacs.cnf.gz
+satrace15/48bits_12.dimacs.cnf.gz
+satrace15/48bits_13.dimacs.cnf.gz
+satrace15/48bits_14.dimacs.cnf.gz
+satrace15/50bit.dimacs.cnf.gz
+satrace15/50bits_10.dimacs.cnf.gz
+satrace15/50bits_11.dimacs.cnf.gz
+satrace15/50bits_13.dimacs.cnf.gz
+satrace15/50bits_14.dimacs.cnf.gz
+satrace15/52bits_12.dimacs.cnf.gz
+satrace15/54bits_13.dimacs.cnf.gz
+satrace15/56bits_12.dimacs.cnf.gz
+satrace15/58bits_10.dimacs.cnf.gz
+satrace15/58bits_11.dimacs.cnf.gz
+satrace15/58bits_13.dimacs.cnf.gz
+satrace15/62bits_10.dimacs.cnf.gz
+satrace15/62bits_11.dimacs.cnf.gz
+satrace15/62bits_14.dimacs.cnf.gz
+satrace15/64bits_11.dimacs.cnf.gz
+satrace15/64bits_13.dimacs.cnf.gz
+satrace15/66bit.dimacs.cnf.gz
+satrace15/6s11-opt.cnf.gz
+satrace15/6s13-opt.cnf.gz
+satrace15/6s130-opt.cnf.gz
+satrace15/6s131-opt.cnf.gz
+satrace15/6s133.cnf.gz
+satrace15/6s151.cnf.gz
+satrace15/6s16-opt.cnf.gz
+satrace15/6s16.cnf.gz
+satrace15/6s165-nonopt.cnf.gz
+satrace15/6s167-opt.cnf.gz
+satrace15/6s168-opt.cnf.gz
+satrace15/6s169-opt.cnf.gz
+satrace15/6s17-opt.cnf.gz
+satrace15/6s9.cnf.gz
+satrace15/7pipe_k.cnf.gz
+satrace15/9dlx_vliw_at_b_iq8.used-as.sat04-718.cnf.gz
+satrace15/ACG-15-10p0.cnf.gz
+satrace15/ACG-20-10p1.cnf.gz
+satrace15/ACG-20-5p0.cnf.gz
+satrace15/AProVE07-03.cnf.gz
+satrace15/AProVE07-27.cnf.gz
+satrace15/AProVE09-06.cnf.gz
+satrace15/E02F20.cnf.gz
+satrace15/E02F22.cnf.gz
+satrace15/MD5-28-1.cnf.gz
+satrace15/MD5-29-2.cnf.gz
+satrace15/MD5-29-4.cnf.gz
+satrace15/MD5-29-5.cnf.gz
+satrace15/MD5-30-1.cnf.gz
+satrace15/MD5-30-5.cnf.gz
+satrace15/SAT_dat.k70-24_1_rule_3.cnf.gz
+satrace15/SAT_dat.k80-24_1_rule_1.cnf.gz
+satrace15/SAT_dat.k85-24_1_rule_3.cnf.gz
+satrace15/SAT_dat.k90.debugged.cnf.gz
+satrace15/SAT_dat.k95-24_1_rule_3.cnf.gz
+satrace15/UCG-15-10p1.cnf.gz
+satrace15/UCG-20-10p0.cnf.gz
+satrace15/UCG-20-10p1.cnf.gz
+satrace15/UCG-20-5p0.cnf.gz
+satrace15/UCG-20-5p1.cnf.gz
+satrace15/UR-15-10p1.cnf.gz
+satrace15/UR-20-10p0.cnf.gz
+satrace15/UTI-20-10p1.cnf.gz
+satrace15/UTI-20-5p1.cnf.gz
+satrace15/aaai10-planning-ipc5-TPP-21-step11.cnf.gz
+satrace15/aaai10-planning-ipc5-pathways-13-step17.cnf.gz
+satrace15/aaai10-planning-ipc5-pathways-17-step20.cnf.gz
+satrace15/aes_24_4_keyfind_5.cnf.gz
+satrace15/aes_32_2_keyfind_1.cnf.gz
+satrace15/aes_32_3_keyfind_1.cnf.gz
+satrace15/aes_64_1_keyfind_1.cnf.gz
+satrace15/aes_id.cnf.gz
+satrace15/atco_enc1_opt1_04_32.cnf.gz
+satrace15/atco_enc1_opt1_10_15.cnf.gz
+satrace15/atco_enc1_opt1_10_21.cnf.gz
+satrace15/atco_enc1_opt2_10_14.cnf.gz
+satrace15/atco_enc1_opt2_10_16.cnf.gz
+satrace15/atco_enc1_opt2_20_12.cnf.gz
+satrace15/atco_enc2_opt2_05_9.cnf.gz
+satrace15/atco_enc2_opt2_10_21.cnf.gz
+satrace15/atco_enc2_opt2_20_11.cnf.gz
+satrace15/atco_enc3_opt1_13_48.cnf.gz
+satrace15/atco_enc3_opt2_10_12.cnf.gz
+satrace15/atco_enc3_opt2_10_14.cnf.gz
+satrace15/atco_enc3_opt2_18_44.cnf.gz
+satrace15/beempgsol2b1.cnf.gz
+satrace15/beempgsol5b1.cnf.gz
+satrace15/bjrb07amba10andenv.cnf.gz
+satrace15/bob12m02-opt.cnf.gz
+satrace15/bob12m09-opt.cnf.gz
+satrace15/bob12s02.cnf.gz
+satrace15/complete-400-0.1-16-98765432140016.cnf.gz
+satrace15/complete-400-0.1-3-9876543214003.cnf.gz
+satrace15/complete-500-0.1-1-9876543215001.cnf.gz
+satrace15/complete-500-0.1-15-98765432150015.cnf.gz
+satrace15/complete-500-0.1-17-98765432150017.cnf.gz
+satrace15/complete-500-0.1-8-9876543215008.cnf.gz
+satrace15/countbitssrl032.cnf.gz
+satrace15/dated-10-13-u.cnf.gz
+satrace15/dated-10-17-u.cnf.gz
+satrace15/dated-5-13-u.cnf.gz
+satrace15/dimacs.cnf.gz
+satrace15/grieu-vmpc-31.cnf.gz
+satrace15/group_mulr.cnf.gz
+satrace15/gss-18-s100.cnf.gz
+satrace15/gss-19-s100.cnf.gz
+satrace15/gss-22-s100.cnf.gz
+satrace15/hitag2-10-60-0-0x8edc44db7837bbf-65.cnf.gz
+satrace15/hitag2-10-60-0-0xe14721bd199894a-99.cnf.gz
+satrace15/hitag2-8-60-0-0x1eb82244d7f1c3c-47.cnf.gz
+satrace15/hwmcc10-timeframe-expansion-k45-pdtvisns3p02-tseitin.cnf.gz
+satrace15/hwmcc10-timeframe-expansion-k50-pdtpmsns2-tseitin.cnf.gz
+satrace15/hwmcc10-timeframe-expansion-k50-pdtvisns3p00-tseitin.cnf.gz
+satrace15/itox_vc1130.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.108.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.109.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.117.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.135.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.136.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.149.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.158.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.167.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.180.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.188.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.194.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.2.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.20.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.22.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.28.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.33.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.35.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.41.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.46.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.62.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.79.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.8.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.81.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.83.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.85.cnf.gz
+satrace15/jgiraldezlevy.2200.9086.08.40.93.cnf.gz
+satrace15/k2fix_gr_rcs_w9.shuffled.cnf.gz
+satrace15/manol-pipe-c10nid_i.cnf.gz
+satrace15/manthey_DimacsSorterHalf_28_4.cnf.gz
+satrace15/manthey_DimacsSorterHalf_29_2.cnf.gz
+satrace15/manthey_DimacsSorterHalf_29_8.cnf.gz
+satrace15/manthey_DimacsSorterHalf_30_0.cnf.gz
+satrace15/manthey_DimacsSorterHalf_30_3.cnf.gz
+satrace15/manthey_DimacsSorterHalf_30_7.cnf.gz
+satrace15/manthey_DimacsSorterHalf_31_2.cnf.gz
+satrace15/manthey_DimacsSorterHalf_31_8.cnf.gz
+satrace15/manthey_DimacsSorterHalf_32_1.cnf.gz
+satrace15/manthey_DimacsSorterHalf_33_1.cnf.gz
+satrace15/manthey_DimacsSorterHalf_35_8.cnf.gz
+satrace15/manthey_DimacsSorterHalf_35_9.cnf.gz
+satrace15/manthey_DimacsSorterHalf_36_0.cnf.gz
+satrace15/manthey_DimacsSorterHalf_36_7.cnf.gz
+satrace15/manthey_DimacsSorterHalf_37_3.cnf.gz
+satrace15/manthey_DimacsSorterHalf_37_6.cnf.gz
+satrace15/manthey_DimacsSorterHalf_37_8.cnf.gz
+satrace15/manthey_DimacsSorterHalf_37_9.cnf.gz
+satrace15/manthey_DimacsSorter_28_0.cnf.gz
+satrace15/manthey_DimacsSorter_28_3.cnf.gz
+satrace15/manthey_DimacsSorter_28_4.cnf.gz
+satrace15/manthey_DimacsSorter_28_7.cnf.gz
+satrace15/manthey_DimacsSorter_29_8.cnf.gz
+satrace15/manthey_DimacsSorter_30_1.cnf.gz
+satrace15/manthey_DimacsSorter_30_4.cnf.gz
+satrace15/manthey_DimacsSorter_30_5.cnf.gz
+satrace15/manthey_DimacsSorter_30_6.cnf.gz
+satrace15/manthey_DimacsSorter_31_0.cnf.gz
+satrace15/manthey_DimacsSorter_31_4.cnf.gz
+satrace15/manthey_DimacsSorter_31_6.cnf.gz
+satrace15/manthey_DimacsSorter_31_8.cnf.gz
+satrace15/manthey_DimacsSorter_32_1.cnf.gz
+satrace15/manthey_DimacsSorter_35_1.cnf.gz
+satrace15/manthey_DimacsSorter_35_7.cnf.gz
+satrace15/manthey_DimacsSorter_35_8.cnf.gz
+satrace15/manthey_DimacsSorter_36_4.cnf.gz
+satrace15/manthey_DimacsSorter_36_7.cnf.gz
+satrace15/manthey_DimacsSorter_37_3.cnf.gz
+satrace15/manthey_DimacsSorter_37_6.cnf.gz
+satrace15/manthey_single-ordered-initialized-w12-b6.cnf.gz
+satrace15/manthey_single-ordered-initialized-w14-b7.cnf.gz
+satrace15/manthey_single-ordered-initialized-w18-b7.cnf.gz
+satrace15/manthey_single-ordered-initialized-w18-b8.cnf.gz
+satrace15/manthey_single-ordered-initialized-w20-b10.cnf.gz
+satrace15/manthey_single-ordered-initialized-w20-b7.cnf.gz
+satrace15/manthey_single-ordered-initialized-w20-b8.cnf.gz
+satrace15/manthey_single-ordered-initialized-w22-b6.cnf.gz
+satrace15/manthey_single-ordered-initialized-w22-b8.cnf.gz
+satrace15/manthey_single-ordered-initialized-w24-b7.cnf.gz
+satrace15/manthey_single-ordered-initialized-w24-b9.cnf.gz
+satrace15/manthey_single-ordered-initialized-w26-b7.cnf.gz
+satrace15/manthey_single-ordered-initialized-w26-b8.cnf.gz
+satrace15/manthey_single-ordered-initialized-w28-b8.cnf.gz
+satrace15/manthey_single-ordered-initialized-w32-b9.cnf.gz
+satrace15/manthey_single-ordered-initialized-w40-b10.cnf.gz
+satrace15/manthey_single-ordered-initialized-w40-b8.cnf.gz
+satrace15/manthey_single-ordered-initialized-w42-b8.cnf.gz
+satrace15/manthey_single-ordered-initialized-w42-b9.cnf.gz
+satrace15/manthey_single-ordered-initialized-w44-b6.cnf.gz
+satrace15/manthey_single-ordered-initialized-w44-b7.cnf.gz
+satrace15/manthey_single-ordered-initialized-w44-b8.cnf.gz
+satrace15/manthey_single-ordered-initialized-w44-b9.cnf.gz
+satrace15/manthey_single-ordered-initialized-w46-b7.cnf.gz
+satrace15/manthey_single-ordered-initialized-w46-b8.cnf.gz
+satrace15/manthey_single-ordered-initialized-w46-b9.cnf.gz
+satrace15/manthey_single-ordered-initialized-w48-b6.cnf.gz
+satrace15/manthey_single-ordered-initialized-w48-b7.cnf.gz
+satrace15/manthey_single-ordered-initialized-w48-b8.cnf.gz
+satrace15/manthey_single-ordered-initialized-w48-b9.cnf.gz
+satrace15/manthey_single-ordered-initialized-w50-b6.cnf.gz
+satrace15/manthey_single-ordered-initialized-w50-b7.cnf.gz
+satrace15/manthey_single-ordered-initialized-w52-b6.cnf.gz
+satrace15/manthey_single-ordered-initialized-w54-b9.cnf.gz
+satrace15/minandmaxor128.cnf.gz
+satrace15/minxorminand064.cnf.gz
+satrace15/mrpp_4x4#10_20.cnf.gz
+satrace15/mrpp_4x4#10_9.cnf.gz
+satrace15/mrpp_4x4#12_12.cnf.gz
+satrace15/mrpp_4x4#4_24.cnf.gz
+satrace15/mrpp_4x4#4_4.cnf.gz
+satrace15/mrpp_4x4#4_5.cnf.gz
+satrace15/mrpp_4x4#6_16.cnf.gz
+satrace15/mrpp_4x4#6_20.cnf.gz
+satrace15/mrpp_4x4#6_5.cnf.gz
+satrace15/mrpp_4x4#8_8.cnf.gz
+satrace15/mrpp_6x6#10_10.cnf.gz
+satrace15/mrpp_6x6#10_8.cnf.gz
+satrace15/mrpp_6x6#12_16.cnf.gz
+satrace15/mrpp_6x6#12_8.cnf.gz
+satrace15/mrpp_6x6#14_24.cnf.gz
+satrace15/mrpp_6x6#16_12.cnf.gz
+satrace15/mrpp_6x6#16_24.cnf.gz
+satrace15/mrpp_6x6#16_9.cnf.gz
+satrace15/mrpp_6x6#18_12.cnf.gz
+satrace15/mrpp_6x6#18_9.cnf.gz
+satrace15/mrpp_6x6#20_10.cnf.gz
+satrace15/mrpp_8x8#12_9.cnf.gz
+satrace15/mrpp_8x8#16_12.cnf.gz
+satrace15/mrpp_8x8#18_12.cnf.gz
+satrace15/mrpp_8x8#18_13.cnf.gz
+satrace15/mrpp_8x8#18_20.cnf.gz
+satrace15/mrpp_8x8#20_16.cnf.gz
+satrace15/mrpp_8x8#20_20.cnf.gz
+satrace15/mrpp_8x8#22_10.cnf.gz
+satrace15/mrpp_8x8#22_11.cnf.gz
+satrace15/mrpp_8x8#22_20.cnf.gz
+satrace15/mrpp_8x8#22_24.cnf.gz
+satrace15/mrpp_8x8#24_11.cnf.gz
+satrace15/mrpp_8x8#24_14.cnf.gz
+satrace15/mrpp_8x8#24_16.cnf.gz
+satrace15/mrpp_8x8#24_20.cnf.gz
+satrace15/mrpp_8x8#24_24.cnf.gz
+satrace15/mrpp_8x8#8_9.cnf.gz
+satrace15/openstacks-p30_3.085-SAT.cnf.gz
+satrace15/partial-10-11-s.cnf.gz
+satrace15/partial-5-15-s.cnf.gz
+satrace15/partial-5-17-s.cnf.gz
+satrace15/post-c32s-ss-8.cnf.gz
+satrace15/post-cbmc-aes-d-r2-noholes.cnf.gz
+satrace15/post-cbmc-aes-d-r2.cnf.gz
+satrace15/post-cbmc-aes-ee-r2-noholes.cnf.gz
+satrace15/q_query_3_L150_coli.sat.cnf.gz
+satrace15/q_query_3_L200_coli.sat.cnf.gz
+satrace15/q_query_3_L80_coli.sat.cnf.gz
+satrace15/transport-transport-city-sequential-25nodes-1000size-3degree-100mindistance-3trucks-10packages-2008seed.040-NOTKNOWN.cnf.gz
+satrace15/transport-transport-city-sequential-35nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.040-NOTKNOWN.cnf.gz
+satrace15/velev-vliw-uns-2.0-uq5.cnf.gz
+satrace15/velev-vliw-uns-4.0-9-i1.cnf.gz
+satrace15/vmpc_29.cnf.gz
+satrace15/vmpc_33.cnf.gz
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/test_updated b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/test_updated
new file mode 100644
index 000000000..f3df488e9
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/test_updated
@@ -0,0 +1,8 @@
+test/6s165-nonopt.cnf.gz
+test/a.cnf.gz
+test/complete-400-0.1-16-98765432140016.cnf.gz
+test/d.cnf.gz
+test/f.cnf.gz
+test/k2fix_gr_rcs_w9.shuffled.cnf.gz
+test/manol-pipe-c10nidw_s.cnf.gz
+test/z.cnf.gz
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/unsat_small_candidates_fullpath b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/unsat_small_candidates_fullpath
new file mode 100644
index 000000000..568331ddb
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/config/unsat_small_candidates_fullpath
@@ -0,0 +1,425 @@
+satcomp13/slp-synthesis-aes-bottom13.cnf.gz
+satcomp13/smtlib-qfbv-aigs-lfsr_004_127_112-tseitin.cnf.gz
+satcomp13/ctl_4291_567_12_unsat_pre.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k45-pdtvissoap1-tseitin.cnf.gz
+satcomp13/dated-10-13-u.cnf.gz
+satcomp13/biere6s153.cnf.gz
+satcomp13/maxxor032.cnf.gz
+satcomp13/ctl_4291_567_7_unsat_pre.cnf.gz
+satcomp13/pb_200_10_lb_15.cnf.gz
+satcomp13/minxorminand064.cnf.gz
+satcomp13/pb_200_05_lb_00.cnf.gz
+satcomp13/pb_300_10_lb_06.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k45-pdtpmsgoodbakery-tseitin.cnf.gz
+satcomp13/6s133.cnf.gz
+satcomp13/b_unsat_pre.cnf.gz
+satcomp13/pb_200_03_lb_02.cnf.gz
+satcomp13/UR-20-5p0.cnf.gz
+satcomp13/ctl_4291_567_7_unsat.cnf.gz
+satcomp13/SAT_dat.k80.cnf.gz
+satcomp13/p01_lb_05.cnf.gz
+satcomp13/maxor064.cnf.gz
+satcomp13/UR-15-10p0.cnf.gz
+satcomp13/pb_400_03_lb_05.cnf.gz
+satcomp13/beempgsol2b1.cnf.gz
+satcomp13/ctl_4291_567_9_unsat_pre.cnf.gz
+satcomp13/aaai10-planning-ipc5-pipesworld-12-step15.cnf.gz
+satcomp13/aaai10-planning-ipc5-pathways-17-step20.cnf.gz
+satcomp13/pb_400_09_lb_02.cnf.gz
+satcomp13/biere6s165.cnf.gz
+satcomp13/velev-vliw-uns-4.0-9.cnf.gz
+satcomp13/AProVE07-27.cnf.gz
+satcomp13/AProVE07-03.cnf.gz
+satcomp13/9dlx_vliw_at_b_iq4.cnf.gz
+satcomp13/pb_300_04_lb_05.cnf.gz
+satcomp13/gus-md5-08.cnf.gz
+satcomp13/smtlib-qfbv-aigs-ext_con_032_008_0256-tseitin.cnf.gz
+satcomp13/minxorminand128.cnf.gz
+satcomp13/countbitssrl032.cnf.gz
+satcomp13/biere6s9.cnf.gz
+satcomp13/arcfour_initialPermutation_6_14.cnf.gz
+satcomp13/7pipe_k.cnf.gz
+satcomp13/ctl_4291_567_9_unsat.cnf.gz
+satcomp13/hwmcc10-timeframe-expansion-k50-pdtpmsns2-tseitin.cnf.gz
+satcomp13/pb_200_03_lb_01.cnf.gz
+satcomp13/SAT_dat.k100.cnf.gz
+satcomp13/biere6s19.cnf.gz
+satcomp13/AProVE07-02.cnf.gz
+satcomp13/aaai10-planning-ipc5-pathways-13-step17.cnf.gz
+satcomp13/pb_300_04_lb_06.cnf.gz
+satcomp13/8pipe_q0_k.cnf.gz
+satcomp13/bierebob12s02.cnf.gz
+satcomp13/pb_400_09_lb_03.cnf.gz
+satcomp13/beempgsol5b1.cnf.gz
+satcomp13/arcfour_initialPermutation_6_15.cnf.gz
+satcomp13/ctl_4291_567_12_unsat.cnf.gz
+satcomp13/minxor128.cnf.gz
+satcomp13/biere6s166.cnf.gz
+satcomp13/dated-10-11-u.cnf.gz
+satcomp09/ACG-10-5p0.cnf.gz
+satcomp09/uts-l05-ipc5-h26-unsat.cnf.gz
+satcomp09/blocks-4-ipc5-h22-unknown.cnf.gz
+satcomp09/q_query_3_L150_coli.sat.cnf.gz
+satcomp09/velev-vliw-uns-4.0-9C1.cnf.gz
+satcomp09/post-c32s-ss-8.cnf.gz
+satcomp09/q_query_3_L80_coli.sat.cnf.gz
+satcomp09/manol-pipe-c10nid_i.cnf.gz
+satcomp09/q_query_3_L100_coli.sat.cnf.gz
+satcomp09/9dlx_vliw_at_b_iq5.cnf.gz
+satcomp09/q_query_3_l46_lambda.cnf.gz
+satcomp09/dated-5-17-u.cnf.gz
+satcomp09/maxand064.cnf.gz
+satcomp09/q_query_3_l45_lambda.cnf.gz
+satcomp09/manol-pipe-f9n.cnf.gz
+satcomp09/UTI-15-5p0.cnf.gz
+satcomp09/hoons-vbmc-lucky7.cnf.gz
+satcomp09/9dlx_vliw_at_b_iq2.cnf.gz
+satcomp09/manol-pipe-c10nidw_s.cnf.gz
+satcomp09/UTI-15-10p0.cnf.gz
+satcomp09/manol-pipe-c9.cnf.gz
+satcomp09/minxorminand064.cnf.gz
+satcomp09/AProVE07-16.cnf.gz
+satcomp09/smulo016.cnf.gz
+satcomp09/goldb-heqc-dalumul.cnf.gz
+satcomp09/q_query_3_l48_lambda.cnf.gz
+satcomp09/post-c32s-gcdm16-23.cnf.gz
+satcomp09/schup-l2s-abp4-1-k31.cnf.gz
+satcomp09/simon-s02b-dp11u10.cnf.gz
+satcomp09/UR-20-5p0.cnf.gz
+satcomp09/countbitssrl016.cnf.gz
+satcomp09/gus-md5-07.cnf.gz
+satcomp09/rpoc_xits_07_UNSAT.cnf.gz
+satcomp09/q_query_3_L200_coli.sat.cnf.gz
+satcomp09/dated-5-15-u.cnf.gz
+satcomp09/eq.atree.braun.10.unsat.cnf.gz
+satcomp09/cmu-bmc-longmult15.cnf.gz
+satcomp09/UR-15-10p0.cnf.gz
+satcomp09/q_query_2_L324_coli.cnf.gz
+satcomp09/AProVE07-09.cnf.gz
+satcomp09/countbitsrotate016.cnf.gz
+satcomp09/post-cbmc-aes-d-r2-noholes.cnf.gz
+satcomp09/UCG-15-10p0.cnf.gz
+satcomp09/maxxororand032.cnf.gz
+satcomp09/goldb-heqc-alu4mul.cnf.gz
+satcomp09/q_query_3_l47_lambda.cnf.gz
+satcomp09/schup-l2s-bc56s-1-k391.cnf.gz
+satcomp09/minor032.cnf.gz
+satcomp09/q_query_3_L90_coli.sat.cnf.gz
+satcomp09/eq.atree.braun.8.unsat.cnf.gz
+satcomp09/UTI-10-10p0.cnf.gz
+satcomp09/AProVE07-08.cnf.gz
+satcomp09/minxorminand032.cnf.gz
+satcomp09/aloul-chnl11-13.cnf.gz
+satcomp09/total-10-13-u.cnf.gz
+satcomp09/goldb-heqc-i10mul.cnf.gz
+satcomp09/manol-pipe-c6bidw_i.cnf.gz
+satcomp09/9dlx_vliw_at_b_iq3.cnf.gz
+satcomp09/post-cbmc-aes-ee-r3-noholes.cnf.gz
+satcomp09/icbrt1_32.cnf.gz
+satcomp09/post-c32s-col400-16.cnf.gz
+satcomp09/eq.atree.braun.9.unsat.cnf.gz
+satcomp09/AProVE07-27.cnf.gz
+satcomp09/post-cbmc-aes-ee-r2-noholes.cnf.gz
+satcomp09/hsat_vc11813.cnf.gz
+satcomp09/manol-pipe-c10nidw.cnf.gz
+satcomp09/gus-md5-06.cnf.gz
+satcomp09/manol-pipe-c7nidw.cnf.gz
+satcomp09/velev-engi-uns-1.0-4nd.cnf.gz
+satcomp09/9dlx_vliw_at_b_iq4.cnf.gz
+satcomp09/post-cbmc-aes-ele-noholes.cnf.gz
+satcomp09/countbitswegner064.cnf.gz
+satcomp09/total-5-13-u.cnf.gz
+satcomp09/minor064.cnf.gz
+satcomp09/manol-pipe-g6bi.cnf.gz
+satcomp09/UR-15-5p0.cnf.gz
+satcomp09/velev-pipe-o-uns-1.0-7.cnf.gz
+satcomp09/emptyroom-4-h21-unsat.cnf.gz
+satcomp09/minxorminand128.cnf.gz
+satcomp09/countbitssrl032.cnf.gz
+satcomp09/manol-pipe-g10nid.cnf.gz
+satcomp09/total-5-11-u.cnf.gz
+satcomp09/velev-pipe-o-uns-1.1-6.cnf.gz
+satcomp09/uts-l06-ipc5-h33-unknown.cnf.gz
+satcomp09/UR-10-5p0.cnf.gz
+satcomp09/een-tip-uns-nusmv-t5.B.cnf.gz
+satcomp09/velev-live-uns-2.0-ebuf.cnf.gz
+satcomp09/gus-md5-05.cnf.gz
+satcomp09/manol-pipe-g10id.cnf.gz
+satcomp09/manol-pipe-g7nidw.cnf.gz
+satcomp09/goldb-heqc-term1mul.cnf.gz
+satcomp09/manol-pipe-c7bidw_i.cnf.gz
+satcomp09/rbcl_xits_06_UNSAT.cnf.gz
+satcomp09/uts-l05-ipc5-h27-unknown.cnf.gz
+satcomp09/manol-pipe-c6nidw_i.cnf.gz
+satcomp09/xinetd_vc56703.cnf.gz
+satcomp09/schup-l2s-guid-1-k56.cnf.gz
+satcomp09/uts-l06-ipc5-h31-unknown.cnf.gz
+satcomp09/rpoc_xits_08_UNSAT.cnf.gz
+satcomp09/manol-pipe-f9b.cnf.gz
+satcomp09/gus-md5-04.cnf.gz
+satcomp09/uts-l06-ipc5-h28-unknown.cnf.gz
+satcomp09/9dlx_vliw_at_b_iq1.cnf.gz
+satcomp09/cmu-bmc-barrel6.cnf.gz
+satcomp09/manol-pipe-f10ni.cnf.gz
+satcomp09/UCG-10-5p0.cnf.gz
+satcomp09/minand128.cnf.gz
+satcomp09/simon-s03-fifo8-300.cnf.gz
+satcomp09/manol-pipe-g10bidw.cnf.gz
+satcomp09/goldb-heqc-frg1mul.cnf.gz
+satcomp09/UCG-15-5p0.cnf.gz
+satcomp09/goldb-heqc-x1mul.cnf.gz
+satcomp09/minandmaxor032.cnf.gz
+satcomp09/countbitsarray02_32.cnf.gz
+satcomp09/minxor128.cnf.gz
+satcomp09/UTI-20-5p0.cnf.gz
+satcomp09/rbcl_xits_07_UNSAT.cnf.gz
+satcomp09/hsat_vc11803.cnf.gz
+satcomp09/q_query_3_l44_lambda.cnf.gz
+satcomp14/velev-vliw-uns-2.0-uq5.cnf.gz
+satcomp14/smtlib-qfbv-aigs-lfsr_004_127_112-tseitin.cnf.gz
+satcomp14/atco_enc1_opt2_05_4.cnf.gz
+satcomp14/q_query_3_L150_coli.sat.cnf.gz
+satcomp14/post-c32s-ss-8.cnf.gz
+satcomp14/q_query_3_L80_coli.sat.cnf.gz
+satcomp14/manol-pipe-c10nid_i.cnf.gz
+satcomp14/q_query_3_L100_coli.sat.cnf.gz
+satcomp14/6s131-opt.cnf.gz
+satcomp14/dated-10-13-u.cnf.gz
+satcomp14/q_query_3_l46_lambda.cnf.gz
+satcomp14/maxxor032.cnf.gz
+satcomp14/q_query_3_l45_lambda.cnf.gz
+satcomp14/manol-pipe-c10nidw_s.cnf.gz
+satcomp14/minxorminand064.cnf.gz
+satcomp14/6s153.cnf.gz
+satcomp14/manol-pipe-c8nidw.cnf.gz
+satcomp14/6s184.cnf.gz
+satcomp14/6s10.cnf.gz
+satcomp14/6s167-opt.cnf.gz
+satcomp14/q_query_3_l48_lambda.cnf.gz
+satcomp14/hwmcc10-timeframe-expansion-k45-pdtpmsgoodbakery-tseitin.cnf.gz
+satcomp14/6s133.cnf.gz
+satcomp14/pb_300_10_lb_08.cnf.gz
+satcomp14/bob12s02.cnf.gz
+satcomp14/post-cbmc-aes-d-r2.cnf.gz
+satcomp14/UR-20-5p0.cnf.gz
+satcomp14/atco_enc1_opt2_10_12.cnf.gz
+satcomp14/q_query_3_L200_coli.sat.cnf.gz
+satcomp14/atco_enc1_opt2_10_14.cnf.gz
+satcomp14/UR-15-10p0.cnf.gz
+satcomp14/beempgsol2b1.cnf.gz
+satcomp14/post-cbmc-aes-d-r2-noholes.cnf.gz
+satcomp14/UCG-15-10p0.cnf.gz
+satcomp14/aaai10-planning-ipc5-pathways-17-step20.cnf.gz
+satcomp14/q_query_3_L90_coli.sat.cnf.gz
+satcomp14/6s17-opt.cnf.gz
+satcomp14/6s11-opt.cnf.gz
+satcomp14/manol-pipe-g10bid_i.cnf.gz
+satcomp14/AProVE07-08.cnf.gz
+satcomp14/total-10-13-u.cnf.gz
+satcomp14/9dlx_vliw_at_b_iq3.cnf.gz
+satcomp14/6s13-opt.cnf.gz
+satcomp14/k2fix_gr_rcs_w9.shuffled.cnf.gz
+satcomp14/velev-vliw-uns-4.0-9.cnf.gz
+satcomp14/AProVE07-27.cnf.gz
+satcomp14/post-cbmc-aes-ee-r2-noholes.cnf.gz
+satcomp14/manol-pipe-c10nidw.cnf.gz
+satcomp14/AProVE07-03.cnf.gz
+satcomp14/UCG-20-5p0.cnf.gz
+satcomp14/9dlx_vliw_at_b_iq4.cnf.gz
+satcomp14/6s165-nonopt.cnf.gz
+satcomp14/bob12s09-opt.cnf.gz
+satcomp14/c10bi_i.cnf.gz
+satcomp14/grid-strips-grid-y-3.035-NOTKNOWN.cnf.gz
+satcomp14/smtlib-qfbv-aigs-ext_con_032_008_0256-tseitin.cnf.gz
+satcomp14/6s9.cnf.gz
+satcomp14/countbitssrl032.cnf.gz
+satcomp14/6s16.cnf.gz
+satcomp14/7pipe_k.cnf.gz
+satcomp14/hwmcc10-timeframe-expansion-k50-pdtpmsns2-tseitin.cnf.gz
+satcomp14/aaai10-planning-ipc5-pathways-13-step17.cnf.gz
+satcomp14/6s16-opt.cnf.gz
+satcomp14/6s130-opt.cnf.gz
+satcomp14/6s168-opt.cnf.gz
+satcomp14/6s12.cnf.gz
+satcomp14/atco_enc1_opt2_10_15.cnf.gz
+satcomp14/beempgsol5b1.cnf.gz
+satcomp14/6s169-opt.cnf.gz
+satcomp14/bob12m09-opt.cnf.gz
+satcomp14/minxor128.cnf.gz
+satcomp14/dated-10-11-u.cnf.gz
+satcomp14/pb_300_10_lb_07.cnf.gz
+satcomp16/velev-vliw-uns-2.0-uq5.cnf.gz
+satcomp16/q_query_3_L200_coli.sat.cnf.gz
+satcomp16/UR-15-10p0.cnf.gz
+satcomp16/maxxororand032.cnf.gz
+satcomp16/schup-l2s-bc56s-1-k391.cnf.gz
+satcomp16/total-10-13-u.cnf.gz
+satcomp16/minxorminand128.cnf.gz
+satcomp16/arcfour_initialPermutation_6_14.cnf.gz
+satcomp16/rpoc_xits_08_UNSAT.cnf.gz
+satcomp11/slp-synthesis-aes-bottom13.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k45-pdtswvrod6x8p1-tseitin.cnf.gz
+satcomp11/smtlib-qfbv-aigs-lfsr_004_127_112-tseitin.cnf.gz
+satcomp11/q_query_3_L150_coli.sat.cnf.gz
+satcomp11/hard-25-U-7061.cnf.gz
+satcomp11/smtlib-qfbv-aigs-lfsr_008_063_080-tseitin.cnf.gz
+satcomp11/aaai10-planning-ipc5-pipesworld-27-step13.cnf.gz
+satcomp11/grid-strips-grid-y-4.025-NOTKNOWN.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k45-pdtvissoap1-tseitin.cnf.gz
+satcomp11/q_query_3_l46_lambda.cnf.gz
+satcomp11/AProVE07-21.cnf.gz
+satcomp11/hard-18-U-10652.cnf.gz
+satcomp11/maxxor032.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k50-bc57sensorsp3-tseitin.cnf.gz
+satcomp11/traffic_pcb_unknown.cnf.gz
+satcomp11/traffic_fb_unknown.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k45-bc57sensorsp1-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k45-pdtviseisenberg1-tseitin.cnf.gz
+satcomp11/E02F17.cnf.gz
+satcomp11/comb1.shuffled.cnf.gz
+satcomp11/ACG-10-10p0.cnf.gz
+satcomp11/post-c32s-gcdm16-23.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k45-pdtpmsgoodbakery-tseitin.cnf.gz
+satcomp11/manol-pipe-f7nidw.cnf.gz
+satcomp11/slp-synthesis-aes-bottom12.cnf.gz
+satcomp11/korf-15.cnf.gz
+satcomp11/SAT_dat.k80.cnf.gz
+satcomp11/dspam_dump_vc949.cnf.gz
+satcomp11/aaai10-planning-ipc5-pipesworld-12-step15.cnf.gz
+satcomp11/rand_net60-30-1.shuffled.cnf.gz
+satcomp11/UCG-15-10p0.cnf.gz
+satcomp11/smtlib-qfbv-aigs-lfsr_008_079_112-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k50-pdtswvsam6x8p3-tseitin.cnf.gz
+satcomp11/aaai10-planning-ipc5-pathways-17-step20.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k45-pdtswvqis8x8p2-tseitin.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k45-bobsm5378d2-tseitin.cnf.gz
+satcomp11/6pipe_6_ooo.shuffled-as.sat03-413.cnf.gz
+satcomp11/traffic_f_unknown.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k50-bjrb07amba2andenv-tseitin.cnf.gz
+satcomp11/SAT_dat.k45.cnf.gz
+satcomp11/manol-pipe-c6bidw_i.cnf.gz
+satcomp11/minandmaxor016.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k50-pdtviseisenberg2-tseitin.cnf.gz
+satcomp11/AProVE11-11.cnf.gz
+satcomp11/k2fix_gr_rcs_w9.shuffled.cnf.gz
+satcomp11/traffic_kkb_unknown.cnf.gz
+satcomp11/dp04u03.shuffled.cnf.gz
+satcomp11/aaai10-planning-ipc5-pipesworld-18-step15.cnf.gz
+satcomp11/k2mul.miter.shuffled-as.sat03-355.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k50-bc57sensorsp2-tseitin.cnf.gz
+satcomp11/E07N15.cnf.gz
+satcomp11/x1mul.miter.shuffled-as.sat03-359.cnf.gz
+satcomp11/UTI-20-10t0.cnf.gz
+satcomp11/homer14.shuffled.cnf.gz
+satcomp11/all.used-as.sat04-986.cnf.gz
+satcomp11/manol-pipe-c10nidw.cnf.gz
+satcomp11/AProVE07-03.cnf.gz
+satcomp11/E03N17.cnf.gz
+satcomp11/hard-6-U-7061.cnf.gz
+satcomp11/grid-strips-grid-y-3.035-NOTKNOWN.cnf.gz
+satcomp11/velev-pipe-o-uns-1.0-7.cnf.gz
+satcomp11/dated-5-11-u.cnf.gz
+satcomp11/IBM_FV_2004_rule_batch_30_SAT_dat.k80.cnf.gz
+satcomp11/hsat_vc12062.cnf.gz
+satcomp11/smtlib-qfbv-aigs-ext_con_032_008_0256-tseitin.cnf.gz
+satcomp11/minxorminand128.cnf.gz
+satcomp11/blocks-4-ipc5-h21-unknown.cnf.gz
+satcomp11/traffic_b_unsat.cnf.gz
+satcomp11/velev-pipe-o-uns-1.1-6.cnf.gz
+satcomp11/SAT_dat.k20.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k50-pdtpmsns2-tseitin.cnf.gz
+satcomp11/SAT_dat.k100.cnf.gz
+satcomp11/c10idw_i.cnf.gz
+satcomp11/c6288mul.miter.shuffled-as.sat03-346.cnf.gz
+satcomp11/blocks-blocks-37-1.120-NOTKNOWN.cnf.gz
+satcomp11/sokoban-sequential-p145-microban-sequential.030-NOTKNOWN.cnf.gz
+satcomp11/aaai10-planning-ipc5-pathways-13-step17.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k50-nusmvreactorp4-tseitin.cnf.gz
+satcomp11/traffic_3b_unknown.cnf.gz
+satcomp11/E04N18.cnf.gz
+satcomp11/E05X15.cnf.gz
+satcomp11/rand_net60-40-10.shuffled.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k50-pdtvisns2p3-tseitin.cnf.gz
+satcomp11/manol-pipe-f7idw.cnf.gz
+satcomp11/smtlib-qfbv-aigs-nlzbe256-tseitin.cnf.gz
+satcomp11/rand_net60-25-10.shuffled.cnf.gz
+satcomp11/E15N15.cnf.gz
+satcomp11/dekker.used-as.sat04-989.cnf.gz
+satcomp11/UCG-15-5p0.cnf.gz
+satcomp11/hwmcc10-timeframe-expansion-k45-pdtswvtms14x8p1-tseitin.cnf.gz
+satcomp11/rand_net70-60-10.shuffled.cnf.gz
+satcomp11/aaai10-planning-ipc5-rovers-18-step11.cnf.gz
+satrace15/velev-vliw-uns-2.0-uq5.cnf.gz
+satrace15/q_query_3_L150_coli.sat.cnf.gz
+satrace15/manthey_single-ordered-initialized-w42-b8.cnf.gz
+satrace15/post-c32s-ss-8.cnf.gz
+satrace15/q_query_3_L80_coli.sat.cnf.gz
+satrace15/manthey_single-ordered-initialized-w40-b8.cnf.gz
+satrace15/manthey_single-ordered-initialized-w44-b9.cnf.gz
+satrace15/mrpp_8x8#8_9.cnf.gz
+satrace15/manthey_single-ordered-initialized-w28-b8.cnf.gz
+satrace15/manthey_single-ordered-initialized-w40-b10.cnf.gz
+satrace15/manol-pipe-c10nid_i.cnf.gz
+satrace15/6s131-opt.cnf.gz
+satrace15/manthey_single-ordered-initialized-w22-b8.cnf.gz
+satrace15/dated-10-13-u.cnf.gz
+satrace15/mrpp_8x8#24_11.cnf.gz
+satrace15/minxorminand064.cnf.gz
+satrace15/mrpp_4x4#6_5.cnf.gz
+satrace15/6s167-opt.cnf.gz
+satrace15/manthey_single-ordered-initialized-w44-b7.cnf.gz
+satrace15/manthey_single-ordered-initialized-w44-b6.cnf.gz
+satrace15/6s133.cnf.gz
+satrace15/manthey_single-ordered-initialized-w42-b9.cnf.gz
+satrace15/mrpp_8x8#18_12.cnf.gz
+satrace15/bob12s02.cnf.gz
+satrace15/post-cbmc-aes-d-r2.cnf.gz
+satrace15/manthey_single-ordered-initialized-w44-b8.cnf.gz
+satrace15/manthey_single-ordered-initialized-w20-b8.cnf.gz
+satrace15/group_mulr.cnf.gz
+satrace15/q_query_3_L200_coli.sat.cnf.gz
+satrace15/mrpp_6x6#16_9.cnf.gz
+satrace15/atco_enc1_opt2_10_14.cnf.gz
+satrace15/beempgsol2b1.cnf.gz
+satrace15/post-cbmc-aes-d-r2-noholes.cnf.gz
+satrace15/mrpp_6x6#12_8.cnf.gz
+satrace15/aaai10-planning-ipc5-pathways-17-step20.cnf.gz
+satrace15/6s17-opt.cnf.gz
+satrace15/6s11-opt.cnf.gz
+satrace15/6s13-opt.cnf.gz
+satrace15/k2fix_gr_rcs_w9.shuffled.cnf.gz
+satrace15/mrpp_6x6#20_10.cnf.gz
+satrace15/AProVE07-27.cnf.gz
+satrace15/manthey_single-ordered-initialized-w18-b8.cnf.gz
+satrace15/post-cbmc-aes-ee-r2-noholes.cnf.gz
+satrace15/manthey_single-ordered-initialized-w50-b6.cnf.gz
+satrace15/manthey_single-ordered-initialized-w26-b8.cnf.gz
+satrace15/AProVE07-03.cnf.gz
+satrace15/UCG-20-5p0.cnf.gz
+satrace15/manthey_single-ordered-initialized-w24-b7.cnf.gz
+satrace15/manthey_single-ordered-initialized-w24-b9.cnf.gz
+satrace15/6s165-nonopt.cnf.gz
+satrace15/mrpp_6x6#18_9.cnf.gz
+satrace15/manthey_single-ordered-initialized-w26-b7.cnf.gz
+satrace15/mrpp_8x8#22_10.cnf.gz
+satrace15/mrpp_4x4#4_4.cnf.gz
+satrace15/manthey_single-ordered-initialized-w22-b6.cnf.gz
+satrace15/6s9.cnf.gz
+satrace15/mrpp_4x4#12_12.cnf.gz
+satrace15/countbitssrl032.cnf.gz
+satrace15/6s16.cnf.gz
+satrace15/7pipe_k.cnf.gz
+satrace15/hwmcc10-timeframe-expansion-k50-pdtpmsns2-tseitin.cnf.gz
+satrace15/manthey_single-ordered-initialized-w46-b7.cnf.gz
+satrace15/aaai10-planning-ipc5-pathways-13-step17.cnf.gz
+satrace15/6s16-opt.cnf.gz
+satrace15/6s130-opt.cnf.gz
+satrace15/6s168-opt.cnf.gz
+satrace15/mrpp_8x8#12_9.cnf.gz
+satrace15/manthey_single-ordered-initialized-w48-b6.cnf.gz
+satrace15/manthey_single-ordered-initialized-w18-b7.cnf.gz
+satrace15/manthey_single-ordered-initialized-w32-b9.cnf.gz
+satrace15/beempgsol5b1.cnf.gz
+satrace15/6s169-opt.cnf.gz
+satrace15/bob12m09-opt.cnf.gz
+satrace15/manthey_single-ordered-initialized-w20-b7.cnf.gz
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/ec2-spot-instance-test.cfg b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/ec2-spot-instance-test.cfg
new file mode 100644
index 000000000..3411ff88c
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/ec2-spot-instance-test.cfg
@@ -0,0 +1,47 @@
+[ec2]
+count=1
+
+#####################
+# Oregon -- us-west-2
+#####################
+# region=us-west-2
+# subnet_id =subnet-88ab16ed
+# security_group_client=sg-bc7b3fd9
+# security_group_server=sg-507b3f35
+# key_name=controlkey
+# result_bucket=msoos-solve-results-oregon
+## us-west-2 Ubuntu 14.04 LTS
+## ami_id = ami-3ede3d5e
+## us-west-2 hvm:ebs-ssd 16.04 LTS
+# ami_id=ami-5dca1925
+
+#####################
+# London -- eu-west-2
+#####################
+# region=eu-west-2
+# subnet_id =subnet-eb12cf90
+# security_group_client=sg-d97fd8b1
+# security_group_server=sg-797dda11
+# key_name=controlkey-lon
+# result_bucket=msoos-solve-results-ireland
+# # eu-west-2 hvm:ebs-ssd 16.04 LTS
+# ami_id=ami-4c0b1428
+
+#####################
+# Ireland -- eu-west-1
+#####################
+region=eu-west-1
+subnet_id =subnet-05c8e843
+security_group_client=sg-715c360a
+security_group_server=sg-b05e34cb
+key_name=controlkey-ireland
+result_bucket=msoos-solve-results-ireland
+# eu-west-2 hvm:ebs-ssd 16.04 LTS
+ami_id=ami-8fd760f6
+
+max_bid=0.09
+instance_profile_name=client
+instance_profile_arn=arn:aws:iam::907572138573:instance-profile/client
+
+# has instance storage
+type=r3.large
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/ec2-spot-instance.cfg b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/ec2-spot-instance.cfg
new file mode 100644
index 000000000..0e0111ea8
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/ec2-spot-instance.cfg
@@ -0,0 +1,51 @@
+[ec2]
+count=2
+max_bid=0.85
+
+#####################
+# Oregon -- us-west-2
+#####################
+# region=us-west-2
+# subnet_id =subnet-88ab16ed
+# security_group_client=sg-bc7b3fd9
+# security_group_server=sg-507b3f35
+# key_name=controlkey
+# result_bucket=msoos-solve-results-oregon
+## us-west-2 Ubuntu 14.04 LTS
+## ami_id = ami-3ede3d5e
+## us-west-2 hvm:ebs-ssd 16.04 LTS
+# ami_id=ami-5dca1925
+
+#####################
+# London -- eu-west-2
+#####################
+# region=eu-west-2
+# subnet_id =subnet-eb12cf90
+# security_group_client=sg-d97fd8b1
+# security_group_server=sg-797dda11
+# key_name=controlkey-lon
+# result_bucket=msoos-solve-results-ireland
+# # eu-west-2 hvm:ebs-ssd 16.04 LTS
+# ami_id=ami-4c0b1428
+
+#####################
+# Ireland -- eu-west-1
+#####################
+region=eu-west-1
+subnet_id =subnet-05c8e843
+security_group_client=sg-715c360a
+security_group_server=sg-b05e34cb
+key_name=controlkey-ireland
+result_bucket=msoos-solve-results-ireland
+# eu-west-2 hvm:ebs-ssd 16.04 LTS
+ami_id=ami-8fd760f6
+
+
+instance_profile_name=client
+instance_profile_arn=arn:aws:iam::907572138573:instance-profile/client
+
+#preference would be:
+# c4.8xlarge for speed (but no DRAT)
+# r3.8xlarge for DRAT -- due to memory need AND instance store!! r4 does not have instance store...
+# but c3.8xlarge is _cheap_ and only 0.8x speed of c4.8xlarge
+type=r3.8xlarge
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/launch_server.py b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/launch_server.py
new file mode 100755
index 000000000..3fd36fed1
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/launch_server.py
@@ -0,0 +1,153 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2018 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+from __future__ import print_function
+import sys
+import boto.ec2
+import os
+import subprocess
+import server_option_parser
+
+
+def get_answer():
+ yes = set(['yes', 'y', 'ye'])
+ no = set(['no', 'n'])
+
+ choice = input().lower()
+ if choice in yes:
+ return True
+ elif choice in no:
+ return False
+ else:
+ sys.stdout.write("Please respond with 'yes' or 'no'\n")
+ exit(0)
+
+
+def push():
+ print("First we push, oherwise we'll forget...")
+ ret = os.system("git push")
+ if ret != 0:
+ print("Oops, couldn't push, exiting before executing")
+ exit(-1)
+
+ print("")
+
+
+if __name__ == "__main__":
+ options, args = server_option_parser.parse_arguments()
+ print("Options are:")
+ for a, b in options.__dict__.items():
+ print("-- %-30s : %s" % (a, b))
+ assert args == []
+
+ if options.mem_limit_in_mb < 10000 and options.drat:
+ print("******* WARNING ********")
+ print("Beware: your memory is WAY too low for DRAT and learning stuff")
+
+ push()
+ data = ""
+ opt_is_on = False
+ for x in sys.argv[1:]:
+ if opt_is_on:
+ data += " ".join(x.split(","))
+ data += "\" "
+ opt_is_on = False
+ continue
+ if x != "--opt":
+ data += x + " "
+ continue
+
+ opt_is_on = True
+ data += "--opt \""
+
+ if ("--git" not in data):
+ revision = subprocess.check_output(['git', 'rev-parse', 'HEAD']).strip().decode("utf-8")
+ data += " --git '{revision}'".format(revision=revision)
+
+ if len(sys.argv) > 1:
+ print("Launching with data: %s" % data)
+ else:
+ print("you must give at least one parameter, probably --s3folder")
+ exit(-1)
+
+ sys.stdout.write("Is this OK? [y/n]? ")
+ if not get_answer():
+ print("Aborting")
+ exit(0)
+
+ print("Executing!")
+
+ cloud_init = """#!/bin/bash
+set -e
+
+apt-get update
+apt-get install -y python
+apt-get -y install git python-pip
+pip install --force-reinstall --upgrade awscli
+pip install --force-reinstall --upgrade boto
+pip install configparser
+
+# Get AWS log agent
+cd /home/ubuntu/
+
+cat > aws-logs-server.conf << EOF
+[general]
+state_file = /home/ubuntu/cloudwatch.state
+
+[logstream1]
+log_group_name = cyrptominisat-perftest
+log_stream_name = server
+file = /home/ubuntu/*.log
+
+[messages]
+log_group_name = cyrptominisat-perftest
+log_stream_name = server
+file = /var/log/messages
+EOF
+
+curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
+python ./awslogs-agent-setup.py --region {region} -c aws-logs-server.conf -n
+
+sudo -H -u ubuntu bash -c 'ssh-keyscan github.com >> ~/.ssh/known_hosts'
+sudo -H -u ubuntu bash -c 'git clone --depth 50 https://github.com/msoos/cryptominisat.git'
+
+# Get credentials
+cd /home/ubuntu
+sudo -H -u ubuntu bash -c 'aws s3 cp s3://msoos-solve-data/solvers/email.conf . --region={region}'
+
+# Start server
+cd /home/ubuntu/cryptominisat
+sudo -H -u ubuntu bash -c '/home/ubuntu/cryptominisat/scripts/aws/pre-server.py > /home/ubuntu/pre_server_log.log 2>&1 &'
+
+DATA="{data}"
+ """.format(region=options.region, data=data)
+
+ conn = boto.ec2.connect_to_region(options.region)
+ conn.run_instances(
+ min_count=1,
+ max_count=1,
+ image_id=options.ami_id,
+ subnet_id=options.subnet_id,
+ instance_type='t2.micro',
+ instance_profile_arn='arn:aws:iam::907572138573:instance-profile/server',
+ user_data=cloud_init,
+ key_name=options.key_name,
+ security_group_ids=[options.security_group_server],
+ instance_initiated_shutdown_behavior='terminate')
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/pack_cnf_lists.py b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/pack_cnf_lists.py
new file mode 100755
index 000000000..d085b56f8
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/pack_cnf_lists.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2018 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+from __future__ import print_function
+import sys
+
+if len(sys.argv) == 1:
+ print("""Usage example:
+./{name} satcomp14_updated satcomp16_updated > satcomp1416_updated
+""".format(name=sys.argv[0]))
+ exit(-1)
+
+files = {}
+for a in range(len(sys.argv)-1):
+ with open(sys.argv[a+1], "r") as f:
+ for l in f:
+ l = l.strip()
+ fname = l[l.find("/")+1:]
+ files[fname] = l
+
+for a,b in files.items():
+ print(b)
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/pre-server.py b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/pre-server.py
new file mode 100755
index 000000000..01702484f
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/pre-server.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2018 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+import boto.utils
+import os
+
+user_data = boto.utils.get_instance_userdata()
+
+todo = ""
+for line in user_data.split("\n"):
+ if "DATA" in line:
+ todo = line[5:].strip().strip('"')
+
+if todo == "":
+ exit(0)
+
+os.chdir("/home/ubuntu/cryptominisat/scripts/aws/")
+command = "nohup /home/ubuntu/cryptominisat/scripts/aws/server.py %s &" % todo
+os.system(command)
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/satcomp091113_updated b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/satcomp091113_updated
new file mode 100644
index 000000000..c94033705
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/satcomp091113_updated
@@ -0,0 +1,751 @@
+satcomp091113/gss-20-s100.cnf.gz
+satcomp091113/slp-synthesis-aes-bottom15.cnf.gz
+satcomp091113/bivium-40-200-0s0-0x66b619d7b8e447710bf43b794ded6cfaf1e75bb8a947e14c78-50.cnf.gz
+satcomp091113/bivium-40-200-0s0-0x92fc13b11169afbb2ef11a684d9fe9a19e743cd6aa5ce23fb5-19.cnf.gz
+satcomp091113/countbitsarray02_32.cnf.gz
+satcomp091113/ibm-2002-21r-k95.cnf.gz
+satcomp091113/smtlib-qfbv-aigs-countbits128-tseitin.cnf.gz
+satcomp091113/smulo128.cnf.gz
+satcomp091113/gss-33-s100.cnf.gz
+satcomp091113/rbcl_xits_08_UNSAT.cnf.gz
+satcomp091113/rbcl_xits_09_UNKNOWN.cnf.gz
+satcomp091113/minandmaxor032.cnf.gz
+satcomp091113/icbrt1_32.cnf.gz
+satcomp091113/sokoban-sequential-p145-microban-sequential.070-NOTKNOWN.cnf.gz
+satcomp091113/hitag2-8-60-0-0x880693399044612-25-SAT.cnf.gz
+satcomp091113/traffic_pcb_unknown.cnf.gz
+satcomp091113/k2fix_gr_rcs_w8.shuffled.cnf.gz
+satcomp091113/pb_300_01_lb_00.cnf.gz
+satcomp091113/transport-transport-two-cities-sequential-15nodes-1000size-3degree-100mindistance-3trucks-10packages-2008seed.040-SAT.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k45-pdtpmspalu-tseitin.cnf.gz
+satcomp091113/bierebob12s02.cnf.gz
+satcomp091113/mizh-md5-48-5.cnf.gz
+satcomp091113/b04_s_unknown.cnf.gz
+satcomp091113/rbcl_xits_14_SAT.cnf.gz
+satcomp091113/rpoc_xits_12_UNKNOWN.cnf.gz
+satcomp091113/6s20.cnf.gz
+satcomp091113/manol-pipe-c10nid_i.cnf.gz
+satcomp091113/22-160-nossum003.cnf.gz
+satcomp091113/md5_48_2.cnf.gz
+satcomp091113/AProVE07-25.cnf.gz
+satcomp091113/q_query_3_l45_lambda.cnf.gz
+satcomp091113/UR-15-5p0.cnf.gz
+satcomp091113/9dlx_vliw_at_b_iq3.cnf.gz
+satcomp091113/manol-pipe-g6bi.cnf.gz
+satcomp091113/aaai10-planning-ipc5-rovers-18-step11.cnf.gz
+satcomp091113/total-5-11-u.cnf.gz
+satcomp091113/aes_64_2_keyfind_1.cnf.gz
+satcomp091113/grid-strips-grid-y-3.035-NOTKNOWN.cnf.gz
+satcomp091113/blocks-blocks-37-1.120-NOTKNOWN.cnf.gz
+satcomp091113/ACG-10-10p0.cnf.gz
+satcomp091113/traffic_f_unknown.cnf.gz
+satcomp091113/9vliw_m_9stages_iq3_C1_bug8.cnf.gz
+satcomp091113/traffic_fb_unknown.cnf.gz
+satcomp091113/partial-10-11-s.cnf.gz
+satcomp091113/AProVE09-20.cnf.gz
+satcomp091113/aaai10-planning-ipc5-pathways-17-step20.cnf.gz
+satcomp091113/li-exam-61.shuffled-as.sat03-366.cnf.gz
+satcomp091113/manol-pipe-f7idw.cnf.gz
+satcomp091113/b04_s_2_unknown_pre.cnf.gz
+satcomp091113/partial-5-13-u.cnf.gz
+satcomp091113/q_query_3_l40_lambda.cnf.gz
+satcomp091113/AProVE07-16.cnf.gz
+satcomp091113/goldb-heqc-dalumul.cnf.gz
+satcomp091113/vmpc_29.cnf.gz
+satcomp091113/9vliw_m_9stages_iq3_C1_bug9.cnf.gz
+satcomp091113/biere6s139.cnf.gz
+satcomp091113/aaai10-planning-ipc5-pathways-13-step17.cnf.gz
+satcomp091113/E05X15.cnf.gz
+satcomp091113/minandmaxor128.cnf.gz
+satcomp091113/ACG-15-5p1.cnf.gz
+satcomp091113/vmpc_36.renamed-as.sat05-1922.cnf.gz
+satcomp091113/transport-transport-city-sequential-35nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.030-NOTKNOWN.cnf.gz
+satcomp091113/maxxororand032.cnf.gz
+satcomp091113/manol-pipe-c6nidw_i.cnf.gz
+satcomp091113/q_query_3_l48_lambda.cnf.gz
+satcomp091113/aaai10-planning-ipc5-TPP-21-step11.cnf.gz
+satcomp091113/countbitsarray04_32.cnf.gz
+satcomp091113/slp-synthesis-aes-bottom14.cnf.gz
+satcomp091113/q_query_3_l41_lambda.cnf.gz
+satcomp091113/AProVE09-22.cnf.gz
+satcomp091113/23-80-nossum001.cnf.gz
+satcomp091113/blocks-blocks-36-0.170-NOTKNOWN.cnf.gz
+satcomp091113/22-128-nossum010.cnf.gz
+satcomp091113/biere6s9.cnf.gz
+satcomp091113/velev-vliw-uns-4.0-9.cnf.gz
+satcomp091113/ctl_4291_567_9_unsat_pre.cnf.gz
+satcomp091113/smtlib-qfbv-aigs-bin_libsmbsharemodes_vc5759-tseitin.cnf.gz
+satcomp091113/biere6s166.cnf.gz
+satcomp091113/22-160-nossum009.cnf.gz
+satcomp091113/maxxororand064.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k45-pdtviseisenberg1-tseitin.cnf.gz
+satcomp091113/manol-pipe-g10nid.cnf.gz
+satcomp091113/hitag2-7-60-0-0xe8fa35372ed37e2-80.cnf.gz
+satcomp091113/AProVE09-03.cnf.gz
+satcomp091113/ctl_4291_567_11_unsat.cnf.gz
+satcomp091113/E04F19.cnf.gz
+satcomp091113/pb_400_09_lb_02.cnf.gz
+satcomp091113/6s137.cnf.gz
+satcomp091113/gss-28-s100.cnf.gz
+satcomp091113/li-test4-100.shuffled-as.sat03-370.cnf.gz
+satcomp091113/22-144-nossum005.cnf.gz
+satcomp091113/sokoban-sequential-p145-microban-sequential.040-NOTKNOWN.cnf.gz
+satcomp091113/manol-pipe-f7nidw.cnf.gz
+satcomp091113/dated-10-13-u.cnf.gz
+satcomp091113/manol-pipe-g10bidw.cnf.gz
+satcomp091113/vda_gr_rcs_w9.shuffled.cnf.gz
+satcomp091113/80-8-nossum006.cnf.gz
+satcomp091113/hitag2-10-60-0-0xe14721bd199894a-99.cnf.gz
+satcomp091113/UR-20-5p0.cnf.gz
+satcomp091113/rbcl_xits_11_UNKNOWN.cnf.gz
+satcomp091113/hitag2-10-60-0-0xa04d664a73eac4d-66.cnf.gz
+satcomp091113/E00X23.cnf.gz
+satcomp091113/biere6s19.cnf.gz
+satcomp091113/22-144-nossum003.cnf.gz
+satcomp091113/aes_64_3_keyfind_1.cnf.gz
+satcomp091113/minxorminand064.cnf.gz
+satcomp091113/schup-l2s-guid-1-k56.cnf.gz
+satcomp091113/rpoc_xits_09_UNSAT.cnf.gz
+satcomp091113/uts-l05-ipc5-h26-unsat.cnf.gz
+satcomp091113/ctl_4291_567_8_unsat_pre.cnf.gz
+satcomp091113/6pipe_6_ooo.shuffled-as.sat03-413.cnf.gz
+satcomp091113/zfcp-2.8-u2-nh.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k45-pdtvisns3p02-tseitin.cnf.gz
+satcomp091113/q_query_3_L90_coli.sat.cnf.gz
+satcomp091113/ndhf_xits_21_SAT.cnf.gz
+satcomp091113/q_query_3_L150_coli.sat.cnf.gz
+satcomp091113/22-160-nossum007.cnf.gz
+satcomp091113/q_query_3_l47_lambda.cnf.gz
+satcomp091113/smtlib-qfbv-aigs-rfunit_flat-64-tseitin.cnf.gz
+satcomp091113/gss-25-s100.cnf.gz
+satcomp091113/pb_300_05_lb_17.cnf.gz
+satcomp091113/bierebob12s04.cnf.gz
+satcomp091113/vmpc_24.cnf.gz
+satcomp091113/manol-pipe-c7nidw.cnf.gz
+satcomp091113/goldb-heqc-i10mul.cnf.gz
+satcomp091113/velev-pipe-sat-1.0-b7.cnf.gz
+satcomp091113/gss-15-s100.cnf.gz
+satcomp091113/vmpc_28.cnf.gz
+satcomp091113/countbitswegner064.cnf.gz
+satcomp091113/smulo016.cnf.gz
+satcomp091113/gus-md5-14.cnf.gz
+satcomp091113/cmu-bmc-barrel6.cnf.gz
+satcomp091113/gripper13u.shuffled-as.sat03-395.cnf.gz
+satcomp091113/blocks-blocks-36-0.160-NOTKNOWN.cnf.gz
+satcomp091113/minor032.cnf.gz
+satcomp091113/E02F20.cnf.gz
+satcomp091113/gss-17-s100.cnf.gz
+satcomp091113/ndhf_xits_15_UNKNOWN.cnf.gz
+satcomp091113/9vliw_m_9stages_iq3_C1_bug6.cnf.gz
+satcomp091113/22-160-nossum001.cnf.gz
+satcomp091113/gss-21-s100.cnf.gz
+satcomp091113/aes_128_2_keyfind_1.cnf.gz
+satcomp091113/mizh-sha0-36-4.cnf.gz
+satcomp091113/md5_47_1.cnf.gz
+satcomp091113/transport-transport-three-cities-sequential-14nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.020-NOTKNOWN.cnf.gz
+satcomp091113/p01_lb_05.cnf.gz
+satcomp091113/22-128-nossum007.cnf.gz
+satcomp091113/slp-synthesis-aes-bottom20.cnf.gz
+satcomp091113/gss-16-s100.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k50-bjrb07amba2andenv-tseitin.cnf.gz
+satcomp091113/AProVE09-07.cnf.gz
+satcomp091113/23-96-nossum003.cnf.gz
+satcomp091113/mizh-sha0-36-2.cnf.gz
+satcomp091113/gss-31-s100.cnf.gz
+satcomp091113/eq.atree.braun.9.unsat.cnf.gz
+satcomp091113/transport-transport-city-sequential-25nodes-1000size-3degree-100mindistance-3trucks-10packages-2008seed.060-SAT.cnf.gz
+satcomp091113/11pipe_k.cnf.gz
+satcomp091113/pb_300_05_lb_16.cnf.gz
+satcomp091113/rpoc_xits_10_UNKNOWN.cnf.gz
+satcomp091113/hitag2-10-60-0-0x2201a94920a2d2e-8.cnf.gz
+satcomp091113/AProVE07-11.cnf.gz
+satcomp091113/dated-10-11-u.cnf.gz
+satcomp091113/grid-strips-grid-y-4.025-NOTKNOWN.cnf.gz
+satcomp091113/23-64-nossum003.cnf.gz
+satcomp091113/smtlib-qfbv-aigs-nlzbe256-tseitin.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k50-bc57sensorsp3-tseitin.cnf.gz
+satcomp091113/22-160-nossum002.cnf.gz
+satcomp091113/driverlog1_ks99i.renamed-as.sat05-3951.cnf.gz
+satcomp091113/slp-synthesis-aes-top28.cnf.gz
+satcomp091113/E04N18.cnf.gz
+satcomp091113/9vliw_m_9stages_iq3_C1_bug7.cnf.gz
+satcomp091113/AProVE09-24.cnf.gz
+satcomp091113/slp-synthesis-aes-bottom21.cnf.gz
+satcomp091113/grieu-vmpc-31.cnf.gz
+satcomp091113/rand_net60-30-1.shuffled.cnf.gz
+satcomp091113/aes_64_4_keyfind_1.cnf.gz
+satcomp091113/maxor128.cnf.gz
+satcomp091113/maxxor032.cnf.gz
+satcomp091113/total-10-15-s.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k45-bobsm5378d2-tseitin.cnf.gz
+satcomp091113/aaai10-planning-ipc5-pipesworld-18-step15.cnf.gz
+satcomp091113/gus-md5-10.cnf.gz
+satcomp091113/velev-pipe-o-uns-1.0-7.cnf.gz
+satcomp091113/AProVE11-02.cnf.gz
+satcomp091113/goldb-heqc-alu4mul.cnf.gz
+satcomp091113/comb1.shuffled.cnf.gz
+satcomp091113/q_query_3_l37_lambda.cnf.gz
+satcomp091113/aes_24_4_keyfind_4.cnf.gz
+satcomp091113/minor064.cnf.gz
+satcomp091113/minxor128.cnf.gz
+satcomp091113/80-8-nossum005.cnf.gz
+satcomp091113/slp-synthesis-aes-bottom19.cnf.gz
+satcomp091113/abb313GPIA-9-tr.used-as.sat04-321.cnf.gz
+satcomp091113/9dlx_vliw_at_b_iq7.cnf.gz
+satcomp091113/hard-25-U-7061.cnf.gz
+satcomp091113/bivium-39-200-0s0-0x5fa955de2b4f64d00226837d226c955de4566ce95f660180d7-30.cnf.gz
+satcomp091113/UCG-15-10p1.cnf.gz
+satcomp091113/22-160-nossum008.cnf.gz
+satcomp091113/manol-pipe-c10nidw.cnf.gz
+satcomp091113/eq.atree.braun.8.unsat.cnf.gz
+satcomp091113/UCG-15-10p0.cnf.gz
+satcomp091113/E05F20.cnf.gz
+satcomp091113/countbitsrotate128.cnf.gz
+satcomp091113/slp-synthesis-aes-top24.cnf.gz
+satcomp091113/partial-10-13-s.cnf.gz
+satcomp091113/partial-10-17-s.cnf.gz
+satcomp091113/22-144-nossum002.cnf.gz
+satcomp091113/ctl_3791_556_unsat.cnf.gz
+satcomp091113/gss-23-s100.cnf.gz
+satcomp091113/blocks-4-ipc5-h22-unknown.cnf.gz
+satcomp091113/sortnet-8-ipc5-h18-unsat.cnf.gz
+satcomp091113/hitag2-10-60-0-0xe6754daf48162bf-46.cnf.gz
+satcomp091113/9dlx_vliw_at_b_iq5.cnf.gz
+satcomp091113/velev-npe-1.0-9dlx-b71.cnf.gz
+satcomp091113/blocks-blocks-37-1.130-NOTKNOWN.cnf.gz
+satcomp091113/pb_400_09_lb_04.cnf.gz
+satcomp091113/schup-l2s-abp4-1-k31.cnf.gz
+satcomp091113/transport-transport-city-sequential-35nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.040-NOTKNOWN.cnf.gz
+satcomp091113/AProVE11-10.cnf.gz
+satcomp091113/slp-synthesis-aes-bottom16.cnf.gz
+satcomp091113/ctl_4201_555_unsat.cnf.gz
+satcomp091113/ctl_3082_415_unsat_pre.cnf.gz
+satcomp091113/simon-s03-w08-15.cnf.gz
+satcomp091113/9dlx_vliw_at_b_iq8.cnf.gz
+satcomp091113/ibm-2004-23-k100.cnf.gz
+satcomp091113/22-128-nossum003.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k50-nusmvreactorp4-tseitin.cnf.gz
+satcomp091113/23-96-nossum007.cnf.gz
+satcomp091113/9vliw_m_9stages_iq3_C1_bug10.cnf.gz
+satcomp091113/gus-md5-08.cnf.gz
+satcomp091113/arcfour_initialPermutation_6_15.cnf.gz
+satcomp091113/gss-22-s100.cnf.gz
+satcomp091113/aes_24_4_keyfind_2.cnf.gz
+satcomp091113/bivium-39-200-0s0-0x28df9231b320bd56dfb68bfc7c3f0ca20dbae6b0eba535ad91-98.cnf.gz
+satcomp091113/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_3.025-NOTKNOWN.cnf.gz
+satcomp091113/bc57-sensors-1-k303-unsat.shuffled-as.sat03-406.cnf.gz
+satcomp091113/gus-md5-04.cnf.gz
+satcomp091113/q_query_3_L200_coli.sat.cnf.gz
+satcomp091113/gss-14-s100.cnf.gz
+satcomp091113/vmpc_33.cnf.gz
+satcomp091113/vmpc_34.cnf.gz
+satcomp091113/AProVE11-12.cnf.gz
+satcomp091113/E15N15.cnf.gz
+satcomp091113/22-128-nossum006.cnf.gz
+satcomp091113/all.used-as.sat04-986.cnf.gz
+satcomp091113/countbitssrl032.cnf.gz
+satcomp091113/mizh-sha0-35-3.cnf.gz
+satcomp091113/partial-5-17-u.cnf.gz
+satcomp091113/aes_64_1_keyfind_1.cnf.gz
+satcomp091113/bob12m04.cnf.gz
+satcomp091113/grid-strips-grid-y-3.045-NOTKNOWN.cnf.gz
+satcomp091113/ibm-2004-01-k90.cnf.gz
+satcomp091113/rpoc_xits_14_UNKNOWN.cnf.gz
+satcomp091113/ACG-20-5p1.cnf.gz
+satcomp091113/simon-s02b-dp11u10.cnf.gz
+satcomp091113/rand_net60-25-10.shuffled.cnf.gz
+satcomp091113/simon-s03-fifo8-300.cnf.gz
+satcomp091113/manol-pipe-c6bidw_i.cnf.gz
+satcomp091113/hard-6-U-7061.cnf.gz
+satcomp091113/hitag2-10-60-0-0xac23f1205f76343-96.cnf.gz
+satcomp091113/mulhs032.cnf.gz
+satcomp091113/slp-synthesis-aes-top22.cnf.gz
+satcomp091113/AProVE11-13.cnf.gz
+satcomp091113/bivium-39-200-0s0-0xdcfb6ab71951500b8e460045bd45afee15c87e08b0072eb174-43.cnf.gz
+satcomp091113/md5_48_3.cnf.gz
+satcomp091113/countbitssrl128.cnf.gz
+satcomp091113/b_unsat_pre.cnf.gz
+satcomp091113/slp-synthesis-aes-bottom18.cnf.gz
+satcomp091113/9dlx_vliw_at_b_iq1.cnf.gz
+satcomp091113/hitag2-10-60-0-0xdf7fa6426edec07-17.cnf.gz
+satcomp091113/gus-md5-07.cnf.gz
+satcomp091113/minxorminand128.cnf.gz
+satcomp091113/b04_s_unknown_pre.cnf.gz
+satcomp091113/ctl_4291_567_12_unsat.cnf.gz
+satcomp091113/UTI-20-10p0.cnf.gz
+satcomp091113/ndhf_xits_14_UNSAT.cnf.gz
+satcomp091113/total-5-15-u.cnf.gz
+satcomp091113/vmpc_25.renamed-as.sat05-1913.cnf.gz
+satcomp091113/9dlx_vliw_at_b_iq6.used-as.sat04-347.cnf.gz
+satcomp091113/q_query_3_L70_coli.sat.cnf.gz
+satcomp091113/ACG-15-10p1.cnf.gz
+satcomp091113/ndhf_xits_11_UNSAT.cnf.gz
+satcomp091113/aes_32_3_keyfind_1.cnf.gz
+satcomp091113/smtlib-qfbv-aigs-src_wget_vc18517-tseitin.cnf.gz
+satcomp091113/eq.atree.braun.13.unsat.cnf.gz
+satcomp091113/AProVE11-15.cnf.gz
+satcomp091113/rbcl_xits_10_UNKNOWN.cnf.gz
+satcomp091113/manol-pipe-g10id.cnf.gz
+satcomp091113/SAT_dat.k80_04.cnf.gz
+satcomp091113/22-144-nossum007.cnf.gz
+satcomp091113/partial-5-11-u.cnf.gz
+satcomp091113/transport-transport-city-sequential-35nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.020-NOTKNOWN.cnf.gz
+satcomp091113/sha0_36_5.cnf.gz
+satcomp091113/9pipe_k.cnf.gz
+satcomp091113/pb_400_03_lb_07.cnf.gz
+satcomp091113/blocks-4-ipc5-h21-unknown.cnf.gz
+satcomp091113/hitag2-10-60-0-0xa360966c6eb75c4-62.cnf.gz
+satcomp091113/slp-synthesis-aes-bottom17.cnf.gz
+satcomp091113/partial-5-17-s.cnf.gz
+satcomp091113/mizh-sha0-36-3.cnf.gz
+satcomp091113/korf-18.cnf.gz
+satcomp091113/total-10-13-u.cnf.gz
+satcomp091113/k2mul.miter.shuffled-as.sat03-355.cnf.gz
+satcomp091113/rbcl_xits_13_UNKNOWN.cnf.gz
+satcomp091113/ibm-2002-30r-k85.cnf.gz
+satcomp091113/pb_200_05_lb_00.cnf.gz
+satcomp091113/UTI-15-5p1.cnf.gz
+satcomp091113/rbcl_xits_07_UNSAT.cnf.gz
+satcomp091113/hitag2-8-60-0-0xdcdbc8bf368ee73-37.cnf.gz
+satcomp091113/manol-pipe-g7nidw.cnf.gz
+satcomp091113/partial-10-13-u.cnf.gz
+satcomp091113/dme-03-1-k247-unsat.shuffled-as.sat03-407.cnf.gz
+satcomp091113/aaai10-planning-ipc5-pathways-17-step21.cnf.gz
+satcomp091113/8pipe_k.cnf.gz
+satcomp091113/1dlx_c_iq57_a.cnf.gz
+satcomp091113/23-64-nossum004.cnf.gz
+satcomp091113/uts-l06-ipc5-h31-unknown.cnf.gz
+satcomp091113/ctl_4291_567_2_unsat_pre.cnf.gz
+satcomp091113/blocks-blocks-36-0.180-SAT.cnf.gz
+satcomp091113/aaai10-planning-ipc5-pipesworld-12-step16.cnf.gz
+satcomp091113/gss-13-s100.cnf.gz
+satcomp091113/countbitsarray32_32.cnf.gz
+satcomp091113/pb_400_03_lb_05.cnf.gz
+satcomp091113/hard-18-U-10652.cnf.gz
+satcomp091113/ctl_4291_567_10_unsat_pre.cnf.gz
+satcomp091113/velev-pipe-sat-1.0-b10.cnf.gz
+satcomp091113/pb_300_05_lb_11.cnf.gz
+satcomp091113/smtlib-qfbv-aigs-bin_libsmbclient_vc1228502-tseitin.cnf.gz
+satcomp091113/AProVE07-03.cnf.gz
+satcomp091113/hitag2-8-60-0-0xb2021557d918860-94.cnf.gz
+satcomp091113/9dlx_vliw_at_b_iq9.used-as.sat04-719.cnf.gz
+satcomp091113/gss-18-s100.cnf.gz
+satcomp091113/slp-synthesis-aes-bottom25.cnf.gz
+satcomp091113/traffic_3b_unknown.cnf.gz
+satcomp091113/uts-l06-ipc5-h35-unknown.cnf.gz
+satcomp091113/AProVE07-02.cnf.gz
+satcomp091113/aes_32_1_keyfind_1.cnf.gz
+satcomp091113/partial-10-19-s.cnf.gz
+satcomp091113/arcfour_initialPermutation_6_56.cnf.gz
+satcomp091113/22-144-nossum001.cnf.gz
+satcomp091113/pb_300_02_lb_06.cnf.gz
+satcomp091113/post-c32s-gcdm16-23.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k50-pdtvisns3p00-tseitin.cnf.gz
+satcomp091113/UR-10-10p1.cnf.gz
+satcomp091113/velev-engi-uns-1.0-4nd.cnf.gz
+satcomp091113/velev-pipe-uns-1.0-8.cnf.gz
+satcomp091113/hoons-vbmc-lucky7.cnf.gz
+satcomp091113/md5_47_3.cnf.gz
+satcomp091113/12pipe_bug4_q0.used-as.sat04-723.cnf.gz
+satcomp091113/hitag2-10-60-0-0xbc15b17d0353413-10.cnf.gz
+satcomp091113/hsat_vc11803.cnf.gz
+satcomp091113/22-144-nossum009.cnf.gz
+satcomp091113/UCG-15-5p0.cnf.gz
+satcomp091113/goldb-heqc-x1mul.cnf.gz
+satcomp091113/safe-30-h29-unsat.cnf.gz
+satcomp091113/maxxor128.cnf.gz
+satcomp091113/cube-11-h13-unsat.cnf.gz
+satcomp091113/md5_47_2.cnf.gz
+satcomp091113/driverlog3_v01a.renamed-as.sat05-3963.cnf.gz
+satcomp091113/pb_200_10_lb_15.cnf.gz
+satcomp091113/q_query_3_l46_lambda.cnf.gz
+satcomp091113/smtlib-qfbv-aigs-bin_libmsrpc_vc1225336-tseitin.cnf.gz
+satcomp091113/AProVE11-09.cnf.gz
+satcomp091113/ndhf_xits_13_UNSAT.cnf.gz
+satcomp091113/q_query_3_l43_lambda.cnf.gz
+satcomp091113/sokoban-sequential-p145-microban-sequential.060-NOTKNOWN.cnf.gz
+satcomp091113/aaai10-planning-ipc5-TPP-30-step11.cnf.gz
+satcomp091113/slp-synthesis-aes-top26.cnf.gz
+satcomp091113/arcfour_initialPermutation_6_14.cnf.gz
+satcomp091113/arcfour_initialPermutation_6_16.cnf.gz
+satcomp091113/E05F18.cnf.gz
+satcomp091113/UTI-10-5t1.cnf.gz
+satcomp091113/transport-transport-city-sequential-25nodes-1000size-3degree-100mindistance-3trucks-10packages-2008seed.040-NOTKNOWN.cnf.gz
+satcomp091113/slp-synthesis-aes-bottom24.cnf.gz
+satcomp091113/7pipe_k.cnf.gz
+satcomp091113/rbcl_xits_15_SAT.cnf.gz
+satcomp091113/vmpc_26.cnf.gz
+satcomp091113/dspam_dump_vc949.cnf.gz
+satcomp091113/gus-md5-16.cnf.gz
+satcomp091113/xinetd_vc56703.cnf.gz
+satcomp091113/ctl_4291_567_7_unsat.cnf.gz
+satcomp091113/valves-gates-1-k617-unsat.shuffled-as.sat03-412.cnf.gz
+satcomp091113/dp04s04.shuffled.cnf.gz
+satcomp091113/vmpc_29.renamed-as.sat05-1916.cnf.gz
+satcomp091113/aaai10-planning-ipc5-rovers-18-step12.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k45-bobsmhdlc2-tseitin.cnf.gz
+satcomp091113/ACG-15-10p0.cnf.gz
+satcomp091113/UCG-20-10p1.cnf.gz
+satcomp091113/een-tip-sat-texas-tp-5e.cnf.gz
+satcomp091113/slp-synthesis-aes-bottom13.cnf.gz
+satcomp091113/rbcl_xits_06_UNSAT.cnf.gz
+satcomp091113/velev-vliw-uns-4.0-9-i1.cnf.gz
+satcomp091113/pb_300_02_lb_07.cnf.gz
+satcomp091113/biere6s20.cnf.gz
+satcomp091113/ndhf_xits_16_UNKNOWN.cnf.gz
+satcomp091113/aaai10-planning-ipc5-pipesworld-27-step14.cnf.gz
+satcomp091113/aes_32_3_keyfind_2.cnf.gz
+satcomp091113/smtlib-qfbv-aigs-servers_slapd_a_vc149789-tseitin.cnf.gz
+satcomp091113/sortnet-8-ipc5-h19-sat.cnf.gz
+satcomp091113/gus-md5-11.cnf.gz
+satcomp091113/ACG-20-10p0.cnf.gz
+satcomp091113/minxorminand032.cnf.gz
+satcomp091113/dated-5-13-u.cnf.gz
+satcomp091113/AProVE09-21.cnf.gz
+satcomp091113/AProVE09-11.cnf.gz
+satcomp091113/slp-synthesis-aes-top27.cnf.gz
+satcomp091113/uts-l06-ipc5-h28-unknown.cnf.gz
+satcomp091113/hitag2-10-60-0-0xb7b72dfef34c17b-39.cnf.gz
+satcomp091113/maxand064.cnf.gz
+satcomp091113/bivium-39-200-0s0-0x1b770901581bbb2863c83835583d7ce4e1fafd907076320542-34.cnf.gz
+satcomp091113/transport-transport-city-sequential-35nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.050-SAT.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k45-bc57sensorsp1-tseitin.cnf.gz
+satcomp091113/22-128-nossum005.cnf.gz
+satcomp091113/6s139.cnf.gz
+satcomp091113/pb_300_09_lb_07.cnf.gz
+satcomp091113/smtlib-qfbv-aigs-lfsr_008_063_080-tseitin.cnf.gz
+satcomp091113/post-c32s-gcdm16-22.cnf.gz
+satcomp091113/9dlx_vliw_at_b_iq4.cnf.gz
+satcomp091113/rpoc_xits_07_UNSAT.cnf.gz
+satcomp091113/SAT_dat.k100.cnf.gz
+satcomp091113/AProVE11-07.cnf.gz
+satcomp091113/IBM_FV_2004_rule_batch_30_SAT_dat.k55.cnf.gz
+satcomp091113/UTI-20-5p0.cnf.gz
+satcomp091113/pb_200_03_lb_03.cnf.gz
+satcomp091113/blocks-blocks-36-0.130-NOTKNOWN.cnf.gz
+satcomp091113/ACG-10-5p0.cnf.gz
+satcomp091113/post-cbmc-aes-ee-r2-noholes.cnf.gz
+satcomp091113/UTI-20-10t0.cnf.gz
+satcomp091113/AProVE11-16.cnf.gz
+satcomp091113/post-cbmc-aes-d-r2-noholes.cnf.gz
+satcomp091113/blocks-blocks-37-1.150-SAT.cnf.gz
+satcomp091113/hitag2-8-60-0-0xa3b8497b8aad6d7-42.cnf.gz
+satcomp091113/transport-transport-city-sequential-25nodes-1000size-3degree-100mindistance-3trucks-10packages-2008seed.050-NOTKNOWN.cnf.gz
+satcomp091113/9vliw_m_9stages_iq3_C1_bug1.cnf.gz
+satcomp091113/mulhs016.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k45-pdtswvtms14x8p1-tseitin.cnf.gz
+satcomp091113/md5_47_4.cnf.gz
+satcomp091113/E07N15.cnf.gz
+satcomp091113/22-144-nossum008.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k50-eijkbs6669-tseitin.cnf.gz
+satcomp091113/rbcl_xits_12_UNKNOWN.cnf.gz
+satcomp091113/hitag2-7-60-0-0xe97b5f1bee04d70-47.cnf.gz
+satcomp091113/UR-20-5p1.cnf.gz
+satcomp091113/arcfour_initialPermutation_6_24.cnf.gz
+satcomp091113/smtlib-qfbv-aigs-lfsr_004_127_112-tseitin.cnf.gz
+satcomp091113/slp-synthesis-aes-bottom23.cnf.gz
+satcomp091113/dated-10-17-u.cnf.gz
+satcomp091113/22-128-nossum001.cnf.gz
+satcomp091113/vmpc_32.renamed-as.sat05-1919.cnf.gz
+satcomp091113/9vliw_m_9stages_iq3_C1_bug4.cnf.gz
+satcomp091113/UTI-20-5p1.cnf.gz
+satcomp091113/E04F20.cnf.gz
+satcomp091113/SAT_dat.k20.cnf.gz
+satcomp091113/clauses-8.cnf.gz
+satcomp091113/22-128-nossum002.cnf.gz
+satcomp091113/slp-synthesis-aes-top23.cnf.gz
+satcomp091113/UTI-15-10p0.cnf.gz
+satcomp091113/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_3.085-SAT.cnf.gz
+satcomp091113/AProVE07-26.cnf.gz
+satcomp091113/ctl_4291_567_2_unsat.cnf.gz
+satcomp091113/hitag2-7-60-0-0x39ff85d4ef127de-52.cnf.gz
+satcomp091113/cmu-bmc-longmult15.cnf.gz
+satcomp091113/pb_300_10_lb_13.cnf.gz
+satcomp091113/smtlib-qfbv-aigs-lfsr_008_079_112-tseitin.cnf.gz
+satcomp091113/E02F22.cnf.gz
+satcomp091113/AProVE09-13.cnf.gz
+satcomp091113/beempgsol5b1.cnf.gz
+satcomp091113/vange-col-abb313GPIA-9-c.cnf.gz
+satcomp091113/dp10s10.shuffled.cnf.gz
+satcomp091113/bivium-40-200-0s0-0xd447c33176b6b675fd5f8dc3a5deda46569dc34eedf37da020-6.cnf.gz
+satcomp091113/partial-5-15-s.cnf.gz
+satcomp091113/SAT_dat.k80.cnf.gz
+satcomp091113/smulo064.cnf.gz
+satcomp091113/k_unsat.cnf.gz
+satcomp091113/traffic_r_uc_sat.cnf.gz
+satcomp091113/velev-live-uns-2.0-ebuf.cnf.gz
+satcomp091113/ndhf_xits_12_UNSAT.cnf.gz
+satcomp091113/sokoban-sequential-p145-microban-sequential.080-SAT.cnf.gz
+satcomp091113/manol-pipe-c9.cnf.gz
+satcomp091113/9dlx_vliw_at_b_iq9.cnf.gz
+satcomp091113/slp-synthesis-aes-top30.cnf.gz
+satcomp091113/gss-26-s100.cnf.gz
+satcomp091113/AProVE09-01.cnf.gz
+satcomp091113/homer16.shuffled.cnf.gz
+satcomp091113/gss-27-s100.cnf.gz
+satcomp091113/sokoban-sequential-p145-microban-sequential.050-NOTKNOWN.cnf.gz
+satcomp091113/9dlx_vliw_at_b_iq2.cnf.gz
+satcomp091113/vmpc_30.cnf.gz
+satcomp091113/partial-10-19-u.cnf.gz
+satcomp091113/AProVE11-06.cnf.gz
+satcomp091113/bivium-39-200-0s0-0x163b785faa4bfb1b3b894a9206768a6c3d5d6f038b3797c4c2-99.cnf.gz
+satcomp091113/countbitssrl064.cnf.gz
+satcomp091113/eq.atree.braun.10.unsat.cnf.gz
+satcomp091113/pb_400_09_lb_05.cnf.gz
+satcomp091113/post-cbmc-aes-ele-noholes.cnf.gz
+satcomp091113/transport-transport-two-cities-sequential-15nodes-1000size-3degree-100mindistance-3trucks-10packages-2008seed.030-NOTKNOWN.cnf.gz
+satcomp091113/gus-md5-09.cnf.gz
+satcomp091113/AProVE09-19.cnf.gz
+satcomp091113/gss-32-s100.cnf.gz
+satcomp091113/aes_128_3_keyfind_1.cnf.gz
+satcomp091113/dated-5-15-u.cnf.gz
+satcomp091113/een-tip-uns-nusmv-t5.B.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k45-pdtvissoap1-tseitin.cnf.gz
+satcomp091113/AProVE07-27.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k50-pdtvisns2p3-tseitin.cnf.gz
+satcomp091113/simon-s02b-k2f-gr-rcs-w8.cnf.gz
+satcomp091113/rovers1_ks99i.renamed-as.sat05-3971.cnf.gz
+satcomp091113/gus-md5-12.cnf.gz
+satcomp091113/ctl_4291_567_7_unsat_pre.cnf.gz
+satcomp091113/pb_300_06_lb_02.cnf.gz
+satcomp091113/k2fix_gr_rcs_w9.shuffled.cnf.gz
+satcomp091113/post-cbmc-aes-ee-r3-noholes.cnf.gz
+satcomp091113/AProVE09-25.cnf.gz
+satcomp091113/10pipe_q0_k.cnf.gz
+satcomp091113/SAT_dat.k45.cnf.gz
+satcomp091113/slp-synthesis-aes-bottom26.cnf.gz
+satcomp091113/8pipe_q0_k.cnf.gz
+satcomp091113/AProVE07-01.cnf.gz
+satcomp091113/9dlx_vliw_at_b_iq8.used-as.sat04-718.cnf.gz
+satcomp091113/transport-transport-three-cities-sequential-14nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.040-NOTKNOWN.cnf.gz
+satcomp091113/countbitsrotate016.cnf.gz
+satcomp091113/dp04u03.shuffled.cnf.gz
+satcomp091113/blocks-blocks-36-0.150-NOTKNOWN.cnf.gz
+satcomp091113/6s126.cnf.gz
+satcomp091113/slp-synthesis-aes-bottom22.cnf.gz
+satcomp091113/q_query_3_l44_lambda.cnf.gz
+satcomp091113/dated-5-17-u.cnf.gz
+satcomp091113/pb_200_03_lb_02.cnf.gz
+satcomp091113/maxor064.cnf.gz
+satcomp091113/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_3.045-NOTKNOWN.cnf.gz
+satcomp091113/10pipe_k.cnf.gz
+satcomp091113/pb_400_09_lb_03.cnf.gz
+satcomp091113/homer17.shuffled.cnf.gz
+satcomp091113/UTI-20-10p1.cnf.gz
+satcomp091113/vmpc_35.renamed-as.sat05-1921.cnf.gz
+satcomp091113/pb_400_05_lb_00.cnf.gz
+satcomp091113/minand128.cnf.gz
+satcomp091113/pb_300_03_lb_13.cnf.gz
+satcomp091113/gus-md5-05.cnf.gz
+satcomp091113/aes_32_4_keyfind_1.cnf.gz
+satcomp091113/IBM_FV_2004_rule_batch_30_SAT_dat.k80.cnf.gz
+satcomp091113/ctl_4291_567_1_unsat.cnf.gz
+satcomp091113/UCG-20-5p1.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k50-pdtswvsam6x8p3-tseitin.cnf.gz
+satcomp091113/total-5-13-u.cnf.gz
+satcomp091113/goldb-heqc-term1mul.cnf.gz
+satcomp091113/arcfour_initialPermutation_6_64.cnf.gz
+satcomp091113/manol-pipe-c10nidw_s.cnf.gz
+satcomp091113/ndhf_xits_22_SAT.cnf.gz
+satcomp091113/ndhf_xits_20_SAT.cnf.gz
+satcomp091113/goldb-heqc-frg1mul.cnf.gz
+satcomp091113/ctl_3082_415_unsat.cnf.gz
+satcomp091113/countbitsarray08_32.cnf.gz
+satcomp091113/c10idw_i.cnf.gz
+satcomp091113/slp-synthesis-aes-bottom12.cnf.gz
+satcomp091113/q_query_3_l39_lambda.cnf.gz
+satcomp091113/ctl_4291_567_6_unsat_pre.cnf.gz
+satcomp091113/gus-md5-06.cnf.gz
+satcomp091113/pb_300_10_lb_12.cnf.gz
+satcomp091113/bivium-39-200-0s0-0x53e7622aad02b083b53dcd6a4a76f54a150ceb996ea1dfa300-63.cnf.gz
+satcomp091113/bierebob12s06.cnf.gz
+satcomp091113/velev-pipe-o-uns-1.1-6.cnf.gz
+satcomp091113/aaai10-planning-ipc5-pipesworld-27-step13.cnf.gz
+satcomp091113/rpoc_xits_17_SAT.cnf.gz
+satcomp091113/traffic_3_uc_sat.cnf.gz
+satcomp091113/q_query_3_l38_lambda.cnf.gz
+satcomp091113/UR-15-10p0.cnf.gz
+satcomp091113/blocks-blocks-36-0.120-NOTKNOWN.cnf.gz
+satcomp091113/beempgsol2b1.cnf.gz
+satcomp091113/pb_300_10_lb_06.cnf.gz
+satcomp091113/slp-synthesis-aes-top29.cnf.gz
+satcomp091113/uts-l06-ipc5-h33-unknown.cnf.gz
+satcomp091113/rpoc_xits_08_UNSAT.cnf.gz
+satcomp091113/AProVE09-17.cnf.gz
+satcomp091113/AProVE09-05.cnf.gz
+satcomp091113/manol-pipe-f10ni.cnf.gz
+satcomp091113/UR-10-5p0.cnf.gz
+satcomp091113/md5_48_4.cnf.gz
+satcomp091113/9dlx_vliw_at_b_iq6.cnf.gz
+satcomp091113/hitag2-7-60-0-0x5f8ec0ffa4b15c6-25.cnf.gz
+satcomp091113/traffic_r_sat.cnf.gz
+satcomp091113/mizh-md5-47-4.cnf.gz
+satcomp091113/hitag2-7-60-0-0xc048b9ebae66e9d-32-SAT.cnf.gz
+satcomp091113/UR-15-10p1.cnf.gz
+satcomp091113/11pipe_11_ooo.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k50-pdtpmsns2-tseitin.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k45-pdtswvqis8x8p2-tseitin.cnf.gz
+satcomp091113/velev-vliw-uns-4.0-9C1.cnf.gz
+satcomp091113/myciel6-tr.used-as.sat04-320.cnf.gz
+satcomp091113/korf-15.cnf.gz
+satcomp091113/post-c32s-col400-16.cnf.gz
+satcomp091113/UR-20-10p0.cnf.gz
+satcomp091113/rpoc_xits_11_UNKNOWN.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k45-pdtpmsgoodbakery-tseitin.cnf.gz
+satcomp091113/post-cbmc-zfcp-2.8-u2-noholes.cnf.gz
+satcomp091113/ctl_4291_567_9_unsat.cnf.gz
+satcomp091113/esawn_uw3.debugged.cnf.gz
+satcomp091113/q_query_2_L324_coli.cnf.gz
+satcomp091113/slp-synthesis-aes-top21.cnf.gz
+satcomp091113/gus-md5-15.cnf.gz
+satcomp091113/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_1.025-NOTKNOWN.cnf.gz
+satcomp091113/pb_300_04_lb_05.cnf.gz
+satcomp091113/emptyroom-4-h21-unsat.cnf.gz
+satcomp091113/pb_300_04_lb_06.cnf.gz
+satcomp091113/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_3.035-NOTKNOWN.cnf.gz
+satcomp091113/ndhf_xits_17_UNKNOWN.cnf.gz
+satcomp091113/am_7_7.shuffled-as.sat03-363.cnf.gz
+satcomp091113/sortnet-7-ipc5-h15-unsat.cnf.gz
+satcomp091113/gss-19-s100.cnf.gz
+satcomp091113/manol-pipe-f9b.cnf.gz
+satcomp091113/q_query_3_L100_coli.sat.cnf.gz
+satcomp091113/mizh-md5-47-3.cnf.gz
+satcomp091113/AProVE07-21.cnf.gz
+satcomp091113/partial-10-15-s.cnf.gz
+satcomp091113/abb313GPIA-9-c.used-as.sat04-317.cnf.gz
+satcomp091113/aaai10-planning-ipc5-pipesworld-12-step15.cnf.gz
+satcomp091113/hitag2-8-60-0-0xfba1a41b5dfd7f7-52.cnf.gz
+satcomp091113/smtlib-qfbv-aigs-VS3-benchmark-S2-tseitin.cnf.gz
+satcomp091113/post-c32s-ss-8.cnf.gz
+satcomp091113/AProVE07-08.cnf.gz
+satcomp091113/partial-5-13-s.cnf.gz
+satcomp091113/hitag2-10-60-0-0x8edc44db7837bbf-65.cnf.gz
+satcomp091113/pb_400_02_lb_15.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k45-pdtswvrod6x8p1-tseitin.cnf.gz
+satcomp091113/ndhf_xits_19_UNKNOWN.cnf.gz
+satcomp091113/dated-5-11-u.cnf.gz
+satcomp091113/9vliw_m_9stages_iq3_C1_bug5.cnf.gz
+satcomp091113/hsat_vc12062.cnf.gz
+satcomp091113/schup-l2s-bc56s-1-k391.cnf.gz
+satcomp091113/E03N17.cnf.gz
+satcomp091113/rand_net70-60-10.shuffled.cnf.gz
+satcomp091113/smtlib-qfbv-aigs-ext_con_032_008_0256-tseitin.cnf.gz
+satcomp091113/uts-l05-ipc5-h27-unknown.cnf.gz
+satcomp091113/rand_net60-40-10.shuffled.cnf.gz
+satcomp091113/vmpc_34.renamed-as.sat05-1926.cnf.gz
+satcomp091113/countbitsrotate032.cnf.gz
+satcomp091113/E00N23.cnf.gz
+satcomp091113/aloul-chnl11-13.cnf.gz
+satcomp091113/UCG-10-5p0.cnf.gz
+satcomp091113/transport-transport-three-cities-sequential-14nodes-1000size-4degree-100mindistance-4trucks-14packages-2008seed.030-NOTKNOWN.cnf.gz
+satcomp091113/ctl_4201_555_unsat_pre.cnf.gz
+satcomp091113/UTI-15-5p0.cnf.gz
+satcomp091113/slp-synthesis-aes-top25.cnf.gz
+satcomp091113/AProVE09-12.cnf.gz
+satcomp091113/SAT_dat.k85.cnf.gz
+satcomp091113/manol-pipe-c7bidw_i.cnf.gz
+satcomp091113/c6288mul.miter.shuffled-as.sat03-346.cnf.gz
+satcomp091113/bierebob12m06.cnf.gz
+satcomp091113/dated-10-19-u.cnf.gz
+satcomp091113/safe-50-h49-unsat.cnf.gz
+satcomp091113/md5_48_1.cnf.gz
+satcomp091113/countbitssrl016.cnf.gz
+satcomp091113/ctl_4291_567_11_unsat_pre.cnf.gz
+satcomp091113/ctl_4291_567_12_unsat_pre.cnf.gz
+satcomp091113/22-128-nossum009.cnf.gz
+satcomp091113/UTI-20-10t1.cnf.gz
+satcomp091113/sokoban-sequential-p145-microban-sequential.030-NOTKNOWN.cnf.gz
+satcomp091113/11pipe_q0_k.cnf.gz
+satcomp091113/x1mul.miter.shuffled-as.sat03-359.cnf.gz
+satcomp091113/dated-5-19-u.cnf.gz
+satcomp091113/ctl_4291_567_10_unsat.cnf.gz
+satcomp091113/6s133.cnf.gz
+satcomp091113/eq.atree.braun.11.unsat.cnf.gz
+satcomp091113/AProVE11-11.cnf.gz
+satcomp091113/transport-transport-city-sequential-25nodes-1000size-3degree-100mindistance-3trucks-10packages-2008seed.030-NOTKNOWN.cnf.gz
+satcomp091113/aes_16_10_keyfind_3.cnf.gz
+satcomp091113/aes_128_1_keyfind_1.cnf.gz
+satcomp091113/hsat_vc11813.cnf.gz
+satcomp091113/hitag2-10-60-0-0xfee9637399d85a2-78.cnf.gz
+satcomp091113/22-128-nossum008.cnf.gz
+satcomp091113/aes_128_10_keyfind_1.cnf.gz
+satcomp091113/ACG-20-5p0.cnf.gz
+satcomp091113/transport-transport-city-sequential-25nodes-1000size-3degree-100mindistance-3trucks-10packages-2008seed.020-NOTKNOWN.cnf.gz
+satcomp091113/12pipe_bug6_q0.used-as.sat04-725.cnf.gz
+satcomp091113/UR-20-10p1.cnf.gz
+satcomp091113/dekker.used-as.sat04-989.cnf.gz
+satcomp091113/AProVE09-08.cnf.gz
+satcomp091113/total-5-17-u.cnf.gz
+satcomp091113/rpoc_xits_15_SAT.cnf.gz
+satcomp091113/bart17.shuffled.cnf.gz
+satcomp091113/total-10-17-u.cnf.gz
+satcomp091113/maxxororand128.cnf.gz
+satcomp091113/itox_vc1033.cnf.gz
+satcomp091113/AProVE09-15.cnf.gz
+satcomp091113/manol-pipe-f9n.cnf.gz
+satcomp091113/ndhf_xits_09_UNSAT.cnf.gz
+satcomp091113/maxxor064.cnf.gz
+satcomp091113/pb_400_04_lb_19.cnf.gz
+satcomp091113/homer14.shuffled.cnf.gz
+satcomp091113/grid-strips-grid-y-3.055-NOTKNOWN.cnf.gz
+satcomp091113/vmpc_25.cnf.gz
+satcomp091113/md5_48_5.cnf.gz
+satcomp091113/schup-l2s-motst-2-k315.cnf.gz
+satcomp091113/total-10-19-u.cnf.gz
+satcomp091113/gss-34-s100.cnf.gz
+satcomp091113/grid-strips-grid-y-3.065-SAT.cnf.gz
+satcomp091113/UR-10-5p1.cnf.gz
+satcomp091113/bob12m06.cnf.gz
+satcomp091113/UTI-15-10p1.cnf.gz
+satcomp091113/eq.atree.braun.12.unsat.cnf.gz
+satcomp091113/1dlx_c_iq60_a.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k50-pdtviseisenberg2-tseitin.cnf.gz
+satcomp091113/post-cbmc-zfcp-2.8-u2.cnf.gz
+satcomp091113/partial-5-15-u.cnf.gz
+satcomp091113/b_unsat.cnf.gz
+satcomp091113/ferry5_ks99i.renamed-as.sat05-3994.cnf.gz
+satcomp091113/ctl_4291_567_6_unsat.cnf.gz
+satcomp091113/q_query_3_L80_coli.sat.cnf.gz
+satcomp091113/cube-11-h14-sat.cnf.gz
+satcomp091113/pb_200_03_lb_01.cnf.gz
+satcomp091113/partial-5-19-s.cnf.gz
+satcomp091113/q_query_3_L60_coli.sat.cnf.gz
+satcomp091113/22-128-nossum004.cnf.gz
+satcomp091113/hwmcc10-timeframe-expansion-k50-bc57sensorsp2-tseitin.cnf.gz
+satcomp091113/biere6s153.cnf.gz
+satcomp091113/AProVE07-09.cnf.gz
+satcomp091113/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_1.035-NOTKNOWN.cnf.gz
+satcomp091113/aaai10-planning-ipc5-pipesworld-18-step16.cnf.gz
+satcomp091113/minandmaxor016.cnf.gz
+satcomp091113/q_query_3_l42_lambda.cnf.gz
+satcomp091113/biere6s165.cnf.gz
+satcomp091113/AProVE09-10.cnf.gz
+satcomp091113/ACG-20-10p1.cnf.gz
+satcomp091113/arcfour_initialPermutation_5_32.cnf.gz
+satcomp091113/E02F17.cnf.gz
+satcomp091113/ndhf_xits_10_UNSAT.cnf.gz
+satcomp091113/UTI-10-10p0.cnf.gz
+satcomp091113/gss-24-s100.cnf.gz
+satcomp091113/bob12s06.cnf.gz
+satcomp091113/arcfour_initialPermutation_6_40.cnf.gz
+satcomp091113/ctl_4291_567_1_unsat_pre.cnf.gz
+satcomp091113/SAT_dat.k65.cnf.gz
+satcomp091113/6s103.cnf.gz
+satcomp091113/korf-17.cnf.gz
+satcomp091113/rpoc_xits_13_UNKNOWN.cnf.gz
+satcomp091113/ctl_4291_567_8_unsat.cnf.gz
+satcomp091113/itox_vc1130.cnf.gz
+satcomp091113/aes_32_2_keyfind_1.cnf.gz
+satcomp091113/rbcl_xits_18_SAT.cnf.gz
+satcomp091113/traffic_kkb_unknown.cnf.gz
+satcomp091113/countbitswegner128.cnf.gz
+satcomp091113/transport-transport-two-cities-sequential-15nodes-1000size-3degree-100mindistance-3trucks-10packages-2008seed.020-NOTKNOWN.cnf.gz
+satcomp091113/AProVE09-06.cnf.gz
+satcomp091113/clauses-8.renamed-as.sat05-1964.cnf.gz
+satcomp091113/aes_32_5_keyfind_1.cnf.gz
+satcomp091113/openstacks-sequencedstrips-nonadl-nonnegated-os-sequencedstrips-p30_1.045-NOTKNOWN.cnf.gz
+satcomp091113/pb_400_10_lb_00.cnf.gz
+satcomp091113/velev-pipe-sat-1.0-b9.cnf.gz
+satcomp091113/2dlx_ca_bp_f_liveness.cnf.gz
+satcomp091113/traffic_b_unsat.cnf.gz
+satcomp091113/ctl_4291_567_5_unsat.cnf.gz
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/server.py b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/server.py
new file mode 100755
index 000000000..3c5c75be9
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/server.py
@@ -0,0 +1,432 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2018 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+from __future__ import print_function
+import os
+import socket
+import sys
+import struct
+import pickle
+import time
+import pprint
+import traceback
+import Queue
+import threading
+import logging
+import server_option_parser
+
+# for importing in systems where "." is not in the PATH
+sys.path.append(os.getcwd())
+from common_aws import *
+import RequestSpotClient
+
+
+def get_n_bytes_from_connection(sock, MSGLEN):
+ chunks = []
+ bytes_recd = 0
+ while bytes_recd < MSGLEN:
+ chunk = sock.recv(min(MSGLEN - bytes_recd, 2048))
+ if chunk == '':
+ raise RuntimeError("socket connection broken")
+ chunks.append(chunk)
+ bytes_recd = bytes_recd + len(chunk)
+
+ return ''.join(chunks)
+
+
+def send_command(sock, command, tosend=None):
+ # note, this is a python issue, we can't set above tosend={}
+ # https://nedbatchelder.com/blog/200806/pylint.html
+ tosend = tosend or {}
+
+ tosend["command"] = command
+ tosend = pickle.dumps(tosend)
+ tosend = struct.pack('!q', len(tosend)) + tosend
+ sock.sendall(tosend)
+
+
+class ToSolve:
+
+ def __init__(self, num, name):
+ self.num = num
+ self.name = name
+
+ def __str__(self):
+ return "%s (num: %d)" % (self.name, self.num)
+
+
+class Server (threading.Thread):
+ def __init__(self):
+ threading.Thread.__init__(self)
+ self.files_available = []
+ self.files_finished = []
+ self.files = {}
+
+ logging.info("Getting list of files %s", options.cnf_list)
+ key = boto.connect_s3().get_bucket("msoos-solve-data").get_key("solvers/" + options.cnf_list)
+ key.get_contents_to_filename(options.cnf_list)
+
+ fnames = open(options.cnf_list, "r")
+ logging.info("CNF list is file %s", options.cnf_list)
+ num = 0
+ for fname in fnames:
+ fname = fname.strip()
+ self.files[num] = ToSolve(num, fname)
+ self.files_available.append(num)
+ logging.info("File added: %s", fname)
+ num = num+1
+ fnames.close()
+
+ self.files_running = {}
+ logging.info("Solving %d files", len(self.files_available))
+ self.uniq_cnt = 0
+
+ def ready_to_shutdown(self):
+ if len(self.files_available) > 0:
+ return False
+
+ if len(self.files_finished) < len(self.files):
+ return False
+
+ return True
+
+ def handle_done(self, connection, cli_addr, indata):
+ file_num = indata["file_num"]
+
+ logging.info("Finished with file %s (num %d), got files %s",
+ self.files[indata["file_num"]], indata["file_num"],
+ indata["files"])
+ self.files_finished.append(indata["file_num"])
+ if file_num in self.files_running:
+ del self.files_running[file_num]
+
+ logging.info("Num files_available: %d Num files_finished %d",
+ len(self.files_available), len(self.files_finished))
+
+ self.rename_files_to_final(indata["files"])
+ sys.stdout.flush()
+
+ def rename_files_to_final(self, files):
+ for fnames in files:
+ logging.info("Renaming file %s to %s", fnames[0], fnames[1])
+ ret = os.system("aws s3 mv s3://{bucket}/{origname} s3://{bucket}/{toname} --region {region}".format(
+ bucket=options.s3_bucket,
+ origname=fnames[0],
+ toname=fnames[1],
+ region=options.region))
+ if ret:
+ logging.warn("Renaming file to final name failed!")
+
+ def check_for_dead_files(self):
+ this_time = time.time()
+ files_to_remove_from_files_running = []
+ for file_num, starttime in self.files_running.items():
+ duration = this_time - starttime
+ # print("* death check. running:" , file_num, " duration: ",
+ # duration)
+ if duration > options.timeout_in_secs*options.tout_mult:
+ logging.warn("* dead file %s duration: %d re-inserting",
+ file_num, duration)
+ files_to_remove_from_files_running.append(file_num)
+ self.files_available.append(file_num)
+
+ for c in files_to_remove_from_files_running:
+ del self.files_running[c]
+
+ def find_something_to_solve(self):
+ self.check_for_dead_files()
+ logging.info("Num files_available pre-send: %d",
+ len(self.files_available))
+
+ if len(self.files_available) == 0:
+ return None
+
+ file_num = self.files_available[0]
+ del self.files_available[0]
+ logging.info("Num files_available post-send: %d",
+ len(self.files_available))
+ sys.stdout.flush()
+
+ return file_num
+
+ def handle_build(self, connection, cli_addr, indata):
+ tosend = self.default_tosend()
+ logging.info("Sending git revision %s to %s", options.git_rev,
+ cli_addr)
+ send_command(connection, "build_data", tosend)
+
+ def send_termination(self, connection, cli_addr):
+ tosend = {}
+ tosend["noshutdown"] = options.noshutdown
+ send_command(connection, "finish", tosend)
+
+ logging.info("No more to solve, terminating %s", cli_addr)
+ global last_termination_sent
+ last_termination_sent = time.time()
+
+ def send_wait(self, connection, cli_addr):
+ tosend = {}
+ tosend["noshutdown"] = options.noshutdown
+ logging.info("Everything is in sent queue, sending wait to %s", cli_addr)
+ send_command(connection, "wait", tosend)
+
+ def default_tosend(self):
+ tosend = {}
+ tosend["solver"] = options.solver
+ tosend["git_rev"] = options.git_rev
+ tosend["stats"] = options.stats
+ tosend["gauss"] = options.gauss
+ tosend["s3_bucket"] = options.s3_bucket
+ tosend["given_folder"] = options.given_folder
+ tosend["timeout_in_secs"] = options.timeout_in_secs
+ tosend["mem_limit_in_mb"] = options.mem_limit_in_mb
+ tosend["noshutdown"] = options.noshutdown
+ tosend["extra_opts"] = options.extra_opts
+ tosend["drat"] = options.drat
+ tosend["region"] = options.region
+
+ return tosend
+
+ def send_one_to_solve(self, connection, cli_addr, file_num):
+ # set timer that we have sent this to be solved
+ self.files_running[file_num] = time.time()
+ filename = self.files[file_num].name
+
+ tosend = self.default_tosend()
+ tosend["file_num"] = file_num
+ tosend["cnf_filename"] = filename
+ tosend["uniq_cnt"] = str(self.uniq_cnt)
+ logging.info("Sending file %s (num %d) to %s",
+ filename, file_num, cli_addr)
+ send_command(connection, "solve", tosend)
+ self.uniq_cnt += 1
+
+ def handle_need(self, connection, cli_addr, indata):
+ # TODO don't ignore 'indata' for solving CNF instances, use it to
+ # opitimize for uptime
+ file_num = self.find_something_to_solve()
+
+ if file_num is None:
+ if len(self.files_running) == 0:
+ self.send_termination(connection, cli_addr)
+ else:
+ self.send_wait(connection, cli_addr)
+ else:
+ self.send_one_to_solve(connection, cli_addr, file_num)
+
+ def handle_one_client(self, conn, cli_addr):
+ try:
+ logging.info("connection from %s", cli_addr)
+
+ data = get_n_bytes_from_connection(conn, 8)
+ length = struct.unpack('!q', data)[0]
+ data = get_n_bytes_from_connection(conn, length)
+ data = pickle.loads(data)
+
+ if data["command"] == "done":
+ self.handle_done(conn, cli_addr, data)
+
+ if data["command"] == "error":
+ shutdown(-1)
+ raise
+
+ elif data["command"] == "need":
+ self.handle_need(conn, cli_addr, data)
+
+ elif data["command"] == "build":
+ self.handle_build(conn, cli_addr, data)
+
+ sys.stdout.flush()
+ except:
+ exc_type, exc_value, exc_traceback = sys.exc_info()
+ traceback.print_exc()
+ the_trace = traceback.format_exc()
+
+ logging.error("Exception from %s, Trace: %s", cli_addr,
+ the_trace)
+
+ finally:
+ # Clean up the connection
+ logging.info("Finished with client %s", cli_addr)
+ conn.close()
+
+ def run(self):
+ global acc_queue
+ while True:
+ conn, cli_addr = acc_queue.get()
+ self.handle_one_client(conn, cli_addr)
+
+
+class Listener (threading.Thread):
+
+ def __init__(self):
+ threading.Thread.__init__(self)
+
+ def listen_to_connection(self):
+ # Create a TCP/IP socket
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+
+ # Bind the socket to the port
+ server_address = ('0.0.0.0', options.port)
+ logging.info('starting up on %s port %s', server_address, options.port)
+ sock.bind(server_address)
+
+ # Listen for incoming connections
+ sock.listen(128)
+ return sock
+
+ def handle_one_connection(self):
+ global acc_queue
+
+ # Wait for a connection
+ conn, client_addr = self.sock.accept()
+ acc_queue.put_nowait((conn, client_addr))
+
+ def run(self):
+ try:
+ self.sock = self.listen_to_connection()
+ except:
+ exc_type, exc_value, exc_traceback = sys.exc_info()
+ the_trace = traceback.format_exc().rstrip().replace("\n", " || ")
+ logging.error("Cannot listen on stocket! Traceback: %s", the_trace)
+ shutdown(-1)
+ raise
+ while True:
+ self.handle_one_connection()
+
+
+class SpotManager (threading.Thread):
+
+ def __init__(self):
+ threading.Thread.__init__(self)
+ self.spot_creator = RequestSpotClient.RequestSpotClient(
+ options.git_rev,
+ ("test" in options.cnf_list), noshutdown=options.noshutdown,
+ count=options.client_count)
+
+ def run(self):
+ while True:
+ try:
+ if not server.ready_to_shutdown():
+ self.spot_creator.create_spots_if_needed()
+ except:
+ exc_type, exc_value, exc_traceback = sys.exc_info()
+ the_trace = traceback.format_exc().rstrip().replace("\n", " || ")
+ logging.error("Cannot create spots! Traceback: %s", the_trace)
+
+ time.sleep(60)
+
+
+def shutdown(exitval=0):
+ toexec = "sudo shutdown -h now"
+ logging.info("SHUTTING DOWN")
+
+ # send email
+ try:
+ email_subject = "Server shutting down "
+ if exitval == 0:
+ email_subject += "OK"
+ else:
+ email_subject += "FAIL"
+
+ full_s3_folder = get_s3_folder(
+ options.given_folder,
+ options.git_rev,
+ options.solver,
+ options.timeout_in_secs,
+ options.mem_limit_in_mb)
+ text = """Server finished. Please download the final data:
+
+mkdir {0}
+cd {0}
+aws s3 cp --recursive s3://{1}/{0}/ .
+
+Don't forget to:
+
+* check volume
+* check EC2 still running
+
+So long and thanks for all the fish!
+""".format(full_s3_folder, options.s3_bucket)
+ send_email(email_subject, text, options.logfile_name)
+ except:
+ exc_type, exc_value, exc_traceback = sys.exc_info()
+ the_trace = traceback.format_exc().rstrip().replace("\n", " || ")
+ logging.error("Cannot send email! Traceback: %s", the_trace)
+
+ if not options.noshutdown:
+ os.system(toexec)
+
+ exit(exitval)
+
+
+def set_up_logging():
+ form = '[ %(asctime)-15s %(levelname)s %(message)s ]'
+ logformatter = logging.Formatter(form)
+
+ try:
+ os.unlink(options.logfile_name)
+ except:
+ pass
+ fileHandler = logging.FileHandler(options.logfile_name)
+ fileHandler.setFormatter(logformatter)
+ logging.getLogger().addHandler(fileHandler)
+ logging.getLogger().setLevel(logging.INFO)
+
+if __name__ == "__main__":
+ global options
+ global args
+ options, args = server_option_parser.parse_arguments()
+ if options.drat:
+ assert "cryptominisat" in options.solver
+
+ global acc_queue
+ acc_queue = Queue.Queue()
+ last_termination_sent = None
+
+ set_up_logging()
+ logging.info("Server called with parameters: %s",
+ pprint.pformat(options, indent=4).replace("\n", " || "))
+
+ if not options.git_rev:
+ options.git_rev = get_revision(options.base_dir + options.solver, options.base_dir)
+ logging.info("Revision not given, taking HEAD: %s", options.git_rev)
+
+ server = Server()
+ listener = Listener()
+ spotmanager = SpotManager()
+ listener.setDaemon(True)
+ server.setDaemon(True)
+ spotmanager.setDaemon(True)
+
+ listener.start()
+ server.start()
+ time.sleep(20)
+ spotmanager.start()
+
+ while threading.active_count() > 0:
+ time.sleep(0.5)
+ if last_termination_sent is not None and server.ready_to_shutdown():
+ diff = time.time() - last_termination_sent
+ limit = 100
+ if diff > limit:
+ break
+
+ shutdown()
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/aws/server_option_parser.py b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/server_option_parser.py
new file mode 100755
index 000000000..c31cb0bde
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/aws/server_option_parser.py
@@ -0,0 +1,194 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2018 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+import optparse
+import random
+import time
+import string
+import configparser
+
+
+def parse_arguments():
+ class PlainHelpFormatter(optparse.IndentedHelpFormatter):
+
+ def format_description(self, description):
+ if description:
+ return description + "\n"
+ else:
+ return ""
+
+ usage = """usage: %prog
+
+To use other solvers, give:
+--solver SWDiA5BY.alt.vd.res.va2.15000.looseres.3tierC5/binary/SWDiA5BY_static.alt.vd
+--solver SWDiA5BY_A26/binary/SWDiA5BY_static_A26
+--solver lingeling_ayv/binary/lingeling_ayv
+--solver glucose2016/simp/glucose_static_2016
+--solver MapleCOMSPS/simp/maplecomsps_static
+--solver cmsat-satcomp16/bin/cryptominisat4_simple
+--solver lingeling-bbc/build/lingeling/lingeling_bbc
+--solver Maple_LCM_Dist/Maple_LCM_Dist # may work with --drat, but needs updated DRAT checker
+
+
+Use-cases:
+# normal run
+./launch_server.py --cnflist satcomp17_updated
+
+# stats run
+./launch_server.py --cnf test_updated --stats --drat --tout 600 --memlimit 10000
+./launch_server.py --cnf unsat_small_candidates_fullpath --stats --drat --tout 600 --memlimit 10000
+
+
+# testing, using small instance to check (cheaper & faster)
+./launch_server.py --cnflist test_updated
+
+# 2 clients, no preprocessing
+./launch_server.py --cnflist satcomp14 -c 2 --opt "--preproc 0" --folder no_preproc
+
+# gaussian elimination -- automatic detection, built with GAUSS
+./launch_server.py --cnflist satcomp14 --folder gauss
+
+# clause IDs so learning can be performed -- gzipped SQL output with clause IDs will be produced
+./launch_server.py --stats --drat --folder learning
+
+# to give options to the solver
+./launch_server.py --folder with_opts --opt \"--ml=1,--keepglue=4\""
+
+ # to upload features_to_reconf.cpp
+aws s3 cp ../../src/features_to_reconf.cpp s3://msoos-solve-data/solvers/
+
+"""
+ parser = optparse.OptionParser(usage=usage, formatter=PlainHelpFormatter())
+ parser.add_option("--verbose", "-v", action="store_true",
+ default=False, dest="verbose", help="Be more verbose"
+ )
+
+ parser.add_option("--numclients", "-c", default=None, type=int,
+ dest="client_count", help="Number of clients to launch"
+ )
+
+ parser.add_option("--port", "-p", default=10000, dest="port",
+ help="Port to listen on. [default: %default]", type="int"
+ )
+
+ parser.add_option("--tout", "-t", default=3000, dest="timeout_in_secs",
+ help="Timeout for the file in seconds"
+ "[default: %default]",
+ type=int
+ )
+
+ parser.add_option("--toutmult", default=12.1, dest="tout_mult",
+ help="Approx: 1x is solving, 10x time is DRAT time wait, 1x is parsing, 0.1x that is sending us the result."
+ "[default: %default]",
+ type=float
+ )
+
+ parser.add_option("--memlimit", "-m", default=1600, dest="mem_limit_in_mb",
+ help="Memory limit in MB"
+ "[default: %default]",
+ type=int
+ )
+
+ parser.add_option("--cnflist", default="satcomp14_updated", dest="cnf_list",
+ type=str,
+ help="The list of CNF files to solve, first line the dir"
+ "[default: %default]",
+ )
+
+ parser.add_option("--dir", default="/home/ubuntu/", dest="base_dir", type=str,
+ help="The home dir of cryptominisat [default: %default]"
+ )
+
+ parser.add_option("--solver",
+ default="cryptominisat/build/cryptominisat5",
+ dest="solver",
+ help="Solver executable"
+ "[default: %default]",
+ type=str
+ )
+
+ parser.add_option("--folder", default="results", dest="given_folder",
+ help="S3 folder name to upload data"
+ "[default: %default]",
+ type=str
+ )
+
+ parser.add_option("--git", dest="git_rev", type=str,
+ help="The GIT revision to use. Default: HEAD"
+ )
+
+ parser.add_option("--opt", dest="extra_opts", type=str, default="",
+ help="Extra options to give to solver"
+ "[default: %default]",
+ )
+
+ parser.add_option("--noshutdown", "-n", default=False, dest="noshutdown",
+ action="store_true", help="Do not shut down clients"
+ )
+
+ parser.add_option("--drat", default=False, dest="drat",
+ action="store_true", help="Use DRAT"
+ )
+
+ parser.add_option("--stats", default=False, dest="stats",
+ action="store_true", help="Use STATS and get SQLITE data"
+ )
+
+ parser.add_option("--gauss", default=False, dest="gauss",
+ action="store_true", help="Use GAUSS"
+ )
+
+ parser.add_option("--logfile", dest="logfile_name", type=str,
+ default="python_server_log.log", help="Name of LOG file")
+
+ # parse options
+ options, args = parser.parse_args()
+ conf = configparser.ConfigParser()
+ if options.cnf_list == "test":
+ conf.read('ec2-spot-instance-test.cfg')
+ else:
+ conf.read('ec2-spot-instance.cfg')
+
+ options.s3_bucket = conf.get("ec2", "result_bucket")
+ options.key_name = conf.get("ec2", "key_name")
+ options.security_group_server = conf.get("ec2", "security_group_server")
+ options.subnet_id = conf.get("ec2", "subnet_id")
+ options.ami_id = conf.get("ec2", "ami_id")
+ options.region = conf.get("ec2", "region")
+
+ def rnd_id():
+ return ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(5))
+
+ options.logfile_name = options.base_dir + options.logfile_name
+ options.given_folder += "-" + time.strftime("%d-%B-%Y")
+ options.given_folder += "-%s" % rnd_id()
+ options.given_folder += "-%s" % options.cnf_list
+
+ if options.drat and not options.stats:
+ print("ERROR: You must have --stats when you use --drat")
+ exit(-1)
+
+ return options, args
+
+
+if __name__ == "__main__":
+ options, args = parse_arguments()
+ print("Options are:", options)
+ print("args are:", args)
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/check_all_licenses.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/check_all_licenses.sh
new file mode 100755
index 000000000..ee2c025cd
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/check_all_licenses.sh
@@ -0,0 +1,21 @@
+#!/usr/bin/bash
+set -e
+set -x
+
+check_license_fnames() {
+ #license check -- first print and then fail in case of problems
+ find $1 -type f -name $2 -exec ../utils/licensecheck/licensecheck.pl -m {} \;
+ NUM=$(find $1 -type f -name $2 -exec ../utils/licensecheck/licensecheck.pl -m {} \; | grep UNK | wc -l)
+ shopt -s extglob
+ NUM="${NUM##*( )}"
+ NUM="${NUM%%*( )}"
+ shopt -u extglob
+ if [ "$NUM" -ne 0 ]; then
+ echo "There are some files without license information!"
+ exit -1
+ fi
+}
+
+check_license_fnames ../tests/ CMakeLists.txt
+check_license_fnames ../src/ CMakeLists.txt
+check_license_fnames ../scripts/ CMakeLists.txt
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/docker/Dockerfile b/cryptominisat5/cryptominisat-5.6.3/scripts/docker/Dockerfile
new file mode 100644
index 000000000..c76597c8b
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/docker/Dockerfile
@@ -0,0 +1,9 @@
+FROM ubuntu:14.04
+MAINTAINER Mate Soos
+# RUN apt-get update && apt-get install -y libboost-program-options1.54.0 libstdc++6 && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
+RUN apt-get install libboost-program-options1.54.0
+ADD cryptominisat4 /home/cryptominisat4
+ADD libcryptominisat4* /home/
+ADD libm4ri-* /home/
+WORKDIR /home
+CMD ["./cryptominisat4"]
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/CMakeLists.txt b/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/CMakeLists.txt
new file mode 100644
index 000000000..31d801c70
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/CMakeLists.txt
@@ -0,0 +1,29 @@
+# Copyright (c) 2017, Mate Soos
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+
+# resource limiting is not available on Windows, so skip
+if (ENABLE_TESTING AND NOT MSVC AND NOT ONLY_SIMPLE)
+ add_test (
+ NAME verifier_test
+ COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/verifier_test.py
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ )
+endif()
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/debuglib.py b/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/debuglib.py
new file mode 100644
index 000000000..639899b9f
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/debuglib.py
@@ -0,0 +1,148 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2014 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+from __future__ import with_statement # Required in 2.5
+from __future__ import print_function
+import random
+
+
+def get_max_var_from_clause(line):
+ maxvar = 0
+ # strip leading 'x'
+ line2 = line.strip()
+ if len(line2) > 0 and line2[0] == 'x':
+ line2 = line2[1:]
+
+ for lit in line2.split():
+ num = 0
+ try:
+ num = int(lit)
+ except ValueError:
+ print("line '%s' contains a non-integer variable" % line2)
+
+ maxvar = max(maxvar, abs(num))
+
+ return maxvar
+
+
+class debuglib:
+ @staticmethod
+ def generate_random_assumps(maxvar):
+ assumps = ""
+ num = 0
+ varsInside = set()
+
+ # Half of the time, no assumptions at all
+ if random.randint(0, 1) == 1:
+ return assumps
+
+ # use a distribution so that few will be in assumps
+ while (num < maxvar and random.randint(0, 4) > 0):
+
+ # get a var that is not already inside the assumps
+ thisVar = random.randint(1, maxvar)
+ tries = 0
+ while (thisVar in varsInside):
+ thisVar = random.randint(1, maxvar)
+ tries += 1
+
+ # too many tries, don't waste time
+ if tries > 100:
+ return assumps
+
+ varsInside.add(thisVar)
+
+ # random sign
+ num += 1
+ if random.randint(0, 1):
+ thisVar *= -1
+
+ assumps += "%d " % thisVar
+
+ return assumps
+
+ @staticmethod
+ def file_len_no_comment(fname):
+ i = 0
+ with open(fname) as f:
+ for l in f:
+ # ignore comments and empty lines and header
+ if not l or l[0] == "c" or l[0] == "p":
+ continue
+ i += 1
+
+ return i
+
+ @staticmethod
+ def main(fname1, fname2):
+
+ # approx number of solve()-s to add
+ if random.randint(0, 1) == 1:
+ num_to_add = random.randint(0, 10)
+ else:
+ num_to_add = 0
+
+ # based on length and number of solve()-s to add, intersperse
+ # file with ::solve()
+ file_len = debuglib.file_len_no_comment(fname1)
+ if num_to_add > 0:
+ nextToAdd = random.randint(1, int(file_len / num_to_add) + 1)
+ else:
+ nextToAdd = file_len + 1
+
+ fin = open(fname1, "r")
+ fout = open(fname2, "w")
+ at = 0
+ maxvar = 0
+ for line in fin:
+ line = line.strip()
+
+ # ignore comments (but write them out)
+ if not line or line[0] == "c" or line[0] == 'p':
+ fout.write(line + '\n')
+ continue
+
+ at += 1
+ if at >= nextToAdd:
+ assumps = debuglib.generate_random_assumps(maxvar)
+ if random.choice([True, False]):
+ fout.write("c Solver::solve( %s )\n" % assumps)
+ elif random.choice([True, False]):
+ fout.write("c Solver::simplify( %s )\n" % assumps)
+ else:
+ fout.write("c Solver::simplify( %s )\n" % assumps)
+ fout.write("c Solver::solve( %s )\n" % assumps)
+
+ nextToAdd = at + \
+ random.randint(1, int(file_len / num_to_add) + 1)
+
+ # calculate max variable
+ maxvar = max(maxvar, get_max_var_from_clause(line))
+
+ # copy line over
+ fout.write(line + '\n')
+ fout.close()
+ fin.close()
+
+
+def intersperse(fname1, fname2, seed):
+ random.seed(int(seed))
+ debuglib.main(fname1, fname2)
+
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/fuzz_test.py b/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/fuzz_test.py
new file mode 100755
index 000000000..1b741ef1a
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/fuzz_test.py
@@ -0,0 +1,871 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2014 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+from __future__ import with_statement # Required in 2.5
+from __future__ import print_function
+import subprocess
+import os
+import sys
+import time
+import random
+from random import choice
+import optparse
+import glob
+import resource
+from verifier import *
+from functools import partial
+
+print("our CWD is: %s files here: %s" % (os.getcwd(), glob.glob("*")))
+sys.path.append(os.getcwd())
+print("our sys.path is", sys.path)
+
+from debuglib import *
+
+
+class PlainHelpFormatter(optparse.IndentedHelpFormatter):
+
+ def format_description(self, description):
+ if description:
+ return description + "\n"
+ else:
+ return ""
+
+
+usage = "usage: %prog [options] --fuzz/--regtest/--checkdir/filetocheck"
+desc = """Fuzz the solver with fuzz-generator: ./fuzz_test.py
+"""
+
+
+def set_up_parser():
+ parser = optparse.OptionParser(usage=usage, description=desc,
+ formatter=PlainHelpFormatter())
+ parser.add_option("--exec", metavar="SOLVER", dest="solver",
+ default="../../build/cryptominisat5",
+ help="SAT solver executable. Default: %default")
+
+ parser.add_option("--extraopts", "-e", metavar="OPTS",
+ dest="extra_options", default="",
+ help="Extra options to give to SAT solver")
+
+ parser.add_option("--verbose", "-v", action="store_true", default=False,
+ dest="verbose", help="Print more output")
+
+ # for fuzz-testing
+ parser.add_option("--seed", dest="fuzz_seed_start",
+ help="Fuzz test start seed. Otherwise, random seed is picked"
+ " (printed to console)", type=int)
+
+ parser.add_option("--fuzzlim", dest="fuzz_test_lim", type=int,
+ help="Number of fuzz tests to run"
+ )
+ parser.add_option("--novalgrind", dest="novalgrind", default=False,
+ action="store_true", help="No valgrind installed")
+ parser.add_option("--valgrindfreq", dest="valgrind_freq", type=int,
+ default=10, help="1 out of X times valgrind will be used. Default: %default in 1")
+
+ parser.add_option("--small", dest="small", default=False,
+ action="store_true",
+ help="Don't run 'large' fuzzer"
+ " (may mem-out on smaller systems)")
+ parser.add_option("--gauss", dest="gauss", default=False,
+ action="store_true",
+ help="Concentrate fuzzing gauss")
+ parser.add_option("--indep", dest="only_indep", default=False,
+ action="store_true",
+ help="Concentrate fuzzing independent variables")
+ parser.add_option("--dump", dest="only_dump", default=False,
+ action="store_true",
+ help="Concentrate fuzzing dumped clauses")
+
+ parser.add_option("--maxth", "-m", dest="max_threads", default=100,
+ type=int, help="Max number of threads")
+
+ parser.add_option("--tout", "-t", dest="maxtime", type=int, default=35,
+ help="Max time to run. Default: %default")
+
+ parser.add_option("--textra", dest="maxtimediff", type=int, default=10,
+ help="Extra time on top of timeout for processing."
+ " Default: %default")
+ return parser
+
+
+def fuzzer_call_failed(fname):
+ print("OOps, fuzzer executable call failed!")
+ print("Did you build with cmake -DENABLE_TESTING=ON? Did you do git submodules init & update?")
+ print("Here is the output:")
+
+ print("**** ----- ****")
+ with open(fname, "r") as a:
+ for x in a:
+ print(x.strip())
+ print("**** ----- ****")
+ exit(-1)
+
+
+class create_fuzz:
+
+ def call_from_fuzzer(self, fuzzer, fname):
+ seed = random.randint(0, 1000000)
+ if len(fuzzer) == 1:
+ call = "{0} {1} > {2}".format(fuzzer[0], seed, fname)
+ elif len(fuzzer) == 2:
+ call = "{0} {1} {2} > {3}".format(
+ fuzzer[0], fuzzer[1], seed, fname)
+ elif len(fuzzer) == 3:
+ hashbits = (random.getrandbits(20) % 80) + 1
+ call = "%s %s %d %s %d > %s" % (
+ fuzzer[0], fuzzer[1], hashbits, fuzzer[2], seed, fname)
+ else:
+ assert False, "Fuzzer must have at most 2 arguments"
+
+ return call
+
+ def create_fuzz_file(self, fuzzer, fuzzers, fname):
+ # handle special fuzzer
+ fnames_multi = []
+ if len(fuzzer) == 2 and fuzzer[1] == "special":
+
+ # sometimes just fuzz with all SAT problems
+ fixed = random.getrandbits(1) == 1
+
+ for _ in range(random.randrange(2, 4)):
+ fname2 = unique_file("fuzzTest")
+ fnames_multi.append(fname2)
+
+ # chose a ranom fuzzer, not multipart
+ fuzzer2 = ["multipart.py", "special"]
+ while os.path.basename(fuzzer2[0]) == "multipart.py":
+ fuzzer2 = choice(fuzzers)
+
+ # sometimes fuzz with SAT problems only
+ if (fixed):
+ fuzzer2 = fuzzers[0]
+
+ print("fuzzer2 used: %s" % fuzzer2)
+ call = self.call_from_fuzzer(fuzzer2, fname2)
+ print("calling sub-fuzzer: %s" % call)
+ status = subprocess.call(call, shell=True)
+ if status != 0:
+ fuzzer_call_failed(fname2)
+
+ # construct multi-fuzzer call
+ call = ""
+ call += fuzzer[0]
+ call += " "
+ for name in fnames_multi:
+ call += " " + name
+ call += " > " + fname
+
+ return call, fnames_multi
+
+ # handle normal fuzzer
+ else:
+ return self.call_from_fuzzer(fuzzer, fname), []
+
+
+def file_exists(fname):
+ try:
+ with open(fname):
+ return True
+ except IOError:
+ return False
+
+
+def print_version():
+ command = options.solver + " --version"
+ if options.verbose:
+ print("Executing: %s" % command)
+ p = subprocess.Popen(command.rsplit(), stderr=subprocess.STDOUT,
+ stdout=subprocess.PIPE, universal_newlines=True)
+
+ consoleOutput, err = p.communicate()
+ print("Version values: %s" % consoleOutput.strip())
+
+
+class Tester:
+
+ def __init__(self):
+ self.ignoreNoSolution = False
+ self.extra_opts_supported = self.list_options_if_supported(
+ ["xor", "autodisablegauss", "sql", "clid"])
+ self.sol_parser = solution_parser(options)
+ self.sqlitedbfname = None
+ self.clid_added = False
+ self.only_indep = False
+ self.indep_vars = []
+ self.dump_red = None
+
+ def list_options_if_supported(self, tocheck):
+ ret = []
+ for elem in tocheck:
+ if self.option_supported(elem):
+ ret.append(elem)
+
+ return ret
+
+ def option_supported(self, option_name):
+ command = options.solver
+ command += " --hhelp"
+ p = subprocess.Popen(
+ command.rsplit(), stderr=subprocess.STDOUT,
+ stdout=subprocess.PIPE,
+ universal_newlines=True)
+
+ consoleOutput, err = p.communicate()
+
+ for l in consoleOutput.split("\n"):
+ tmp_option_name = "--" + option_name
+ if tmp_option_name in l:
+ return True
+
+ return False
+
+ def create_rnd_sched(self, string_list):
+ opts = string_list.split(",")
+ opts = [a.strip(" ") for a in opts]
+ opts = sorted(list(set(opts)))
+ if options.verbose:
+ print("available schedule options: %s" % opts)
+
+ sched = []
+ for _ in range(int(random.gammavariate(12, 0.7))):
+ sched.append(random.choice(opts))
+
+ # just so that XOR is really found and used, so we can fuzz it
+ if "autodisablegauss" in self.extra_opts_supported:
+ if random.choice([False, True, True, True]) and self.this_gauss_on:
+ sched.append("occ-xor")
+
+ return sched
+
+ def rnd_schedule_all(self, preproc):
+ sched_opts = "handle-comps,"
+ sched_opts += "scc-vrepl, cache-clean, cache-tryboth,"
+ sched_opts += "sub-impl, intree-probe, probe,"
+ sched_opts += "sub-str-cls-with-bin, distill-cls, scc-vrepl, sub-impl,"
+ sched_opts += "sub-cls-with-bin,"
+ sched_opts += "str-impl, cache-clean, sub-str-cls-with-bin, distill-cls, scc-vrepl,"
+ sched_opts += "occ-backw-sub-str, occ-xor, occ-clean-implicit, occ-bve, occ-bva,"
+ sched_opts += "check-cache-size, renumber"
+
+ # type of schedule
+ cmd = ""
+ sched = ",".join(self.create_rnd_sched(sched_opts))
+ if sched != "" and not preproc:
+ cmd += "--schedule %s " % sched
+
+ sched = ",".join(self.create_rnd_sched(sched_opts))
+ if sched != "":
+ cmd += "--preschedule %s " % sched
+
+ return cmd
+
+ def random_options(self, preproc=False):
+ self.sqlitedbfname = None
+ self.clid_added = False
+ cmd = " --zero-exit-status "
+
+ # disable gauss when gauss is compiled in but asked not to be used
+ if not self.this_gauss_on and "autodisablegauss" in self.extra_opts_supported:
+ cmd += "--maxgaussdepth 0 "
+
+ # note, presimp=0 is braindead for preproc but it's mostly 1 so OK
+ cmd += "--presimp %d " % random.choice([1, 1, 1, 1, 1, 1, 1, 0])
+ cmd += "--confbtwsimp %d " % random.choice([100, 1000])
+
+ if self.dump_red is not None:
+ cmd += "--dumpred %s " % self.dump_red
+ cmd += "--dumpredmaxlen %d " % random.choice([2, 10, 100, 100000])
+ cmd += "--dumpredmaxglue %d " % random.choice([2, 10, 100, 100000])
+
+ if self.only_indep:
+ cmd += "--onlyindep "
+ cmd += "--indep "
+ cmd += ",".join(["%s" % x for x in self.indep_vars]) + " "
+
+ if random.choice([True, False]) and "clid" in self.extra_opts_supported:
+ cmd += "--varsperxorcut %d " % random.randint(4, 6)
+ cmd += "--xorcache %d " % random.choice([0, 1])
+ if random.choice([True, True, True, False]):
+ self.clid_added = True
+ cmd += "--clid "
+ cmd += "--locgmult %.12f " % random.gammavariate(0.5, 0.7)
+ cmd += "--varelimover %d " % random.gammavariate(1, 20)
+ cmd += "--memoutmult %0.12f " % random.gammavariate(0.03, 50)
+ cmd += "--verb %d " % random.choice([0, 0, 0, 0, 1, 2])
+ cmd += "--maple %d " % random.choice([0, 1])
+ if random.randint(0, 2) == 1:
+ cmd += "--reconf %d " % random.choice([3, 4, 6, 7, 12, 13, 14, 15, 16])
+ # cmd += "--undef %d " % random.choice([0, 1])
+ cmd += " --reconfat %d " % random.randint(0, 2)
+ cmd += "--ml %s " % random.randint(0, 10)
+ cmd += "--restart %s " % random.choice(
+ ["geom", "glue", "luby"])
+ cmd += "--adjustglue %f " % random.choice([0, 0.5, 0.7, 1.0])
+ cmd += "--gluehist %s " % random.randint(1, 500)
+ cmd += "--updateglueonanalysis %s " % random.randint(0, 1)
+ cmd += "--otfhyper %s " % random.randint(0, 1)
+ # cmd += "--clean %s " % random.choice(["size", "glue", "activity",
+ # "prconf"])
+ cmd += "--bothprop %s " % random.randint(0, 1)
+ cmd += "--probemaxm %s " % random.choice([0, 10, 100, 1000])
+ cmd += "--cachesize %s " % random.randint(10, 100)
+ cmd += "--cachecutoff %s " % random.randint(0, 2000)
+ cmd += "--occredmax %s " % random.randint(0, 100)
+ cmd += "--extscc %s " % random.randint(0, 1)
+ cmd += "--distill %s " % random.randint(0, 1)
+ cmd += "--recur %s " % random.randint(0, 1)
+ cmd += "--compsfrom %d " % random.randint(0, 2)
+ cmd += "--compsvar %d " % random.randint(20000, 500000)
+ cmd += "--compslimit %d " % random.randint(0, 3000)
+ cmd += "--implicitmanip %s " % random.randint(0, 1)
+ cmd += "--occsimp %s " % random.randint(0, 1)
+ cmd += "--occirredmaxmb %s " % random.gammavariate(0.2, 5)
+ cmd += "--occredmaxmb %s " % random.gammavariate(0.2, 5)
+ cmd += "--skipresol %d " % random.choice([1, 1, 1, 0])
+ cmd += "--implsubsto %s " % random.choice([0, 10, 1000])
+ cmd += "--sync %d " % random.choice([100, 1000, 6000, 100000])
+ cmd += "-m %0.12f " % random.gammavariate(0.1, 5.0)
+ cmd += "--maxsccdepth %d " % random.choice([0, 1, 100, 100000])
+
+ # more more minim
+ cmd += "--moremoreminim %d " % random.choice([1, 1, 1, 0])
+ cmd += "--moremorecachelimit %d " % int(random.gammavariate(1, 6))
+ cmd += "--moremorestamp %d " % random.choice([1, 1, 1, 0])
+ cmd += "--moremorealways %d " % random.choice([1, 1, 1, 0])
+
+ if self.this_gauss_on:
+ # Reduce iteratively the matrix that is updated
+ cmd += "--iterreduce %s " % random.choice([0, 1])
+
+ # Only run Gaussian Elimination until this depth
+ cmd += "--maxgaussdepth %s " % int(random.gammavariate(1, 20.0))
+
+ # Set maximum no. of rows for gaussian matrix."
+ cmd += "--maxmatrixrows %s " % int(random.gammavariate(5, 15.0))
+
+ # "Automatically disable gauss when performing badly")
+ cmd += "--autodisablegauss %s " % random.choice([0, 1])
+
+ # "Set minimum no. of rows for gaussian matrix.
+ cmd += "--minmatrixrows %s " % int(random.gammavariate(3, 15.0))
+
+ # Save matrix every Nth decision level."
+ cmd += "--savematrix %s " % (int(random.gammavariate(1, 15.0))+1)
+
+ # "Maximum number of matrixes to treat.")
+ cmd += "--maxnummatrixes %s " % int(random.gammavariate(1, 10.0))
+
+ if "sql" in self.extra_opts_supported and random.randint(0, 3) > 0 and self.num_threads == 1 and not self.preproc:
+ cmd += "--sql 2 "
+ self.sqlitedbfname = unique_file("fuzz", ".sqlitedb")
+ cmd += "--sqlitedb %s " % self.sqlitedbfname
+ cmd += "--sqlresttime %d " % random.randint(0, 1)
+ cmd += "--cldatadumpratio %0.3f " % random.choice([0.9, 0.1, 0.7])
+
+ # the most buggy ones, don't turn them off much, please
+ if random.choice([True, False]):
+ opts = ["scc", "varelim", "comps", "strengthen", "probe", "intree",
+ "stamp", "cache", "otfsubsume",
+ "renumber", "savemem", "moreminim", "gates", "bva",
+ "gorshort", "gandrem", "gateeqlit", "schedsimp"]
+
+ if "xor" in self.extra_opts_supported:
+ opts.append("xor")
+
+ for opt in opts:
+ cmd += "--%s %d " % (opt, random.randint(0, 1))
+
+ cmd += self.rnd_schedule_all(preproc)
+
+ return cmd
+
+ def execute(self, fname, fname2=None, fixed_opts="", rnd_opts=None):
+ if os.path.isfile(options.solver) is not True:
+ print("Error: Cannot find CryptoMiniSat executable.Searched in: '%s'" %
+ options.solver)
+ print("Error code 300")
+ exit(300)
+
+ for f in glob.glob("%s-debugLibPart*.output" % fname):
+ os.unlink(f)
+
+ # construct command
+ command = ""
+ if not options.novalgrind and random.randint(1, options.valgrind_freq) == 1:
+ command += "valgrind -q --leak-check=full --error-exitcode=9 "
+ command += options.solver
+ if rnd_opts is None:
+ rnd_opts = self.random_options()
+ command += rnd_opts
+ if self.needDebugLib:
+ command += "--debuglib %s " % fname
+ command += "--threads %d " % self.num_threads
+ command += options.extra_options + " "
+ command += fixed_opts + " "
+ if fname is not None:
+ command += fname
+ if fname2:
+ if self.drat:
+ command += " %s " % fname2
+ else:
+ command += " %s --savedstate %s-savedstate.dat " % (fname2, fname2)
+
+ print("Executing: %s " % command)
+
+ # print time limit
+ if options.verbose:
+ print("CPU limit of parent (pid %d)" % os.getpid(), resource.getrlimit(resource.RLIMIT_CPU))
+
+ # if need time limit, then limit
+ err_fname = unique_file("err", ".out")
+ err_file = open(err_fname, "w")
+ p = subprocess.Popen(
+ command.rsplit(), stderr=err_file, stdout=subprocess.PIPE,
+ preexec_fn=partial(setlimits, options.maxtime),
+ universal_newlines=True)
+
+ # print time limit after child startup
+ if options.verbose:
+ print("CPU limit of parent (pid %d) after startup of child: %s secs" %
+ (os.getpid(), resource.getrlimit(resource.RLIMIT_CPU)))
+
+ # Get solver output
+ consoleOutput, err = p.communicate()
+ retcode = p.returncode
+ err_file.close()
+ with open(err_fname, "r") as err_file:
+ found_something = False
+ for line in err_file:
+ print("Error line while executing: %s" % line.strip())
+ # don't error out on issues related to UBSAN/ASAN
+ # of clang of other projects
+ if "std::_Ios_Fmtflags" in line or "mzd.h" in line or "lexical_cast.hpp" in line or "MersenneTwister.h" in line:
+ pass
+ else:
+ found_something = True
+
+ if found_something:
+ exit(-1)
+
+ os.unlink(err_fname)
+ if self.sqlitedbfname is not None:
+ os.unlink(self.sqlitedbfname)
+
+ if options.verbose:
+ print("CPU limit of parent (pid %d) after child finished executing: %s" %
+ (os.getpid(), resource.getrlimit(resource.RLIMIT_CPU)))
+
+ return consoleOutput, retcode
+
+ def check(self, fname, fname2=None,
+ checkAgainst=None,
+ fixed_opts="", dump_output_fname=None,
+ rnd_opts=None):
+
+ consoleOutput = ""
+ if checkAgainst is None:
+ checkAgainst = fname
+ curr_time = time.time()
+
+ # Do we need to solve the problem, or is it already solved?
+ consoleOutput, retcode = self.execute(
+ fname, fname2=fname2,
+ fixed_opts=fixed_opts, rnd_opts=rnd_opts)
+
+ # if time was limited, we need to know if we were over the time limit
+ # and that is why there is no solution
+ diff_time = time.time() - curr_time
+ if diff_time > (options.maxtime - options.maxtimediff) / self.num_threads:
+ print("Too much time to solve, aborted!")
+ return None
+
+ print("Within time limit: %.2f s" % diff_time)
+ print("filename: %s" % fname)
+
+ if options.verbose:
+ print(consoleOutput)
+
+ # if library debug is set, check it
+ if (self.needDebugLib):
+ self.sol_parser.check_debug_lib(checkAgainst)
+
+ if retcode != 0:
+ print("Return code is not 0, error!")
+ exit(-1)
+
+ print("Checking console output...")
+ unsat, solution, _ = self.sol_parser.parse_solution_from_output(
+ consoleOutput.split("\n"), self.ignoreNoSolution)
+
+ # preprocessing
+ if dump_output_fname is not None:
+ f = open(dump_output_fname, "w")
+ f.write(consoleOutput)
+ f.close()
+ return True
+
+ if not unsat:
+ if len(self.indep_vars) != 0:
+ self.sol_parser.indep_vars_solution_check(fname, self.indep_vars, solution)
+ else:
+ self.sol_parser.test_found_solution(solution, checkAgainst)
+
+ if self.dump_red:
+ self.check_dumped_clauses(fname)
+
+ return
+
+ # it's UNSAT, let's check with DRAT
+ if fname2:
+ toexec = "../../build/tests/drat-trim/drat-trim {cnf} {dratf} {opt}"
+ opt = ""
+ if self.clid_added:
+ opt = "-i "
+ toexec = toexec.format(cnf=fname, dratf=fname2, opt=opt)
+ print("Checking DRAT...: ", toexec)
+ p = subprocess.Popen(toexec.rsplit(),
+ stdout=subprocess.PIPE,
+ universal_newlines=True)
+
+ consoleOutput2 = p.communicate()[0]
+ diff_time = time.time() - curr_time
+
+ # find verification code
+ foundVerif = False
+ dratLine = ""
+ for line in consoleOutput2.split('\n'):
+ if len(line) > 1 and line[:2] == "s ":
+ # print("verif: " , line)
+ foundVerif = True
+ if line[2:10] != "VERIFIED" and line[2:] != "TRIVIAL UNSAT":
+ print("DRAT verification error, it says: %s" % consoleOutput2)
+ assert line[2:10] == "VERIFIED" or line[
+ 2:] == "TRIVIAL UNSAT", "DRAT didn't verify problem!"
+ dratLine = line
+
+ # Check whether we have found a verification code
+ if foundVerif is False:
+ print("verifier error! It says: %s" % consoleOutput2)
+ assert foundVerif, "Cannot find DRAT verification code!"
+ else:
+ print("OK, DRAT says: %s" % dratLine)
+
+ # check with other solver
+ ret = self.sol_parser.check_unsat(checkAgainst)
+ if ret is None:
+ print("Other solver time-outed, cannot check")
+ elif ret is True:
+ print("UNSAT verified by other solver")
+ else:
+ print("Grave bug: SAT-> UNSAT : Other solver found solution!!")
+ exit()
+
+ def check_dumped_clauses(self, fname):
+ assert self.dump_red is not None
+
+ tmpfname = unique_file("fuzzTest-dump-test")
+ with open(tmpfname, "w") as tmpf:
+ with open(fname, "r") as x:
+ for line in x:
+ line = line.strip()
+ if "c" in line or "p" in line:
+ continue
+ tmpf.write(line+"\n")
+
+ with open(self.dump_red, "r") as x:
+ for line in x:
+ line = line.strip()
+ tmpf.write(line+"\n")
+
+ print("[dump-check] dump-combined file is: ", tmpfname)
+ if options.verbose:
+ print("dump file is: ", self.dump_red)
+ print("orig file is: ", fname)
+
+ self.old_dump_red = str(self.dump_red)
+ self.dump_red = None
+ self.indep_vars = []
+ self.only_indep = False
+ self.check(tmpfname, checkAgainst=fname)
+
+ os.unlink(tmpfname)
+ os.unlink(self.old_dump_red)
+ print("[dump-check] OK, solution after DUMP has been injected is still OK")
+
+ def fuzz_test_one(self):
+ print("--- NORMAL TESTING ---")
+ self.num_threads = random.choice([1, 1, 1, 1, 1, 1, 4])
+ self.num_threads = min(options.max_threads, self.num_threads)
+ self.this_gauss_on = "autodisablegauss" in self.extra_opts_supported and random.choice([True, False, False])
+ if options.gauss:
+ self.this_gauss_on = True
+ assert "autodisablegauss" in self.extra_opts_supported
+
+ self.drat = self.num_threads == 1 and random.randint(0, 10) < 5 and (not self.this_gauss_on)
+ self.sqlitedbfname = None
+ self.preproc = False
+ self.dump_red = random.choice([None, None, None, None, None, True])
+ if self.dump_red is not None:
+ self.dump_red = unique_file("fuzzTest-dump")
+ self.only_indep = random.choice([True, False, False, False, False]) and not self.drat
+
+ if options.only_indep:
+ self.drat = False
+ self.only_indep = True
+
+ if options.only_dump:
+ self.drat = False
+ self.only_indep = False
+ if self.dump_red is None:
+ self.dump_red = unique_file("fuzzTest-dump")
+
+ if self.drat:
+ fuzzers = fuzzers_drat
+ elif options.gauss:
+ fuzzers = fuzzers_xor
+ else:
+ fuzzers = fuzzers_nodrat
+ fuzzer = random.choice(fuzzers)
+
+ fname = unique_file("fuzzTest")
+ fname_drat = None
+ if self.drat:
+ fname_drat = unique_file("fuzzTest-drat")
+
+ # create the fuzz file
+ cf = create_fuzz()
+ call, todel = cf.create_fuzz_file(fuzzer, fuzzers, fname)
+ print("calling %s" % call)
+ status = subprocess.call(call, shell=True)
+ if status != 0:
+ fuzzer_call_failed(fname)
+
+ if not self.drat and not self.only_indep and not self.dump_red:
+ self.needDebugLib = True
+ interspersed_fname = unique_file("fuzzTest")
+ seed_for_inters = random.randint(0, 1000000)
+ intersperse(fname, interspersed_fname, seed_for_inters)
+ print("Interspersed: ./intersperse.py %s %s %d" % (fname,
+ interspersed_fname,
+ seed_for_inters))
+ os.unlink(fname)
+ else:
+ self.needDebugLib = False
+ interspersed_fname = fname
+
+ # calculate indep vars
+ self.indep_vars = []
+ if self.only_indep:
+ max_vars = self.sol_parser.max_vars_in_file(fname)
+ assert max_vars > 0
+
+ self.indep_vars = []
+ myset = {}
+ for _ in range(random.randint(1, 50)):
+ x = random.randint(1, max_vars)
+ if x not in myset:
+ self.indep_vars.append(x)
+ myset[x] = 1
+
+ # don't do it for 0-length indep vars
+ if len(self.indep_vars) == 0:
+ self.only_indep = False
+
+ self.check(fname=interspersed_fname, fname2=fname_drat)
+
+ # remove temporary filenames
+ os.unlink(interspersed_fname)
+ if fname_drat:
+ os.unlink(fname_drat)
+ for name in todel:
+ os.unlink(name)
+
+ if self.dump_red is not None:
+ os.unlink(self.dump_red)
+ self.dump_red = None
+
+ def delete_file_no_matter_what(self, fname):
+ try:
+ os.unlink(fname)
+ except:
+ pass
+
+ def fuzz_test_preproc(self):
+ print("--- PREPROC TESTING ---")
+ self.this_gauss_on = False # don't do gauss on preproc
+ tester.needDebugLib = False
+ fuzzer = random.choice(fuzzers_drat)
+ self.num_threads = 1
+ fname = unique_file("fuzzTest")
+ self.drat = False
+ self.preproc = True
+ self.only_indep = False
+ self.indep_vars = []
+ assert self.dump_red is None
+ self.dump_red = None
+
+ # create the fuzz file
+ cf = create_fuzz()
+ call, todel = cf.create_fuzz_file(fuzzer, fuzzers_nodrat, fname)
+ print("calling %s : %s" % (fuzzer, call))
+ status = subprocess.call(call, shell=True)
+ if status != 0:
+ fuzzer_call_failed(fname)
+
+ rnd_opts = self.random_options(preproc=True)
+
+ # preprocess
+ simp = "%s-simplified.cnf" % fname
+ self.delete_file_no_matter_what(simp)
+ curr_time = time.time()
+ console, retcode = self.execute(fname, fname2=simp,
+ rnd_opts=rnd_opts,
+ fixed_opts="--preproc 1")
+
+ diff_time = time.time() - curr_time
+ if diff_time > (options.maxtime - options.maxtimediff) / self.num_threads:
+ print("Too much time to solve, aborted!")
+ else:
+ print("Within time limit: %.2f s" % diff_time)
+ if retcode != 0:
+ print("Return code is not 0, error!")
+ exit(-1)
+
+ solution = "%s-solution.sol" % fname
+ ret = self.check(fname=simp, dump_output_fname=solution)
+ if ret is not None:
+ # didn't time out, so let's reconstruct the solution
+ savedstate = "%s-savedstate.dat" % simp
+ self.check(fname=solution, checkAgainst=fname,
+ fixed_opts="--preproc 2 --savedstate %s" % savedstate,
+ rnd_opts=rnd_opts)
+ os.unlink(savedstate)
+ os.unlink(solution)
+
+ # remove temporary filenames
+ os.unlink(fname)
+ for name in todel:
+ os.unlink(name)
+ assert self.dump_red is None
+
+
+def filter_large_fuzzer(dat):
+ f = []
+ for x in dat:
+ okay = True
+ for y in x:
+ if "large" in y:
+ okay = False
+
+ if okay:
+ f.append(x)
+
+ return f
+
+
+fuzzers_noxor = [
+ ["../../build/tests/sha1-sat/sha1-gen --nocomment --attack preimage --rounds 20",
+ "--hash-bits", "--seed"],
+ ["../../build/tests/sha1-sat/sha1-gen --nocomment --attack preimage --zero "
+ "--message-bits 400 --rounds 8 --hash-bits 60",
+ "--seed"],
+ # ["build/cnf-fuzz-nossum"],
+ ["../../build/tests/cnf-utils/largefuzzer"],
+ ["../../build/tests/cnf-utils/cnf-fuzz-biere"],
+ ["../../build/tests/cnf-utils/cnf-fuzz-biere"],
+ ["../../build/tests/cnf-utils/cnf-fuzz-biere"],
+ ["../../build/tests/cnf-utils/cnf-fuzz-biere"],
+ ["../../build/tests/cnf-utils/cnf-fuzz-biere"],
+ ["../../build/tests/cnf-utils/cnf-fuzz-biere"],
+ ["../../build/tests/cnf-utils/cnf-fuzz-biere"],
+ ["../../build/tests/cnf-utils/cnf-fuzz-biere"],
+ ["../../build/tests/cnf-utils/cnf-fuzz-biere"],
+ ["../../build/tests/cnf-utils/sgen4 -unsat -n 50", "-s"],
+ ["../../build/tests/cnf-utils//sgen4 -sat -n 50", "-s"],
+ ["../../utils/cnf-utils/cnf-fuzz-brummayer.py", "-s"],
+ ["../../utils/cnf-utils/cnf-fuzz-xor.py", "--seed"],
+ ["../../utils/cnf-utils/multipart.py", "special"]
+]
+fuzzers_xor = [
+ ["../../utils/cnf-utils/xortester.py", "--seed"],
+ ["../../build/tests/sha1-sat/sha1-gen --xor --attack preimage --rounds 21",
+ "--hash-bits", "--seed"],
+]
+
+
+if __name__ == "__main__":
+ global options
+ global fuzzers_drat
+ global fuzzers_nodrat
+ if not os.path.isdir("out"):
+ print("Directory for outputs, 'out' not present, creating it.")
+ os.mkdir("out")
+
+ # parse options
+ parser = set_up_parser()
+ (options, args) = parser.parse_args()
+ if options.valgrind_freq <= 0:
+ print("Valgrind Frequency must be at least 1")
+ exit(-1)
+
+ fuzzers_drat = fuzzers_noxor
+ fuzzers_nodrat = fuzzers_noxor + fuzzers_xor
+ if options.small:
+ fuzzers_drat = filter_large_fuzzer(fuzzers_drat)
+ fuzzers_nodrat = filter_large_fuzzer(fuzzers_nodrat)
+
+ print_version()
+ tester = Tester()
+ tester.needDebugLib = False
+ num = 0
+ rnd_seed = options.fuzz_seed_start
+ if rnd_seed is None:
+ rnd_seed = random.randint(0, 1000*1000*100)
+
+ while True:
+ toexec = "./fuzz_test.py --fuzzlim 1 --seed %d " % rnd_seed
+ if options.novalgrind:
+ toexec += "--novalgrind "
+ if options.valgrind_freq:
+ toexec += "--valgrindfreq %d " % options.valgrind_freq
+ if options.small:
+ toexec += "--small "
+ if options.gauss:
+ toexec += "--gauss "
+ if options.only_indep:
+ toexec += "--indep "
+ if options.only_dump:
+ toexec += "--dump "
+ toexec += "-m %d " % options.max_threads
+
+ print("")
+ print("")
+ print("--> To re-create fuzz-test below: %s" % toexec)
+
+ random.seed(rnd_seed)
+ if random.randint(0, 10) == 0:
+ tester.fuzz_test_preproc()
+ else:
+ tester.fuzz_test_one()
+ rnd_seed += 1
+ num += 1
+ if options.fuzz_test_lim is not None and num >= options.fuzz_test_lim:
+ exit(0)
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/intersperse.py b/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/intersperse.py
new file mode 100755
index 000000000..6eb91615b
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/intersperse.py
@@ -0,0 +1,31 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2014 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+from __future__ import with_statement # Required in 2.5
+from __future__ import print_function
+import debuglib
+import sys
+
+if len(sys.argv) != 4:
+ print("You must give 3 arguments: input file, output file, seed")
+
+
+debuglib.intersperse(sys.argv[1], sys.argv[2], sys.argv[3])
+print("OK, output in %s" % sys.argv[2])
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/verifier.py b/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/verifier.py
new file mode 100755
index 000000000..b3389d5d6
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/verifier.py
@@ -0,0 +1,589 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2016 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+
+from __future__ import with_statement # Required in 2.5
+from __future__ import print_function
+import optparse
+import gzip
+import re
+import fnmatch
+from xor_to_cnf_class import *
+from debuglib import *
+import subprocess
+import os
+import stat
+import time
+import resource
+import locale
+from functools import partial
+
+
+def unique_file(fname_begin, fname_end=".cnf"):
+ counter = 1
+ while 1:
+ fname = "out/" + fname_begin + '_' + str(counter) + fname_end
+ try:
+ fd = os.open(
+ fname, os.O_CREAT | os.O_EXCL, stat.S_IREAD | stat.S_IWRITE)
+ os.fdopen(fd).close()
+ return fname
+ except OSError:
+ pass
+
+ counter += 1
+ if counter > 300:
+ print("Cannot create unique_file, last try was: %s", fname)
+ exit(-1)
+
+
+def setlimits(maxtime):
+ # sys.stdout.write("Setting resource limit in child (pid %d): %d s\n" %
+ # (os.getpid(), maxtime))
+ resource.setrlimit(resource.RLIMIT_CPU, (maxtime, maxtime))
+
+
+class solution_parser:
+ def __init__(self, options):
+ self.options = options
+
+ @staticmethod
+ def test_found_solution(solution, fname, debugLibPart=None):
+ if debugLibPart is None:
+ print("Verifying solution for CNF file %s" % fname)
+ else:
+ print("Verifying solution for CNF file %s, part %d" %
+ (fname, debugLibPart))
+
+ if fnmatch.fnmatch(fname, '*.gz'):
+ f = gzip.open(fname, "r")
+ else:
+ f = open(fname, "r")
+ clauses = 0
+ thisDebugLibPart = 0
+
+ for line in f:
+ line = line.rstrip()
+
+ # skip empty lines
+ if len(line) == 0:
+ continue
+
+ # count debug lib parts
+ if line[0] == 'c' and "Solver::solve" in line:
+ thisDebugLibPart += 1
+
+ # if we are over debugLibPart, exit
+ if debugLibPart is not None and thisDebugLibPart >= debugLibPart:
+ f.close()
+ return
+
+ # check solution against clause
+ try:
+ if line[0] != 'c' and line[0] != 'p':
+ if line[0] != 'x':
+ solution_parser._check_regular_clause(line, solution)
+ else:
+ assert line[0] == 'x', "Line must start with p, c, v or x"
+ solution_parser._check_xor_clause(line, solution)
+
+ clauses += 1
+ except:
+ if debugLibPart is not None:
+ print("--> Error in part: %s. We are reading up to and including part: %s"
+ % (thisDebugLibPart, debugLibPart-1))
+ raise
+
+ f.close()
+ print("Verified %d original xor&regular clauses" % clauses)
+
+ def indep_vars_solution_check(self, fname, indep_vars, solution):
+ assert len(indep_vars) > 0
+ a = XorToCNF()
+ tmpfname = unique_file("tmp_for_xor_to_cnf_convert")
+ a.convert(fname, tmpfname)
+
+ with open(tmpfname, "a") as f:
+ # NOTE: the "p cnf..." header will be wrong
+ for i in indep_vars:
+ if i not in solution:
+ print("ERROR: solution does not contain independent var %d" % i)
+ print("Independent vars were: %s" % indep_vars)
+ exit(-1)
+
+ if solution[i]:
+ f.write("%d 0\n" % i)
+ else:
+ f.write("-%d 0\n" % i)
+
+ print("-> added partial solution to temporary CNF file %s" % tmpfname)
+
+ # execute with the other solver
+ toexec = "../../build/tests/minisat/minisat -verb=0 %s" % tmpfname
+ print("Solving with other solver: %s" % toexec)
+ curr_time = time.time()
+ try:
+ p = subprocess.Popen(toexec.rsplit(),
+ stdout=subprocess.PIPE,
+ preexec_fn=partial(setlimits, self.options.maxtime),
+ universal_newlines=True)
+ except OSError:
+ print("ERROR: Minisat didn't run... weird, it's included as a submodule")
+ raise
+
+ consoleOutput2 = p.communicate()[0]
+ os.unlink(tmpfname)
+
+ # if other solver was out of time, then we can't say anything
+ diff_time = time.time() - curr_time
+ if diff_time > self.options.maxtime - self.options.maxtimediff:
+ print("Other solver: too much time to solve, aborted!")
+ return None
+
+ # extract output from the other solver
+ print("Checking other solver output...")
+ otherSolverUNSAT, _, _ = self.parse_solution_from_output(
+ consoleOutput2.split("\n"))
+
+ # check if the other solver finds a solution with the independent vars
+ # set as per partial solution returned
+ if otherSolverUNSAT is True:
+ print("ERROR; The other solver did NOT find a solution with the partial solution given")
+ exit(-1)
+ return False
+
+ print("OK, other solver found a solution using the partial solution")
+
+ return True
+
+ def check_unsat(self, fname):
+ a = XorToCNF()
+ tmpfname = unique_file("tmp_for_xor_to_cnf_convert")
+ a.convert(fname, tmpfname)
+
+ # execute with the other solver
+ toexec = "../../build/tests/minisat/minisat -verb=0 %s" % tmpfname
+ print("Solving with other solver: %s" % toexec)
+ curr_time = time.time()
+ try:
+ p = subprocess.Popen(toexec.rsplit(),
+ stdout=subprocess.PIPE,
+ preexec_fn=partial(setlimits, self.options.maxtime),
+ universal_newlines=True)
+ except OSError:
+ print("ERROR: Minisat didn't run... weird, it's included as a submodule")
+ raise
+
+ consoleOutput2 = p.communicate()[0]
+ os.unlink(tmpfname)
+
+ # if other solver was out of time, then we can't say anything
+ diff_time = time.time() - curr_time
+ if diff_time > self.options.maxtime - self.options.maxtimediff:
+ print("Other solver: too much time to solve, aborted!")
+ return None
+
+ # extract output from the other solver
+ print("Checking other solver output...")
+ otherSolverUNSAT, otherSolverSolution, _ = self.parse_solution_from_output(
+ consoleOutput2.split("\n"))
+
+ # check if the other solver agrees with us
+ return otherSolverUNSAT
+
+ def check_debug_lib(self, fname):
+ largestPart = self._find_largest_debuglib_part(fname)
+ for debugLibPart in range(1, largestPart + 1):
+ fname_debug = "%s-debugLibPart%d.output" % (fname, debugLibPart)
+ print("Checking debug lib part %s -- %s " % (debugLibPart, fname_debug))
+
+ if (os.path.isfile(fname_debug) is False):
+ print("Error: Filename to be read '%s' is not a file!" % fname_debug)
+ exit(-1)
+
+ # take file into mem
+ f = open(fname_debug, "r")
+ text = f.read()
+ output_lines = text.splitlines()
+ f.close()
+
+ unsat, solution, conflict = self.parse_solution_from_output(output_lines)
+ assumps = self._get_assumps(fname, debugLibPart)
+ if unsat is False:
+ print("debugLib is SAT")
+ self._check_assumps_inside_solution(assumps, solution)
+ self.test_found_solution(solution, fname, debugLibPart)
+ else:
+ print("debugLib is UNSAT")
+ assert conflict is not None, "debugLibPart must create a conflict in case of UNSAT"
+ self._check_assumps_inside_conflict(assumps, conflict)
+ tmpfname = unique_file("tmp_for_extract_libpart")
+ self._extract_lib_part(fname, debugLibPart, assumps, tmpfname)
+
+ # check with other solver
+ ret = self.check_unsat(tmpfname)
+ if ret is None:
+ print("Cannot check, other solver took too much time")
+ elif ret is True:
+ print("UNSAT verified by other solver")
+ else:
+ print("Grave bug: SAT-> UNSAT : Other solver found solution!!")
+ exit(-1)
+ os.unlink(tmpfname)
+
+ self.remove_debuglib_files(fname)
+
+ def remove_debuglib_files(self, fname):
+ #removing debuglib files
+ largestPart = self._find_largest_debuglib_part(fname)
+ for debugLibPart in range(1, largestPart + 1):
+ fname_debug = "%s-debugLibPart%d.output" % (fname, debugLibPart)
+ os.unlink(fname_debug)
+
+ @staticmethod
+ def parse_solution_from_output(output_lines, ignoreNoSolution=False):
+ if len(output_lines) == 0:
+ print("Error! SAT solver output is empty!")
+ print("output lines: %s" % output_lines)
+ exit(-1)
+
+ # solution will be put here
+ satunsatfound = False
+ vlinefound = False
+ solution = {}
+ conflict = None
+
+ # parse in solution
+ for line in output_lines:
+ # skip comment
+ if re.match('^conflict ', line):
+ line = line.strip().split()[1:]
+ conflict = [int(elem) for elem in line]
+ continue
+
+ if (re.match('^c ', line)):
+ continue
+
+ # solution
+ if (re.match('^s ', line)):
+ if (satunsatfound):
+ print("ERROR: solution twice in solver output!")
+ exit(400)
+
+ if 'UNSAT' in line:
+ unsat = True
+ satunsatfound = True
+ continue
+
+ if 'SAT' in line:
+ unsat = False
+ satunsatfound = True
+ continue
+
+ print("ERROR: line starts with 's' but no SAT/UNSAT on line")
+ exit(400)
+
+ # parse in solution
+ if (re.match('^v ', line)):
+ vlinefound = True
+ myvars = line.split(' ')
+ for var in myvars:
+ var = var.strip()
+ if var == "" or var == 'v':
+ continue
+ if (int(var) == 0):
+ break
+ intvar = int(var)
+ solution[abs(intvar)] = (intvar >= 0)
+ continue
+
+ if (line.strip() == ""):
+ continue
+
+ print("Error! SAT solver output contains a line that is neither 'v' nor 'c' nor 's'!")
+ print("Line is:", line.strip())
+ exit(-1)
+
+ # print("Parsed values:", solution)
+
+ if (ignoreNoSolution is False and
+ (satunsatfound is False or (
+ unsat is False and vlinefound is False))):
+ print("Error: Cannot find line starting with 's' or 'v' in output!")
+ print(output_lines)
+ print("Error code 500")
+ exit(-1)
+
+ if (ignoreNoSolution is True and
+ (satunsatfound is False or (
+ unsat is False and vlinefound is False))):
+ print("Probably timeout, since no solution printed. Could, of course, be segfault/assert fault, etc.")
+ print("Making it look like an UNSAT, so no checks!")
+ return (True, [])
+
+ if (satunsatfound is False):
+ print("Error: Cannot find if SAT or UNSAT. Maybe didn't finish running?")
+ print(output_lines)
+ print("Error code 500")
+ exit(-1)
+
+ if (unsat is False and vlinefound is False):
+ print("Error: Solution is SAT, but no 'v' line")
+ print (output_lines)
+ print("Error code 500")
+ exit(-1)
+
+ return unsat, solution, conflict
+
+ def _extract_lib_part(self, fname, debug_num, assumps, tofile):
+ fromf = open(fname, "r")
+ thisDebugLibPart = 0
+ maxvar = 0
+ numcls = 0
+ for line in fromf:
+ line = line.strip()
+
+ # ignore empty strings and headers
+ if not line or line[0] == "p":
+ continue
+
+ # process (potentially special) comments
+ if line[0] == "c":
+ if "Solver::solve" in line:
+ thisDebugLibPart += 1
+
+ continue
+
+ # break out if we reached the debug lib part
+ if thisDebugLibPart >= debug_num:
+ break
+
+ # count clauses and get max var number
+ numcls += 1
+ maxvar = max(maxvar, get_max_var_from_clause(line))
+
+ fromf.close()
+
+ # now we can create the new CNF file
+ fromf = open(fname, "r")
+ tof = open(tofile, "w")
+ tof.write("p cnf %d %d\n" % (maxvar, numcls + len(assumps)))
+
+ thisDebugLibPart = 0
+ for line in fromf:
+ line = line.strip()
+ # skip empty lines and headers
+ if not line or line[0] == "p":
+ continue
+
+ # parse up special header
+ if line[0] == "c":
+ if "Solver::solve" in line:
+ thisDebugLibPart += 1
+
+ continue
+
+ # break out if we reached the debug lib part
+ if thisDebugLibPart >= debug_num:
+ break
+
+ tof.write(line + '\n')
+
+ # add assumptions
+ for lit in assumps:
+ tof.write("%d 0\n" % lit)
+
+ fromf.close()
+ tof.close()
+
+ def _get_assumps(self, fname, debugLibPart):
+ f = open(fname, "r")
+
+ thispart = 0
+ solveline = None
+ for line in f:
+ if "Solver::solve" in line:
+ thispart += 1
+ if thispart == debugLibPart:
+ solveline = line
+ break
+ f.close()
+
+ assert solveline is not None
+ ret = re.match("c.*Solver::solve\((.*)\)", solveline)
+ assert ret is not None
+ assumps = ret.group(1).strip().split()
+ assumps = [int(x) for x in assumps]
+
+ print("Assumptions: ", assumps)
+ return assumps
+
+ def _check_assumps_inside_conflict(self, assumps, conflict):
+ for lit in conflict:
+ if -1 * lit not in assumps:
+ print("ERROR: Final conflict contains %s but assumps is %s" %(conflict, assumps))
+ print("ERROR: lit ", lit, " is in conflict but its inverse is not is assumps!")
+ exit(-100)
+
+ print("OK, final conflict only contains elements from assumptions")
+
+ def _check_assumps_inside_solution(self, assumps, solution):
+ for lit in assumps:
+ var = abs(lit)
+ val = lit > 0
+ if var in solution:
+ if solution[var] != val:
+ print("Solution pinted has literal %s but assumptions contained the inverse: '%s'" % (-1 * lit, assumps))
+ exit(-100)
+
+ print("OK, all assumptions inside solution")
+
+ def _find_largest_debuglib_part(self, fname):
+ largestPart = 0
+ dirList2 = os.listdir(".")
+ for fname_debug in dirList2:
+ if fnmatch.fnmatch(fname_debug, "%s-debugLibPart*.output" % fname):
+ largestPart += 1
+
+ return largestPart
+
+ @staticmethod
+ def max_vars_in_file(fname):
+ maxvar = 0
+ with open(fname, "r") as f:
+ for line in f:
+ line = line.strip()
+
+ # ignore comments
+ if not line or line[0] == "c" or line[0] == 'p':
+ continue
+
+ # calculate max variable
+ maxvar = max(maxvar, get_max_var_from_clause(line))
+
+ return maxvar
+
+ @staticmethod
+ def _check_regular_clause(line, solution):
+ lits = line.split()
+ for lit in lits:
+ numlit = int(lit)
+ if numlit == 0:
+ break
+
+ if abs(numlit) not in solution:
+ continue
+
+ if solution[abs(numlit)] ^ (numlit < 0):
+ return True
+
+ # print not set vars
+ print("Unset vars:")
+ for lit in lits:
+ numlit = int(lit)
+ if numlit == 0:
+ break
+
+ if abs(numlit) not in solution:
+ print("var %d not set" % abs(numlit))
+
+ print("Every other var set to FALSE")
+ raise NameError("Error: clause '%s' not satisfied." % line)
+
+ @staticmethod
+ def _check_xor_clause(line, solution):
+ line = line.lstrip('x')
+ lits = line.split()
+ final = False
+ for lit in lits:
+ numlit = int(lit)
+ if numlit != 0:
+ if abs(numlit) not in solution:
+ raise NameError("Error: var %d not solved, but referred to in a xor-clause of the CNF" % abs(numlit))
+ final ^= solution[abs(numlit)]
+ final ^= numlit < 0
+ if final is False:
+ raise NameError("Error: xor-clause '%s' not satisfied." % line)
+
+ return final
+
+
+def parse_arguments():
+ class PlainHelpFormatter(optparse.IndentedHelpFormatter):
+
+ def format_description(self, description):
+ if description:
+ return description + "\n"
+ else:
+ return ""
+
+ usage = """usage: %prog solution cnf
+
+For example:
+%prog my_solution_file.out my_problem.cnf.gz"""
+ parser = optparse.OptionParser(usage=usage, formatter=PlainHelpFormatter())
+ parser.add_option("--verbose", "-v", action="store_true",
+ default=False, dest="verbose", help="Be more verbose")
+ parser.add_option("--tout", "-t", dest="maxtime", type=int, default=100,
+ help="Max time to run. Default: %default")
+ parser.add_option("--textra", dest="maxtimediff", type=int, default=10,
+ help="Extra time on top of timeout for processing."
+ " Default: %default")
+ # parse options
+ options, args = parser.parse_args()
+ return options, args
+
+if __name__ == "__main__":
+ options, args = parse_arguments()
+ print("Options are:", options)
+ print("args are:", args)
+ if len(args) != 2:
+ print("ERROR: You must give exactly two parameters, "
+ "one SOLUTION and one CNF")
+ print("You gave {n} parameters".format(**{"n": len(args)}))
+ exit(-1)
+
+ sol_file = args[0]
+ cnf_file = args[1]
+ print("Verifying CNF file '{cnf}' against solution in file '{sol}'".format(
+ **{"cnf": cnf_file, "sol": sol_file}))
+
+ print("Checking debug libs...")
+ sol_parser = solution_parser(options)
+ sol_parser.check_debug_lib(cnf_file)
+
+ print("Checking console output...")
+ sol = {}
+ with open(sol_file) as f:
+ dat = f.read()
+
+ dat = dat.split("\n")
+ unsat, solution, _ = sol_parser.parse_solution_from_output(dat)
+ if not unsat:
+ sol_parser.test_found_solution(solution, cnf_file)
+ exit(0)
+
+ # check with other solver
+ ret = sol_parser.check_unsat(cnf_file)
+ if ret is None:
+ print("Other solver time-outed, cannot check")
+ elif ret is True:
+ print("UNSAT verified by other solver")
+ else:
+ print("Grave bug: SAT-> UNSAT : Other solver found solution!!")
+ exit(-1)
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/verifier_test.py b/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/verifier_test.py
new file mode 100755
index 000000000..ca0786d69
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/verifier_test.py
@@ -0,0 +1,83 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2016 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+
+from __future__ import with_statement # Required in 2.5
+from __future__ import print_function
+
+from verifier import *
+import unittest
+
+
+class Map(dict):
+ """
+ Example:
+ m = Map({'first_name': 'Eduardo'}, last_name='Pool', age=24, sports=['Soccer'])
+ """
+ def __init__(self, *args, **kwargs):
+ super(Map, self).__init__(*args, **kwargs)
+ for arg in args:
+ if isinstance(arg, dict):
+ for k, v in arg.items():
+ self[k] = v
+
+ if kwargs:
+ for k, v in kwargs.iteritems():
+ self[k] = v
+
+ def __getattr__(self, attr):
+ return self.get(attr)
+
+
+class TestVerifier(unittest.TestCase):
+ def setUp(self):
+ options = Map({"verbose": False, "maxtime": 60, "maxtimediff": 160})
+ self.s = solution_parser(options)
+
+ def test_sat_cl(self):
+ self.assertTrue(self.s._check_regular_clause("1 2 3", {1: True}))
+ self.assertTrue(self.s._check_regular_clause("1 2 3", {2: True}))
+ self.assertTrue(self.s._check_regular_clause("1 2 -3", {3: False}))
+
+ def test_unsat_cl(self):
+ self.assertRaises(NameError, self.s._check_regular_clause, "-1 2 3", {1: True})
+ self.assertRaises(NameError, self.s._check_regular_clause, "-1 2 3", {})
+ self.assertRaises(NameError, self.s._check_regular_clause, "-1 2 3 0", {})
+ self.assertRaises(NameError, self.s._check_regular_clause, "1 2 -3 0", {0: True})
+ self.assertRaises(NameError, self.s._check_regular_clause, "1 2 3", {1: False, 2: False, 3: False})
+ self.assertRaises(NameError, self.s._check_regular_clause, "-1 -2 -3", {1: True, 2: True, 3: True})
+
+ def test_sat_xcl(self):
+ self.assertTrue(NameError, self.s._check_xor_clause("x1 2 3", {1: True, 2: False, 3: False}))
+ self.assertTrue(NameError, self.s._check_xor_clause("x1 2 3 0", {1: True, 2: False, 3: False}))
+
+ def test_unsat_xcl(self):
+ self.assertRaises(NameError, self.s._check_xor_clause, "x1 2 3", {1: True})
+ self.assertRaises(NameError, self.s._check_xor_clause, "x1 2 3", {1: False, 2: False, 3: False})
+
+ def test_sol_parse_sat(self):
+ unsat, s, _ = self.s.parse_solution_from_output(["s SAT", "v 1 2 3 0"])
+ self.assertEqual(s, {1: True, 2: True, 3: True})
+
+ def test_sol_parse_unsat(self):
+ unsat, _, _ = self.s.parse_solution_from_output(["s UNSAT\n"])
+ self.assertTrue(unsat)
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/xor_to_cnf_class.py b/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/xor_to_cnf_class.py
new file mode 100644
index 000000000..38b96f008
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/fuzz/xor_to_cnf_class.py
@@ -0,0 +1,238 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2014 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+from __future__ import print_function
+import re
+
+
+class XorToCNF:
+ def __init__(self):
+ self.cutsize = 4
+
+ def get_max_var(self, clause):
+ maxvar = 0
+
+ tmp = clause.strip()
+ if len(tmp) == 0:
+ return 0
+
+ assert re.search(r'^x? *-?\d+', tmp)
+
+ if tmp[0] == 'x':
+ tmp = tmp[1:]
+
+ for lit in tmp.split():
+ var = abs(int(lit))
+ maxvar = max(var, maxvar)
+
+ return maxvar
+
+ def convert(self, infilename, outfilename):
+ assert isinstance(self.cutsize, int)
+ if self.cutsize <= 2:
+ print("ERROR: The cut size MUST be larger or equal to 3")
+ exit(-1)
+
+ maxvar, numcls, extravars_needed, extracls_needed = self.get_stats(infilename)
+ fout = open(outfilename, "w")
+ fout.write("p cnf %d %d\n" % (maxvar + extravars_needed, numcls + extracls_needed))
+ fin = open(infilename, "r")
+ atvar = maxvar
+ for line in fin:
+ line = line.strip()
+
+ # skip empty line
+ if len(line) == 0:
+ continue
+
+ # skip header and comments
+ if line[0] == 'c' or line[0] == 'p':
+ continue
+
+ if line[0] == 'x':
+ # convert XOR to normal(s)
+ xorclauses, atvar = self.cut_up_xor_to_n(line, atvar)
+ for xorcl in xorclauses:
+ cls = self.xor_to_cnf_simple(xorcl)
+ for cl in cls:
+ fout.write(cl + "\n")
+ else:
+ # simply print normal clause
+ fout.write(line + "\n")
+
+ assert atvar == maxvar + extravars_needed
+ fout.close()
+ fin.close()
+
+ def popcount(self, x):
+ return bin(x).count('1')
+
+ def parse_xor(self, xorclause):
+ assert re.search(r'^x( *-?\d+ )*0$', xorclause)
+
+ tmp = xorclause[1:]
+ lits = [int(elem) for elem in tmp.split()]
+ assert lits[len(lits)-1] == 0
+
+ # remove last element, the 0
+ lits = lits[:len(lits)-1]
+
+ return lits
+
+ def xor_to_cnf_simple(self, xorclause, equals=True):
+ assert equals is True or equals is False
+ if equals is True:
+ equals = 1
+ else:
+ equals = 0
+
+ lits = self.parse_xor(xorclause)
+
+ # empty XOR clause is TRUE, so is NOT an empty clause (i.e. UNSAT)
+ if len(lits) == 0:
+ return []
+
+ ret = []
+ for i in range(2**(len(lits))):
+ # only the ones we need
+ cls = ""
+ if self.popcount(i) % 2 == equals:
+ continue
+
+ for at in range(len(lits)):
+ if ((i >> at) & 1) == 0:
+ cls += "%d " % lits[at]
+ else:
+ cls += "%d " % (-1*lits[at])
+
+ cls += "0"
+ ret.append(cls)
+
+ return ret
+
+ def cut_up_xor_to_n(self, xorclause, oldmaxvar):
+ assert self.cutsize > 2
+
+ lits = self.parse_xor(xorclause)
+ xors = []
+
+ # xor clause that doesn't need to be cut up
+ if len(lits) <= self.cutsize:
+ retcl = "x"
+ for lit in lits:
+ retcl += "%d " % lit
+ retcl += "0"
+ return [[retcl], oldmaxvar]
+
+ at = 0
+ newmaxvar = oldmaxvar
+ while(at < len(lits)):
+
+ # until when should we cut?
+ until = min(at + self.cutsize-1, len(lits))
+
+ # if in the middle, don't add so much
+ if at > 0 and until < len(lits):
+ until -= 1
+
+ thisxor = "x"
+ for i2 in range(at, until):
+ thisxor += "%d " % lits[i2]
+
+ # add the extra variables
+ if at == 0:
+ # beginning, add only one
+ thisxor += "%d 0" % (newmaxvar+1)
+ newmaxvar += 1
+ elif until == len(lits):
+ # end, only add the one we already made
+ thisxor += "-%d 0" % (newmaxvar)
+ else:
+ thisxor += "-%d %d 0" % (newmaxvar, newmaxvar+1)
+ newmaxvar += 1
+
+ xors.append(thisxor)
+
+ # move along where we are at
+ at = until
+
+ return [xors, newmaxvar]
+
+ def num_extra_vars_cls_needed(self, numlits):
+ def cls_for_plain_xor(numlits):
+ return 2**(numlits-1)
+
+ varsneeded = 0
+ clsneeded = 0
+
+ at = 0
+ while(at < numlits):
+ # at the beginning
+ if at == 0:
+ if numlits > self.cutsize:
+ at += self.cutsize-1
+ varsneeded += 1
+ clsneeded += cls_for_plain_xor(self.cutsize)
+ else:
+ at = numlits
+ clsneeded += cls_for_plain_xor(numlits)
+
+ # in the middle
+ elif at + (self.cutsize-1) < numlits:
+ at += self.cutsize-2
+ varsneeded += 1
+ clsneeded += cls_for_plain_xor(self.cutsize)
+ # at the end
+ else:
+ clsneeded += cls_for_plain_xor(numlits-at+1)
+ at = numlits
+
+ return [varsneeded, clsneeded]
+
+ def get_stats(self, infilename):
+ infile = open(infilename, "r")
+
+ maxvar = 0
+ numcls = 0
+ extravars_needed = 0
+ extracls_needed = 0
+ for line in infile:
+ line = line.strip()
+
+ # empty line, skip
+ if len(line) == 0:
+ continue
+
+ # header or comment
+ if line[0] == 'p' or line[0] == 'c':
+ continue
+
+ # get max var
+ maxvar = max(self.get_max_var(line), maxvar)
+
+ if line[0] == 'x':
+ e_var, e_clause = self.num_extra_vars_cls_needed(len(self.parse_xor(line)))
+ extravars_needed += e_var
+ extracls_needed += e_clause
+ else:
+ numcls += 1
+
+ infile.close()
+
+ return [maxvar, numcls, extravars_needed, extracls_needed]
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/learn/add_lemma_ind.py b/cryptominisat5/cryptominisat-5.6.3/scripts/learn/add_lemma_ind.py
new file mode 100755
index 000000000..ccdb1f46f
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/learn/add_lemma_ind.py
@@ -0,0 +1,126 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2017 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+from __future__ import print_function
+import sqlite3
+import optparse
+
+
+class Query:
+ def __init__(self, dbfname):
+ self.conn = sqlite3.connect(dbfname)
+ self.c = self.conn.cursor()
+ self.runID = self.find_runID()
+ # zero out goodClauses
+ self.c.execute('delete from goodClauses;')
+ self.cur_good_ids_num = 0
+ self.num_goods_total = 0
+ self.cur_good_ids = []
+
+ def __enter__(self):
+ return self
+
+ def __exit__(self, exc_type, exc_value, traceback):
+ self.conn.commit()
+ self.conn.close()
+
+ def parse_and_add_lemmas(self, lemmafname):
+ with open(lemmafname, "r") as f:
+ for line in f:
+ line = line.strip().split(" ")
+ self.parse_one_line(line)
+
+ # final dump
+ self.dump_ids()
+
+ print("Parsed %d number of good lemmas" % self.num_goods_total)
+
+ def parse_one_line(self, line):
+ self.cur_good_ids_num += 1
+ self.num_goods_total += 1
+
+ # get ID
+ myid = int(line[0])
+ assert myid >= 0, "ID is always at least 0"
+ assert myid != 0, "ID with 0 should not even be printed"
+
+ num_used = int(line[1])
+ last_used = int(line[2])
+
+ # append to cur_good_ids
+ self.cur_good_ids.append((self.runID, myid, num_used, last_used))
+
+ # don't run out of memory, dump early
+ if self.cur_good_ids_num > 10000:
+ self.dump_ids()
+
+ def dump_ids(self):
+ self.c.executemany("""
+ INSERT INTO goodClauses (`runID`, `clauseID`, `num_used`, `last_confl_used`)
+ VALUES (?, ?, ?, ?);""", self.cur_good_ids)
+ self.cur_good_ids = []
+ self.cur_good_ids_num = 0
+
+ def find_runID(self):
+ q = """
+ SELECT runID
+ FROM startUp
+ order by startTime desc
+ """
+
+ runID = None
+ for row in self.c.execute(q):
+ if runID is not None:
+ print("ERROR: More than one RUN in the SQL, can't add lemmas!")
+ exit(-1)
+ runID = int(row[0])
+
+ print("runID: %d" % runID)
+ return runID
+
+
+if __name__ == "__main__":
+ usage = """usage: %prog [options] sqlite_db lemmas
+
+It adds lemma indices from "lemmas" to the SQLite database, indicating whether
+it was good or not."""
+
+ parser = optparse.OptionParser(usage=usage)
+
+ parser.add_option("--verbose", "-v", action="store_true", default=False,
+ dest="verbose", help="Print more output")
+
+ (options, args) = parser.parse_args()
+
+ if len(args) != 2:
+ print("Error. Please follow usage")
+ print(usage)
+ exit(-1)
+
+ dbfname = args[0]
+ lemmafname = args[1]
+ print("Using sqlite3db file %s" % dbfname)
+ print("Using lemma file %s" % lemmafname)
+
+ with Query(dbfname) as q:
+ q.parse_and_add_lemmas(lemmafname)
+
+ print("Finished adding good lemma indicators to db %s" % dbfname)
+ exit(0)
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/learn/gen_pandas.py b/cryptominisat5/cryptominisat-5.6.3/scripts/learn/gen_pandas.py
new file mode 100755
index 000000000..c79f660a5
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/learn/gen_pandas.py
@@ -0,0 +1,771 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2017 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+from __future__ import print_function
+import sqlite3
+import optparse
+import time
+import pickle
+import re
+import pandas as pd
+import numpy as np
+import os.path
+
+from sklearn.model_selection import train_test_split
+import sklearn.tree
+import sklearn.svm
+import sklearn.ensemble
+import sklearn.metrics
+from sklearn.preprocessing import LabelEncoder
+
+
+##############
+# HOW TO GET A NICE LIST
+##############
+# go into .stdout.gz outputs:
+# zgrep "s UNSAT" * | cut -d ":" -f 1 > ../candidate_files_large_fixed_adjust_guess-12-April
+#
+# --> edit file to have the format:
+# zgrep -H "Total" large_hybr-12-April-2016-VAGTY-e4119a1b0-tout-1500-mout-1600/1dlx_c_iq57_a.cnf.gz.stdout.gz
+#
+# run:
+# ./candidate_files_large_hybr-12-April-2016-VAGTY.sh | awk '{if ($5 < 600 && $5 > 200) print $1 " -- " $5}' | cut -d "/" -f 2 | cut -d ":" -f 1 | sed "s/.stdout.*//" > ../unsat_small_candidates2.txt
+
+
+################
+# EXAMPLE TO RUN THIS AGAINST
+################
+# 6s153.cnf.gz
+
+class QueryHelper:
+ def __init__(self, dbfname):
+ if not os.path.isfile(dbfname):
+ print("ERROR: Database file '%s' does not exist" % dbfname)
+ exit(-1)
+
+ self.conn = sqlite3.connect(dbfname)
+ self.c = self.conn.cursor()
+ self.runID = self.find_runID()
+
+ def __enter__(self):
+ return self
+
+ def __exit__(self, exc_type, exc_value, traceback):
+ self.conn.commit()
+ self.conn.close()
+
+ def find_runID(self):
+ q = """
+ SELECT runID
+ FROM startUp
+ order by startTime desc
+ limit 1
+ """
+
+ runID = None
+ for row in self.c.execute(q):
+ if runID is not None:
+ print("ERROR: More than one RUN IDs in file!")
+ exit(-1)
+ runID = int(row[0])
+
+ print("runID: %d" % runID)
+ return runID
+
+
+class Query2 (QueryHelper):
+ def create_indexes(self):
+ print("Recreating indexes...")
+ t = time.time()
+ q = """
+ drop index if exists `idxclid`;
+ drop index if exists `idxclid2`;
+ drop index if exists `idxclid3`;
+ drop index if exists `idxclid4`;
+ drop index if exists `idxclid5`;
+ drop index if exists `idxclid6`;
+
+ create index `idxclid` on `clauseStats` (`runID`,`clauseID`);
+ create index `idxclid2` on `clauseStats` (`runID`,`prev_restart`);
+ create index `idxclid3` on `goodClauses` (`runID`,`clauseID`);
+ create index `idxclid4` on `restart` (`runID`, `restarts`);
+ create index `idxclid5` on `tags` (`runID`, `tagname`);
+ create index `idxclid6` on `reduceDB` (`runID`,`clauseID`, `dump_no`);
+ """
+ for l in q.split('\n'):
+ self.c.execute(l)
+
+ print("indexes created T: %-3.2f s" % (time.time() - t))
+
+ def get_clstats(self):
+
+ # partially done with tablestruct_sql and SED: sed -e 's/`\(.*\)`.*/rst.`\1` as `rst.\1`/' ../tmp.txt
+ restart_dat = """
+ -- , rst.`runID` as `rst.runID`
+ -- , rst.`simplifications` as `rst.simplifications`
+ -- , rst.`restarts` as `rst.restarts`
+ -- , rst.`conflicts` as `rst.conflicts`
+ -- , rst.`latest_feature_calc` as `rst.latest_feature_calc`
+ -- rst.`runtime` as `rst.runtime`
+ , rst.`numIrredBins` as `rst.numIrredBins`
+ , rst.`numIrredLongs` as `rst.numIrredLongs`
+ , rst.`numRedBins` as `rst.numRedBins`
+ , rst.`numRedLongs` as `rst.numRedLongs`
+ , rst.`numIrredLits` as `rst.numIrredLits`
+ , rst.`numredLits` as `rst.numredLits`
+ , rst.`glue` as `rst.glue`
+ , rst.`glueSD` as `rst.glueSD`
+ , rst.`glueMin` as `rst.glueMin`
+ , rst.`glueMax` as `rst.glueMax`
+ , rst.`size` as `rst.size`
+ , rst.`sizeSD` as `rst.sizeSD`
+ , rst.`sizeMin` as `rst.sizeMin`
+ , rst.`sizeMax` as `rst.sizeMax`
+ , rst.`resolutions` as `rst.resolutions`
+ , rst.`resolutionsSD` as `rst.resolutionsSD`
+ , rst.`resolutionsMin` as `rst.resolutionsMin`
+ , rst.`resolutionsMax` as `rst.resolutionsMax`
+ , rst.`branchDepth` as `rst.branchDepth`
+ , rst.`branchDepthSD` as `rst.branchDepthSD`
+ , rst.`branchDepthMin` as `rst.branchDepthMin`
+ , rst.`branchDepthMax` as `rst.branchDepthMax`
+ , rst.`branchDepthDelta` as `rst.branchDepthDelta`
+ , rst.`branchDepthDeltaSD` as `rst.branchDepthDeltaSD`
+ , rst.`branchDepthDeltaMin` as `rst.branchDepthDeltaMin`
+ , rst.`branchDepthDeltaMax` as `rst.branchDepthDeltaMax`
+ , rst.`trailDepth` as `rst.trailDepth`
+ , rst.`trailDepthSD` as `rst.trailDepthSD`
+ , rst.`trailDepthMin` as `rst.trailDepthMin`
+ , rst.`trailDepthMax` as `rst.trailDepthMax`
+ , rst.`trailDepthDelta` as `rst.trailDepthDelta`
+ , rst.`trailDepthDeltaSD` as `rst.trailDepthDeltaSD`
+ , rst.`trailDepthDeltaMin` as `rst.trailDepthDeltaMin`
+ , rst.`trailDepthDeltaMax` as `rst.trailDepthDeltaMax`
+ , rst.`propBinIrred` as `rst.propBinIrred`
+ , rst.`propBinRed` as `rst.propBinRed`
+ , rst.`propLongIrred` as `rst.propLongIrred`
+ , rst.`propLongRed` as `rst.propLongRed`
+ , rst.`conflBinIrred` as `rst.conflBinIrred`
+ , rst.`conflBinRed` as `rst.conflBinRed`
+ , rst.`conflLongIrred` as `rst.conflLongIrred`
+ , rst.`conflLongRed` as `rst.conflLongRed`
+ , rst.`learntUnits` as `rst.learntUnits`
+ , rst.`learntBins` as `rst.learntBins`
+ , rst.`learntLongs` as `rst.learntLongs`
+ , rst.`resolBinIrred` as `rst.resolBinIrred`
+ , rst.`resolBinRed` as `rst.resolBinRed`
+ , rst.`resolLIrred` as `rst.resolLIrred`
+ , rst.`resolLRed` as `rst.resolLRed`
+ -- , rst.`propagations` as `rst.propagations`
+ -- , rst.`decisions` as `rst.decisions`
+ -- , rst.`flipped` as `rst.flipped`
+ , rst.`varSetPos` as `rst.varSetPos`
+ , rst.`varSetNeg` as `rst.varSetNeg`
+ , rst.`free` as `rst.free`
+ -- , rst.`replaced` as `rst.replaced`
+ -- , rst.`eliminated` as `rst.eliminated`
+ -- , rst.`set` as `rst.set`
+ -- , rst.`clauseIDstartInclusive` as `rst.clauseIDstartInclusive`
+ -- , rst.`clauseIDendExclusive` as `rst.clauseIDendExclusive`
+ """
+
+ rdb0_dat = """
+ -- , rdb0.`runID` as `rdb0.runID`
+ -- , rdb0.`simplifications` as `rdb0.simplifications`
+ -- , rdb0.`restarts` as `rdb0.restarts`
+ , rdb0.`conflicts` as `rdb0.conflicts`
+ -- , rdb0.`runtime` as `rdb0.runtime`
+
+ -- , rdb0.`clauseID` as `rdb0.clauseID`
+ , rdb0.`dump_no` as `rdb0.dump_no`
+ , rdb0.`conflicts_made` as `rdb0.conflicts_made`
+ , rdb0.`sum_of_branch_depth_conflict` as `rdb0.sum_of_branch_depth_conflict`
+ , rdb0.`propagations_made` as `rdb0.propagations_made`
+ , rdb0.`clause_looked_at` as `rdb0.clause_looked_at`
+ , rdb0.`used_for_uip_creation` as `rdb0.used_for_uip_creation`
+ , rdb0.`last_touched_diff` as `rdb0.last_touched_diff`
+ , rdb0.`activity_rel` as `rdb0.activity_rel`
+ , rdb0.`locked` as `rdb0.locked`
+ , rdb0.`in_xor` as `rdb0.in_xor`
+ -- , rdb0.`glue` as `rdb0.glue`
+ -- , rdb0.`size` as `rdb0.size`
+ , rdb0.`ttl` as `rdb0.ttl`
+ """
+
+ clause_dat = """
+ -- , cl.`runID` as `cl.runID`
+ -- , cl.`simplifications` as `cl.simplifications`
+ -- , cl.`restarts` as `cl.restarts`
+ -- , cl.`prev_restart` as `cl.prev_restart`
+ -- , cl.`conflicts` as `cl.conflicts`
+ -- , cl.`latest_feature_calc` as `cl.latest_feature_calc`
+ -- , cl.`clauseID` as `cl.clauseID`
+ , cl.`glue` as `cl.glue`
+ , cl.`size` as `cl.size`
+ , cl.`conflicts_this_restart` as `cl.conflicts_this_restart`
+ , cl.`num_overlap_literals` as `cl.num_overlap_literals`
+ , cl.`num_antecedents` as `cl.num_antecedents`
+ , cl.`num_total_lits_antecedents` as `cl.num_total_lits_antecedents`
+ , cl.`antecedents_avg_size` as `cl.antecedents_avg_size`
+ , cl.`backtrack_level` as `cl.backtrack_level`
+ , cl.`decision_level` as `cl.decision_level`
+ , cl.`decision_level_pre1` as `cl.decision_level_pre1`
+ , cl.`decision_level_pre2` as `cl.decision_level_pre2`
+ , cl.`trail_depth_level` as `cl.trail_depth_level`
+ , cl.`cur_restart_type` as `cl.cur_restart_type`
+ , cl.`atedecents_binIrred` as `cl.atedecents_binIrred`
+ , cl.`atedecents_binRed` as `cl.atedecents_binRed`
+ , cl.`atedecents_longIrred` as `cl.atedecents_longIrred`
+ , cl.`atedecents_longRed` as `cl.atedecents_longRed`
+ -- , cl.`vsids_vars_avg` as `cl.vsids_vars_avg`
+ -- , cl.`vsids_vars_var` as `cl.vsids_vars_var`
+ -- , cl.`vsids_vars_min` as `cl.vsids_vars_min`
+ -- , cl.`vsids_vars_max` as `cl.vsids_vars_max`
+ , cl.`antecedents_glue_long_reds_avg` as `cl.antecedents_glue_long_reds_avg`
+ , cl.`antecedents_glue_long_reds_var` as `cl.antecedents_glue_long_reds_var`
+ , cl.`antecedents_glue_long_reds_min` as `cl.antecedents_glue_long_reds_min`
+ , cl.`antecedents_glue_long_reds_max` as `cl.antecedents_glue_long_reds_max`
+ , cl.`antecedents_long_red_age_avg` as `cl.antecedents_long_red_age_avg`
+ , cl.`antecedents_long_red_age_var` as `cl.antecedents_long_red_age_var`
+ , cl.`antecedents_long_red_age_min` as `cl.antecedents_long_red_age_min`
+ , cl.`antecedents_long_red_age_max` as `cl.antecedents_long_red_age_max`
+ -- , cl.`vsids_of_resolving_literals_avg` as `cl.vsids_of_resolving_literals_avg`
+ -- , cl.`vsids_of_resolving_literals_var` as `cl.vsids_of_resolving_literals_var`
+ -- , cl.`vsids_of_resolving_literals_min` as `cl.vsids_of_resolving_literals_min`
+ -- , cl.`vsids_of_resolving_literals_max` as `cl.vsids_of_resolving_literals_max`
+ -- , cl.`vsids_of_all_incoming_lits_avg` as `cl.vsids_of_all_incoming_lits_avg`
+ -- , cl.`vsids_of_all_incoming_lits_var` as `cl.vsids_of_all_incoming_lits_var`
+ -- , cl.`vsids_of_all_incoming_lits_min` as `cl.vsids_of_all_incoming_lits_min`
+ -- , cl.`vsids_of_all_incoming_lits_max` as `cl.vsids_of_all_incoming_lits_max`
+ -- , cl.`antecedents_antecedents_vsids_avg` as `cl.antecedents_antecedents_vsids_avg`
+ , cl.`decision_level_hist` as `cl.decision_level_hist`
+ , cl.`backtrack_level_hist_lt` as `cl.backtrack_level_hist_lt`
+ , cl.`trail_depth_level_hist` as `cl.trail_depth_level_hist`
+ -- , cl.`vsids_vars_hist` as `cl.vsids_vars_hist`
+ , cl.`size_hist` as `cl.size_hist`
+ , cl.`glue_hist` as `cl.glue_hist`
+ , cl.`num_antecedents_hist` as `cl.num_antecedents_hist`
+ , cl.`antec_sum_size_hist` as `cl.antec_sum_size_hist`
+ , cl.`antec_overlap_hist` as `cl.antec_overlap_hist`
+
+ , cl.`branch_depth_hist_queue` as `cl.branch_depth_hist_queue`
+ , cl.`trail_depth_hist` as `cl.trail_depth_hist`
+ , cl.`trail_depth_hist_longer` as `cl.trail_depth_hist_longer`
+ , cl.`num_resolutions_hist` as `cl.num_resolutions_hist`
+ , cl.`confl_size_hist` as `cl.confl_size_hist`
+ , cl.`trail_depth_delta_hist` as `cl.trail_depth_delta_hist`
+ , cl.`backtrack_level_hist` as `cl.backtrack_level_hist`
+ , cl.`glue_hist_queue` as `cl.glue_hist_queue`
+ , cl.`glue_hist_long` as `cl.glue_hist_long`
+ """
+
+ feat_dat = """
+ -- , feat.`simplifications` as `feat.simplifications`
+ -- , feat.`restarts` as `feat.restarts`
+ , feat.`conflicts` as `feat.conflicts`
+ -- , feat.`latest_feature_calc` as `feat.latest_feature_calc`
+ , feat.`numVars` as `feat.numVars`
+ , feat.`numClauses` as `feat.numClauses`
+ , feat.`var_cl_ratio` as `feat.var_cl_ratio`
+ , feat.`binary` as `feat.binary`
+ , feat.`horn` as `feat.horn`
+ , feat.`horn_mean` as `feat.horn_mean`
+ , feat.`horn_std` as `feat.horn_std`
+ , feat.`horn_min` as `feat.horn_min`
+ , feat.`horn_max` as `feat.horn_max`
+ , feat.`horn_spread` as `feat.horn_spread`
+ , feat.`vcg_var_mean` as `feat.vcg_var_mean`
+ , feat.`vcg_var_std` as `feat.vcg_var_std`
+ , feat.`vcg_var_min` as `feat.vcg_var_min`
+ , feat.`vcg_var_max` as `feat.vcg_var_max`
+ , feat.`vcg_var_spread` as `feat.vcg_var_spread`
+ , feat.`vcg_cls_mean` as `feat.vcg_cls_mean`
+ , feat.`vcg_cls_std` as `feat.vcg_cls_std`
+ , feat.`vcg_cls_min` as `feat.vcg_cls_min`
+ , feat.`vcg_cls_max` as `feat.vcg_cls_max`
+ , feat.`vcg_cls_spread` as `feat.vcg_cls_spread`
+ , feat.`pnr_var_mean` as `feat.pnr_var_mean`
+ , feat.`pnr_var_std` as `feat.pnr_var_std`
+ , feat.`pnr_var_min` as `feat.pnr_var_min`
+ , feat.`pnr_var_max` as `feat.pnr_var_max`
+ , feat.`pnr_var_spread` as `feat.pnr_var_spread`
+ , feat.`pnr_cls_mean` as `feat.pnr_cls_mean`
+ , feat.`pnr_cls_std` as `feat.pnr_cls_std`
+ , feat.`pnr_cls_min` as `feat.pnr_cls_min`
+ , feat.`pnr_cls_max` as `feat.pnr_cls_max`
+ , feat.`pnr_cls_spread` as `feat.pnr_cls_spread`
+ , feat.`avg_confl_size` as `feat.avg_confl_size`
+ , feat.`confl_size_min` as `feat.confl_size_min`
+ , feat.`confl_size_max` as `feat.confl_size_max`
+ , feat.`avg_confl_glue` as `feat.avg_confl_glue`
+ , feat.`confl_glue_min` as `feat.confl_glue_min`
+ , feat.`confl_glue_max` as `feat.confl_glue_max`
+ , feat.`avg_num_resolutions` as `feat.avg_num_resolutions`
+ , feat.`num_resolutions_min` as `feat.num_resolutions_min`
+ , feat.`num_resolutions_max` as `feat.num_resolutions_max`
+ , feat.`learnt_bins_per_confl` as `feat.learnt_bins_per_confl`
+ , feat.`avg_branch_depth` as `feat.avg_branch_depth`
+ , feat.`branch_depth_min` as `feat.branch_depth_min`
+ , feat.`branch_depth_max` as `feat.branch_depth_max`
+ , feat.`avg_trail_depth_delta` as `feat.avg_trail_depth_delta`
+ , feat.`trail_depth_delta_min` as `feat.trail_depth_delta_min`
+ , feat.`trail_depth_delta_max` as `feat.trail_depth_delta_max`
+ , feat.`avg_branch_depth_delta` as `feat.avg_branch_depth_delta`
+ , feat.`props_per_confl` as `feat.props_per_confl`
+ , feat.`confl_per_restart` as `feat.confl_per_restart`
+ , feat.`decisions_per_conflict` as `feat.decisions_per_conflict`
+ , feat.`red_glue_distr_mean` as `feat.red_glue_distr_mean`
+ , feat.`red_glue_distr_var` as `feat.red_glue_distr_var`
+ , feat.`red_size_distr_mean` as `feat.red_size_distr_mean`
+ , feat.`red_size_distr_var` as `feat.red_size_distr_var`
+ -- , feat.`red_activity_distr_mean` as `feat.red_activity_distr_mean`
+ -- , feat.`red_activity_distr_var` as `feat.red_activity_distr_var`
+ -- , feat.`irred_glue_distr_mean` as `feat.irred_glue_distr_mean`
+ -- , feat.`irred_glue_distr_var` as `feat.irred_glue_distr_var`
+ , feat.`irred_size_distr_mean` as `feat.irred_size_distr_mean`
+ , feat.`irred_size_distr_var` as `feat.irred_size_distr_var`
+ -- , feat.`irred_activity_distr_mean` as `feat.irred_activity_distr_mean`
+ -- , feat.`irred_activity_distr_var` as `feat.irred_activity_distr_var`
+ """
+
+ common_restrictions = """
+ and cl.restarts > 1 -- to avoid history being invalid
+ and cl.runID = {runid}
+ and feat.runID = {runid}
+ and feat.latest_feature_calc = cl.latest_feature_calc
+ and rst.restarts = cl.prev_restart
+ and rst.runID = {runid}
+ and tags.tagname = "filename"
+ and tags.runID = {runid}
+ and cl.conflicts > {start_confl}
+ """
+
+ common_limits = """
+ order by random()
+ limit {limit}
+ """
+
+ q_count = "SELECT count(*)"
+ q_ok_select = """
+ SELECT
+ tags.tag as "fname"
+ {clause_dat}
+ {clause2_dat}
+ {clause3_dat}
+ {restart_dat}
+ {feat_dat}
+ {rdb0_dat}
+ {rdb1_dat}
+ {rdb2_dat}
+ {rdb3_dat}
+ {rdb4_dat}
+ , goodcl.num_used as `x.num_used`
+ , goodcl.last_confl_used-cl.`conflicts` as `x.lifetime`
+ , "OK" as `x.class`
+ """
+
+ q_ok = """
+ FROM
+ clauseStats as cl
+ , clauseStats as cl2
+ , clauseStats as cl3
+ , goodClauses as goodcl
+ , restart as rst
+ , features as feat
+ , reduceDB as rdb0
+ , reduceDB as rdb1
+ , reduceDB as rdb2
+ , reduceDB as rdb3
+ , reduceDB as rdb4
+ , tags
+ WHERE
+
+ cl.clauseID = goodcl.clauseID
+ and cl.clauseID != 0
+ and cl.runID = goodcl.runID
+ and rdb0.runID = cl.runID
+ and rdb0.clauseID = cl.clauseID
+ and rdb0.dump_no = 0
+ and rdb1.runID = cl.runID
+ and rdb1.clauseID = cl.clauseID
+ and rdb1.dump_no = 1
+ and rdb2.runID = cl.runID
+ and rdb2.clauseID = cl.clauseID
+ and rdb2.dump_no = 2
+ and rdb3.runID = cl.runID
+ and rdb3.clauseID = cl.clauseID
+ and rdb3.dump_no = 3
+ and rdb4.runID = cl.runID
+ and rdb4.clauseID = cl.clauseID
+ and rdb4.dump_no = 4
+ and cl2.runID = cl.runID
+ and cl2.clauseID = cl.clauseID
+ and cl3.runID = cl.runID
+ and cl3.clauseID = cl.clauseID
+ """
+ q_ok += common_restrictions
+
+ # BAD caluses
+ q_bad_select = """
+ SELECT
+ tags.tag as "fname"
+ {clause_dat}
+ {clause2_dat}
+ {clause3_dat}
+ {restart_dat}
+ {feat_dat}
+ {rdb0_dat}
+ {rdb1_dat}
+ {rdb2_dat}
+ {rdb3_dat}
+ {rdb4_dat}
+ , 0 as `x.num_used`
+ , 0 as `x.lifetime`
+ , "BAD" as `x.class`
+ """
+
+ q_bad = """
+ FROM clauseStats as cl left join goodClauses as goodcl
+ on cl.clauseID = goodcl.clauseID
+ and cl.runID = goodcl.runID
+ , clauseStats as cl2
+ , clauseStats as cl3
+ , restart as rst
+ , features as feat
+ , reduceDB as rdb0
+ , reduceDB as rdb1
+ , reduceDB as rdb2
+ , reduceDB as rdb3
+ , reduceDB as rdb4
+ , tags
+ WHERE
+
+ goodcl.clauseID is NULL
+ and goodcl.runID is NULL
+ and cl.clauseID != 0
+ and rdb0.runID = cl.runID
+ and rdb0.clauseID = cl.clauseID
+ and rdb0.dump_no = 0
+ and rdb1.runID = cl.runID
+ and rdb1.clauseID = cl.clauseID
+ and rdb1.dump_no = 1
+ and rdb2.runID = cl.runID
+ and rdb2.clauseID = cl.clauseID
+ and rdb2.dump_no = 2
+ and rdb3.runID = cl.runID
+ and rdb3.clauseID = cl.clauseID
+ and rdb3.dump_no = 3
+ and rdb4.runID = cl.runID
+ and rdb4.clauseID = cl.clauseID
+ and rdb4.dump_no = 4
+ and cl2.runID = cl.runID
+ and cl2.clauseID = cl.clauseID
+ and cl3.runID = cl.runID
+ and cl3.clauseID = cl.clauseID
+ """
+ q_bad += common_restrictions
+
+ myformat = {"runid": self.runID,
+ "limit": 1000*1000*1000,
+ "restart_dat": restart_dat,
+ "clause_dat": clause_dat,
+ "clause2_dat": clause_dat.replace("cl.", "cl2."),
+ "clause3_dat": clause_dat.replace("cl.", "cl3."),
+ "feat_dat": feat_dat,
+ "rdb0_dat": rdb0_dat,
+ "rdb1_dat": rdb0_dat.replace("rdb0.", "rdb1."),
+ "rdb2_dat": rdb0_dat.replace("rdb0.", "rdb2."),
+ "rdb3_dat": rdb0_dat.replace("rdb0.", "rdb3."),
+ "rdb4_dat": rdb0_dat.replace("rdb0.", "rdb4."),
+ "start_confl": options.start_conflicts}
+
+ t = time.time()
+
+ q = q_count + q_ok
+ q = q.format(**myformat)
+ if options.verbose:
+ print("query:", q)
+ cur = self.conn.execute(q.format(**myformat))
+ num_lines_ok = int(cur.fetchone()[0])
+ print("Num datapoints OK (K): %-3.5f" % (num_lines_ok/1000.0))
+
+ q = q_count + q_bad
+ q = q.format(**myformat)
+ if options.verbose:
+ print("query:", q)
+ cur = self.conn.execute(q.format(**myformat))
+ num_lines_bad = int(cur.fetchone()[0])
+ print("Num datpoints BAD (K): %-3.5f" % (num_lines_bad/1000.0))
+
+ total_lines = num_lines_ok + num_lines_bad
+ print("Total number of datapoints (K): %-3.2f" % (total_lines/1000.0))
+ if options.fixed_num_datapoints != -1:
+ if options.fixed_num_datapoints > total_lines:
+ print("WARNING -- Your fixed num datapoints is too high:", options.fixed_num_datapoints)
+ print("WARNING -- We only have:", total_lines)
+ print("WARNING --> Not returning data.")
+ return False, None
+
+ if total_lines == 0:
+ print("WARNING: Total number of datapoints is 0. Potential issues:")
+ print(" --> Minimum no. conflicts set too high")
+ print(" --> Less than 1 restarts were made")
+ print(" --> No conflicts in SQL")
+ print(" --> Something went wrong")
+ return False, None
+
+ print("Percentage of OK: %-3.2f" % (num_lines_ok/float(total_lines)*100.0))
+ q = q_ok_select + q_ok
+ if options.fixed_num_datapoints != -1:
+ myformat["limit"] = int(options.fixed_num_datapoints * num_lines_ok/float(total_lines))
+ q += common_limits
+
+ print("limit for OK:", myformat["limit"])
+ q = q.format(**myformat)
+ print("Running query for OK...")
+ if options.verbose:
+ print("query:", q)
+ df = pd.read_sql_query(q, self.conn)
+
+ q = q_bad_select + q_bad
+ if options.fixed_num_datapoints != -1:
+ myformat["limit"] = int(options.fixed_num_datapoints * num_lines_bad/float(total_lines))
+ q += common_limits
+
+ print("limit for bad:", myformat["limit"])
+ q = q.format(**myformat)
+ print("Running query for BAD...")
+ if options.verbose:
+ print("query:", q)
+ df2 = pd.read_sql_query(q, self.conn)
+ print("Queries finished. T: %-3.2f" % (time.time() - t))
+
+ if options.dump_sql:
+ print("-- query starts --")
+ print(q)
+ print("-- query ends --")
+
+ return True, pd.concat([df, df2])
+
+
+def get_one_file(dbfname):
+ print("Using sqlite3db file %s" % dbfname)
+
+ df = None
+ with Query2(dbfname) as q:
+ if not options.no_recreate_indexes:
+ q.create_indexes()
+ ok, df = q.get_clstats()
+ if not ok:
+ return False, None
+
+ if options.verbose:
+ print("Printing head:")
+ print(df.head())
+ print("Print head done.")
+
+ return True, df
+
+
+def transform(df):
+ def check_clstat_row(self, row):
+ if row[self.ntoc["cl.decision_level_hist"]] == 0 or \
+ row[self.ntoc["cl.backtrack_level_hist"]] == 0 or \
+ row[self.ntoc["cl.trail_depth_level_hist"]] == 0 or \
+ row[self.ntoc["cl.vsids_vars_hist"]] == 0 or \
+ row[self.ntoc["cl.size_hist"]] == 0 or \
+ row[self.ntoc["cl.glue_hist"]] == 0 or \
+ row[self.ntoc["cl.num_antecedents_hist"]] == 0:
+ print("ERROR: Data is in error:", row)
+ assert(False)
+ exit(-1)
+
+ return row
+
+ # relative overlaps
+ df["cl.overlap"] = df["cl.num_total_lits_antecedents"]-df["cl.size"]-2*df["cl.num_antecedents"]
+ df["cl.overlap_rel"] = df["cl.overlap"]/df["cl.antec_overlap_hist"]
+ df["cl.num_antecedents_rel"] = df["cl.num_antecedents"]/df["cl.num_antecedents_hist"]
+ df["rst.varset_neg_polar_ratio"] = df["rst.varSetNeg"]/(df["rst.varSetPos"]+df["rst.varSetNeg"])
+
+ # ************
+ # TODO decision level and branch depth are the same, right???
+ # ************
+ df["cl.size_rel"] = df["cl.size"] / df["cl.size_hist"]
+ df["cl.glue_rel_queue"] = df["cl.glue"] / df["cl.glue_hist_queue"]
+ df["cl.glue_rel_long"] = df["cl.glue"] / df["cl.glue_hist_long"]
+ df["cl.glue_rel"] = df["cl.glue"] / df["cl.glue_hist"]
+ df["cl.trail_depth_level_rel"] = df["cl.trail_depth_level"]/df["cl.trail_depth_level_hist"]
+ df["cl.branch_depth_rel_queue"] = df["cl.decision_level"]/df["cl.branch_depth_hist_queue"]
+
+ # smaller-than larger-than for glue and size
+ df["cl.size_smaller_than_hist"] = (df["cl.size"] < df["cl.size_hist"]).astype(int)
+ df["cl.glue_smaller_than_hist"] = (df["cl.glue"] < df["cl.glue_hist"]).astype(int)
+ df["cl.glue_smaller_than_hist_lt"] = (df["cl.glue"] < df["cl.glue_hist_long"]).astype(int)
+ df["cl.glue_smaller_than_hist_queue"] = (df["cl.glue"] < df["cl.glue_hist_queue"]).astype(int)
+
+ # relative decisions
+ df["cl.decision_level_rel"] = df["cl.decision_level"]/df["cl.decision_level_hist"]
+ df["cl.decision_level_pre1_rel"] = df["cl.decision_level_pre1"]/df["cl.decision_level_hist"]
+ df["cl.decision_level_pre2_rel"] = df["cl.decision_level_pre2"]/df["cl.decision_level_hist"]
+ df["cl.decision_level_pre2_rel"] = df["cl.decision_level_pre2"]/df["cl.decision_level_hist"]
+ df["cl.decision_level_pre2_rel"] = df["cl.decision_level_pre2"]/df["cl.decision_level_hist"]
+ df["cl.backtrack_level_rel"] = df["cl.backtrack_level"]/df["cl.decision_level_hist"]
+
+ # relative props
+ df["rst.all_props"] = df["rst.propBinRed"] + df["rst.propBinIrred"] + df["rst.propLongRed"] + df["rst.propLongIrred"]
+ df["rst.propBinRed_ratio"] = df["rst.propBinRed"]/df["rst.all_props"]
+ df["rst.propBinIrred_ratio"] = df["rst.propBinIrred"]/df["rst.all_props"]
+ df["rst.propLongRed_ratio"] = df["rst.propLongRed"]/df["rst.all_props"]
+ df["rst.propLongIrred_ratio"] = df["rst.propLongIrred"]/df["rst.all_props"]
+
+ df["cl.trail_depth_level_rel"] = df["cl.trail_depth_level"]/df["rst.free"]
+
+ # relative resolutions
+ df["rst.resolBinIrred_ratio"] = df["rst.resolBinIrred"]/df["rst.resolutions"]
+ df["rst.resolBinRed_ratio"] = df["rst.resolBinRed"]/df["rst.resolutions"]
+ df["rst.resolLRed_ratio"] = df["rst.resolLRed"]/df["rst.resolutions"]
+ df["rst.resolLIrred_ratio"] = df["rst.resolLIrred"]/df["rst.resolutions"]
+
+ df["cl.num_antecedents_rel"] = df["cl.num_antecedents"] / df["cl.num_antecedents_hist"]
+ df["cl.decision_level_rel"] = df["cl.decision_level"] / df["cl.decision_level_hist"]
+ df["cl.trail_depth_level_rel"] = df["cl.trail_depth_level"] / df["cl.trail_depth_level_hist"]
+ df["cl.backtrack_level_rel"] = df["cl.backtrack_level"] / df["cl.backtrack_level_hist"]
+
+ # smaller-or-greater comparisons
+ df["cl.decision_level_smaller_than_hist"] = (df["cl.decision_level"] < df["cl.decision_level_hist"]).astype(int)
+ df["cl.backtrack_level_smaller_than_hist"] = (df["cl.backtrack_level"] < df["cl.backtrack_level_hist"]).astype(int)
+ df["cl.trail_depth_level_smaller_than_hist"] = (df["cl.trail_depth_level"] < df["cl.trail_depth_level_hist"]).astype(int)
+ df["cl.num_antecedents_smaller_than_hist"] = (df["cl.num_antecedents"] < df["cl.num_antecedents_hist"]).astype(int)
+ df["cl.antec_sum_size_smaller_than_hist"] = (df["cl.antec_sum_size_hist"] < df["cl.num_total_lits_antecedents"]).astype(int)
+ df["cl.antec_overlap_smaller_than_hist"] = (df["cl.antec_overlap_hist"] < df["cl.overlap"]).astype(int)
+ df["cl.overlap_smaller_than_hist"] = (df["cl.overlap"]<df["cl.antec_overlap_hist"]).astype(int)
+ df["cl.branch_smaller_than_hist_queue"] = (df["cl.decision_level"]<df["cl.branch_depth_hist_queue"]).astype(int)
+
+
+
+ # df["cl.vsids_vars_rel"] = df["cl.vsids_vars_avg"] / df["cl.vsids_vars_hist"]
+
+ old = set(df.columns.values.flatten().tolist())
+ df = df.dropna(how="all")
+ new = set(df.columns.values.flatten().tolist())
+ if len(old - new) > 0:
+ print("ERROR: a NaN number turned up")
+ print("columns: ", (old - new))
+ assert(False)
+ exit(-1)
+
+ # making sure "x.class" is the last one
+ new_no_class = list(new)
+ new_no_class.remove("x.class")
+ df = df[new_no_class + ["x.class"]]
+
+ return df
+
+
+def dump_dataframe(df, name):
+ if options.dump_csv:
+ fname = "%s.csv" % name
+ print("Dumping CSV data to:", fname)
+ df.to_csv(fname, index=False, columns=sorted(list(df)))
+
+ fname = "%s-pandasdata.dat" % name
+ print("Dumping pandas data to:", fname)
+ with open(fname, "wb") as f:
+ pickle.dump(df, f)
+
+
+def one_predictor(dbfname):
+ ok, df = get_one_file(dbfname)
+ if not ok:
+ return False, None
+
+ cleanname = re.sub('\.cnf.gz.sqlite$', '', dbfname)
+
+ if options.verbose:
+ print("Describing----")
+ dat = df.describe()
+ print(dat)
+ print("Describe done.---")
+ print("Features: ", df.columns.values.flatten().tolist())
+
+ df = transform(df)
+
+ if options.verbose:
+ print("Describing post-transform ----")
+ print(df.describe())
+ print("Describe done.---")
+
+ dump_dataframe(df, cleanname)
+
+ return True, df
+
+
+if __name__ == "__main__":
+ usage = "usage: %prog [options] file1.sqlite [file2.sqlite ...]"
+ parser = optparse.OptionParser(usage=usage)
+
+ parser.add_option("--verbose", "-v", action="store_true", default=False,
+ dest="verbose", help="Print more output")
+
+ parser.add_option("--csv", action="store_true", default=False,
+ dest="dump_csv", help="Dump CSV (for weka)")
+
+ parser.add_option("--sql", action="store_true", default=False,
+ dest="dump_sql", help="Dump SQL query")
+
+ parser.add_option("--fixed", default=-1, type=int,
+ dest="fixed_num_datapoints", help="Exact number of examples to take. -1 is to take all. Default: %default")
+
+ parser.add_option("--start", default=-1, type=int,
+ dest="start_conflicts", help="Only consider clauses from conflicts that are at least this high")
+
+ parser.add_option("--noind", action="store_true", default=False,
+ dest="no_recreate_indexes", help="Don't recreate indexes")
+
+ (options, args) = parser.parse_args()
+
+ if len(args) < 1:
+ print("ERROR: You must give at least one file")
+ exit(-1)
+
+ np.random.seed(2097483)
+ dfs = []
+ for dbfname in args:
+ print("----- INTERMEDIATE predictor -------")
+ ok, df = one_predictor(dbfname)
+ if ok:
+ dfs.append(df)
+
+ if len(dfs) == 0:
+ print("Error, nothing got ingested, something is off")
+ exit(-1)
+
+ # intermediate predictor is final
+ if len(args) == 1:
+ exit(0)
+
+ print("----- FINAL predictor -------")
+ if len(dfs) == 0:
+ print("Ooops, final predictor is None, probably no meaningful data. Exiting.")
+ exit(0)
+
+ final_df = pd.concat(dfs)
+ dump_dataframe(final_df, "final")
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/learn/predict.py b/cryptominisat5/cryptominisat-5.6.3/scripts/learn/predict.py
new file mode 100755
index 000000000..68fc3bfba
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/learn/predict.py
@@ -0,0 +1,372 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2018 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+import pandas as pd
+import pickle
+import sklearn
+import sklearn.svm
+import sklearn.tree
+import sklearn.ensemble
+import optparse
+import numpy as np
+import sklearn.metrics
+import time
+import itertools
+import matplotlib.pyplot as plt
+from sklearn.model_selection import train_test_split
+
+class_names = ["throw", "longer"]
+cuts = [-1, 10000, 1000000000000]
+class_names2 = ["middle", "forever"]
+cuts2 = [-1, 30000, 1000000000000]
+#class_names3 = ["middle2", "forever"]
+#cuts3 = [-1, 60000, 1000000000000]
+
+
+def output_to_dot(clf, features, nameextra):
+ fname = options.dot+nameextra
+ sklearn.tree.export_graphviz(clf, out_file=fname,
+ feature_names=features,
+ class_names=class_names,
+ filled=True, rounded=True,
+ special_characters=True,
+ proportion=True)
+ print("Run dot:")
+ print("dot -Tpng {fname} -o {fname}.png".format(fname=fname))
+ print("gwenview {fname}.png".format(fname=fname))
+
+
+def calc_cross_val():
+ # calculate accuracy/prec/recall for cross-validation
+ accuracy = sklearn.model_selection.cross_val_score(self.clf, X_train, y_train, cv=10)
+ precision = sklearn.model_selection.cross_val_score(self.clf, X_train, y_train, cv=10, scoring='precision')
+ recall = sklearn.model_selection.cross_val_score(self.clf, X_train, y_train, cv=10, scoring='recall')
+ print("cv-accuracy:", accuracy)
+ print("cv-precision:", precision)
+ print("cv-recall:", recall)
+ accuracy = np.mean(accuracy)
+ precision = np.mean(precision)
+ recall = np.mean(recall)
+ print("cv-prec: %-3.4f cv-recall: %-3.4f cv-accuracy: %-3.4f T: %-3.2f" %
+ (precision, recall, accuracy, (time.time() - t)))
+
+
+def plot_confusion_matrix(cm, classes,
+ normalize=False,
+ title='Confusion matrix',
+ cmap=plt.cm.Blues):
+ """
+ This function prints and plots the confusion matrix.
+ Normalization can be applied by setting `normalize=True`.
+ """
+ if normalize:
+ cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
+ print("Normalized confusion matrix")
+ else:
+ print('Confusion matrix, without normalization')
+
+ print(cm)
+
+ plt.imshow(cm, interpolation='nearest', cmap=cmap)
+ plt.title(title)
+ plt.colorbar()
+ tick_marks = np.arange(len(classes))
+ plt.xticks(tick_marks, classes, rotation=45)
+ plt.yticks(tick_marks, classes)
+
+ fmt = '.2f' if normalize else 'd'
+ thresh = cm.max() / 2.
+ for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
+ plt.text(j, i, format(cm[i, j], fmt),
+ horizontalalignment="center",
+ color="white" if cm[i, j] > thresh else "black")
+
+ plt.tight_layout()
+ plt.ylabel('True label')
+ plt.xlabel('Predicted label')
+
+
+# to check for too large or NaN values:
+def check_too_large_or_nan_values(df):
+ features = df.columns.values.flatten().tolist()
+ index = 0
+ for index, row in df.iterrows():
+ for x, name in zip(row, features):
+ if not np.isfinite(x) or x > np.finfo(np.float32).max:
+ print("issue with data for features: ", name, x)
+ index += 1
+
+
+def get_code(tree, feature_names):
+ left = tree.tree_.children_left
+ right = tree.tree_.children_right
+ threshold = tree.tree_.threshold
+ features = [feature_names[i] for i in tree.tree_.feature]
+ value = tree.tree_.value
+
+ def recurse(left, right, threshold, features, node):
+ if (threshold[node] != -2):
+ print("if ( " + features[node] + " <= " + str(threshold[node]) + " ) {")
+ if left[node] != -1:
+ recurse(left, right, threshold, features, left[node])
+ print("} else {")
+ if right[node] != -1:
+ recurse(left, right, threshold, features, right[node])
+ print("}")
+ else:
+ print("return " + str(value[node]))
+
+ recurse(left, right, threshold, features, 0)
+
+
+def one_classifier(df, features, to_predict, names, w_name, w_number, final):
+ print("================ predicting %s ================" % to_predict)
+ print("-> Number of features :", len(features))
+ print("-> Number of datapoints:", df.shape)
+ print("-> Predicting :", to_predict)
+
+ train, test = train_test_split(df, test_size=0.33)
+ X_train = train[features]
+ y_train = train[to_predict]
+ X_test = test[features]
+ y_test = test[to_predict]
+
+ t = time.time()
+ clf = None
+ # clf = sklearn.linear_model.LogisticRegression()
+ # clf = sklearn.svm.SVC()
+ if final:
+ clf = sklearn.tree.DecisionTreeClassifier(max_depth=options.tree_depth)
+ else:
+ clf = sklearn.ensemble.RandomForestClassifier(n_estimators=80)
+ #clf = sklearn.ensemble.ExtraTreesClassifier(n_estimators=80)
+
+ sample_weight = [w_number if i == w_name else 1 for i in y_train]
+ clf.fit(X_train, y_train, sample_weight=sample_weight)
+
+ print("Training finished. T: %-3.2f" % (time.time() - t))
+
+ best_features = []
+ if not final:
+ importances = clf.feature_importances_
+ std = np.std([tree.feature_importances_ for tree in clf.estimators_], axis=0)
+ indices = np.argsort(importances)[::-1]
+ indices = indices[:options.top_num_features]
+ myrange = min(X_train.shape[1], options.top_num_features)
+
+ # Print the feature ranking
+ print("Feature ranking:")
+
+ for f in range(myrange):
+ print("%-3d %-35s -- %8.4f" %
+ (f + 1, features[indices[f]], importances[indices[f]]))
+ best_features.append(features[indices[f]])
+
+ # Plot the feature importances of the clf
+ plt.figure()
+ plt.title("Feature importances")
+ plt.bar(range(myrange), importances[indices],
+ color="r", align="center"
+ , yerr=std[indices])
+ plt.xticks(range(myrange), [features[x] for x in indices], rotation=45)
+ plt.xlim([-1, myrange])
+ else:
+ get_code(clf, features)
+
+ print("Calculating scores....")
+ y_pred = clf.predict(X_test)
+ accuracy = sklearn.metrics.accuracy_score(y_test, y_pred)
+ precision = sklearn.metrics.precision_score(y_test, y_pred, average="macro")
+ recall = sklearn.metrics.recall_score(y_test, y_pred, average="macro")
+ print("prec: %-3.4f recall: %-3.4f accuracy: %-3.4f T: %-3.2f" % (
+ precision, recall, accuracy, (time.time() - t)))
+
+ if options.confusion:
+ sample_weight = [w_number if i == w_name else 1 for i in y_pred]
+ cnf_matrix = sklearn.metrics.confusion_matrix(
+ y_test, y_pred, labels=names, sample_weight=sample_weight)
+
+ np.set_printoptions(precision=2)
+
+ # Plot non-normalized confusion matrix
+ plt.figure()
+ plot_confusion_matrix(
+ cnf_matrix, classes=names,
+ title='Confusion matrix, without normalization')
+
+ # Plot normalized confusion matrix
+ plt.figure()
+ plot_confusion_matrix(
+ cnf_matrix, classes=names, normalize=True,
+ title='Normalized confusion matrix')
+
+ # TODO do L1 regularization
+
+ if False:
+ calc_cross_val()
+
+ if options.dot is not None and final:
+ output_to_dot(clf, features, names[0])
+
+ return best_features
+
+
+def remove_old_clause_features(features):
+ todel = []
+ for name in features:
+ if "cl2" in name or "cl3" in name or "cl4" in name:
+ todel.append(name)
+
+ for x in todel:
+ features.remove(x)
+ if options.verbose:
+ print("Removing old clause feature:", x)
+
+
+def rem_features(feat, to_remove):
+ feat_less = list(feat)
+ todel = []
+ for feature in feat:
+ for rem in to_remove:
+ if rem in feature:
+ feat_less.remove(feature)
+ if options.verbose:
+ print("Removing feature from feat_less:", feature)
+
+ return feat_less
+
+
+def learn(fname):
+ with open(fname, "rb") as f:
+ df = pickle.load(f)
+
+ if options.check_row_data:
+ check_too_large_or_nan_values(df)
+
+ print("total samples: %5d" % df.shape[0])
+
+ # lifetime to predict
+ df["x.lifetime_cut"] = pd.cut(
+ df["x.lifetime"],
+ cuts,
+ labels=class_names)
+
+ df["x.lifetime_cut2"] = pd.cut(
+ df["x.lifetime"],
+ cuts2,
+ labels=class_names2)
+
+ #df["x.lifetime_cut3"] = pd.cut(
+ #df["x.lifetime"],
+ #cuts3,
+ #labels=class_names3)
+
+ features = df.columns.values.flatten().tolist()
+ features = rem_features(features,
+ ["x.num_used", "x.class", "x.lifetime", "fname"])
+
+ # this needs binarization
+ features = rem_features(features, ["cl.cur_restart_type"])
+ # x = (df["cl.cur_restart_type"].values[:, np.newaxis] == df["cl.cur_restart_type"].unique()).astype(int)
+ # print(x)
+
+ if True:
+ remove_old_clause_features(features)
+
+ if options.raw_data_plots:
+ pd.options.display.mpl_style = "default"
+ df.hist()
+ df.boxplot()
+
+ if True:
+ feat_less = rem_features(features, ["rdb1", "rdb2", "rdb3", "rdb4"])
+ best_feats = one_classifier(df, feat_less, "x.lifetime_cut",
+ class_names, "longer", 17,
+ False)
+ if options.show:
+ plt.show()
+
+ one_classifier(df, best_feats, "x.lifetime_cut",
+ class_names, "longer", 3,
+ True)
+ if options.show:
+ plt.show()
+
+ if True:
+ feat_less = rem_features(features, ["rdb3", "rdb4"])
+ df2 = df[df["x.lifetime"] > cuts[1]]
+
+ best_feats = one_classifier(df2, feat_less, "x.lifetime_cut2",
+ class_names2, "middle", 30,
+ False)
+ if options.show:
+ plt.show()
+
+ one_classifier(df2, best_feats, "x.lifetime_cut2",
+ class_names2, "middle", 4,
+ True)
+
+ if options.show:
+ plt.show()
+
+ #if True:
+ #df3 = df[df["x.lifetime"] > cuts2[1]]
+
+ #best_feats = one_classifier(df3, features, "x.lifetime_cut3",
+ #class_names3, "middle2", 20,
+ #False)
+ #if options.show:
+ #plt.show()
+
+ #one_classifier(df3, best_feats, "x.lifetime_cut3",
+ #class_names3, "middle2", 8,
+ #True)
+
+
+if __name__ == "__main__":
+ usage = "usage: %prog [options] file.pandas"
+ parser = optparse.OptionParser(usage=usage)
+
+ parser.add_option("--verbose", "-v", action="store_true", default=False,
+ dest="verbose", help="Print more output")
+ parser.add_option("--cross", action="store_true", default=False,
+ dest="cross_validate", help="Cross-validate prec/recall/acc against training data")
+ parser.add_option("--depth", default=6, type=int,
+ dest="tree_depth", help="Depth of the tree to create")
+ parser.add_option("--dot", type=str, default=None,
+ dest="dot", help="Create DOT file")
+ parser.add_option("--conf", action="store_true", default=False,
+ dest="confusion", help="Create confusion matrix")
+ parser.add_option("--show", action="store_true", default=False,
+ dest="show", help="Show visual graphs")
+ parser.add_option("--check", action="store_true", default=False,
+ dest="check_row_data", help="Check row data for NaN or float overflow")
+ parser.add_option("--rawplots", action="store_true", default=False,
+ dest="raw_data_plots", help="Display raw data plots")
+ parser.add_option("--top", default=12, type=int,
+ dest="top_num_features", help="Number of top features to take to generate the final predictor")
+
+ (options, args) = parser.parse_args()
+
+ if len(args) < 1:
+ print("ERROR: You must give the pandas file!")
+ exit(-1)
+
+ learn(args[0])
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/learn/predict_one.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/learn/predict_one.sh
new file mode 100755
index 000000000..6bb746f11
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/learn/predict_one.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+# Copyright (C) 2017 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if [[ $# -ne 3 ]]; then
+ echo "ERROR: wrong number of arguments"
+ echo "Use with ./predict_one.sh 6s153.cnf.gz DIR RATIO"
+ echo "for ex. ./predict_one.sh 6s153.cnf.gz mydir 0.5"
+ exit -1
+fi
+set -e
+set -x
+
+status=$(./cryptominisat5 --hhelp | grep sql)
+ret=$?
+if [ "$ret" -ne 0 ]; then
+ echo "You must compile SQL into cryptominisat"
+ exit -1
+fi
+
+FNAME=$1
+OUTDIR=$2
+RATIO=$3
+mkdir -p "${OUTDIR}"
+
+rm -if "${OUTDIR}/drat_out"
+rm -if "${OUTDIR}/clause_id_data"
+rm -if "${OUTDIR}/data.sqlite"
+rm -if "${OUTDIR}/data.sqlite.tree.dot"
+echo "Predicting file $1"
+
+# running CNF
+./cryptominisat5 ${FNAME} --cldatadumpratio "${RATIO}" --gluecut0 10000 --presimp 1 -n 1 --zero-exit-status --restart luby --clid --sql 2 --maple 0 --distill 0 --sqlitedb "${OUTDIR}/data.sqlite" "${OUTDIR}/drat_out" > "${OUTDIR}/cms_output.txt"
+
+# parse DRAT for UNSAT proof data
+./tests/drat-trim/drat-trim "${FNAME}" "${OUTDIR}/drat_out" -x "${OUTDIR}/clause_id_data" -i
+
+# add clause IDs and their age and performance data
+./add_lemma_ind.py "${OUTDIR}/data.sqlite" "${OUTDIR}/clause_id_data"
+
+# get pandas dataframe from SQLite database
+./gen_pandas.py --csv "${OUTDIR}/data.sqlite"
+
+# generate predictors
+./predict.py "${OUTDIR}/data.sqlite-pandasdata.dat" --dot "${OUTDIR}/dectree.dot"
+
+# generate DOT and display it
+dot -Tpng "${OUTDIR}/dectree.dot" -o tree.png
+display tree.png
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/convert_to_cactusplot.py b/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/convert_to_cactusplot.py
new file mode 100755
index 000000000..a5e8db080
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/convert_to_cactusplot.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python
+
+import sys
+of = sys.argv[1]
+f = open(of, "r")
+text = f.read()
+mylines = text.splitlines()
+i = 0;
+time = []
+for line in mylines :
+ time.append(float(line))
+ #print "t:%f" %(time[i])
+ i += 1
+
+lastnum = -1
+for a in range(0, 60000, 1) :
+ num = 0
+ for t in time :
+ #print "t: %f a: %d" %(t, a)
+ if (t < a) :
+ num += 1
+
+ if (lastnum != num) :
+ print "%d \t%d" %(num, a)
+ lastnum = num
+
+f.close();
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/merge_sqlite.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/merge_sqlite.sh
new file mode 100755
index 000000000..2aa7fd656
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/merge_sqlite.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -e
+set -x
+
+rm -f mergeddata.sqlite
+FNAME=todo
+rm -f $FNAME
+echo ".read /home/soos/development/sat_solvers/cryptominisat/cmsat_tablestructure.sql" >> $FNAME
+for FILE in *sqlite*; do
+ echo "attach '${FILE}' as tomerge;" >> $FNAME
+ myarray=( tags timepassed memused reduceDB finishup )
+ for DAT in "${myarray[@]}"; do
+ echo "insert into ${DAT} select * from tomerge.${DAT};" >> $FNAME;
+ done
+ echo "detach tomerge;" >> $FNAME
+done
+sqlite3 mergeddata.sqlite < $FNAME
+
+# rm -f dump
+# rm -f schema
+# for FILE in *sqlite*; do
+# sqlite3 "$FILE" .sch > schema
+# sqlite3 "$FILE" .dump | grep INSERT | sed 's/\"//g' > dump
+# done
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/plotit b/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/plotit
new file mode 100644
index 000000000..128bda491
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/plotit
@@ -0,0 +1,45 @@
+#set term epslatex color rounded size 4.9,2.2
+#set term postscript size 8,4
+set term png rounded size 800,600
+
+set pointsize 1
+set tics scale 2
+
+#set ytics 4e+8
+#set output "only-vs-congl.eps"
+set xlabel "No. solved instances from SAT Comp'09"
+set ylabel "Time (s)"
+#unset key
+set xtics 20
+#set key inside b
+#set logscale x
+#set xtics (10,40,160,640,2560,5000)
+set style line 1 lt 1 lw 1 pt 4 ps 0.3 linecolor rgbcolor "red"
+set style line 2 lt 2 lw 1 pt 8 ps 0.3 linecolor rgbcolor "orange"
+set style line 3 lt 3 lw 1 pt 12 ps 0.3 linecolor rgbcolor "blue"
+
+##########################################
+
+#set key lmargin
+set key left top
+#set output "CryptoMiniSat2.5.0_vs_CryptoMiniSat2.6.0.png"
+#plot "./solveTimes56Graph" w lp title "CryptoMiniSat 2.5.0 (SAT Race version)" ls 1, "solveTimes82-learntminimGraph" w lp title "CryptoMiniSat 2.6.0" ls 2
+
+#set output "Ligeling_vs_CryptoMiniSat2.6.1.png"
+#plot [80:] "./solveTimes97Graph" w lp title "CryptoMiniSat 2.6.1", "./solveTimesLingelingGraph" w lp title "Lingeling"
+
+#set output "CryptoMiniSat2.7.1-compare.png"
+#plot [80:] "./solveTimesMiniSatGraph" w lp title "MiniSat 2.2", "./solveTimesLingelingGraph" w lp title "lingeling", "./solveTimesPrecoSat465Graph" w lp title "PrecoSat465", "./solveTimes97Graph" w lp title "CryptoMiniSat2.7.1"
+
+#set output "With-without-tans-strong-minim.png"
+#plot [80:] "./solveTimes97Graph" w lp title "With transitive strong minimisation", "./solveTimes97-nolfminimGraph" w lp title "Without transitive strong minimisation"
+
+set output "CryptoMiniSat3Beta-compare.eps"
+plot [80:] "./solveTimesMiniSatGraph" w lp title "MiniSat 2.2", "./solveTimesLingelingGraph" w lp title "lingeling", "./solveTimesPrecoSat465Graph" w lp title "PrecoSat465", "./solveTimes129Graph" w lp title "CryptoMiniSat3Beta"
+
+
+#set term png rounded size 700,400
+set term postscript eps color lw 1.5 "Helvetica" 29 size 7,3
+set output "CryptoMiniSat-Competition.eps"
+plot [80:] "./solveTimesMiniSatGraph" w lp title "MiniSat 2.2", "./solveTimesLingelingGraph" w lp title "lingeling", "./solveTimesPrecoSat465Graph" w lp title "PrecoSat465", "./solveTimes129Graph" w lp title "CryptoMiniSat SAT Comp'11"
+
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/solvetimes_from_output.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/solvetimes_from_output.sh
new file mode 100755
index 000000000..5e4c993cd
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/solvetimes_from_output.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+#set -x
+
+grep --color -i "assert.*fail" `ls *.out`
+grep --color -i signal `ls *.out`
+grep --color -i error `ls *.out`
+grep --color -i terminate `ls *.out`
+grep --color -i abort `ls *.out` | grep -v expensive
+grep --color -i failed `ls *.out` | grep -v probes
+
+ls -- *out | sed 's/gz.*/gz/' > allFiles
+
+# 1500 cutoff
+grep "Total" *out | awk '{print $5}' > solveTimes
+grep "Total" *out | awk '{if ($5 < 1500) {print $1}}' | sed 's/:c.*$//' | sort > solved_under_1500_full_list
+
+
+# for normal
+grep "s.*SATISFIABLE" *out | sed 's/:s.*$//' | sed 's/gz.*/gz/' | sort > solved
+grep "s UNSATISFIABLE" *out | sed 's/:s.*$//' | sed 's/gz.*/gz/' | sort > solvedUNSAT
+grep "s SATISFIABLE" *out | sed 's/:s.*$//' | sed 's/gz.*/gz/' | sort > solvedSAT
+
+# 1500 cutoff
+grep "s.*SATISFIABLE" $(cat solved_under_1500_full_list) | sed 's/:s.*$//' | sed 's/gz.*/gz/' | sort > solved1500
+grep "s UNSATISFIABLE" $(cat solved_under_1500_full_list) | sed 's/:s.*$//' | sed 's/gz.*/gz/' | sort > solvedUNSAT1500
+grep "s SATISFIABLE" $(cat solved_under_1500_full_list) | sed 's/:s.*$//' | sed 's/gz.*/gz/' | sort > solvedSAT1500
+rm solved_under_1500_full_list
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/solvetimes_from_output_glucose.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/solvetimes_from_output_glucose.sh
new file mode 100755
index 000000000..2d489d8d8
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/solvetimes_from_output_glucose.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+set -x
+
+zgrep "CPU" *out.gz | awk '{if ($5 < 1500) {print $1}}' | sed 's/:c.*$//' | sort > solved_under_1500_full_list
+
+zgrep "CPU time" *out.gz | awk '{print $5}' > solveTimes
+zgrep "CPU time" *out.gz | awk '{print $1}' | sed 's/:c$//' | sed 's/gz.*/gz/' | sort > solved
+ls *.out.gz | sed 's/gz.*/gz/' | sort > allFiles
+zgrep "s UNSATISFIABLE" *out.gz | sed 's/:s.*$//' | sed 's/gz.*/gz/' | sort > solvedUNSAT
+zgrep "s SATISFIABLE" *out.gz | sed 's/:s.*$//' | sed 's/gz.*/gz/' | sort > solvedSAT
+
+
+zgrep "s.*SATISFIABLE" $(cat solved_under_1500_full_list) | sed 's/:s.*$//' | sed 's/gz.*/gz/' | sort > solved1500
+zgrep "s.* UNSATISFIABLE" $(cat solved_under_1500_full_list) | sed 's/:s.*$//' | sed 's/gz.*/gz/' | sort > solvedUNSAT1500
+zgrep "s.* SATISFIABLE" $(cat solved_under_1500_full_list) | sed 's/:s.*$//' | sed 's/gz.*/gz/' | sort > solvedSAT1500
+rm solved_under_1500_full_list
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/solvetimes_from_output_lingeling.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/solvetimes_from_output_lingeling.sh
new file mode 100755
index 000000000..ef017d409
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/solvetimes_from_output_lingeling.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+zgrep "\%.*all" -- *out.gz | awk '{print $2}' > solveTimes
+zgrep "\% *all" -- *out.gz | awk '{print $1}' | sed 's/:c$//' | sed 's/gz.*/gz/' | sort > solved
+ls -- *out.gz | sed 's/gz.*/gz/' | sort > allFiles
+zgrep "s UNSATISFIABLE" -- *out.gz | sed 's/:s.*$//' | sed 's/gz.*/gz/' | sort > solvedUNSAT
+zgrep "s SATISFIABLE" -- *out.gz | sed 's/:s.*$//' | sed 's/gz.*/gz/' | sort > solvedSAT
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/sqlite3_checks.py b/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/sqlite3_checks.py
new file mode 100755
index 000000000..dd2b57762
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/output_parser/sqlite3_checks.py
@@ -0,0 +1,290 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+from __future__ import print_function
+import sqlite3
+import optparse
+import operator
+
+
+class Query:
+ def __init__(self):
+ self.conn = sqlite3.connect(dbfname)
+ self.c = self.conn.cursor()
+
+ def __enter__(self):
+ return self
+
+ def __exit__(self, exc_type, exc_value, traceback):
+ self.conn.close()
+
+ def find_time_outliers(self):
+ print("----------- TIME OUTLIERS --------------")
+ query = """
+ select tags.tag, name, elapsed
+ from timepassed,tags
+ where name != 'search' and elapsed > %d and
+ tags.tagname="filename" and tags.runID = timepassed.runID
+ order by elapsed desc;
+ """ % (options.maxtime)
+
+ for row in self.c.execute(query):
+ operation = row[1]
+ t = row[2]
+ fname = self.get_fname(row[0])
+ print("%-32s %-20s %.1fs" % (fname, operation, t))
+
+ def check_memory(self):
+ print("----------- MEMORY OUTLIERS --------------")
+
+ query = """
+ select tags.tag, memused.name, max(memused.MB)
+ from memused,tags
+ where tags.tagname="filename"
+ and tags.runID = memused.runID
+ and memused.MB > %d
+ and memused.name != 'vm'
+ and memused.name != 'rss'
+ and memused.name != 'longclauses'
+ group by tags.tag, memused.name
+ order by MB desc;
+ """ % (options.maxmemory)
+
+ for row in self.c.execute(query):
+ subsystem = row[1]
+ gigs = row[2]/1000.0
+ fname = self.get_fname(row[0])
+ print("%-32s %-20s %.1f GB" % (fname, subsystem, gigs))
+
+ def check_memory_rss(self):
+ print("----------- MEMORY OUTLIERS RSS --------------")
+
+ query = """
+ select tags.tag, memused.name, max(memused.MB)
+ from memused,tags
+ where tags.tagname="filename"
+ and tags.runID = memused.runID
+ and memused.MB > %d
+ and memused.name == 'rss'
+ group by tags.tag, memused.name
+ order by MB desc;
+ """ % (options.maxmemory*2)
+
+ for row in self.c.execute(query):
+ subsystem = row[1]
+ gigs = row[2]/1000.0
+ fname = self.get_fname(row[0])
+ print("%-32s %-20s %.1f GB" % (fname, subsystem, gigs))
+
+ def find_worst_unaccounted_memory(self):
+ print("----------- Largest RSS vs counted differences --------------")
+ query = """
+ select tags.tag, a.`runtime`, abs((b.rss-a.mysum)/b.rss) as differperc,
+ a.mysum as counted, b.rss as total
+ from tags,
+
+ (select runID, `runtime`, sum(MB) as mysum
+ from memused
+ where name != 'rss'
+ and name != 'vm'
+ group by `runtime`, runID) as a,
+
+ (select runID, name, `runtime`, MB as rss
+ from memused
+ where name = 'rss') as b
+
+ where tags.runID = a.runID
+ and tags.tagname="filename"
+ and a.runID = b.runID
+ and a.`runtime` = b.`runtime`
+ and total > %d
+
+ order by differperc desc
+ """ % (options.minmemory)
+
+ for row,_ in zip(self.c.execute(query), range(10)):
+ t = row[1]
+ diff_perc = row[2]
+ counted = row[3]
+ total = row[4]
+ fname = self.get_fname(row[0])
+ print("%-32s at: %-8.1fs counted: %3.2f GB rss: %3.2f GB" % (fname, t, counted/1000.0, total/1000.0))
+
+ def memory_distrib(self):
+ print("----------- MEMORY DISTRIBUTION --------------")
+ print("all divided by RSS -- resident size")
+
+ query = """
+ select sum(MB)
+ from memused
+ where name != 'vm'
+ and name != 'rss';
+ """
+ for row in self.c.execute(query):
+ recorded_mem = float(row[0])
+
+ query = """
+ select sum(MB)
+ from memused
+ where name = 'rss';
+ """
+ for row in self.c.execute(query):
+ rss_mem = float(row[0])
+
+ unaccounted = rss_mem - recorded_mem;
+ print("%-20s %.1f%%" % ("unaccounted", unaccounted/rss_mem*100.0))
+
+ query = """
+ select name, sum(MB) as memsum
+ from memused
+ where name != 'vm'
+ and name != 'rss'
+ group by name
+ order by memsum desc;
+ """
+
+ for row in self.c.execute(query):
+ subsystem = row[0]
+ mbs = float(row[1])
+ print("%-20s %.1f%%" % (subsystem, mbs/rss_mem*100.0))
+
+ def get_fname(self, val) :
+ fname = val.split("/")
+ fname = fname[len(fname)-1]
+ fname = fname.rstrip(".cnf.gz")
+ #if len(fname) > 40:
+ # fname = fname[:30] + "..." + fname[len(fname)-10:]
+
+ return fname
+
+ def calc_time_spent(self):
+ print("----------- TIME DISTRIBUTION --------------")
+
+ query = """
+ select sum(elapsed)
+ from timepassed
+ where name='search';
+ """
+ for row in self.c.execute(query):
+ search_time = float(row[0])
+
+ query = """
+ select sum(elapsed)
+ from timepassed
+ where name!='search';
+ """
+ for row in self.c.execute(query):
+ other_time = float(row[0])
+
+ total = search_time + other_time
+ print("Total: %10.1fh Search: %3.1f%%, Other: %3.1f%%" %
+ (total/3600, search_time/total*100, other_time/total*100))
+
+ query = """
+ select name, sum(elapsed)
+ from timepassed
+ group by name;
+ """
+ times = {}
+ for row in self.c.execute(query):
+ times[row[0]] = float(row[1])
+
+ # print("Names: %s" % times)
+ sorted_t = sorted(times.items(), key=operator.itemgetter(1), reverse=True)
+ for (name, t) in sorted_t:
+ name = name[:40]
+ print("%-40s %3.1f%%" % (name, t/total*100))
+
+ def find_intersting_problems(self):
+ print("----------- Interesting problems for learning --------------")
+
+ #Find CNFs that are interesting:
+ #* solved in under 500s
+ #* UNSAT
+ #* more conflicts than 60'000
+
+ #last conflict > 60000, UNSAT, solvetime under 500s
+ query = """
+ select a.runID, tags.tag, a.maxtime, a.maxconfl, mems.maxmem from
+
+ (select runID, max(conflicts) as maxconfl, max(`runtime`) as maxtime
+ from timepassed
+ group by runID
+ ) as a,
+ (select runID
+ from finishup
+ where status = "l_False"
+ ) as b,
+ (select runID, max(MB) as maxmem
+ from memused
+ group by runID
+ ) as mems, tags
+
+ where a.maxconfl > 20000
+ and a.maxconfl < 400000
+ and a.maxtime < 400
+ and a.maxtime > 10
+ and a.runID = b.runID
+ and tags.runID = a.runID
+ and tags.tagname = "filename"
+ and mems.runID = a.runID
+ order by maxtime desc
+ """
+
+ runIDs = []
+ for row in self.c.execute(query):
+ fname = row[1].split("/")
+ fname = fname[len(fname)-1]
+ runID = int(row[0])
+ t = row[2]
+ confl = row[3]
+ mb = row[4]
+ print("runID %-10d t(mins): %-6.1f confl(K): %-6.1f mem(GB): %-6.1f fname: %s" %
+ (runID, t/60.0, confl/(1000.0), mb/1024.0, fname))
+
+
+if __name__ == "__main__":
+ usage = "usage: %prog [options] sqlitedb"
+ parser = optparse.OptionParser(usage=usage)
+
+ parser.add_option("--maxtime", metavar="CUTOFF",
+ dest="maxtime", default=20, type=int,
+ help="Max time for an operation")
+
+ parser.add_option("--maxmemory", metavar="CUTOFF",
+ dest="maxmemory", default=500, type=int,
+ help="Max memory for a subsystem")
+
+ parser.add_option("--minmemory", metavar="MINMEM",
+ dest="minmemory", default=800, type=int,
+ help="Minimum memory to be checked for RSS vs counted check")
+
+ parser.add_option("--verbose", "-v", action="store_true", default=False,
+ dest="verbose", help="Print more output")
+
+ (options, args) = parser.parse_args()
+
+ if len(args) != 1:
+ print("ERROR: You must give exactly one argument, the sqlite3 database file")
+ exit(-1)
+
+ dbfname = args[0]
+ print("Using sqlite3db file %s" % dbfname)
+
+ #peform queries
+ with Query() as q:
+ q.find_intersting_problems()
+ q.find_worst_unaccounted_memory()
+ q.check_memory_rss()
+ q.check_memory()
+ q.memory_distrib()
+ q.find_time_outliers()
+ q.calc_time_spent()
+
+
+
+#select timepassed.runID, tag,elapsed from timepassed,tags where name like 'shorten and str red%' and elapsed > 2 and tags.runID = timepassed.runID;
+
+#select * from timepassed where elapsed > 20 and name not like 'search';
+
+#select * from startup, solverRun, finishup where finishup.runID = solverRun.runID and (finishup.endTime - startup.startTime) < 30 and solverRun.version = "618b5e79fdd8a15918e19fb76ca08aa069f14b54" and solverRun.runID = startup.runID;
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/reconf/count_plus_minus.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/reconf/count_plus_minus.sh
new file mode 100755
index 000000000..495a006c3
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/reconf/count_plus_minus.sh
@@ -0,0 +1,46 @@
+#!/usr/bin/bash
+
+#rm outfile*.data
+#rm outs/*.data
+#./reconf.py -n 18 -i 1,2,8,9,10,11,15,5,14,13,3 -f outs/out /home/soos/media/sat/out/new/out-reconf-6776906.wlm01-*/*.out
+
+
+for f in `ls outs/*.data`; do
+ echo "$f:"
+ grep ",+" $f | wc -l;
+ grep ",-" $f | wc -l;
+ echo "---"
+done
+
+
+echo "this is solved by everyone:"
+grep "total-10-13-u.cnf" outs/*.data
+
+echo "this is solved by nobody:"
+grep "partial-10-13-u.cnf" outs/*.data
+
+echo "this is solved by some only -8-==rec15 and -10-=rec17 and -9-=rec16), small diff:"
+grep "mp1-22.5.cnf.gz" outs/*.data
+
+echo "this is solved by everyone except 7, large diff:"
+grep "mp1-klieber2017s-1000-024-eq.cnf" outs/*.data
+
+echo "given neg : rec17, rec7, rec16"
+echo "which is eqiv: 10, 4, 9, (note: 8-drat = 15, which is ignored)"
+
+echo "to check:"
+echo 'grep -i "User time" */mp1-klieber2017s-1000-024-eq.cnf*.timeout | awk '{print $5 " -- " $1}' | sort -n'
+
+echo 'mapping:
+num -> reconf
+0 0
+1 3
+2 4
+3 6
+4 7
+5 12
+6 13
+7 14
+8 15
+9 16
+10 17'
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/reconf/generate_reconf.py b/cryptominisat5/cryptominisat-5.6.3/scripts/reconf/generate_reconf.py
new file mode 100755
index 000000000..1ab65a2a2
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/reconf/generate_reconf.py
@@ -0,0 +1,108 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2014 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+from __future__ import with_statement # Required in 2.5
+from __future__ import print_function
+import sys
+import subprocess
+
+
+def query_yes_no(question, default="no"):
+ """Ask a yes/no question via input() and return their answer.
+
+ "question" is a string that is presented to the user.
+ "default" is the presumed answer if the user just hits <Enter>.
+ It must be "yes" (the default), "no" or None (meaning
+ an answer is required of the user).
+
+ The "answer" return value is True for "yes" or False for "no".
+ """
+ valid = {"yes": True, "y": True, "ye": True,
+ "no": False, "n": False}
+ if default is None:
+ prompt = " [y/n] "
+ elif default == "yes":
+ prompt = " [Y/n] "
+ elif default == "no":
+ prompt = " [y/N] "
+ else:
+ raise ValueError("invalid default answer: '%s'" % default)
+
+ while True:
+ sys.stdout.write(question + prompt)
+ choice = input().lower()
+ if default is not None and choice == '':
+ return valid[default]
+ elif choice in valid:
+ return valid[choice]
+ else:
+ sys.stdout.write("Please respond with 'yes' or 'no' "
+ "(or 'y' or 'n').\n")
+
+
+num = 18
+ignore = "1,2,8,9,10,11,15,5,14,13,3"
+files = "/home/soos/media/sat/out/new/out-reconf-6776906.wlm01-*/*.out"
+
+# for testing
+#num = 8
+#ignore = "0,1,2,3,5,6"
+#files = "/home/soos/media/sat/out/new2/out-reconf-6776906.wlm01-*/*.out"
+
+ignore_elems = {}
+for x in ignore.split(","):
+ x = x.strip()
+ if x == "":
+ continue
+
+ x = int(x)
+ ignore_elems[x] = True
+
+subprocess.call("rm outs/*", shell=True)
+toexec = "./reconf.py -n %d -i %s -f outs/out %s" % (num, ignore, files)
+f = open("output", "w")
+ret = subprocess.call(toexec, shell=True, stdout=f)
+f.close()
+if ret != 0:
+ print("ERROR: reconf call exited non-zero: %s" % toexec)
+ exit(-1)
+
+for i in range(num):
+ if i in ignore_elems:
+ continue
+
+ print("reconf with %d" % i)
+ subprocess.call("cp outs/reconf.names outs/out%d.names" % i, shell=True)
+ subprocess.call("c5.0 -u 20 -f outs/out%d -r > outs/out%d.c50.out" % (i, i), shell=True)
+
+subprocess.call("./tocpp.py -i %s -n %d > ../../src/features_to_reconf.cpp" % (ignore, num),
+ shell=True)
+
+subprocess.call("sed -i 's/red-/red_cl_distrib./g' ../../src/features_to_reconf.cpp",
+ shell=True)
+
+upload = query_yes_no("Upload to AWS?")
+if upload:
+ subprocess.call("aws s3 cp ../../src/features_to_reconf.cpp s3://msoos-solve-data/solvers/", shell=True)
+ print("Uploded to AWS")
+else:
+ print("Not uploaded to AWS")
+
+
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/reconf/reconf.py b/cryptominisat5/cryptominisat-5.6.3/scripts/reconf/reconf.py
new file mode 100755
index 000000000..fbdd6e8ca
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/reconf/reconf.py
@@ -0,0 +1,334 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2014 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+import sys
+import re
+import ntpath
+import os
+
+from optparse import OptionParser
+usage = """
+./reconf.py -n 15 ~/media/sat/out/satcomp091113/reconf0-09113-23-July-2015-mark-XZGKC-78499d3f2-tout-5000-mout-1600/*.stdout* ~/media/sat/out/satcomp091113/reconf14-091113-28-August-2015-mark-O5T8F-169dfc802-tout-5000-mout-1600/*.stdout*
+
+NOTE: you *must* have reconf14 in there or a lot of data will be missing
+in particular avg_confl_size, which will make the system error out on you.
+"""
+parser = OptionParser(usage=usage)
+parser.add_option("-f", "--file",
+ dest="outfname", type=str, default="outfile",
+ help="print final values to this file")
+parser.add_option("-n", "--num",
+ dest="num", type=int,
+ help="Number of reconfs")
+parser.add_option("--dropdown",
+ dest="dropdown", type=float, default=0.02,
+ help="From traget 1.0 this is subtracted no matter what")
+parser.add_option("--cutoff",
+ dest="cutoff", type=float, default=0.50,
+ help="At least this much or higher is needed for +")
+parser.add_option("--divisor",
+ dest="divisor", type=float, default=1500.0,
+ help="Time difference is divided by this much and subtracted")
+parser.add_option("--ignorethresh",
+ dest="ignore_threshold", type=float, default=4000.0,
+ help="If all solved above this score, ignore")
+parser.add_option("--maxscore",
+ dest="maxscore", type=int, default=5000.0,
+ help="Scores go down from here")
+parser.add_option("--ignore", "-i",
+ dest="ignore", type=str,
+ help="Ignore these reconfs")
+parser.add_option("--verbose", "-r", dest="verbose", default=False,
+ action="store_true", help="More verbose")
+
+(options, args) = parser.parse_args()
+# print("files to parse are:", args)
+
+ignore = {}
+if options.ignore:
+ for r in options.ignore.split(","):
+ r = r.strip()
+ r = int(r)
+ ignore[r] = True
+
+feat_order = ["numClauses", "binary", "horn", "horn_mean", "horn_std", "horn_min", "horn_max", "horn_spread", "vcg_var_mean", "vcg_var_std", "vcg_var_min", "vcg_var_max", "vcg_var_spread", "vcg_cls_mean", "vcg_cls_std", "vcg_cls_min", "vcg_cls_max", "vcg_cls_spread", "pnr_var_mean", "pnr_var_std", "pnr_var_min", "pnr_var_max", "pnr_var_spread", "pnr_cls_mean", "pnr_cls_std", "pnr_cls_min", "pnr_cls_max", "pnr_cls_spread", "avg_confl_size", "confl_size_min", "confl_size_max", "avg_confl_glue", "confl_glue_min", "confl_glue_max", "avg_num_resolutions", "num_resolutions_min", "num_resolutions_max", "learnt_bins_per_confl", "avg_branch_depth", "branch_depth_min", "branch_depth_max", "avg_trail_depth_delta", "trail_depth_delta_min", "trail_depth_delta_max", "avg_branch_depth_delta", "props_per_confl", "confl_per_restart", "decisions_per_conflict", "irred_cl_distrib.glue_distr_mean", "irred_cl_distrib.glue_distr_var", "irred_cl_distrib.size_distr_mean", "irred_cl_distrib.size_distr_var", "irred_cl_distrib.uip_use_distr_mean", "irred_cl_distrib.uip_use_distr_var", "irred_cl_distrib.activity_distr_mean", "irred_cl_distrib.activity_distr_var", "red_cl_distrib.glue_distr_mean", "red_cl_distrib.glue_distr_var", "red_cl_distrib.size_distr_mean", "red_cl_distrib.size_distr_var", "red_cl_distrib.uip_use_distr_mean", "red_cl_distrib.uip_use_distr_var", "red_cl_distrib.activity_distr_mean", "red_cl_distrib.activity_distr_var"]
+
+f = open("outs/reconf.names", "w")
+f.write("reconf. | the target attribute\n\n")
+f.write("name: label.\n")
+for o in feat_order:
+ f.write("%s: continuous.\n" % o)
+f.write("\nreconf: +,-.\n")
+f.close()
+
+if options.num is None:
+ print("ERROR: You must give the number of reconfs")
+ exit(-1)
+
+
+def parse_features_line(line):
+ line = re.sub("c.*features. ", "", line)
+ line = line.strip().split(" ")
+ dat = {}
+
+ name = ""
+ for elem, i in zip(line, range(1000)):
+ elem = elem.strip(":").strip(",")
+ if i % 2 == 0:
+ name = elem
+ continue
+
+ dat[name] = elem
+ name = ""
+ return dat
+
+
+def nobody_could_solve_it(reconf_score):
+ for r_s_elem in reconf_score:
+ if r_s_elem[1] != 0:
+ return False
+
+ return True
+
+
+def all_above_fixed_score(reconf_score):
+ for x in reconf_score:
+ if x[0] in ignore:
+ continue
+
+ if x[1] < options.ignore_threshold:
+ print("-> not ignoring, reconf %d is below ignore threshold" % x[0])
+ return False
+
+ return True
+
+
+def print_features_and_scores(fname, features, reconfs_scores):
+ r_s = sorted(reconfs_scores, key=lambda x: x[1])[::-1]
+ best_reconf = r_s[0][0]
+ best_reconf_score = r_s[0][1]
+ print("r_s: ", r_s)
+
+ if nobody_could_solve_it(r_s):
+ print("Nobody could solve: %s" % fname)
+ return -1, False
+
+ if all_above_fixed_score(r_s):
+ print("All above score: %s" % (fname))
+ return -2, False
+
+ print("Calculating +/- for %s" % fname)
+
+ # calculate final array
+ final_array = [0.0]*options.num
+ val = 1.0
+ best_score = r_s[0][1]
+ for conf_score, i in zip(r_s, range(100)):
+ diff = abs(conf_score[1]-best_score)
+ best_score = conf_score[1]
+ val -= float(diff)/options.divisor
+ if diff > 0:
+ val -= options.dropdown
+
+ if val < 0.0 or conf_score[1] == 0:
+ val = 0.0
+
+ if conf_score[1] > 0:
+ final_array[conf_score[0]] = val
+
+ # assemble final string
+ string = ""
+ string += "%s," % fname
+ for name in feat_order:
+ string += "%s," % features[name]
+
+ # print to console
+ if True:
+ string2 = str(string)
+ string2 += "||"
+ for a in final_array:
+ string2 += "%.1f " % a
+
+ print(string2)
+
+ # print to files
+ origstring = str(string)
+ for i in range(options.num):
+ # skip files we don't need to write to
+ if i in ignore:
+ continue
+
+ string = str(origstring)
+ if final_array[i] >= options.cutoff:
+ string += "+"
+ else:
+ string += "-"
+
+ outf[i].write(string + "\n")
+
+ only_this_could_solve_it = r_s[1][1] == 0
+ return best_reconf, only_this_could_solve_it
+
+
+def parse_file(fname):
+ f = open(fname, 'r')
+ # print("fname orig:", fname)
+ fname_clean = re.sub("cnf.gz-.*", "cnf.gz", fname)
+ fname_clean = ntpath.split(fname_clean)[1]
+ reconf = 0
+
+ satisfiable = None
+ features = None
+ score = 0
+ for line in f:
+ line = line.strip()
+ #print("parsing line:", line)
+ if features is None and "features" in line and "numClauses" in line:
+ features = parse_features_line(line)
+
+ if "Total time" in line:
+ time_used = line.strip().split(":")[1].strip()
+ score = int(round(float(time_used)))
+ score = options.maxscore-score
+
+ if "reconfigured" in line:
+ reconf = line.split("to config")[1].strip()
+ reconf = int(reconf)
+
+ if "s SATIS" in line:
+ satisfiable = True
+
+ if "s UNSATIS" in line:
+ satisfiable = False
+
+ #if satisfiable == True:
+ # score = 0
+
+ if reconf in ignore:
+ score = 0
+
+ # print("features:", features)
+ return fname_clean, reconf, features, score
+
+
+all_files = set()
+all_files_scores = {}
+all_files_features = {}
+max_num_features = 0
+for x in args:
+ print("# parsing infile:", x)
+ fname, reconf, features, score = parse_file(x)
+ if fname in all_files:
+ if all_files_features[fname] != features:
+ print("different features extracted for fname", fname)
+ print("orig:", all_files_features[fname])
+ print("new: ", features)
+ print("Keeping the longer one!")
+
+ if all_files_features[fname] is None:
+ num_features = 0
+ else:
+ num_features = len(all_files_features[fname])
+
+ if features is not None and num_features < len(features):
+ all_files_features[fname] = features
+ else:
+ all_files.add(fname)
+ all_files_features[fname] = features
+ all_files_scores[fname] = []
+
+ #print("fname:", fname)
+ all_files_scores[fname].append([reconf, score])
+
+ sys.stdout.write(".")
+ sys.stdout.flush()
+
+print("END--------")
+print("all files:", all_files)
+print("")
+
+outf = []
+outfnames = []
+for i in range(options.num):
+ fname = options.outfname + str(i) + ".data"
+ outfnames.append(fname)
+ try:
+ os.unlink(fname)
+ except:
+ pass
+
+ if i not in ignore:
+ outf.append(open(fname, "w"))
+ else:
+ outf.append(None)
+
+best_reconf = {'all_above_fixed_score': 0, 'nobody_could_solve_it': 0}
+for x in range(options.num):
+ best_reconf[x] = 0
+only_this = dict(best_reconf)
+
+
+for fname in all_files:
+ print("")
+ print("calculating final DATs for CNF ", fname)
+ if all_files_features[fname] is None:
+ print("-> solved too early, no features, skipping")
+ continue
+
+ if options.verbose:
+ print("-> all_files_features[fname]:", all_files_features[fname])
+ if "avg_confl_size" not in all_files_features[fname]:
+ print("-> WARNING This is weird, probably not solved by one (different features than everything else), skipping")
+ continue
+
+ if all_files_features[fname] is None:
+ print("-> features for file is None: %s" % fname)
+
+ if all_files_features[fname] is not None:
+ best, only_this_could_solve_it = print_features_and_scores(fname, all_files_features[fname], all_files_scores[fname])
+
+ if best == -2:
+ best = "all_above_fixed_score"
+
+ if best == -1:
+ best = "nobody_could_solve_it"
+
+ print("-> best here:", best)
+ best_reconf[best] = best_reconf[best] + 1
+ if only_this_could_solve_it:
+ only_this[best] = only_this[best] + 1
+
+print("")
+print("Wrote data files: %s\n" % outfnames)
+print("\n-----------------------------")
+print("best reconfs: ")
+for a, b in best_reconf.items():
+ if a not in ignore:
+ print("%-20s : %-3d" % (a, b))
+
+print("\n-----------------------------")
+print("uniquely solved by: ")
+for a, b in only_this.items():
+ if a not in ignore:
+ print("%-20s : %-3d" % (a, b))
+
+for i in range(options.num):
+ if outf[i] is not None:
+ outf[i].close()
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/reconf/tocpp.py b/cryptominisat5/cryptominisat-5.6.3/scripts/reconf/tocpp.py
new file mode 100755
index 000000000..16f0a3396
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/reconf/tocpp.py
@@ -0,0 +1,208 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2014 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+
+from __future__ import print_function
+import sys
+
+from optparse import OptionParser
+parser = OptionParser()
+parser.add_option("-n", "--num",
+ dest="num", type=int,
+ help="Number of reconfs")
+parser.add_option("--ignore", "-i",
+ dest="ignore", type=str,
+ help="Ignore these reconfs")
+
+(options, args) = parser.parse_args()
+
+ignore = {}
+if options.ignore:
+ for r in options.ignore.split(","):
+ r = r.strip()
+ r = int(r)
+ ignore[r] = True
+
+if options.num is None:
+ print("ERROR: You must give the number of reconfs")
+ exit(-1)
+
+print("""/******************************************
+Copyright (c) 2016, Mate Soos
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+***********************************************/
+
+#include "solvefeatures.h"
+#include <iostream>
+using std::cout;
+using std::endl;
+
+namespace CMSat {
+""")
+
+for i in range(options.num):
+ if i not in ignore:
+ print("double get_score%d(const SolveFeatures& feat, const int verb);" % i)
+
+print("""
+int get_reconf_from_features(const SolveFeatures& feat, const int verb)
+{
+\tdouble best_score = 0.0;
+\tint best_val = 0;
+\tdouble score;
+""")
+
+for i in range(options.num):
+ if i in ignore:
+ continue
+
+ print("""
+\tscore = get_score%d(feat, verb);
+\tif (verb >= 2)
+\t\tcout << "c Score for reconf %d is " << score << endl;
+\tif (best_score < score) {
+\t\tbest_score = score;
+\t\tbest_val = %d;
+\t}
+""" % (i, i, i))
+
+print("""
+\tif (verb >= 2)
+\t\tcout << "c Winning reconf is " << best_val << endl;
+\treturn best_val;
+}
+
+""")
+
+
+def read_one_reconf(reconf_num):
+ sys.stderr.write("Parsing reconf num %d\n" % reconf_num)
+ f = open("outs/out%d.rules" % reconf_num)
+ num_conds = 0
+ cond_no = 0
+ num_rules = 0
+ rule_no = 0
+ string = ""
+
+ print("""
+double get_score%d(const SolveFeatures& feat, const int verb)
+{""" % reconf_num)
+ for line in f:
+ if "id=" in line:
+ continue
+
+ line = line.strip()
+ line = line.split(" ")
+ dat = {}
+ for elem in line:
+ elems = elem.split("=")
+ elems = [e.strip("\"") for e in elems]
+ dat[elems[0]] = elems[1]
+
+ if "conds" in dat:
+ assert num_conds == cond_no
+ num_conds = int(dat["conds"])
+ rule_class = dat["class"]
+ cond_no = 0
+ confidence = float(dat["confidence"])
+ continue
+
+ if "entries" in dat:
+ continue
+
+ if "rules" in dat:
+ num_rules = int(dat["rules"])
+
+ if "default" in dat:
+ default = dat["default"]
+ if default == "+":
+ print("\tdouble default_val = %.2f;\n" % (1.0))
+ else:
+ print("\tdouble default_val = %.2f;\n" % (0.0))
+
+ print("\tdouble total_plus = 0.0;")
+ print("\tdouble total_neg = 0.0;")
+ continue
+
+ # process rules
+ if cond_no == 0:
+ string = "\tif ("
+ else:
+ string += " &&\n\t\t"
+
+ string += "(feat.%s %s %.5f)" % (dat["att"], dat["result"],
+ float(dat["cut"]))
+ cond_no += 1
+
+ # end rules
+ if cond_no == num_conds:
+ string += ")\n\t{"
+ print(string)
+
+ string = ""
+ if rule_class == "+":
+ string += "\t\ttotal_plus += %.3f;" % confidence
+ else:
+ string += "\t\ttotal_neg += %.3f;" % confidence
+
+ print(string)
+ print("\t}")
+ rule_no += 1
+
+ print("\t// num_rules:", num_rules)
+ print("\t// rule_no:", rule_no)
+ sys.stderr.write("num rules: %s rule_no: %s\n" % (num_rules, rule_no))
+ assert num_rules == rule_no
+ print("\t// default is:", default)
+ print("""
+\tif (total_plus == 0.0 && total_neg == 0.0) {
+\t\treturn default_val;
+\t}
+\tif (verb >= 2) {
+\t\t//cout << "c plus: " << total_plus << " , neg: " << total_neg << endl;
+\t}
+\treturn total_plus - total_neg;
+}
+""")
+
+
+for i in range(options.num):
+ if i not in ignore:
+ read_one_reconf(i)
+
+print("""
+} //end namespace""")
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/travis-cmake.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/travis-cmake.sh
new file mode 100755
index 000000000..623efe918
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/travis-cmake.sh
@@ -0,0 +1,471 @@
+#!/bin/bash
+
+# Copyright (C) 2014 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# This file wraps CMake invocation for TravisCI
+# so we can set different configurations via environment variables.
+
+set -e
+set -x
+
+# fix TravisCI issue --> https://github.com/travis-ci/travis-ci/issues/8920
+python -c "import fcntl; fcntl.fcntl(1, fcntl.F_SETFL, 0)"
+
+check_license() {
+ #license check -- first print and then fail in case of problems
+ ./utils/licensecheck/licensecheck.pl -m $1
+ NUM=$(./utils/licensecheck/licensecheck.pl -m $1 | grep UNK | wc -l)
+ shopt -s extglob
+ NUM="${NUM##*( )}"
+ NUM="${NUM%%*( )}"
+ shopt -u extglob
+ if [ "$NUM" -ne 0 ]; then
+ echo "There are some files without license information!"
+ exit -1
+ fi
+}
+
+check_license_fnames() {
+ #license check -- first print and then fail in case of problems
+ find $1 -type f -name $2 -exec utils/licensecheck/licensecheck.pl -m {} \;
+ NUM=$(find $1 -type f -name $2 -exec utils/licensecheck/licensecheck.pl -m {} \; | grep UNK | wc -l)
+ shopt -s extglob
+ NUM="${NUM##*( )}"
+ NUM="${NUM%%*( )}"
+ shopt -u extglob
+ if [ "$NUM" -ne 0 ]; then
+ echo "There are some files without license information!"
+ exit -1
+ fi
+}
+
+check_license CMakeLists.txt
+check_license ./src
+check_license ./tests/
+check_license ./scripts/fuzz/
+check_license ./scripts/learn/
+check_license ./scripts/aws/
+
+check_license_fnames tests/ CMakeLists.txt
+check_license_fnames src/ CMakeLists.txt
+check_license_fnames scripts/ CMakeLists.txt
+
+NUM=$(./utils/licensecheck/licensecheck.pl -m ./tests | grep UNK | wc -l)
+shopt -s extglob
+NUM="${NUM##*( )}"
+NUM="${NUM%%*( )}"
+shopt -u extglob
+if [ "$NUM" -ne 0 ]; then
+ echo "There are some files without license information!"
+ exit -1
+fi
+
+set -x
+
+SOURCE_DIR=$(pwd)
+cd build
+BUILD_DIR=$(pwd)
+
+# Note eval is needed so COMMON_CMAKE_ARGS is expanded properly
+
+
+# for OSX keep prefix
+PATH_PREFIX_ADD=""
+if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
+ PATH_PREFIX_ADD="-DCMAKE_INSTALL_PREFIX=/usr"
+fi
+
+case $CMS_CONFIG in
+ SLOW_DEBUG)
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libboost-program-options-dev; fi
+ eval cmake -DENABLE_TESTING:BOOL=ON \
+ -DSLOW_DEBUG:BOOL=ON \
+ ${PATH_PREFIX_ADD} \
+ "${SOURCE_DIR}"
+ ;;
+
+ NORMAL)
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libboost-program-options-dev; fi
+ eval cmake -DENABLE_TESTING:BOOL=ON \
+ ${PATH_PREFIX_ADD} \
+ "${SOURCE_DIR}"
+ ;;
+
+ NORMAL_PYTHON2)
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libboost-program-options-dev; fi
+ eval cmake -DFORCE_PYTHON2=ON -DENABLE_TESTING:BOOL=ON \
+ ${PATH_PREFIX_ADD} \
+ "${SOURCE_DIR}"
+ ;;
+
+ LARGEMEM)
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libboost-program-options-dev; fi
+ eval cmake -DENABLE_TESTING:BOOL=ON \
+ -DLARGEMEM:BOOL=ON \
+ ${PATH_PREFIX_ADD} \
+ "${SOURCE_DIR}"
+ ;;
+
+ LARGEMEM_GAUSS)
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libboost-program-options-dev; fi
+ eval cmake -DENABLE_TESTING:BOOL=ON \
+ -DLARGEMEM:BOOL=ON \
+ -DUSE_GAUSS=ON \
+ "${SOURCE_DIR}"
+ ;;
+
+ COVERAGE)
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libboost-program-options-dev; fi
+ eval cmake -DENABLE_TESTING:BOOL=ON \
+ -DCOVERAGE:BOOL=ON \
+ -DUSE_GAUSS=ON \
+ -DSTATS:BOOL=ON \
+ -DSLOW_DEBUG:BOOL=ON \
+ -DSTATICCOMPILE:BOOL=ON \
+ "${SOURCE_DIR}"
+ ;;
+
+ STATIC)
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libboost-program-options-dev; fi
+ eval cmake -DENABLE_TESTING:BOOL=ON \
+ -DSTATICCOMPILE:BOOL=ON \
+ "${SOURCE_DIR}"
+ ;;
+
+ ONLY_SIMPLE)
+ eval cmake -DENABLE_TESTING:BOOL=ON \
+ -DONLY_SIMPLE:BOOL=ON \
+ "${SOURCE_DIR}"
+ ;;
+
+ ONLY_SIMPLE_STATIC)
+ eval cmake -DENABLE_TESTING:BOOL=ON \
+ -DONLY_SIMPLE:BOOL=ON \
+ -DSTATICCOMPILE:BOOL=ON \
+ "${SOURCE_DIR}"
+ ;;
+
+ STATS)
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libboost-program-options-dev; fi
+ eval cmake -DENABLE_TESTING:BOOL=ON \
+ -DSTATS:BOOL=ON \
+ "${SOURCE_DIR}"
+ ;;
+
+ NOZLIB)
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libboost-program-options-dev; fi
+ eval cmake -DENABLE_TESTING:BOOL=ON \
+ -DNOZLIB:BOOL=ON \
+ "${SOURCE_DIR}"
+ ;;
+
+ RELEASE)
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libboost-program-options-dev; fi
+ eval cmake -DENABLE_TESTING:BOOL=ON \
+ -DCMAKE_BUILD_TYPE:STRING=Release \
+ "${SOURCE_DIR}"
+ ;;
+
+ NOSQLITE)
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libboost-program-options-dev; fi
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get remove libsqlite3-dev; fi
+ eval cmake -DENABLE_TESTING:BOOL=ON \
+ "${SOURCE_DIR}"
+ ;;
+
+
+ NOPYTHON)
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libboost-program-options-dev; fi
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get remove -y python3-dev python2.7-dev python-dev libpython-dev; fi
+ eval cmake -DENABLE_TESTING:BOOL=ON \
+ "${SOURCE_DIR}"
+ ;;
+
+ INTREE_BUILD)
+ cd ..
+ SOURCE_DIR=$(pwd)
+ BUILD_DIR=$(pwd)
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libboost-program-options-dev; fi
+ eval cmake -DENABLE_TESTING:BOOL=ON \
+ "${SOURCE_DIR}"
+ ;;
+
+ WEB)
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libboost-program-options-dev; fi
+
+ cd "$SOURCE_DIR"
+ #./cmsat_mysql_setup.sh
+ cd "$BUILD_DIR"
+
+ eval cmake -DENABLE_TESTING:BOOL=ON \
+ -DSTATS:BOOL=ON \
+ "${SOURCE_DIR}"
+ ;;
+
+ SQLITE)
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libboost-program-options-dev; fi
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libsqlite3-dev; fi
+
+ eval cmake -DENABLE_TESTING:BOOL=ON \
+ -DSTATS:BOOL=ON \
+ "${SOURCE_DIR}"
+ ;;
+
+ NOTEST)
+ rm -rf ${SOURCE_DIR}/utils/gtest
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libboost-program-options-dev; fi
+ eval cmake "${SOURCE_DIR}"
+ ;;
+
+ GAUSS)
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libboost-program-options-dev; fi
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libsqlite3-dev; fi
+
+ eval cmake -DENABLE_TESTING:BOOL=ON \
+ -DUSE_GAUSS=ON \
+ ${PATH_PREFIX_ADD} \
+ "${SOURCE_DIR}"
+ ;;
+
+ M4RI)
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install libboost-program-options-dev; fi
+ wget https://bitbucket.org/malb/m4ri/downloads/m4ri-20140914.tar.gz
+ tar xzvf m4ri-20140914.tar.gz
+ cd m4ri-20140914/
+ ./configure
+ make
+ sudo make install
+ cd ..
+
+ eval cmake -DENABLE_TESTING:BOOL=ON \
+ "${SOURCE_DIR}"
+ ;;
+
+ *)
+ echo "\"${CMS_CONFIG}\" configuration not recognised"
+ exit 1
+ ;;
+esac
+
+make -j2 VERBOSE=1
+
+if [ "$CMS_CONFIG" == "NOTEST" ]; then
+ sudo make install VERBOSE=1
+ exit 0
+fi
+
+echo $(ls lib)
+echo $(ls pycryptosat)
+echo $(otool -L pycryptosat/pycryptosat.so)
+echo $(ldd pycryptosat/pycryptosat.so)
+echo $(otool -L lib/libcryptominisat5.so.5.0)
+echo $(ldd lib/libcryptominisat5.so.5.0)
+
+if [ "$CMS_CONFIG" = "ONLY_SIMPLE_STATIC" ] || [ "$CMS_CONFIG" = "STATIC" ] ; then
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
+ echo $(ldd ./cryptominisat5_simple)
+ ldd ./cryptominisat5_simple | grep "not a dynamic";
+ fi
+
+ if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
+ echo $(otool -L ./cryptominisat5_simple)
+ ! (otool -L ./cryptominisat5_simple | grep "libcryptominisat");
+ ! (otool -L ./cryptominisat5_simple | grep "libz");
+ ! (otool -L ./cryptominisat5_simple | grep "libboost");
+ fi
+fi
+
+if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then echo $(ldd ./cryptominisat5); fi
+if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then echo $(otool -L ./cryptominisat5); fi
+if [ "$CMS_CONFIG" = "STATIC" ] ; then
+ if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
+ echo $(ldd ./cryptominisat5)
+ ldd ./cryptominisat5 | grep "not a dynamic";
+ fi
+
+ if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
+ echo $(otool -L ./cryptominisat5)
+ ! (otool -L ./cryptominisat5 | grep "libcryptominisat");
+ ! (otool -L ./cryptominisat5 | grep "libz");
+ ! (otool -L ./cryptominisat5 | grep "libboost");
+ fi
+fi
+
+ctest -V
+sudo make install VERBOSE=1
+if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
+ echo $(sudo ldconfig)
+ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
+fi
+
+
+##################
+# setting up python environment
+##################
+
+which python
+python --version
+echo $PYTHONPATH
+if [ "$CMS_CONFIG" == "NORMAL_PYTHON2" ]; then
+ export MYPYTHON=python2
+else
+ export MYPYTHON=python3
+fi
+echo "MYPYTHON is '${MYPYTHON}'"
+which ${MYPYTHON}
+
+if [[ "$CMS_CONFIG" == "NORMAL" ]] || [[ "$CMS_CONFIG" == "NORMAL_PYTHON2" ]] || [[ "$CMS_CONFIG" == "SLOW_DEBUG" ]] || [[ "$CMS_CONFIG" == "LARGEMEM" ]] || [[ "$CMS_CONFIG" == "GAUSS" ]] ; then
+ echo "from __future__ import print_function
+import sys
+print(sys.path)
+" > check_path.py
+ ${MYPYTHON} check_path.py
+ echo $PYTHONPATH
+ export PYTHONPATH=$PYTHONPATH:/usr/lib/python3.4/site-packages
+ export PYTHONPATH=$PYTHONPATH:/usr/lib/python2.7/site-packages
+ echo $PYTHONPATH
+ ${MYPYTHON} check_path.py
+
+ (
+ cd pycryptosat/tests/
+ ${MYPYTHON} test_pycryptosat.py
+ )
+fi
+
+case $CMS_CONFIG in
+ WEB)
+ echo "1 2 0" | ./cryptominisat5 --sql 1 --zero-exit-status
+ ;;
+
+ SQLITE)
+ echo "1 2 0" | ./cryptominisat5 --sql 2 --zero-exit-status
+ ;;
+
+ M4RI)
+ echo "1 2 0" | ./cryptominisat5 --xor 1 --zero-exit-status
+ ;;
+
+ *)
+ echo "\"${CMS_CONFIG}\" Binary no extra testing (sql, xor, etc), skipping this part"
+ ;;
+esac
+
+if [ "$CMS_CONFIG" == "NORMAL" ] ; then
+ (
+ cd
+ ${MYPYTHON} -c "
+import pycryptosat
+a = pycryptosat.Solver()
+a.add_clause([1,2,3])
+print(a.solve())"
+ )
+fi
+
+
+
+# elimination checks
+# NOTE: minisat doesn't build with clang
+if [ "$CMS_CONFIG" == "NORMAL" ] && [ "$CXX" != "clang++" ] ; then
+ CMS_PATH="${BUILD_DIR}/cryptominisat5"
+
+ # building STP
+ cd "${BUILD_DIR}"
+ # minisat
+ git clone --depth 1 https://github.com/niklasso/minisat.git
+ cd minisat
+ mkdir -p build
+ cd build
+ cmake ..
+ make -j2
+ sudo make install VERBOSE=1
+ cd "${BUILD_DIR}"
+
+ # STP
+ cd "${BUILD_DIR}"
+ git clone --depth 1 https://github.com/stp/stp.git
+ cd stp
+ mkdir -p build
+ cd build
+ cmake ..
+ make -j2
+ sudo make install VERBOSE=1
+ cd "${BUILD_DIR}"
+fi
+
+
+#do fuzz testing
+if [ "$CMS_CONFIG" != "ONLY_SIMPLE" ] && [ "$CMS_CONFIG" != "ONLY_SIMPLE_STATIC" ] && [ "$CMS_CONFIG" != "WEB" ] && [ "$CMS_CONFIG" != "NOPYTHON" ] && [ "$CMS_CONFIG" != "COVERAGE" ] && [ "$CMS_CONFIG" != "INTREE_BUILD" ] && [ "$CMS_CONFIG" != "STATS" ] && [ "$CMS_CONFIG" != "SQLITE" ] ; then
+ cd ../scripts/fuzz/
+ which ${MYPYTHON}
+ ${MYPYTHON} ./fuzz_test.py --novalgrind --small --fuzzlim 30
+fi
+
+if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
+ case $CMS_CONFIG in
+ WEB)
+ #we are now in the main dir, ./src dir is here
+ cd ..
+ pwd
+
+ cd web
+ sudo apt-get install python-software-properties
+ sudo add-apt-repository -y ppa:chris-lea/node.js
+ sudo apt-get update
+ sudo apt-get install -y nodejs
+ ./install_web.sh
+ ;;
+
+ STATS)
+ ln -s ../scripts/build_scripts/* .
+ ln -s ../scripts/learn/* .
+ # ./test_id.sh
+ sudo apt-get install -y --force-yes graphviz
+ # sudo apt-get install -y --force-yes blas
+ # sudo pip3 install numpy
+ # sudo pip3 install scipy
+ # sudo pip3 install sklearn
+ # sudo pip3 install pandas
+ # ./test_predict.sh
+ ;;
+
+ COVERAGE)
+ #we are now in the main dir, ./src dir is here
+ cd ..
+ pwd
+
+ # capture coverage info
+ lcov --directory build/cmsat5-src/CMakeFiles/libcryptominisat5.dir --capture --output-file coverage.info
+
+ # filter out system and test code
+ lcov --remove coverage.info 'tests/*' '/usr/*' 'scripts/*' 'utils/*'--output-file coverage.info
+
+ # debug before upload
+ lcov --list coverage.info
+
+ # only attempt upload if $COVERTOKEN is set
+ if [ -n "$COVERTOKEN" ]; then
+ coveralls-lcov --repo-token "$COVERTOKEN" coverage.info # uploads to coveralls
+ fi
+ ;;
+
+ *)
+ echo "\"${CMS_CONFIG}\" No further testing"
+ ;;
+ esac
+fi
+
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/travis-install-cmake.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/travis-install-cmake.sh
new file mode 100755
index 000000000..7f65d3373
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/travis-install-cmake.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+# Copyright (C) 2014 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# This file wraps CMake invocation for TravisCI
+# so we can set different configurations via environment variables.
+
+set -e
+set -x
+
+wget http://www.cmake.org/files/v3.4/cmake-3.4.1.tar.gz
+tar -xzf cmake-3.4.1.tar.gz
+cd cmake-3.4.1/
+./configure > cmake_config_out.txt
+make -j2 > cmake_build_out.txt
+sudo make install > cmake_install_out.txt
+sudo update-alternatives --install /usr/bin/cmake cmake /usr/local/bin/cmake 1 --force
+cmake --version
+cd ..
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/travis-install-lcov.sh b/cryptominisat5/cryptominisat-5.6.3/scripts/travis-install-lcov.sh
new file mode 100755
index 000000000..04cc1aae7
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/travis-install-lcov.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+# Copyright (C) 2017 Mate Soos
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# This file wraps CMake invocation for TravisCI
+# so we can set different configurations via environment variables.
+
+sudo pip install cpp-coveralls
+wget http://ftp.de.debian.org/debian/pool/main/l/lcov/lcov_1.11.orig.tar.gz
+tar xf lcov_1.11.orig.tar.gz
+sudo make -C lcov-1.11/ install
+gem install coveralls-lcov
diff --git a/cryptominisat5/cryptominisat-5.6.3/scripts/xxd-alike.py b/cryptominisat5/cryptominisat-5.6.3/scripts/xxd-alike.py
new file mode 100755
index 000000000..3d2ce6c4d
--- /dev/null
+++ b/cryptominisat5/cryptominisat-5.6.3/scripts/xxd-alike.py
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2017, Martin Horenovsky
+# Copyright (c) 2018, Mate Soos
+
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+import sys
+
+PY3 = sys.version_info.major == 3
+
+input_name = sys.argv[1]
+output_path = sys.argv[2]
+output_name = input_name.replace('.', '_')
+
+
+# In python 3, opening file as rb will return bytes and iteration is per byte
+# In python 2, opening file as rb will return string and iteration is per char
+# and char need to be converted to bytes.
+# This function papers over the differences
+def convert(c):
+ if PY3:
+ return c
+ return ord(c)
+
+
+with open(input_name, 'rb') as file:
+ contents = file.read()
+
+
+with open(output_path, 'w') as out:
+ out.write('unsigned char {}[] = {{'.format(output_name))
+ first = True
+ for i, byte in enumerate(contents):
+ if not first:
+ out.write(', ')
+ first = False
+ if i % 12 == 0:
+ out.write('\n ')
+ out.write('0x{:02x}'.format(convert(byte)))
+
+ out.write(', 0x00')
+ out.write('\n};\n')
+
+ out.write('unsigned int {}_len = {};\n'.format(output_name, len(contents)))
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback