@@ -1267,6 +1267,12 @@ Proof. by have /derivableP := @derivable_id x v; rewrite derive_val. Qed.
12671267
12681268End derive_id.
12691269
1270+ Lemma derive1_onem {R : numFieldType} :
1271+ (fun x => 1 - x : R^o)^`()%classic = cst (-1).
1272+ Proof .
1273+ by apply/funext => x; rewrite derive1E deriveB// derive_id derive_cst sub0r.
1274+ Qed .
1275+
12701276Section Derive_lemmasVR.
12711277Variables (R : numFieldType) (V : normedModType R).
12721278Implicit Types (f g : V -> R) (x v : V).
@@ -1322,21 +1328,37 @@ by rewrite deriveM // !derive_val.
13221328Qed .
13231329
13241330Global Instance is_deriveX f n x v (df : R) :
1325- is_derive x v f df -> is_derive x v (f ^+ n.+1 ) ((n.+1 %:R * f x ^+n ) *: df).
1331+ is_derive x v f df -> is_derive x v (f ^+ n) ((n%:R * f x ^+ n.-1 ) *: df).
13261332Proof .
1333+ case: n => [fdf|n].
1334+ rewrite expr0 mul0r scale0r.
1335+ exact: is_derive_cst.
13271336move=> dfx; elim: n => [|n ihn]; first by rewrite expr1 expr0 mulr1 scale1r.
13281337rewrite exprS; apply: is_derive_eq.
13291338rewrite scalerA -scalerDl mulrCA -[f x * _]exprS.
13301339by rewrite [in LHS]mulr_natl exprfctE -mulrSr mulr_natl.
13311340Qed .
13321341
1342+ (*Global Instance is_deriveX f n x v (df : R) :
1343+ is_derive x v f df -> is_derive x v (f ^+ n.+1) ((n.+1%:R * f x ^+n) *: df).
1344+ Proof.
1345+ move=> dfx; elim: n => [|n ihn]; first by rewrite expr1 expr0 mulr1 scale1r.
1346+ rewrite exprS; apply: is_derive_eq.
1347+ rewrite scalerA -scalerDl mulrCA -[f x * _]exprS.
1348+ by rewrite [in LHS]mulr_natl exprfctE -mulrSr mulr_natl.
1349+ Qed. *)
1350+
13331351Lemma derivableX f n x v : derivable f x v -> derivable (f ^+ n) x v.
13341352Proof . by case: n => [_|n /derivableP]; [rewrite expr0|]. Qed .
13351353
13361354Lemma deriveX f n x v : derivable f x v ->
1337- 'D_v (f ^+ n.+1 ) x = (n.+1 %:R * f x ^+ n) *: 'D_v f x.
1355+ 'D_v (f ^+ n) x = (n%:R * f x ^+ n.-1 ) *: 'D_v f x.
13381356Proof . by move=> /derivableP df; rewrite derive_val. Qed .
13391357
1358+ (*Lemma deriveX f n x v : derivable f x v ->
1359+ 'D_v (f ^+ n.+1) x = (n.+1%:R * f x ^+ n) *: 'D_v f x.
1360+ Proof. by move=> /derivableP df; rewrite derive_val. Qed. *)
1361+
13401362Fact der_inv f x v : f x != 0 -> derivable f x v ->
13411363 (fun h => h^-1 *: (((fun y => (f y)^-1) \o shift x) (h *: v) - (f x)^-1)) @
13421364 0^' --> - (f x) ^-2 *: 'D_v f x.
@@ -1412,15 +1434,22 @@ rewrite (_ : _ ^~ _ = (fun x => x * x ^+ n)); last first.
14121434by apply: derivableM; first exact: derivable_id.
14131435Qed .
14141436
1415- Lemma exp_derive {R : numFieldType} n x v :
1437+ (* Lemma exp_derive {R : numFieldType} n x v :
14161438 'D_v (@GRing.exp R ^~ n.+1) x = n.+1%:R *: x ^+ n *: v.
14171439Proof.
14181440have /= := @deriveX R R id n x v (@derivable_id _ _ _ _).
14191441by rewrite fctE => ->; rewrite derive_id.
1442+ Qed. *)
1443+
1444+ Lemma exp_derive {R : numFieldType} n x v :
1445+ 'D_v (@GRing.exp R ^~ n) x = n%:R *: x ^+ n.-1 *: v.
1446+ Proof .
1447+ have /= := @deriveX R R id n x v (@derivable_id _ _ _ _).
1448+ by rewrite fctE => ->; rewrite derive_id.
14201449Qed .
14211450
14221451Lemma exp_derive1 {R : numFieldType} n x :
1423- (@GRing.exp R ^~ n.+1 )^`() x = n.+1 %:R *: x ^+ n.
1452+ (@GRing.exp R ^~ n)^`() x = n%:R *: x ^+ n.-1 .
14241453Proof . by rewrite derive1E exp_derive [LHS]mulr1. Qed .
14251454
14261455Lemma EVT_max (R : realType) (f : R -> R) (a b : R) : (* TODO : Filter not infered *)
0 commit comments