#!/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()
