# This file was automatically generated by SWIG (http://www.swig.org).
# Version 3.0.10
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.





from sys import version_info as _swig_python_version_info
if _swig_python_version_info >= (2, 7, 0):
    def swig_import_helper():
        import importlib
        pkg = __name__.rpartition('.')[0]
        mname = '.'.join((pkg, '_sat')).lstrip('.')
        try:
            return importlib.import_module(mname)
        except ImportError:
            return importlib.import_module('_sat')
    _sat = swig_import_helper()
    del swig_import_helper
elif _swig_python_version_info >= (2, 6, 0):
    def swig_import_helper():
        from os.path import dirname
        import imp
        fp = None
        try:
            fp, pathname, description = imp.find_module('_sat', [dirname(__file__)])
        except ImportError:
            import _sat
            return _sat
        if fp is not None:
            try:
                _mod = imp.load_module('_sat', fp, pathname, description)
            finally:
                fp.close()
            return _mod
    _sat = swig_import_helper()
    del swig_import_helper
else:
    import _sat
del _swig_python_version_info
try:
    _swig_property = property
except NameError:
    pass  # Python < 2.2 doesn't have 'property'.

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_setattr_nondynamic(self, class_type, name, value, static=1):
    if (name == "thisown"):
        return self.this.own(value)
    if (name == "this"):
        if type(value).__name__ == 'SwigPyObject':
            self.__dict__[name] = value
            return
    method = class_type.__swig_setmethods__.get(name, None)
    if method:
        return method(self, value)
    if (not static):
        if _newclass:
            object.__setattr__(self, name, value)
        else:
            self.__dict__[name] = value
    else:
        raise AttributeError("You cannot add attributes to %s" % self)


def _swig_setattr(self, class_type, name, value):
    return _swig_setattr_nondynamic(self, class_type, name, value, 0)


def _swig_getattr(self, class_type, name):
    if (name == "thisown"):
        return self.this.own()
    method = class_type.__swig_getmethods__.get(name, None)
    if method:
        return method(self)
    raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name))


def _swig_repr(self):
    try:
        strthis = "proxy of " + self.this.__repr__()
    except __builtin__.Exception:
        strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)

try:
    _object = object
    _newclass = 1
except __builtin__.Exception:
    class _object:
        pass
    _newclass = 0

PRIuPTR = _sat.PRIuPTR
PRIdPTR = _sat.PRIdPTR
LLU = _sat.LLU
LLO = _sat.LLO
LLX = _sat.LLX
false = _sat.false
true = _sat.true
OUTCOME_GENERIC_ERROR = _sat.OUTCOME_GENERIC_ERROR
OUTCOME_PARSER_ERROR = _sat.OUTCOME_PARSER_ERROR
OUTCOME_SYNTAX_ERROR = _sat.OUTCOME_SYNTAX_ERROR
OUTCOME_FILE_ERROR = _sat.OUTCOME_FILE_ERROR
OUTCOME_SUCCESS_REQUIRED_HELP = _sat.OUTCOME_SUCCESS_REQUIRED_HELP
OUTCOME_SUCCESS = _sat.OUTCOME_SUCCESS

def Object_destroy(arg1: 'Object_ptr', arg: 'void *') -> "void":
    """Object_destroy(Object_ptr arg1, void * arg)"""
    return _sat.Object_destroy(arg1, arg)

def Object_copy(arg1: 'Object_ptr const') -> "Object_ptr":
    """Object_copy(Object_ptr const arg1) -> Object_ptr"""
    return _sat.Object_copy(arg1)
NUSMV_HAVE_INCREMENTAL_SAT = _sat.NUSMV_HAVE_INCREMENTAL_SAT

def Sat_CreateNonIncSolver(satSolver: 'char const *') -> "SatSolver_ptr":
    """Sat_CreateNonIncSolver(char const * satSolver) -> SatSolver_ptr"""
    return _sat.Sat_CreateNonIncSolver(satSolver)

def Sat_CreateNonIncProofSolver(satSolver: 'char const *') -> "SatSolver_ptr":
    """Sat_CreateNonIncProofSolver(char const * satSolver) -> SatSolver_ptr"""
    return _sat.Sat_CreateNonIncProofSolver(satSolver)

