<!-- MathQL query expression declaration -->
-<!ENTITY % setexpr '(Rvar|Lvar|Ref|Pattern|Select|LetIn|Relation|
+<!ENTITY % setexpr '(Rvar|Svar|Ref|Pattern|Select|LetSIn|LetVIn|Relation|
Union|Intersect|Diff)'>
<!-- MathQL boolean expression declaration -->
<!ENTITY % functexpr '(FUN|PROPERTY)'>
-<!ENTITY % stringsetexpr '(CONST|CONSTLIST|REFOF|BINDER|%functexpr;)'>
-
+<!ENTITY % stringsetexpr '(CONST|CONSTLIST|REFOF|BINDER|VVAR|%functexpr;)'>
<!-- MathQL query top-element -->
<!ELEMENT Select (In, Where)>
-<!ELEMENT LetIn (%setexpr;, Target)>
+<!ELEMENT LetSIn (%setexpr;, Starget)>
+
+<!ELEMENT LetVIn (%stringsetexpr;, Vtarget)>
-<!ELEMENT Relation (Refine?,%setexpr;, Attr+)>
+<!ELEMENT Relation (PName?,%setexpr;, Attr+)>
<!ATTLIST Relation
name CDATA #REQUIRED
refine (sub|super) #IMPLIED>
<!ATTLIST Where
rvar CDATA #REQUIRED>
-<!ELEMENT Target %setexpr;>
-<!ATTLIST Target
+<!ELEMENT Starget %setexpr;>
+<!ATTLIST Starget
svar CDATA #REQUIRED>
+<!ELEMENT Vtarget %setexpr;>
+<!ATTLIST Vtarget
+ vvar CDATA #REQUIRED>
+
<!ELEMENT Attr EMPTY>
<!ATTLIST Attr
binder CDATA #REQUIRED>
+<!ELEMENT PName (CONST+)>
+
<!-- MathQL boolean expressions -->
<!ELEMENT BOOL EMPTY>
<!ELEMENT REFOF %setexpr;>
+<!ELEMENT VVAR %stringsetexpr;>
+
<!ELEMENT BINDER (Rvar)>
<!ATTLIST BINDER
name CDATA #REQUIRED>
<!ATTLIST FUN
name CDATA #REQUIRED>
-<!ELEMENT PROPERTY %stringsetexpr;>
+<!ELEMENT PROPERTY (Refine?,%stringsetexpr;)>
<!ATTLIST PROPERTY
- name CDATA #REQUIRED
- refine (sub|super) #IMPLIED>
\ No newline at end of file
+ name CDATA #REQUIRED>