Skip to content

Commit 4984dd9

Browse files
authored
1 parent 3ead478 commit 4984dd9

File tree

1 file changed

+17
-16
lines changed

1 file changed

+17
-16
lines changed

finmap.v

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ From mathcomp Require Import choice finset finfun fintype bigop.
136136
(* fsinjectiveb f == boolean predicate of injectivity of f *)
137137
(*****************************************************************************)
138138

139+
Unset SsrOldRewriteGoalsOrder. (* remove this line when requiring MathComp >= 2.6 *)
139140
Set Implicit Arguments.
140141
Unset Strict Implicit.
141142
Import Prenex Implicits.
@@ -1902,7 +1903,7 @@ Proof. by rewrite -!fsubset0 fsubUset. Qed.
19021903
Lemma fsubsetD1 A B x : (A `<=` B `\ x) = (A `<=` B) && (x \notin A).
19031904
Proof.
19041905
do !rewrite -(@subset_fsubE (x |` A `|` B)) ?fsubDset ?fsetUA // 1?fsetUAC //.
1905-
rewrite fsubD1 => [|mem_x]; first by rewrite -fsetUA fset1U1.
1906+
rewrite fsubD1 => [mem_x|]; last by rewrite -fsetUA fset1U1.
19061907
by rewrite subsetD1 // inE.
19071908
Qed.
19081909

@@ -1955,9 +1956,9 @@ Qed.
19551956
Lemma fsetDpS C A B : B `<=` C -> A `<` B -> C `\` B `<` C `\` A.
19561957
Proof.
19571958
move=> subBC subAB; rewrite fproperEneq fsetDS 1?fproper_sub// andbT.
1958-
apply/negP => /eqP /(congr1 (fsetD C)); rewrite !fsetDK // => [eqAB//|].
1959-
by rewrite eqAB (negPf (fproper_irrefl _)) in subAB.
1960-
by apply: fsubset_trans subBC; apply: fproper_sub.
1959+
apply/negP => /eqP /(congr1 (fsetD C)); rewrite !fsetDK // => [|eqAB//].
1960+
by apply: fsubset_trans subBC; apply: fproper_sub.
1961+
by rewrite eqAB (negPf (fproper_irrefl _)) in subAB.
19611962
Qed.
19621963

19631964
Lemma fproperD2l C A B : A `<=` C -> B `<=` C -> (C `\` B `<` C `\` A) = (A `<` B).
@@ -2011,7 +2012,7 @@ Proof.
20112012
pose D := A `|` B `|` C.
20122013
have AD : A `<=` D by rewrite /D -fsetUA fsubsetUl.
20132014
have BD : B `<=` D by rewrite /D fsetUAC fsubsetUr.
2014-
rewrite -(@subset_fsubE D) //; last first.
2015+
rewrite -(@subset_fsubE D) //.
20152016
by rewrite fsubDset (fsubset_trans BD) // fsubsetUr.
20162017
rewrite fsubD subsetD !subset_fsubE // disjoint_fsub //.
20172018
by rewrite /D fsetUAC fsubsetUl.
@@ -2235,7 +2236,7 @@ Proof. by apply/fsetP=> X; rewrite inE !fpowersetE fsubsetI. Qed.
22352236

22362237
Lemma card_fpowerset (A : {fset K}) : #|` fpowerset A| = 2 ^ #|` A|.
22372238
Proof.
2238-
rewrite !card_imfset; first by rewrite -cardE card_powerset cardsE cardfE.
2239+
rewrite !card_imfset; last by rewrite -cardE card_powerset cardsE cardfE.
22392240
by move=> X Y /fsetP eqXY; apply/setP => x; have := eqXY (val x); rewrite !inE.
22402241
Qed.
22412242

