internlm/Lean-Github huggingface dataset:
Theorem: SciLean.HasAdjDiff.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.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_trans; fun_prop
Proof state after:
no goals
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
Tactic:
fun_prop
Proof state after:
no goals
Theorem: SciLean.HasAdjDiff.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.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_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.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 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.HasAdjDiff.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.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 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.HasAdjDiffAt.pi_rule
Proof 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
Proof 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
Theorem: SciLean.HasAdjDiffAt.pi_rule
Proof 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
Proof 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)
Theorem: SciLean.HasAdjDiffAt.pi_rule
Proof 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
Proof 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)
Theorem: SciLean.HasAdjDiffAt.pi_rule
Proof 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
Proof state after:
no goals
Theorem: SciLean.HasAdjDiffAt.pi_rule
Proof 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
Proof state after:
no goals
Theorem: SciLean.HasAdjDiffAt.pi_rule
Proof 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)]
Proof 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
Theorem: SciLean.HasAdjDiffAt.pi_rule
Proof 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
Proof state after:
no goals
Theorem: SciLean.HasAdjDiffAt.pi_rule
Proof 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
Proof state after:
no goals
Theorem: SciLean.HasAdjDiff.pi_rule
Proof state before:
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.19388
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.19399
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
hf : ∀ (i : ι), HasAdjDiff K fun x => f x i
⊢ HasAdjDiff K fun x i => f x i
Tactic:
intro x
Proof state after:
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.19388
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.19399
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
hf : ∀ (i : ι), HasAdjDiff K fun x => f x i
x : X
⊢ HasAdjDiffAt K (fun x i => f x i) x
Theorem: SciLean.HasAdjDiff.pi_rule
Proof state before:
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.19388
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.19399
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
hf : ∀ (i : ι), HasAdjDiff K fun x => f x i
x : X
⊢ HasAdjDiffAt K (fun x i => f x i) x
Tactic:
apply HasAdjDiffAt.pi_rule
Proof state after:
case hf
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.19388
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.19399
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
hf : ∀ (i : ι), HasAdjDiff K fun x => f x i
x : X
⊢ ∀ (i : ι), HasAdjDiffAt K (fun x => f x i) x
Theorem: SciLean.HasAdjDiff.pi_rule
Proof state before:
case hf
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type ?u.19388
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type ?u.19399
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
hf : ∀ (i : ι), HasAdjDiff K fun x => f x i
x : X
⊢ ∀ (i : ι), HasAdjDiffAt K (fun x => f x i) x
Tactic:
fun_prop
Proof state after:
no goals
Theorem: SciLean.Prod.mk.arg_fstsnd.HasAdjDiffAt_rule
Proof state before:
K✝ : Type ?u.19983
inst✝¹⁶ : RCLike K✝
X✝ : Type ?u.19989
inst✝¹⁵ : SemiInnerProductSpace K✝ X✝
Y✝ : Type ?u.20002
inst✝¹⁴ : SemiInnerProductSpace K✝ Y✝
Z✝ : Type ?u.20013
inst✝¹³ : SemiInnerProductSpace K✝ Z✝
ι✝ : Type ?u.20024
inst✝¹² : IndexType ι✝
inst✝¹¹ : LawfulIndexType ι✝
inst✝¹⁰ : DecidableEq ι✝
E✝ : ι✝ → Type ?u.20051
inst✝⁹ : (i : ι✝) → SemiInnerProductSpace K✝ (E✝ i)
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
W : Type ?u.20108
inst✝⁴ : SemiInnerProductSpace K W
ι : Type ?u.20119
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.20146
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
x : X
g : X → Y
hg : HasAdjDiffAt K g x
f : X → Z
hf : HasAdjDiffAt K f x
⊢ HasAdjDiffAt K (fun x => (g x, f x)) x
Tactic:
constructor
Proof state after:
case left
K✝ : Type ?u.19983
inst✝¹⁶ : RCLike K✝
X✝ : Type ?u.19989
inst✝¹⁵ : SemiInnerProductSpace K✝ X✝
Y✝ : Type ?u.20002
inst✝¹⁴ : SemiInnerProductSpace K✝ Y✝
Z✝ : Type ?u.20013
inst✝¹³ : SemiInnerProductSpace K✝ Z✝
ι✝ : Type ?u.20024
inst✝¹² : IndexType ι✝
inst✝¹¹ : LawfulIndexType ι✝
inst✝¹⁰ : DecidableEq ι✝
E✝ : ι✝ → Type ?u.20051
inst✝⁹ : (i : ι✝) → SemiInnerProductSpace K✝ (E✝ i)
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
W : Type ?u.20108
inst✝⁴ : SemiInnerProductSpace K W
ι : Type ?u.20119
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.20146
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
x : X
g : X → Y
hg : HasAdjDiffAt K g x
f : X → Z
hf : HasAdjDiffAt K f x
⊢ CDifferentiableAt K (fun x => (g x, f x)) x

