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

full_name: Lake.Dynlib.name
code: /-- A dynamic/shared library for linking. -/
structure Dynlib where
  /-- Library file path. -/
  path : FilePath
  /-- Library name without platform-specific prefix/suffix (for `-l`). -/
  name : String
goal: String

full_name: Lake.Dynlib
code: /-- A dynamic/shared library for linking. -/
structure Dynlib where
  /-- Library file path. -/
  path : FilePath
  /-- Library name without platform-specific prefix/suffix (for `-l`). -/
  name : String
goal: Type

full_name: Lake.Dynlib.path
code: /-- A dynamic/shared library for linking. -/
structure Dynlib where
  /-- Library file path. -/
  path : FilePath
  /-- Library name without platform-specific prefix/suffix (for `-l`). -/
  name : String
goal: Lake.FilePath

full_name: Lake.Dynlib.dir?
code: /-- Optional library directory (for `-L`). -/
def Dynlib.dir? (self : Dynlib) : Option FilePath 
goal: Option Lake.FilePath

full_name: Lake.ModuleFacet.data_eq
code: /-- A module facet name along with proof of its data type. -/
structure ModuleFacet (α) where
  /-- The name of the module facet. -/
  name : Name
  /-- Proof that module's facet build result is of type α. -/
  data_eq : ModuleData name = α
  deriving Repr
goal: Lake.ModuleData self.name = α

full_name: Lake.ModuleFacet.name
code: /-- A module facet name along with proof of its data type. -/
structure ModuleFacet (α) where
  /-- The name of the module facet. -/
  name : Name
  /-- Proof that module's facet build result is of type α. -/
  data_eq : ModuleData name = α
  deriving Repr
goal: Lake.Name

full_name: Lake.instReprModuleFacet
code: /-- A module facet name along with proof of its data type. -/
structure ModuleFacet (α) where
  /-- The name of the module facet. -/
  name : Name
  /-- Proof that module's facet build result is of type α. -/
  data_eq : ModuleData name = α
  deriving Repr
goal: {α : Type} → [inst : Repr α] → Repr (Lake.ModuleFacet α)

full_name: Lake.ModuleFacet
code: /-- A module facet name along with proof of its data type. -/
structure ModuleFacet (α) where
  /-- The name of the module facet. -/
  name : Name
  /-- Proof that module's facet build result is of type α. -/
  data_eq : ModuleData name = α
  deriving Repr
goal: Type

full_name: Lake.instFamilyDefNameModuleDataName
code: instance (facet : ModuleFacet α) : FamilyDef ModuleData facet.name α 
goal: Lake.FamilyDef Lake.ModuleData facet.name α

full_name: Lake.instCoeDepNameModuleFacetOfFamilyOutModuleData
code: instance [FamilyOut ModuleData facet α] : CoeDep Name facet (ModuleFacet α) 
goal: CoeDep Lake.Name facet (Lake.ModuleFacet α)

full_name: Lake.Module.depsFacet
code: /--
The facet which builds all of a module's dependencies
(i.e., transitive local imports and `--load-dynlib` shared libraries).
Returns the list of shared libraries to load along with their search path.
-/
abbrev Module.depsFacet 
goal: Lake.Name

full_name: Lake.«instFamilyDefNameModuleDataMkStr1BuildJobProdSearchPathArrayFilePath_.lake»
code: module_data deps : BuildJob (SearchPath × Array FilePath)
goal: Lake.FamilyDef Lake.ModuleData `deps (Lake.BuildJob (Lake.SearchPath × Array Lake.FilePath))

full_name: Lake.ModuleData.deps
code: module_data deps : BuildJob (SearchPath × Array FilePath)
goal: Lake.ModuleData `deps = Lake.BuildJob (Lake.SearchPath × Array Lake.FilePath)

