File: Mathlib/Analysis/InnerProductSpace/Calculus.lean

full_name: «_aux_Mathlib_Analysis_InnerProductSpace_Calculus___macroRules_term⟪_,_⟫_1»
code: local notation "⟪" x ", " y "⟫" => @inner 𝕜 _ _ x y
goal: Lean.Macro

full_name: fderivInnerCLM
code: /-- Derivative of the inner product. -/
def fderivInnerCLM (p : E × E) : E × E →L[ℝ] 𝕜 
goal: E × E →L[ℝ] 𝕜

full_name: fderivInnerCLM_apply
code: @[simp]
theorem fderivInnerCLM_apply (p x : E × E) : fderivInnerCLM 𝕜 p x = ⟪p.1, x.2⟫ + ⟪x.1, p.2⟫ 
goal: (fderivInnerCLM 𝕜 p) x = ⟪p.1, x.2⟫_𝕜 + ⟪x.1, p.2⟫_𝕜

full_name: contDiff_inner
code: theorem contDiff_inner {n} : ContDiff ℝ n fun p : E × E => ⟪p.1, p.2⟫ 
goal: ContDiff ℝ n fun p => ⟪p.1, p.2⟫_𝕜

full_name: contDiffAt_inner
code: theorem contDiffAt_inner {p : E × E} {n} : ContDiffAt ℝ n (fun p : E × E => ⟪p.1, p.2⟫) p 
goal: ContDiffAt ℝ n (fun p => ⟪p.1, p.2⟫_𝕜) p

full_name: differentiable_inner
code: theorem differentiable_inner : Differentiable ℝ fun p : E × E => ⟪p.1, p.2⟫ 
goal: Differentiable ℝ fun p => ⟪p.1, p.2⟫_𝕜

full_name: ContDiffWithinAt.inner
code: theorem ContDiffWithinAt.inner (hf : ContDiffWithinAt ℝ n f s x) (hg : ContDiffWithinAt ℝ n g s x) :
    ContDiffWithinAt ℝ n (fun x => ⟪f x, g x⟫) s x 
goal: ContDiffWithinAt ℝ n (fun x => ⟪f x, g x⟫_𝕜) s x

full_name: ContDiffAt.inner
code: nonrec theorem ContDiffAt.inner (hf : ContDiffAt ℝ n f x) (hg : ContDiffAt ℝ n g x) :
    ContDiffAt ℝ n (fun x => ⟪f x, g x⟫) x 
goal: ContDiffAt ℝ n (fun x => ⟪f x, g x⟫_𝕜) x

full_name: ContDiffOn.inner
code: theorem ContDiffOn.inner (hf : ContDiffOn ℝ n f s) (hg : ContDiffOn ℝ n g s) :
    ContDiffOn ℝ n (fun x => ⟪f x, g x⟫) s 
goal: ContDiffOn ℝ n (fun x => ⟪f x, g x⟫_𝕜) s

full_name: ContDiff.inner
code: theorem ContDiff.inner (hf : ContDiff ℝ n f) (hg : ContDiff ℝ n g) :
    ContDiff ℝ n fun x => ⟪f x, g x⟫ 
goal: ContDiff ℝ n fun x => ⟪f x, g x⟫_𝕜

