internlm/Lean-Github huggingface dataset:
Theorem: SciLean.HasAdjDiff.apply_rule
Proof state before:
K : Type u_1
inst✝⁷ : RCLike K
X : Type ?u.4789
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.4802
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.4813
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type u_2
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
i : ι
⊢ HasAdjDiff K fun x => x i
Tactic:
intro x
Proof state after:
K : Type u_1
inst✝⁷ : RCLike K
X : Type ?u.4789
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.4802
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.4813
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type u_2
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
i : ι
x : (i : ι) → E i
⊢ HasAdjDiffAt K (fun x => x i) x
Theorem: SciLean.HasAdjDiff.apply_rule
Proof state before:
K : Type u_1
inst✝⁷ : RCLike K
X : Type ?u.4789
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.4802
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.4813
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type u_2
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type u_3
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
i : ι
x : (i : ι) → E i
⊢ HasAdjDiffAt K (fun x => x i) x
Tactic:
fun_prop
Proof state after:
no goals
Theorem: SciLean.HasAdjDiffAt.comp_rule
Proof state before:
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.5139
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.5166
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K f (g x)
hg : HasAdjDiffAt K g x
⊢ HasAdjDiffAt K (fun x => f (g x)) x
Tactic:
constructor
Proof state after:
case left
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.5139
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.5166
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K f (g x)
hg : HasAdjDiffAt K g x
⊢ CDifferentiableAt K (fun x => f (g x)) x

case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.5139
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.5166
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K f (g x)
hg : HasAdjDiffAt K g x
⊢ HasSemiAdjoint K (cderiv K (fun x => f (g x)) x)
Theorem: SciLean.HasAdjDiffAt.comp_rule
Proof state before:
case left
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.5139
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.5166
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K f (g x)
hg : HasAdjDiffAt K g x
⊢ CDifferentiableAt K (fun x => f (g x)) x

case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.5139
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.5166
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K f (g x)
hg : HasAdjDiffAt K g x
⊢ HasSemiAdjoint K (cderiv K (fun x => f (g x)) x)
Tactic:
. fun_prop
Proof state after:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.5139
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.5166
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K f (g x)
hg : HasAdjDiffAt K g x
⊢ HasSemiAdjoint K (cderiv K (fun x => f (g x)) x)
Theorem: SciLean.HasAdjDiffAt.comp_rule
Proof state before:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.5139
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.5166
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K f (g x)
hg : HasAdjDiffAt K g x
⊢ HasSemiAdjoint K (cderiv K (fun x => f (g x)) x)
Tactic:
. fun_trans; fun_prop
Proof state after:
no goals
Theorem: SciLean.HasAdjDiffAt.comp_rule
Proof state before:
case left
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.5139
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.5166
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K f (g x)
hg : HasAdjDiffAt K g x
⊢ CDifferentiableAt K (fun x => f (g x)) x
Tactic:
fun_prop
Proof state after:
no goals
Theorem: SciLean.HasAdjDiffAt.comp_rule
Proof state before:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.5139
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.5166
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K f (g x)
hg : HasAdjDiffAt K g x
⊢ HasSemiAdjoint K (cderiv K (fun x => f (g x)) x)
Tactic:
fun_trans
Proof state after:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.5139
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.5166
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K f (g x)
hg : HasAdjDiffAt K g x
⊢ HasSemiAdjoint K fun dx => cderiv K (fun x0 => f x0) (g x) (cderiv K (fun x => g x) x dx)
Theorem: SciLean.HasAdjDiffAt.comp_rule
Proof state before:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.5139
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.5166
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K f (g x)
hg : HasAdjDiffAt K g x
⊢ HasSemiAdjoint K fun dx => cderiv K (fun x0 => f x0) (g x) (cderiv K (fun x => g x) x dx)
Tactic:
fun_prop
Proof state after:
no goals
Theorem: SciLean.HasAdjDiff.comp_rule
Proof state before:
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.7833
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.7860
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
hf : HasAdjDiff K f
hg : HasAdjDiff K g
⊢ HasAdjDiff K fun x => f (g x)
Tactic:
intro x
Proof state after:
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.7833
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.7860
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
hf : HasAdjDiff K f
hg : HasAdjDiff K g
x : X
⊢ HasAdjDiffAt K (fun x => f (g x)) x
Theorem: SciLean.HasAdjDiff.comp_rule
Proof state before:
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.7833
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.7860
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
hf : HasAdjDiff K f
hg : HasAdjDiff K g
x : X
⊢ HasAdjDiffAt K (fun x => f (g x)) x
Tactic:
constructor
Proof state after:
case left
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.7833
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.7860
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
hf : HasAdjDiff K f
hg : HasAdjDiff K g
x : X
⊢ CDifferentiableAt K (fun x => f (g x)) x

