def add_lower_triangular(self, name, input_name, output_name, k=0):
        """
        Add a lower_triangular layer to the model that copies a tensor setting
        everything outside lower triangular to zero.
        Refer to the ``LowerTriangularLayerParams`` message in the specification
        (NeuralNetwork.proto) for more details.

        Parameters
        ----------
        name: str
            The name of this layer.
        input_name: str
            The of input blob name of this layer.
        output_name: str
            The output blob name of this layer.
        k: int, optional
            Diagonal below which to zero elements, default: 0 (main diagonal),
            k < 0 is lower it and k > 0 is upper.

        See Also
        --------
        add_upper_triangular, add_matrix_band_part
        """

        spec_layer = self._add_generic_layer(name, [input_name], [output_name])
        spec_layer_params = spec_layer.lowerTriangular
        spec_layer_params.k = k
        return spec_layer

        Add a lower_triangular layer to the model that copies a tensor setting
        everything outside lower triangular to zero.
        Refer to the ``LowerTriangularLayerParams`` message in the specification
        (NeuralNetwork.proto) for more details.

        Parameters
        ----------
        name: str
            The name of this layer.
        input_name: str
            The of input blob name of this layer.
        output_name: str
            The output blob name of this layer.
        k: int, optional
            Diagonal below which to zero elements, default: 0 (main diagonal),
            k < 0 is lower it and k > 0 is upper.

        See Also
        --------
        add_upper_triangular, add_matrix_band_part
        
coremltools/models/neural_network/builder.py