feat(library/tactic): add 'by' annotation

This commit is contained in:
Leonardo de Moura 2016-06-13 10:12:00 -07:00
parent d16e1d85fb
commit f86f8b040f
4 changed files with 44 additions and 1 deletions

View file

@ -1,2 +1,2 @@
add_library(tactic OBJECT tactic_state.cpp intro_tactic.cpp assumption_tactic.cpp
revert_tactic.cpp rename_tactic.cpp clear_tactic.cpp init_module.cpp)
revert_tactic.cpp rename_tactic.cpp clear_tactic.cpp elaborate.cpp init_module.cpp)

View file

@ -0,0 +1,23 @@
/*
Copyright (c) 2016 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Author: Leonardo de Moura
*/
#include "library/annotation.h"
namespace lean {
static name * g_by_name = nullptr;
expr mk_by(expr const & e) { return mk_annotation(*g_by_name, e); }
bool is_by(expr const & e) { return is_annotation(e, *g_by_name); }
expr const & get_by_arg(expr const & e) { lean_assert(is_by(e)); return get_annotation_arg(e); }
void initialize_elaborate() {
g_by_name = new name("by");
register_annotation(*g_by_name);
}
void finalize_elaborate() {
delete g_by_name;
}
}

View file

@ -0,0 +1,17 @@
/*
Copyright (c) 2016 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Author: Leonardo de Moura
*/
#pragma once
#include "kernel/expr.h"
namespace lean {
expr mk_by(expr const & e);
bool is_by(expr const & e);
expr const & get_by_arg(expr const & e);
void initialize_elaborate();
void finalize_elaborate();
}

View file

@ -10,6 +10,7 @@ Author: Leonardo de Moura
#include "library/tactic/revert_tactic.h"
#include "library/tactic/rename_tactic.h"
#include "library/tactic/clear_tactic.h"
#include "library/tactic/elaborate.h"
namespace lean {
void initialize_tactic_module() {
@ -19,8 +20,10 @@ void initialize_tactic_module() {
initialize_revert_tactic();
initialize_rename_tactic();
initialize_clear_tactic();
initialize_elaborate();
}
void finalize_tactic_module() {
finalize_elaborate();
finalize_clear_tactic();
finalize_rename_tactic();
finalize_revert_tactic();