Example #1
0
    opAssoc.LEFT,
), (
    aop1,
    2,
    opAssoc.LEFT,
), (
    aop2,
    2,
    opAssoc.LEFT,
)])

pred = Forward()
stmt = Forward()

stmt << (const | Group(expr + rop + expr) | (LPAR + stmt + RPAR))
pred << ((BOps + LPAR + Group(delimitedList(pred)) + RPAR).setParseAction(
    lambda s, l, t: [joinit(t[1], t[0])] if t[0] != '!' else [['!', t[1][0]]])
         | stmt)

if __name__ == '__main__':
    goal = z3.Goal()
    goal.add(
        z3.parse_smt2_string(
            smtlib2_string_from_file(
                'assert', sys.argv[1],
                "1" if len(sys.argv) > 2 and sys.argv[2] == "0" else "0")))
    print(
        flatString(
            pred.parseString(str(z3.simplify(goal.as_expr())),
                             parseAll=True).asList()[0]))
Example #2
0
        all_vars = vars_from_smtlib(smtdata)
        vals = all_vars
        for var in all_vars.items():
            sys.stderr.write('  [+] Value of %s (%s) :: ' % var)
            vals[var[0]] = raw_input()
            return 'SAT @ MANUAL\n%s' % '\n'.join('%s : %s' % v for v in vals.items())

if __name__ == '__main__':
    error = True
    acquired = 0

    vals = dict()
    q = mp.Queue()

    smtdata = (smtlib2_string_from_file('define-fun goal () Bool',
                                        sys.argv[1], sys.argv[3] if len(sys.argv) > 3 else "1",
                                        sys.argv[2], sys.argv[4] if len(sys.argv) > 4 else "1")
               + "\n(assert (not goal))")

    sema = mp.BoundedSemaphore(3)
    jobs = [('str', mp.Process(target=runZ3Str2, args=(sema, smtdata, q))),
            ('z3', mp.Process(target=runZ3, args=(sema, smtdata, q))),
            ('cvc4', mp.Process(target=runCVC4, args=(sema, z3str_to_cvc4(smtdata), q)))]
    [j.start() for (p, j) in jobs]
    sleep(epsilon)

    final_result = ''
    try:
        # If we still have error, and have other verifiers running
        while error and acquired < len(jobs):
            acquired += 1
Example #3
0
#!/usr/bin/python

import sys

import z3

from mcf2smtlib import string_from_z3_model, smtlib2_string_from_file

if __name__ == '__main__':
    solver = z3.Solver()
    solver.add(
        z3.parse_smt2_string(
            smtlib2_string_from_file(
                'assert', sys.argv[1],
                sys.argv[2] if len(sys.argv) > 2 else "1")))

    if solver.check() == z3.unsat:
        print("UNSAT")
    else:
        print(string_from_z3_model(solver.model()))
Example #4
0
        for var in all_vars.items():
            sys.stderr.write('  [+] Value of %s (%s) :: ' % var)
            vals[var[0]] = raw_input()
        return 'SAT @ MANUAL\n%s' % '\n'.join('%s : %s' % v
                                              for v in vals.items())


if __name__ == '__main__':
    error = True
    acquired = 0

    vals = dict()
    q = mp.Queue()

    smtdata = (
        smtlib2_string_from_file('define-fun goal () Bool', sys.argv[1],
                                 sys.argv[2] if len(sys.argv) > 2 else "1") +
        '\n(assert (not goal))')

    sema = mp.BoundedSemaphore(3)
    jobs = [('str', mp.Process(target=runZ3Str2, args=(sema, smtdata, q))),
            ('z3', mp.Process(target=runZ3, args=(sema, smtdata, q))),
            ('cvc4',
             mp.Process(target=runCVC4,
                        args=(sema, z3str_to_cvc4(smtdata), q)))]
    [j.start() for (p, j) in jobs]
    sleep(epsilon)

    final_result = ''
    try:
        # If we still have error, and have other verifiers running
        while error and acquired < len(jobs):
Example #5
0
#!/usr/bin/env python

import subprocess
import sys

from mcf2smtlib import string_from_cvc4_model, smtlib2_string_from_file

if __name__ == '__main__':
    smtdata = (smtlib2_string_from_file("define-fun goal () Bool",
                                        sys.argv[1], sys.argv[3] if len(sys.argv) > 3 else "1",
                                        sys.argv[2], sys.argv[4] if len(sys.argv) > 4 else "1")
               + "\n(assert (not goal))")

    cvc4_in = ('\n'.join([
                 '(set-option :produce-models true)',
                 '(set-option :strings-fmf true)',
                 '(set-logic ALL_SUPPORTED)'])
               + smtdata
               + '\n(check-sat)\n')
    cvc4 = subprocess.Popen(['cvc4', '--rewrite-divk', '--lang', 'smt'],
                            stdin=subprocess.PIPE,
                            stdout=subprocess.PIPE,
                            stderr=sys.stderr)
    cvc4.stdin.write(cvc4_in)
    cvc4_res = cvc4.stdout.readline().strip()

    if cvc4_res == 'unsat':
        print("UNSAT")
    elif cvc4_res == 'sat' or 'valid':
        print(string_from_cvc4_model(cvc4))
    else:
