Constructing inclusions #
This file defines the main drivers of the inclusion tactic.
Given an expression e, mkExprInclusionBody recursively applies InclusionExts to construct an
ExprInclusionBody for e. Then toExprInclusion applies HypothesisExts to the local context to
construct inclusion hypotheses for the body's inclusion variables and closes the body into an
ExprInclusion.
Construct an ExprInclusionBody for e.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Check that body.proofBody is a proof of e ∈ body.inclusionBody and infer its IType.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Run hypothesis extensions on hypothesis h.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Run hypothesis extensions on all declarations in the local context.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct the universal inclusion body for iExpr.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Combine the candidate hypothesis bodies for iExpr using Refine, or use its Univ
instance when there are no candidates.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given an output : IExpr and a body : ExprInclusionBody, construct an ExprInclusion for
output.expr by collecting inclusion hypotheses from the local context and closing the body.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct an ExprInclusion for e.
Equations
- Inclusion.toExprInclusion e = do let body ← Inclusion.mkExprInclusionBody e let iType ← liftM (body.inferIType e) (Inclusion.mkExprInclusion { iType := iType, expr := e } body).run