File: .lake/packages/lean4/src/lean/Lean/Compiler/IR/LLVMBindings.lean

full_name: LLVM.CodegenFileType
code: structure CodegenFileType where
  private mk :: val : UInt64
goal: Type

full_name: LLVM.CodegenFileType.val
code: structure CodegenFileType where
  private mk :: val : UInt64
goal: UInt64

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.IR.LLVMBindings.0.LLVM.CodegenFileType.mk
code: structure CodegenFileType where
  private mk :: val : UInt64
goal: LLVM.CodegenFileType

full_name: LLVM.CodegenFileType.AssemblyFile
code: def CodegenFileType.AssemblyFile : CodegenFileType 
goal: LLVM.CodegenFileType

full_name: LLVM.CodegenFileType.ObjectFile
code: def CodegenFileType.ObjectFile : CodegenFileType 
goal: LLVM.CodegenFileType

full_name: LLVM.IntPredicate.val
code: structure IntPredicate where
  private mk :: val : UInt64
goal: UInt64

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.IR.LLVMBindings.0.LLVM.IntPredicate.mk
code: structure IntPredicate where
  private mk :: val : UInt64
goal: LLVM.IntPredicate

full_name: LLVM.IntPredicate
code: structure IntPredicate where
  private mk :: val : UInt64
goal: Type

full_name: LLVM.IntPredicate.EQ
code: def IntPredicate.EQ : IntPredicate 
goal: LLVM.IntPredicate

full_name: LLVM.IntPredicate.NE
code: def IntPredicate.NE : IntPredicate 
goal: LLVM.IntPredicate

full_name: LLVM.IntPredicate.UGT
code: def IntPredicate.UGT : IntPredicate 
goal: LLVM.IntPredicate

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.IR.LLVMBindings.0.LLVM.AttributeIndex.mk
code: structure AttributeIndex where
  private mk :: val : UInt64
goal: LLVM.AttributeIndex

full_name: LLVM.AttributeIndex.val
code: structure AttributeIndex where
  private mk :: val : UInt64
goal: UInt64

full_name: LLVM.AttributeIndex
code: structure AttributeIndex where
  private mk :: val : UInt64
goal: Type

full_name: LLVM.AttributeIndex.AttributeReturnIndex
code: def AttributeIndex.AttributeReturnIndex : AttributeIndex 
goal: LLVM.AttributeIndex

full_name: LLVM.AttributeIndex.AttributeFunctionIndex
code: def AttributeIndex.AttributeFunctionIndex : AttributeIndex 
goal: LLVM.AttributeIndex

full_name: LLVM.BasicBlock.ptr
code: structure BasicBlock (ctx : Context)  where
  private mk :: ptr : USize
goal: USize

full_name: LLVM.BasicBlock
code: structure BasicBlock (ctx : Context)  where
  private mk :: ptr : USize
goal: Type

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.IR.LLVMBindings.0.LLVM.BasicBlock.mk
code: structure BasicBlock (ctx : Context)  where
  private mk :: ptr : USize
goal: LLVM.BasicBlock ctx

full_name: LLVM.instNonemptyBasicBlock
code: instance : Nonempty (BasicBlock ctx) 
goal: ∀ {Context : Sort u_1} {ctx : Context}, Nonempty (LLVM.BasicBlock ctx)

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.IR.LLVMBindings.0.LLVM.Builder.mk
code: structure Builder (ctx : Context) where
  private mk :: ptr : USize
goal: LLVM.Builder ctx

full_name: LLVM.Builder.ptr
code: structure Builder (ctx : Context) where
  private mk :: ptr : USize
goal: USize

full_name: LLVM.Builder
code: structure Builder (ctx : Context) where
  private mk :: ptr : USize
goal: Type

full_name: LLVM.instNonemptyBuilder
code: instance : Nonempty (Builder ctx) 
goal: ∀ {Context : Sort u_1} {ctx : Context}, Nonempty (LLVM.Builder ctx)

full_name: LLVM.Context.ptr
code: structure Context where
  private mk :: ptr : USize
goal: USize

full_name: LLVM.Context
code: structure Context where
  private mk :: ptr : USize
goal: Type

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.IR.LLVMBindings.0.LLVM.Context.mk
code: structure Context where
  private mk :: ptr : USize
goal: LLVM.Context

full_name: LLVM.instNonemptyContext
code: instance : Nonempty Context 
goal: Nonempty LLVM.Context

full_name: LLVM.LLVMType
code: structure LLVMType (ctx : Context) where
  private mk :: ptr : USize
goal: Type

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.IR.LLVMBindings.0.LLVM.LLVMType.mk
code: structure LLVMType (ctx : Context) where
  private mk :: ptr : USize
goal: LLVM.LLVMType ctx

