Index: trunk/data/validator/unnecessary.mapcss
===================================================================
--- trunk/data/validator/unnecessary.mapcss	(revision 14917)
+++ trunk/data/validator/unnecessary.mapcss	(revision 14918)
@@ -1,4 +1,4 @@
 *[access][highway=proposed],
-*[motor_vehicle?][vehicle!=no][access!=no][bicycle_road!=yes][highway =~ /^(motorway|motorway_link|trunk|trunk_link|primary|primary_link|secondary|secondary_link|tertiary|tertiary_link|unclassified|residential|service|living_street)$/],
+*[motor_vehicle?][!vehicle][!access][bicycle_road!=yes][highway =~ /^(motorway|motorway_link|trunk|trunk_link|primary|primary_link|secondary|secondary_link|tertiary|tertiary_link|unclassified|residential|service|living_street)$/],
 *[bridge=no],
 *[building=no],
@@ -12,4 +12,6 @@
   assertMatch: "way bridge=no";
   assertMatch: "way highway=proposed access=no";
+  assertMatch: "way highway=motorway motor_vehicle=yes";
+  assertNoMatch: "way highway=motorway access=no motor_vehicle=yes";
 }
 
@@ -36,6 +38,6 @@
 
 /* #9257, #17482 */
-way[foot =~ /^(yes|designated)$/][highway =~ /^(footway|pedestrian)$/],
-way[bicycle =~ /^(yes|designated)$/][highway=cycleway],
+way[foot =~ /^(yes|designated)$/][!access][highway =~ /^(footway|pedestrian)$/],
+way[bicycle =~ /^(yes|designated)$/][!vehicle][!access][highway=cycleway],
 *[building:ruian:type=2][building=farm_auxiliary],
 *[building:ruian:type=7][building=house],
@@ -48,4 +50,6 @@
   group: tr("unnecessary tag");
   fixRemove: "{0.key}";
+  assertMatch: "way highway=pedestrian foot=designated";
+  assertNoMatch: "way highway=pedestrian access=no foot=designated";
 }
 