full_name: HasFDerivWithinAt.inner
code: theorem HasFDerivWithinAt.inner (hf : HasFDerivWithinAt f f' s x)
    (hg : HasFDerivWithinAt g g' s x) :
    HasFDerivWithinAt (fun t => ⟪f t, g t⟫) ((fderivInnerCLM 𝕜 (f x, g x)).comp <| f'.prod g') s
      x 
goal: HasFDerivWithinAt (fun t => ⟪f t, g t⟫_𝕜) ((fderivInnerCLM 𝕜 (f x, g x)).comp (f'.prod g')) s x

full_name: HasStrictFDerivAt.inner
code: theorem HasStrictFDerivAt.inner (hf : HasStrictFDerivAt f f' x) (hg : HasStrictFDerivAt g g' x) :
    HasStrictFDerivAt (fun t => ⟪f t, g t⟫) ((fderivInnerCLM 𝕜 (f x, g x)).comp <| f'.prod g') x 
goal: HasStrictFDerivAt (fun t => ⟪f t, g t⟫_𝕜) ((fderivInnerCLM 𝕜 (f x, g x)).comp (f'.prod g')) x

full_name: HasFDerivAt.inner
code: theorem HasFDerivAt.inner (hf : HasFDerivAt f f' x) (hg : HasFDerivAt g g' x) :
    HasFDerivAt (fun t => ⟪f t, g t⟫) ((fderivInnerCLM 𝕜 (f x, g x)).comp <| f'.prod g') x 
goal: HasFDerivAt (fun t => ⟪f t, g t⟫_𝕜) ((fderivInnerCLM 𝕜 (f x, g x)).comp (f'.prod g')) x

full_name: HasDerivWithinAt.inner
code: theorem HasDerivWithinAt.inner {f g : ℝ → E} {f' g' : E} {s : Set ℝ} {x : ℝ}
    (hf : HasDerivWithinAt f f' s x) (hg : HasDerivWithinAt g g' s x) :
    HasDerivWithinAt (fun t => ⟪f t, g t⟫) (⟪f x, g'⟫ + ⟪f', g x⟫) s x 
goal: HasDerivWithinAt (fun t => ⟪f t, g t⟫_𝕜) (⟪f x, g'⟫_𝕜 + ⟪f', g x⟫_𝕜) s x

full_name: HasDerivAt.inner
code: theorem HasDerivAt.inner {f g : ℝ → E} {f' g' : E} {x : ℝ} :
    HasDerivAt f f' x → HasDerivAt g g' x →
      HasDerivAt (fun t => ⟪f t, g t⟫) (⟪f x, g'⟫ + ⟪f', g x⟫) x 
goal: HasDerivAt f f' x → HasDerivAt g g' x → HasDerivAt (fun t => ⟪f t, g t⟫_𝕜) (⟪f x, g'⟫_𝕜 + ⟪f', g x⟫_𝕜) x

full_name: DifferentiableWithinAt.inner
code: theorem DifferentiableWithinAt.inner (hf : DifferentiableWithinAt ℝ f s x)
    (hg : DifferentiableWithinAt ℝ g s x) : DifferentiableWithinAt ℝ (fun x => ⟪f x, g x⟫) s x 
goal: DifferentiableWithinAt ℝ (fun x => ⟪f x, g x⟫_𝕜) s x

full_name: DifferentiableAt.inner
code: theorem DifferentiableAt.inner (hf : DifferentiableAt ℝ f x) (hg : DifferentiableAt ℝ g x) :
    DifferentiableAt ℝ (fun x => ⟪f x, g x⟫) x 
goal: DifferentiableAt ℝ (fun x => ⟪f x, g x⟫_𝕜) x

full_name: DifferentiableOn.inner
code: theorem DifferentiableOn.inner (hf : DifferentiableOn ℝ f s) (hg : DifferentiableOn ℝ g s) :
    DifferentiableOn ℝ (fun x => ⟪f x, g x⟫) s 
goal: DifferentiableOn ℝ (fun x => ⟪f x, g x⟫_𝕜) s

full_name: Differentiable.inner
code: theorem Differentiable.inner (hf : Differentiable ℝ f) (hg : Differentiable ℝ g) :
    Differentiable ℝ fun x => ⟪f x, g x⟫ 
goal: Differentiable ℝ fun x => ⟪f x, g x⟫_𝕜

full_name: fderiv_inner_apply
code: theorem fderiv_inner_apply (hf : DifferentiableAt ℝ f x) (hg : DifferentiableAt ℝ g x) (y : G) :
    fderiv ℝ (fun t => ⟪f t, g t⟫) x y = ⟪f x, fderiv ℝ g x y⟫ + ⟪fderiv ℝ f x y, g x⟫ 
goal: (fderiv ℝ (fun t => ⟪f t, g t⟫_𝕜) x) y = ⟪f x, (fderiv ℝ g x) y⟫_𝕜 + ⟪(fderiv ℝ f x) y, g x⟫_𝕜

full_name: deriv_inner_apply
code: theorem deriv_inner_apply {f g : ℝ → E} {x : ℝ} (hf : DifferentiableAt ℝ f x)
    (hg : DifferentiableAt ℝ g x) :
    deriv (fun t => ⟪f t, g t⟫) x = ⟪f x, deriv g x⟫ + ⟪deriv f x, g x⟫ 
goal: deriv (fun t => ⟪f t, g t⟫_𝕜) x = ⟪f x, deriv g x⟫_𝕜 + ⟪deriv f x, g x⟫_𝕜

full_name: contDiff_norm_sq
code: theorem contDiff_norm_sq : ContDiff ℝ n fun x : E => ‖x‖ ^ 2 
goal: ContDiff ℝ n fun x => ‖x‖ ^ 2

full_name: ContDiff.norm_sq
code: theorem ContDiff.norm_sq (hf : ContDiff ℝ n f) : ContDiff ℝ n fun x => ‖f x‖ ^ 2 
goal: ContDiff ℝ n fun x => ‖f x‖ ^ 2

full_name: ContDiffWithinAt.norm_sq
code: theorem ContDiffWithinAt.norm_sq (hf : ContDiffWithinAt ℝ n f s x) :
    ContDiffWithinAt ℝ n (fun y => ‖f y‖ ^ 2) s x 
goal: ContDiffWithinAt ℝ n (fun y => ‖f y‖ ^ 2) s x

full_name: ContDiffAt.norm_sq
code: nonrec theorem ContDiffAt.norm_sq (hf : ContDiffAt ℝ n f x) : ContDiffAt ℝ n (‖f ·‖ ^ 2) x 
goal: ContDiffAt ℝ n (fun x => ‖f x‖ ^ 2) x

full_name: contDiffAt_norm
code: theorem contDiffAt_norm {x : E} (hx : x ≠ 0) : ContDiffAt ℝ n norm x 
goal: ContDiffAt ℝ n norm x

full_name: ContDiffAt.norm
code: theorem ContDiffAt.norm (hf : ContDiffAt ℝ n f x) (h0 : f x ≠ 0) :
    ContDiffAt ℝ n (fun y => ‖f y‖) x 
goal: ContDiffAt ℝ n (fun y => ‖f y‖) x

full_name: ContDiffAt.dist
code: theorem ContDiffAt.dist (hf : ContDiffAt ℝ n f x) (hg : ContDiffAt ℝ n g x) (hne : f x ≠ g x) :
    ContDiffAt ℝ n (fun y => dist (f y) (g y)) x 
goal: ContDiffAt ℝ n (fun y => dist (f y) (g y)) x

full_name: ContDiffWithinAt.norm
code: theorem ContDiffWithinAt.norm (hf : ContDiffWithinAt ℝ n f s x) (h0 : f x ≠ 0) :
    ContDiffWithinAt ℝ n (fun y => ‖f y‖) s x 
goal: ContDiffWithinAt ℝ n (fun y => ‖f y‖) s x

full_name: ContDiffWithinAt.dist
code: theorem ContDiffWithinAt.dist (hf : ContDiffWithinAt ℝ n f s x) (hg : ContDiffWithinAt ℝ n g s x)
    (hne : f x ≠ g x) : ContDiffWithinAt ℝ n (fun y => dist (f y) (g y)) s x 
goal: ContDiffWithinAt ℝ n (fun y => dist (f y) (g y)) s x

full_name: ContDiffOn.norm_sq
code: theorem ContDiffOn.norm_sq (hf : ContDiffOn ℝ n f s) : ContDiffOn ℝ n (fun y => ‖f y‖ ^ 2) s 
goal: ContDiffOn ℝ n (fun y => ‖f y‖ ^ 2) s

full_name: ContDiffOn.norm
code: theorem ContDiffOn.norm (hf : ContDiffOn ℝ n f s) (h0 : ∀ x ∈ s, f x ≠ 0) :
    ContDiffOn ℝ n (fun y => ‖f y‖) s 
goal: ContDiffOn ℝ n (fun y => ‖f y‖) s

full_name: ContDiffOn.dist
code: theorem ContDiffOn.dist (hf : ContDiffOn ℝ n f s) (hg : ContDiffOn ℝ n g s)
    (hne : ∀ x ∈ s, f x ≠ g x) : ContDiffOn ℝ n (fun y => dist (f y) (g y)) s 
goal: ContDiffOn ℝ n (fun y => dist (f y) (g y)) s

full_name: ContDiff.norm
code: theorem ContDiff.norm (hf : ContDiff ℝ n f) (h0 : ∀ x, f x ≠ 0) : ContDiff ℝ n fun y => ‖f y‖ 
goal: ContDiff ℝ n fun y => ‖f y‖

full_name: ContDiff.dist
code: theorem ContDiff.dist (hf : ContDiff ℝ n f) (hg : ContDiff ℝ n g) (hne : ∀ x, f x ≠ g x) :
    ContDiff ℝ n fun y => dist (f y) (g y) 
goal: ContDiff ℝ n fun y => dist (f y) (g y)

full_name: hasStrictFDerivAt_norm_sq
code: theorem hasStrictFDerivAt_norm_sq (x : F) :
    HasStrictFDerivAt (fun x => ‖x‖ ^ 2) (2 • (innerSL ℝ x)) x 
goal: HasStrictFDerivAt (fun x => ‖x‖ ^ 2) (2 • (innerSL ℝ) x) x

full_name: HasFDerivAt.norm_sq
code: theorem HasFDerivAt.norm_sq {f : G → F} {f' : G →L[ℝ] F} (hf : HasFDerivAt f f' x) :
    HasFDerivAt (‖f ·‖ ^ 2) (2 • (innerSL ℝ (f x)).comp f') x 
goal: HasFDerivAt (fun x => ‖f x‖ ^ 2) (2 • ((innerSL ℝ) (f x)).comp f') x

full_name: HasDerivAt.norm_sq
code: theorem HasDerivAt.norm_sq {f : ℝ → F} {f' : F} {x : ℝ} (hf : HasDerivAt f f' x) :
    HasDerivAt (‖f ·‖ ^ 2) (2 * Inner.inner (f x) f') x 
goal: HasDerivAt (fun x => ‖f x‖ ^ 2) (2 * ⟪f x, f'⟫_ℝ) x

full_name: HasFDerivWithinAt.norm_sq
code: theorem HasFDerivWithinAt.norm_sq {f : G → F} {f' : G →L[ℝ] F} (hf : HasFDerivWithinAt f f' s x) :
    HasFDerivWithinAt (‖f ·‖ ^ 2) (2 • (innerSL ℝ (f x)).comp f') s x 
goal: HasFDerivWithinAt (fun x => ‖f x‖ ^ 2) (2 • ((innerSL ℝ) (f x)).comp f') s x

full_name: HasDerivWithinAt.norm_sq
code: theorem HasDerivWithinAt.norm_sq {f : ℝ → F} {f' : F} {s : Set ℝ} {x : ℝ}
    (hf : HasDerivWithinAt f f' s x) :
    HasDerivWithinAt (‖f ·‖ ^ 2) (2 * Inner.inner (f x) f') s x 
goal: HasDerivWithinAt (fun x => ‖f x‖ ^ 2) (2 * ⟪f x, f'⟫_ℝ) s x

full_name: DifferentiableAt.norm_sq
code: theorem DifferentiableAt.norm_sq (hf : DifferentiableAt ℝ f x) :
    DifferentiableAt ℝ (fun y => ‖f y‖ ^ 2) x 
goal: DifferentiableAt ℝ (fun y => ‖f y‖ ^ 2) x

full_name: DifferentiableAt.norm
code: theorem DifferentiableAt.norm (hf : DifferentiableAt ℝ f x) (h0 : f x ≠ 0) :
    DifferentiableAt ℝ (fun y => ‖f y‖) x 
goal: DifferentiableAt ℝ (fun y => ‖f y‖) x

full_name: DifferentiableAt.dist
code: theorem DifferentiableAt.dist (hf : DifferentiableAt ℝ f x) (hg : DifferentiableAt ℝ g x)
    (hne : f x ≠ g x) : DifferentiableAt ℝ (fun y => dist (f y) (g y)) x 
goal: DifferentiableAt ℝ (fun y => dist (f y) (g y)) x

full_name: Differentiable.norm_sq
code: theorem Differentiable.norm_sq (hf : Differentiable ℝ f) : Differentiable ℝ fun y => ‖f y‖ ^ 2 
goal: Differentiable ℝ fun y => ‖f y‖ ^ 2

full_name: Differentiable.norm
code: theorem Differentiable.norm (hf : Differentiable ℝ f) (h0 : ∀ x, f x ≠ 0) :
    Differentiable ℝ fun y => ‖f y‖ 
goal: Differentiable ℝ fun y => ‖f y‖

full_name: Differentiable.dist
code: theorem Differentiable.dist (hf : Differentiable ℝ f) (hg : Differentiable ℝ g)
    (hne : ∀ x, f x ≠ g x) : Differentiable ℝ fun y => dist (f y) (g y) 
goal: Differentiable ℝ fun y => dist (f y) (g y)

full_name: DifferentiableWithinAt.norm_sq
code: theorem DifferentiableWithinAt.norm_sq (hf : DifferentiableWithinAt ℝ f s x) :
    DifferentiableWithinAt ℝ (fun y => ‖f y‖ ^ 2) s x 
goal: DifferentiableWithinAt ℝ (fun y => ‖f y‖ ^ 2) s x

full_name: DifferentiableWithinAt.norm
code: theorem DifferentiableWithinAt.norm (hf : DifferentiableWithinAt ℝ f s x) (h0 : f x ≠ 0) :
    DifferentiableWithinAt ℝ (fun y => ‖f y‖) s x 
goal: DifferentiableWithinAt ℝ (fun y => ‖f y‖) s x

full_name: DifferentiableWithinAt.dist
code: theorem DifferentiableWithinAt.dist (hf : DifferentiableWithinAt ℝ f s x)
    (hg : DifferentiableWithinAt ℝ g s x) (hne : f x ≠ g x) :
    DifferentiableWithinAt ℝ (fun y => dist (f y) (g y)) s x 
goal: DifferentiableWithinAt ℝ (fun y => dist (f y) (g y)) s x

full_name: DifferentiableOn.norm_sq
code: theorem DifferentiableOn.norm_sq (hf : DifferentiableOn ℝ f s) :
    DifferentiableOn ℝ (fun y => ‖f y‖ ^ 2) s 
goal: DifferentiableOn ℝ (fun y => ‖f y‖ ^ 2) s

full_name: DifferentiableOn.norm
code: theorem DifferentiableOn.norm (hf : DifferentiableOn ℝ f s) (h0 : ∀ x ∈ s, f x ≠ 0) :
    DifferentiableOn ℝ (fun y => ‖f y‖) s 
goal: DifferentiableOn ℝ (fun y => ‖f y‖) s

full_name: DifferentiableOn.dist
code: theorem DifferentiableOn.dist (hf : DifferentiableOn ℝ f s) (hg : DifferentiableOn ℝ g s)
    (hne : ∀ x ∈ s, f x ≠ g x) : DifferentiableOn ℝ (fun y => dist (f y) (g y)) s 
goal: DifferentiableOn ℝ (fun y => dist (f y) (g y)) s

full_name: differentiableWithinAt_euclidean
code: theorem differentiableWithinAt_euclidean :
    DifferentiableWithinAt 𝕜 f t y ↔ ∀ i, DifferentiableWithinAt 𝕜 (fun x => f x i) t y 
goal: DifferentiableWithinAt 𝕜 f t y ↔ ∀ (i : ι), DifferentiableWithinAt 𝕜 (fun x => f x i) t y

full_name: differentiableAt_euclidean
code: theorem differentiableAt_euclidean :
    DifferentiableAt 𝕜 f y ↔ ∀ i, DifferentiableAt 𝕜 (fun x => f x i) y 
goal: DifferentiableAt 𝕜 f y ↔ ∀ (i : ι), DifferentiableAt 𝕜 (fun x => f x i) y

full_name: differentiableOn_euclidean
code: theorem differentiableOn_euclidean :
    DifferentiableOn 𝕜 f t ↔ ∀ i, DifferentiableOn 𝕜 (fun x => f x i) t 
goal: DifferentiableOn 𝕜 f t ↔ ∀ (i : ι), DifferentiableOn 𝕜 (fun x => f x i) t

full_name: differentiable_euclidean
code: theorem differentiable_euclidean : Differentiable 𝕜 f ↔ ∀ i, Differentiable 𝕜 fun x => f x i 
goal: Differentiable 𝕜 f ↔ ∀ (i : ι), Differentiable 𝕜 fun x => f x i

full_name: hasStrictFDerivAt_euclidean
code: theorem hasStrictFDerivAt_euclidean :
    HasStrictFDerivAt f f' y ↔
      ∀ i, HasStrictFDerivAt (fun x => f x i) (EuclideanSpace.proj i ∘L f') y 
goal: HasStrictFDerivAt f f' y ↔ ∀ (i : ι), HasStrictFDerivAt (fun x => f x i) ((EuclideanSpace.proj i).comp f') y

full_name: hasFDerivWithinAt_euclidean
code: theorem hasFDerivWithinAt_euclidean :
    HasFDerivWithinAt f f' t y ↔
      ∀ i, HasFDerivWithinAt (fun x => f x i) (EuclideanSpace.proj i ∘L f') t y 
goal: HasFDerivWithinAt f f' t y ↔ ∀ (i : ι), HasFDerivWithinAt (fun x => f x i) ((EuclideanSpace.proj i).comp f') t y

full_name: contDiffWithinAt_euclidean
code: theorem contDiffWithinAt_euclidean {n : ℕ∞} :
    ContDiffWithinAt 𝕜 n f t y ↔ ∀ i, ContDiffWithinAt 𝕜 n (fun x => f x i) t y 
goal: ContDiffWithinAt 𝕜 n f t y ↔ ∀ (i : ι), ContDiffWithinAt 𝕜 n (fun x => f x i) t y

full_name: contDiffAt_euclidean
code: theorem contDiffAt_euclidean {n : ℕ∞} :
    ContDiffAt 𝕜 n f y ↔ ∀ i, ContDiffAt 𝕜 n (fun x => f x i) y 
goal: ContDiffAt 𝕜 n f y ↔ ∀ (i : ι), ContDiffAt 𝕜 n (fun x => f x i) y

full_name: contDiffOn_euclidean
code: theorem contDiffOn_euclidean {n : ℕ∞} :
    ContDiffOn 𝕜 n f t ↔ ∀ i, ContDiffOn 𝕜 n (fun x => f x i) t 
goal: ContDiffOn 𝕜 n f t ↔ ∀ (i : ι), ContDiffOn 𝕜 n (fun x => f x i) t

full_name: contDiff_euclidean
code: theorem contDiff_euclidean {n : ℕ∞} : ContDiff 𝕜 n f ↔ ∀ i, ContDiff 𝕜 n fun x => f x i 
goal: ContDiff 𝕜 n f ↔ ∀ (i : ι), ContDiff 𝕜 n fun x => f x i

full_name: PartialHomeomorph.contDiff_univUnitBall
code: theorem PartialHomeomorph.contDiff_univUnitBall : ContDiff ℝ n (univUnitBall : E → E) 
goal: ContDiff ℝ n ↑PartialHomeomorph.univUnitBall

full_name: PartialHomeomorph.contDiffOn_univUnitBall_symm
code: theorem PartialHomeomorph.contDiffOn_univUnitBall_symm :
    ContDiffOn ℝ n univUnitBall.symm (ball (0 : E) 1) 
goal: ContDiffOn ℝ n (↑PartialHomeomorph.univUnitBall.symm) (Metric.ball 0 1)

full_name: Homeomorph.contDiff_unitBall
code: theorem Homeomorph.contDiff_unitBall : ContDiff ℝ n fun x : E => (unitBall x : E) 
goal: ContDiff ℝ n fun x => ↑(Homeomorph.unitBall x)

full_name: PartialHomeomorph.contDiff_unitBallBall
code: theorem contDiff_unitBallBall (hr : 0 < r) : ContDiff ℝ n (unitBallBall c r hr) 
goal: ContDiff ℝ n ↑(PartialHomeomorph.unitBallBall c r hr)

full_name: PartialHomeomorph.contDiff_unitBallBall_symm
code: theorem contDiff_unitBallBall_symm (hr : 0 < r) : ContDiff ℝ n (unitBallBall c r hr).symm 
goal: ContDiff ℝ n ↑(PartialHomeomorph.unitBallBall c r hr).symm

full_name: PartialHomeomorph.contDiff_univBall
code: theorem contDiff_univBall : ContDiff ℝ n (univBall c r) 
goal: ContDiff ℝ n ↑(PartialHomeomorph.univBall c r)

full_name: PartialHomeomorph.contDiffOn_univBall_symm
code: theorem contDiffOn_univBall_symm :
    ContDiffOn ℝ n (univBall c r).symm (ball c r) 
goal: ContDiffOn ℝ n (↑(PartialHomeomorph.univBall c r).symm) (Metric.ball c r)