mirror of
https://github.com/Z3Prover/z3
synced 2025-04-28 19:35:50 +00:00
old_params ==> front_end_params. Isolated abstract solver interface
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
62cc752fb6
commit
4c98b567e1
60 changed files with 491 additions and 295 deletions
|
@ -80,7 +80,7 @@ extern "C" {
|
|||
LOG_Z3_mk_solver_from_tactic(c, t);
|
||||
RESET_ERROR_CODE();
|
||||
Z3_solver_ref * s = alloc(Z3_solver_ref);
|
||||
s->m_solver = alloc(tactic2solver_api, to_tactic_ref(t));
|
||||
s->m_solver = alloc(tactic2solver, to_tactic_ref(t));
|
||||
s->m_solver->set_front_end_params(mk_c(c)->fparams());
|
||||
s->m_solver->init(mk_c(c)->m(), symbol::null);
|
||||
mk_c(c)->save_object(s);
|
||||
|
|
|
@ -1,67 +0,0 @@
|
|||
############################################
|
||||
# Copyright (c) 2012 Microsoft Corporation
|
||||
#
|
||||
# Z3 Polynomial interface
|
||||
#
|
||||
# Author: Leonardo de Moura (leonardo)
|
||||
############################################
|
||||
from z3 import *
|
||||
|
||||
class PolynomialManager:
|
||||
"""Polynomial Manager.
|
||||
"""
|
||||
def __init__(self, ctx=None):
|
||||
self.ctx = z3._get_ctx(ctx)
|
||||
self.manager = Z3_mk_polynomial_manager(self.ctx_ref())
|
||||
|
||||
def __del__(self):
|
||||
Z3_del_polynomial_manager(self.ctx_ref(), self.manager)
|
||||
|
||||
def ctx_ref(self):
|
||||
return self.ctx.ref()
|
||||
|
||||
def m(self):
|
||||
return self.manager
|
||||
|
||||
_main_pmanager = None
|
||||
def main_pmanager():
|
||||
"""Return a reference to the global Polynomial manager.
|
||||
"""
|
||||
global _main_pmanager
|
||||
if _main_pmanager == None:
|
||||
_main_pmanager = PolynomialManager()
|
||||
return _main_pmanager
|
||||
|
||||
def _get_pmanager(ctx):
|
||||
if ctx == None:
|
||||
return main_pmanager()
|
||||
else:
|
||||
return ctx
|
||||
|
||||
class Polynomial:
|
||||
"""Multivariate polynomials.
|
||||
"""
|
||||
def __init__(self, poly=None, m=None):
|
||||
self.pmanager = _get_pmanager(m)
|
||||
if poly == None:
|
||||
self.poly = Z3_mk_zero_polynomial(self.ctx_ref(), self.m())
|
||||
else:
|
||||
self.poly = poly
|
||||
Z3_polynomial_inc_ref(self.ctx_ref(), self.m(), self.poly)
|
||||
|
||||
def __del__(self):
|
||||
Z3_polynomial_dec_ref(self.ctx_ref(), self.m(), self.poly)
|
||||
|
||||
def m(self):
|
||||
return self.pmanager.m()
|
||||
|
||||
def ctx_ref(self):
|
||||
return self.pmanager.ctx_ref()
|
||||
|
||||
def __repr__(self):
|
||||
return Z3_polynomial_to_string(self.ctx_ref(), self.m(), self.poly)
|
||||
|
||||
# test
|
||||
p = Polynomial()
|
||||
print p
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue