-- Module: Mathlib.RingTheory.Smooth.NoetherianDescent
Goal:
R : Type u_1
inst : CommRing R
A : Type u
B : Type u_2
inst_1 : CommRing A
inst_2 : Algebra R A
inst_3 : CommRing B
inst_4 : Algebra A B
D : DescentAux A B
p : (i : D.vars) → MvPolynomial D.vars ↥(subalgebra R D)
hp :
  ∀ (i : D.vars),
    (MvPolynomial.map (algebraMap (↥(subalgebra R D)) A) :
          (a : MvPolynomial D.vars ↥(subalgebra R D)) → MvPolynomial D.vars A)
        (p i) =
      D.h i
hf₀ :
  Function.Surjective.{u + 1, u + 1} (α := MvPolynomial D.vars ↥(subalgebra R D)) (β :=
    HasQuotient.Quotient (MvPolynomial D.vars ↥(subalgebra R D)) (B := Ideal (MvPolynomial D.vars ↥(subalgebra R D)))
      (Ideal.span
        (Set.range (ι := D.rels)
          (Presentation.relationOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (P := D.P) ↥(subalgebra R D)))))
    (⇑(Ideal.Quotient.mkₐ (↥(subalgebra R D))
          (Ideal.span
            (Set.range (ι := D.rels)
              (Presentation.relationOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (P := D.P) ↥(subalgebra R D))))) :
      (a : MvPolynomial D.vars ↥(subalgebra R D)) →
        MvPolynomial D.vars ↥(subalgebra R D) ⧸
          Ideal.span (Set.range (Presentation.relationOfHasCoeffs ↥(subalgebra R D))))
refine_2 :
  ∀ (i : D.vars),
    Eq (α :=
      HasQuotient.Quotient (MvPolynomial D.vars ↥(subalgebra R D)) (B := Ideal (MvPolynomial D.vars ↥(subalgebra R D)))
        (Ideal.span
          (Set.range (ι := D.rels)
            (Presentation.relationOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (P := D.P) ↥(subalgebra R D)))))
      ((AlgHom.comp (B :=
              HasQuotient.Quotient (MvPolynomial D.vars ↥(subalgebra R D)) (B :=
                Ideal (MvPolynomial D.vars ↥(subalgebra R D)))
                (Ideal.span
                  (Set.range (ι := D.rels)
                    (Presentation.relationOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (P := D.P)
                      ↥(subalgebra R D)))))
              (AlgHom.comp
                (AlgHom.kerSquareLift
                  (Ideal.Quotient.mkₐ (↥(subalgebra R D))
                    (Ideal.span
                      (Set.range (ι := D.rels)
                        (Presentation.relationOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (P := D.P)
                          ↥(subalgebra R D))))))
                (Ideal.Quotient.liftₐ
                  (Ideal.span
                    (Set.range (ι := D.rels)
                      (Presentation.relationOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (P := D.P)
                        ↥(subalgebra R D))))
                  (AlgHom.comp
                    (Ideal.Quotient.mkₐ (↥(subalgebra R D))
                      (HPow.hPow (α := Ideal (MvPolynomial D.vars ↥(subalgebra R D))) (β := ℕ)
                        (RingHom.ker (F :=
                          MvPolynomial D.vars ↥(subalgebra R D) →ₐ[↥(subalgebra R D)]
                            HasQuotient.Quotient (MvPolynomial D.vars ↥(subalgebra R D)) (B :=
                              Ideal (MvPolynomial D.vars ↥(subalgebra R D)))
                              (Ideal.span
                                (Set.range (ι := D.rels)
                                  (Presentation.relationOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (P := D.P)
                                    ↥(subalgebra R D)))))
                          (Ideal.Quotient.mkₐ (↥(subalgebra R D))
                            (Ideal.span
                              (Set.range (ι := D.rels)
                                (Presentation.relationOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (P := D.P)
                                  ↥(subalgebra R D))))))
                        2))
                    (aeval p))
                  ⋯))
              (Ideal.Quotient.mkₐ (↥(subalgebra R D))
                (Ideal.span
                  (Set.range (ι := D.rels)
                    (Presentation.relationOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (P := D.P)
                      ↥(subalgebra R D))))) :
            (a : MvPolynomial D.vars ↥(subalgebra R D)) →
              MvPolynomial D.vars ↥(subalgebra R D) ⧸
                Ideal.span (Set.range (Presentation.relationOfHasCoeffs ↥(subalgebra R D))))
          (X i) :
        HasQuotient.Quotient (MvPolynomial D.vars ↥(subalgebra R D)) (B :=
          Ideal (MvPolynomial D.vars ↥(subalgebra R D)))
          (Ideal.span
            (Set.range (ι := D.rels)
              (Presentation.relationOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (P := D.P) ↥(subalgebra R D)))))
      ((AlgHom.comp
              (AlgHom.id (↥(subalgebra R D))
                (Presentation.ModelOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (ι := D.vars) (σ := D.rels) (P :=
                  D.P) ↥(subalgebra R D)))
              (Ideal.Quotient.mkₐ (↥(subalgebra R D))
                (Ideal.span
                  (Set.range (ι := D.rels)
                    (Presentation.relationOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (P := D.P)
                      ↥(subalgebra R D))))) :
            (a : MvPolynomial D.vars ↥(subalgebra R D)) →
              MvPolynomial D.vars ↥(subalgebra R D) ⧸
                Ideal.span (Set.range (Presentation.relationOfHasCoeffs ↥(subalgebra R D))))
          (X i) :
        HasQuotient.Quotient (MvPolynomial D.vars ↥(subalgebra R D)) (B :=
          Ideal (MvPolynomial D.vars ↥(subalgebra R D)))
          (Ideal.span
            (Set.range (ι := D.rels)
              (Presentation.relationOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (P := D.P) ↥(subalgebra R D)))))
