mirror of
https://github.com/Z3Prover/z3
synced 2025-05-16 12:14:45 +00:00
Add simplification customization for SMTLIB2
Add the ability to customize incremental pre-processing simplification for the SMTLIB2 front-end. The main new capability is to use pre-processing tactics in incremental mode that were previously not available. The main new capabilities are - solve-eqs - reduce-args - elim-unconstrained There are several more. Documentation and exposed simplifiers are populated incrementally. The current set of supported simplifiers can be inspected by using z3 with the --simplifiers flag or referring to https://microsoft.github.io/z3guide/docs/strategies/simplifiers Some pending features are: - add the ability to update parameters to simplifiers similar to how tactics can be controlled using parameters. - expose simplification solvers over the binary API.
This commit is contained in:
parent
dd0decfe5d
commit
6022c17131
32 changed files with 370 additions and 69 deletions
42
src/cmd_context/simplifier_cmds.h
Normal file
42
src/cmd_context/simplifier_cmds.h
Normal file
|
@ -0,0 +1,42 @@
|
|||
/*++
|
||||
Copyright (c) 2023 Microsoft Corporation
|
||||
|
||||
Module Name:
|
||||
|
||||
simplifier_cmds.h
|
||||
|
||||
Abstract:
|
||||
Support for simplifier commands in SMT 2.0 front-end
|
||||
|
||||
Author:
|
||||
|
||||
Nikolaj Bjorner (nbjorner) 2023-01-30
|
||||
|
||||
--*/
|
||||
#pragma once
|
||||
|
||||
#include "ast/ast.h"
|
||||
#include "ast/simplifiers/dependent_expr_state.h"
|
||||
#include "util/params.h"
|
||||
#include "util/cmd_context_types.h"
|
||||
#include "util/ref.h"
|
||||
|
||||
|
||||
class simplifier_cmd {
|
||||
symbol m_name;
|
||||
char const * m_descr;
|
||||
simplifier_factory m_factory;
|
||||
public:
|
||||
simplifier_cmd(symbol const & n, char const * d, simplifier_factory f):
|
||||
m_name(n), m_descr(d), m_factory(f) {}
|
||||
|
||||
symbol get_name() const { return m_name; }
|
||||
|
||||
char const * get_descr() const { return m_descr; }
|
||||
|
||||
simplifier_factory factory() { return m_factory; }
|
||||
};
|
||||
|
||||
simplifier_factory sexpr2simplifier(cmd_context & ctx, sexpr * n);
|
||||
|
||||
void install_core_simplifier_cmds(cmd_context & ctx);
|
Loading…
Add table
Add a link
Reference in a new issue