Theorem: SciLean.HasAdjDiffAt.pi_rule (SciLean/Core/FunctionPropositions/HasAdjDiff.lean)

State before:
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.18249
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.18260
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type u_4
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → (i : ι) → E i
x : X
hf : ∀ (i : ι), HasAdjDiffAt K (fun x => f x i) x
⊢ HasAdjDiffAt K (fun x i => f x i) x
Tactic:
have := fun i => (hf i).1
State after:
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.18249
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.18260
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type u_4
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → (i : ι) → E i
x : X
hf : ∀ (i : ι), HasAdjDiffAt K (fun x => f x i) x
this : ∀ (i : ι), CDifferentiableAt K (fun x => f x i) x
⊢ HasAdjDiffAt K (fun x i => f x i) x

State before:
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.18249
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.18260
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type u_4
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → (i : ι) → E i
x : X
hf : ∀ (i : ι), HasAdjDiffAt K (fun x => f x i) x
this : ∀ (i : ι), CDifferentiableAt K (fun x => f x i) x
⊢ HasAdjDiffAt K (fun x i => f x i) x
Tactic:
constructor
State after:
case left
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.18249
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.18260
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type u_4
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → (i : ι) → E i
x : X
hf : ∀ (i : ι), HasAdjDiffAt K (fun x => f x i) x
this : ∀ (i : ι), CDifferentiableAt K (fun x => f x i) x
⊢ CDifferentiableAt K (fun x i => f x i) x

case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.18249
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.18260
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type u_4
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → (i : ι) → E i
x : X
hf : ∀ (i : ι), HasAdjDiffAt K (fun x => f x i) x
this : ∀ (i : ι), CDifferentiableAt K (fun x => f x i) x
⊢ HasSemiAdjoint K (cderiv K (fun x i => f x i) x)

State before:
case left
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.18249
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.18260
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type u_4
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → (i : ι) → E i
x : X
hf : ∀ (i : ι), HasAdjDiffAt K (fun x => f x i) x
this : ∀ (i : ι), CDifferentiableAt K (fun x => f x i) x
⊢ CDifferentiableAt K (fun x i => f x i) x

case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.18249
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.18260
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type u_4
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → (i : ι) → E i
x : X
hf : ∀ (i : ι), HasAdjDiffAt K (fun x => f x i) x
this : ∀ (i : ι), CDifferentiableAt K (fun x => f x i) x
⊢ HasSemiAdjoint K (cderiv K (fun x i => f x i) x)
Tactic:
. fun_prop
State after:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.18249
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.18260
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type u_4
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → (i : ι) → E i
x : X
hf : ∀ (i : ι), HasAdjDiffAt K (fun x => f x i) x
this : ∀ (i : ι), CDifferentiableAt K (fun x => f x i) x
⊢ HasSemiAdjoint K (cderiv K (fun x i => f x i) x)

State before:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.18249
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.18260
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type u_4
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → (i : ι) → E i
x : X
hf : ∀ (i : ι), HasAdjDiffAt K (fun x => f x i) x
this : ∀ (i : ι), CDifferentiableAt K (fun x => f x i) x
⊢ HasSemiAdjoint K (cderiv K (fun x i => f x i) x)
Tactic:
. rw[cderiv.pi_rule_at (hf:=by assumption)]
  fun_prop
State after:
no goals

State before:
case left
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.18249
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.18260
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type u_4
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → (i : ι) → E i
x : X
hf : ∀ (i : ι), HasAdjDiffAt K (fun x => f x i) x
this : ∀ (i : ι), CDifferentiableAt K (fun x => f x i) x
⊢ CDifferentiableAt K (fun x i => f x i) x
Tactic:
fun_prop
State after:
no goals

State before:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.18249
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.18260
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type u_4
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → (i : ι) → E i
x : X
hf : ∀ (i : ι), HasAdjDiffAt K (fun x => f x i) x
this : ∀ (i : ι), CDifferentiableAt K (fun x => f x i) x
⊢ HasSemiAdjoint K (cderiv K (fun x i => f x i) x)
Tactic:
rw[cderiv.pi_rule_at (hf:=by assumption)]
State after:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.18249
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.18260
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type u_4
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → (i : ι) → E i
x : X
hf : ∀ (i : ι), HasAdjDiffAt K (fun x => f x i) x
this : ∀ (i : ι), CDifferentiableAt K (fun x => f x i) x
⊢ HasSemiAdjoint K fun dx i => cderiv K (fun x => f x i) x dx

State before:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.18249
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.18260
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type u_4
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → (i : ι) → E i
x : X
hf : ∀ (i : ι), HasAdjDiffAt K (fun x => f x i) x
this : ∀ (i : ι), CDifferentiableAt K (fun x => f x i) x
⊢ HasSemiAdjoint K fun dx i => cderiv K (fun x => f x i) x dx
Tactic:
fun_prop
State after:
no goals

State before:
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.18249
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.18260
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type u_4
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → (i : ι) → E i
x : X
hf : ∀ (i : ι), HasAdjDiffAt K (fun x => f x i) x
this : ∀ (i : ι), CDifferentiableAt K (fun x => f x i) x
⊢ ∀ (i : ι), CDifferentiableAt K (fun x => f x i) x
Tactic:
assumption
State after:
no goals