Theorem: SciLean.HasSemiAdjoint.apply_rule (SciLean/Core/FunctionPropositions/HasSemiAdjoint.lean)

State before:
K : Type u_1
inst✝⁸ : RCLike K
X : Type ?u.19500
inst✝⁷ : SemiInnerProductSpace K X
Y : Type ?u.19513
inst✝⁶ : SemiInnerProductSpace K Y
Z : Type ?u.19524
inst✝⁵ : SemiInnerProductSpace K Z
W : Type ?u.19535
inst✝⁴ : SemiInnerProductSpace K W
ι : Type u_2
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
i : ι
⊢ HasSemiAdjoint K fun x => x i
Tactic:
constructor
State after:
case semiAdjoint_exists
K : Type u_1
inst✝⁸ : RCLike K
X : Type ?u.19500
inst✝⁷ : SemiInnerProductSpace K X
Y : Type ?u.19513
inst✝⁶ : SemiInnerProductSpace K Y
Z : Type ?u.19524
inst✝⁵ : SemiInnerProductSpace K Z
W : Type ?u.19535
inst✝⁴ : SemiInnerProductSpace K W
ι : Type u_2
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
i : ι
⊢ ∃ f', ∀ (x : (i : ι) → E i) (y : E i), TestFunction x → ⟪y, x i⟫_K = ⟪f' y, x⟫_K

case is_differentiable
K : Type u_1
inst✝⁸ : RCLike K
X : Type ?u.19500
inst✝⁷ : SemiInnerProductSpace K X
Y : Type ?u.19513
inst✝⁶ : SemiInnerProductSpace K Y
Z : Type ?u.19524
inst✝⁵ : SemiInnerProductSpace K Z
W : Type ?u.19535
inst✝⁴ : SemiInnerProductSpace K W
ι : Type u_2
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
i : ι
⊢ SciLean.CDifferentiable K fun x => x i

State before:
case semiAdjoint_exists
K : Type u_1
inst✝⁸ : RCLike K
X : Type ?u.19500
inst✝⁷ : SemiInnerProductSpace K X
Y : Type ?u.19513
inst✝⁶ : SemiInnerProductSpace K Y
Z : Type ?u.19524
inst✝⁵ : SemiInnerProductSpace K Z
W : Type ?u.19535
inst✝⁴ : SemiInnerProductSpace K W
ι : Type u_2
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
i : ι
⊢ ∃ f', ∀ (x : (i : ι) → E i) (y : E i), TestFunction x → ⟪y, x i⟫_K = ⟪f' y, x⟫_K

case is_differentiable
K : Type u_1
inst✝⁸ : RCLike K
X : Type ?u.19500
inst✝⁷ : SemiInnerProductSpace K X
Y : Type ?u.19513
inst✝⁶ : SemiInnerProductSpace K Y
Z : Type ?u.19524
inst✝⁵ : SemiInnerProductSpace K Z
W : Type ?u.19535
inst✝⁴ : SemiInnerProductSpace K W
ι : Type u_2
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
i : ι
⊢ SciLean.CDifferentiable K fun x => x i
Tactic:
. apply Exists.intro (fun (y : E i) j => if h : i=j then h▸y else 0) _
  intros; simp[Inner.inner]; sorry_proof
State after:
case is_differentiable
K : Type u_1
inst✝⁸ : RCLike K
X : Type ?u.19500
inst✝⁷ : SemiInnerProductSpace K X
Y : Type ?u.19513
inst✝⁶ : SemiInnerProductSpace K Y
Z : Type ?u.19524
inst✝⁵ : SemiInnerProductSpace K Z
W : Type ?u.19535
inst✝⁴ : SemiInnerProductSpace K W
ι : Type u_2
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
i : ι
⊢ SciLean.CDifferentiable K fun x => x i

State before:
case is_differentiable
K : Type u_1
inst✝⁸ : RCLike K
X : Type ?u.19500
inst✝⁷ : SemiInnerProductSpace K X
Y : Type ?u.19513
inst✝⁶ : SemiInnerProductSpace K Y
Z : Type ?u.19524
inst✝⁵ : SemiInnerProductSpace K Z
W : Type ?u.19535
inst✝⁴ : SemiInnerProductSpace K W
ι : Type u_2
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
i : ι
⊢ SciLean.CDifferentiable K fun x => x i
Tactic:
. fun_prop
State after:
no goals

