<?xml version="1.0"?>
<definitions xmlns="http://ii5.ap.siedlce.pl/entish"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://ii5.ap.siedlce.pl/entish 
  definitions.xsd">
<!-- 
     Introduction of basic Entish primitive types, relations, and functions. 
     Last modified April 9, 2003. 
     Authors: S. Ambroszkiewicz and D. Mikulowski.
-->

  <typeDefinition>
    <definiens>
      <typeName>
        <shortName>Agent</shortName>
        <longName>
          http://ii5.ap.siedlce.pl:8080/Entish/properEntish.xml#Agent
        </longName>
      </typeName>
    </definiens>
    <definiendum>
      <documentation>
        <humanInfo>
          agent (i.e., element of type Agent) is a process equipped with state 
          (i.e., element State defined in state.xsd). 
          A constant (defined in formula.xsd) of this type contains agent's short 
          name in the element shortName, 
          and agent's communication address in the element longName.
          It is supposed that all essential data of agent is stored in its state. 
          Agent is dedicated for a single task realization. 
          It is created when there is a task to be realized, and is terminated 
          after the task realization or if the task can not be realized. 
          More details on http://www.ipipan.waw.pl/mas/
        </humanInfo>
      </documentation>
    </definiendum>
  </typeDefinition>

  <typeDefinition>
    <definiens>
      <typeName>
        <shortName>Service</shortName>
        <longName>
         http://ii5.ap.siedlce.pl:8080/Entish/properEntish.xml#Service 
        </longName>
      </typeName>
    </definiens>
    <definiendum>
      <documentation>
        <humanInfo>
          service (i.e., element of type Service) is a process having its own state 
          (i.e., element State defined in state.xsd). 
          It is an application processing data (e-documents). 
          A constant (defined in formula.xsd) of this type contains service's short 
          name in the element shortName, 
          and service's communication address in the element longName.
          Processing e-documents may result in effecting the real world, e.g., 
          purchasing a commodity or withdraw of some amount of money from a bank account, 
          or just taking some physical actions like switching off/on a washing machine. 
          More details on http://www.ipipan.waw.pl/mas/
        </humanInfo>
      </documentation>
    </definiendum>
  </typeDefinition>
  
  <typeDefinition>
    <definiens>
      <typeName>
        <shortName>Time</shortName>
        <longName>
          http://ii5.ap.siedlce.pl:8080/Entish/properEntish.xml#Time 
        </longName>
      </typeName>
    </definiens>
    <definiendum>
      <documentation>
        <humanInfo>
          element of this type is a date and time written according to xsd:dateTime format, 
          e.g.,  ..... . 
          A constant (defined in formula.xsd) of this type contains this string in 
          the element shortName of the constantName, and there is no longName in the constantName.
        </humanInfo>
      </documentation>
    </definiendum>
  </typeDefinition>

  <typeDefinition>
    <definiens>
      <typeName>
        <shortName>Token</shortName>
        <longName>
          http://ii5.ap.siedlce.pl:8080/Entish/properEntish.xml#Token
        </longName>
      </typeName>
    </definiens>
    <definiendum>
      <documentation>
        <humanInfo>
          token is an arbitrary string of type xsd:string. 
          A constant (defined in formula.xsd) of this type contains this string in 
          the element shortName of the constantName, and there is no longName in the constantName. 
          It is used as value of function token(?resource). 
          It is a general way to identify resources (e-docs) of any type on the language level. 
          Note that our language Entish is independent from data format of resources; 
          the format may be arbitrary, e.g., MS Word, XML, txt, binary, and so on.   
        </humanInfo>
      </documentation>
    </definiendum>
  </typeDefinition>
  
  <typeDefinition>
    <definiens>
      <typeName>
        <shortName>Index</shortName>
        <longName>
          http://ii5.ap.siedlce.pl:8080/Entish/properEntish.xml#Index
        </longName>        
      </typeName>
    </definiens>
    <definiendum>
      <documentation>
        <humanInfo>
          element of type Index is a string of type xsd:string. 
          The string is the form of decimal numbers 
          separetad by dots in the same way as IP addresses, e.g., 
          '0.12.3' 
          '34.0.11.45.1'
          '5.34'
          A constant (defined in formula.xsd) of this type contains this string in 
          the element shortName of the constantName, and there is no longName in the constantName.
          It is used as value of function index( ?resource ). 
          The value (index) is associated with an option.  
          Indexes serve to determine interdependencies between options that 
          describe resources in workflow. 
        </humanInfo>
      </documentation>
    </definiendum>
  </typeDefinition>    

  <relationDefinition>
    <definiens>
      <relationName>
        <shortName>intentions</shortName>
        <longName>
          http://ii5.ap.siedlce.pl:8080/Entish/properEntish.xml#intentions
        </longName>
      </relationName>
      <variable>
        <variableName>?agent</variableName>
        <typeName>
          <shortName>Agent</shortName>
        </typeName> 
      </variable>
    </definiens>
    <definiendum>
      <documentation>
        <humanInfo>
          intentions(?agent) is an atomic formula. 
          It is evaluated (only!) locally (i.e., by ?agent).  
          The evaluation returns the disjunction of all formulas 
          from the element plan of the state of the ?agent. 
        </humanInfo>
      </documentation>
    </definiendum>
  </relationDefinition>

  <relationDefinition>
    <definiens>
      <relationName>
        <shortName>true</shortName>
        <longName>
          http://ii5.ap.siedlce.pl:8080/Entish/properEntish.xml#true
        </longName>
      </relationName>
    </definiens>
    <definiendum>
      <documentation>
        <humanInfo>
          true is the relation always true, 
          it corresponds to the Boolean value "true". 
        </humanInfo>
      </documentation>
    </definiendum>
  </relationDefinition>

  <relationDefinition>
    <definiens>
      <relationName>
        <shortName>false</shortName>
        <longName>
          http://ii5.ap.siedlce.pl:8080/Entish/properEntish.xml#false
        </longName>
      </relationName>
    </definiens>
    <definiendum>
      <documentation>
        <humanInfo>
          false is the relation always false, 
          it corresponds to the Boolean value "false". 
        </humanInfo>
      </documentation>
    </definiendum>
  </relationDefinition> 
  
  <relationDefinition>
    <definiens>
        <relationName>
          <shortName>timeout</shortName>
          <longName>
            http://ii5.ap.siedlce.pl:8080/Entish/properEntish.xml#timeout
          </longName>
        </relationName>
        <variable>
          <variableName>
           ?t
          </variableName>
          <typeName>
            <shortName>Time</shortName>
          </typeName>
        </variable>
   </definiens>
   <definiendum>
      <documentation>
        <humanInfo>
          timeout(?t) can be evaluated at any host. 
          It is true if the time ?t is less or equal to the 
          current GMT time at the host. 
        </humanInfo>
      </documentation>
    </definiendum>
  </relationDefinition>

  <relationDefinition>
    <definiens>
      <relationName>
        <shortName>equals</shortName>
        <longName>
          http://ii5.ap.siedlce.pl:8080/Entish/properEntish.xml#equals
        </longName>
      </relationName>
      <variable>
        <variableName>?x</variableName>
      </variable>
      <variable>
        <variableName>?y</variableName>
      </variable>
    </definiens>
    <definiendum>
      <documentation>
        <humanInfo>
          equals(?x, ?y) or more frequently (?x = ?y) is a polimorphic equality 
          relation. It can be evaluated if ?x and ?y are of the same type. 
        </humanInfo>
      </documentation>
    </definiendum>
  </relationDefinition>

  <relationDefinition>
    <definiens>
        <relationName>
          <shortName>formInOperationType</shortName>
          <longName>
            http://ii5.ap.siedlce.pl:8080/Entish/properEntish.xml#formInOperationType
          </longName>
        </relationName>
      <variable>
        <variableName>?service</variableName> 
        <typeName>
          <shortName>Service</shortName>
        </typeName>
      </variable>
    </definiens>
    <definiendum>
      <documentation>
        <humanInfo>
          formInOperationType( ?service ) is an atomic formula to be evaluated only by 
          ?service. The evaluation returns the formula from the formIn element of 
          the state of ?service. 
          The formula describes the precondition necessary for ?service invocation.  
        </humanInfo>
      </documentation>
    </definiendum>
  </relationDefinition>

  <relationDefinition>
    <definiens>
        <relationName>
          <shortName>formOutOperationType</shortName>
          <longName>
            http://ii5.ap.siedlce.pl:8080/Entish/properEntish.xml#formOutOperationType
          </longName>
        </relationName>
      <variable>
        <variableName>?service</variableName>
        <typeName>
          <shortName>Service</shortName>
        </typeName> 
      </variable>
    </definiens>
    <definiendum>
      <documentation>
        <humanInfo>
          formOutOperationType( ?service ) is an atomic formula to be evaluated by 
          ?service. The evaluation returns the formula from the formOut element of 
          the state of ?service. 
          The formula describes the postcondition of ?service invocation, i.e., 
          the result of performing the operation by ?service. 
        </humanInfo>
      </documentation>
    </definiendum>
  </relationDefinition>    

  <relationDefinition>
    <definiens>
      <relationName>
        <shortName>formInCommitment</shortName>
        <longName>
          http://ii5.ap.siedlce.pl:8080/Entish/properEntish.xml#formInCommitment
        </longName>
      </relationName>
      <variable>
        <variableName>?service</variableName>
        <typeName>
          <shortName>Service</shortName>
        </typeName>
      </variable>
    </definiens>
    <definiendum>
      <documentation>
        <humanInfo>
          formInCommitment( ?service ) is an atomic formula evaluated only by ?service. 
          Evaluation returns the disjunction of formulas from formIn elements of 
          all commitment elements of the state of ?service. 
          It describes the precondition of the commitments made by the ?service. 
        </humanInfo>
      </documentation>
    </definiendum>
  </relationDefinition>

  <relationDefinition>
    <definiens>
        <relationName>
          <shortName>formOutCommitment</shortName>
          <longName>
            http://ii5.ap.siedlce.pl:8080/Entish/properEntish.xml#formOutCommitment
          </longName>
        </relationName>
      <variable>
        <variableName>?service</variableName>
        <typeName>
          <shortName>Service</shortName>
        </typeName> 
      </variable>
    </definiens>
    <definiendum>
      <documentation>
        <humanInfo>
          formOutCommitment( ?service ) is an atomic formula evaluated only by ?service. 
          Evaluation returns the conjunction of formulas from formOut elements of 
          all commitment elements of the state of ?service. 
          It describes the postconditions of the commitments made by the ?service
        </humanInfo>
      </documentation>
    </definiendum>
  </relationDefinition>

  <relationDefinition>
    <definiens>
      <relationName>
        <shortName>isIn</shortName>
        <longName>
          http://ii5.ap.siedlce.pl:8080/Entish/properEntish.xml#isIn
        </longName>
      </relationName>
      <variable> 
        <variableName>?resource</variableName> 
      </variable>
      <variable>
        <variableName>?place</variableName>
        <typeName>
          <shortName>Service</shortName>
        </typeName>
        <typeName>
          <shortName>Agent</shortName>
        </typeName>
      </variable>
    </definiens>
    <definiendum>
      <documentation>
        <humanInfo>
          isIn( ?resource, ?place )  
          states that  ?resource is in ?place. 
          It can be evaluated only in ?place.  
          Usually, the ?place denotes either service or agent. 
        </humanInfo>
      </documentation>
    </definiendum>
  </relationDefinition>

  <functionDefinition>
    <definiens>
      <functionName>
        <shortName>token</shortName>
        <longName>
          http://ii5.ap.siedlce.pl:8080/Entish/properEntish.xml#token
        </longName>
      </functionName>
      <typeName>
        <shortName>Token</shortName>
      </typeName>
      <variable> 
        <variableName>?resource</variableName> 
      </variable>
    </definiens>
    <definiendum>
      <documentation>
        <humanInfo>
          function token( ?resource ) returns token determined for ?resource.
        </humanInfo>
      </documentation>
    </definiendum>
  </functionDefinition>
   
  <functionDefinition>
    <definiens>
      <functionName>
        <shortName>index</shortName>
        <longName>
          http://ii5.ap.siedlce.pl:8080/Entish/properEntish.xml#index
        </longName>
      </functionName>
      <typeName>
        <shortName>Index</shortName>
      </typeName>
      <variable> 
        <variableName>?resource</variableName> 
      </variable>
    </definiens>
    <definiendum>
      <documentation>
        <humanInfo>
          function index( ?resource ) returns an index that is associated 
          with an option. Options describe the resources in workflow. 
          Indexes serve to determine interdependencies 
          between the options in workflow. 
        </humanInfo>
      </documentation>
    </definiendum>
  </functionDefinition>
  
</definitions>
