Folliwing the standard (1 Feb 2005; A.3.5) the logical functions and and or must stop evaluation of arguments and leave the rest of the arguments unevaluated, when the result is clear. This is not the case and though and cannot be used to shield from errors in later arguments. i.e. if in and(f(), g()) f() evaluates to false an g() evaluates to indeterminate because of an error, tho whole evaluation returns indeterminate instead of false.
See also [#XACMLCORE-217]