Calculate initial documents

An initial algorithm for calculating initial documents is to take the intersection of the inputs.
Not sure what is with the _otherwise, perhaps _ -> False?

This is also do-able with no boilerplate with prisms, you just makePrisms and then is/isn't with the prism.