/-- The `Subfield` generated by a set. -/
def closure (s : Set K) : Subfield K where
  carrier := {z : K | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z}
  zero_mem' := ⟨0, Subring.zero_mem _, 1, Subring.one_mem _, div_one _⟩
  one_mem' := ⟨1, Subring.one_mem _, 1, Subring.one_mem _, div_one _⟩
  neg_mem' {x} := by
    rintro ⟨y, hy, z, hz, x_eq⟩
    exact ⟨-y, Subring.neg_mem _ hy, z, hz, x_eq ▸ neg_div _ _⟩
  inv_mem' x := by rintro ⟨y, hy, z, hz, x_eq⟩; 

Proof state:
case intro.intro.intro.intro
K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
s : Set K
x y : K
hy : y ∈ Subring.closure s
z : K
hz : z ∈ Subring.closure s
x_eq : y / z = x
⊢ x⁻¹ ∈
    {
              toSubsemiring :=
                {
                  toSubmonoid :=
                    {
                      toSubsemigroup :=
                        { carrier := {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z},
                          mul_mem' :=
                            (_ :
                              ∀ {a b : K},
                                a ∈ {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z} →
                                  b ∈ {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z} →
                                    a * b ∈ {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z}) },
                      one_mem' := (_ : ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = 1) },
                  add_mem' :=
                    (_ :
                      ∀ {a b : K},
                        a ∈
                            {
                                  toSubsemigroup :=
                                    { carrier := {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z},
                                      mul_mem' :=
                                        (_ :
                                          ∀ {a b : K},
                                            a ∈ {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z} →
                                              b ∈ {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z} →
                                                a * b ∈
                                                  {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z}) },
                                  one_mem' :=
                                    (_ :
                                      ∃ x ∈ Subring.closure s,
                                        ∃ y ∈ Subring.closure s, x / y = 1) }.toSubsemigroup.carrier →
                          b ∈
                              {
                                    toSubsemigroup :=
                                      { carrier := {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z},
                                        mul_mem' :=
                                          (_ :
                                            ∀ {a b : K},
                                              a ∈ {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z} →
                                                b ∈ {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z} →
                                                  a * b ∈
                                                    {z |
                                                      ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z}) },
                                    one_mem' :=
                                      (_ :
                                        ∃ x ∈ Subring.closure s,
                                          ∃ y ∈ Subring.closure s, x / y = 1) }.toSubsemigroup.carrier →
                            a + b ∈
                              {
                                    toSubsemigroup :=
                                      { carrier := {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z},
                                        mul_mem' :=
                                          (_ :
                                            ∀ {a b : K},
                                              a ∈ {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z} →
                                                b ∈ {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z} →
                                                  a * b ∈
                                                    {z |
                                                      ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z}) },
                                    one_mem' :=
                                      (_ :
                                        ∃ x ∈ Subring.closure s,
                                          ∃ y ∈ Subring.closure s, x / y = 1) }.toSubsemigroup.carrier),
                  zero_mem' := (_ : ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = 0) },
              neg_mem' :=
                (_ :
                  ∀ {x : K},
                    x ∈
                        {
                                toSubmonoid :=
                                  {
                                    toSubsemigroup :=
                                      { carrier := {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z},
                                        mul_mem' :=
                                          (_ :
                                            ∀ {a b : K},
                                              a ∈ {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z} →
                                                b ∈ {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z} →
                                                  a * b ∈
                                                    {z |
                                                      ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z}) },
                                    one_mem' := (_ : ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = 1) },
                                add_mem' :=
                                  (_ :
                                    ∀ {a b : K},
                                      a ∈
                                          {
                                                toSubsemigroup :=
                                                  {
                                                    carrier :=
                                                      {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z},
                                                    mul_mem' :=
                                                      (_ :
                                                        ∀ {a b : K},
                                                          a ∈
                                                              {z |
                                                                ∃ x ∈ Subring.closure s,
                                                                  ∃ y ∈ Subring.closure s, x / y = z} →
                                                            b ∈
                                                                {z |
                                                                  ∃ x ∈ Subring.closure s,
                                                                    ∃ y ∈ Subring.closure s, x / y = z} →
                                                              a * b ∈
                                                                {z |
                                                                  ∃ x ∈ Subring.closure s,
                                                                    ∃ y ∈ Subring.closure s, x / y = z}) },
                                                one_mem' :=
                                                  (_ :
                                                    ∃ x ∈ Subring.closure s,
                                                      ∃ y ∈ Subring.closure s, x / y = 1) }.toSubsemigroup.carrier →
                                        b ∈
                                            {
                                                  toSubsemigroup :=
                                                    {
                                                      carrier :=
                                                        {z |
                                                          ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z},
                                                      mul_mem' :=
                                                        (_ :
                                                          ∀ {a b : K},
                                                            a ∈
                                                                {z |
                                                                  ∃ x ∈ Subring.closure s,
                                                                    ∃ y ∈ Subring.closure s, x / y = z} →
                                                              b ∈
                                                                  {z |
                                                                    ∃ x ∈ Subring.closure s,
                                                                      ∃ y ∈ Subring.closure s, x / y = z} →
                                                                a * b ∈
                                                                  {z |
                                                                    ∃ x ∈ Subring.closure s,
                                                                      ∃ y ∈ Subring.closure s, x / y = z}) },
                                                  one_mem' :=
                                                    (_ :
                                                      ∃ x ∈ Subring.closure s,
                                                        ∃ y ∈ Subring.closure s, x / y = 1) }.toSubsemigroup.carrier →
                                          a + b ∈
                                            {
                                                  toSubsemigroup :=
                                                    {
                                                      carrier :=
                                                        {z |
                                                          ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z},
                                                      mul_mem' :=
                                                        (_ :
                                                          ∀ {a b : K},
                                                            a ∈
                                                                {z |
                                                                  ∃ x ∈ Subring.closure s,
                                                                    ∃ y ∈ Subring.closure s, x / y = z} →
                                                              b ∈
                                                                  {z |
                                                                    ∃ x ∈ Subring.closure s,
                                                                      ∃ y ∈ Subring.closure s, x / y = z} →
                                                                a * b ∈
                                                                  {z |
                                                                    ∃ x ∈ Subring.closure s,
                                                                      ∃ y ∈ Subring.closure s, x / y = z}) },
                                                  one_mem' :=
                                                    (_ :
                                                      ∃ x ∈ Subring.closure s,
                                                        ∃ y ∈ Subring.closure s, x / y = 1) }.toSubsemigroup.carrier),
                                zero_mem' :=
                                  (_ :
                                    ∃ x ∈ Subring.closure s,
                                      ∃ y ∈ Subring.closure s, x / y = 0) }.toSubmonoid.toSubsemigroup.carrier →
                      -x ∈
                        {
                                toSubmonoid :=
                                  {
                                    toSubsemigroup :=
                                      { carrier := {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z},
                                        mul_mem' :=
                                          (_ :
                                            ∀ {a b : K},
                                              a ∈ {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z} →
                                                b ∈ {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z} →
                                                  a * b ∈
                                                    {z |
                                                      ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z}) },
                                    one_mem' := (_ : ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = 1) },
                                add_mem' :=
                                  (_ :
                                    ∀ {a b : K},
                                      a ∈
                                          {
                                                toSubsemigroup :=
                                                  {
                                                    carrier :=
                                                      {z | ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z},
                                                    mul_mem' :=
                                                      (_ :
                                                        ∀ {a b : K},
                                                          a ∈
                                                              {z |
                                                                ∃ x ∈ Subring.closure s,
                                                                  ∃ y ∈ Subring.closure s, x / y = z} →
                                                            b ∈
                                                                {z |
                                                                  ∃ x ∈ Subring.closure s,
                                                                    ∃ y ∈ Subring.closure s, x / y = z} →
                                                              a * b ∈
                                                                {z |
                                                                  ∃ x ∈ Subring.closure s,
                                                                    ∃ y ∈ Subring.closure s, x / y = z}) },
                                                one_mem' :=
                                                  (_ :
                                                    ∃ x ∈ Subring.closure s,
                                                      ∃ y ∈ Subring.closure s, x / y = 1) }.toSubsemigroup.carrier →
                                        b ∈
                                            {
                                                  toSubsemigroup :=
                                                    {
                                                      carrier :=
                                                        {z |
                                                          ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z},
                                                      mul_mem' :=
                                                        (_ :
                                                          ∀ {a b : K},
                                                            a ∈
                                                                {z |
                                                                  ∃ x ∈ Subring.closure s,
                                                                    ∃ y ∈ Subring.closure s, x / y = z} →
                                                              b ∈
                                                                  {z |
                                                                    ∃ x ∈ Subring.closure s,
                                                                      ∃ y ∈ Subring.closure s, x / y = z} →
                                                                a * b ∈
                                                                  {z |
                                                                    ∃ x ∈ Subring.closure s,
                                                                      ∃ y ∈ Subring.closure s, x / y = z}) },
                                                  one_mem' :=
                                                    (_ :
                                                      ∃ x ∈ Subring.closure s,
                                                        ∃ y ∈ Subring.closure s, x / y = 1) }.toSubsemigroup.carrier →
                                          a + b ∈
                                            {
                                                  toSubsemigroup :=
                                                    {
                                                      carrier :=
                                                        {z |
                                                          ∃ x ∈ Subring.closure s, ∃ y ∈ Subring.closure s, x / y = z},
                                                      mul_mem' :=
                                                        (_ :
                                                          ∀ {a b : K},
                                                            a ∈
                                                                {z |
                                                                  ∃ x ∈ Subring.closure s,
                                                                    ∃ y ∈ Subring.closure s, x / y = z} →
                                                              b ∈
                                                                  {z |
                                                                    ∃ x ∈ Subring.closure s,
                                                                      ∃ y ∈ Subring.closure s, x / y = z} →
                                                                a * b ∈
                                                                  {z |
                                                                    ∃ x ∈ Subring.closure s,
                                                                      ∃ y ∈ Subring.closure s, x / y = z}) },
                                                  one_mem' :=
                                                    (_ :
                                                      ∃ x ∈ Subring.closure s,
                                                        ∃ y ∈ Subring.closure s, x / y = 1) }.toSubsemigroup.carrier),
                                zero_mem' :=
                                  (_ :
                                    ∃ x ∈ Subring.closure s,
                                      ∃ y ∈ Subring.closure s,
                                        x / y =
                                          0) }.toSubmonoid.toSubsemigroup.carrier) }.toSubsemiring.toSubmonoid.toSubsemigroup.carrier

Next tactic:
exact ⟨z, hz, y, hy, x_eq ▸ (inv_div _ _).symm ⟩