full_name: Lake.Module.leanArtsFacet
code: /--
The core build facet of a Lean file.
Elaborates the Lean file via `lean` and produces all the Lean artifacts
of the module (i.e., `olean`, `ilean`, `c`).
Its trace just includes its dependencies.
-/
abbrev Module.leanArtsFacet 
goal: Lake.Name

full_name: Lake.ModuleData.leanArts
code: module_data leanArts : BuildJob Unit
goal: Lake.ModuleData `leanArts = Lake.BuildJob Unit

full_name: Lake.«instFamilyDefNameModuleDataMkStr1BuildJobUnit_.lake»
code: module_data leanArts : BuildJob Unit
goal: Lake.FamilyDef Lake.ModuleData `leanArts (Lake.BuildJob Unit)

full_name: Lake.Module.oleanFacet
code: /-- The `olean` file produced by `lean`. -/
abbrev Module.oleanFacet 
goal: Lake.Name

full_name: Lake.«instFamilyDefNameModuleDataMkStr1BuildJobFilePath_.lake»
code: module_data olean : BuildJob FilePath
goal: Lake.FamilyDef Lake.ModuleData `olean (Lake.BuildJob Lake.FilePath)

full_name: Lake.ModuleData.olean
code: module_data olean : BuildJob FilePath
goal: Lake.ModuleData `olean = Lake.BuildJob Lake.FilePath

full_name: Lake.Module.ileanFacet
code: /-- The `ilean` file produced by `lean`. -/
abbrev Module.ileanFacet 
goal: Lake.Name

full_name: Lake.ModuleData.ilean
code: module_data ilean : BuildJob FilePath
goal: Lake.ModuleData `ilean = Lake.BuildJob Lake.FilePath

full_name: Lake.«instFamilyDefNameModuleDataMkStr1BuildJobFilePath_.lake_1»
code: module_data ilean : BuildJob FilePath
goal: Lake.FamilyDef Lake.ModuleData `ilean (Lake.BuildJob Lake.FilePath)

full_name: Lake.Module.cFacet
code: /-- The C file built from the Lean file via `lean`. -/
abbrev Module.cFacet 
goal: Lake.Name

full_name: Lake.ModuleData.c
code: module_data c : BuildJob FilePath
goal: Lake.ModuleData `c = Lake.BuildJob Lake.FilePath

full_name: Lake.«instFamilyDefNameModuleDataMkStr1BuildJobFilePath_.lake_2»
code: module_data c : BuildJob FilePath
goal: Lake.FamilyDef Lake.ModuleData `c (Lake.BuildJob Lake.FilePath)

full_name: Lake.Module.bcFacet
code: /-- The LLVM BC file built from the Lean file via `lean`. -/
abbrev Module.bcFacet 
goal: Lake.Name

full_name: Lake.ModuleData.bc
code: module_data bc : BuildJob FilePath
goal: Lake.ModuleData `bc = Lake.BuildJob Lake.FilePath

full_name: Lake.«instFamilyDefNameModuleDataMkStr1BuildJobFilePath_.lake_3»
code: module_data bc : BuildJob FilePath
goal: Lake.FamilyDef Lake.ModuleData `bc (Lake.BuildJob Lake.FilePath)

full_name: Lake.Module.coFacet
code: /--
The object file `.c.o` built from `c`.
On Windows, this is `c.o.noexport`, on other systems it is `c.o.export`).
-/
abbrev Module.coFacet 
goal: Lake.Name

full_name: Lake.«instFamilyDefNameModuleDataMkStr2BuildJobFilePath_.lake»
code: module_data c.o : BuildJob FilePath
goal: Lake.FamilyDef Lake.ModuleData `c.o (Lake.BuildJob Lake.FilePath)

full_name: Lake.ModuleData.c.o
code: module_data c.o : BuildJob FilePath
goal: Lake.ModuleData `c.o = Lake.BuildJob Lake.FilePath

full_name: Lake.Module.coExportFacet
code: /-- The object file `.c.o.export` built from `c` (with `-DLEAN_EXPORTING`). -/
abbrev Module.coExportFacet 
goal: Lake.Name

