z3-z3-4.13.0.src.qe.lite.qel.h Maven / Gradle / Ivy
The newest version!
/*++
Module Name:
qel.h
Abstract:
Light weight quantifier elimination (QEL) based on term graph.
The implementation is based on the following paper:
Isabel Garcia-Contreras, Hari Govind V. K., Sharon Shoham, Arie Gurfinkel:
Fast Approximations of Quantifier Elimination. Computer-Aided Verification
(CAV). 2023. URL: https://arxiv.org/abs/2306.10009
Author:
Hari Govind V K (hgvk94)
Isabel Garcia (igcontreras)
--*/
#pragma once
#include "ast/ast.h"
#include "ast/ast_util.h"
#include "util/params.h"
#include "util/uint_set.h"
class qel {
class impl;
impl *m_impl;
public:
qel(ast_manager &m, params_ref const &p);
~qel();
/**
\brief Applies light-weight elimination of `vars` provided as vector
of expressions to the cube `fml`. Returns the updated formula and updated
set of variables that were not eliminated.
*/
void operator()(app_ref_vector &vars, expr_ref &fml);
};