Lean4
/-- Unfold auxlemmas in the type and value. -/
def declUnfoldAuxLemmas (decl : ConstantInfo) : MetaM ConstantInfo := do
let mut decl := decl
decl := decl.updateType <| ← unfoldAuxLemmas decl.type
if let some v := decl.value? then
trace[to_additive]"value before unfold:{indentExpr v}"
decl := decl.updateValue <| ← unfoldAuxLemmas v
trace[to_additive]"value after unfold:{indentExpr decl.value!}"
else if let .opaqueInfo info := decl then -- not covered by `value?`
decl := .opaqueInfo { info with value := ← unfoldAuxLemmas info.value }
return decl