[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
h : IsFormalAdjoint T S
y : { x // x ∈ S.domain }
x✝ : { x // x ∈ T.domain }
⊢ inner (↑S y) ↑x✝ = inner (↑y) (↑T x✝)
[PROOFSTEP]
rw [← inner_conj_symm, ← inner_conj_symm (y : F), h]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
a✝ b✝ : F
hx : a✝ ∈ {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)}
hy : b✝ ∈ {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)}
⊢ a✝ + b✝ ∈ {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)}
[PROOFSTEP]
rw [Set.mem_setOf_eq, LinearMap.map_add] at *
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
a✝ b✝ : F
hx : Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) a✝) T.toFun)
hy : Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) b✝) T.toFun)
⊢ Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) a✝ + ↑(innerₛₗ 𝕜) b✝) T.toFun)
[PROOFSTEP]
exact hx.add hy
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
⊢ 0 ∈
    { carrier := {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)},
        add_mem' :=
          (_ :
            ∀ {a b : F},
              a ∈ {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)} →
                b ∈ {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)} →
                  a + b ∈ {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)}) }.carrier
[PROOFSTEP]
rw [Set.mem_setOf_eq, LinearMap.map_zero, LinearMap.zero_comp]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
⊢ Continuous ↑0
[PROOFSTEP]
exact continuous_zero
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
a : 𝕜
x : F
hx :
  x ∈
    {
          toAddSubsemigroup :=
            { carrier := {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)},
              add_mem' :=
                (_ :
                  ∀ {a b : F},
                    a ∈ {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)} →
                      b ∈ {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)} →
                        a + b ∈ {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)}) },
          zero_mem' :=
            (_ :
              0 ∈
                { carrier := {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)},
                    add_mem' :=
                      (_ :
                        ∀ {a b : F},
                          a ∈ {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)} →
                            b ∈ {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)} →
                              a + b ∈
                                {y |
                                  Continuous
                                    ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)}) }.carrier) }.toAddSubsemigroup.carrier
⊢ a • x ∈
    {
          toAddSubsemigroup :=
            { carrier := {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)},
              add_mem' :=
                (_ :
                  ∀ {a b : F},
                    a ∈ {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)} →
                      b ∈ {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)} →
                        a + b ∈ {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)}) },
          zero_mem' :=
            (_ :
              0 ∈
                { carrier := {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)},
                    add_mem' :=
                      (_ :
                        ∀ {a b : F},
                          a ∈ {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)} →
                            b ∈ {y | Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)} →
                              a + b ∈
                                {y |
                                  Continuous
                                    ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)}) }.carrier) }.toAddSubsemigroup.carrier
