mirror of
https://github.com/Z3Prover/z3
synced 2025-04-27 02:45:51 +00:00
35 lines
734 B
C++
35 lines
734 B
C++
/*++
|
|
Copyright (c) 2012 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
equiv_proof_converter.cpp
|
|
|
|
Abstract:
|
|
|
|
Proof converter that applies equivalence rule to leaves.
|
|
|
|
Author:
|
|
|
|
Nikolaj Bjorner (nbjorner) 2012-11-23
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#include "equiv_proof_converter.h"
|
|
#include "ast_pp.h"
|
|
#include "scoped_proof.h"
|
|
|
|
void equiv_proof_converter::insert(expr* fml1, expr* fml2) {
|
|
if (fml1 != fml2) {
|
|
scoped_proof _sp(m);
|
|
proof_ref p1(m), p2(m), p3(m);
|
|
p1 = m.mk_asserted(fml1);
|
|
p2 = m.mk_rewrite(fml1, fml2);
|
|
p3 = m.mk_modus_ponens(p1, p2);
|
|
TRACE("proof_converter", tout << mk_pp(p3.get(), m) << "\n";);
|
|
SASSERT(m.has_fact(p3));
|
|
m_replace.insert(p3);
|
|
}
|
|
}
|