43 lines
1.4 KiB
C++
43 lines
1.4 KiB
C++
/*
|
|
Copyright (c) 2014 Microsoft Corporation. All rights reserved.
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
|
|
Author: Leonardo de Moura
|
|
*/
|
|
#pragma once
|
|
#include "library/annotation.h"
|
|
|
|
// Auxiliary expression annotations for helping the generation
|
|
// of information for the info_manager
|
|
|
|
namespace lean {
|
|
/** \brief Annotate \c e with no-information generation.
|
|
|
|
Whenever the elaborator finds this annotation it does not generate
|
|
information for \c e or any subterm of \c e.
|
|
*/
|
|
expr mk_no_info(expr const & e);
|
|
/** \brief Return true iff \c e is a term annotated with mk_no_info */
|
|
bool is_no_info(expr const & e);
|
|
|
|
/** \brief Annotate \c e with "extra-info" annotation.
|
|
It instructs elaborator to store the type of \c e.
|
|
*/
|
|
expr mk_extra_info(expr const & e, tag g);
|
|
expr mk_extra_info(expr const & e);
|
|
/** \brief Return true iff \c e is a term annotated with mk_extra_info */
|
|
bool is_extra_info(expr const & e);
|
|
|
|
/** \brief Annotate \c e with "notation-info" annotation.
|
|
It instructs the elaborator to store the type of \c e.
|
|
We use this feature to store the type of atomic notation (i.e.,
|
|
notation without parameters).
|
|
*/
|
|
expr mk_notation_info(expr const & e, tag g);
|
|
expr mk_notation_info(expr const & e);
|
|
/** \brief Return true iff \c e is a term annotated with mk_notation_info */
|
|
bool is_notation_info(expr const & e);
|
|
|
|
void initialize_info_annotation();
|
|
void finalize_info_annotation();
|
|
}
|