full_name: LLVM.LLVMType.ptr
code: structure LLVMType (ctx : Context) where
  private mk :: ptr : USize
goal: USize

full_name: LLVM.instNonemptyLLVMType
code: instance : Nonempty (LLVMType ctx) 
goal: Nonempty (LLVM.LLVMType ctx)

full_name: LLVM.MemoryBuffer
code: structure MemoryBuffer (ctx : Context) where
  private mk :: ptr : USize
goal: Type

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.IR.LLVMBindings.0.LLVM.MemoryBuffer.mk
code: structure MemoryBuffer (ctx : Context) where
  private mk :: ptr : USize
goal: LLVM.MemoryBuffer ctx

full_name: LLVM.MemoryBuffer.ptr
code: structure MemoryBuffer (ctx : Context) where
  private mk :: ptr : USize
goal: USize

full_name: LLVM.instNonemptyMemoryBuffer
code: instance : Nonempty (MemoryBuffer ctx) 
goal: Nonempty (LLVM.MemoryBuffer ctx)

full_name: LLVM.Module
code: structure Module (ctx : Context) where
  private mk :: ptr : USize
goal: Type

full_name: LLVM.Module.ptr
code: structure Module (ctx : Context) where
  private mk :: ptr : USize
goal: USize

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.IR.LLVMBindings.0.LLVM.Module.mk
code: structure Module (ctx : Context) where
  private mk :: ptr : USize
goal: LLVM.Module ctx

full_name: LLVM.instNonemptyModule
code: instance : Nonempty (Module ctx) 
goal: Nonempty (LLVM.Module ctx)

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.IR.LLVMBindings.0.LLVM.PassManager.mk
code: structure PassManager (ctx : Context) where
  private mk :: ptr : USize
goal: LLVM.PassManager ctx

full_name: LLVM.PassManager
code: structure PassManager (ctx : Context) where
  private mk :: ptr : USize
goal: Type

full_name: LLVM.PassManager.ptr
code: structure PassManager (ctx : Context) where
  private mk :: ptr : USize
goal: USize

full_name: LLVM.instNonemptyPassManager
code: instance : Nonempty (PassManager ctx) 
goal: Nonempty (LLVM.PassManager ctx)

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.IR.LLVMBindings.0.LLVM.PassManagerBuilder.mk
code: structure PassManagerBuilder (ctx : Context) where
  private mk :: ptr : USize
goal: LLVM.PassManagerBuilder ctx

full_name: LLVM.PassManagerBuilder
code: structure PassManagerBuilder (ctx : Context) where
  private mk :: ptr : USize
goal: Type

full_name: LLVM.PassManagerBuilder.ptr
code: structure PassManagerBuilder (ctx : Context) where
  private mk :: ptr : USize
goal: USize

full_name: LLVM.instNonemptyPassManagerBuilder
code: instance : Nonempty (PassManagerBuilder ctx) 
goal: Nonempty (LLVM.PassManagerBuilder ctx)

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.IR.LLVMBindings.0.LLVM.Target.mk
code: structure Target (ctx : Context) where
  private mk :: ptr : USize
goal: LLVM.Target ctx

full_name: LLVM.Target.ptr
code: structure Target (ctx : Context) where
  private mk :: ptr : USize
goal: USize

full_name: LLVM.Target
code: structure Target (ctx : Context) where
  private mk :: ptr : USize
goal: Type

full_name: LLVM.instNonemptyTarget
code: instance : Nonempty (Target ctx) 
goal: Nonempty (LLVM.Target ctx)

full_name: LLVM.TargetMachine
code: structure TargetMachine (ctx : Context) where
  private mk :: ptr : USize
goal: Type

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.IR.LLVMBindings.0.LLVM.TargetMachine.mk
code: structure TargetMachine (ctx : Context) where
  private mk :: ptr : USize
goal: LLVM.TargetMachine ctx

full_name: LLVM.TargetMachine.ptr
code: structure TargetMachine (ctx : Context) where
  private mk :: ptr : USize
goal: USize

full_name: LLVM.instNonemptyTargetMachine
code: instance : Nonempty (TargetMachine ctx) 
goal: Nonempty (LLVM.TargetMachine ctx)

full_name: LLVM.Value.ptr
code: structure Value (ctx : Context) where
  private mk :: ptr : USize
goal: USize

full_name: LLVM.Value
code: structure Value (ctx : Context) where
  private mk :: ptr : USize
goal: Type

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.IR.LLVMBindings.0.LLVM.Value.mk
code: structure Value (ctx : Context) where
  private mk :: ptr : USize
goal: LLVM.Value ctx

full_name: LLVM.instNonemptyValue
code: instance : Nonempty (Value ctx) 
goal: Nonempty (LLVM.Value ctx)

full_name: LLVM.Value.isNull
code: /-- Check if the value is a null pointer. --/
def Value.isNull (v : Value ctx) : Bool 
goal: Bool

