<?xml version="1.0" encoding="UTF-8"?>
<!--<!DOCTYPE xsd:schema SYSTEM "http://nt-appn.comp.nus.edu.sg/fm/zml/unicode.dtd">-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
	<xsd:annotation>
		<xsd:documentation xml:lang="en">XML Schema definition for the Z family formal specification languages (Z/Object-Z/TCOZ).</xsd:documentation>
	</xsd:annotation>
	<xsd:element name="ZML" type="ZMLType"/>
	<xsd:element name="comment" type="xsd:string"/>
	<xsd:complexType name="ZMLType">
		<xsd:sequence>
			<xsd:element ref="comment" minOccurs="0"/>
			<xsd:element name="basicTypeDef" type="basicTypeDefType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="axiomaticDef" type="axiomaticDefType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="genericDef" type="genericDefType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="abbreviationDef" type="abbreviationDefType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="freeTypeDef" type="freeTypeDefType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="schemaDef" type="schemaDefType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="classDef" type="classDefType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="predicate" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="creator" type="xsd:string"/>
		<xsd:attribute name="date" type="xsd:date"/>
	</xsd:complexType>
	<xsd:complexType name="basicTypeDefType">
		<xsd:sequence>
			<xsd:element name="name" type="nameType" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="axiomaticDefType">
		<xsd:sequence>
			<xsd:element name="declaration" type="declarationType" maxOccurs="unbounded"/>
			<xsd:element ref="predicate" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="genericDefType">
		<xsd:sequence>
			<xsd:element name="formalParameters" type="basicTypeDefType" minOccurs="0"/>
			<xsd:element name="declaration" type="declarationType" maxOccurs="unbounded"/>
			<xsd:element ref="predicate" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="abbreviationDefType">
		<xsd:sequence>
			<xsd:element name="name" type="nameType"/>
			<xsd:element ref="expression"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="freeTypeDefType">
		<xsd:sequence>
			<xsd:element name="name" type="nameType"/>
			<xsd:element name="branch" type="branchType" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="schemaDefType">
		<xsd:sequence>
			<xsd:element name="name" type="nameType"/>
			<xsd:element name="formalParameters" type="basicTypeDefType" minOccurs="0"/>
			<xsd:choice>
				<xsd:group ref="schemaBox"/>
				<xsd:group ref="schemaExprDef"/>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:group name="schemaBox">
		<xsd:sequence>
			<xsd:element name="incluList" type="stringListType" minOccurs="0"/>
			<xsd:element name="xiList" type="stringListType" minOccurs="0"/>
			<xsd:element name="deltaList" type="stringListType" minOccurs="0"/>
			<xsd:element name="declaration" type="declarationType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="predicate" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="schemaExprDef">
		<xsd:sequence>
			<xsd:element ref="schemaExpression"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:element name="schemaExpression">
		<xsd:complexType>
			<xsd:choice>
				<xsd:group ref="schemaExpression0"/>
				<xsd:group ref="schemaText"/>
				<xsd:group ref="schemaExpression1"/>
				<xsd:group ref="schemaExpression2"/>
				<xsd:group ref="schemaExpression3"/>
				<xsd:group ref="schemaExpression4"/>
			</xsd:choice>
		</xsd:complexType>
	</xsd:element>
	<xsd:group name="schemaExpression0">
		<xsd:sequence>
			<xsd:element name="quantifier" type="quantifyType"/>
			<xsd:group ref="schemaText"/>
			<xsd:element name="suchThat" type="xsd:token" fixed="."/>
			<xsd:element ref="schemaExpression"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="schemaExpression1">
		<xsd:sequence>
			<xsd:element name="unarySch" type="unarySchSymbol"/>
			<xsd:element ref="schemaExpression"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="schemaExpression2">
		<xsd:sequence>
			<xsd:group ref="binarySchema" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="schemaExpression"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="binarySchema">
		<xsd:sequence>
			<xsd:element ref="schemaExpression"/>
			<xsd:element name="schemaConnSym" type="schemaConnSymbol"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="schemaExpression3">
		<xsd:sequence>
			<xsd:element name="left" type="xsd:token" fixed="("/>
			<xsd:element ref="schemaExpression"/>
			<xsd:element name="right" type="xsd:token" fixed=")"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="schemaExpression4">
		<xsd:sequence>
			<xsd:element name="name" type="nameType"/>
			<xsd:element name="renameList" type="renameListType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:complexType name="classDefType">
		<xsd:sequence>
			<xsd:element name="name" type="nameType"/>
			<xsd:element name="formalParameters" type="basicTypeDefType" minOccurs="0"/>
			<xsd:element name="visibilityList" type="stringListType" minOccurs="0"/>
			<xsd:element name="inheritedClass" type="inheritedClassType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:group ref="localDef"/>
			<xsd:element name="state" type="stateType" minOccurs="0"/>
			<xsd:element name="initialState" type="initialStateType" minOccurs="0"/>
			<xsd:element name="operation" type="operationType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:element name="predicate">
		<xsd:complexType>
			<xsd:choice>
				<xsd:group ref="predicate0"/>
				<xsd:group ref="predicate1"/>
				<xsd:group ref="predicate2"/>
				<xsd:group ref="predicate3"/>
				<xsd:group ref="predicate4"/>
			</xsd:choice>
		</xsd:complexType>
	</xsd:element>
	<xsd:group name="schemaText">
		<xsd:sequence>
			<xsd:element name="declaration" type="declarationType" maxOccurs="unbounded"/>
			<xsd:element ref="predicate" minOccurs="0"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="predicate0">
		<xsd:sequence>
			<xsd:element name="quantifier" type="quantifyType"/>
			<xsd:group ref="schemaText"/>
			<xsd:element name="suchThat" type="xsd:token" fixed="."/>
			<xsd:element ref="predicate"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="predicate1">
		<xsd:sequence>
			<xsd:group ref="binaryExpression1" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="expression"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="binaryExpression1">
		<xsd:sequence>
			<xsd:element ref="expression"/>
			<xsd:element name="relationSym" type="relationSymbolType"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="predicate2">
		<xsd:sequence>
			<xsd:element name="unaryPred" type="unaryPredSymbol"/>
			<xsd:element ref="predicate"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="predicate3">
		<xsd:sequence>
			<xsd:group ref="binaryPredicate" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="predicate"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="binaryPredicate">
		<xsd:sequence>
			<xsd:element ref="predicate"/>
			<xsd:element name="predConnSym" type="predConnSymbol"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="predicate4">
		<xsd:sequence>
			<xsd:element name="left" type="xsd:token" fixed="("/>
			<xsd:element ref="predicate"/>
			<xsd:element name="right" type="xsd:token" fixed=")"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:element name="expression">
		<xsd:complexType>
			<xsd:choice>
				<xsd:group ref="expression0"/>
				<xsd:group ref="expression1"/>
				<xsd:group ref="expression2"/>
				<xsd:group ref="expression3"/>
				<xsd:group ref="expression4"/>
				<xsd:group ref="expression5"/>
				<xsd:group ref="expression6"/>
				<xsd:group ref="expression7"/>
				<xsd:element name="singleton" type="singletonSymbol"/>
				<xsd:element name="number" type="xsd:decimal"/>
			</xsd:choice>
		</xsd:complexType>
	</xsd:element>
	<xsd:group name="expression0">
		<xsd:sequence>
			<xsd:element name="unaryExpr" type="unaryExpressionSymbol"/>
			<xsd:group ref="schemaText"/>
			<xsd:element name="suchThat" type="xsd:token" fixed="."/>
			<xsd:element ref="expression"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="expression1">
		<xsd:sequence>
			<xsd:group ref="binaryExpression" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="expression"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="binaryExpression">
		<xsd:sequence>
			<xsd:element ref="expression"/>
			<xsd:element name="exprConnSym" type="relationSymbolType"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="expression2">
		<xsd:sequence>
			<xsd:element name="prefixExpr" type="prefixExpressionSymbol"/>
			<xsd:element ref="expression"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="expression3">
		<xsd:sequence>
			<xsd:element name="left" type="bracketType"/>
			<xsd:element ref="expression" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="right" type="bracketType"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="expression4">
		<xsd:sequence>
			<xsd:element ref="expression"/>
			<xsd:element name="postfixExpr" type="postfixExpressionSymbol"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="expression5">
		<xsd:sequence>
			<xsd:element ref="expression"/>
			<xsd:element name="dot" type="xsd:token" fixed="."/>
			<xsd:element name="varName" type="nameType"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="expression6">
		<xsd:sequence>
			<xsd:element name="className" type="nameType"/>
			<xsd:element name="ActualParameters" type="stringListType" minOccurs="0"/>
			<xsd:element name="renameList" type="renameListType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="expression7">
		<xsd:sequence>
			<xsd:element name="varName" type="nameType"/>
			<xsd:element name="ActualParameters" type="stringListType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:complexType name="declarationType">
		<xsd:sequence>
			<xsd:element name="variable" type="stringListType"/>
			<xsd:element ref="dataType"/>
		</xsd:sequence>
		<xsd:attribute name="primary" type="xsd:boolean" use="optional" default="true"/>
	</xsd:complexType>
	<xsd:complexType name="branchType">
		<xsd:sequence>
			<xsd:element name="name" type="nameType"/>
			<xsd:element ref="expression" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:group name="element">
		<xsd:choice>
			<xsd:group ref="typeDef"/>
			<xsd:group ref="bracket"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="typeDef">
		<xsd:sequence>
			<xsd:element name="type" type="nameType"/>
			<xsd:element name="renameList" type="renameListType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="bracket">
		<xsd:sequence>
			<xsd:element name="left" type="xsd:token" fixed="("/>
			<xsd:element ref="dataType"/>
			<xsd:element name="right" type="xsd:token" fixed=")"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="unary">
		<xsd:sequence>
			<xsd:element name="unarySym" type="unaryTypeSymbol" minOccurs="0"/>
			<xsd:group ref="element"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="binary">
		<xsd:sequence>
			<xsd:element ref="dataType"/>
			<xsd:element name="binarySym" type="binaryTypeSymbol"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:element name="dataType">
		<xsd:annotation>
			<xsd:documentation>EBNF for dataType:
