And
to return unevaluated only if none of its arguments was False
, since the truth value of "foo"
(for instance) does not affect the result here. What it seems to do in practice is to return unevaluated only if all of its arguments have an undefined truth value--any explicitly True
or False
arguments are removed in the result. For instance And["foo", True, "boo"] -> And["foo", "boo"]
.