Structure methods that require MetaM infrastructure #
If struct is an application of the form S .. with S a constant for a structure,
returns the name of the structure, otherwise throws an error.
Equations
Instances For
Structure projection declaration for mkProjections.
- ref : Syntax
- projName : Name
- paramInfoOverrides : List (Option BinderInfo)
Overrides to param binders to apply after param binder info inference.
Instances For
Adds projection functions to the environment for the one-constructor inductive type named n.
- The
projNames in eachStructProjDeclare used for the names of the declarations added to the environment. - If
instImplicitis true, then generates projections withselfbeing instance implicit.
Notes:
- This function supports everything that
Expr.projsupports (seelean::type_checker::infer_proj). This means we can generate projections for inductive types with one-constructor, even if it is an indexed family (which is not supported by thestructurecommand). - We throw errors in the cases that
Expr.projis not type-correct.
Equations
Instances For
Eta reduces all structures satisfying p in the whole expression.
See etaStruct? for reducing single expressions.
Equations
Instances For
def
Lean.Meta.instantiateStructDefaultValueFn?
{m : Type → Type}
[Monad m]
[MonadEnv m]
[MonadError m]
[MonadLiftT MetaM m]
[MonadControlT MetaM m]
(defaultFn : Name)
(levels? : Option (List Level))
(params : Array Expr)
(fieldVal? : Name → m (Option Expr))
:
Instantiates the default value given by the default value function defaultFn.
defaultFnis the default value function returned byLean.getEffectiveDefaultFnForField?orLean.getDefaultFnForField?.levels?is the list of levels to use, and otherwise the levels are inferred.paramsis the list of structure parameters. These are assumed to be correct for the given levels.fieldVal?is a function for getting fields for values, if they exist.
If successful, returns a set of fields used and the resulting default value. Success is expected. Callers should do metacontext backtracking themselves if needed.