Iterated partial derivatives along coordinate slices are the values of iteratedFDeriv on coordinate vectors
ProvedTranscendence.partials_eq_iteratedFDerivLet be a nontrivially normed field, a finite set, a normed space over , and a function of class . For a function on and , let be the derivative at of the slice , where is with its coordinate replaced by . Then for every list of directions and every ,
where the partial derivative in the direction is taken first, is the -th Fréchet derivative (iteratedFDeriv) and are the coordinate vectors.
It connects the slice derivatives, to which one-variable complex analysis applies, with the derivatives in which the other nodes are stated; Transcendence.polydisc_cauchy and Transcendence.coord_hermite_step use it.
It is one step of the proof of Baker's theorem formalised in this mission, which follows Chapter 4 of Waldschmidt's book: Baker's theorem from the criterion of Schneider–Lang for Cartesian products, as observed by Bertrand and Masser (1980).
Novelty. None: a standard fact of differential calculus, stated in Mathlib's terms. The contribution of this node is the formal proof.
import Mathlib
namespace Transcendence
/-- **Coordinate partial derivatives are values of `iteratedFDeriv`.** Let `g` be a `C^k` function of the
variables `z_ν` (`ν ∈ ι`) over a nontrivially normed field. The partial derivative of `g` in the variable `z_i`
at `z` is the derivative at `w = z_i` of the slice `w ↦ g(z[i := w])`, where `z[i := w]` is `z` with its
coordinate `z_i` replaced by `w`. Taking such partial derivatives in the variables `L (k-1), …, L 1, L 0`, in
this order, gives at `z` the `k`-th derivative of `g` at `z` applied to the coordinate vectors
`e_{L 0}, …, e_{L (k-1)}`. -/
theorem partials_eq_iteratedFDeriv {𝕜 : Type*} [NontriviallyNormedField 𝕜]
{ι : Type*} [Fintype ι] [DecidableEq ι] {F : Type*} [NormedAddCommGroup F] [NormedSpace 𝕜 F]
{k : ℕ} (L : Fin k → ι) {g : (ι → 𝕜) → F} (hg : ContDiff 𝕜 k g) (z : ι → 𝕜) :
(List.ofFn L).foldr (fun i h y => deriv (fun w => h (Function.update y i w)) (y i)) g z =
iteratedFDeriv 𝕜 k g z (fun l => Pi.single (L l) 1) := by
sorry
end Transcendence