case right
K✝ : Type ?u.19983
inst✝¹⁶ : RCLike K✝
X✝ : Type ?u.19989
inst✝¹⁵ : SemiInnerProductSpace K✝ X✝
Y✝ : Type ?u.20002
inst✝¹⁴ : SemiInnerProductSpace K✝ Y✝
Z✝ : Type ?u.20013
inst✝¹³ : SemiInnerProductSpace K✝ Z✝
ι✝ : Type ?u.20024
inst✝¹² : IndexType ι✝
inst✝¹¹ : LawfulIndexType ι✝
inst✝¹⁰ : DecidableEq ι✝
E✝ : ι✝ → Type ?u.20051
inst✝⁹ : (i : ι✝) → SemiInnerProductSpace K✝ (E✝ i)
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
W : Type ?u.20108
inst✝⁴ : SemiInnerProductSpace K W
ι : Type ?u.20119
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.20146
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
x : X
g : X → Y
hg : HasAdjDiffAt K g x
f : X → Z
hf : HasAdjDiffAt K f x
⊢ HasSemiAdjoint K (cderiv K (fun x => (g x, f x)) x)
Theorem: SciLean.Prod.mk.arg_fstsnd.HasAdjDiffAt_rule
Proof state before:
case left
K✝ : Type ?u.19983
inst✝¹⁶ : RCLike K✝
X✝ : Type ?u.19989
inst✝¹⁵ : SemiInnerProductSpace K✝ X✝
Y✝ : Type ?u.20002
inst✝¹⁴ : SemiInnerProductSpace K✝ Y✝
Z✝ : Type ?u.20013
inst✝¹³ : SemiInnerProductSpace K✝ Z✝
ι✝ : Type ?u.20024
inst✝¹² : IndexType ι✝
inst✝¹¹ : LawfulIndexType ι✝
inst✝¹⁰ : DecidableEq ι✝
E✝ : ι✝ → Type ?u.20051
inst✝⁹ : (i : ι✝) → SemiInnerProductSpace K✝ (E✝ i)
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
W : Type ?u.20108
inst✝⁴ : SemiInnerProductSpace K W
ι : Type ?u.20119
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.20146
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
x : X
g : X → Y
hg : HasAdjDiffAt K g x
f : X → Z
hf : HasAdjDiffAt K f x
⊢ CDifferentiableAt K (fun x => (g x, f x)) x

