def _domain_check(f, symbol, p):
    if (f.is_Atom and f.is_finite):
        return True
    elif f.subs(symbol, p).is_infinite:
        return False
    else:
        return all([_domain_check(g, symbol, p) for g in f.args])
def _domain_check(f, symbol, p):
    if (f.is_Atom and f.is_finite):
        return True
    elif f.subs(symbol, p).is_infinite:
        return False
    else:
        return all([_domain_check(g, symbol, p) for g in f.args])