@@ -2379,7 +2380,7 @@ Lemma big_fset_incl (A : {fset I}) B F : A `<=` B ->
23792380
\big[op/idx]_(x <- A) F x = \big[op/idx]_(x <- B) F x.
23802381
Proof.
23812382
move=> subAB Fid; rewrite [in RHS](big_fsetID (mem A)) /=.
2382-
rewrite [X in op _ X]big1_fset ?Monoid.mulm1; last first.
2383+
rewrite [X in op _ X]big1_fset ?Monoid.mulm1.
23832384
by move=> i; rewrite !inE /= => /andP[iB iNA _]; apply: Fid.
23842385
by apply: eq_fbigl => i; rewrite !inE /= -(@in_fsetI _ B A) (fsetIidPr _).
23852386
Qed.
@@ -2425,7 +2426,7 @@ Lemma pair_big_dep_cond (A : {fset I}) (B : I -> {fset J})
24252426
\big[op/idx]_(p <- [fset ((i, j) : I * J) | i in [fset i in A | P i],
24262427
j in [fset j in B i | Q i j]]) F p.1 p.2.
24272428
Proof.
2428-
rewrite big_imfset2 //=; last by move=> [??] [??] _ _ /= [-> ->].
2429+
rewrite big_imfset2 //=; first by move=> [??] [??] _ _ /= [-> ->].
24292430
by rewrite big_fset /=; apply: eq_bigr => i _; rewrite big_fset.
24302431
Qed.
24312432
End BigFsetDep.
@@ -2450,8 +2451,8 @@ transitivity (\big[op/idx]_(i <- [fset ij | ij in
24502451
by rewrite in_imfset.
24512452
by move=> /andP[/allpairsP[[/= j i] [/imfsetP[/=a aA ->] iA ->/= /eqP<-]]]; exists i.
24522453
rewrite eq_big_imfset //= big_map undup_id.
2453-
by rewrite big_allpairs; apply: eq_bigr => i /= _; rewrite -big_mkcond.
2454-
by rewrite allpairs_uniq => //= -[j0 i0] [j1 i1] /=.
2454+
by rewrite allpairs_uniq => //= -[j0 i0] [j1 i1] /=.
2455+
by rewrite big_allpairs; apply: eq_bigr => i /= _; rewrite -big_mkcond.
24552456
Qed.
24562457

24572458
End BigComImfset.
@@ -2646,7 +2647,7 @@ have {tI} : {in enum_fset P &, forall A B, A != B -> [disjoint A & B]%fset}.
26462647
by [].
26472648
elim: (enum_fset P) (fset_uniq P) => [_|h t ih /= /andP[ht ut] tP].
26482649
by rewrite !big_nil.
2649-
rewrite !big_cons -ih //; last first.
2650+
rewrite !big_cons -ih //.
26502651
by move=> x y xt yt xy; apply tP => //; rewrite !inE ?(xt,yt) orbT.
26512652
rewrite {1}/fsetU big_imfset //= undup_cat /= big_cat !undup_id //.
26522653
congr (op _ _).
@@ -2675,11 +2676,11 @@ have trivP : trivIfset P.
26752676
have -> : (\bigcup_(i <- K) F i)%fset = fcover P.
26762677
apply/esym; rewrite /P fcover_imfset big_mkcond /=; apply eq_bigr => i _.
26772678
by case: ifPn => // /negPn/eqP.
2678-
rewrite big_trivIfset // /rhs big_imfset => [|i j iK /andP[jK notFj0] eqFij] /=.
2679-
rewrite big_filter big_mkcond; apply eq_bigr => i _.
2680-
by case: ifPn => // /negPn /eqP ->; rewrite big_seq_fset0.
2681-
move: iK; rewrite !inE/= => /andP[iK Fi0].
2682-
by apply: contraNeq (disjF _ _ iK jK) _; rewrite -fsetI_eq0 eqFij fsetIid.
2679+
rewrite big_trivIfset // /rhs big_imfset => [i j iK /andP[jK notFj0] eqFij|] /=.
2680+
move: iK; rewrite !inE/= => /andP[iK Fi0].
2681+
by apply: contraNeq (disjF _ _ iK jK) _; rewrite -fsetI_eq0 eqFij fsetIid.
2682+
rewrite big_filter big_mkcond; apply eq_bigr => i _.
2683+
by case: ifPn => // /negPn /eqP ->; rewrite big_seq_fset0.
26832684
Qed.
26842685

26852686
End FsetBigOps.

0 commit comments

Comments
 (0)