3
0
Fork 0
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:
Nikolaj Bjorner 2022-01-12 03:26:22 -08:00
parent 2bcc814031
commit 08294d62e5
16 changed files with 26 additions and 16 deletions

View 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

File diff suppressed because it is too large Load diff

68
src/qe/lite/qe_lite.h Normal file
View 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)")
*/