feat(library/tactic): add 'by' annotation
This commit is contained in:
parent
d16e1d85fb
commit
f86f8b040f
4 changed files with 44 additions and 1 deletions
|
|
@ -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)
|
||||
|
|
|
|||
23
src/library/tactic/elaborate.cpp
Normal file
23
src/library/tactic/elaborate.cpp
Normal 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;
|
||||
}
|
||||
}
|
||||
17
src/library/tactic/elaborate.h
Normal file
17
src/library/tactic/elaborate.h
Normal 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();
|
||||
}
|
||||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue