lean4-htt/library/init/lean/expr.lean
Leonardo de Moura a49de9ccd3 feat(library/init/lean): add kvmap
We use it to implement `expr.mdata` and `options`
2018-06-15 16:05:11 -07:00

39 lines
1.4 KiB
Text

/-
Copyright (c) 2018 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Leonardo de Moura
-/
prelude
import init.lean.level init.lean.kvmap
namespace lean
inductive literal
| str_val (val : string)
| nat_val (val : nat)
inductive binder_info
| default | implicit | strict_implicit | inst_implicit | aux_decl
inductive mdata_value
| str_val (val : string)
| nat_val (val : nat)
| bool_val (val : bool)
inductive expr
| bvar : nat → expr -- bound variables
| fvar : name → expr -- free variables
| mvar : name → expr → expr -- (temporary) meta variables
| const : name → list level → expr -- constants
| sort : level → expr -- Sort
| app : expr → expr → expr -- application
| proj : nat → expr → expr -- projection
| lam : name → binder_info → expr → expr → expr -- lambda abstraction
| pi : name → binder_info → expr → expr → expr -- Pi
| elet : name → expr → expr → expr → expr -- let expressions
| lit : literal → expr -- literals
| mdata : kvmap → expr → expr -- metadata
-- TODO: quote constructor will be deleted.
| quote : bool → expr → expr
end lean