⊢ AlgHom.comp (B :=
      HasQuotient.Quotient (MvPolynomial D.vars ↥(subalgebra R D)) (B := Ideal (MvPolynomial D.vars ↥(subalgebra R D)))
        (Ideal.span
          (Set.range (ι := D.rels)
            (Presentation.relationOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (P := D.P) ↥(subalgebra R D)))))
      (AlgHom.comp
        (AlgHom.kerSquareLift
          (Ideal.Quotient.mkₐ (↥(subalgebra R D))
            (Ideal.span
              (Set.range (ι := D.rels)
                (Presentation.relationOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (P := D.P) ↥(subalgebra R D))))))
        (Ideal.Quotient.liftₐ
          (Ideal.span
            (Set.range (ι := D.rels)
              (Presentation.relationOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (P := D.P) ↥(subalgebra R D))))
          (AlgHom.comp
            (Ideal.Quotient.mkₐ (↥(subalgebra R D))
              (HPow.hPow (α := Ideal (MvPolynomial D.vars ↥(subalgebra R D))) (β := ℕ)
                (RingHom.ker (F :=
                  MvPolynomial D.vars ↥(subalgebra R D) →ₐ[↥(subalgebra R D)]
                    HasQuotient.Quotient (MvPolynomial D.vars ↥(subalgebra R D)) (B :=
                      Ideal (MvPolynomial D.vars ↥(subalgebra R D)))
                      (Ideal.span
                        (Set.range (ι := D.rels)
                          (Presentation.relationOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (P := D.P)
                            ↥(subalgebra R D)))))
                  (Ideal.Quotient.mkₐ (↥(subalgebra R D))
                    (Ideal.span
                      (Set.range (ι := D.rels)
                        (Presentation.relationOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (P := D.P)
                          ↥(subalgebra R D))))))
                2))
            (aeval p))
          ⋯))
      (Ideal.Quotient.mkₐ (↥(subalgebra R D))
        (Ideal.span
          (Set.range (ι := D.rels)
            (Presentation.relationOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (P := D.P) ↥(subalgebra R D))))) =
    AlgHom.comp
      (AlgHom.id (↥(subalgebra R D))
        (Presentation.ModelOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (ι := D.vars) (σ := D.rels) (P := D.P)
          ↥(subalgebra R D)))
      (Ideal.Quotient.mkₐ (↥(subalgebra R D))
        (Ideal.span
          (Set.range (ι := D.rels)
            (Presentation.relationOfHasCoeffs.{u, u_2, 0, 0, u} (R := A) (S := B) (P := D.P) ↥(subalgebra R D)))))

Tactic:
refine MvPolynomial.algHom_ext fun i ↦ ?_

Premises used: MvPolynomial.algHom_ext