# Clone boolector instance 'b'
    bb = b.Clone()

    # Check sat
    res = b.Sat()
    # Check sat with limits
    #    res = b.Sat(100, 10000)
    #    res = b.Sat(lod_limit=100, sat_limit=10000)
    if res == b.SAT: print("result: SAT")
    else: print("result: UNSAT")

    # Get model or query assignments for nodes
    if res == b.SAT:
        print("Model:")
        # Get model and print to stdout
        b.Print_model()
        # Get model and print to file 'model.out'
#        b.Print_model("model.out")

# Query assignments
#        print("Query assignments:")
#        print("{} {}".format(_var.symbol, _var.assignment))
#        print("{} {}".format(_array.symbol, _array.assignment))
#        print("{} {}".format(_uf.symbol, _uf.assignment))

# Get matching node of _cond0 in clone 'bb'
    _cond0_matched = bb.Match(_cond0)
    # Assume
    bb.Assume(~_cond0_matched[1])
    bb.Assume(_cond0_matched[2])
    # Check sat
Exemple #2
0
        btor.Assert(ult)
        umulo = btor.Umulo(x, y)
        numulo = btor.Not(umulo)  # prevent overflow
        btor.Assert(numulo)

        res = btor.Sat()
        print("Expect: sat")
        print("Boolector: ", end='')
        if res == btor.SAT:
            print("sat")
        elif res == btor.UNSAT:
            print("unsat")
        else:
            print("unknown")
        print("")

        # prints "x: 00000100"
        print("assignment of {}: {}".format(x.symbol, x.assignment))
        # prints: "y: 00010101"
        print("assignment of {}: {}".format(y.symbol, y.assignment))
        print("")

        print("Print model in BTOR format:")
        btor.Print_model("btor")
        print("")
        print("Print model in SMT-LIBv2 format:")
        btor.Print_model("smt2")
        print("")
    except BoolectorException as e:
        print("Caught exception: " + str(e))