full_name: LLVM.Value.getName
code: @[extern "lean_llvm_get_value_name2"]
opaque Value.getName {ctx : Context} (value : Value ctx) : BaseIO String
goal: BaseIO String

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.IR.LLVMBindings.0.LLVM.Attribute.mk
code: structure Attribute (ctx : Context) where
  private mk :: ptr : USize
goal: LLVM.Attribute ctx

full_name: LLVM.Attribute.ptr
code: structure Attribute (ctx : Context) where
  private mk :: ptr : USize
goal: USize

full_name: LLVM.Attribute
code: structure Attribute (ctx : Context) where
  private mk :: ptr : USize
goal: Type

full_name: LLVM.instNonemptyAttribute
code: instance : Nonempty (Attribute ctx) 
goal: Nonempty (LLVM.Attribute ctx)

full_name: LLVM.llvmInitializeTargetInfo
code: @[extern "lean_llvm_initialize_target_info"]
opaque llvmInitializeTargetInfo : BaseIO (Unit)
goal: BaseIO Unit

full_name: LLVM.createContext
code: @[extern "lean_llvm_create_context"]
opaque createContext : BaseIO (Context)
goal: BaseIO LLVM.Context

full_name: LLVM.createModule
code: @[extern "lean_llvm_create_module"]
opaque createModule (ctx : Context) (name : @&String) : BaseIO (Module ctx)
goal: BaseIO (LLVM.Module ctx)

full_name: LLVM.moduleToString
code: @[extern "lean_llvm_module_to_string"]
opaque moduleToString (m : Module ctx) : BaseIO String
goal: BaseIO String

full_name: LLVM.writeBitcodeToFile
code: @[extern "lean_llvm_write_bitcode_to_file"]
opaque writeBitcodeToFile (m : Module ctx) (path : @&String) : BaseIO Unit
goal: BaseIO Unit

full_name: LLVM.addFunction
code: @[extern "lean_llvm_add_function"]
opaque addFunction (m : Module ctx) (name : @&String) (type : LLVMType ctx) : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.getFirstFunction
code: @[extern "lean_llvm_get_first_function"]
opaque getFirstFunction (m : Module ctx) : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.getNextFunction
code: @[extern "lean_llvm_get_next_function"]
opaque getNextFunction (glbl : Value ctx) : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.getNamedFunction
code: @[extern "lean_llvm_get_named_function"]
opaque getNamedFunction (m : Module ctx) (name : @&String) : BaseIO (Option (Value ctx))
goal: BaseIO (Option (LLVM.Value ctx))

full_name: LLVM.addGlobal
code: @[extern "lean_llvm_add_global"]
opaque addGlobal (m : Module ctx) (name : @&String) (type : LLVMType ctx) : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.getNamedGlobal
code: @[extern "lean_llvm_get_named_global"]
opaque getNamedGlobal (m : Module ctx) (name : @&String) : BaseIO (Option (Value ctx))
goal: BaseIO (Option (LLVM.Value ctx))

full_name: LLVM.getFirstGlobal
code: @[extern "lean_llvm_get_first_global"]
opaque getFirstGlobal (m : Module ctx) : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.getNextGlobal
code: @[extern "lean_llvm_get_next_global"]
opaque getNextGlobal (glbl : Value ctx) : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.buildGlobalString
code: @[extern "lean_llvm_build_global_string"]
opaque buildGlobalString (builder : Builder ctx) (value : @&String) (name : @&String := "") : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.isDeclaration
code: @[extern "llvm_is_declaration"]
opaque isDeclaration (global : Value ctx) : BaseIO Bool
goal: BaseIO Bool

full_name: LLVM.setInitializer
code: @[extern "lean_llvm_set_initializer"]
opaque setInitializer (glbl : Value ctx) (val : Value ctx) : BaseIO Unit
goal: BaseIO Unit

full_name: LLVM.functionType
code: @[extern "lean_llvm_function_type"]
opaque functionType (retty : LLVMType ctx) (args : @&Array (LLVMType ctx)) (isVarArg : Bool := false) : BaseIO (LLVMType ctx)
goal: BaseIO (LLVM.LLVMType ctx)

full_name: LLVM.voidType
code: @[extern "lean_llvm_void_type_in_context"]
opaque voidType (ctx : Context) : BaseIO (LLVMType ctx)
goal: BaseIO (LLVM.LLVMType ctx)

full_name: LLVM.intTypeInContext
code: @[extern "lean_llvm_int_type_in_context"]
opaque intTypeInContext (ctx : Context) (width : UInt64) : BaseIO (LLVMType ctx)
goal: BaseIO (LLVM.LLVMType ctx)

