def Lean.Meta.unifyEq? (mvarId : MVarId) (eqFVarId : FVarId) (subst : FVarSubst := { }) (acyclic : MVarId → Expr → MetaM Bool := fun (x : MVarId) (x_1 : Expr) => pure false) (caseName? : Option Name := none) :
Helper method for methods such as Cases.unifyEqs?.
Given the given goal mvarId containing the local hypothesis eqFVarId, it performs the following operations:
- If
eqFVarIdis a heterogeneous equality, tries to convert it to a homogeneous one. - If
eqFVarIdis a homogeneous equality of the forma = b, it tries- If
aandbare definitionally equal, clear it - Normalize
aandbusing the current reducibility setting. - If
a(b) is a free variable not occurring inb(a), replace it everywhere. - If
aandbare distinct constructors, returnnoneto indicate that the goal has been closed. - If
aandbare the same constructor, applyinjection, the result contains the number of new equalities introduced in the goal. - It also tries to apply the given
acyclicmethod to try to close the goal. Remark: It is a parameter becausesimpusesunifyEq?, andacyclicdepends onsimp.
- If
Equations
- One or more equations did not get rendered due to their size.