[PROOFSTEP]
rw [Set.mem_setOf_eq, LinearMap.map_smulₛₗ] at *
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
a : 𝕜
x : F
hx : Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) x) T.toFun)
⊢ Continuous ↑(LinearMap.comp (↑(starRingEnd 𝕜) a • ↑(innerₛₗ 𝕜) x) T.toFun)
[PROOFSTEP]
exact hx.const_smul (conj a)
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
hT : Dense ↑T.domain
inst✝ : CompleteSpace E
x y : { x // x ∈ adjointDomain T }
x✝ : { x // x ∈ T.domain }
⊢ inner ((fun y => ↑(LinearIsometryEquiv.symm (InnerProductSpace.toDual 𝕜 E)) (adjointDomainMkClmExtend hT y)) (x + y))
      ↑x✝ =
    inner
      ((fun y => ↑(LinearIsometryEquiv.symm (InnerProductSpace.toDual 𝕜 E)) (adjointDomainMkClmExtend hT y)) x +
        (fun y => ↑(LinearIsometryEquiv.symm (InnerProductSpace.toDual 𝕜 E)) (adjointDomainMkClmExtend hT y)) y)
      ↑x✝
[PROOFSTEP]
simp only [inner_add_left, Submodule.coe_add, InnerProductSpace.toDual_symm_apply, adjointDomainMkClmExtend_apply]
  -- Porting note(https://github.com/leanprover-community/mathlib4/issues/5026):
        -- mathlib3 was finished here
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
hT : Dense ↑T.domain
inst✝ : CompleteSpace E
x y : { x // x ∈ adjointDomain T }
x✝ : { x // x ∈ T.domain }
⊢ ↑(adjointDomainMkClmExtend hT (x + y)) ↑x✝ =
    ↑(adjointDomainMkClmExtend hT x) ↑x✝ + ↑(adjointDomainMkClmExtend hT y) ↑x✝
[PROOFSTEP]
rw [adjointDomainMkClmExtend_apply, adjointDomainMkClmExtend_apply, adjointDomainMkClmExtend_apply]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
hT : Dense ↑T.domain
inst✝ : CompleteSpace E
x y : { x // x ∈ adjointDomain T }
x✝ : { x // x ∈ T.domain }
⊢ inner (↑(x + y)) (↑T x✝) = inner (↑x) (↑T x✝) + inner (↑y) (↑T x✝)
[PROOFSTEP]
simp only [AddSubmonoid.coe_add, Submodule.coe_toAddSubmonoid, inner_add_left]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
hT : Dense ↑T.domain
inst✝ : CompleteSpace E
x✝² : 𝕜
x✝¹ : { x // x ∈ adjointDomain T }
x✝ : { x // x ∈ T.domain }
⊢ inner
      (AddHom.toFun
        { toFun := fun y => ↑(LinearIsometryEquiv.symm (InnerProductSpace.toDual 𝕜 E)) (adjointDomainMkClmExtend hT y),
          map_add' :=
            (_ :
              ∀ (x y : { x // x ∈ adjointDomain T }),
                (fun y => ↑(LinearIsometryEquiv.symm (InnerProductSpace.toDual 𝕜 E)) (adjointDomainMkClmExtend hT y))
                    (x + y) =
                  (fun y => ↑(LinearIsometryEquiv.symm (InnerProductSpace.toDual 𝕜 E)) (adjointDomainMkClmExtend hT y))
                      x +
                    (fun y =>
                        ↑(LinearIsometryEquiv.symm (InnerProductSpace.toDual 𝕜 E)) (adjointDomainMkClmExtend hT y))
                      y) }
        (x✝² • x✝¹))
      ↑x✝ =
    inner
      (↑(RingHom.id 𝕜) x✝² •
        AddHom.toFun
          {
            toFun := fun y =>
              ↑(LinearIsometryEquiv.symm (InnerProductSpace.toDual 𝕜 E)) (adjointDomainMkClmExtend hT y),
            map_add' :=
              (_ :
                ∀ (x y : { x // x ∈ adjointDomain T }),
                  (fun y => ↑(LinearIsometryEquiv.symm (InnerProductSpace.toDual 𝕜 E)) (adjointDomainMkClmExtend hT y))
                      (x + y) =
                    (fun y =>
                          ↑(LinearIsometryEquiv.symm (InnerProductSpace.toDual 𝕜 E)) (adjointDomainMkClmExtend hT y))
                        x +
                      (fun y =>
                          ↑(LinearIsometryEquiv.symm (InnerProductSpace.toDual 𝕜 E)) (adjointDomainMkClmExtend hT y))
                        y) }
          x✝¹)
      ↑x✝
[PROOFSTEP]
simp only [inner_smul_left, Submodule.coe_smul_of_tower, RingHom.id_apply, InnerProductSpace.toDual_symm_apply,
  adjointDomainMkClmExtend_apply]
  -- Porting note(https://github.com/leanprover-community/mathlib4/issues/5026):
        -- mathlib3 was finished here
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
hT : Dense ↑T.domain
inst✝ : CompleteSpace E
x✝² : 𝕜
x✝¹ : { x // x ∈ adjointDomain T }
x✝ : { x // x ∈ T.domain }
⊢ ↑(adjointDomainMkClmExtend hT (x✝² • x✝¹)) ↑x✝ = ↑(starRingEnd 𝕜) x✝² * ↑(adjointDomainMkClmExtend hT x✝¹) ↑x✝
[PROOFSTEP]
rw [adjointDomainMkClmExtend_apply, adjointDomainMkClmExtend_apply]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
hT : Dense ↑T.domain
inst✝ : CompleteSpace E
x✝² : 𝕜
x✝¹ : { x // x ∈ adjointDomain T }
x✝ : { x // x ∈ T.domain }
⊢ inner (↑(x✝² • x✝¹)) (↑T x✝) = ↑(starRingEnd 𝕜) x✝² * inner (↑x✝¹) (↑T x✝)
[PROOFSTEP]
simp only [Submodule.coe_smul_of_tower, inner_smul_left]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
hT : Dense ↑T.domain
inst✝ : CompleteSpace E
y : { x // x ∈ adjointDomain T }
x : { x // x ∈ T.domain }
⊢ inner (↑(adjointAux hT) y) ↑x = inner (↑y) (↑T x)
[PROOFSTEP]
simp only [adjointAux, LinearMap.coe_mk, InnerProductSpace.toDual_symm_apply, adjointDomainMkClmExtend_apply]
  -- Porting note(https://github.com/leanprover-community/mathlib4/issues/5026):
    -- mathlib3 was finished here
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
hT : Dense ↑T.domain
inst✝ : CompleteSpace E
y : { x // x ∈ adjointDomain T }
x : { x // x ∈ T.domain }
⊢ inner
      (↑{ toFun := fun y => ↑(LinearIsometryEquiv.symm (InnerProductSpace.toDual 𝕜 E)) (adjointDomainMkClmExtend hT y),
            map_add' :=
              (_ :
                ∀ (x y : { x // x ∈ adjointDomain T }),
                  (fun y => ↑(LinearIsometryEquiv.symm (InnerProductSpace.toDual 𝕜 E)) (adjointDomainMkClmExtend hT y))
                      (x + y) =
                    (fun y =>
                          ↑(LinearIsometryEquiv.symm (InnerProductSpace.toDual 𝕜 E)) (adjointDomainMkClmExtend hT y))
                        x +
                      (fun y =>
                          ↑(LinearIsometryEquiv.symm (InnerProductSpace.toDual 𝕜 E)) (adjointDomainMkClmExtend hT y))
                        y) }
        y)
      ↑x =
    inner (↑y) (↑T x)
[PROOFSTEP]
simp only [AddHom.coe_mk, InnerProductSpace.toDual_symm_apply]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
hT : Dense ↑T.domain
inst✝ : CompleteSpace E
y : { x // x ∈ adjointDomain T }
x : { x // x ∈ T.domain }
⊢ ↑(adjointDomainMkClmExtend hT y) ↑x = inner (↑y) (↑T x)
[PROOFSTEP]
rw [adjointDomainMkClmExtend_apply]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
hT : Dense ↑T.domain
inst✝ : CompleteSpace E
y : F
h : ∃ w, ∀ (x : { x // x ∈ T.domain }), inner w ↑x = inner y (↑T x)
⊢ y ∈ T†.domain
[PROOFSTEP]
cases' h with w hw
[GOAL]
case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
hT : Dense ↑T.domain
inst✝ : CompleteSpace E
y : F
w : E
hw : ∀ (x : { x // x ∈ T.domain }), inner w ↑x = inner y (↑T x)
⊢ y ∈ T†.domain
[PROOFSTEP]
rw [T.mem_adjoint_domain_iff]
  -- Porting note: was `by continuity`
[GOAL]
case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
hT : Dense ↑T.domain
inst✝ : CompleteSpace E
y : F
w : E
hw : ∀ (x : { x // x ∈ T.domain }), inner w ↑x = inner y (↑T x)
⊢ Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)
[PROOFSTEP]
have : Continuous ((innerSL 𝕜 w).comp T.domain.subtypeL) := ContinuousLinearMap.continuous _
[GOAL]
case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
hT : Dense ↑T.domain
inst✝ : CompleteSpace E
y : F
w : E
hw : ∀ (x : { x // x ∈ T.domain }), inner w ↑x = inner y (↑T x)
this : Continuous ↑(ContinuousLinearMap.comp (↑(innerSL 𝕜) w) (Submodule.subtypeL T.domain))
⊢ Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun)
[PROOFSTEP]
convert this using 1
[GOAL]
case h.e'_5
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
hT : Dense ↑T.domain
inst✝ : CompleteSpace E
y : F
w : E
hw : ∀ (x : { x // x ∈ T.domain }), inner w ↑x = inner y (↑T x)
this : Continuous ↑(ContinuousLinearMap.comp (↑(innerSL 𝕜) w) (Submodule.subtypeL T.domain))
⊢ ↑(LinearMap.comp (↑(innerₛₗ 𝕜) y) T.toFun) =
    ↑(ContinuousLinearMap.comp (↑(innerSL 𝕜) w) (Submodule.subtypeL T.domain))
[PROOFSTEP]
exact funext fun x => (hw x).symm
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
hT✝ : Dense ↑T.domain
inst✝ : CompleteSpace E
hT : ¬Dense ↑T.domain
y : { x // x ∈ T†.domain }
⊢ ↑T† y = 0
[PROOFSTEP]
change (if hT : Dense (T.domain : Set E) then adjointAux hT else 0) y = _
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
hT✝ : Dense ↑T.domain
inst✝ : CompleteSpace E
hT : ¬Dense ↑T.domain
y : { x // x ∈ T†.domain }
⊢ ↑(if hT : Dense ↑T.domain then adjointAux hT else 0) y = 0
[PROOFSTEP]
simp only [hT, not_false_iff, dif_neg, LinearMap.zero_apply]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
hT : Dense ↑T.domain
inst✝ : CompleteSpace E
y : { x // x ∈ T†.domain }
⊢ ↑T† y = ↑(adjointAux hT) y
[PROOFSTEP]
change (if hT : Dense (T.domain : Set E) then adjointAux hT else 0) y = _
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
hT : Dense ↑T.domain
inst✝ : CompleteSpace E
y : { x // x ∈ T†.domain }
⊢ ↑(if hT : Dense ↑T.domain then adjointAux hT else 0) y = ↑(adjointAux hT) y
[PROOFSTEP]
simp only [hT, dif_pos, LinearMap.coe_mk]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
T : E →ₗ.[𝕜] F
S : F →ₗ.[𝕜] E
hT : Dense ↑T.domain
inst✝ : CompleteSpace E
h : IsFormalAdjoint T S
x✝² : { x // x ∈ S.domain }
x✝¹ : { x // x ∈ T†.domain }
hxy : ↑x✝² = ↑x✝¹
x✝ : { x // x ∈ T.domain }
⊢ inner (↑S x✝²) ↑x✝ = inner (↑x✝¹) (↑T x✝)
[PROOFSTEP]
rw [h.symm, hxy]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
A : E →L[𝕜] F
p : Submodule 𝕜 E
hp : Dense ↑p
⊢ LinearPMap.adjoint (LinearMap.toPMap (↑A) p) = LinearMap.toPMap ↑(↑adjoint A) ⊤
[PROOFSTEP]
ext x y hxy
[GOAL]
case h.h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
A : E →L[𝕜] F
p : Submodule 𝕜 E
hp : Dense ↑p
x : F
⊢ x ∈ (LinearPMap.adjoint (LinearMap.toPMap (↑A) p)).domain ↔ x ∈ (LinearMap.toPMap ↑(↑adjoint A) ⊤).domain
[PROOFSTEP]
simp only [LinearMap.toPMap_domain, Submodule.mem_top, iff_true_iff, LinearPMap.mem_adjoint_domain_iff,
  LinearMap.coe_comp, innerₛₗ_apply_coe]
[GOAL]
case h.h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
A : E →L[𝕜] F
p : Submodule 𝕜 E
hp : Dense ↑p
x : F
⊢ Continuous ((fun w => inner x w) ∘ ↑(LinearMap.toPMap (↑A) p).toFun)
[PROOFSTEP]
exact ((innerSL 𝕜 x).comp <| A.comp <| Submodule.subtypeL _).cont
[GOAL]
case h'
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
A : E →L[𝕜] F
p : Submodule 𝕜 E
hp : Dense ↑p
x : { x // x ∈ (LinearPMap.adjoint (LinearMap.toPMap (↑A) p)).domain }
y : { x // x ∈ (LinearMap.toPMap ↑(↑adjoint A) ⊤).domain }
hxy : ↑x = ↑y
⊢ ↑(LinearPMap.adjoint (LinearMap.toPMap (↑A) p)) x = ↑(LinearMap.toPMap ↑(↑adjoint A) ⊤) y
[PROOFSTEP]
refine' LinearPMap.adjoint_apply_eq _ _ fun v => _
[GOAL]
case h'.refine'_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
A : E →L[𝕜] F
p : Submodule 𝕜 E
hp : Dense ↑p
x : { x // x ∈ (LinearPMap.adjoint (LinearMap.toPMap (↑A) p)).domain }
y : { x // x ∈ (LinearMap.toPMap ↑(↑adjoint A) ⊤).domain }
hxy : ↑x = ↑y
⊢ Dense ↑(LinearMap.toPMap (↑A) p).domain
[PROOFSTEP]
simpa using hp
[GOAL]
case h'.refine'_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
A : E →L[𝕜] F
p : Submodule 𝕜 E
hp : Dense ↑p
x : { x // x ∈ (LinearPMap.adjoint (LinearMap.toPMap (↑A) p)).domain }
y : { x // x ∈ (LinearMap.toPMap ↑(↑adjoint A) ⊤).domain }
hxy : ↑x = ↑y
v : { x // x ∈ (LinearMap.toPMap (↑A) p).domain }
⊢ inner (↑(LinearMap.toPMap ↑(↑adjoint A) ⊤) y) ↑v = inner (↑x) (↑(LinearMap.toPMap (↑A) p) v)
[PROOFSTEP]
simp only [adjoint_inner_left, hxy, LinearMap.toPMap_apply, coe_coe]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace E
A : E →ₗ.[𝕜] E
hA : IsSelfAdjoint A
⊢ Dense ↑A.domain
[PROOFSTEP]
by_contra h
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace E
A : E →ₗ.[𝕜] E
hA : IsSelfAdjoint A
h : ¬Dense ↑A.domain
⊢ False
[PROOFSTEP]
rw [isSelfAdjoint_def] at hA
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace E
A : E →ₗ.[𝕜] E
hA : A† = A
h : ¬Dense ↑A.domain
⊢ False
[PROOFSTEP]
have h' : A.domain = ⊤ := by
  rw [← hA, Submodule.eq_top_iff']
  intro x
  rw [mem_adjoint_domain_iff, ← hA]
  refine (innerSL 𝕜 x).cont.comp ?_
  simp [adjoint, h, continuous_const]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace E
A : E →ₗ.[𝕜] E
hA : A† = A
h : ¬Dense ↑A.domain
⊢ A.domain = ⊤
[PROOFSTEP]
rw [← hA, Submodule.eq_top_iff']
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace E
A : E →ₗ.[𝕜] E
hA : A† = A
h : ¬Dense ↑A.domain
⊢ ∀ (x : E), x ∈ A†.domain
[PROOFSTEP]
intro x
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace E
A : E →ₗ.[𝕜] E
hA : A† = A
h : ¬Dense ↑A.domain
x : E
⊢ x ∈ A†.domain
[PROOFSTEP]
rw [mem_adjoint_domain_iff, ← hA]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace E
A : E →ₗ.[𝕜] E
hA : A† = A
h : ¬Dense ↑A.domain
x : E
⊢ Continuous ↑(LinearMap.comp (↑(innerₛₗ 𝕜) x) A†.toFun)
[PROOFSTEP]
refine (innerSL 𝕜 x).cont.comp ?_
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace E
A : E →ₗ.[𝕜] E
hA : A† = A
h : ¬Dense ↑A.domain
x : E
⊢ Continuous fun x => ↑A†.toFun x
[PROOFSTEP]
simp [adjoint, h, continuous_const]
[GOAL]
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace E
A : E →ₗ.[𝕜] E
hA : A† = A
h : ¬Dense ↑A.domain
h' : A.domain = ⊤
⊢ False
[PROOFSTEP]
simp [h'] at h