<!ENTITY % sort '(Prop|Set|Type)'>
+<!-- CIC sequents -->
+
+<!ENTITY % sequent '((Decl|Def|Hidden)*,Goal)'>
<!-- CIC objects: -->
name CDATA #REQUIRED
id ID #REQUIRED>
-<!ELEMENT Sequent ((Decl|Def)*,Goal)>
+<!ELEMENT Sequent %sequent;>
<!ATTLIST Sequent
- id ID #REQUIRED>
+ no NMTOKEN #REQUIRED
+ id ID #REQUIRED>
<!-- Elements used in CIC objects, which are not terms: -->
name CDATA #REQUIRED
inductive (true|false) #REQUIRED>
-<!ELEMENT Conjecture %term;>
+<!ELEMENT Conjecture %sequent;>
<!ATTLIST Conjecture
no NMTOKEN #REQUIRED>
<!ELEMENT Decl %term;>
<!ATTLIST Decl
- name CDATA #REQUIRED>
+ name CDATA #IMPLIED>
<!ELEMENT Def %term;>
<!ATTLIST Def
- name CDATA #REQUIRED>
+ name CDATA #IMPLIED>
+
+<!ELEMENT Hidden EMPTY>
<!ELEMENT Goal %term;>
id ID #REQUIRED
sort %sort; #REQUIRED>
-<!ELEMENT META EMPTY>
+<!-- The substitutions are ordered by increasing DeBrujin -->
+<!-- index. An empty substitution means that that index is -->
+<!-- not accessible. -->
+<!ELEMENT META (substitution*)>
<!ATTLIST META
- no NMTOKEN #REQUIRED
- id ID #REQUIRED
- sort %sort; #REQUIRED>
+ no NMTOKEN #REQUIRED
+ id ID #REQUIRED
+ sort %sort; #REQUIRED>
<!ELEMENT IMPLICIT EMPTY>
<!ATTLIST IMPLICIT
<!ATTLIST CofixFunction
name CDATA #REQUIRED>
+<!ELEMENT substitution ((%term;)?)>
+
<!-- Sintactic sugar for CIC terms and for CIC objects: -->
<!ELEMENT source %term;>