full_name: Lake.«instFamilyDefNameModuleDataMkStr3BuildJobFilePath_.lake»
code: module_data c.o.export : BuildJob FilePath
goal: Lake.FamilyDef Lake.ModuleData `c.o.export (Lake.BuildJob Lake.FilePath)

full_name: Lake.ModuleData.c.o.export
code: module_data c.o.export : BuildJob FilePath
goal: Lake.ModuleData `c.o.export = Lake.BuildJob Lake.FilePath

full_name: Lake.Module.coNoExportFacet
code: /-- The object file `.c.o.noexport` built from `c` (without `-DLEAN_EXPORTING`). -/
abbrev Module.coNoExportFacet 
goal: Lake.Name

full_name: Lake.ModuleData.c.o.noexport
code: module_data c.o.noexport : BuildJob FilePath
goal: Lake.ModuleData `c.o.noexport = Lake.BuildJob Lake.FilePath

full_name: Lake.«instFamilyDefNameModuleDataMkStr3BuildJobFilePath_.lake_1»
code: module_data c.o.noexport : BuildJob FilePath
goal: Lake.FamilyDef Lake.ModuleData `c.o.noexport (Lake.BuildJob Lake.FilePath)

full_name: Lake.Module.bcoFacet
code: /-- The object file `.bc.o` built from `bc`. -/
abbrev Module.bcoFacet 
goal: Lake.Name

full_name: Lake.ModuleData.bc.o
code: module_data bc.o : BuildJob FilePath
goal: Lake.ModuleData `bc.o = Lake.BuildJob Lake.FilePath

full_name: Lake.«instFamilyDefNameModuleDataMkStr2BuildJobFilePath_.lake_1»
code: module_data bc.o : BuildJob FilePath
goal: Lake.FamilyDef Lake.ModuleData `bc.o (Lake.BuildJob Lake.FilePath)

full_name: Lake.Module.oFacet
code: /--
The object file built from `c`/`bc`.
On Windows with the C backend, no Lean symbols are exported.
On every other configuration, symbols are exported.
-/
abbrev Module.oFacet 
goal: Lake.Name

full_name: Lake.«instFamilyDefNameModuleDataMkStr1BuildJobFilePath_.lake_4»
code: module_data o : BuildJob FilePath
goal: Lake.FamilyDef Lake.ModuleData `o (Lake.BuildJob Lake.FilePath)

full_name: Lake.ModuleData.o
code: module_data o : BuildJob FilePath
goal: Lake.ModuleData `o = Lake.BuildJob Lake.FilePath

full_name: Lake.Module.oExportFacet
code: /-- The object file built from `c`/`bc` (with Lean symbols exported). -/
abbrev Module.oExportFacet 
goal: Lake.Name

full_name: Lake.ModuleData.o.export
code: module_data o.export : BuildJob FilePath
goal: Lake.ModuleData `o.export = Lake.BuildJob Lake.FilePath

full_name: Lake.«instFamilyDefNameModuleDataMkStr2BuildJobFilePath_.lake_2»
code: module_data o.export : BuildJob FilePath
goal: Lake.FamilyDef Lake.ModuleData `o.export (Lake.BuildJob Lake.FilePath)

full_name: Lake.Module.oNoExportFacet
code: /-- The object file built from `c`/`bc` (without Lean symbols exported). -/
abbrev Module.oNoExportFacet 
goal: Lake.Name

full_name: Lake.ModuleData.o.noexport
code: module_data o.noexport : BuildJob FilePath
goal: Lake.ModuleData `o.noexport = Lake.BuildJob Lake.FilePath

full_name: Lake.«instFamilyDefNameModuleDataMkStr2BuildJobFilePath_.lake_3»
code: module_data o.noexport : BuildJob FilePath
goal: Lake.FamilyDef Lake.ModuleData `o.noexport (Lake.BuildJob Lake.FilePath)

