1 <?xml encoding="ISO-8859-1"?>
3 <!-- DTD FOR CIC OBJECTS: -->
5 <!-- CIC term declaration -->
7 <!ENTITY % term '(LAMBDA|CAST|PROD|REL|SORT|APPLY|VAR|META|IMPLICIT|CONST|
8 LETIN|MUTIND|MUTCONSTRUCT|MUTCASE|FIX|COFIX|instantiate)'>
12 <!ENTITY % sort '(Prop|Set|Type|CProp)'>
16 <!ENTITY % sequent '((Decl|Def|Hidden)*,Goal)'>
20 <!-- CSC: so far params is equal to the one of the only body. -->
21 <!ELEMENT ConstantType (attributes?,%term;)>
22 <!ATTLIST ConstantType
24 params CDATA #REQUIRED
27 <!ELEMENT ConstantBody (attributes?,%term;)>
28 <!ATTLIST ConstantBody
30 params CDATA #REQUIRED
33 <!ELEMENT CurrentProof (attributes?,Conjecture*,body)>
34 <!ATTLIST CurrentProof
38 <!ELEMENT InductiveDefinition (attributes?,InductiveType+)>
39 <!ATTLIST InductiveDefinition
40 noParams NMTOKEN #REQUIRED
41 params CDATA #REQUIRED
44 <!ELEMENT Variable (attributes?,body?,type)>
47 params CDATA #REQUIRED
50 <!ELEMENT Sequent %sequent;>
55 <!ELEMENT attributes EMPTY>
57 class (coercion|elimProp|elimCProp|elimSet|elimType|record|projection) #IMPLIED
58 generated (true|false) #IMPLIED>
60 <!-- Elements used in CIC objects, which are not terms: -->
62 <!ELEMENT InductiveType (arity,Constructor*)>
63 <!ATTLIST InductiveType
65 inductive (true|false) #REQUIRED
68 <!ELEMENT Conjecture %sequent;>
73 <!ELEMENT Constructor %term;>
77 <!ELEMENT Decl %term;>
87 <!ELEMENT Hidden EMPTY>
91 <!ELEMENT Goal %term;>
95 <!ELEMENT LAMBDA (decl*,target)>
97 sort %sort; #REQUIRED>
99 <!ELEMENT LETIN (def*,target)>
101 sort %sort; #REQUIRED>
103 <!ELEMENT PROD (decl*,target)>
105 type %sort; #REQUIRED>
107 <!ELEMENT CAST (term,type)>
110 sort %sort; #REQUIRED>
114 value NMTOKEN #REQUIRED
115 binder CDATA #REQUIRED
117 idref IDREF #REQUIRED
118 sort %sort; #REQUIRED>
120 <!ELEMENT SORT EMPTY>
122 value CDATA #REQUIRED
125 <!ELEMENT APPLY (%term;)+>
128 sort %sort; #REQUIRED>
134 sort %sort; #REQUIRED>
136 <!-- The substitutions are ordered by increasing DeBrujin -->
137 <!-- index. An empty substitution means that that index is -->
138 <!-- not accessible. -->
139 <!ELEMENT META (substitution*)>
143 sort %sort; #REQUIRED>
145 <!ELEMENT IMPLICIT EMPTY>
148 annotation (closed|type|hole) #IMPLIED>
150 <!ELEMENT CONST EMPTY>
154 sort %sort; #REQUIRED>
156 <!ELEMENT MUTIND EMPTY>
159 noType NMTOKEN #REQUIRED
162 <!ELEMENT MUTCONSTRUCT EMPTY>
163 <!ATTLIST MUTCONSTRUCT
165 noType NMTOKEN #REQUIRED
166 noConstr NMTOKEN #REQUIRED
168 sort %sort; #REQUIRED>
170 <!ELEMENT MUTCASE (patternsType,inductiveTerm,pattern*)>
172 uriType CDATA #REQUIRED
173 noType NMTOKEN #REQUIRED
175 sort %sort; #REQUIRED>
177 <!ELEMENT FIX (FixFunction+)>
179 noFun NMTOKEN #REQUIRED
181 sort %sort; #REQUIRED>
183 <!ELEMENT COFIX (CofixFunction+)>
185 noFun NMTOKEN #REQUIRED
187 sort %sort; #REQUIRED>
189 <!-- Elements used in CIC terms: -->
191 <!ELEMENT FixFunction (type,body)>
192 <!ATTLIST FixFunction
195 recIndex NMTOKEN #REQUIRED>
197 <!ELEMENT CofixFunction (type,body)>
198 <!ATTLIST CofixFunction
200 name CDATA #REQUIRED>
202 <!ELEMENT substitution ((%term;)?)>
204 <!-- Explicit named substitutions: -->
206 <!ELEMENT instantiate ((CONST|MUTIND|MUTCONSTRUCT|VAR),arg+)>
207 <!ATTLIST instantiate
210 <!-- Sintactic sugar for CIC terms and for CIC objects: -->
212 <!ELEMENT arg %term;>
214 relUri CDATA #REQUIRED>
216 <!ELEMENT decl %term;>
219 type %sort; #REQUIRED
220 binder CDATA #IMPLIED>
222 <!ELEMENT def %term;>
225 sort %sort; #REQUIRED
226 binder CDATA #IMPLIED>
228 <!ELEMENT target %term;>
230 <!ELEMENT term %term;>
232 <!ELEMENT type %term;>
234 <!ELEMENT arity %term;>
236 <!ELEMENT patternsType %term;>
238 <!ELEMENT inductiveTerm %term;>
240 <!ELEMENT pattern %term;>
242 <!ELEMENT body %term;>