Ejemplo n.º 1
0
    def solve(self):
        self._query_storage += smt_helper.make_exit()
        self._query_storage.flush()

        file_name = '{file_prefix}_{index}.smt2'.format(file_prefix=self.__file_prefix,
                                                        index=str(self.__cur_index))

        logging.info('copying {src} into {dst}'.format(src=self._file_name, dst=file_name))
        logging.info(shutil.copyfile(self._file_name, file_name))

        self.__cur_index += 1
        return None  # always return UNSAT
Ejemplo n.º 2
0
    def solve(self):
        self._logger.info('solving ' + self._file_name)

        self._query_storage += smt_helper.make_exit()
        self._query_storage.flush()  # i know query_storage.flush() exists
        #change the name of file and z3_cmd if necessary
        ret, out, err = execute_shell(self._z3_cmd)

        self._logger.debug('solver returned: \n' + out)

        out_lines = [s.strip() for s in out.splitlines() if s]
        if ret == 1 and out_lines[0].strip() != 'unsat':
            assert 0, 'error while executing z3: ret: {ret}\n' \
                      'out:{out}\n' \
                      'err:{err}\n'.format(ret=str(ret),
                                           out=out,
                                           err=err)

        if out_lines[0] == 'sat':
            return out_lines[1:]
        else:
            return None
Ejemplo n.º 3
0
    def solve(self):
        self._logger.info('solving ' + self._file_name)

        self._query_storage += smt_helper.make_exit()
        self._query_storage.flush()  # i know query_storage.flush() exists
        #change the name of file and z3_cmd if necessary
        ret, out, err = execute_shell(self._z3_cmd)

        self._logger.debug('solver returned: \n' + out)

        out_lines = [s.strip() for s in out.splitlines() if s]
        if ret == 1 and out_lines[0].strip() != 'unsat':
            assert 0, 'error while executing z3: ret: {ret}\n' \
                      'out:{out}\n' \
                      'err:{err}\n'.format(ret=str(ret),
                                           out=out,
                                           err=err)

        if out_lines[0] == 'sat':
            return out_lines[1:]
        else:
            return None