{v : Lean.Level} →
  {M : Q(Type v)} →
    (iM : Q(CommGroupWithZero «$M»)) →
      (y₁ y₂ : Q(«$M»)) →
        (g₁ g₂ : Mathlib.Tactic.FieldSimp.Sign M) →
          Lean.MetaM
            ((G : Mathlib.Tactic.FieldSimp.Sign M) ×
              have a := G.expr q(«$y₁» / «$y₂»);
              have a_1 := g₂.expr y₂;
              have a_2 := g₁.expr y₁;
              Q(«$a_2» / «$a_1» = «$a»))