3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-10 11:17:07 +00:00
z3/test/ackermanize.cpp
Leonardo de Moura 68269c43a6 other components
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2012-10-02 11:48:48 -07:00

43 lines
1.6 KiB
C++

#include "ackermanize.h"
#include "smtparser.h"
#include "ast_pp.h"
void tst_ackermanize()
{
ast_manager manager;
smtlib::parser* parser = smtlib::parser::create(manager);
ackermanize ack(manager);
ast_ref<const_decl_ast> fD(manager);
ast_ref<const_decl_ast> xD(manager);
ast_ref<type_decl_ast> AD(manager);
ast_ref<type_ast> A(manager);
ast_ref<> a1(manager), a2(manager), a3(manager), a4(manager),
a5(manager), a6(manager), a7(manager);
ast_ref<> r(manager);
AD = manager.mk_type_decl(symbol("A"));
A = manager.mk_type(AD.get());
fD = manager.mk_const_decl(symbol("f"), A.get(), A.get(), A.get());
a1 = manager.mk_const(manager.mk_const_decl(symbol("a1"), A.get()));
a2 = manager.mk_const(manager.mk_const_decl(symbol("a2"), A.get()));
a3 = manager.mk_const(manager.mk_const_decl(symbol("a3"), A.get()));
a4 = manager.mk_const(manager.mk_const_decl(symbol("a4"), A.get()));
a5 = manager.mk_const(manager.mk_const_decl(symbol("a5"), A.get()));
a6 = manager.mk_const(manager.mk_const_decl(symbol("a6"), A.get()));
a7 = manager.mk_const(manager.mk_const_decl(symbol("a7"), A.get()));
r = manager.mk_const(manager.get_basic_family_id(),
OP_EQ,
manager.mk_const(fD.get(), a1.get(), a2.get()),
manager.mk_const(fD.get(), a2.get(), a3.get()));
TRACE("ackermanize", tout << mk_pp(r.get()) << std::endl;);
ack.reduce(r);
TRACE("ackermanize", tout << mk_pp(r.get()) << std::endl;);
}