End BigComImfset.
Notation "\bigcup_ ( i <- r | P ) F" :=
(\big[@fsetU _/fset0]_(i <- r | P%fset) F%fset) : fset_scope.
Notation "\bigcup_ ( i <- r ) F" :=
(\big[@fsetU _/fset0]_(i <- r) F%fset) : fset_scope.
Notation "\bigcup_ ( i | P ) F" :=
(\big[@fsetU _/fset0]_(i | P) F%fset) : fset_scope.
Notation "\bigcup_ ( i 'in' A | P ) F" :=
(\big[@fsetU _/fset0]_(i in A | P) F%fset) : fset_scope.
Notation "\bigcup_ ( i 'in' A ) F" :=
(\big[@fsetU _/fset0]_(i in A) F%fset) : fset_scope.
Section FSetMonoids.
Variable (T : choiceType).
Canonical fsetU_monoid := Law (@fsetUA T) (@fset0U T) (@fsetU0 T).
Canonical fsetU_comoid := ComLaw (@fsetUC T).
End FSetMonoids.
Section BigFOpsSeq.
Variables (T : choiceType) (I : eqType) (r : seq I).
Implicit Types (P : pred I) (F :  I -> {fset T}).

(* Specifications: *)
Lemma bigfcup_undup P F :
\bigcup_(i <- undup r | P i) F i = \bigcup_(i <- r | P i) F i.
Lemma bigfcupP x F P :
reflect (exists2 i : I, (i \in r) && P i & x \in F i)
(x \in \bigcup_(i <- r | P i) F i).
Lemma bigfcupsP (U : {fset T}) P F :
reflect (forall i : I, i \in r -> P i -> F i `<=` U)
(\bigcup_(i <- r | P i) F i `<=` U).