#!/usr/bin/env python3
|
|
|
|
from util import kSAT
|
|
from util import minisat as mSatU
|
|
import argparse
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("-i", "--instance", help="instance file, has to be in DIMACS format", type=str)
|
|
parser.add_argument("-r", "--result", help="minisat result file", type=str)
|
|
args = parser.parse_args()
|
|
|
|
instancePath = args.instance
|
|
if instancePath == None:
|
|
instancePath = str(input("Instance file: "))
|
|
|
|
minisatResultFile = args.result
|
|
if minisatResultFile == None:
|
|
minisatResultFile = str(input("Minisat result file: "))
|
|
|
|
print("Checking...")
|
|
print("Instance:\t%s" % instancePath)
|
|
print("Minisat result:\t%s" % minisatResultFile)
|
|
|
|
checkStr = __checkResult(instancePath, minisatResultFile)
|
|
|
|
print("check:\t\t%s" % checkStr)
|
|
|
|
|
|
def __checkResult(instancePath, minisatResultFile):
|
|
sat = kSAT.kSAT()
|
|
|
|
sat.readDIMACS(instancePath)
|
|
|
|
minisatResult = mSatU.readMinisatResult(minisatResultFile)
|
|
|
|
if minisatResult["satisfiable"]:
|
|
if sat.checkAssignment(minisatResult["assignments"]):
|
|
return "results do match"
|
|
else:
|
|
return "results do NOT match"
|
|
else:
|
|
return "unsatisfiable"
|
|
|
|
if __name__ == "__main__":
|
|
main()
|