case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.7833
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.7860
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
hf : HasAdjDiff K f
hg : HasAdjDiff K g
x : X
⊢ HasSemiAdjoint K (cderiv K (fun x => f (g x)) x)
Theorem: SciLean.HasAdjDiff.comp_rule
Proof state before:
case left
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.7833
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.7860
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
hf : HasAdjDiff K f
hg : HasAdjDiff K g
x : X
⊢ CDifferentiableAt K (fun x => f (g x)) x

case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.7833
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.7860
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
hf : HasAdjDiff K f
hg : HasAdjDiff K g
x : X
⊢ HasSemiAdjoint K (cderiv K (fun x => f (g x)) x)
Tactic:
. fun_prop
Proof state after:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.7833
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.7860
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
hf : HasAdjDiff K f
hg : HasAdjDiff K g
x : X
⊢ HasSemiAdjoint K (cderiv K (fun x => f (g x)) x)
Theorem: SciLean.HasAdjDiff.comp_rule
Proof state before:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.7833
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.7860
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
hf : HasAdjDiff K f
hg : HasAdjDiff K g
x : X
⊢ HasSemiAdjoint K (cderiv K (fun x => f (g x)) x)
Tactic:
. fun_trans; fun_prop
Proof state after:
no goals
Theorem: SciLean.HasAdjDiff.comp_rule
Proof state before:
case left
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.7833
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.7860
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
hf : HasAdjDiff K f
hg : HasAdjDiff K g
x : X
⊢ CDifferentiableAt K (fun x => f (g x)) x
Tactic:
fun_prop
Proof state after:
no goals
Theorem: SciLean.HasAdjDiff.comp_rule
Proof state before:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.7833
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.7860
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
hf : HasAdjDiff K f
hg : HasAdjDiff K g
x : X
⊢ HasSemiAdjoint K (cderiv K (fun x => f (g x)) x)
Tactic:
fun_trans
Proof state after:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.7833
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.7860
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
hf : HasAdjDiff K f
hg : HasAdjDiff K g
x : X
⊢ HasSemiAdjoint K fun dx => cderiv K (fun x0 => f x0) (g x) (cderiv K (fun x => g x) x dx)
Theorem: SciLean.HasAdjDiff.comp_rule
Proof state before:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_4
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_2
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_3
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.7833
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.7860
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : Y → Z
g : X → Y
hf : HasAdjDiff K f
hg : HasAdjDiff K g
x : X
⊢ HasSemiAdjoint K fun dx => cderiv K (fun x0 => f x0) (g x) (cderiv K (fun x => g x) x dx)
Tactic:
fun_prop
Proof state after:
no goals
Theorem: SciLean.HasAdjDiffAt.let_rule
Proof state before:
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.10163
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.10190
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K (↿f) (x, g x)
hg : HasAdjDiffAt K g x
⊢ HasAdjDiffAt K
    (fun x =>
      let y := g x;
      f x y)
    x
Tactic:
constructor
Proof state after:
case left
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.10163
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.10190
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K (↿f) (x, g x)
hg : HasAdjDiffAt K g x
⊢ CDifferentiableAt K
    (fun x =>
      let y := g x;
      f x y)
    x

case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.10163
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.10190
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K (↿f) (x, g x)
hg : HasAdjDiffAt K g x
⊢ HasSemiAdjoint K
    (cderiv K
      (fun x =>
        let y := g x;
        f x y)
      x)
Theorem: SciLean.HasAdjDiffAt.let_rule
Proof state before:
case left
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.10163
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.10190
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K (↿f) (x, g x)
hg : HasAdjDiffAt K g x
⊢ CDifferentiableAt K
    (fun x =>
      let y := g x;
      f x y)
    x

case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.10163
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.10190
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K (↿f) (x, g x)
hg : HasAdjDiffAt K g x
⊢ HasSemiAdjoint K
    (cderiv K
      (fun x =>
        let y := g x;
        f x y)
      x)
