3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-14 23:05:26 +00:00

Z3 sources

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
Leonardo de Moura 2012-10-02 11:35:25 -07:00
parent 3f9edad676
commit e9eab22e5c
1186 changed files with 381859 additions and 0 deletions

61
lib/nlsat_evaluator.h Normal file
View file

@ -0,0 +1,61 @@
/*++
Copyright (c) 2012 Microsoft Corporation
Module Name:
nlsat_evaluator.h
Abstract:
Helper class for computing the infeasible intervals of an
arithmetic literal.
Author:
Leonardo de Moura (leonardo) 2012-01-12.
Revision History:
--*/
#ifndef _NLSAT_EVALUATOR_H_
#define _NLSAT_EVALUATOR_H_
#include"nlsat_types.h"
#include"nlsat_assignment.h"
#include"nlsat_interval_set.h"
namespace nlsat {
class evaluator {
struct imp;
imp * m_imp;
public:
evaluator(assignment const & x2v, pmanager & pm, small_object_allocator & allocator);
~evaluator();
interval_set_manager & ism() const;
/**
\brief Evaluate the given literal in the current model.
All variables in the atom must be assigned.
The result is true if the literal is satisfied, and false otherwise.
*/
bool eval(atom * a, bool neg);
/**
\brief Return the infeasible interval set for the given literal.
All but the a->max_var() must be assigned in the current model.
Let x be a->max_var(). Then, the resultant set specifies which
values of x falsify the given literal.
*/
interval_set_ref infeasible_intervals(atom * a, bool neg);
void push();
void pop(unsigned num_scopes);
};
};
#endif