def maximum(rule, artifact):
    """Evaluate artifact's value to be maximum of values returned by rule's
    subrules.

    This evaluation function ignores subrule weights.
    """
    m = -1.0
    for i in range(len(rule.R)):
        e = rule.R[i](artifact)
        if e is not None:
            if e > m:
                m = e
    return m
