@@ -232,21 +232,38 @@ elim/big_ind2 : _ => // [|m A n B Am Bn]; first by rewrite cards0.
232232by rewrite (leq_trans (leq_card_setU _ _))// leq_add.
233233Qed .
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
246246Lemma 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
251268Lemma 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.
265282Lemma onemX_lt1 r n : 0 < r -> `1-(r ^+ n) < 1.
266283Proof . 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
283287Lemma onemV (F : numFieldType) (x : F) : x != 0 -> `1-(x^-1) = (x - 1) / x.
284288Proof . by move=> ?; rewrite mulrDl divff// mulN1r. Qed .
0 commit comments