<!-- Operators are unambiguous (binary or unary), so there isn't any -->
<!-- grouping operator. -->
<!-- CONST is the constant string. -->
+<!-- The attributes binder and rvar declare variables which are -->
+<!-- referred to and used by means of respectively BINDER and RVAR -->
<!--*****************************************************************-->
<!ENTITY % position '(Conclusion|Hypothesis|Body|MainConclusion|
<!ELEMENT ConstructorsOf %queryexpr;>
-<!ELEMENT Pattern EMPTY>
-<!ATTLIST Pattern
- arg CDATA #REQUIRED>
+<!ELEMENT Pattern (Prefix, TokenList, (FragmentID?))>
<!ELEMENT InTheory (%queryexpr;, ItemType)>
<!ATTLIST Where
rvar CDATA #REQUIRED>
+<!ELEMENT STAR EMPTY>
+
+<!ELEMENT TWOSTARS EMPTY>
+
+<!ELEMENT SLASH EMPTY>
+
+<!ELEMENT QUESTIONMARK EMPTY>
+
+<!ELEMENT NUMBER EMPTY>
+<!ATTLIST NUMBER
+ value NMTOKEN #REQUIRED>
+
+<!-- STAR expands only to objects of the specified dir before the last "/":
+ ex. cic:/Algebra/* expands to every object in Algebra only -->
+<!-- TWOSTARS expands till the most complete name (with extension if not
+ specifified) -->
+<!-- QUESTIONMARK matches one character except "/" -->
+<!ELEMENT TokenList (CONST|STAR|TWOSTARS|SLASH|QUESTIONMARK)+>
+
+<!ELEMENT Prefix (#PCDATA)>
+
+<!-- XPointers have max depth = 2 (see CIC inductive definitions) -->
+<!ELEMENT FragmentID ((NUMBER|STAR), (NUMBER|STAR)?)>
+
<!-- MathQL boolean expressions -->
<!ELEMENT AND (%boolexpr;, %boolexpr;)>
value %bool; #REQUIRED>
<!-- MathQL string expressions -->
+
<!ELEMENT CONST (#PCDATA)>
<!ELEMENT RVAR EMPTY>
<!ELEMENT NAME (RVAR)>
-<!ELEMENT PROPERTY (RVAR|CONST)>
+<!ELEMENT PROPERTY (RVAR)>
<!ATTLIST PROPERTY
name CDATA #REQUIRED>
-<!ELEMENT SUPERPROPERTY (RVAR|CONST)>
+<!ELEMENT SUPERPROPERTY (RVAR)>
<!ATTLIST SUPERPROPERTY
name CDATA #REQUIRED>
-<!ELEMENT SUBPROPERTY (RVAR|CONST)>
+<!ELEMENT SUBPROPERTY (RVAR)>
<!ATTLIST SUBPROPERTY
name CDATA #REQUIRED>
\ No newline at end of file