proposition: Lemma set_UI2l: left_distributive union2 intersection2.
proof: Proof. move => A B C; set_extens t. case /setU2_P. by case /setI2_P => ta tb;apply/setI2_P; split; apply/setU2_P; left. by move => tc;apply/setI2_P; split; apply/setU2_P; right. case/setI2_P;case /setU2_P=> tac; case /setU2_P => tbc;apply/setU2_P; fprops. Qed.
imports: mathcomp(ssreflect ssrfun ssrbool eqtype ssrnat)