Infrastructure to work with Equivalence
types as expressions. We also define some basic tactics
that work on equivalence goals:
equivalence_rfl
closes a goal by reflexivity.equivalence_symm
applies symmetry.equivalence_trans
applies transitivity.equivalence_step => ...
allows users to apply one equivalence step in theequivalence
command by first applying transitivity as otherwise the goal would be closed immediately.
Equations
- eqvExpr.toMinimizationExprLHS = do let __do_lift ← Lean.Meta.whnf eqvExpr.lhs CvxLean.Meta.MinimizationExpr.fromExpr __do_lift
Instances For
Equations
- eqvExpr.toMinimizationExprRHS = do let __do_lift ← Lean.Meta.whnf eqvExpr.rhs CvxLean.Meta.MinimizationExpr.fromExpr __do_lift
Instances For
Equations
- eqvExpr.toExpr = Lean.mkApp6 (Lean.mkConst `Minimization.Equivalence) eqvExpr.domainLHS eqvExpr.domainRHS eqvExpr.codomain eqvExpr.codomainPreorder eqvExpr.lhs eqvExpr.rhs
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- CvxLean.Meta.EquivalenceExpr.fromGoal goal = do let __do_lift ← goal.getDecl let goalType ← Lean.Meta.whnf __do_lift.type CvxLean.Meta.EquivalenceExpr.fromExpr goalType
Instances For
Equations
- CvxLean.Meta.tacticEquivalence_rfl = Lean.ParserDescr.node `CvxLean.Meta.tacticEquivalence_rfl 1024 (Lean.ParserDescr.nonReservedSymbol "equivalence_rfl" false)
Instances For
Equations
- CvxLean.Meta.tacticEquivalence_symm = Lean.ParserDescr.node `CvxLean.Meta.tacticEquivalence_symm 1024 (Lean.ParserDescr.nonReservedSymbol "equivalence_symm" false)
Instances For
Equations
- CvxLean.Meta.tacticEquivalence_trans = Lean.ParserDescr.node `CvxLean.Meta.tacticEquivalence_trans 1024 (Lean.ParserDescr.nonReservedSymbol "equivalence_trans" false)
Instances For
Equations
- One or more equations did not get rendered due to their size.