lean2/src/library/max_sharing.h
Leonardo de Moura ad901ce087 Use consistent naming conventions
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-09-17 14:43:07 -07:00

38 lines
788 B
C++

/*
Copyright (c) 2013 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Author: Leonardo de Moura
*/
#pragma once
#include <memory>
#include "kernel/expr.h"
namespace lean {
/**
\brief Functional object for creating expressions with maximally
shared sub-expressions.
*/
class max_sharing_fn {
struct imp;
friend expr max_sharing(expr const & a);
std::unique_ptr<imp> m_ptr;
public:
max_sharing_fn();
~max_sharing_fn();
expr operator()(expr const & a);
/**
\brief Clear the cache.
*/
void clear();
};
/**
\brief The resultant expression is structurally identical to the input one, but
it uses maximally shared sub-expressions.
*/
expr max_sharing(expr const & a);
}