Example #6
0
#!/usr/bin/python

import sys

import z3

from mcf2smtlib import string_from_z3_model, smtlib2_string_from_file

if __name__ == '__main__':
    solver = z3.Solver()
    solver.add(z3.parse_smt2_string(smtlib2_string_from_file('assert', sys.argv[1], sys.argv[2] if len(sys.argv) > 2 else "1")))

    if solver.check() == z3.unsat:
        print("UNSAT")
    else:
        print(string_from_z3_model(solver.model()))
Example #7
0
        for var in all_vars.items():
            sys.stderr.write('  [+] Value of %s (%s) :: ' % var)
            vals[var[0]] = raw_input()
            return 'SAT @ MANUAL\n%s' % '\n'.join('%s : %s' % v
                                                  for v in vals.items())


if __name__ == '__main__':
    error = True
    acquired = 0

    vals = dict()
    q = mp.Queue()

    smtdata = (smtlib2_string_from_file(
        'define-fun goal () Bool', sys.argv[1],
        sys.argv[3] if len(sys.argv) > 3 else "1", sys.argv[2],
        sys.argv[4] if len(sys.argv) > 4 else "1") + "\n(assert (not goal))")

    sema = mp.BoundedSemaphore(3)
    jobs = [('str', mp.Process(target=runZ3Str2, args=(sema, smtdata, q))),
            ('z3', mp.Process(target=runZ3, args=(sema, smtdata, q))),
            ('cvc4',
             mp.Process(target=runCVC4,
                        args=(sema, z3str_to_cvc4(smtdata), q)))]
    [j.start() for (p, j) in jobs]
    sleep(epsilon)

    final_result = ''
    try:
        # If we still have error, and have other verifiers running
        while error and acquired < len(jobs):
Example #8
0
let << ( pred
       | (LPAR + Suppress('let') + LPAR + LPAR + term + (expr | pred) + RPAR + RPAR + let + RPAR).setParseAction(let_action))

if __name__ == '__main__':
    with open(sys.argv[1]) as f:
        mcf = f.readlines()
    mcf = (mcf[0] if len(sys.argv) > 2 and sys.argv[2] == '0' else mcf[2]).strip()
    print(mcf)
    sys.exit(0)

    # ---------------------------------------------------------------
    # FIXME: No simplification for now. Weird __ufSS output from CVC4
    # FIXME: Replace CVC string functions with the new MCF format

    smtdata = z3str_to_cvc4(smtlib2_string_from_file("simplify", sys.argv[1], "1" if len(sys.argv) > 2 and sys.argv[2] == "0" else "0"))

    cvc4_in = ('\n'.join([
                 '(set-option :produce-models true)',
                 '(set-option :strings-fmf true)',
                 '(set-logic ALL_SUPPORTED)'])
               + smtdata + '\n')
    cvc4 = subprocess.Popen(['cvc4', '--lang', 'smt', '--rewrite-divk', '--strings-exp'],
                            stdin=subprocess.PIPE,
                            stdout=subprocess.PIPE,
                            stderr=sys.stderr)
    cvc4.stdin.write(cvc4_in)
    cvc4_res = cvc4.stdout.readline().strip()

    print(cvc4_in)
    print(cvc4_res)
Example #9
0
#!/usr/bin/env python

import subprocess
import sys

from mcf2smtlib import z3str_to_cvc4, string_from_cvc4_model, smtlib2_string_from_file

if __name__ == '__main__':
    smtdata = z3str_to_cvc4(smtlib2_string_from_file('assert', sys.argv[1], sys.argv[2] if len(sys.argv) > 2 else "1"))

    cvc4_in = ('\n'.join([
                 '(set-option :produce-models true)',
                 '(set-option :strings-fmf true)',
                 '(set-logic ALL_SUPPORTED)'])
               + smtdata
               + '\n(check-sat)\n')
    cvc4 = subprocess.Popen(['cvc4', '--lang', 'smt', '--rewrite-divk', '--strings-exp'],
                            stdin=subprocess.PIPE,
                            stdout=subprocess.PIPE,
                            stderr=sys.stderr)
    cvc4.stdin.write(cvc4_in)
    cvc4_res = cvc4.stdout.readline().strip()

    if cvc4_res == 'unsat':
        print("UNSAT")
    elif cvc4_res == 'sat' or cvc4_res == 'valid':
        print(string_from_cvc4_model(cvc4))
    else:
        print("ERROR")
