Notation finset := SetDef.finset.Notation pred_of_set := SetDef.pred_of_set.Canonical finset_unlock := Unlockable SetDef.finsetE.Canonical pred_of_set_unlock := Unlockable SetDef.pred_of_setE.(* Declare pred_of_set as a canonical instance of topred, but use the         *)
(* coercion to resolve mem A to @mem (predPredType T) (pred_of_set A).        *)
Canonical set_predType T :=
  Eval hnf in @mkPredType _ (unkeyed (set_type T)) (@pred_of_set T).aT1}) (B C : {set aT2}) :
  f @2: (A, B :|: C) = f @2: (A, B) :|: f @2: (A, C).

(* Specifications: *)
Lemma setP A B : A =i B <-> A = B.