File: .lake/packages/lean4/src/lean/lake/Lake/Build/Data.lean

full_name: Lake.ModuleData
code: /--
The open type family which maps a module facet's name to its build data
in the Lake build store. For example, a transitive × direct import pair
for the `lean.imports` facet or an active build target for `lean.c`.

It is an open type, meaning additional mappings can be add lazily
as needed (via `module_data`).
-/
opaque ModuleData (facet : Name) : Type
goal: Type

full_name: Lake.PackageData
code: /--
The open type family which maps a package facet's name to its build data
in the Lake build store. For example, a transitive dependencies of the package
for the facet `deps`.

It is an open type, meaning additional mappings can be add lazily
as needed (via `package_data`).
-/
opaque PackageData (facet : Name) : Type
goal: Type

full_name: Lake.TargetData
code: /--
The open type family which maps a (builtin) Lake target's (e.g., `extern_lib`)
facet to its associated build data. For example, an active build target for
the `externLib.static` facet.

It is an open type, meaning additional mappings can be add lazily
as needed (via `target_data`).
-/
opaque TargetData (facet : Name) : Type
goal: Type

full_name: Lake.LibraryData
code: abbrev LibraryData (facet : Name) 
goal: Type

full_name: Lake.instFamilyDefNameTargetDataHAppendMkStr1OfFamilyOutLibraryData
code: instance [h : FamilyOut LibraryData facet α] : FamilyDef TargetData (`leanLib ++ facet) α 
goal: Lake.FamilyDef Lake.TargetData (`leanLib ++ facet) α

full_name: Lake.instFamilyDefNameLibraryDataOfFamilyOutTargetDataHAppendMkStr1
code: instance [h : FamilyOut TargetData (`leanLib ++ facet) α] : FamilyDef LibraryData facet α 
goal: Lake.FamilyDef Lake.LibraryData facet α

full_name: Lake.CustomData
code: /--
The open type family which maps a custom target (package × target name) to
its build data in the Lake build store.

It is an open type, meaning additional mappings can be add lazily
as needed (via `custom_data`).
-/
opaque CustomData (target : Name × Name) : Type
goal: Type

full_name: Lake.BuildData
code: /--
A mapping between a build key and its associated build data in the store.
It is a simple type function composed of the separate open type families for
modules facets, package facets, Lake target facets, and custom targets.
-/
abbrev BuildData : BuildKey → Type

goal: Lake.BuildKey → Type

full_name: Lake.instFamilyDefBuildKeyBuildData
code: instance (priority := low) : FamilyDef BuildData k (BuildData k) 
goal: Lake.FamilyDef Lake.BuildData k (Lake.BuildData k)

full_name: Lake.instFamilyDefBuildKeyBuildDataModuleFacetModuleData
code: instance (priority := low) : FamilyDef BuildData (.moduleFacet m f) (ModuleData f) 
goal: Lake.FamilyDef Lake.BuildData (Lake.BuildKey.moduleFacet m f) (Lake.ModuleData f)

full_name: Lake.instFamilyDefBuildKeyBuildDataPackageFacetPackageData
code: instance (priority := low) : FamilyDef BuildData (.packageFacet p f) (PackageData f) 
goal: Lake.FamilyDef Lake.BuildData (Lake.BuildKey.packageFacet p f) (Lake.PackageData f)

full_name: Lake.instFamilyDefBuildKeyBuildDataTargetFacetTargetData
code: instance (priority := low) : FamilyDef BuildData (.targetFacet p t f) (TargetData f) 
goal: Lake.FamilyDef Lake.BuildData (Lake.BuildKey.targetFacet p t f) (Lake.TargetData f)

full_name: Lake.instFamilyDefBuildKeyBuildDataCustomTargetCustomDataMkName
code: instance (priority := low) : FamilyDef BuildData (.customTarget p t) (CustomData (p,t)) 
goal: Lake.FamilyDef Lake.BuildData (Lake.BuildKey.customTarget p t) (Lake.CustomData (p, t))

full_name: Lake.«_aux_.lake_packages_lean4_src_lean_lake_Lake_Build_Data___macroRules_Lake_packageDataDecl_1»
code: macro (name := packageDataDecl) doc?:optional(Parser.Command.docComment)
"package_data " id:ident " : " ty:term : command => do
  let dty := mkCIdentFrom (← getRef) ``PackageData
  let key := Name.quoteFrom id id.getId
  `($[$doc?]? family_def $id : $dty $key := $ty)
goal: Lean.Macro

full_name: Lake.packageDataDecl
code: macro (name := packageDataDecl) doc?:optional(Parser.Command.docComment)
"package_data " id:ident " : " ty:term : command => do
  let dty := mkCIdentFrom (← getRef) ``PackageData
  let key := Name.quoteFrom id id.getId
  `($[$doc?]? family_def $id : $dty $key := $ty)
goal: Lean.ParserDescr

full_name: Lake.«_aux_.lake_packages_lean4_src_lean_lake_Lake_Build_Data___macroRules_Lake_moduleDataDecl_1»
code: macro (name := moduleDataDecl) doc?:optional(Parser.Command.docComment)
"module_data " id:ident " : " ty:term : command => do
  let dty := mkCIdentFrom (← getRef) ``ModuleData
  let key := Name.quoteFrom id id.getId
  `($[$doc?]? family_def $id : $dty $key := $ty)
goal: Lean.Macro

full_name: Lake.moduleDataDecl
code: macro (name := moduleDataDecl) doc?:optional(Parser.Command.docComment)
"module_data " id:ident " : " ty:term : command => do
  let dty := mkCIdentFrom (← getRef) ``ModuleData
  let key := Name.quoteFrom id id.getId
  `($[$doc?]? family_def $id : $dty $key := $ty)
goal: Lean.ParserDescr

full_name: Lake.«_aux_.lake_packages_lean4_src_lean_lake_Lake_Build_Data___macroRules_Lake_libraryDataDecl_1»
code: macro (name := libraryDataDecl) doc?:optional(Parser.Command.docComment)
"library_data " id:ident " : " ty:term : command => do
  let dty := mkCIdentFrom (← getRef) ``TargetData
  let key := Name.quoteFrom id id.getId
  let id := mkIdentFrom id (canonical := true) <| id.getId.modifyBase (`leanLib ++ ·)
  `($[$doc?]? family_def $id : $dty (`leanLib ++ $key) := $ty)
