Being atomic isn't gradient / real valued (unless we are doing something statistical based I suppose). There's no metric to evaluate how atomic an expression is unless we created one (e.g. the number of nested logical connectives). An expression is either atomic or it is not (binary valued).
Think about it: if we have a
boolexpr
created by
Or
, it has at least two sub
boolexpr
. Therefore, it's not atomic.
If we have a
boolexpr
created by
Filter
or
Condition
, then it's atomic. You can't break up this
boolexpr
into any sub parts, hence it's atomic.
Read the article I posted again.
Filter
just returns a value that can be stored as
boolexpr
, it's still atomic. For your convenience I've copied the definition
again.
a formula that contains no logical connectives or equivalently a formula that has no strict sub formulas.
Or
is a binary logical connective, it requires two
boolexpr
arguments and returns a non-atomic
boolexpr
. Note that its arguments can be atomic or non-atomic, otherwise we could not nest these logical connective to generate arbitrarily long
boolexpr
.
Filter
or
Condition
on the other hand aren't logical connectives. They simply perform a type casting:
code
-->
boolexpr
. That doesn't change the truth values of the original expression. And these are recycled as well, unlike non-atomic
boolexpr
as we both have pointed out numerous times.