def strict_forall(l, f):
    """Takes an iterable of elements, and returns (True, None)
    if f applied to each element returns True. Otherwise
    it returns (False, e) where e is the first element for which
    f returns False.
    
    Arguments:
    - `l`: an iterable of elements
    - `f`: a function that applies to these elements
    """
    for e in l:
        if f(e) == False:
            return (False, e)
        elif f(e) == True:
            pass
        else:
            raise TypeError("Expected a Boolean")
    return (True, None)