File: .lake/packages/lean4/src/lean/Lean/Meta/Tactic/Induction.lean

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.Tactic.Induction.0.Lean.Meta.getTargetArity
code: private partial def getTargetArity : Expr → Nat
  
goal: Lean.Expr → Nat

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.Tactic.Induction.0.Lean.Meta.addRecParams
code: private def addRecParams (mvarId : MVarId) (majorTypeArgs : Array Expr) : List (Option Nat) → Expr → MetaM Expr
  
goal: List (Option Nat) → Lean.Expr → Lean.MetaM Lean.Expr

full_name: Lean.Meta.InductionSubgoal.fields
code: structure InductionSubgoal where
  mvarId : MVarId
  fields : Array Expr := #[]
  subst  : FVarSubst := {}
  deriving Inhabited
goal: Array Lean.Expr

full_name: Lean.Meta.instInhabitedInductionSubgoal
code: structure InductionSubgoal where
  mvarId : MVarId
  fields : Array Expr := #[]
  subst  : FVarSubst := {}
  deriving Inhabited
goal: Inhabited Lean.Meta.InductionSubgoal

full_name: Lean.Meta.InductionSubgoal
code: structure InductionSubgoal where
  mvarId : MVarId
  fields : Array Expr := #[]
  subst  : FVarSubst := {}
  deriving Inhabited
goal: Type

full_name: Lean.Meta.InductionSubgoal.mvarId
code: structure InductionSubgoal where
  mvarId : MVarId
  fields : Array Expr := #[]
  subst  : FVarSubst := {}
  deriving Inhabited
goal: Lean.MVarId

full_name: Lean.Meta.InductionSubgoal.subst
code: structure InductionSubgoal where
  mvarId : MVarId
  fields : Array Expr := #[]
  subst  : FVarSubst := {}
  deriving Inhabited
goal: Lean.Meta.FVarSubst

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.Tactic.Induction.0.Lean.Meta.getTypeBody
code: private def getTypeBody (mvarId : MVarId) (type : Expr) (x : Expr) : MetaM Expr 
goal: Lean.MetaM Lean.Expr

full_name: Lean.Meta.instInhabitedAltVarNames
code: structure AltVarNames where
  explicit : Bool := false   -- true if `@` modifier was used
  varNames : List Name := []
  deriving Inhabited
goal: Inhabited Lean.Meta.AltVarNames

full_name: Lean.Meta.AltVarNames
code: structure AltVarNames where
  explicit : Bool := false   -- true if `@` modifier was used
  varNames : List Name := []
  deriving Inhabited
goal: Type

full_name: Lean.Meta.AltVarNames.varNames
code: structure AltVarNames where
  explicit : Bool := false   -- true if `@` modifier was used
  varNames : List Name := []
  deriving Inhabited
goal: List Lean.Name

full_name: Lean.Meta.AltVarNames.explicit
code: structure AltVarNames where
  explicit : Bool := false   -- true if `@` modifier was used
  varNames : List Name := []
  deriving Inhabited
goal: Bool

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.Tactic.Induction.0.Lean.Meta.finalize.loop
code: private partial def finalize
    (mvarId : MVarId) (givenNames : Array AltVarNames) (recursorInfo : RecursorInfo)
    (reverted : Array FVarId) (major : Expr) (indices : Array Expr) (baseSubst : FVarSubst) (recursor : Expr)
    : MetaM (Array InductionSubgoal) 
goal: Lean.MetaM (Array Lean.Meta.InductionSubgoal)

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.Tactic.Induction.0.Lean.Meta.finalize
code: private partial def finalize
    (mvarId : MVarId) (givenNames : Array AltVarNames) (recursorInfo : RecursorInfo)
    (reverted : Array FVarId) (major : Expr) (indices : Array Expr) (baseSubst : FVarSubst) (recursor : Expr)
    : MetaM (Array InductionSubgoal) 
goal: Lean.MetaM (Array Lean.Meta.InductionSubgoal)

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.Tactic.Induction.0.Lean.Meta.throwUnexpectedMajorType
code: private def throwUnexpectedMajorType (tacticName : Name) (mvarId : MVarId) (majorType : Expr) : MetaM α 
goal: Lean.MetaM α

full_name: Lean.Meta.getMajorTypeIndices
code: /--
Auxiliary method for implementing `induction`-like tactics.
It retrieves indices from `majorType` using `recursorInfo`.
Remark: `mvarId` and `tacticName` are used to generate error messages.
-/
def getMajorTypeIndices (mvarId : MVarId) (tacticName : Name) (recursorInfo : RecursorInfo) (majorType : Expr) : MetaM (Array Expr) 
goal: Lean.MetaM (Array Lean.Expr)

full_name: Lean.Meta.mkRecursorAppPrefix
code: /--
Auxiliary method for implementing `induction`-like tactics.
It creates the prefix of a recursor application up-to `motive`.
The motive is computed by abstracting `major` and `indices` at `mvarId.getType`.
It retrieves indices from `majorType` using `recursorInfo`.
Remark: `mvarId` and `tacticName` are used to generate error messages.
-/
def mkRecursorAppPrefix (mvarId : MVarId) (tacticName : Name) (majorFVarId : FVarId) (recursorInfo : RecursorInfo) (indices : Array Expr) : MetaM Expr 
goal: Lean.MetaM Lean.Expr

full_name: Lean.MVarId.induction
code: def _root_.Lean.MVarId.induction (mvarId : MVarId) (majorFVarId : FVarId) (recursorName : Name) (givenNames : Array AltVarNames := #[]) : MetaM (Array InductionSubgoal) 
goal: Lean.MetaM (Array Lean.Meta.InductionSubgoal)

full_name: Lean.Meta.induction
code: @[deprecated MVarId.induction (since := "2022-07-15")]
def induction (mvarId : MVarId) (majorFVarId : FVarId) (recursorName : Name) (givenNames : Array AltVarNames := #[]) : MetaM (Array InductionSubgoal) 
goal: Lean.MetaM (Array Lean.Meta.InductionSubgoal)

full_name: Lean.Meta.initFn._@..lake.packages.lean4.src.lean.Lean.Meta.Tactic.Induction._hyg.3629
code: builtin_initialize registerTraceClass `Meta.Tactic.induction
goal: IO Unit