In most cases, I would want not to check empty tiles (ie to exclude tiles because they are empty on the input layer, while the rule input layer is also empty).
But you are correct, I don't really need the match to fail if there is nothing in the input layer.
It is not the desired behaviour indeed, but it may be used as a workaround to have a fail or pass if there is anything (or nothing) in a given position, which can be useful.
The cases where I want it to fail is if there is anything in the input layer specified by inputnot_layer, but I am not sure it is related:
For instance, in my game, I have 3 alternating pieces for the wall, with the corner always being connected to the second piece of these 3.
The input is the terrain_type layer, which then outputs the wall_type to the wall_type layer.
So I do several pass. The first one outputs a Corner on the wall_type layer where the terrain_type indicates the first wall piece in a line and a wall_unspecified tile on the other wall pieces positions.
Then, on the next ones, the wall_unspecified tiles are replaced with the relevant wall pieces (wall1, wall2, wall3):
I want to set up the rule for the intermediary wall tiles (wall terrain to wall_unspecified tile) to fail if there is anything in the wall layer (either wall_unspecified, wall_1, wall_corner, wall_2, wall3...), so I want the match for inputnot_wall_type to pass if there is nothing in the wall_type layer at the same position as a wall in the terrain_type layer, and to fail if there is anything, so that the first rule does not overwrite the wall types(w1, w2, w3) with wall unspecified on subsequent automapping passes.
For these cases, (and letting people decide to fail/match if there is something or nothing), I think the most flexible way to do that would be to have an inputanything_layerId and inputnothing_layerId that would return a pass or a fail if there is anything (or respectively nothing) on the layerid input layer (so the tiles on these layer would work as the region tiles, and only the presence or absence of tile would be considered).
An outputdelete_layerId that would work the same, and delete any tile on the relevant layer if there is a match would also help make the system more flexible.
But it might be too much hassle for what it is worth (I would much prefer having the system changed to what you suggested than the current one, and not fail the matching test whenever there is any empty tile in any layer of the checked region).