def Sat_CreateIncSolver(satSolver: 'char const *') -> "SatIncSolver_ptr":
    """Sat_CreateIncSolver(char const * satSolver) -> SatIncSolver_ptr"""
    return _sat.Sat_CreateIncSolver(satSolver)

def Sat_CreateIncProofSolver(satSolver: 'char const *') -> "SatIncSolver_ptr":
    """Sat_CreateIncProofSolver(char const * satSolver) -> SatIncSolver_ptr"""
    return _sat.Sat_CreateIncProofSolver(satSolver)

def Sat_NormalizeSatSolverName(solverName: 'char const *') -> "char const *":
    """Sat_NormalizeSatSolverName(char const * solverName) -> char const *"""
    return _sat.Sat_NormalizeSatSolverName(solverName)

def Sat_PrintAvailableSolvers(file: 'FILE *') -> "void":
    """Sat_PrintAvailableSolvers(FILE * file)"""
    return _sat.Sat_PrintAvailableSolvers(file)

def Sat_GetAvailableSolversString() -> "char *":
    """Sat_GetAvailableSolversString() -> char *"""
    return _sat.Sat_GetAvailableSolversString()
SAT_SOLVER_INTERNAL_ERROR = _sat.SAT_SOLVER_INTERNAL_ERROR
SAT_SOLVER_TIMEOUT = _sat.SAT_SOLVER_TIMEOUT
SAT_SOLVER_MEMOUT = _sat.SAT_SOLVER_MEMOUT
SAT_SOLVER_SATISFIABLE_PROBLEM = _sat.SAT_SOLVER_SATISFIABLE_PROBLEM
SAT_SOLVER_UNSATISFIABLE_PROBLEM = _sat.SAT_SOLVER_UNSATISFIABLE_PROBLEM
SAT_SOLVER_UNAVAILABLE = _sat.SAT_SOLVER_UNAVAILABLE
class TermFactoryCallbacks(_object):
    """Proxy of C TermFactoryCallbacks_TAG struct."""

    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, TermFactoryCallbacks, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, TermFactoryCallbacks, name)
    __repr__ = _swig_repr
    __swig_setmethods__["make_false"] = _sat.TermFactoryCallbacks_make_false_set
    __swig_getmethods__["make_false"] = _sat.TermFactoryCallbacks_make_false_get
    if _newclass:
        make_false = _swig_property(_sat.TermFactoryCallbacks_make_false_get, _sat.TermFactoryCallbacks_make_false_set)
    __swig_setmethods__["make_true"] = _sat.TermFactoryCallbacks_make_true_set
    __swig_getmethods__["make_true"] = _sat.TermFactoryCallbacks_make_true_get
    if _newclass:
        make_true = _swig_property(_sat.TermFactoryCallbacks_make_true_get, _sat.TermFactoryCallbacks_make_true_set)
    __swig_setmethods__["make_and"] = _sat.TermFactoryCallbacks_make_and_set
    __swig_getmethods__["make_and"] = _sat.TermFactoryCallbacks_make_and_get
    if _newclass:
        make_and = _swig_property(_sat.TermFactoryCallbacks_make_and_get, _sat.TermFactoryCallbacks_make_and_set)
    __swig_setmethods__["make_or"] = _sat.TermFactoryCallbacks_make_or_set
    __swig_getmethods__["make_or"] = _sat.TermFactoryCallbacks_make_or_get
    if _newclass:
        make_or = _swig_property(_sat.TermFactoryCallbacks_make_or_get, _sat.TermFactoryCallbacks_make_or_set)
    __swig_setmethods__["make_not"] = _sat.TermFactoryCallbacks_make_not_set
    __swig_getmethods__["make_not"] = _sat.TermFactoryCallbacks_make_not_get
    if _newclass:
        make_not = _swig_property(_sat.TermFactoryCallbacks_make_not_get, _sat.TermFactoryCallbacks_make_not_set)
    __swig_setmethods__["make_var"] = _sat.TermFactoryCallbacks_make_var_set
    __swig_getmethods__["make_var"] = _sat.TermFactoryCallbacks_make_var_get
    if _newclass:
        make_var = _swig_property(_sat.TermFactoryCallbacks_make_var_get, _sat.TermFactoryCallbacks_make_var_set)

    def __init__(self):
        """__init__(TermFactoryCallbacks_TAG self) -> TermFactoryCallbacks"""
        this = _sat.new_TermFactoryCallbacks()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _sat.delete_TermFactoryCallbacks
    __del__ = lambda self: None
