'Intersection is the minimum of corresponding counts.'

def __and__(self, other):

    if (not isinstance(other, ConditionalFreqDist)):
        return NotImplemented
    result = ConditionalFreqDist()
    for cond in self.conditions():
        newfreqdist = (self[cond] & other[cond])
        if newfreqdist:
            result[cond] = newfreqdist
    return result
