octalgo.third_party.bigop_aux




Section BigCupSeq.

Variables (T : finType) (I : eqType).
Implicit Types (P : pred I) (F : I {set T}).

Lemma bigcup_seqP x P F l :
  reflect (exists2 i : I, i \in l & (x \in F i) && P i) (x \in \bigcup_(t <- l | P t) F t).

Lemma bigcups_seqP (U : pred T) (P : pred I) (F : I {set T}) (r : seq I) :
  reflect ( i : I, i \in r P i F i \subset U)
          (\bigcup_(i <- r | P i) F i \subset U).

End BigCupSeq.

Open Scope fset_scope.

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.

Import Monoid.
Variable (T : choiceType).


End FSetMonoids.

Section BigFOpsFin.

Variables (T : choiceType) (I : finType).
Implicit Types (P : pred I) (A B : {fset I}) (F : I {fset T}).

End BigFOpsFin.

Section BigFOpsSeq.

Variables (T : choiceType) (I : eqType).
Implicit Types (l : seq I) (P : pred I) (U : {fset T}) (F : I {fset T}).

Lemma bigfcup_seqP x F l :
  reflect (exists2 i : I, i \in l & x \in F i) (x \in \bigcup_(t <- l) F t).

Lemma bigfcups_seqP F U l :
  reflect ( i : I, i \in l F i `<=` U) (\bigcup_(i <- l) F i `<=` U).

End BigFOpsSeq.

Close Scope fset_scope.