mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 20:05:51 +00:00
separate dependencies for qe_lite
This commit is contained in:
parent
2bcc814031
commit
08294d62e5
16 changed files with 26 additions and 16 deletions
9
src/qe/lite/CMakeLists.txt
Normal file
9
src/qe/lite/CMakeLists.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
z3_add_component(qe_lite
|
||||
SOURCES
|
||||
qe_lite.cpp
|
||||
COMPONENT_DEPENDENCIES
|
||||
tactic
|
||||
mbp
|
||||
TACTIC_HEADERS
|
||||
qe_lite.h
|
||||
)
|
2528
src/qe/lite/qe_lite.cpp
Normal file
2528
src/qe/lite/qe_lite.cpp
Normal file
File diff suppressed because it is too large
Load diff
68
src/qe/lite/qe_lite.h
Normal file
68
src/qe/lite/qe_lite.h
Normal file
|
@ -0,0 +1,68 @@
|
|||
/*++
|
||||
Copyright (c) 2012 Microsoft Corporation
|
||||
|
||||
Module Name:
|
||||
|
||||
qe_lite.h
|
||||
|
||||
Abstract:
|
||||
|
||||
Light weight partial quantifier-elimination procedures
|
||||
|
||||
Author:
|
||||
|
||||
Nikolaj Bjorner (nbjorner) 2012-10-17
|
||||
|
||||
Revision History:
|
||||
|
||||
|
||||
--*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "ast/ast.h"
|
||||
#include "util/uint_set.h"
|
||||
#include "util/params.h"
|
||||
|
||||
class tactic;
|
||||
|
||||
class qe_lite {
|
||||
class impl;
|
||||
impl * m_impl;
|
||||
public:
|
||||
/**
|
||||
use_array_der controls whether equalities over array reads are simplified
|
||||
*/
|
||||
qe_lite(ast_manager& m, params_ref const & p, bool use_array_der = true);
|
||||
|
||||
~qe_lite();
|
||||
|
||||
/**
|
||||
\brief
|
||||
Apply light-weight quantifier elimination
|
||||
on constants provided as vector of variables.
|
||||
Return the updated formula and updated set of variables that were not eliminated.
|
||||
|
||||
*/
|
||||
void operator()(app_ref_vector& vars, expr_ref& fml);
|
||||
|
||||
/**
|
||||
\brief
|
||||
Apply light-weight quantifier elimination to variables present/absent in the index set.
|
||||
If 'index_of_bound' is true, then the index_set is treated as the set of
|
||||
bound variables. if 'index_of_bound' is false, then index_set is treated as the
|
||||
set of variables that are not bound (variables that are not in the index set are bound).
|
||||
*/
|
||||
void operator()(uint_set const& index_set, bool index_of_bound, expr_ref& fml);
|
||||
|
||||
void operator()(uint_set const& index_set, bool index_of_bound, expr_ref_vector& conjs);
|
||||
/**
|
||||
\brief full rewriting based light-weight quantifier elimination round.
|
||||
*/
|
||||
void operator()(expr_ref& fml, proof_ref& pr);
|
||||
};
|
||||
|
||||
tactic * mk_qe_lite_tactic(ast_manager & m, params_ref const & p = params_ref());
|
||||
/*
|
||||
ADD_TACTIC("qe-light", "apply light-weight quantifier elimination.", "mk_qe_lite_tactic(m, p)")
|
||||
*/
|
Loading…
Add table
Add a link
Reference in a new issue