goal: Lean.Macro

full_name: Lake.libraryDataDecl
code: macro (name := libraryDataDecl) doc?:optional(Parser.Command.docComment)
"library_data " id:ident " : " ty:term : command => do
  let dty := mkCIdentFrom (← getRef) ``TargetData
  let key := Name.quoteFrom id id.getId
  let id := mkIdentFrom id (canonical := true) <| id.getId.modifyBase (`leanLib ++ ·)
  `($[$doc?]? family_def $id : $dty (`leanLib ++ $key) := $ty)
goal: Lean.ParserDescr

full_name: Lake.«_aux_.lake_packages_lean4_src_lean_lake_Lake_Build_Data___macroRules_Lake_targetDataDecl_1»
code: macro (name := targetDataDecl) doc?:optional(Parser.Command.docComment)
"target_data " id:ident " : " ty:term : command => do
  let dty := mkCIdentFrom (← getRef) ``TargetData
  let key := Name.quoteFrom id id.getId
  `($[$doc?]? family_def $id : $dty $key := $ty)
goal: Lean.Macro

full_name: Lake.targetDataDecl
code: macro (name := targetDataDecl) doc?:optional(Parser.Command.docComment)
"target_data " id:ident " : " ty:term : command => do
  let dty := mkCIdentFrom (← getRef) ``TargetData
  let key := Name.quoteFrom id id.getId
  `($[$doc?]? family_def $id : $dty $key := $ty)
goal: Lean.ParserDescr

full_name: Lake.customDataDecl
code: macro (name := customDataDecl) doc?:optional(Parser.Command.docComment)
"custom_data " pkg:ident tgt:ident " : " ty:term : command => do
  let dty := mkCIdentFrom (← getRef) ``CustomData
  let id := mkIdentFrom tgt (pkg.getId ++ tgt.getId)
  let pkg := Name.quoteFrom pkg pkg.getId
  let tgt := Name.quoteFrom pkg tgt.getId
  `($[$doc?]? family_def $id : $dty ($pkg, $tgt) := $ty)
goal: Lean.ParserDescr

full_name: Lake.«_aux_.lake_packages_lean4_src_lean_lake_Lake_Build_Data___macroRules_Lake_customDataDecl_1»
code: macro (name := customDataDecl) doc?:optional(Parser.Command.docComment)
"custom_data " pkg:ident tgt:ident " : " ty:term : command => do
  let dty := mkCIdentFrom (← getRef) ``CustomData
  let id := mkIdentFrom tgt (pkg.getId ++ tgt.getId)
  let pkg := Name.quoteFrom pkg pkg.getId
  let tgt := Name.quoteFrom pkg tgt.getId
  `($[$doc?]? family_def $id : $dty ($pkg, $tgt) := $ty)
goal: Lean.Macro