<!-- CIC term declaration -->
<!ENTITY % term '(LAMBDA|CAST|PROD|REL|SORT|APPLY|VAR|META|IMPLICIT|CONST|
- ABST|MUTIND|MUTCONSTRUCT|MUTCASE|FIX|COFIX)'>
+ LETIN|MUTIND|MUTCONSTRUCT|MUTCASE|FIX|COFIX)'>
+
+<!-- CIC sorts -->
+
+<!ENTITY % sort '(Prop|Set|Type)'>
+
<!-- CIC objects: -->
params CDATA #REQUIRED
id ID #REQUIRED>
-<!ELEMENT Variable (type)>
+<!ELEMENT Variable (body?,type)>
<!ATTLIST Variable
name CDATA #REQUIRED
id ID #REQUIRED>
<!ELEMENT LAMBDA (source,target)>
<!ATTLIST LAMBDA
- id ID #REQUIRED>
+ id ID #REQUIRED
+ sort %sort; #REQUIRED>
+
+<!ELEMENT LETIN (term,letintarget)>
+<!ATTLIST LETIN
+ id ID #REQUIRED
+ sort %sort; #REQUIRED>
<!ELEMENT PROD (source,target)>
<!ATTLIST PROD
<!ELEMENT CAST (term,type)>
<!ATTLIST CAST
- id ID #REQUIRED>
+ id ID #REQUIRED
+ sort %sort; #REQUIRED>
<!ELEMENT REL EMPTY>
<!ATTLIST REL
value NMTOKEN #REQUIRED
binder CDATA #REQUIRED
- id ID #REQUIRED>
+ id ID #REQUIRED
+ sort %sort; #REQUIRED>
<!ELEMENT SORT EMPTY>
<!ATTLIST SORT
<!ELEMENT APPLY (%term;)+>
<!ATTLIST APPLY
- id ID #REQUIRED>
+ id ID #REQUIRED
+ sort %sort; #REQUIRED>
<!ELEMENT VAR EMPTY>
<!ATTLIST VAR
- relUri CDATA #REQUIRED
- id ID #REQUIRED>
+ relUri CDATA #REQUIRED
+ id ID #REQUIRED
+ sort %sort; #REQUIRED>
<!ELEMENT META EMPTY>
<!ATTLIST META
- no NMTOKEN #REQUIRED
- id ID #REQUIRED>
+ no NMTOKEN #REQUIRED
+ id ID #REQUIRED
+ sort %sort; #REQUIRED>
<!ELEMENT IMPLICIT EMPTY>
<!ATTLIST IMPLICIT
<!ELEMENT CONST EMPTY>
<!ATTLIST CONST
- uri CDATA #REQUIRED
- id ID #REQUIRED>
-
-<!ELEMENT ABST EMPTY>
-<!ATTLIST ABST
- uri CDATA #REQUIRED
- id ID #REQUIRED>
+ uri CDATA #REQUIRED
+ id ID #REQUIRED
+ sort %sort; #REQUIRED>
<!ELEMENT MUTIND EMPTY>
<!ATTLIST MUTIND
uri CDATA #REQUIRED
noType NMTOKEN #REQUIRED
noConstr NMTOKEN #REQUIRED
- id ID #REQUIRED>
+ id ID #REQUIRED
+ sort %sort; #REQUIRED>
<!ELEMENT MUTCASE (patternsType,inductiveTerm,pattern*)>
<!ATTLIST MUTCASE
uriType CDATA #REQUIRED
noType NMTOKEN #REQUIRED
- id ID #REQUIRED>
+ id ID #REQUIRED
+ sort %sort; #REQUIRED>
<!ELEMENT FIX (FixFunction+)>
<!ATTLIST FIX
noFun NMTOKEN #REQUIRED
- id ID #REQUIRED>
+ id ID #REQUIRED
+ sort %sort; #REQUIRED>
<!ELEMENT COFIX (CofixFunction+)>
<!ATTLIST COFIX
noFun NMTOKEN #REQUIRED
- id ID #REQUIRED>
+ id ID #REQUIRED
+ sort %sort; #REQUIRED>
<!-- Elements used in CIC terms: -->
<!ATTLIST target
binder CDATA #IMPLIED>
+<!ELEMENT letintarget %term;>
+<!ATTLIST letintarget
+ binder CDATA #REQUIRED>
+
<!ELEMENT term %term;>
<!ELEMENT type %term;>