design/caps: fix and clarify subset operations with empty fields
authorMatthew Waters <matthew@centricular.com>
Thu, 8 Dec 2016 09:22:53 +0000 (20:22 +1100)
committerMatthew Waters <matthew@centricular.com>
Thu, 8 Dec 2016 09:25:43 +0000 (20:25 +1100)
https://bugzilla.gnome.org/show_bug.cgi?id=775786

markdown/design/caps.md

index 3f15ec9..cf86897 100644 (file)
@@ -41,9 +41,13 @@ One caps "A" is a subset of another caps "B" if for each structure in
 in "A".
 
 A structure "a" is the subset of a structure "b" if it has the same
-structure name, the same caps features and each field in "b" exists in
-"a" and the value of the field in "a" is a subset of the value of the
-field in "b". "a" can have additional fields that are not in "b".
+structure name, the same caps features and each field in "b" either does not
+exist in "a", or the value of the field in "a" is a subset of the value of the
+field in "b". "a" must not have additional fields that are not in "b".  Fields
+that are in "b" but not in "a" (aka, an empty field) are always a subset.
+This is different to the intuitive mathematical definition as an empty field
+is defined to contain all possible values.  This means that the empty field is
+always a superset of any other field.
 
 EMPTY caps are a subset of every other caps. Every caps are a subset of
 ANY caps.