/-- The fixing subgroup of `K : IntermediateField F E` is isomorphic to `E ≃ₐ[K] E` -/
def fixingSubgroupEquiv : fixingSubgroup K ≃* E ≃ₐ[K] E where
  toFun ϕ := { AlgEquiv.toRingEquiv (ϕ : E ≃ₐ[F] E) with commutes' := ϕ.mem }
  invFun ϕ := ⟨ϕ.restrictScalars _, ϕ.commutes⟩
  left_inv _ := by ext; rfl
  right_inv _ := by ext; rfl
  map_mul' _ _ := by ext; 

Proof state:
case h
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
H : Subgroup (E ≃ₐ[F] E)
K : IntermediateField F E
x✝¹ x✝ : ↥(fixingSubgroup K)
a✝ : E
⊢ (Equiv.toFun
        {
          toFun := fun ϕ =>
            let src := toRingEquiv ↑ϕ;
            { toEquiv := src.toEquiv,
              map_mul' :=
                (_ :
                  ∀ (x y : E), Equiv.toFun src.toEquiv (x * y) = Equiv.toFun src.toEquiv x * Equiv.toFun src.toEquiv y),
              map_add' :=
                (_ :
                  ∀ (x y : E), Equiv.toFun src.toEquiv (x + y) = Equiv.toFun src.toEquiv x + Equiv.toFun src.toEquiv y),
              commutes' := (_ : ↑ϕ ∈ ↑(fixingSubgroup K)) },
          invFun := fun ϕ =>
            { val := AlgEquiv.restrictScalars F ϕ,
              property := (_ : ∀ (r : ↥K), ϕ ((algebraMap (↥K) E) r) = (algebraMap (↥K) E) r) },
          left_inv :=
            (_ :
              ∀ (x : ↥(fixingSubgroup K)),
                (fun ϕ =>
                      { val := AlgEquiv.restrictScalars F ϕ,
                        property := (_ : ∀ (r : ↥K), ϕ ((algebraMap (↥K) E) r) = (algebraMap (↥K) E) r) })
                    ((fun ϕ =>
                        let src := toRingEquiv ↑ϕ;
                        { toEquiv := src.toEquiv,
                          map_mul' :=
                            (_ :
                              ∀ (x y : E),
                                Equiv.toFun src.toEquiv (x * y) =
                                  Equiv.toFun src.toEquiv x * Equiv.toFun src.toEquiv y),
                          map_add' :=
                            (_ :
                              ∀ (x y : E),
                                Equiv.toFun src.toEquiv (x + y) =
                                  Equiv.toFun src.toEquiv x + Equiv.toFun src.toEquiv y),
                          commutes' := (_ : ↑ϕ ∈ ↑(fixingSubgroup K)) })
                      x) =
                  x),
          right_inv :=
            (_ :
              ∀ (x : E ≃ₐ[↥K] E),
                (fun ϕ =>
                      let src := toRingEquiv ↑ϕ;
                      { toEquiv := src.toEquiv,
                        map_mul' :=
                          (_ :
                            ∀ (x y : E),
                              Equiv.toFun src.toEquiv (x * y) = Equiv.toFun src.toEquiv x * Equiv.toFun src.toEquiv y),
                        map_add' :=
                          (_ :
                            ∀ (x y : E),
                              Equiv.toFun src.toEquiv (x + y) = Equiv.toFun src.toEquiv x + Equiv.toFun src.toEquiv y),
                        commutes' := (_ : ↑ϕ ∈ ↑(fixingSubgroup K)) })
                    ((fun ϕ =>
                        { val := AlgEquiv.restrictScalars F ϕ,
                          property := (_ : ∀ (r : ↥K), ϕ ((algebraMap (↥K) E) r) = (algebraMap (↥K) E) r) })
                      x) =
                  x) }
        (x✝¹ * x✝))
      a✝ =
    (Equiv.toFun
          {
            toFun := fun ϕ =>
              let src := toRingEquiv ↑ϕ;
              { toEquiv := src.toEquiv,
                map_mul' :=
                  (_ :
                    ∀ (x y : E),
                      Equiv.toFun src.toEquiv (x * y) = Equiv.toFun src.toEquiv x * Equiv.toFun src.toEquiv y),
                map_add' :=
                  (_ :
                    ∀ (x y : E),
                      Equiv.toFun src.toEquiv (x + y) = Equiv.toFun src.toEquiv x + Equiv.toFun src.toEquiv y),
                commutes' := (_ : ↑ϕ ∈ ↑(fixingSubgroup K)) },
            invFun := fun ϕ =>
              { val := AlgEquiv.restrictScalars F ϕ,
                property := (_ : ∀ (r : ↥K), ϕ ((algebraMap (↥K) E) r) = (algebraMap (↥K) E) r) },
            left_inv :=
              (_ :
                ∀ (x : ↥(fixingSubgroup K)),
                  (fun ϕ =>
                        { val := AlgEquiv.restrictScalars F ϕ,
                          property := (_ : ∀ (r : ↥K), ϕ ((algebraMap (↥K) E) r) = (algebraMap (↥K) E) r) })
                      ((fun ϕ =>
                          let src := toRingEquiv ↑ϕ;
                          { toEquiv := src.toEquiv,
                            map_mul' :=
                              (_ :
                                ∀ (x y : E),
                                  Equiv.toFun src.toEquiv (x * y) =
                                    Equiv.toFun src.toEquiv x * Equiv.toFun src.toEquiv y),
                            map_add' :=
                              (_ :
                                ∀ (x y : E),
                                  Equiv.toFun src.toEquiv (x + y) =
                                    Equiv.toFun src.toEquiv x + Equiv.toFun src.toEquiv y),
                            commutes' := (_ : ↑ϕ ∈ ↑(fixingSubgroup K)) })
                        x) =
                    x),
            right_inv :=
              (_ :
                ∀ (x : E ≃ₐ[↥K] E),
                  (fun ϕ =>
                        let src := toRingEquiv ↑ϕ;
                        { toEquiv := src.toEquiv,
                          map_mul' :=
                            (_ :
                              ∀ (x y : E),
                                Equiv.toFun src.toEquiv (x * y) =
                                  Equiv.toFun src.toEquiv x * Equiv.toFun src.toEquiv y),
                          map_add' :=
                            (_ :
                              ∀ (x y : E),
                                Equiv.toFun src.toEquiv (x + y) =
                                  Equiv.toFun src.toEquiv x + Equiv.toFun src.toEquiv y),
                          commutes' := (_ : ↑ϕ ∈ ↑(fixingSubgroup K)) })
                      ((fun ϕ =>
                          { val := AlgEquiv.restrictScalars F ϕ,
                            property := (_ : ∀ (r : ↥K), ϕ ((algebraMap (↥K) E) r) = (algebraMap (↥K) E) r) })
                        x) =
                    x) }
          x✝¹ *
        Equiv.toFun
          {
            toFun := fun ϕ =>
              let src := toRingEquiv ↑ϕ;
              { toEquiv := src.toEquiv,
                map_mul' :=
                  (_ :
                    ∀ (x y : E),
                      Equiv.toFun src.toEquiv (x * y) = Equiv.toFun src.toEquiv x * Equiv.toFun src.toEquiv y),
                map_add' :=
                  (_ :
                    ∀ (x y : E),
                      Equiv.toFun src.toEquiv (x + y) = Equiv.toFun src.toEquiv x + Equiv.toFun src.toEquiv y),
                commutes' := (_ : ↑ϕ ∈ ↑(fixingSubgroup K)) },
            invFun := fun ϕ =>
              { val := AlgEquiv.restrictScalars F ϕ,
                property := (_ : ∀ (r : ↥K), ϕ ((algebraMap (↥K) E) r) = (algebraMap (↥K) E) r) },
            left_inv :=
              (_ :
                ∀ (x : ↥(fixingSubgroup K)),
                  (fun ϕ =>
                        { val := AlgEquiv.restrictScalars F ϕ,
                          property := (_ : ∀ (r : ↥K), ϕ ((algebraMap (↥K) E) r) = (algebraMap (↥K) E) r) })
                      ((fun ϕ =>
                          let src := toRingEquiv ↑ϕ;
                          { toEquiv := src.toEquiv,
                            map_mul' :=
                              (_ :
                                ∀ (x y : E),
                                  Equiv.toFun src.toEquiv (x * y) =
                                    Equiv.toFun src.toEquiv x * Equiv.toFun src.toEquiv y),
                            map_add' :=
                              (_ :
                                ∀ (x y : E),
                                  Equiv.toFun src.toEquiv (x + y) =
                                    Equiv.toFun src.toEquiv x + Equiv.toFun src.toEquiv y),
                            commutes' := (_ : ↑ϕ ∈ ↑(fixingSubgroup K)) })
                        x) =
                    x),
            right_inv :=
              (_ :
                ∀ (x : E ≃ₐ[↥K] E),
                  (fun ϕ =>
                        let src := toRingEquiv ↑ϕ;
                        { toEquiv := src.toEquiv,
                          map_mul' :=
                            (_ :
                              ∀ (x y : E),
                                Equiv.toFun src.toEquiv (x * y) =
                                  Equiv.toFun src.toEquiv x * Equiv.toFun src.toEquiv y),
                          map_add' :=
                            (_ :
                              ∀ (x y : E),
                                Equiv.toFun src.toEquiv (x + y) =
                                  Equiv.toFun src.toEquiv x + Equiv.toFun src.toEquiv y),
                          commutes' := (_ : ↑ϕ ∈ ↑(fixingSubgroup K)) })
                      ((fun ϕ =>
                          { val := AlgEquiv.restrictScalars F ϕ,
                            property := (_ : ∀ (r : ↥K), ϕ ((algebraMap (↥K) E) r) = (algebraMap (↥K) E) r) })
                        x) =
                    x) }
          x✝)
      a✝

Next tactic:
rfl