full_name: LLVM.opaquePointerTypeInContext
code: @[extern "lean_llvm_opaque_pointer_type_in_context"]
opaque opaquePointerTypeInContext (ctx : Context) (addrspace: UInt64 := 0) : BaseIO (LLVMType ctx)
goal: BaseIO (LLVM.LLVMType ctx)

full_name: LLVM.floatTypeInContext
code: @[extern "lean_llvm_float_type_in_context"]
opaque floatTypeInContext (ctx : Context) : BaseIO (LLVMType ctx)
goal: BaseIO (LLVM.LLVMType ctx)

full_name: LLVM.doubleTypeInContext
code: @[extern "lean_llvm_double_type_in_context"]
opaque doubleTypeInContext (ctx : Context) : BaseIO (LLVMType ctx)
goal: BaseIO (LLVM.LLVMType ctx)

full_name: LLVM.pointerType
code: @[extern "lean_llvm_pointer_type"]
opaque pointerType (elemty : LLVMType ctx) : BaseIO (LLVMType ctx)
goal: BaseIO (LLVM.LLVMType ctx)

full_name: LLVM.arrayType
code: @[extern "lean_llvm_array_type"]
opaque arrayType (elemty : LLVMType ctx) (nelem : UInt64) : BaseIO (LLVMType ctx)
goal: BaseIO (LLVM.LLVMType ctx)

full_name: LLVM.constArray
code: @[extern "lean_llvm_const_array"]
opaque constArray (elemty : LLVMType ctx) (vals : @&Array (Value ctx)) : BaseIO (LLVMType ctx)
goal: BaseIO (LLVM.LLVMType ctx)

full_name: LLVM.constString
code: @[extern "lean_llvm_const_string"]
opaque constString (ctx : Context) (str : @&String) : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.constPointerNull
code: @[extern "lean_llvm_const_pointer_null"]
opaque constPointerNull (elemty : LLVMType ctx) : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.getUndef
code: @[extern "lean_llvm_get_undef"]
opaque getUndef (elemty : LLVMType ctx) : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.createBuilderInContext
code: @[extern "lean_llvm_create_builder_in_context"]
opaque createBuilderInContext (ctx : Context) : BaseIO (Builder ctx)
goal: BaseIO (LLVM.Builder ctx)

full_name: LLVM.appendBasicBlockInContext
code: @[extern "lean_llvm_append_basic_block_in_context"]
opaque appendBasicBlockInContext (ctx : Context) (fn :  Value ctx) (name :  @&String) : BaseIO (BasicBlock ctx)
goal: BaseIO (LLVM.BasicBlock ctx)

full_name: LLVM.countBasicBlocks
code: @[extern "lean_llvm_count_basic_blocks"]
opaque countBasicBlocks (fn : Value ctx) : BaseIO UInt64
goal: BaseIO UInt64

full_name: LLVM.getEntryBasicBlock
code: @[extern "lean_llvm_get_entry_basic_block"]
opaque getEntryBasicBlock (fn : Value ctx) : BaseIO (BasicBlock ctx)
goal: BaseIO (LLVM.BasicBlock ctx)

full_name: LLVM.getFirstInstruction
code: @[extern "lean_llvm_get_first_instruction"]
opaque getFirstInstruction (bb : BasicBlock ctx) : BaseIO (Option (Value ctx))
goal: BaseIO (Option (LLVM.Value ctx))

full_name: LLVM.positionBuilderBefore
code: @[extern "lean_llvm_position_builder_before"]
opaque positionBuilderBefore (builder : Builder ctx) (instr : Value ctx) : BaseIO Unit
goal: BaseIO Unit

full_name: LLVM.positionBuilderAtEnd
code: @[extern "lean_llvm_position_builder_at_end"]
opaque positionBuilderAtEnd (builder : Builder ctx) (bb :  BasicBlock ctx) : BaseIO Unit
goal: {Context : Sort u_1} → {ctx : Context} → LLVM.Builder ctx → LLVM.BasicBlock ctx → BaseIO Unit

full_name: LLVM.buildCall2
code: @[extern "lean_llvm_build_call2"]
opaque buildCall2 (builder : Builder ctx) (ty: LLVMType ctx) (fn : Value ctx) (args : @&Array (Value ctx)) (name :  @&String := "") : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.setTailCall
code: @[extern "lean_llvm_set_tail_call"]
opaque setTailCall (fn : Value ctx) (istail : Bool) : BaseIO Unit
goal: BaseIO Unit

