Adding intersection of blocks and funs
Changing intersection according to semantics
Better intersection and union using Ids.t
Adding noncommutative intersection
Merging Pierre's commit with work on data.ml