Example #10
0
#!/usr/bin/python

import subprocess
import sys

from mcf2smtlib import z3str_to_cvc4, string_from_cvc4_model, smtlib2_string_from_file

if __name__ == '__main__':
    smtdata = z3str_to_cvc4(smtlib2_string_from_file('assert', sys.argv[1], sys.argv[2] if len(sys.argv) > 2 else "1"))

    cvc4_in = ('\n'.join([
                 '(set-option :produce-models true)',
                 '(set-option :strings-fmf true)',
                 '(set-logic ALL_SUPPORTED)'])
               + smtdata
               + '\n(check-sat)\n')
    cvc4 = subprocess.Popen(['cvc4', '--lang', 'smt', '--rewrite-divk', '--strings-exp'],
                            stdin=subprocess.PIPE,
                            stdout=subprocess.PIPE,
                            stderr=sys.stderr)
    cvc4.stdin.write(cvc4_in)
    cvc4_res = cvc4.stdout.readline().strip()

    if cvc4_res == 'unsat':
        print("UNSAT")
    elif cvc4_res == 'sat' or cvc4_res == 'valid':
        print(string_from_cvc4_model(cvc4))
    else:
        print("ERROR")
Example #11
0
if __name__ == '__main__':
    with open(sys.argv[1]) as f:
        mcf = f.readlines()
    mcf = (mcf[0]
           if len(sys.argv) > 2 and sys.argv[2] == '0' else mcf[2]).strip()
    print(mcf)
    sys.exit(0)

    # ---------------------------------------------------------------
    # FIXME: No simplification for now. Weird __ufSS output from CVC4
    # FIXME: Replace CVC string functions with the new MCF format

    smtdata = z3str_to_cvc4(
        smtlib2_string_from_file(
            "simplify", sys.argv[1],
            "1" if len(sys.argv) > 2 and sys.argv[2] == "0" else "0"))

    cvc4_in = ('\n'.join([
        '(set-option :produce-models true)', '(set-option :strings-fmf true)',
        '(set-logic ALL_SUPPORTED)'
    ]) + smtdata + '\n')
    cvc4 = subprocess.Popen(
        ['cvc4', '--lang', 'smt', '--rewrite-divk', '--strings-exp'],
        stdin=subprocess.PIPE,
        stdout=subprocess.PIPE,
        stderr=sys.stderr)
    cvc4.stdin.write(cvc4_in)
    cvc4_res = cvc4.stdout.readline().strip()

    print(cvc4_in)
Example #12
0
        sys.stderr.write('[>] Please provide a model (quote the string values) :\n')
        all_vars = vars_from_smtlib(smtdata)
        vals = all_vars
        for var in all_vars.items():
            sys.stderr.write('  [+] Value of %s (%s) :: ' % var)
            vals[var[0]] = raw_input()
            return 'SAT @ MANUAL\n%s' % '\n'.join('%s : %s' % v for v in vals.items())

if __name__ == '__main__':
    error = True
    acquired = 0

    vals = dict()
    q = mp.Queue()

    smtdata = smtlib2_string_from_file('assert', sys.argv[1], sys.argv[2] if len(sys.argv) > 2 else "1")

    sema = mp.BoundedSemaphore(3)
    jobs = [('str', mp.Process(target=runZ3Str2, args=(sema, smtdata, q))),
            ('z3', mp.Process(target=runZ3, args=(sema, smtdata, q))),
            ('cvc4', mp.Process(target=runCVC4, args=(sema, z3str_to_cvc4(smtdata), q)))]
    [j.start() for (p, j) in jobs]
    sleep(epsilon)

    final_result = ''
    try:
        # If we still have error, and have other verifiers running
        while error and acquired < len(jobs):
            acquired += 1
            sema_status = sema.acquire(timeout=timeout)
            if not sema_status:
Example #13
0
#!/usr/bin/python

import sys

import z3

from mcf2smtlib import string_from_z3_model, smtlib2_string_from_file

if __name__ == '__main__':
    solver = z3.Solver()
    solver.add(z3.parse_smt2_string(smtlib2_string_from_file('define-fun goal () Bool', sys.argv[1], sys.argv[2] if len(sys.argv) > 2 else "1")
                                    + "\n(assert (not goal))"))

    if solver.check() == z3.unsat:
        print("VALID")
    else:
        print(string_from_z3_model(solver.model()))
Example #14
0
#!/usr/bin/env python

import sys

import z3

from mcf2smtlib import string_from_z3_model, smtlib2_string_from_file

if __name__ == '__main__':
    solver = z3.Solver()
    solver.add(z3.parse_smt2_string(smtlib2_string_from_file('assert', sys.argv[1], sys.argv[2] if len(sys.argv) > 2 else "1")))

    if solver.check() == z3.unsat:
        print("UNSAT")
    else:
        print(string_from_z3_model(solver.model()))