full_name: LLVM.buildCondBr
code: @[extern "lean_llvm_build_cond_br"]
opaque buildCondBr (builder : Builder ctx) (if_ : Value ctx) (thenbb : BasicBlock ctx) (elsebb : BasicBlock ctx) : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.buildBr
code: @[extern "lean_llvm_build_br"]
opaque buildBr (builder : Builder ctx) (bb : BasicBlock ctx) : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.buildAlloca
code: @[extern "lean_llvm_build_alloca"]
opaque buildAlloca (builder : Builder ctx) (ty : LLVMType ctx) (name : @&String := "") : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.buildLoad2
code: @[extern "lean_llvm_build_load2"]
opaque buildLoad2 (builder : Builder ctx) (ty: LLVMType ctx) (val : Value ctx) (name : @&String := "") : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.buildStore
code: @[extern "lean_llvm_build_store"]
opaque buildStore (builder : Builder ctx) (val : Value ctx) (store_loc_ptr : Value ctx) : BaseIO Unit
goal: BaseIO Unit

full_name: LLVM.buildRet
code: @[extern "lean_llvm_build_ret"]
opaque buildRet (builder : Builder ctx) (val : Value ctx) : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.buildUnreachable
code: @[extern "lean_llvm_build_unreachable"]
opaque buildUnreachable (builder : Builder ctx) : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.buildGEP2
code: @[extern "lean_llvm_build_gep2"]
opaque buildGEP2 (builder : Builder ctx) (ty: LLVMType ctx) (base : Value ctx) (ixs : @&Array (Value ctx)) (name : @&String := "") : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.buildInBoundsGEP2
code: @[extern "lean_llvm_build_inbounds_gep2"]
opaque buildInBoundsGEP2 (builder : Builder ctx) (ty: LLVMType ctx) (base : Value ctx) (ixs : @&Array (Value ctx)) (name : @&String := "") : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.buildSext
code: @[extern "lean_llvm_build_sext"]
opaque buildSext (builder : Builder ctx) (val : Value ctx) (destTy : LLVMType ctx) (name : @&String := "") : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.buildZext
code: @[extern "lean_llvm_build_zext"]
opaque buildZext (builder : Builder ctx) (val : Value ctx) (destTy : LLVMType ctx) (name : @&String := "") : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.buildSextOrTrunc
code: @[extern "lean_llvm_build_sext_or_trunc"]
opaque buildSextOrTrunc (builder : Builder ctx) (val : Value ctx) (destTy : LLVMType ctx) (name : @&String := "") : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.buildSwitch
code: @[extern "lean_llvm_build_switch"]
opaque buildSwitch (builder : Builder ctx) (val : Value ctx) (elseBB : BasicBlock ctx) (numCasesHint : UInt64) : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.buildPtrToInt
code: @[extern "lean_llvm_build_ptr_to_int"]
opaque buildPtrToInt (builder : Builder ctx) (ptr : Value ctx) (destTy : LLVMType ctx) (name : @&String := "") : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.buildMul
code: @[extern "lean_llvm_build_mul"]
opaque buildMul (builder : Builder ctx) (x y : Value ctx) (name : @&String := "") : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.buildAdd
code: @[extern "lean_llvm_build_add"]
opaque buildAdd (builder : Builder ctx) (x y : Value ctx) (name : @&String := "") : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.buildSub
code: @[extern "lean_llvm_build_sub"]
opaque buildSub (builder : Builder ctx) (x y : Value ctx) (name : @&String := "") : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.buildNot
code: @[extern "lean_llvm_build_not"]
opaque buildNot (builder : Builder ctx) (x : Value ctx) (name : @&String := "") : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.buildICmp
code: @[extern "lean_llvm_build_icmp"]
opaque buildICmp (builder : Builder ctx) (predicate : IntPredicate) (x y : Value ctx) (name : @&String := "") : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.addCase
code: @[extern "lean_llvm_add_case"]
opaque addCase (switch onVal : Value ctx) (destBB : BasicBlock ctx) : BaseIO Unit
goal: BaseIO Unit

full_name: LLVM.getInsertBlock
code: @[extern "lean_llvm_get_insert_block"]
opaque getInsertBlock (builder : Builder ctx) : BaseIO (BasicBlock ctx)
goal: {Context : Sort u_1} → {ctx : Context} → LLVM.Builder ctx → BaseIO (LLVM.BasicBlock ctx)

full_name: LLVM.clearInsertionPosition
code: @[extern "lean_llvm_clear_insertion_position"]
opaque clearInsertionPosition (builder : Builder ctx) : BaseIO Unit
goal: {Context : Sort u_1} → {ctx : Context} → LLVM.Builder ctx → BaseIO Unit

full_name: LLVM.getBasicBlockParent
code: @[extern "lean_llvm_get_basic_block_parent"]
opaque getBasicBlockParent (bb : BasicBlock ctx) : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.typeOf
code: @[extern "lean_llvm_type_of"]
opaque typeOf (val : Value ctx) : BaseIO (LLVMType ctx)
goal: BaseIO (LLVM.LLVMType ctx)