TermFactoryCallbacks_swigregister = _sat.TermFactoryCallbacks_swigregister
TermFactoryCallbacks_swigregister(TermFactoryCallbacks)


def SatSolver_destroy(arg1: 'SatSolver_ptr') -> "void":
    """SatSolver_destroy(SatSolver_ptr arg1)"""
    return _sat.SatSolver_destroy(arg1)

def SatSolver_get_permanent_group(arg1: 'SatSolver_ptr const') -> "SatSolverGroup":
    """SatSolver_get_permanent_group(SatSolver_ptr const arg1) -> SatSolverGroup"""
    return _sat.SatSolver_get_permanent_group(arg1)

def SatSolver_add(arg1: 'SatSolver_ptr const', cnfProb: 'Be_Cnf_ptr const', group: 'SatSolverGroup') -> "void":
    """SatSolver_add(SatSolver_ptr const arg1, Be_Cnf_ptr const cnfProb, SatSolverGroup group)"""
    return _sat.SatSolver_add(arg1, cnfProb, group)

def SatSolver_set_polarity(arg1: 'SatSolver_ptr const', cnfProb: 'Be_Cnf_ptr const', polarity: 'int', group: 'SatSolverGroup') -> "void":
    """SatSolver_set_polarity(SatSolver_ptr const arg1, Be_Cnf_ptr const cnfProb, int polarity, SatSolverGroup group)"""
    return _sat.SatSolver_set_polarity(arg1, cnfProb, polarity, group)

def SatSolver_set_preferred_variables(arg1: 'SatSolver_ptr const', cnfVars: 'Slist_ptr const') -> "void":
    """SatSolver_set_preferred_variables(SatSolver_ptr const arg1, Slist_ptr const cnfVars)"""
    return _sat.SatSolver_set_preferred_variables(arg1, cnfVars)

def SatSolver_get_conflicts(arg1: 'SatSolver_ptr const') -> "Slist_ptr":
    """SatSolver_get_conflicts(SatSolver_ptr const arg1) -> Slist_ptr"""
    return _sat.SatSolver_get_conflicts(arg1)

def SatSolver_clear_preferred_variables(arg1: 'SatSolver_ptr const') -> "void":
    """SatSolver_clear_preferred_variables(SatSolver_ptr const arg1)"""
    return _sat.SatSolver_clear_preferred_variables(arg1)

def SatSolver_solve_all_groups(arg1: 'SatSolver_ptr const') -> "SatSolverResult":
    """SatSolver_solve_all_groups(SatSolver_ptr const arg1) -> SatSolverResult"""
    return _sat.SatSolver_solve_all_groups(arg1)

def SatSolver_solve_all_groups_assume(arg1: 'SatSolver_ptr const', assumptions: 'Slist_ptr') -> "SatSolverResult":
    """SatSolver_solve_all_groups_assume(SatSolver_ptr const arg1, Slist_ptr assumptions) -> SatSolverResult"""
    return _sat.SatSolver_solve_all_groups_assume(arg1, assumptions)

def SatSolver_get_model(arg1: 'SatSolver_ptr const') -> "Slist_ptr":
    """SatSolver_get_model(SatSolver_ptr const arg1) -> Slist_ptr"""
    return _sat.SatSolver_get_model(arg1)

def SatSolver_get_cnf_var(arg1: 'SatSolver_ptr const', var: 'int') -> "int":
    """SatSolver_get_cnf_var(SatSolver_ptr const arg1, int var) -> int"""
    return _sat.SatSolver_get_cnf_var(arg1, var)

def SatSolver_set_random_mode(arg1: 'SatSolver_ptr', seed: 'double') -> "void":
    """SatSolver_set_random_mode(SatSolver_ptr arg1, double seed)"""
    return _sat.SatSolver_set_random_mode(arg1, seed)

def SatSolver_set_polarity_mode(arg1: 'SatSolver_ptr', mode: 'int') -> "void":
    """SatSolver_set_polarity_mode(SatSolver_ptr arg1, int mode)"""
    return _sat.SatSolver_set_polarity_mode(arg1, mode)

