This structure contains the data carried in InductiveElabStep1 that are solely used in
mutual coinductive predicate elaboration.
- declId : Syntax
Declaration Id from the original
InductiveView - declName : Name
Declaration name of the predicate
- ref : Syntax
Ref from the original
InductiveView - modifiers : Modifiers
Modifiers from the original
InductiveView Constructor refs from the original
InductiveView- isGreatest : Bool
The flag that is
trueif the predicate was defined viacoinductivekeyword andfalseotherwise. When we elaborate a mutual definition, we allow mixingcoinductiveandinductivekeywords, and hence we need to record this information.
Instances For
Equations
Instances For
Equations
- Lean.Elab.Command.addFunctorPostfix x✝ = x✝ ++ `_functor
Instances For
Equations
Instances For
Equations
- Lean.Elab.Command.removeFunctorPostfixInCtor (p.str s) = (Lean.Elab.Command.removeFunctorPostfix p).str s
- Lean.Elab.Command.removeFunctorPostfixInCtor x✝ = panicWithPosWithDecl "Lean.Elab.Coinductive" "Lean.Elab.Command.removeFunctorPostfixInCtor" 124 13 "UnexpectedName"
Instances For
Main entry point for elaborating mutual coinductive predicates. This function is called after generating a flat inductive and adding it to the environment.
We look at corresponding existential form of the flat inductive (see Meta.MkIffOfInductiveProp),
use it to populate PreDefinitions that correspond to the predicates, and then we call
the PartialFixpoint machinery to register them as (co)inductive predicates.
Finally, we generate constructors for each of the predicates, that correspond to the constructors that were given by the user.
Equations
- One or more equations did not get rendered due to their size.