full_name: LLVM.constInt
code: @[extern "lean_llvm_const_int"]
opaque constInt (intty : LLVMType ctx) (value : UInt64) (signExtend : @Bool := false) : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.printModuletoString
code: @[extern "lean_llvm_print_module_to_string"]
opaque printModuletoString (mod : Module ctx) : BaseIO (String)
goal: BaseIO String

full_name: LLVM.printModuletoFile
code: @[extern "lean_llvm_print_module_to_file"]
opaque printModuletoFile (mod : Module ctx) (file : @&String) : BaseIO Unit
goal: BaseIO Unit

full_name: LLVM.countParams
code: @[extern "llvm_count_params"]
opaque countParams (fn : Value ctx) : BaseIO UInt64
goal: BaseIO UInt64

full_name: LLVM.getParam
code: @[extern "llvm_get_param"]
opaque getParam (fn : Value ctx) (ix : UInt64) : BaseIO (Value ctx)
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.createMemoryBufferWithContentsOfFile
code: @[extern "lean_llvm_create_memory_buffer_with_contents_of_file"]
opaque createMemoryBufferWithContentsOfFile (path : @&String) : BaseIO (MemoryBuffer ctx)
goal: BaseIO (LLVM.MemoryBuffer ctx)

full_name: LLVM.parseBitcode
code: @[extern "lean_llvm_parse_bitcode"]
opaque parseBitcode (ctx : Context) (membuf : MemoryBuffer ctx) : BaseIO (Module ctx)
goal: BaseIO (LLVM.Module ctx)

full_name: LLVM.linkModules
code: @[extern "lean_llvm_link_modules"]
opaque linkModules (dest : Module ctx) (src : Module ctx) : BaseIO Unit
goal: BaseIO Unit

full_name: LLVM.getDefaultTargetTriple
code: @[extern "lean_llvm_get_default_target_triple"]
opaque getDefaultTargetTriple : BaseIO String
goal: BaseIO String

full_name: LLVM.getTargetFromTriple
code: @[extern "lean_llvm_get_target_from_triple"]
opaque getTargetFromTriple (triple : @&String) : BaseIO (Target ctx)
goal: BaseIO (LLVM.Target ctx)

full_name: LLVM.createTargetMachine
code: @[extern "lean_llvm_create_target_machine"]
opaque createTargetMachine (target : Target ctx) (tripleStr : @&String) (cpu : @&String) (features : @&String) : BaseIO (TargetMachine ctx)
goal: BaseIO (LLVM.TargetMachine ctx)

full_name: LLVM.targetMachineEmitToFile
code: @[extern "lean_llvm_target_machine_emit_to_file"]
opaque targetMachineEmitToFile (targetMachine : TargetMachine ctx) (module : Module ctx) (filepath : @&String) (codegenType : LLVM.CodegenFileType) : BaseIO Unit
goal: BaseIO Unit

full_name: LLVM.createPassManager
code: @[extern "lean_llvm_create_pass_manager"]
opaque createPassManager : BaseIO (PassManager ctx)
goal: BaseIO (LLVM.PassManager ctx)

full_name: LLVM.disposePassManager
code: @[extern "lean_llvm_dispose_pass_manager"]
opaque disposePassManager (pm : PassManager ctx) : BaseIO Unit
goal: BaseIO Unit

full_name: LLVM.runPassManager
code: @[extern "lean_llvm_run_pass_manager"]
opaque runPassManager (pm : PassManager ctx) (mod : Module ctx): BaseIO Unit
goal: BaseIO Unit

full_name: LLVM.createPassManagerBuilder
code: @[extern "lean_llvm_create_pass_manager_builder"]
opaque createPassManagerBuilder : BaseIO (PassManagerBuilder ctx)
goal: BaseIO (LLVM.PassManagerBuilder ctx)

full_name: LLVM.disposePassManagerBuilder
code: @[extern "lean_llvm_dispose_pass_manager_builder"]
opaque disposePassManagerBuilder (pmb : PassManagerBuilder ctx) : BaseIO Unit
goal: BaseIO Unit

full_name: LLVM.PassManagerBuilder.setOptLevel
code: @[extern "lean_llvm_pass_manager_builder_set_opt_level"]
opaque PassManagerBuilder.setOptLevel (pmb : PassManagerBuilder ctx) (optLevel : unsigned) : BaseIO Unit
goal: BaseIO Unit

full_name: LLVM.PassManagerBuilder.populateModulePassManager
code: @[extern "lean_llvm_pass_manager_builder_populate_module_pass_manager"]
opaque PassManagerBuilder.populateModulePassManager (pmb : PassManagerBuilder ctx) (pm : PassManager ctx): BaseIO Unit
goal: BaseIO Unit

full_name: LLVM.disposeTargetMachine
code: @[extern "lean_llvm_dispose_target_machine"]
opaque disposeTargetMachine (tm : TargetMachine ctx) : BaseIO Unit
goal: BaseIO Unit