dataType:=(dataType "binarySym")* unary
unary:="unarySym" element | element
element:= type | "(" dataType ")"</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:sequence>
				<xsd:group ref="binary" minOccurs="0" maxOccurs="unbounded"/>
				<xsd:group ref="unary"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:complexType name="stateType">
		<xsd:sequence>
			<xsd:element name="declaration" type="declarationType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="predicate" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="initialStateType">
		<xsd:sequence>
			<xsd:element ref="predicate" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="operationType">
		<xsd:sequence>
			<xsd:element name="name" type="nameType"/>
			<xsd:choice>
				<xsd:group ref="operationBox"/>
				<xsd:group ref="operationExprDef"/>
				<xsd:group ref="processExprDef"/>
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:group name="operationBox">
		<xsd:sequence>
			<xsd:element name="deltaList" type="stringListType" minOccurs="0"/>
			<xsd:element name="declaration" type="declarationType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="predicate" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="operationExprDef">
		<xsd:sequence>
			<xsd:element ref="operationExpression"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:element name="operationExpression">
		<xsd:complexType>
			<xsd:choice>
				<xsd:group ref="operationExpression0"/>
				<xsd:group ref="operationExpression1"/>
				<xsd:group ref="operationExpression2"/>
				<xsd:group ref="operationExpression3"/>
				<xsd:group ref="operationExpression4"/>
				<xsd:group ref="operationExpression5"/>
			</xsd:choice>
		</xsd:complexType>
	</xsd:element>
	<xsd:group name="operationExpression0">
		<xsd:sequence>
			<xsd:element name="unaryOp" type="unaryOperationSymbol"/>
			<xsd:group ref="schemaText"/>
			<xsd:element name="suchThat" type="xsd:token" fixed="."/>
			<xsd:element ref="operationExpression"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="operationExpression1">
		<xsd:sequence>
			<xsd:element name="deltaList" type="stringListType" minOccurs="0"/>
			<xsd:element name="declaration" type="declarationType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="predicate" minOccurs="0"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="operationGroup1">
		<xsd:sequence>
			<xsd:element ref="expression"/>
			<xsd:element name="dot" type="xsd:token" fixed="."/>
			<xsd:element name="name" type="nameType"/>
			<xsd:element name="renameList" type="renameListType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="operationGroup2">
		<xsd:sequence>
			<xsd:element name="name" type="nameType"/>
			<xsd:element name="renameList" type="renameListType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="operationExpression2">
		<xsd:choice>
			<xsd:group ref="operationGroup1"/>
			<xsd:group ref="operationGroup2"/>
		</xsd:choice>
	</xsd:group>
	<xsd:group name="operationExpression3">
		<xsd:sequence>
			<xsd:group ref="binaryOperation" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="operationExpression"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="binaryOperation">
		<xsd:sequence>
			<xsd:element ref="operationExpression"/>
			<xsd:element name="operationConnSym" type="operationConnSymbol"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="operationExpression4">
		<xsd:sequence>
			<xsd:element ref="operationExpression"/>
			<xsd:element name="hide" type="xsd:token" fixed="\"/>
			<xsd:element name="nameList" type="stringListType"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="operationExpression5">
		<xsd:sequence>
			<xsd:element name="left" type="xsd:token" fixed="("/>
			<xsd:element ref="operationExpression"/>
			<xsd:element name="right" type="xsd:token" fixed=")"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:simpleType name="stringListType">
		<xsd:list itemType="nameType"/>
	</xsd:simpleType>
	<xsd:simpleType name="renameListType">
		<xsd:list itemType="renameItemType"/>
	</xsd:simpleType>
	<xsd:simpleType name="nameType">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[A-Z a-z].*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="unitType">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[^0-9].*[A-Z a-z].*"/>
		</xsd:restriction>
	</xsd:simpleType>
