/-- 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 

Proof state:
K : Type u
L : Type v
M : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field M
s : Set K
x : K
⊢ 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 →
    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:
rintro ⟨y, hy, z, hz, x_eq⟩