full_name: LLVM.disposeModule
code: @[extern "lean_llvm_dispose_module"]
opaque disposeModule (m : Module ctx) : BaseIO Unit
goal: BaseIO Unit

full_name: LLVM.verifyModule
code: @[extern "lean_llvm_verify_module"]
opaque verifyModule (m : Module ctx) : BaseIO (Option String)
goal: BaseIO (Option String)

full_name: LLVM.createStringAttribute
code: @[extern "lean_llvm_create_string_attribute"]
opaque createStringAttribute (key : String) (value : String) : BaseIO (Attribute ctx)
goal: BaseIO (LLVM.Attribute ctx)

full_name: LLVM.addAttributeAtIndex
code: @[extern "lean_llvm_add_attribute_at_index"]
opaque addAttributeAtIndex (fn : Value ctx) (idx: AttributeIndex) (attr: Attribute ctx) : BaseIO Unit
goal: BaseIO Unit

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.IR.LLVMBindings.0.LLVM.Visibility.mk
code: structure Visibility where
  private mk :: val : UInt64
goal: LLVM.Visibility

full_name: LLVM.Visibility
code: structure Visibility where
  private mk :: val : UInt64
goal: Type

full_name: LLVM.Visibility.val
code: structure Visibility where
  private mk :: val : UInt64
goal: UInt64

full_name: LLVM.Visibility.default
code: def Visibility.default   : Visibility 
goal: LLVM.Visibility

full_name: LLVM.Visibility.hidden
code: def Visibility.hidden    : Visibility 
goal: LLVM.Visibility

full_name: LLVM.Visibility.protected
code: def Visibility.protected : Visibility 
goal: LLVM.Visibility

full_name: LLVM.setVisibility
code: @[extern "lean_llvm_set_visibility"]
opaque setVisibility {ctx : Context} (value : Value ctx) (visibility : Visibility) : BaseIO Unit
goal: BaseIO Unit

full_name: LLVM.DLLStorageClass
code: structure DLLStorageClass where
  private mk :: val : UInt64
goal: Type

full_name: LLVM.DLLStorageClass.val
code: structure DLLStorageClass where
  private mk :: val : UInt64
goal: UInt64

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.IR.LLVMBindings.0.LLVM.DLLStorageClass.mk
code: structure DLLStorageClass where
  private mk :: val : UInt64
goal: LLVM.DLLStorageClass

full_name: LLVM.DLLStorageClass.default
code: def DLLStorageClass.default : DLLStorageClass 
goal: LLVM.DLLStorageClass

full_name: LLVM.DLLStorageClass.import
code: def DLLStorageClass.import  : DLLStorageClass 
goal: LLVM.DLLStorageClass

full_name: LLVM.DLLStorageClass.export
code: def DLLStorageClass.export  : DLLStorageClass 
goal: LLVM.DLLStorageClass

full_name: LLVM.setDLLStorageClass
code: @[extern "lean_llvm_set_dll_storage_class"]
opaque setDLLStorageClass {ctx : Context} (value : Value ctx) (dllStorageClass : DLLStorageClass) : BaseIO Unit
goal: BaseIO Unit

full_name: LLVM.Linkage.val
code: structure Linkage where
  private mk :: val : UInt64
goal: UInt64

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.IR.LLVMBindings.0.LLVM.Linkage.mk
code: structure Linkage where
  private mk :: val : UInt64
goal: LLVM.Linkage

full_name: LLVM.Linkage
code: structure Linkage where
  private mk :: val : UInt64
goal: Type

full_name: LLVM.Linkage.external
code: /-- Externally visible function -/
def Linkage.external : Linkage 
goal: LLVM.Linkage

full_name: LLVM.Linkage.availableExternally
code: def Linkage.availableExternally : Linkage 
goal: LLVM.Linkage

full_name: LLVM.Linkage.linkOnceAny
code: /-- Keep one copy of function when linking (inline) -/
def Linkage.linkOnceAny : Linkage 
goal: LLVM.Linkage

full_name: LLVM.Linkage.linkOnceODR
code: /-- Same, but only replaced by something equivalent  -/
def Linkage.linkOnceODR : Linkage 
goal: LLVM.Linkage

full_name: LLVM.Linkage.linkOnceODRAutoHide
code: /-- Obsolete -/
def Linkage.linkOnceODRAutoHide : Linkage 
goal: LLVM.Linkage

full_name: LLVM.Linkage.weakAny
code: /-- Keep one copy of function when linking (weak) -/
def Linkage.weakAny : Linkage 
goal: LLVM.Linkage

full_name: LLVM.Linkage.weakODR
code: /-- Same, but only replaced by something equivalent -/
def Linkage.weakODR : Linkage 
goal: LLVM.Linkage

