I might have gotten that wrong. I think you want:
classes:
"no_file" not => isplain( "/tmp/foo" );
"no_link" not => islink( "/tmp/foo" );
# I prefer to keep this as it's more meaningful to the reader than a
# compound expression.
"copy_file" expression => no_file.no_link;
files:
copy_file::
"yada, yada, yada"