Skip to content

Commit a0cc00c

Browse files
affeldt-aistt6s
andauthored
generalize onem (#1737)
Co-authored-by: Takafumi Saikawa <[email protected]>
1 parent 78d68d4 commit a0cc00c

File tree

2 files changed

+31
-23
lines changed

2 files changed

+31
-23
lines changed

CHANGELOG_UNRELEASED.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,10 @@
347347
- in `probabilitity.v`:
348348
+ lemma `exponential_pdf_ge0` (hypothesis generalized)
349349

350+
- in `unstable.v`:
351+
+ generalized from `numDomainType` to `pzRingType`:
352+
+ definition `onem`, lemmas `onme0`, `onem1`, `add_onemK`, `onemD`, `onemMr`, `onemM`
353+
350354
### Deprecated
351355

352356
### Removed

classical/unstable.v

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -232,21 +232,38 @@ elim/big_ind2 : _ => // [|m A n B Am Bn]; first by rewrite cards0.
232232
by rewrite (leq_trans (leq_card_setU _ _))// leq_add.
233233
Qed.
234234

235-
Section onem.
236-
Variable R : numDomainType.
237-
Implicit Types r : R.
235+
Definition onem {R : pzRingType} (r : R) : R := 1 - r.
236+
Notation "`1- r" := (onem r) : ring_scope.
238237

239-
Definition onem r := 1 - r.
240-
Local Notation "`1- r" := (onem r).
238+
Section onem_ring.
239+
Context {R : pzRingType}.
240+
Implicit Type r : R.
241241

242-
Lemma onem0 : `1-0 = 1. Proof. by rewrite /onem subr0. Qed.
242+
Lemma onem0 : `1-0 = 1 :> R. Proof. by rewrite /onem subr0. Qed.
243243

244-
Lemma onem1 : `1-1 = 0. Proof. by rewrite /onem subrr. Qed.
244+
Lemma onem1 : `1-1 = 0 :> R. Proof. by rewrite /onem subrr. Qed.
245245

246246
Lemma onemK r : `1-(`1-r) = r. Proof. exact: subKr. Qed.
247247

248-
Lemma add_onemK r : r + `1- r = 1.
249-
Proof. by rewrite /onem addrC subrK. Qed.
248+
Lemma add_onemK r : r + `1- r = 1. Proof. by rewrite /onem addrC subrK. Qed.
249+
250+
Lemma onemD r s : `1-(r + s) = `1-r - s.
251+
Proof. by rewrite /onem addrAC opprD addrA addrAC. Qed.
252+
253+
Lemma onemMr r s : s * `1-r = s - s * r.
254+
Proof. by rewrite /onem mulrBr mulr1. Qed.
255+
256+
Lemma onemM r s : `1-(r * s) = `1-r + `1-s - `1-r * `1-s.
257+
Proof.
258+
rewrite /onem mulrBr mulr1 mulrBl mul1r opprB -addrA.
259+
by rewrite (addrC (1 - r)) !addrA subrK opprB addrA subrK addrK.
260+
Qed.
261+
262+
End onem_ring.
263+
264+
Section onem_order.
265+
Variable R : numDomainType.
266+
Implicit Types r : R.
250267

251268
Lemma onem_gt0 r : r < 1 -> 0 < `1-r. Proof. by rewrite subr_gt0. Qed.
252269

@@ -265,20 +282,7 @@ Proof. by move=> ? ?; rewrite subr_ge0 exprn_ile1. Qed.
265282
Lemma onemX_lt1 r n : 0 < r -> `1-(r ^+ n) < 1.
266283
Proof. by move=> ?; rewrite onem_lt1// exprn_gt0. Qed.
267284

268-
Lemma onemD r s : `1-(r + s) = `1-r - s.
269-
Proof. by rewrite /onem addrAC opprD addrA addrAC. Qed.
270-
271-
Lemma onemMr r s : s * `1-r = s - s * r.
272-
Proof. by rewrite /onem mulrBr mulr1. Qed.
273-
274-
Lemma onemM r s : `1-(r * s) = `1-r + `1-s - `1-r * `1-s.
275-
Proof.
276-
rewrite /onem mulrBr mulr1 mulrBl mul1r opprB -addrA.
277-
by rewrite (addrC (1 - r)) !addrA subrK opprB addrA subrK addrK.
278-
Qed.
279-
280-
End onem.
281-
Notation "`1- r" := (onem r) : ring_scope.
285+
End onem_order.
282286

283287
Lemma onemV (F : numFieldType) (x : F) : x != 0 -> `1-(x^-1) = (x - 1) / x.
284288
Proof. by move=> ?; rewrite mulrDl divff// mulN1r. Qed.

0 commit comments

Comments
 (0)