Notation imset := Imset.imset.Notation imset2 := Imset.imset2.Canonical imset_unlock := Unlockable Imset.imsetE.Canonical imset2_unlock := Unlockable Imset.imset2E.(* Comprehensions over a type. *)
Local Notation predOfType T := (sort_of_simpl_pred (@pred_of_argType T)).1.
Qed.(*************************Implicit Type h : I -> J.*********************************************)
(*Implicit Type F : I -> R.x [T I] j [U P F].
Arguments bigcupP {T I x P F}.
Arguments bigcupsP {T I U P F}./imset2P/imsetP=> [[x1 x Dx1 /set1P->]| [x1 Dx1 ->]].
  by exists x1.
by exists x1 x2; rewrite ?set1tiQ Q_E E_A) -(def_pblock tiP _ Ax) ?(sQP E) //.
by rewrite -(def_pblock tiQ Q_F F_B) -(def_pblock tiP _ Bx) ?(sQP F).
Qed.in' A | P ) F" :=
  (\big[@setI _/setT]_(i in A | P%B) F%SET) : set_scope.ap_min [T I] j [U P F].
Arguments bigcapP {T I x P F}.
Arguments bigcapsP {T I U P F}.Proof. by rewrite !curry_imset2r bigcup_setU. Q

(* Specifications: *)
Proof.