def METHOD_NAME():
    cell = triangle
    d = cell.geometric_dimension()
    # Literals
    one = as_ufl(1)
    two = as_ufl(2.0)
    I = Identity(d)
    E = PermutationSymbol(d)
    literals = [one, two, I]
    # Generic ruleset handles literals directly:
    for l in literals:
        for sh in [(), (d,), (d, d+1)]:
            assert GenericDerivativeRuleset(sh)(l) == zero(l.ufl_shape + sh)
    # Variables
    v0 = variable(one)
    v1 = variable(zero((d,)))
    v2 = variable(I)
    variables = [v0, v1, v2]
    # Test literals via apply_derivatives and variable ruleset:
    for l in literals:
        for v in variables:
            assert apply_derivatives(diff(l, v)) == zero(l.ufl_shape + v.ufl_shape)
    V0 = FiniteElement("DG", cell, 0)
    V1 = FiniteElement("Lagrange", cell, 1)
    u0 = Coefficient(V0)
    u1 = Coefficient(V1)
    v0 = TestFunction(V0)
    v1 = TestFunction(V1)
    args = [(u0, v0), (u1, v1)]
    # Test literals via apply_derivatives and variable ruleset:
    for l in literals:
        for u, v in args:
            assert apply_derivatives(derivative(l, u, v)) == zero(l.ufl_shape + v.ufl_shape)
    # Test grad ruleset directly since grad(literal) is invalid:
    assert GradRuleset(d)(one) == zero((d,))
    assert GradRuleset(d)(one) == zero((d,))