case right
K✝ : Type ?u.19983
inst✝¹⁶ : RCLike K✝
X✝ : Type ?u.19989
inst✝¹⁵ : SemiInnerProductSpace K✝ X✝
Y✝ : Type ?u.20002
inst✝¹⁴ : SemiInnerProductSpace K✝ Y✝
Z✝ : Type ?u.20013
inst✝¹³ : SemiInnerProductSpace K✝ Z✝
ι✝ : Type ?u.20024
inst✝¹² : IndexType ι✝
inst✝¹¹ : LawfulIndexType ι✝
inst✝¹⁰ : DecidableEq ι✝
E✝ : ι✝ → Type ?u.20051
inst✝⁹ : (i : ι✝) → SemiInnerProductSpace K✝ (E✝ i)
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
W : Type ?u.20108
inst✝⁴ : SemiInnerProductSpace K W
ι : Type ?u.20119
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.20146
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
x : X
g : X → Y
hg : HasAdjDiffAt K g x
f : X → Z
hf : HasAdjDiffAt K f x
⊢ HasSemiAdjoint K (cderiv K (fun x => (g x, f x)) x)
Tactic:
fun_prop
Proof state after:
case right
K✝ : Type ?u.19983
inst✝¹⁶ : RCLike K✝
X✝ : Type ?u.19989
inst✝¹⁵ : SemiInnerProductSpace K✝ X✝
Y✝ : Type ?u.20002
inst✝¹⁴ : SemiInnerProductSpace K✝ Y✝
Z✝ : Type ?u.20013
inst✝¹³ : SemiInnerProductSpace K✝ Z✝
ι✝ : Type ?u.20024
inst✝¹² : IndexType ι✝
inst✝¹¹ : LawfulIndexType ι✝
inst✝¹⁰ : DecidableEq ι✝
E✝ : ι✝ → Type ?u.20051
inst✝⁹ : (i : ι✝) → SemiInnerProductSpace K✝ (E✝ i)
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
W : Type ?u.20108
inst✝⁴ : SemiInnerProductSpace K W
ι : Type ?u.20119
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.20146
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
x : X
g : X → Y
hg : HasAdjDiffAt K g x
f : X → Z
hf : HasAdjDiffAt K f x
⊢ HasSemiAdjoint K (cderiv K (fun x => (g x, f x)) x)
Theorem: SciLean.Prod.mk.arg_fstsnd.HasAdjDiffAt_rule
Proof state before:
case right
K✝ : Type ?u.19983
inst✝¹⁶ : RCLike K✝
X✝ : Type ?u.19989
inst✝¹⁵ : SemiInnerProductSpace K✝ X✝
Y✝ : Type ?u.20002
inst✝¹⁴ : SemiInnerProductSpace K✝ Y✝
Z✝ : Type ?u.20013
inst✝¹³ : SemiInnerProductSpace K✝ Z✝
ι✝ : Type ?u.20024
inst✝¹² : IndexType ι✝
inst✝¹¹ : LawfulIndexType ι✝
inst✝¹⁰ : DecidableEq ι✝
E✝ : ι✝ → Type ?u.20051
inst✝⁹ : (i : ι✝) → SemiInnerProductSpace K✝ (E✝ i)
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
W : Type ?u.20108
inst✝⁴ : SemiInnerProductSpace K W
ι : Type ?u.20119
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.20146
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
x : X
g : X → Y
hg : HasAdjDiffAt K g x
f : X → Z
hf : HasAdjDiffAt K f x
⊢ HasSemiAdjoint K (cderiv K (fun x => (g x, f x)) x)
Tactic:
fun_trans
Proof state after:
case right
K✝ : Type ?u.19983
inst✝¹⁶ : RCLike K✝
X✝ : Type ?u.19989
inst✝¹⁵ : SemiInnerProductSpace K✝ X✝
Y✝ : Type ?u.20002
inst✝¹⁴ : SemiInnerProductSpace K✝ Y✝
Z✝ : Type ?u.20013
inst✝¹³ : SemiInnerProductSpace K✝ Z✝
ι✝ : Type ?u.20024
inst✝¹² : IndexType ι✝
inst✝¹¹ : LawfulIndexType ι✝
inst✝¹⁰ : DecidableEq ι✝
E✝ : ι✝ → Type ?u.20051
inst✝⁹ : (i : ι✝) → SemiInnerProductSpace K✝ (E✝ i)
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
W : Type ?u.20108
inst✝⁴ : SemiInnerProductSpace K W
ι : Type ?u.20119
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.20146
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
x : X
g : X → Y
hg : HasAdjDiffAt K g x
f : X → Z
hf : HasAdjDiffAt K f x
⊢ HasSemiAdjoint K fun dx => (cderiv K (fun x => g x) x dx, cderiv K (fun x => f x) x dx)
Theorem: SciLean.Prod.mk.arg_fstsnd.HasAdjDiffAt_rule
Proof state before:
case right
K✝ : Type ?u.19983
inst✝¹⁶ : RCLike K✝
X✝ : Type ?u.19989
inst✝¹⁵ : SemiInnerProductSpace K✝ X✝
Y✝ : Type ?u.20002
inst✝¹⁴ : SemiInnerProductSpace K✝ Y✝
Z✝ : Type ?u.20013
inst✝¹³ : SemiInnerProductSpace K✝ Z✝
ι✝ : Type ?u.20024
inst✝¹² : IndexType ι✝
inst✝¹¹ : LawfulIndexType ι✝
inst✝¹⁰ : DecidableEq ι✝
E✝ : ι✝ → Type ?u.20051
inst✝⁹ : (i : ι✝) → SemiInnerProductSpace K✝ (E✝ i)
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
W : Type ?u.20108
inst✝⁴ : SemiInnerProductSpace K W
ι : Type ?u.20119
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.20146
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
x : X
g : X → Y
hg : HasAdjDiffAt K g x
f : X → Z
hf : HasAdjDiffAt K f x
⊢ HasSemiAdjoint K fun dx => (cderiv K (fun x => g x) x dx, cderiv K (fun x => f x) x dx)
Tactic:
fun_prop
Proof state after:
no goals
Theorem: SciLean.Prod.mk.arg_fstsnd.HasAdjDiff_rule
Proof state before:
K✝ : Type ?u.22539
inst✝¹⁶ : RCLike K✝
X✝ : Type ?u.22545
inst✝¹⁵ : SemiInnerProductSpace K✝ X✝
Y✝ : Type ?u.22558
inst✝¹⁴ : SemiInnerProductSpace K✝ Y✝
Z✝ : Type ?u.22569
inst✝¹³ : SemiInnerProductSpace K✝ Z✝
ι✝ : Type ?u.22580
inst✝¹² : IndexType ι✝
inst✝¹¹ : LawfulIndexType ι✝
inst✝¹⁰ : DecidableEq ι✝
E✝ : ι✝ → Type ?u.22607
inst✝⁹ : (i : ι✝) → SemiInnerProductSpace K✝ (E✝ i)
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
W : Type ?u.22664
inst✝⁴ : SemiInnerProductSpace K W
ι : Type ?u.22675
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.22702
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
g : X → Y
hg : HasAdjDiff K g
f : X → Z
hf : HasAdjDiff K f
⊢ HasAdjDiff K fun x => (g x, f x)
Tactic:
intros x
Proof state after:
K✝ : Type ?u.22539
inst✝¹⁶ : RCLike K✝
X✝ : Type ?u.22545
inst✝¹⁵ : SemiInnerProductSpace K✝ X✝
Y✝ : Type ?u.22558
inst✝¹⁴ : SemiInnerProductSpace K✝ Y✝
Z✝ : Type ?u.22569
inst✝¹³ : SemiInnerProductSpace K✝ Z✝
ι✝ : Type ?u.22580
inst✝¹² : IndexType ι✝
inst✝¹¹ : LawfulIndexType ι✝
inst✝¹⁰ : DecidableEq ι✝
E✝ : ι✝ → Type ?u.22607
inst✝⁹ : (i : ι✝) → SemiInnerProductSpace K✝ (E✝ i)
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
W : Type ?u.22664
inst✝⁴ : SemiInnerProductSpace K W
ι : Type ?u.22675
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.22702
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
g : X → Y
hg : HasAdjDiff K g
f : X → Z
hf : HasAdjDiff K f
x : X
⊢ HasAdjDiffAt K (fun x => (g x, f x)) x