<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="Constructors">
    <xs:complexType>
      <xs:sequence>
        <xs:choice minOccurs="0">
          <xs:element ref="SignatureWithCounts"/>
          <xs:sequence>
            <xs:element ref="Signature"/>
            <xs:element ref="ConstrCounts"/>
          </xs:sequence>
        </xs:choice>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Constructor"/>
      </xs:sequence>
      <xs:attribute name="aid" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="SignatureWithCounts">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="ConstrCounts"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Notations">
    <xs:complexType>
      <xs:sequence>
        <xs:sequence minOccurs="0">
          <xs:element ref="Signature"/>
          <xs:element ref="Vocabularies"/>
        </xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Pattern"/>
      </xs:sequence>
      <xs:attribute name="aid" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Registrations">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="Signature"/>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="RCluster"/>
          <xs:element ref="CCluster"/>
          <xs:element ref="FCluster"/>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="aid" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="IdentifyRegistrations">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="Signature"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="IdentifyWithExp"/>
      </xs:sequence>
      <xs:attribute name="aid" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Definientia">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="Signature"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Definiens"/>
      </xs:sequence>
      <xs:attribute name="aid" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Theorems">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="Signature"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Theorem"/>
      </xs:sequence>
      <xs:attribute name="aid" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Theorem">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Formula"/>
      </xs:sequence>
      <xs:attribute name="articlenr" type="xs:integer"/>
      <xs:attribute name="nr" type="xs:integer"/>
      <xs:attribute name="constrkind">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="M"/>
            <xs:enumeration value="V"/>
            <xs:enumeration value="R"/>
            <xs:enumeration value="K"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="constrnr" type="xs:integer"/>
      <xs:attribute name="aid" type="xs:string"/>
      <xs:attribute name="kind" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="T"/>
            <xs:enumeration value="D"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="Schemes">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="Signature"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Scheme"/>
      </xs:sequence>
      <xs:attribute name="aid" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Format">
    <xs:complexType>
      <xs:attribute name="kind" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="G"/>
            <xs:enumeration value="K"/>
            <xs:enumeration value="J"/>
            <xs:enumeration value="L"/>
            <xs:enumeration value="M"/>
            <xs:enumeration value="O"/>
            <xs:enumeration value="R"/>
            <xs:enumeration value="U"/>
            <xs:enumeration value="V"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="nr" type="xs:integer"/>
      <xs:attribute name="symbolnr" use="required" type="xs:integer"/>
      <xs:attribute name="argnr" use="required" type="xs:integer"/>
      <xs:attribute name="leftargnr" type="xs:integer"/>
      <xs:attribute name="rightsymbolnr" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Formats">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Format"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Priority"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Priority">
    <xs:complexType>
      <xs:attribute name="kind" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="O"/>
            <xs:enumeration value="K"/>
            <xs:enumeration value="L"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="symbolnr" use="required" type="xs:integer"/>
      <xs:attribute name="value" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Requirement">
    <xs:complexType>
      <xs:attribute name="constrkind" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="M"/>
            <xs:enumeration value="L"/>
            <xs:enumeration value="V"/>
            <xs:enumeration value="R"/>
            <xs:enumeration value="K"/>
            <xs:enumeration value="U"/>
            <xs:enumeration value="G"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="constrnr" use="required" type="xs:integer"/>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
      <xs:attribute name="reqname" type="xs:string"/>
      <xs:attribute name="absnr" type="xs:integer"/>
      <xs:attribute name="aid" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Requirements">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Signature"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Requirement"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Adjective">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Term"/>
      </xs:sequence>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
      <xs:attribute name="value" type="xs:boolean"/>
      <xs:attribute name="absnr" type="xs:integer"/>
      <xs:attribute name="aid" type="xs:string"/>
      <xs:attribute name="kind">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="V"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="pid" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Cluster">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Adjective"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Typ">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Cluster"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Term"/>
      </xs:sequence>
      <xs:attribute name="kind" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="M"/>
            <xs:enumeration value="G"/>
            <xs:enumeration value="L"/>
            <xs:enumeration value="errortyp"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="nr" type="xs:integer"/>
      <xs:attribute name="absnr" type="xs:integer"/>
      <xs:attribute name="aid" type="xs:string"/>
      <xs:attribute name="pid" type="xs:integer"/>
      <xs:attribute name="vid" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Is" substitutionGroup="Formula">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Term"/>
        <xs:element ref="Typ"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="For" substitutionGroup="Formula">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Typ"/>
        <xs:element ref="Formula"/>
      </xs:sequence>
      <xs:attribute name="pid" type="xs:integer"/>
      <xs:attribute name="vid" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="And" substitutionGroup="Formula">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Formula"/>
      </xs:sequence>
      <xs:attribute name="pid" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Not" substitutionGroup="Formula">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Formula"/>
      </xs:sequence>
      <xs:attribute name="pid" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Pred" substitutionGroup="Formula">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Term"/>
      </xs:sequence>
      <xs:attribute name="kind" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="P"/>
            <xs:enumeration value="V"/>
            <xs:enumeration value="R"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
      <xs:attribute name="absnr" type="xs:integer"/>
      <xs:attribute name="aid" type="xs:string"/>
      <xs:attribute name="pid" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="PrivPred" substitutionGroup="Formula">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Term"/>
        <xs:element ref="Formula"/>
      </xs:sequence>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Verum" substitutionGroup="Formula">
    <xs:complexType/>
  </xs:element>
  <xs:element name="ErrorFrm" substitutionGroup="Formula">
    <xs:complexType/>
  </xs:element>
  <xs:element name="Formula" abstract="true"/>
  <xs:element name="Var" substitutionGroup="Term">
    <xs:complexType>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="LocusVar" substitutionGroup="Term">
    <xs:complexType>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="FreeVar" substitutionGroup="Term">
    <xs:complexType>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="LambdaVar" substitutionGroup="Term">
    <xs:complexType>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Const" substitutionGroup="Term">
    <xs:complexType>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
      <xs:attribute name="vid" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="InfConst" substitutionGroup="Term">
    <xs:complexType>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Num" substitutionGroup="Term">
    <xs:complexType>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Func" substitutionGroup="Term">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Term"/>
      </xs:sequence>
      <xs:attribute name="kind" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="F"/>
            <xs:enumeration value="G"/>
            <xs:enumeration value="K"/>
            <xs:enumeration value="U"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
      <xs:attribute name="absnr" type="xs:integer"/>
      <xs:attribute name="aid" type="xs:string"/>
      <xs:attribute name="pid" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="PrivFunc" substitutionGroup="Term">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="Term"/>
      </xs:sequence>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Fraenkel" substitutionGroup="Term">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Typ"/>
        <xs:element ref="Term"/>
        <xs:element ref="Formula"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="QuaTrm" substitutionGroup="Term">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Term"/>
        <xs:element ref="Typ"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="It" substitutionGroup="Term">
    <xs:complexType/>
  </xs:element>
  <xs:element name="ErrorTrm" substitutionGroup="Term">
    <xs:complexType/>
  </xs:element>
  <xs:element name="Term" abstract="true"/>
  <xs:attributeGroup name="Position">
    <xs:attribute name="line" use="required" type="xs:integer"/>
    <xs:attribute name="col" use="required" type="xs:integer"/>
  </xs:attributeGroup>
  <xs:element name="Proposition">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Formula"/>
      </xs:sequence>
      <xs:attributeGroup ref="Position"/>
      <xs:attribute name="nr" type="xs:integer"/>
      <xs:attribute name="vid" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="ArgTypes">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Typ"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ErrorCluster">
    <xs:complexType/>
  </xs:element>
  <xs:element name="RCluster">
    <xs:complexType>
      <xs:choice>
        <xs:element ref="ErrorCluster"/>
        <xs:sequence>
          <xs:element ref="ArgTypes"/>
          <xs:element ref="Typ"/>
          <xs:element ref="Cluster"/>
          <xs:element minOccurs="0" ref="Cluster"/>
        </xs:sequence>
      </xs:choice>
      <xs:attribute name="nr" type="xs:integer"/>
      <xs:attribute name="aid" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="CCluster">
    <xs:complexType>
      <xs:choice>
        <xs:element ref="ErrorCluster"/>
        <xs:sequence>
          <xs:element ref="ArgTypes"/>
          <xs:element ref="Cluster"/>
          <xs:element ref="Typ"/>
          <xs:element ref="Cluster"/>
          <xs:element minOccurs="0" ref="Cluster"/>
        </xs:sequence>
      </xs:choice>
      <xs:attribute name="nr" type="xs:integer"/>
      <xs:attribute name="aid" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="FCluster">
    <xs:complexType>
      <xs:choice>
        <xs:element ref="ErrorCluster"/>
        <xs:sequence>
          <xs:element ref="ArgTypes"/>
          <xs:element ref="Term"/>
          <xs:element ref="Cluster"/>
          <xs:element minOccurs="0" ref="Cluster"/>
          <xs:element minOccurs="0" ref="Typ"/>
        </xs:sequence>
      </xs:choice>
      <xs:attribute name="nr" type="xs:integer"/>
      <xs:attribute name="aid" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Identify">
    <xs:complexType>
      <xs:choice>
        <xs:element ref="ErrorIdentify"/>
        <xs:sequence>
          <xs:element ref="ConstrDef"/>
          <xs:element ref="ConstrDef"/>
          <xs:element ref="EqArgs"/>
        </xs:sequence>
      </xs:choice>
      <xs:attribute name="nr" type="xs:integer"/>
      <xs:attribute name="aid" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="EqArgs">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Pair"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ErrorIdentify">
    <xs:complexType/>
  </xs:element>
  <xs:element name="IdentifyWithExp">
    <xs:complexType>
      <xs:choice>
        <xs:element ref="ErrorIdentify"/>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="Typ"/>
          <xs:choice>
            <xs:sequence>
              <xs:element ref="Term"/>
              <xs:element ref="Term"/>
            </xs:sequence>
            <xs:sequence>
              <xs:element ref="Formula"/>
              <xs:element ref="Formula"/>
            </xs:sequence>
          </xs:choice>
        </xs:sequence>
      </xs:choice>
      <xs:attribute name="nr" type="xs:integer"/>
      <xs:attribute name="aid" type="xs:string"/>
      <xs:attribute name="constrkind">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="K"/>
            <xs:enumeration value="U"/>
            <xs:enumeration value="G"/>
            <xs:enumeration value="V"/>
            <xs:enumeration value="R"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="constrnr" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Scheme">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ArgTypes"/>
        <xs:element ref="Formula"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Formula"/>
      </xs:sequence>
      <xs:attribute name="articlenr" type="xs:integer"/>
      <xs:attribute name="nr" type="xs:integer"/>
      <xs:attribute name="aid" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="ArticleID">
    <xs:complexType>
      <xs:attribute name="name" use="required" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Signature">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="ArticleID"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ConstrCounts">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="ConstrCount"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="ConstrCount">
    <xs:complexType>
      <xs:attribute name="kind" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="M"/>
            <xs:enumeration value="L"/>
            <xs:enumeration value="V"/>
            <xs:enumeration value="R"/>
            <xs:enumeration value="K"/>
            <xs:enumeration value="U"/>
            <xs:enumeration value="G"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Vocabularies">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Vocabulary"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Vocabulary">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ArticleID"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="SymbolCount"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SymbolCount">
    <xs:complexType>
      <xs:attribute name="kind" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="G"/>
            <xs:enumeration value="K"/>
            <xs:enumeration value="L"/>
            <xs:enumeration value="M"/>
            <xs:enumeration value="O"/>
            <xs:enumeration value="R"/>
            <xs:enumeration value="U"/>
            <xs:enumeration value="V"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Int">
    <xs:complexType>
      <xs:attribute name="x" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Pair">
    <xs:complexType>
      <xs:attribute name="x" use="required" type="xs:integer"/>
      <xs:attribute name="y" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="StructLoci">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Pair"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Fields">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Field"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Field">
    <xs:complexType>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
      <xs:attribute name="kind">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="U"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="aid" type="xs:string"/>
      <xs:attribute name="absnr" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Property" abstract="true">
    <xs:complexType/>
  </xs:element>
  <xs:element name="UnexpectedProp" substitutionGroup="Property"/>
  <xs:element name="Symmetry" substitutionGroup="Property"/>
  <xs:element name="Reflexivity" substitutionGroup="Property"/>
  <xs:element name="Irreflexivity" substitutionGroup="Property"/>
  <xs:element name="Associativity" substitutionGroup="Property"/>
  <xs:element name="Transitivity" substitutionGroup="Property"/>
  <xs:element name="Commutativity" substitutionGroup="Property"/>
  <xs:element name="Connectedness" substitutionGroup="Property"/>
  <xs:element name="Antisymmetry" substitutionGroup="Property"/>
  <xs:element name="Idempotence" substitutionGroup="Property"/>
  <xs:element name="Involutiveness" substitutionGroup="Property"/>
  <xs:element name="Projectivity" substitutionGroup="Property"/>
  <xs:element name="Abstractness" substitutionGroup="Property"/>
  <xs:element name="Properties">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="Property"/>
      </xs:sequence>
      <xs:attribute name="propertyarg1" use="required" type="xs:integer"/>
      <xs:attribute name="propertyarg2" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Constructor">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="Properties"/>
        <xs:element ref="ArgTypes"/>
        <xs:element minOccurs="0" ref="StructLoci"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Typ"/>
        <xs:element minOccurs="0" ref="Fields"/>
      </xs:sequence>
      <xs:attribute name="kind" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="M"/>
            <xs:enumeration value="L"/>
            <xs:enumeration value="V"/>
            <xs:enumeration value="R"/>
            <xs:enumeration value="K"/>
            <xs:enumeration value="U"/>
            <xs:enumeration value="G"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
      <xs:attribute name="aid" use="required" type="xs:string"/>
      <xs:attribute name="relnr" type="xs:integer"/>
      <xs:attribute name="redefnr" type="xs:integer"/>
      <xs:attribute name="superfluous" type="xs:integer"/>
      <xs:attribute name="absredefnr" type="xs:integer"/>
      <xs:attribute name="redefaid" type="xs:string"/>
      <xs:attribute name="structmodeaggrnr" type="xs:integer"/>
      <xs:attribute name="aggregbase" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="EndPosition">
    <xs:complexType>
      <xs:attributeGroup ref="Position"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Pattern">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="Format"/>
        <xs:element ref="ArgTypes"/>
        <xs:element ref="Visible"/>
        <xs:element minOccurs="0" ref="Expansion"/>
      </xs:sequence>
      <xs:attribute name="kind" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="M"/>
            <xs:enumeration value="L"/>
            <xs:enumeration value="V"/>
            <xs:enumeration value="R"/>
            <xs:enumeration value="K"/>
            <xs:enumeration value="U"/>
            <xs:enumeration value="G"/>
            <xs:enumeration value="J"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="nr" type="xs:integer"/>
      <xs:attribute name="aid" type="xs:string"/>
      <xs:attribute name="formatnr" type="xs:integer"/>
      <xs:attribute name="constrkind" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="M"/>
            <xs:enumeration value="L"/>
            <xs:enumeration value="V"/>
            <xs:enumeration value="R"/>
            <xs:enumeration value="K"/>
            <xs:enumeration value="U"/>
            <xs:enumeration value="G"/>
            <xs:enumeration value="J"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="constrnr" use="required" type="xs:integer"/>
      <xs:attribute name="antonymic" type="xs:boolean"/>
      <xs:attribute name="relnr" type="xs:integer"/>
      <xs:attribute name="redefnr" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Visible">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Int"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Expansion">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Typ"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ConstrDef">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Typ"/>
        <xs:element minOccurs="0" ref="Term"/>
      </xs:sequence>
      <xs:attribute name="constrkind" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="K"/>
            <xs:enumeration value="U"/>
            <xs:enumeration value="G"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="constrnr" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="DefMeaning">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="PartialDef"/>
        <xs:choice minOccurs="0">
          <xs:element ref="Formula"/>
          <xs:element ref="Term"/>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="kind" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="e"/>
            <xs:enumeration value="m"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="PartialDef">
    <xs:complexType>
      <xs:sequence>
        <xs:choice>
          <xs:element ref="Formula"/>
          <xs:element ref="Term"/>
        </xs:choice>
        <xs:element ref="Formula"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Definiens">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Typ"/>
        <xs:element ref="Essentials"/>
        <xs:element minOccurs="0" ref="Formula"/>
        <xs:element ref="DefMeaning"/>
      </xs:sequence>
      <xs:attribute name="constrkind" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="M"/>
            <xs:enumeration value="L"/>
            <xs:enumeration value="V"/>
            <xs:enumeration value="R"/>
            <xs:enumeration value="K"/>
            <xs:enumeration value="U"/>
            <xs:enumeration value="G"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="constrnr" use="required" type="xs:integer"/>
      <xs:attribute name="defnr" use="required" type="xs:integer"/>
      <xs:attribute name="vid" type="xs:integer"/>
      <xs:attribute name="aid" use="required" type="xs:string"/>
      <xs:attribute name="nr" type="xs:integer"/>
      <xs:attribute name="relnr" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Essentials">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Int"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Ref">
    <xs:complexType>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
      <xs:attribute name="vid" type="xs:integer"/>
      <xs:attribute name="articlenr" type="xs:integer"/>
      <xs:attribute name="kind">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="T"/>
            <xs:enumeration value="D"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attributeGroup ref="Position"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Inference" abstract="true" substitutionGroup="Justification"/>
  <xs:element name="ErrorInf" substitutionGroup="Inference">
    <xs:complexType/>
  </xs:element>
  <xs:element name="By" substitutionGroup="Inference">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Ref"/>
      </xs:sequence>
      <xs:attributeGroup ref="Position"/>
      <xs:attribute name="linked" type="xs:boolean"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="From" substitutionGroup="Inference">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Ref"/>
      </xs:sequence>
      <xs:attributeGroup ref="Position"/>
      <xs:attribute name="articlenr" use="required" type="xs:integer"/>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="IterStep">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Term"/>
        <xs:element ref="Inference"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Symbols">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Symbol"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Symbol">
    <xs:complexType>
      <xs:attribute name="kind" use="required" type="xs:string"/>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
      <xs:attribute name="name" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="Symbols">
    <xs:attribute name="aid" type="xs:string"/>
  </xs:attributeGroup>
  <xs:element name="ByExplanations">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="PolyEval"/>
      </xs:sequence>
      <xs:attribute name="aid" use="required" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="FromExplanations">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="SchemeInstantiation"/>
      </xs:sequence>
      <xs:attribute name="aid" use="required" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Article">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="DefinitionBlock"/>
        <xs:element ref="RegistrationBlock"/>
        <xs:element ref="NotationBlock"/>
        <xs:element ref="Reservation"/>
        <xs:element ref="SchemeBlock"/>
        <xs:element ref="JustifiedTheorem"/>
        <xs:element ref="DefTheorem"/>
        <xs:element ref="Definiens"/>
        <xs:element ref="Canceled"/>
        <xs:group ref="AuxiliaryItem"/>
      </xs:choice>
      <xs:attribute name="aid" use="required" type="xs:string"/>
      <xs:attribute name="mizfiles" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="ThesisExpansions">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Pair"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Let">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="Typ"/>
      </xs:sequence>
      <xs:attribute name="nr" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Assume">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="Proposition"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Given">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Proposition"/>
        <xs:element maxOccurs="unbounded" ref="Typ"/>
        <xs:element maxOccurs="unbounded" ref="Proposition"/>
      </xs:sequence>
      <xs:attribute name="nr" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Take">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Term"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="TakeAsVar">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Typ"/>
        <xs:element ref="Term"/>
      </xs:sequence>
      <xs:attribute name="nr" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Conclusion">
    <xs:complexType>
      <xs:group ref="JustifiedProposition"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Consider">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Proposition"/>
        <xs:element ref="Justification"/>
        <xs:element maxOccurs="unbounded" ref="Typ"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Proposition"/>
      </xs:sequence>
      <xs:attribute name="nr" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Reconsider">
    <xs:complexType>
      <xs:sequence>
        <xs:sequence maxOccurs="unbounded">
          <xs:element ref="Typ"/>
          <xs:element ref="Term"/>
        </xs:sequence>
        <xs:element ref="Proposition"/>
        <xs:element ref="Justification"/>
      </xs:sequence>
      <xs:attribute name="nr" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Set">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Term"/>
        <xs:element ref="Typ"/>
      </xs:sequence>
      <xs:attribute name="nr" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="DefFunc">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ArgTypes"/>
        <xs:element ref="Term"/>
        <xs:element ref="Typ"/>
      </xs:sequence>
      <xs:attribute name="nr" type="xs:integer"/>
      <xs:attribute name="vid" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="DefPred">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ArgTypes"/>
        <xs:element ref="Formula"/>
      </xs:sequence>
      <xs:attribute name="nr" type="xs:integer"/>
      <xs:attribute name="vid" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Thesis">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Formula"/>
        <xs:element ref="ThesisExpansions"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Case">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="Proposition"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Suppose">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="Proposition"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="BlockThesis">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Thesis"/>
        <xs:element ref="Formula"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CaseBlock">
    <xs:complexType>
      <xs:choice>
        <xs:sequence>
          <xs:element ref="BlockThesis"/>
          <xs:element ref="Case"/>
          <xs:element ref="Thesis"/>
          <xs:group ref="Reasoning"/>
        </xs:sequence>
        <xs:sequence>
          <xs:element ref="Case"/>
          <xs:group ref="Reasoning"/>
          <xs:element ref="BlockThesis"/>
        </xs:sequence>
      </xs:choice>
      <xs:attributeGroup ref="Position"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="SupposeBlock">
    <xs:complexType>
      <xs:choice>
        <xs:sequence>
          <xs:element ref="BlockThesis"/>
          <xs:element ref="Suppose"/>
          <xs:element ref="Thesis"/>
          <xs:group ref="Reasoning"/>
        </xs:sequence>
        <xs:sequence>
          <xs:element ref="Suppose"/>
          <xs:group ref="Reasoning"/>
          <xs:element ref="BlockThesis"/>
        </xs:sequence>
      </xs:choice>
      <xs:attributeGroup ref="Position"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="SkippedProof" substitutionGroup="Justification">
    <xs:complexType/>
  </xs:element>
  <xs:element name="PerCases">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Proposition"/>
        <xs:element ref="Inference"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="PerCasesReasoning">
    <xs:complexType>
      <xs:choice>
        <xs:sequence>
          <xs:element ref="BlockThesis"/>
          <xs:choice>
            <xs:element maxOccurs="unbounded" ref="CaseBlock"/>
            <xs:element maxOccurs="unbounded" ref="SupposeBlock"/>
          </xs:choice>
          <xs:element ref="PerCases"/>
          <xs:element ref="Thesis"/>
          <xs:element ref="EndPosition"/>
        </xs:sequence>
        <xs:sequence>
          <xs:choice>
            <xs:element maxOccurs="unbounded" ref="CaseBlock"/>
            <xs:element maxOccurs="unbounded" ref="SupposeBlock"/>
          </xs:choice>
          <xs:element ref="PerCases"/>
          <xs:element ref="EndPosition"/>
          <xs:element ref="BlockThesis"/>
        </xs:sequence>
      </xs:choice>
      <xs:attributeGroup ref="Position"/>
    </xs:complexType>
  </xs:element>
  <xs:group name="SkeletonItem">
    <xs:sequence>
      <xs:choice>
        <xs:element ref="Let"/>
        <xs:element ref="Conclusion"/>
        <xs:element ref="Assume"/>
        <xs:element ref="Given"/>
        <xs:element ref="Take"/>
        <xs:element ref="TakeAsVar"/>
      </xs:choice>
      <xs:element minOccurs="0" ref="Thesis"/>
    </xs:sequence>
  </xs:group>
  <xs:group name="Reasoning">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="SkeletonItem"/>
        <xs:group ref="AuxiliaryItem"/>
      </xs:choice>
      <xs:element minOccurs="0" ref="PerCasesReasoning"/>
      <xs:element ref="EndPosition"/>
    </xs:sequence>
  </xs:group>
  <xs:element name="Proof" substitutionGroup="Justification">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="BlockThesis"/>
        <xs:group ref="Reasoning"/>
      </xs:sequence>
      <xs:attribute name="nr" type="xs:integer"/>
      <xs:attribute name="vid" type="xs:integer"/>
      <xs:attributeGroup ref="Position"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Now">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="Reasoning"/>
        <xs:element ref="BlockThesis"/>
      </xs:sequence>
      <xs:attribute name="nr" type="xs:integer"/>
      <xs:attribute name="vid" type="xs:integer"/>
      <xs:attributeGroup ref="Position"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Justification" abstract="true">
    <xs:annotation>
      <xs:documentation>Direct justification.   </xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="IterEquality">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Term"/>
        <xs:element maxOccurs="unbounded" ref="IterStep"/>
      </xs:sequence>
      <xs:attribute name="nr" type="xs:integer"/>
      <xs:attribute name="vid" type="xs:integer"/>
      <xs:attributeGroup ref="Position"/>
    </xs:complexType>
  </xs:element>
  <xs:group name="JustifiedProposition">
    <xs:choice>
      <xs:element ref="Now"/>
      <xs:element ref="IterEquality"/>
      <xs:sequence>
        <xs:element ref="Proposition"/>
        <xs:element ref="Justification"/>
      </xs:sequence>
    </xs:choice>
  </xs:group>
  <xs:group name="AuxiliaryItem">
    <xs:annotation>
      <xs:documentation>Auxiliary items are items which do not change thesis.</xs:documentation>
    </xs:annotation>
    <xs:choice>
      <xs:group ref="JustifiedProposition"/>
      <xs:element ref="Consider"/>
      <xs:element ref="Set"/>
      <xs:element ref="Reconsider"/>
      <xs:element ref="DefFunc"/>
      <xs:element ref="DefPred"/>
    </xs:choice>
  </xs:group>
  <xs:element name="Reservation">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Typ"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="JustifiedTheorem">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Proposition"/>
        <xs:element ref="Justification"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="DefTheorem">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Proposition"/>
      </xs:sequence>
      <xs:attribute name="constrkind">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="M"/>
            <xs:enumeration value="V"/>
            <xs:enumeration value="R"/>
            <xs:enumeration value="K"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="constrnr" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="JustifiedProperty">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Property"/>
        <xs:element ref="Proposition"/>
        <xs:element ref="Justification"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CorrectnessCondition" abstract="true">
    <xs:complexType>
      <xs:choice>
        <xs:element ref="Formula"/>
        <xs:sequence>
          <xs:element ref="Proposition"/>
          <xs:element ref="Justification"/>
        </xs:sequence>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="UnknownCorrCond" substitutionGroup="CorrectnessCondition"/>
  <xs:element name="Coherence" substitutionGroup="CorrectnessCondition"/>
  <xs:element name="Compatibility" substitutionGroup="CorrectnessCondition"/>
  <xs:element name="Consistency" substitutionGroup="CorrectnessCondition"/>
  <xs:element name="Existence" substitutionGroup="CorrectnessCondition"/>
  <xs:element name="Uniqueness" substitutionGroup="CorrectnessCondition"/>
  <xs:element name="Correctness">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="CorrectnessCondition"/>
        <xs:element ref="Proposition"/>
        <xs:element ref="Justification"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Canceled">
    <xs:complexType/>
  </xs:element>
  <xs:element name="SchemeFuncDecl">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ArgTypes"/>
        <xs:element ref="Typ"/>
      </xs:sequence>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
      <xs:attribute name="vid" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="SchemePredDecl">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="ArgTypes"/>
      </xs:sequence>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
      <xs:attribute name="vid" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="SchemeBlock">
    <xs:complexType>
      <xs:sequence>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="SchemeFuncDecl"/>
          <xs:element ref="SchemePredDecl"/>
        </xs:choice>
        <xs:element ref="SchemePremises"/>
        <xs:element ref="Proposition"/>
        <xs:element ref="Justification"/>
        <xs:element ref="EndPosition"/>
      </xs:sequence>
      <xs:attribute name="schemenr" use="required" type="xs:integer"/>
      <xs:attribute name="vid" type="xs:integer"/>
      <xs:attributeGroup ref="Position"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="SchemePremises">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Proposition"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Definition">
    <xs:complexType>
      <xs:choice>
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="CorrectnessCondition"/>
          <xs:element minOccurs="0" ref="Correctness"/>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="JustifiedProperty"/>
          <xs:element minOccurs="0" ref="Constructor"/>
          <xs:element minOccurs="0" ref="Pattern"/>
        </xs:sequence>
        <xs:sequence>
          <xs:element ref="Constructor"/>
          <xs:element ref="Constructor"/>
          <xs:element maxOccurs="unbounded" ref="Constructor"/>
          <xs:element ref="Registration"/>
          <xs:element minOccurs="0" maxOccurs="unbounded" ref="CorrectnessCondition"/>
          <xs:element minOccurs="0" ref="Correctness"/>
          <xs:element maxOccurs="unbounded" ref="Pattern"/>
        </xs:sequence>
      </xs:choice>
      <xs:attribute name="kind" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="M"/>
            <xs:enumeration value="V"/>
            <xs:enumeration value="R"/>
            <xs:enumeration value="K"/>
            <xs:enumeration value="G"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="redefinition" type="xs:boolean"/>
      <xs:attribute name="expandable" type="xs:boolean"/>
      <xs:attribute name="nr" type="xs:integer"/>
      <xs:attribute name="line" type="xs:integer"/>
      <xs:attribute name="col" type="xs:integer"/>
      <xs:attribute name="vid" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="DefinitionBlock">
    <xs:complexType>
      <xs:sequence>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="Let"/>
          <xs:element ref="Assume"/>
          <xs:element ref="Given"/>
          <xs:group ref="AuxiliaryItem"/>
          <xs:element ref="Canceled"/>
          <xs:element ref="Definition"/>
        </xs:choice>
        <xs:element ref="EndPosition"/>
      </xs:sequence>
      <xs:attributeGroup ref="Position"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Registration">
    <xs:complexType>
      <xs:sequence>
        <xs:choice>
          <xs:element ref="RCluster"/>
          <xs:element ref="FCluster"/>
          <xs:element ref="CCluster"/>
        </xs:choice>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="CorrectnessCondition"/>
        <xs:element minOccurs="0" ref="Correctness"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="IdentifyRegistration">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="IdentifyWithExp"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="CorrectnessCondition"/>
        <xs:element minOccurs="0" ref="Correctness"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="RegistrationBlock">
    <xs:complexType>
      <xs:sequence>
        <xs:choice maxOccurs="unbounded">
          <xs:element ref="Let"/>
          <xs:group ref="AuxiliaryItem"/>
          <xs:element ref="Registration"/>
          <xs:element ref="IdentifyRegistration"/>
          <xs:element ref="Canceled"/>
        </xs:choice>
        <xs:element ref="EndPosition"/>
      </xs:sequence>
      <xs:attributeGroup ref="Position"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="NotationBlock">
    <xs:complexType>
      <xs:sequence>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="Let"/>
          <xs:group ref="AuxiliaryItem"/>
          <xs:element ref="Pattern"/>
        </xs:choice>
        <xs:element ref="EndPosition"/>
      </xs:sequence>
      <xs:attributeGroup ref="Position"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="PolyEval">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Requirement"/>
        <xs:element maxOccurs="unbounded" ref="GeneralPolynomial"/>
      </xs:sequence>
      <xs:attributeGroup ref="Position"/>
      <xs:attribute name="value" type="xs:boolean"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="RationalNr" substitutionGroup="Number">
    <xs:complexType>
      <xs:attribute name="numerator" use="required" type="xs:integer"/>
      <xs:attribute name="denominator" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="Number" abstract="true" substitutionGroup="GeneralPolynomial"/>
  <xs:element name="ComplexNr" substitutionGroup="Number">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="RationalNr"/>
        <xs:element ref="RationalNr"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Monomial">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Number"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="PoweredVar"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="PoweredVar">
    <xs:complexType>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
      <xs:attribute name="exponent" use="required" type="xs:integer"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="GeneralPolynomial" abstract="true"/>
  <xs:element name="Polynomial" substitutionGroup="GeneralPolynomial">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="Monomial"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="SchemeInstantiation">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="FuncInstance"/>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="PredInstance"/>
      </xs:sequence>
      <xs:attributeGroup ref="Position"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="FuncInstance">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="Term"/>
      </xs:sequence>
      <xs:attribute name="instnr" use="required" type="xs:integer"/>
      <xs:attribute name="kind">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="F"/>
            <xs:enumeration value="H"/>
            <xs:enumeration value="G"/>
            <xs:enumeration value="K"/>
            <xs:enumeration value="U"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="nr" type="xs:integer"/>
      <xs:attribute name="absnr" type="xs:integer"/>
      <xs:attribute name="aid" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="PredInstance">
    <xs:complexType>
      <xs:attribute name="instnr" use="required" type="xs:integer"/>
      <xs:attribute name="kind" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="P"/>
            <xs:enumeration value="S"/>
            <xs:enumeration value="V"/>
            <xs:enumeration value="R"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="nr" use="required" type="xs:integer"/>
      <xs:attribute name="absnr" type="xs:integer"/>
      <xs:attribute name="aid" type="xs:string"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
