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 ((class,generated?)|(generated,class?))?>
57 <!ELEMENT generated EMPTY>
59 <!-- the fields are allowed only when @value = "record"
60 the SORT is allowed only when @value = "elim" -->
61 <!ELEMENT class (field*|SORT)>
63 value (coercion|elim|record|projection) #REQUIRED>
65 <!-- Elements used in CIC objects, which are not terms: -->
67 <!ELEMENT InductiveType (arity,Constructor*)>
68 <!ATTLIST InductiveType
70 inductive (true|false) #REQUIRED
73 <!ELEMENT Conjecture %sequent;>
78 <!ELEMENT Constructor %term;>
82 <!ELEMENT Decl %term;>
92 <!ELEMENT Hidden EMPTY>
96 <!ELEMENT Goal %term;>
100 <!ELEMENT LAMBDA (decl*,target)>
102 sort %sort; #REQUIRED>
104 <!ELEMENT LETIN (def*,target)>
106 sort %sort; #REQUIRED>
108 <!ELEMENT PROD (decl*,target)>
110 type %sort; #REQUIRED>
112 <!ELEMENT CAST (term,type)>
115 sort %sort; #REQUIRED>
119 value NMTOKEN #REQUIRED
120 binder CDATA #REQUIRED
122 idref IDREF #REQUIRED
123 sort %sort; #REQUIRED>
125 <!ELEMENT SORT EMPTY>
127 value CDATA #REQUIRED
130 <!ELEMENT APPLY (%term;)+>
133 sort %sort; #REQUIRED>
139 sort %sort; #REQUIRED>
141 <!-- The substitutions are ordered by increasing DeBrujin -->
142 <!-- index. An empty substitution means that that index is -->
143 <!-- not accessible. -->
144 <!ELEMENT META (substitution*)>
148 sort %sort; #REQUIRED>
150 <!ELEMENT IMPLICIT EMPTY>
153 annotation (closed|type|hole) #IMPLIED>
155 <!ELEMENT CONST EMPTY>
159 sort %sort; #REQUIRED>
161 <!ELEMENT MUTIND EMPTY>
164 noType NMTOKEN #REQUIRED
167 <!ELEMENT MUTCONSTRUCT EMPTY>
168 <!ATTLIST MUTCONSTRUCT
170 noType NMTOKEN #REQUIRED
171 noConstr NMTOKEN #REQUIRED
173 sort %sort; #REQUIRED>
175 <!ELEMENT MUTCASE (patternsType,inductiveTerm,pattern*)>
177 uriType CDATA #REQUIRED
178 noType NMTOKEN #REQUIRED
180 sort %sort; #REQUIRED>
182 <!ELEMENT FIX (FixFunction+)>
184 noFun NMTOKEN #REQUIRED
186 sort %sort; #REQUIRED>
188 <!ELEMENT COFIX (CofixFunction+)>
190 noFun NMTOKEN #REQUIRED
192 sort %sort; #REQUIRED>
194 <!-- Elements used in CIC terms: -->
196 <!ELEMENT FixFunction (type,body)>
197 <!ATTLIST FixFunction
200 recIndex NMTOKEN #REQUIRED>
202 <!ELEMENT CofixFunction (type,body)>
203 <!ATTLIST CofixFunction
205 name CDATA #REQUIRED>
207 <!ELEMENT substitution ((%term;)?)>
209 <!-- Explicit named substitutions: -->
211 <!ELEMENT instantiate ((CONST|MUTIND|MUTCONSTRUCT|VAR),arg+)>
212 <!ATTLIST instantiate
215 <!-- Sintactic sugar for CIC terms and for CIC objects: -->
217 <!ELEMENT arg %term;>
219 relUri CDATA #REQUIRED>
221 <!ELEMENT decl %term;>
224 type %sort; #REQUIRED
225 binder CDATA #IMPLIED>
227 <!ELEMENT def %term;>
230 sort %sort; #REQUIRED
231 binder CDATA #IMPLIED>
233 <!ELEMENT target %term;>
235 <!ELEMENT term %term;>
237 <!ELEMENT type %term;>
239 <!ELEMENT arity %term;>
241 <!ELEMENT patternsType %term;>
243 <!ELEMENT inductiveTerm %term;>
245 <!ELEMENT pattern %term;>
247 <!ELEMENT body %term;>