full_name: Lake.Package.optReleaseFacet
code: /--
A package's *optional* cloud build release.
Does not fail if the release cannot be fetched.
-/
abbrev Package.optReleaseFacet 
goal: Lake.Name

full_name: Lake.«instFamilyDefNamePackageDataMkStr1BuildJobBool_.lake»
code: package_data optRelease : BuildJob Bool
goal: Lake.FamilyDef Lake.PackageData `optRelease (Lake.BuildJob Bool)

full_name: Lake.PackageData.optRelease
code: package_data optRelease : BuildJob Bool
goal: Lake.PackageData `optRelease = Lake.BuildJob Bool

full_name: Lake.Package.releaseFacet
code: /-- A package's cloud build release. -/
abbrev Package.releaseFacet 
goal: Lake.Name

full_name: Lake.PackageData.release
code: package_data release : BuildJob Unit
goal: Lake.PackageData `release = Lake.BuildJob Unit

full_name: Lake.«instFamilyDefNamePackageDataMkStr1BuildJobUnit_.lake»
code: package_data release : BuildJob Unit
goal: Lake.FamilyDef Lake.PackageData `release (Lake.BuildJob Unit)

full_name: Lake.Package.extraDepFacet
code: /-- A package's `extraDepTargets` mixed with its transitive dependencies'. -/
abbrev Package.extraDepFacet 
goal: Lake.Name

full_name: Lake.PackageData.extraDep
code: package_data extraDep : BuildJob Unit
goal: Lake.PackageData `extraDep = Lake.BuildJob Unit

full_name: Lake.«instFamilyDefNamePackageDataMkStr1BuildJobUnit_.lake_1»
code: package_data extraDep : BuildJob Unit
goal: Lake.FamilyDef Lake.PackageData `extraDep (Lake.BuildJob Unit)

full_name: Lake.LeanLib.leanArtsFacet
code: /-- A Lean library's Lean artifacts (i.e., `olean`, `ilean`, `c`). -/
abbrev LeanLib.leanArtsFacet 
goal: Lake.Name

full_name: Lake.TargetData.leanLib.leanArts
code: library_data leanArts : BuildJob Unit
goal: Lake.TargetData (`leanLib ++ `leanArts) = Lake.BuildJob Unit

full_name: Lake.«instFamilyDefNameTargetDataHAppendMkStr1BuildJobUnit_.lake»
code: library_data leanArts : BuildJob Unit
goal: Lake.FamilyDef Lake.TargetData (`leanLib ++ `leanArts) (Lake.BuildJob Unit)

full_name: Lake.LeanLib.staticFacet
code: /-- A Lean library's static artifact. -/
abbrev LeanLib.staticFacet 
goal: Lake.Name

full_name: Lake.TargetData.leanLib.static
code: library_data static : BuildJob FilePath
goal: Lake.TargetData (`leanLib ++ `static) = Lake.BuildJob Lake.FilePath

full_name: Lake.«instFamilyDefNameTargetDataHAppendMkStr1BuildJobFilePath_.lake»
code: library_data static : BuildJob FilePath
goal: Lake.FamilyDef Lake.TargetData (`leanLib ++ `static) (Lake.BuildJob Lake.FilePath)

full_name: Lake.LeanLib.staticExportFacet
code: /-- A Lean library's static artifact (with exported symbols). -/
abbrev LeanLib.staticExportFacet 
goal: Lake.Name

full_name: Lake.TargetData.leanLib.static.export
code: library_data static.export : BuildJob FilePath
goal: Lake.TargetData (`leanLib ++ `static.export) = Lake.BuildJob Lake.FilePath

full_name: Lake.«instFamilyDefNameTargetDataHAppendMkStr1MkStr2BuildJobFilePath_.lake»
code: library_data static.export : BuildJob FilePath
goal: Lake.FamilyDef Lake.TargetData (`leanLib ++ `static.export) (Lake.BuildJob Lake.FilePath)