State before:
case semiAdjoint_exists
K : Type u_1
inst✝⁸ : RCLike K
X : Type ?u.19500
inst✝⁷ : SemiInnerProductSpace K X
Y : Type ?u.19513
inst✝⁶ : SemiInnerProductSpace K Y
Z : Type ?u.19524
inst✝⁵ : SemiInnerProductSpace K Z
W : Type ?u.19535
inst✝⁴ : SemiInnerProductSpace K W
ι : Type u_2
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
i : ι
⊢ ∃ f', ∀ (x : (i : ι) → E i) (y : E i), TestFunction x → ⟪y, x i⟫_K = ⟪f' y, x⟫_K
Tactic:
apply Exists.intro (fun (y : E i) j => if h : i=j then h▸y else 0) _
State after:
K : Type u_1
inst✝⁸ : RCLike K
X : Type ?u.19500
inst✝⁷ : SemiInnerProductSpace K X
Y : Type ?u.19513
inst✝⁶ : SemiInnerProductSpace K Y
Z : Type ?u.19524
inst✝⁵ : SemiInnerProductSpace K Z
W : Type ?u.19535
inst✝⁴ : SemiInnerProductSpace K W
ι : Type u_2
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
i : ι
⊢ ∀ (x : (i : ι) → E i) (y : E i), TestFunction x → ⟪y, x i⟫_K = ⟪(fun y j => if h : i = j then h ▸ y else 0) y, x⟫_K

State before:
K : Type u_1
inst✝⁸ : RCLike K
X : Type ?u.19500
inst✝⁷ : SemiInnerProductSpace K X
Y : Type ?u.19513
inst✝⁶ : SemiInnerProductSpace K Y
Z : Type ?u.19524
inst✝⁵ : SemiInnerProductSpace K Z
W : Type ?u.19535
inst✝⁴ : SemiInnerProductSpace K W
ι : Type u_2
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
i : ι
⊢ ∀ (x : (i : ι) → E i) (y : E i), TestFunction x → ⟪y, x i⟫_K = ⟪(fun y j => if h : i = j then h ▸ y else 0) y, x⟫_K
Tactic:
intros
State after:
K : Type u_1
inst✝⁸ : RCLike K
X : Type ?u.19500
inst✝⁷ : SemiInnerProductSpace K X
Y : Type ?u.19513
inst✝⁶ : SemiInnerProductSpace K Y
Z : Type ?u.19524
inst✝⁵ : SemiInnerProductSpace K Z
W : Type ?u.19535
inst✝⁴ : SemiInnerProductSpace K W
ι : Type u_2
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
i : ι
x✝ : (i : ι) → E i
y✝ : E i
a✝ : TestFunction x✝
⊢ ⟪y✝, x✝ i⟫_K = ⟪(fun y j => if h : i = j then h ▸ y else 0) y✝, x✝⟫_K

State before:
K : Type u_1
inst✝⁸ : RCLike K
X : Type ?u.19500
inst✝⁷ : SemiInnerProductSpace K X
Y : Type ?u.19513
inst✝⁶ : SemiInnerProductSpace K Y
Z : Type ?u.19524
inst✝⁵ : SemiInnerProductSpace K Z
W : Type ?u.19535
inst✝⁴ : SemiInnerProductSpace K W
ι : Type u_2
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
i : ι
x✝ : (i : ι) → E i
y✝ : E i
a✝ : TestFunction x✝
⊢ ⟪y✝, x✝ i⟫_K = ⟪(fun y j => if h : i = j then h ▸ y else 0) y✝, x✝⟫_K
Tactic:
simp[Inner.inner]
State after:
K : Type u_1
inst✝⁸ : RCLike K
X : Type ?u.19500
inst✝⁷ : SemiInnerProductSpace K X
Y : Type ?u.19513
inst✝⁶ : SemiInnerProductSpace K Y
Z : Type ?u.19524
inst✝⁵ : SemiInnerProductSpace K Z
W : Type ?u.19535
inst✝⁴ : SemiInnerProductSpace K W
ι : Type u_2
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
i : ι
x✝ : (i : ι) → E i
y✝ : E i
a✝ : TestFunction x✝
⊢ ⟪y✝, x✝ i⟫_K = ∑ i_1, ⟪if h : i = i_1 then h ▸ y✝ else 0, x✝ i_1⟫_K

State before:
K : Type u_1
inst✝⁸ : RCLike K
X : Type ?u.19500
inst✝⁷ : SemiInnerProductSpace K X
Y : Type ?u.19513
inst✝⁶ : SemiInnerProductSpace K Y
Z : Type ?u.19524
inst✝⁵ : SemiInnerProductSpace K Z
W : Type ?u.19535
inst✝⁴ : SemiInnerProductSpace K W
ι : Type u_2
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
i : ι
x✝ : (i : ι) → E i
y✝ : E i
a✝ : TestFunction x✝
⊢ ⟪y✝, x✝ i⟫_K = ∑ i_1, ⟪if h : i = i_1 then h ▸ y✝ else 0, x✝ i_1⟫_K
Tactic:
sorry_proof
State after:
no goals

State before:
case is_differentiable
K : Type u_1
inst✝⁸ : RCLike K
X : Type ?u.19500
inst✝⁷ : SemiInnerProductSpace K X
Y : Type ?u.19513
inst✝⁶ : SemiInnerProductSpace K Y
Z : Type ?u.19524
inst✝⁵ : SemiInnerProductSpace K Z
W : Type ?u.19535
inst✝⁴ : SemiInnerProductSpace K W
ι : Type u_2
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
i : ι
⊢ SciLean.CDifferentiable K fun x => x i
Tactic:
fun_prop
State after:
no goals