(self, other)
return ol
The inner product operator for a Dyadic and a Dyadic or Vector.

        Parameters
        ==========

        other : Dyadic or Vector
            The other Dyadic or Vector to take the inner product with

        Examples
        ========

        >>> from sympy.physics.vector import ReferenceFrame, outer
        >>> N = ReferenceFrame('N')
        >>> D1 = outer(N.x, N.y)
        >>> D2 = outer(N.y, N.y)
        >>> D1.dot(D2)
        (N.x|N.y)
        >>> D1.dot(N.y)
        N.x
The inner product operator for a Dyadic and a Dyadic or Vector.
The inner product operator for a Dyadic and a Dyadic or Vector .
def __and__(self, other):
        """The inner product operator for a Dyadic and a Dyadic or Vector.

        Parameters
        ==========

        other : Dyadic or Vector
            The other Dyadic or Vector to take the inner product with

        Examples
        ========

        >>> from sympy.physics.vector import ReferenceFrame, outer
        >>> N = ReferenceFrame('N')
        >>> D1 = outer(N.x, N.y)
        >>> D2 = outer(N.y, N.y)
        >>> D1.dot(D2)
        (N.x|N.y)
        >>> D1.dot(N.y)
        N.x

        """
        from sympy.physics.vector.vector import Vector, _check_vector
        if isinstance(other, Dyadic):
            other = _check_dyadic(other)
            ol = Dyadic(0)
            for i, v in enumerate(self.args):
                for i2, v2 in enumerate(other.args):
                    ol += v[0] * v2[0] * (v[2] & v2[1]) * (v[1] | v2[2])
        else:
            other = _check_vector(other)
            ol = Vector(0)
            for i, v in enumerate(self.args):
                ol += v[0] * v[1] * (v[2] & other)
        return ol
def __and__ ( self , other ) : from sympy . physics . vector . vector import Vector , _check_vector if isinstance ( other , Dyadic ) : other = _check_dyadic ( other ) ol = Dyadic ( 0 ) for i , v in enumerate ( self . args ) : for i2 , v2 in enumerate ( other . args ) : ol += v [ 0 ] * v2 [ 0 ] * ( v [ 2 ] & v2 [ 1 ] ) * ( v [ 1 ] | v2 [ 2 ] ) else : other = _check_vector ( other ) ol = Vector ( 0 ) for i , v in enumerate ( self . args ) : ol += v [ 0 ] * v [ 1 ] * ( v [ 2 ] & other ) return ol