Documentation

Lean.ResolveName

We use aliases to implement the export (+) command. An export A (x) in the namespace B produces an alias B.x ~> A.x.

Equations
  • One or more equations did not get rendered due to their size.
@[export lean_add_alias]

Add alias a for e

Equations
def Lean.getAliases (env : Lean.Environment) (a : Lean.Name) (skipProtected : Bool) :

Retrieve aliases for a. If skipProtected is true, then the resulting list only includes declarations that are not marked as proctected.

Equations
  • One or more equations did not get rendered due to their size.

Global name resolution #

Equations
  • One or more equations did not get rendered due to their size.
Equations

Namespace resolution #

Equations

Given a name id try to find namespaces it may refer to. The resolution procedure works as follows

1- If id is in the scope of namespace commands the namespace s_1. ... . s_n, then we include s_1 . ... . s_i ++ n in the result if it is the name of an existing namespace. We search "backwards", and include at most one of the in the list of resulting namespaces.

2- If id is the extact name of an existing namespace, then include id

3- Finally, for each command open N, include in the result N ++ n if it is the name of an existing namespace. We only consider simple open commands.

Equations
  • One or more equations did not get rendered due to their size.
Instances
    instance Lean.instMonadResolveName (m : TypeType) (n : TypeType) [inst : MonadLift m n] [inst : Lean.MonadResolveName m] :
    Equations
    def Lean.resolveGlobalName {m : TypeType} [inst : Monad m] [inst : Lean.MonadResolveName m] [inst : Lean.MonadEnv m] (id : Lean.Name) :

    Given a name n, return a list of possible interpretations. Each interpretation is a pair (declName, fieldList), where declName is the name of a declaration in the current environment, and fieldList are (potential) field names. The pair is needed because in Lean . may be part of a qualified name or a field (aka dot-notation). As an example, consider the following definitions

    def Boo.x   := 1
    def Foo.x   := 2
    def Foo.x.y := 3
    

    After open Foo, we have

    After open Foo open Boo, we have

    Equations
    • One or more equations did not get rendered due to their size.
    def Lean.resolveNamespaceCore {m : TypeType} [inst : Monad m] [inst : Lean.MonadResolveName m] [inst : Lean.MonadEnv m] [inst : Lean.MonadError m] (id : Lean.Name) (allowEmpty : optParam Bool false) :

    Given a namespace name, return a list of possible interpretations. Names extracted from syntax should be passed to resolveNamespace instead.

    Equations
    • One or more equations did not get rendered due to their size.
    def Lean.resolveNamespace {m : TypeType} [inst : Monad m] [inst : Lean.MonadResolveName m] [inst : Lean.MonadEnv m] [inst : Lean.MonadError m] :

    Given a namespace identifier, return a list of possible interpretations.

    Equations
    • One or more equations did not get rendered due to their size.
    def Lean.resolveUniqueNamespace {m : TypeType} [inst : Monad m] [inst : Lean.MonadResolveName m] [inst : Lean.MonadEnv m] [inst : Lean.MonadError m] (id : Lean.Ident) :

    Given a namespace identifier, return the unique interpretation or else fail.

    Equations
    • One or more equations did not get rendered due to their size.
    def Lean.resolveGlobalConstCore {m : TypeType} [inst : Monad m] [inst : Lean.MonadResolveName m] [inst : Lean.MonadEnv m] [inst : Lean.MonadError m] (n : Lean.Name) :

    Given a name n, return a list of possible interpretations for global constants.

    Similar to resolveGlobalName, but discard any candidate whose fieldList is not empty. For identifiers taken from syntax, use resolveGlobalConst instead, which respects preresolved names.

    Equations
    • One or more equations did not get rendered due to their size.

    For identifiers taken from syntax, use resolveGlobalConstNoOverload instead, which respects preresolved names.

    Equations
    • One or more equations did not get rendered due to their size.
    def Lean.resolveGlobalConst {m : TypeType} [inst : Monad m] [inst : Lean.MonadResolveName m] [inst : Lean.MonadEnv m] [inst : Lean.MonadError m] :

    Interpret the syntax n as an identifier for a global constant, and return a list of resolved constant names that it could be refering to based on the currently open namespaces. This should be used instead of resolveGlobalConstCore for identifiers taken from syntax because Syntax objects may have names that have already been resolved.

    Example: #

    def Boo.x   := 1
    def Foo.x   := 2
    def Foo.x.y := 3
    

    After open Foo, we have

    After open Foo open Boo, we have

    Equations
    • One or more equations did not get rendered due to their size.

    Interpret the syntax n as an identifier for a global constant, and return a resolved constant name. If there are multiple possible interpretations it will throw.

    Example: #

    def Boo.x   := 1
    def Foo.x   := 2
    def Foo.x.y := 3
    

    After open Foo, we have

    After open Foo open Boo, we have

    Equations
    • One or more equations did not get rendered due to their size.
    def Lean.unresolveNameGlobal {m : TypeType} [inst : Monad m] [inst : Lean.MonadResolveName m] [inst : Lean.MonadEnv m] (n₀ : Lean.Name) (fullNames : optParam Bool false) :
    Equations
    • One or more equations did not get rendered due to their size.
    Equations
    • One or more equations did not get rendered due to their size.