full_name: Lake.LeanLib.sharedFacet
code: /-- A Lean library's shared artifact. -/
abbrev LeanLib.sharedFacet 
goal: Lake.Name

full_name: Lake.TargetData.leanLib.shared
code: library_data shared : BuildJob FilePath
goal: Lake.TargetData (`leanLib ++ `shared) = Lake.BuildJob Lake.FilePath

full_name: Lake.«instFamilyDefNameTargetDataHAppendMkStr1BuildJobFilePath_.lake_1»
code: library_data shared : BuildJob FilePath
goal: Lake.FamilyDef Lake.TargetData (`leanLib ++ `shared) (Lake.BuildJob Lake.FilePath)

full_name: Lake.LeanLib.extraDepFacet
code: /-- A Lean library's `extraDepTargets` mixed with its package's. -/
abbrev LeanLib.extraDepFacet 
goal: Lake.Name

full_name: Lake.«instFamilyDefNameTargetDataHAppendMkStr1BuildJobUnit_.lake_1»
code: library_data extraDep : BuildJob Unit
goal: Lake.FamilyDef Lake.TargetData (`leanLib ++ `extraDep) (Lake.BuildJob Unit)

full_name: Lake.TargetData.leanLib.extraDep
code: library_data extraDep : BuildJob Unit
goal: Lake.TargetData (`leanLib ++ `extraDep) = Lake.BuildJob Unit

full_name: Lake.LeanExe.exeFacet
code: /-- A Lean binary executable. -/
abbrev LeanExe.exeFacet 
goal: Lake.Name

full_name: Lake.TargetData.leanExe
code: target_data leanExe : BuildJob FilePath
goal: Lake.TargetData `leanExe = Lake.BuildJob Lake.FilePath

full_name: Lake.«instFamilyDefNameTargetDataMkStr1BuildJobFilePath_.lake»
code: target_data leanExe : BuildJob FilePath
goal: Lake.FamilyDef Lake.TargetData `leanExe (Lake.BuildJob Lake.FilePath)

full_name: Lake.ExternLib.staticFacet
code: /-- A external library's static binary. -/
abbrev ExternLib.staticFacet 
goal: Lake.Name

full_name: Lake.«instFamilyDefNameTargetDataMkStr2BuildJobFilePath_.lake»
code: target_data externLib.static : BuildJob FilePath
goal: Lake.FamilyDef Lake.TargetData `externLib.static (Lake.BuildJob Lake.FilePath)

full_name: Lake.TargetData.externLib.static
code: target_data externLib.static : BuildJob FilePath
goal: Lake.TargetData `externLib.static = Lake.BuildJob Lake.FilePath

full_name: Lake.ExternLib.sharedFacet
code: /-- A external library's shared binary. -/
abbrev ExternLib.sharedFacet 
goal: Lake.Name

full_name: Lake.TargetData.externLib.shared
code: target_data externLib.shared : BuildJob FilePath
goal: Lake.TargetData `externLib.shared = Lake.BuildJob Lake.FilePath

full_name: Lake.«instFamilyDefNameTargetDataMkStr2BuildJobFilePath_.lake_1»
code: target_data externLib.shared : BuildJob FilePath
goal: Lake.FamilyDef Lake.TargetData `externLib.shared (Lake.BuildJob Lake.FilePath)

full_name: Lake.ExternLib.dynlibFacet
code: /-- A external library's dynlib. -/
abbrev ExternLib.dynlibFacet 
goal: Lake.Name

full_name: Lake.instFamilyDefNameTargetDataMkStr2BuildJobDynlib
code: target_data externLib.dynlib : BuildJob Dynlib
goal: Lake.FamilyDef Lake.TargetData `externLib.dynlib (Lake.BuildJob Lake.Dynlib)

full_name: Lake.TargetData.externLib.dynlib
code: target_data externLib.dynlib : BuildJob Dynlib
goal: Lake.TargetData `externLib.dynlib = Lake.BuildJob Lake.Dynlib