mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 17:45:32 +00:00
moving remaining qsat functionality over
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
296addf246
commit
20bbdfe31a
23 changed files with 3876 additions and 225 deletions
53
src/ast/rewriter/label_rewriter.cpp
Normal file
53
src/ast/rewriter/label_rewriter.cpp
Normal file
|
@ -0,0 +1,53 @@
|
|||
/*++
|
||||
Copyright (c) 2015 Microsoft Corporation
|
||||
|
||||
Module Name:
|
||||
|
||||
label_rewriter.cpp
|
||||
|
||||
Abstract:
|
||||
|
||||
Basic rewriting rules for removing labels.
|
||||
|
||||
Author:
|
||||
|
||||
Nikolaj Bjorner (nbjorner) 2015-19-10
|
||||
|
||||
Notes:
|
||||
|
||||
--*/
|
||||
|
||||
#include"rewriter.h"
|
||||
#include"rewriter_def.h"
|
||||
#include"label_rewriter.h"
|
||||
|
||||
|
||||
label_rewriter::label_rewriter(ast_manager & m) :
|
||||
m_label_fid(m.get_label_family_id()),
|
||||
m_rwr(m, false, *this) {}
|
||||
|
||||
label_rewriter::~label_rewriter() {}
|
||||
|
||||
br_status label_rewriter::reduce_app(
|
||||
func_decl * f, unsigned num, expr * const * args, expr_ref & result,
|
||||
proof_ref & result_pr) {
|
||||
if (is_decl_of(f, m_label_fid, OP_LABEL)) {
|
||||
SASSERT(num == 1);
|
||||
result = args[0];
|
||||
return BR_DONE;
|
||||
}
|
||||
return BR_FAILED;
|
||||
}
|
||||
|
||||
void label_rewriter::remove_labels(expr_ref& fml, proof_ref& pr) {
|
||||
ast_manager& m = fml.get_manager();
|
||||
expr_ref tmp(m);
|
||||
m_rwr(fml, tmp);
|
||||
if (pr && fml != tmp) {
|
||||
pr = m.mk_modus_ponens(pr, m.mk_rewrite(fml, tmp));
|
||||
}
|
||||
fml = tmp;
|
||||
}
|
||||
|
||||
|
||||
//template class rewriter_tpl<label_rewriter>;
|
41
src/ast/rewriter/label_rewriter.h
Normal file
41
src/ast/rewriter/label_rewriter.h
Normal file
|
@ -0,0 +1,41 @@
|
|||
/*++
|
||||
Copyright (c) 2015 Microsoft Corporation
|
||||
|
||||
Module Name:
|
||||
|
||||
label_rewriter.h
|
||||
|
||||
Abstract:
|
||||
|
||||
Basic rewriting rules for labels.
|
||||
|
||||
Author:
|
||||
|
||||
Nikolaj Bjorner (nbjorner) 2015-19-10
|
||||
|
||||
Notes:
|
||||
|
||||
--*/
|
||||
#ifndef LABEL_REWRITER_H_
|
||||
#define LABEL_REWRITER_H_
|
||||
|
||||
#include"ast.h"
|
||||
#include"rewriter_types.h"
|
||||
|
||||
|
||||
class label_rewriter : public default_rewriter_cfg {
|
||||
family_id m_label_fid;
|
||||
rewriter_tpl<label_rewriter> m_rwr;
|
||||
public:
|
||||
label_rewriter(ast_manager & m);
|
||||
~label_rewriter();
|
||||
|
||||
br_status reduce_app(func_decl * f, unsigned num, expr * const * args, expr_ref & result,
|
||||
proof_ref & result_pr);
|
||||
|
||||
|
||||
void remove_labels(expr_ref& fml, proof_ref& pr);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue