File tree Expand file tree Collapse file tree 3 files changed +29
-0
lines changed
Expand file tree Collapse file tree 3 files changed +29
-0
lines changed Original file line number Diff line number Diff line change 44
55### Added
66
7+ - in ` unstable.v ` :
8+ + lemma ` sqrK `
9+
10+ - in ` realfun.v ` :
11+ + instance ` is_derive1_sqrt `
12+
713### Changed
814
915### Renamed
Original file line number Diff line number Diff line change @@ -483,3 +483,6 @@ Notation " R ~~> R' " := (@respectful _ _ (Program.Basics.flip (R%signature)) (R
483483
484484Export -(notations) Morphisms.
485485End ProperNotations.
486+
487+ Lemma sqrK {K : rcfType} : {in Num.pos, cancel (@Num.sqrt K) (fun x => x ^+ 2)}.
488+ Proof . by move=> r r0; rewrite sqr_sqrtr// ltW. Qed .
Original file line number Diff line number Diff line change @@ -1763,6 +1763,26 @@ Unshelve. all: by end_near. Qed.
17631763
17641764End is_derive_inverse.
17651765
1766+ Global Instance is_derive1_sqrt {K : realType} (x : K) : 0 < x ->
1767+ is_derive x 1 Num.sqrt (2 * Num.sqrt x)^-1.
1768+ Proof .
1769+ move=> x0.
1770+ rewrite -[x]sqrK//; apply: (@is_derive_inverse _ (fun x => x ^+ 2)).
1771+ - near=> z; rewrite sqrtr_sqr gtr0_norm//.
1772+ have [xz|zx|->] := ltgtP z (Num.sqrt x); last 2 first.
1773+ by rewrite (lt_trans _ zx)// sqrtr_gt0.
1774+ by rewrite sqrtr_gt0.
1775+ move: xz; near: z; exists (Num.sqrt x / 2) => /=.
1776+ by rewrite divr_gt0 // sqrtr_gt0 x0.
1777+ move=> r/= => /[swap] rx; rewrite gtr0_norm ?subr_gt0//ltrBlDl -ltrBlDr.
1778+ apply: le_lt_trans.
1779+ by rewrite subr_ge0 ger_pMr ?sqrtr_gt0// invf_le1// ler1n.
1780+ - by near=> z; exact: exprn_continuous.
1781+ - rewrite !sqrK//; split; first exact: exprn_derivable.
1782+ by rewrite exp_derive expr1 scaler1.
1783+ - by rewrite mulf_neq0// gt_eqF// sqrtr_gt0 exprn_gt0// sqrtr_gt0.
1784+ Unshelve. all: by end_near. Qed .
1785+
17661786#[global] Hint Extern 0 (is_derive _ _ (fun _ => (_ _)^-1) _) =>
17671787 (eapply is_deriveV; first by []) : typeclass_instances.
17681788
You can’t perform that action at this time.
0 commit comments