File: .lake/packages/batteries/Batteries/Tactic/OpenPrivate.lean

full_name: Lean.Meta.collectPrivateIn
code: /-- Collects the names of private declarations referenced in definition `n`. -/
def Meta.collectPrivateIn [Monad m] [MonadEnv m] [MonadError m]
  (n : Name) (set := NameSet.empty) : m NameSet 
goal: m Lean.NameSet

full_name: Lean.Environment.moduleIdxForModule?
code: /-- Get the module index given a module name. -/
def Environment.moduleIdxForModule? (env : Environment) (mod : Name) : Option ModuleIdx 
goal: Option Lean.ModuleIdx

full_name: Lean.«instDecidableEqModuleIdx_.lake»
code: instance : DecidableEq ModuleIdx 
goal: DecidableEq Lean.ModuleIdx

full_name: Lean.Environment.declsInModuleIdx
code: /-- Get the list of declarations in a module (referenced by index). -/
def Environment.declsInModuleIdx (env : Environment) (idx : ModuleIdx) : List Name 
goal: List Lean.Name

full_name: Lean.Elab.addModuleInfo
code: /-- Add info to the info tree corresponding to a module name. -/
def Elab.addModuleInfo [Monad m] [MonadInfoTree m] (stx : Ident) : m Unit 
goal: m Unit

full_name: Lean.Elab.Command.elabOpenPrivateLike
code: /-- Core elaborator for `open private` and `export private`. -/
def elabOpenPrivateLike (ids : Array Ident) (tgts mods : Option (Array Ident))
  (f : (priv full user : Name) → CommandElabM Name) : CommandElabM Unit 
goal: Lean.Elab.Command.CommandElabM Unit

full_name: Lean.Elab.Command.openPrivate
code: /--
The command `open private a b c in foo bar` will look for private definitions named `a`, `b`, `c`
in declarations `foo` and `bar` and open them in the current scope. This does not make the
definitions public, but rather makes them accessible in the current section by the short name `a`
instead of the (unnameable) internal name for the private declaration, something like
`_private.Other.Module.0.Other.Namespace.foo.a`, which cannot be typed directly because of the `0`
name component.

It is also possible to specify the module instead with
`open private a b c from Other.Module`.
-/
syntax (name := openPrivate) "open private" (ppSpace ident)*
  (" in" (ppSpace ident)*)? (" from" (ppSpace ident)*)? : command
goal: Lean.ParserDescr

full_name: Lean.Elab.Command.elabOpenPrivate
code: /-- Elaborator for `open private`. -/
@[command_elab openPrivate] def elabOpenPrivate : CommandElab

goal: Lean.Elab.Command.CommandElab

full_name: Lean.Elab.Command.exportPrivate
code: /--
The command `export private a b c in foo bar` is similar to `open private`, but instead of opening
them in the current scope it will create public aliases to the private definition. The definition
will exist at exactly the original location and name, as if the `private` keyword was not used
originally.

It will also open the newly created alias definition under the provided short name, like
`open private`.
It is also possible to specify the module instead with
`export private a b c from Other.Module`.
-/
syntax (name := exportPrivate) "export private" (ppSpace ident)*
  (" in" (ppSpace ident)*)? (" from" (ppSpace ident)*)? : command
goal: Lean.ParserDescr

full_name: Lean.Elab.Command.elabExportPrivate
code: /-- Elaborator for `export private`. -/
@[command_elab exportPrivate] def elabExportPrivate : CommandElab

goal: Lean.Elab.Command.CommandElab