Proper (though incomplete) rule matching