@@ -1267,6 +1267,12 @@ Proof. by have /derivableP := @derivable_id x v; rewrite derive_val. Qed.
1267
1267
1268
1268
End derive_id.
1269
1269
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
+
1270
1276
Section Derive_lemmasVR.
1271
1277
Variables (R : numFieldType) (V : normedModType R).
1272
1278
Implicit Types (f g : V -> R) (x v : V).
@@ -1322,21 +1328,37 @@ by rewrite deriveM // !derive_val.
1322
1328
Qed .
1323
1329
1324
1330
Global 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).
1326
1332
Proof .
1333
+ case: n => [fdf|n].
1334
+ rewrite expr0 mul0r scale0r.
1335
+ exact: is_derive_cst.
1327
1336
move=> dfx; elim: n => [|n ihn]; first by rewrite expr1 expr0 mulr1 scale1r.
1328
1337
rewrite exprS; apply: is_derive_eq.
1329
1338
rewrite scalerA -scalerDl mulrCA -[f x * _]exprS.
1330
1339
by rewrite [in LHS]mulr_natl exprfctE -mulrSr mulr_natl.
1331
1340
Qed .
1332
1341
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
+
1333
1351
Lemma derivableX f n x v : derivable f x v -> derivable (f ^+ n) x v.
1334
1352
Proof . by case: n => [_|n /derivableP]; [rewrite expr0|]. Qed .
1335
1353
1336
1354
Lemma 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.
1338
1356
Proof . by move=> /derivableP df; rewrite derive_val. Qed .
1339
1357
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
+
1340
1362
Fact der_inv f x v : f x != 0 -> derivable f x v ->
1341
1363
(fun h => h^-1 *: (((fun y => (f y)^-1) \o shift x) (h *: v) - (f x)^-1)) @
1342
1364
0^' --> - (f x) ^-2 *: 'D_v f x.
@@ -1412,15 +1434,22 @@ rewrite (_ : _ ^~ _ = (fun x => x * x ^+ n)); last first.
1412
1434
by apply: derivableM; first exact: derivable_id.
1413
1435
Qed .
1414
1436
1415
- Lemma exp_derive {R : numFieldType} n x v :
1437
+ (* Lemma exp_derive {R : numFieldType} n x v :
1416
1438
'D_v (@GRing.exp R ^~ n.+1) x = n.+1%:R *: x ^+ n *: v.
1417
1439
Proof.
1418
1440
have /= := @deriveX R R id n x v (@derivable_id _ _ _ _).
1419
1441
by 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.
1420
1449
Qed .
1421
1450
1422
1451
Lemma 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 .
1424
1453
Proof . by rewrite derive1E exp_derive [LHS]mulr1. Qed .
1425
1454
1426
1455
Lemma EVT_max (R : realType) (f : R -> R) (a b : R) : (* TODO : Filter not infered *)
0 commit comments