<xsd:simpleType name="nameUnitType">
  <xsd:union memberTypes="nameType unitType"/>
</xsd:simpleType>

	<xsd:simpleType name="renameItemType">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="[A-Z a-z].*/[A-Z a-z].*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="inheritedClassType">
		<xsd:sequence>
			<xsd:element name="name" type="nameType"/>
			<xsd:element name="ActualParameters" type="stringListType" minOccurs="0"/>
			<xsd:element name="renameList" type="renameListType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:group name="localDef">
		<xsd:sequence>
			<xsd:element name="basicTypeDef" type="basicTypeDefType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="axiomaticDef" type="axiomaticDefType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="abbreviationDef" type="abbreviationDefType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="freeTypeDef" type="freeTypeDefType" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:simpleType name="binaryTypeSymbol">
		<xsd:annotation>
			<xsd:documentation>infixFunctionSymbols and infixGenericSymbols added here</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="rel"/>
			<xsd:enumeration value="tfun"/>
			<xsd:enumeration value="pfun"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="unaryTypeSymbol">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="pset"/>
			<xsd:enumeration value="psetone"/>
			<xsd:enumeration value="fset"/>
			<xsd:enumeration value="fsetone"/>
			<xsd:enumeration value="seq"/>
			<xsd:enumeration value="seqone"/>
			<xsd:enumeration value="iseq"/>
			<xsd:enumeration value="bag"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="quantifyType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="all"/>
			<xsd:enumeration value="exi"/>
			<xsd:enumeration value="exione"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="relationSymbolType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="="/>
			<xsd:enumeration value=","/>
			<xsd:enumeration value="neq"/>
			<xsd:enumeration value="gt"/>
			<xsd:enumeration value="geq"/>
			<xsd:enumeration value="lt"/>
			<xsd:enumeration value="leq"/>
			<xsd:enumeration value="cat"/>
			<xsd:enumeration value="uni"/>
			<xsd:enumeration value="dsub"/>
			<xsd:enumeration value="dres"/>
			<xsd:enumeration value="rres"/>
			<xsd:enumeration value="rsub"/>
			<xsd:enumeration value="fovr"/>
			<xsd:enumeration value="comp"/>
			<xsd:enumeration value="mem"/>
			<xsd:enumeration value="nem"/>
			<xsd:enumeration value="parallel"/>
			<xsd:enumeration value="subset"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="unaryPredSymbol">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="not"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="predConnSymbol">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="and"/>
			<xsd:enumeration value="or"/>
			<xsd:enumeration value="zimp"/>
			<xsd:enumeration value="zeq"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="unarySchSymbol">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="not"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="schemaConnSymbol">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="and"/>
			<xsd:enumeration value="or"/>
			<xsd:enumeration value="zimp"/>
			<xsd:enumeration value="zeq"/>
			<xsd:enumeration value="project"/>
			<xsd:enumeration value="hide"/>
			<xsd:enumeration value="zcmp"/>
			<xsd:enumeration value="zpipe"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="unaryOperationSymbol">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="bigwedge"/>
			<xsd:enumeration value="box"/>
			<xsd:enumeration value="zcmp"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="operationConnSymbol">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="and"/>
			<xsd:enumeration value="parallel"/>
			<xsd:enumeration value="interleave"/>
			<xsd:enumeration value="box"/>
			<xsd:enumeration value="zcmp"/>
			<xsd:enumeration value="dot"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="unaryExpressionSymbol">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="lambda"/>
			<xsd:enumeration value="mu"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="prefixExpressionSymbol">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="pset"/>
			<xsd:enumeration value="dom"/>
			<xsd:enumeration value="ran"/>
			<xsd:enumeration value="#"/>
			<xsd:enumeration value="psetone"/>
			<xsd:enumeration value="fset"/>
			<xsd:enumeration value="fsetone"/>
			<xsd:enumeration value="seq"/>
			<xsd:enumeration value="seqone"/>
			<xsd:enumeration value="iseq"/>
			<xsd:enumeration value="bag"/>
			<xsd:enumeration value="downarrow"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="singletonSymbol">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="emptyset"/>
			<xsd:enumeration value="emptyseq"/>
			<xsd:enumeration value="self"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="postfixExpressionSymbol">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="~"/>
			<xsd:enumeration value="+"/>
			<xsd:enumeration value="*"/>
			<xsd:enumeration value="'"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="bracketType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="("/>
			<xsd:enumeration value="{"/>
			<xsd:enumeration value="["/>
			<xsd:enumeration value="lt"/>
			<xsd:enumeration value=")"/>
			<xsd:enumeration value="}"/>
			<xsd:enumeration value="]"/>
			<xsd:enumeration value="gt"/>
		</xsd:restriction>
	</xsd:simpleType>
	<!-- XML Schema definition for the Timed Communicating Sequential Processes. -->
	<xsd:complexType name="eventType">
		<xsd:simpleContent>
			<xsd:extension base="nameType">
				<xsd:attribute name="type">
					<xsd:simpleType>
						<xsd:restriction base="xsd:string">
							<xsd:enumeration value="prefix"/>
							<xsd:enumeration value="timedPrefix"/>
							<xsd:enumeration value="channelIn"/>
							<xsd:enumeration value="channelOut"/>
						</xsd:restriction>
					</xsd:simpleType>
				</xsd:attribute>
				<xsd:attribute name="var" type="nameType"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<xsd:complexType name="processDefType">
		<xsd:sequence>
			<xsd:element name="name" type="nameType"/>
			<xsd:element ref="processExpr"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:group name="processExprDef">
		<xsd:sequence>
			<xsd:element ref="processExpr"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:element name="processExpr">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="guard" type="guardType" minOccurs="0"/>
				<xsd:choice>
					<xsd:group ref="proExpression1"/>
					<xsd:group ref="prefixExpression"/>
					<xsd:group ref="proBracket"/>
					<xsd:group ref="proTimeout"/>
					<xsd:group ref="proRecursion"/>
					<xsd:group ref="networkTopology"/>
					<xsd:group ref="deadlineWaituntil"/>
					<xsd:element name="wait" type="nameUnitType"/>
					<xsd:element name="simpleProExp" type="nameType"/>
					<xsd:element name="STOP"/>
					<xsd:element name="RUN"/>
					<xsd:element name="SKIP"/>
					<xsd:element name="self"/>
					<xsd:element name="number" type="xsd:decimal"/>
				</xsd:choice>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:group name="proExpression1">
		<xsd:sequence>
			<xsd:group ref="binaryProExpression" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="processExpr"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="binaryProExpression">
		<xsd:sequence>
			<xsd:element ref="processExpr"/>
			<xsd:element name="proConnSym" type="binaryProSymbol"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="proBracket">
		<xsd:sequence>
			<xsd:element name="left" type="xsd:token" fixed="("/>
			<xsd:element ref="processExpr"/>
			<xsd:element name="right" type="xsd:token" fixed=")"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="proTimeout">
		<xsd:sequence>
			<xsd:element ref="processExpr"/>
			<xsd:element name="varName" type="nameUnitType"/>
			<xsd:element ref="processExpr"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="proRecursion">
		<xsd:sequence>
			<xsd:element name="mu" type="nameType"/>
			<xsd:element ref="processExpr"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="deadlineWaituntil">
		<xsd:sequence>
			<xsd:element ref="processExpr"/>
			<xsd:choice>
				<xsd:element name="deadline" type="nameUnitType"/>
				<xsd:element name="waitUntil" type="nameUnitType"/>
			</xsd:choice>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="prefixExpression">
		<xsd:sequence>
			<xsd:group ref="EventPrefix" minOccurs="0"/>
			<xsd:element ref="processExpr"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="EventPrefix">
		<xsd:sequence>
			<xsd:element name="event" type="eventType"/>
			<xsd:element name="then" type="unaryProSymbol"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:complexType name="guardType">
		<xsd:sequence>
			<xsd:element name="declaration" type="declarationType" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element ref="predicate" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:group name="networkTopology">
		<xsd:sequence>
			<xsd:group ref="binaryNetTop" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="activeObject" type="nameType"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:group name="binaryNetTop">
		<xsd:sequence>
			<xsd:element name="activeObject" type="nameType"/>
			<xsd:element name="channelName" type="nameType"/>
		</xsd:sequence>
	</xsd:group>
	<xsd:simpleType name="binaryProSymbol">
		<xsd:annotation>
			<xsd:documentation>infixFunctionSymbols and infixGenericSymbols added here</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="parallel"/>
			<xsd:enumeration value="interleaving"/>
			<xsd:enumeration value="chained"/>
			<xsd:enumeration value="externalChoice"/>
			<xsd:enumeration value="internalChoice"/>
			<xsd:enumeration value="interrupt"/>
			<xsd:enumeration value="composition"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="unaryProSymbol">
		<xsd:annotation>
			<xsd:documentation>infixFunctionSymbols and infixGenericSymbols added here</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="then"/>
		</xsd:restriction>
	</xsd:simpleType>
</xsd:schema>