full_name: LLVM.Linkage.appending
code: /-- Special purpose, only applies to global arrays -/
def Linkage.appending : Linkage 
goal: LLVM.Linkage

full_name: LLVM.Linkage.internal
code: /-- Rename collisions when linking (static functions) -/
def Linkage.internal : Linkage 
goal: LLVM.Linkage

full_name: LLVM.Linkage.private
code: /-- Like Internal, but omit from symbol table -/
def Linkage.private : Linkage 
goal: LLVM.Linkage

full_name: LLVM.Linkage.dllImport
code: /-- Obsolete -/
def Linkage.dllImport : Linkage 
goal: LLVM.Linkage

full_name: LLVM.Linkage.dllExport
code: /-- Obsolete -/
def Linkage.dllExport : Linkage 
goal: LLVM.Linkage

full_name: LLVM.Linkage.externalWeak
code: /-- ExternalWeak linkage description -/
def Linkage.externalWeak : Linkage 
goal: LLVM.Linkage

full_name: LLVM.Linkage.ghost
code: /-- Obsolete -/
def Linkage.ghost : Linkage 
goal: LLVM.Linkage

full_name: LLVM.Linkage.common
code: /-- Tentative definitions -/
def Linkage.common : Linkage 
goal: LLVM.Linkage

full_name: LLVM.Linkage.linkerPrivate
code: /-- Like Private, but linker removes. -/
def Linkage.linkerPrivate : Linkage 
goal: LLVM.Linkage

full_name: LLVM.Linkage.linkerPrivateWeak
code: /-- Like LinkerPrivate, but is weak. -/
def Linkage.linkerPrivateWeak : Linkage 
goal: LLVM.Linkage

full_name: LLVM.setLinkage
code: @[extern "lean_llvm_set_linkage"]
opaque setLinkage {ctx : Context} (value : Value ctx) (linkage : Linkage) : BaseIO Unit
goal: BaseIO Unit

full_name: LLVM.i1Type
code: def i1Type (ctx : LLVM.Context) : BaseIO (LLVM.LLVMType ctx) 
goal: BaseIO (LLVM.LLVMType ctx)

full_name: LLVM.i8Type
code: def i8Type (ctx : LLVM.Context) : BaseIO (LLVM.LLVMType ctx) 
goal: BaseIO (LLVM.LLVMType ctx)

full_name: LLVM.i16Type
code: def i16Type (ctx : LLVM.Context) : BaseIO (LLVM.LLVMType ctx) 
goal: BaseIO (LLVM.LLVMType ctx)

full_name: LLVM.i32Type
code: def i32Type (ctx : LLVM.Context) : BaseIO (LLVM.LLVMType ctx) 
goal: BaseIO (LLVM.LLVMType ctx)

full_name: LLVM.i64Type
code: def i64Type (ctx : LLVM.Context) : BaseIO (LLVM.LLVMType ctx) 
goal: BaseIO (LLVM.LLVMType ctx)

full_name: LLVM.voidPtrType
code: def voidPtrType (ctx : LLVM.Context) : BaseIO (LLVM.LLVMType ctx) 
goal: BaseIO (LLVM.LLVMType ctx)

full_name: LLVM.i8PtrType
code: def i8PtrType (ctx : LLVM.Context) : BaseIO (LLVM.LLVMType ctx) 
goal: BaseIO (LLVM.LLVMType ctx)

full_name: LLVM.constTrue
code: def constTrue (ctx : Context) : BaseIO (Value ctx) 
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.constFalse
code: def constFalse (ctx : Context) : BaseIO (Value ctx) 
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.constInt'
code: def constInt' (ctx : Context) (width : UInt64) (value : UInt64) (signExtend : Bool := false) : BaseIO (Value ctx) 
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.constInt1
code: def constInt1 (ctx : Context) (value : UInt64) (signExtend : Bool := false) : BaseIO (Value ctx) 
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.constInt8
code: def constInt8 (ctx : Context) (value : UInt64) (signExtend : Bool := false) : BaseIO (Value ctx) 
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.constInt32
code: def constInt32 (ctx : Context) (value : UInt64) (signExtend : Bool := false) : BaseIO (Value ctx) 
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.constInt64
code: def constInt64 (ctx : Context) (value : UInt64) (signExtend : Bool := false) : BaseIO (Value ctx) 
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.constIntSizeT
code: def constIntSizeT (ctx : Context) (value : UInt64) (signExtend : Bool := false) : BaseIO (Value ctx) 
goal: BaseIO (LLVM.Value ctx)

full_name: LLVM.constIntUnsigned
code: def constIntUnsigned (ctx : Context) (value : UInt64) (signExtend : Bool := false) : BaseIO (Value ctx) 
goal: BaseIO (LLVM.Value ctx)