Tactic:
. fun_prop
Proof state after:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.10163
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.10190
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K (↿f) (x, g x)
hg : HasAdjDiffAt K g x
⊢ HasSemiAdjoint K
    (cderiv K
      (fun x =>
        let y := g x;
        f x y)
      x)
Theorem: SciLean.HasAdjDiffAt.let_rule
Proof state before:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.10163
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.10190
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K (↿f) (x, g x)
hg : HasAdjDiffAt K g x
⊢ HasSemiAdjoint K
    (cderiv K
      (fun x =>
        let y := g x;
        f x y)
      x)
Tactic:
. fun_trans; fun_prop
Proof state after:
no goals
Theorem: SciLean.HasAdjDiffAt.let_rule
Proof state before:
case left
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.10163
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.10190
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K (↿f) (x, g x)
hg : HasAdjDiffAt K g x
⊢ CDifferentiableAt K
    (fun x =>
      let y := g x;
      f x y)
    x
Tactic:
fun_prop
Proof state after:
no goals
Theorem: SciLean.HasAdjDiffAt.let_rule
Proof state before:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.10163
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.10190
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K (↿f) (x, g x)
hg : HasAdjDiffAt K g x
⊢ HasSemiAdjoint K
    (cderiv K
      (fun x =>
        let y := g x;
        f x y)
      x)
Tactic:
fun_trans
Proof state after:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.10163
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.10190
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K (↿f) (x, g x)
hg : HasAdjDiffAt K g x
⊢ HasSemiAdjoint K fun dx => cderiv K (fun xy => f xy.1 xy.2) (x, g x) (dx, cderiv K (fun x => g x) x dx)
Theorem: SciLean.HasAdjDiffAt.let_rule
Proof state before:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.10163
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.10190
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
x : X
hf : HasAdjDiffAt K (↿f) (x, g x)
hg : HasAdjDiffAt K g x
⊢ HasSemiAdjoint K fun dx => cderiv K (fun xy => f xy.1 xy.2) (x, g x) (dx, cderiv K (fun x => g x) x dx)
Tactic:
fun_prop
Proof state after:
no goals
Theorem: SciLean.HasAdjDiff.let_rule
Proof state before:
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.14506
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.14533
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
hf : HasAdjDiff K ↿f
hg : HasAdjDiff K g
⊢ HasAdjDiff K fun x =>
    let y := g x;
    f x y
Tactic:
intro x
Proof state after:
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.14506
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.14533
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
hf : HasAdjDiff K ↿f
hg : HasAdjDiff K g
x : X
⊢ HasAdjDiffAt K
    (fun x =>
      let y := g x;
      f x y)
    x
Theorem: SciLean.HasAdjDiff.let_rule
Proof state before:
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.14506
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.14533
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
hf : HasAdjDiff K ↿f
hg : HasAdjDiff K g
x : X
⊢ HasAdjDiffAt K
    (fun x =>
      let y := g x;
      f x y)
    x
Tactic:
constructor
Proof state after:
case left
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.14506
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.14533
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
hf : HasAdjDiff K ↿f
hg : HasAdjDiff K g
x : X
⊢ CDifferentiableAt K
    (fun x =>
      let y := g x;
      f x y)
    x

case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.14506
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.14533
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
hf : HasAdjDiff K ↿f
hg : HasAdjDiff K g
x : X
⊢ HasSemiAdjoint K
    (cderiv K
      (fun x =>
        let y := g x;
        f x y)
      x)
Theorem: SciLean.HasAdjDiff.let_rule
Proof state before:
case left
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.14506
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.14533
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
hf : HasAdjDiff K ↿f
hg : HasAdjDiff K g
x : X
⊢ CDifferentiableAt K
    (fun x =>
      let y := g x;
      f x y)
    x

case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.14506
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.14533
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
hf : HasAdjDiff K ↿f
hg : HasAdjDiff K g
x : X
⊢ HasSemiAdjoint K
    (cderiv K
      (fun x =>
        let y := g x;
        f x y)
      x)
Tactic:
. fun_prop
Proof state after:
case right
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.14506
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.14533
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
hf : HasAdjDiff K ↿f
hg : HasAdjDiff K g
x : X
⊢ HasSemiAdjoint K
    (cderiv K
      (fun x =>
        let y := g x;
        f x y)
      x)