File: sat_unsat.sh

package info (click to toggle)
cryptominisat 5.11.4%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 4,432 kB
  • sloc: cpp: 55,148; ansic: 9,642; python: 8,899; sh: 1,336; php: 477; sql: 403; javascript: 173; xml: 34; makefile: 15
file content (95 lines) | stat: -rwxr-xr-x 2,957 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/bin/bash

# Copyright (C) 2020  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

function run_tmp {
    # cp stuff.cnf tmp
    ./cryptominisat5 --zero-exit-status --dumpdecformodel b tmp drat.out > out.sat
    grep "c conflicts" out.sat
    set +e
    a=$(grep "s SATIS" out.sat)
    retval=$?
    set -e
    if [[ retval -eq 1 ]]; then
        echo "-> UNSAT"
        ../utils/cnf-utils/xor_to_cnf.py tmp final.cnf
        ./tests/drat-trim/drat-trim final.cnf drat.out |tee out.drat
        grep "VERIFIED" out.drat
        grep "resol.*steps" out.drat
        continue
    fi
    echo "-> SAT"

    #cat out.sat
    rm final.cnf
    touch final.cnf
    cat tmp >> final.cnf
    cat b >> final.cnf
    cp final.cnf final_without_ban.cnf
    ../utils/cnf-utils/xor_to_cnf.py final_without_ban.cnf final_without_ban.cnf2
    mv final_without_ban.cnf2 final_without_ban.cnf
    grep ^v out.sat | sed "s/v//" | tr -d "\n" | sed "s/  / /g" | sed -e "s/ -/X/g" -e "s/ /Y/g" | sed "s/X/ /g" | sed -E "s/Y([1-9])/ -\1/g" | sed "s/Y0/ 0\n/" >> final.cnf
    ../utils/cnf-utils/xor_to_cnf.py final.cnf final2.cnf
    mv final2.cnf final.cnf
    ./cryptominisat5 --zero-exit-status --verb 0 final.cnf | tee out.unsat
    set +e
    a=$(grep "s UNSATIS" out.unsat)
    retval=$?
    set -e
    if [[ retval -eq 1 ]]; then
        echo "GRAVE ERROR!"
        exit -1
    fi

    ./tests/drat-trim/drat-trim final.cnf drat.out |tee out.drat
    grep "VERIFIED" out.drat || exit -1
    grep "resol.*steps" out.drat
}

if [[ $1 == "" ]]; then
    echo "No arguments, standard run"
    for(( c=1; c < 10000; c++ ))
    do
        r=$((1 + RANDOM % 999999))
        echo ""
        echo "------ Run $c random $r -----------"
        # ../utils/cnf-utils/cnf-fuzz-brummayer.py -s $r -l 3 -i 90 -I 180  > tmp
        ../utils/cnf-utils/cnf-fuzz-brummayer.py -s $r > tmp
        run_tmp
    done
else
    if [[ $1 == "--file" ]]; then
        echo "Using file $2"
        rm -f tmp.gz
        rm -f tmp
        cp $2 tmp.gz
        gunzip tmp.gz
        run_tmp
    else
        echo "Seed run"
        ../utils/cnf-utils/cnf-fuzz-brummayer.py -s $1 -l 3 -i 90 -I 180  > tmp
        run_tmp
        exit 0
    fi
fi