# How to intersect subspaces of a combinatorial free module?

Hi, I've defined a `CombinatorialFreeModule`

over `ZZ`

with a pretty large named basis, along with a family of subspaces using `.submodule()`

. In the documentation, I see that the class `FreeModule_generic_field`

has a method `.intersection()`

to intersect these subspaces - is there a way to do this for the combinatorial free modules as well? I can think of some very ugly messy solutions by abandoning the CombinatorialFreeModule class, but I was hoping there'd be a better way.

Here's a toy example:

```
Z = CombinatorialFreeModule(ZZ, ['a','b','c'], prefix="z")
z = Z.basis()
Z1 = Z.submodule([z['a'],z['b']])
Z2 = Z.submodule([z['b'],z['c']])
```

I'd like to be able to write something like `Z1.intersection(Z2)`

to get a submodule containing just `z['b']`

. Of course, the real example has a very large number of submodules with much more complicated generators.