def SatSolver_get_polarity_mode(arg1: 'SatSolver_ptr const') -> "int":
    """SatSolver_get_polarity_mode(SatSolver_ptr const arg1) -> int"""
    return _sat.SatSolver_get_polarity_mode(arg1)

def SatSolver_get_name(arg1: 'SatSolver_ptr const') -> "char const *":
    """SatSolver_get_name(SatSolver_ptr const arg1) -> char const *"""
    return _sat.SatSolver_get_name(arg1)

def SatSolver_get_last_solving_time(arg1: 'SatSolver_ptr const') -> "long":
    """SatSolver_get_last_solving_time(SatSolver_ptr const arg1) -> long"""
    return _sat.SatSolver_get_last_solving_time(arg1)

def SatSolver_curr_itp_group(arg1: 'SatSolver_ptr const') -> "SatSolverItpGroup":
    """SatSolver_curr_itp_group(SatSolver_ptr const arg1) -> SatSolverItpGroup"""
    return _sat.SatSolver_curr_itp_group(arg1)

def SatSolver_new_itp_group(arg1: 'SatSolver_ptr const') -> "SatSolverItpGroup":
    """SatSolver_new_itp_group(SatSolver_ptr const arg1) -> SatSolverItpGroup"""
    return _sat.SatSolver_new_itp_group(arg1)

def SatSolver_extract_interpolant(arg1: 'SatSolver_ptr const', nof_ga_groups: 'int', ga_groups: 'SatSolverItpGroup *', callbacks: 'TermFactoryCallbacks', user_data: 'void *') -> "void *":
    """SatSolver_extract_interpolant(SatSolver_ptr const arg1, int nof_ga_groups, SatSolverItpGroup * ga_groups, TermFactoryCallbacks callbacks, void * user_data) -> void *"""
    return _sat.SatSolver_extract_interpolant(arg1, nof_ga_groups, ga_groups, callbacks, user_data)

def SatIncSolver_destroy(arg1: 'SatIncSolver_ptr') -> "void":
    """SatIncSolver_destroy(SatIncSolver_ptr arg1)"""
    return _sat.SatIncSolver_destroy(arg1)

def SatIncSolver_create_group(arg1: 'SatIncSolver_ptr const') -> "SatSolverGroup":
    """SatIncSolver_create_group(SatIncSolver_ptr const arg1) -> SatSolverGroup"""
    return _sat.SatIncSolver_create_group(arg1)

def SatIncSolver_destroy_group(arg1: 'SatIncSolver_ptr const', group: 'SatSolverGroup') -> "void":
    """SatIncSolver_destroy_group(SatIncSolver_ptr const arg1, SatSolverGroup group)"""
    return _sat.SatIncSolver_destroy_group(arg1, group)

def SatIncSolver_move_to_permanent_and_destroy_group(arg1: 'SatIncSolver_ptr const', group: 'SatSolverGroup') -> "void":
    """SatIncSolver_move_to_permanent_and_destroy_group(SatIncSolver_ptr const arg1, SatSolverGroup group)"""
    return _sat.SatIncSolver_move_to_permanent_and_destroy_group(arg1, group)

def SatIncSolver_solve_groups(arg1: 'SatIncSolver_ptr const', groups: 'Olist_ptr const') -> "SatSolverResult":
    """SatIncSolver_solve_groups(SatIncSolver_ptr const arg1, Olist_ptr const groups) -> SatSolverResult"""
    return _sat.SatIncSolver_solve_groups(arg1, groups)

def SatIncSolver_solve_without_groups(arg1: 'SatIncSolver_ptr const', groups: 'Olist_ptr const') -> "SatSolverResult":
    """SatIncSolver_solve_without_groups(SatIncSolver_ptr const arg1, Olist_ptr const groups) -> SatSolverResult"""
    return _sat.SatIncSolver_solve_without_groups(arg1, groups)

def SatIncSolver_cast_to_SatSolver_ptr(ptr: 'SatIncSolver_ptr') -> "SatSolver_ptr":
    """SatIncSolver_cast_to_SatSolver_ptr(SatIncSolver_ptr ptr) -> SatSolver_ptr"""
    return _sat.SatIncSolver_cast_to_SatSolver_ptr(ptr)
# This file is compatible with both classic and new-style classes.


