Skip to content

Commit dcf9dbc

Browse files
is_derive1_sqrt lemma (#1679)
* add derive1_sqrt, sqrK --------- Co-authored-by: Reynald Affeldt <reynald.affeldt@aist.go.jp>
1 parent 7528cc1 commit dcf9dbc

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

CHANGELOG_UNRELEASED.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@
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

classical/unstable.v

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,3 +483,6 @@ Notation " R ~~> R' " := (@respectful _ _ (Program.Basics.flip (R%signature)) (R
483483

484484
Export -(notations) Morphisms.
485485
End 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.

theories/realfun.v

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1763,6 +1763,26 @@ Unshelve. all: by end_near. Qed.
17631763

17641764
End 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

0 commit comments

Comments
 (0)