let from_list2 l1 l2 = let _ = assert (List.length l1 = List.length l2) in
                         List.fold_left2 (fun m k v -> M.add k v m) M.empty l1 l2