<?xml version="1.0"?>

<templates
  tester-domain="http://localhost:15080"
  tester-service="/r3-evolp/"
  tester-dumpster="http://localhost:15080/r3-evolp/dumpster"
  tester-groups="email-agent"
  tester-templates="set-program add-event1 add-event2 add-event3 add-event4 add-event5 add-event6 get-evolution-stable-models">
  <help><![CDATA[
Evolp Scenarios and Tests...
  ]]></help>
  
  
  <!--
==============================================================================
================================ Simple Tests ================================
==============================================================================
-->
  <group
    name="simple-tests"
    title="Simple Tests">
    
    <description><![CDATA[
Just to try the EVOLP app...
    ]]></description>
    
    <template
      name="models-of-input"
      title="Get all evolution stable models of a given program"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Inputs a simple Evolving Logic Program with events (without making the application remember it) and outputs its evolution stable models.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#getModelsOfInput"/>
              <having>
                <Parameter>
                  <is rdf:resource="#programWithEvents"/>
                  <literal rdf:parseType="Literal">
                    a :- not b.
                    b :- not a.
                    newEvents.
                    c.
                    newEvents.
                    not a.
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="models-of-input-limit"
      title="Get at most one evolution stable model of a given program"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Inputs a simple Evolving Logic Program with events (without making the application remember it) and outputs up to 1 evolution stable model.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#getModelsOfInput"/>
              <having>
                <Parameter>
                  <is rdf:resource="#programWithEvents"/>
                  <literal rdf:parseType="Literal">
                    a :- not b.
                    b :- not a.
                    newEvents.
                    c.
                    newEvents.
                    not b.
                  </literal>
                </Parameter>
              </having>
              <having>
                <Parameter>
                  <is rdf:resource="#modelLimit"/>
                  <literal rdf:parseType="Literal">1</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="set-program"
      title="Set the base program"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Sets the base program of an EVOLP node.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#setProgram"/>
              <having>
                <Parameter>
                  <is rdf:resource="#program"/>
                  <literal rdf:parseType="Literal">
                    det.
                    dom(0).
                    c(X) :- dom(X), det.
                    a(X) :- dom(X), not b(X), not det.
                    b(X) :- dom(X), not a(X), not det.
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="add-event-assert"
      title="Add event with assertions"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Adds an event with 2 new assertions.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#addEvent"/>
              <having>
                <Parameter>
                  <is rdf:resource="#event"/>
                  <literal rdf:parseType="Literal">
                    not det.
                    assert(assert(not c(X) :-) :- a(X)) :- dom(X).
                    assert(assert(d(X) :-) :- b(X)) :- dom(X).
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="add-event-nondet"
      title="Add event for non-deterministic result"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Adds an empty event.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#addEvent"/>
              <having>
                <Parameter>
                  <is rdf:resource="#event"/>
                  <literal rdf:parseType="Literal">
                    not det.
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="add-event-det"
      title="Add event for deterministic result"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Adds event containing the fact "det".
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#addEvent"/>
              <having>
                <Parameter>
                  <is rdf:resource="#event"/>
                  <literal rdf:parseType="Literal">
                    det.
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="list-rules"
      title="List the rules in the database"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Lists all rules in the database.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#listRules"/>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="get-evolution-stable-models"
      title="Get all Evolution Stable Models"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Lists the Evolution Stable Models of the current evolution.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#getEvolutionStableModels"/>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="get-evolution-stable-models-limit"
      title="Get at most 1 Evolution Stable Model"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Lists up to 1 Evolution Stable Model of the current evolution.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#getEvolutionStableModels"/>
              <having>
                <Parameter>
                  <is rdf:resource="#modelLimit"/>
                  <literal rdf:parseType="Literal">1</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="get-stable-models"
      title="Get all current Stable Models"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Lists the Stable Models of the current evolution.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#getStableModels"/>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="get-stable-models-step0"
      title="Get Stable Models after the first event"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Lists the Stable Models of the evolution in time step 0.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#getStableModels"/>
              <having>
                <Parameter>
                  <is rdf:resource="#step"/>
                  <literal rdf:parseType="Literal">0</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="get-stable-models-step2-limit1"
      title="Get at most 1 Stable Model after the third event"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Lists up to one Stable Model of the evolution in time step 2.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#getStableModels"/>
              <having>
                <Parameter>
                  <is rdf:resource="#modelLimit"/>
                  <literal rdf:parseType="Literal">1</literal>
                </Parameter>
              </having>
              <having>
                <Parameter>
                  <is rdf:resource="#step"/>
                  <literal rdf:parseType="Literal">2</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="holds-some-c"
      title="Does c(0) hold in some model?"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Answers whether c(0) hold in some model.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
          xmlns:log="http://www.semwebtech.org/languages/2006/logic#">
          <solve>
            <Expression>
              <is rdf:resource="#holdsInSome"/>
              <having>
                <Parameter>
                  <is rdf:resource="#atom"/>
                  <literal rdf:parseType="Literal">c(0)</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="holds-all-c"
      title="Does c(0) hold in all models?"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Answers whether c(0) holds in all models.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#holdsInAll"/>
              <having>
                <Parameter>
                  <is rdf:resource="#atom"/>
                  <literal rdf:parseType="Literal">c(0)</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="holds-all-c-step0"
      title="Does c(0) hold in all models after the first event?"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Answers whether c(0) holds in all models in evolution step 0.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#holdsInAll"/>
              <having>
                <Parameter>
                  <is rdf:resource="#atom"/>
                  <literal rdf:parseType="Literal">c(0)</literal>
                </Parameter>
              </having>
              <having>
                <Parameter>
                  <is rdf:resource="#step"/>
                  <literal rdf:parseType="Literal">0</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="reset"
      title="Reset"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Deletes the base program and events.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#reset"/>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
  </group>
  
  
  <!--
==============================================================================
============================= Unification tests ==============================
==============================================================================
-->
  <group
    name="unification"
    title="Unification tests">
    
    <template
      name="set-program"
      title="Set the base program"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Sets the base program of an EVOLP node.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#setProgram"/>
              <having>
                <Parameter>
                  <is rdf:resource="#program"/>
                  <literal rdf:parseType="Literal">
                    d(1). d(2).
                    a(1, bam, bang).
                    a(X, 2, 3) :- d(X), not b(f(X), X, bla).
                    b(f(X), X, bla) :- d(X), not a(X, 2, 3).
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="list-rules"
      title="List the rules in the database"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Lists all rules in the database.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#listRules"/>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="get-evolution-stable-models"
      title="Get all Evolution Stable Models"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Lists the Evolution Stable Models of the current evolution.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#getEvolutionStableModels"/>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="holds-some"
      title="Query what b(X, Y, Z) hold in some model"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Return all substitutions for X, Y and Z for which b(X, Y, Z) is true in some model.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
          xmlns:log="http://www.semwebtech.org/languages/2006/logic#">
          <solve>
            <Expression>
              <is rdf:resource="#holdsInSome"/>
              <having>
                <Parameter>
                  <is rdf:resource="#atom"/>
                  <literal rdf:parseType="Literal">b(X, Y, Z)</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
          <using>
            <Substitution>
              <binding>
                <Variable>
                  <name>X</name>
                </Variable>
              </binding>
              <binding>
                <Variable>
                  <name>Y</name>
                </Variable>
              </binding>
              <binding>
                <Variable>
                  <name>Z</name>
                </Variable>
              </binding>
            </Substitution>
          </using>
        </Evaluate>
        
      </input>
    </template>
    
    <template
      name="holds-all"
      title="Query what a(X, Y, Z) hold in all models"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Return all substitutions for X, Y and Z for which a(X, Y, Z) is true in all models.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
          xmlns:log="http://www.semwebtech.org/languages/2006/logic#">
          <solve>
            <Expression>
              <is rdf:resource="#holdsInAll"/>
              <having>
                <Parameter>
                  <is rdf:resource="#atom"/>
                  <literal rdf:parseType="Literal">a(X, Y, Z)</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
          <using>
            <Substitution>
              <binding>
                <Variable>
                  <name>X</name>
                </Variable>
              </binding>
              <binding>
                <Variable>
                  <name>Y</name>
                </Variable>
              </binding>
              <binding>
                <Variable>
                  <name>Z</name>
                </Variable>
              </binding>
            </Substitution>
          </using>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="holds-some-ignore-vars"
      title="Query what a(X, _, _) hold in some model"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Return all substitutions for X such that a(X, _, _) is true in some model.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
          xmlns:log="http://www.semwebtech.org/languages/2006/logic#">
          <solve>
            <Expression>
              <is rdf:resource="#holdsInSome"/>
              <having>
                <Parameter>
                  <is rdf:resource="#atom"/>
                  <literal rdf:parseType="Literal">a(X, Y, Z)</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
          <using>
            <Substitution>
              <binding>
                <Variable>
                  <name>X</name>
                </Variable>
              </binding>
            </Substitution>
          </using>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="holds-all-bound-vars"
      title="Query what a(1, Y, _) hold in all models"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Return all substitutions for Y such that a(1, Y, _) is true in all models.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
          xmlns:log="http://www.semwebtech.org/languages/2006/logic#">
          <solve>
            <Expression>
              <is rdf:resource="#holdsInAll"/>
              <having>
                <Parameter>
                  <is rdf:resource="#atom"/>
                  <literal rdf:parseType="Literal">a(X, Y, Z)</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
          <using>
            <Substitution>
              <binding>
                <Variable>
                  <name>X</name>
                  <literal rdf:parseType="Literal">1</literal>
                </Variable>
              </binding>
              <binding>
                <Variable>
                  <name>Y</name>
                </Variable>
              </binding>
            </Substitution>
          </using>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="reset"
      title="Reset"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Deletes the base program and events.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#reset"/>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
  </group>
  
  <!--
==============================================================================
========================== Multiple database tests ===========================
==============================================================================
-->
  <group
    name="databases"
    title="Multiple databases">
    
    <template
      name="set-program1"
      title="Set the base program in database1"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Sets the base program of database1.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#setProgram"/>
              <having>
                <Parameter>
                  <is rdf:resource="#evolpDatabaseID"/>
                  <literal rdf:parseType="Literal">database1</literal>
                </Parameter>
              </having>
              <having>
                <Parameter>
                  <is rdf:resource="#program"/>
                  <literal rdf:parseType="Literal">
                    prog1.
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="set-program2"
      title="Set the base program in database2"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Sets the base program of database2.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#setProgram"/>
              <having>
                <Parameter>
                  <is rdf:resource="#evolpDatabaseID"/>
                  <literal rdf:parseType="Literal">database2</literal>
                </Parameter>
              </having>
              <having>
                <Parameter>
                  <is rdf:resource="#program"/>
                  <literal rdf:parseType="Literal">
                    prog2.
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="list-rules1"
      title="List the rules in database1"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Lists all rules in database1.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#listRules"/>
              <having>
                <Parameter>
                  <is rdf:resource="#evolpDatabaseID"/>
                  <literal rdf:parseType="Literal">database1</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="list-rules2"
      title="List the rules in database2"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Lists all rules in database2.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#listRules"/>
              <having>
                <Parameter>
                  <is rdf:resource="#evolpDatabaseID"/>
                  <literal rdf:parseType="Literal">database2</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="get-evolution-stable-models1"
      title="Get all Evolution Stable Models of database1"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Lists the Evolution Stable Models of database1.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#getEvolutionStableModels"/>
              <having>
                <Parameter>
                  <is rdf:resource="#evolpDatabaseID"/>
                  <literal rdf:parseType="Literal">database1</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="get-evolution-stable-models2"
      title="Get all Evolution Stable Models of database2"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Lists the Evolution Stable Models of database2.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#getEvolutionStableModels"/>
              <having>
                <Parameter>
                  <is rdf:resource="#evolpDatabaseID"/>
                  <literal rdf:parseType="Literal">database2</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="reset1"
      title="Reset database1"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Deletes the base program and events in database1.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#reset"/>
              <having>
                <Parameter>
                  <is rdf:resource="#evolpDatabaseID"/>
                  <literal rdf:parseType="Literal">database1</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="reset2"
      title="Reset database2"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Deletes the base program and events in database2.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#reset"/>
              <having>
                <Parameter>
                  <is rdf:resource="#evolpDatabaseID"/>
                  <literal rdf:parseType="Literal">database2</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
  </group>
  
  
  <!--
==============================================================================
================================= FastFood ===================================
==============================================================================
-->
  <group
    name="fastfood"
    title="Fastfood Example">
    <description><![CDATA[
Just to try the EVOLP app...
    ]]></description>
    
    <template
      name="set-program"
      title="Set the base program"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Sets the base program of an EVOLP node.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#setProgram"/>
              <having>
                <Parameter>
                  <is rdf:resource="#program"/>
                  <literal rdf:parseType="Literal">
                    #domain _customer(C).
                    #domain _drink(T).
                    #domain _meal(M).
                    #domain _meal(M2).
                    #domain _drink(Dr).
                    #domain _drink(Dr2).
                    #domain _for_sale(F).
                    
                    _customer(jack).
                    _customer(jill).
                    
                    _coke(coca_cola).
                    _coke(pepsi_cola).
                    
                    _made_by(coca_cola, coca_cola_company).
                    _made_by(sprite, coca_cola_company).
                    
                    _drink(X) :- _coke(X).
                    _drink(sprite).
                    
                    _burger(hamburger).
                    _burger(cheeseburger).
                    _burger(chicken_burger).
                    
                    _salad(plain_salad).
                    _salad(chicken_salad).
                    
                    _meal(X) :- _burger(X).
                    _meal(X) :- _salad(X).
                    
                    _for_sale(Dr).
                    _for_sale(M).
                    
                    _good(C, F) :- _order(C), _good(F).
                    
                    get_drink(C, Dr) :- _order(C), _good(C, Dr), not _get_other_drink(C, Dr).
                    _get_other_drink(C, Dr) :- get_drink(C, Dr2), neq(Dr, Dr2).
                    
                    get_meal(C, M) :- _order(C), _good(C, M), not _get_other_meal(C, M).
                    _get_other_meal(C, M) :- get_meal(C, M2), neq(M, M2).
                    
                    % manager says:
                    _good(Dr) :- _coke(Dr).
                    _good(M) :- _burger(M).
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="add-event1"
      title="Add the first event"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Adds the first event of the fastfood example.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#addEvent"/>
              <having>
                <Parameter>
                  <is rdf:resource="#event"/>
                  <literal rdf:parseType="Literal">
                    _order(jack).
                    
                    % manager decides only drinks made by coca cola are good
                    assert(not _good(Dr) :-) :- not _made_by(Dr, coca_cola_company).
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="add-event2"
      title="Add the second event"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Adds the second event of the fastfood example.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#addEvent"/>
              <having>
                <Parameter>
                  <is rdf:resource="#event"/>
                  <literal rdf:parseType="Literal">
                    _order(jill).
                    
                    % customer 1 decides he doesn't want hamburgers
                    assert(not _good(jack, hamburger) :-).
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="add-event3"
      title="Add the third event"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Adds the third event of the fastfood example.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#addEvent"/>
              <having>
                <Parameter>
                  <is rdf:resource="#event"/>
                  <literal rdf:parseType="Literal">
                    _order(jack).
                    
                    % jill decides salads are good for her
                    assert(_good(jill, M) :-) :- _salad(M).
                    % and that she wants no other meals than salads
                    assert(not _good(jill, M) :-) :- not _salad(M).
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="add-event4"
      title="Add the fourth event"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Adds the fourth event of the fastfood example.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#addEvent"/>
              <having>
                <Parameter>
                  <is rdf:resource="#event"/>
                  <literal rdf:parseType="Literal">
                    _order(jill).
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="get-evolution-stable-models"
      title="Get Evolution Stable Models"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Lists the Evolution Stable Models of the current evolution.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#getEvolutionStableModels"/>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="get-evolution-stable-models-limit"
      title="Get up to 10 Evolution Stable Models"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Lists up to ten Evolution Stable Models of the current evolution.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#getEvolutionStableModels"/>
              <having>
                <Parameter>
                  <is rdf:resource="#modelLimit"/>
                  <literal rdf:parseType="Literal">10</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="get-stable-models"
      title="Get Stable Models"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Lists the Stable Models of the current evolution.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#getStableModels"/>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="get-stable-models-limit"
      title="Get 1 Stable Model"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Lists one Stable Model of the current evolution.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#getStableModels"/>
              <having>
                <Parameter>
                  <is rdf:resource="#modelLimit"/>
                  <literal rdf:parseType="Literal">1</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="holds-some-drink"
      title="Does get_drink(jill, coca_cola) hold in some model?"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Answers whether get_drink(jill, coca_cola) holds in some model.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#holdsInSome"/>
              <having>
                <Parameter>
                  <is rdf:resource="#atom"/>
                  <literal rdf:parseType="Literal">get_drink(jill, coca_cola)</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="holds-all-drink"
      title="Does get_drink(jill, coca_cola) hold in all models?"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Answers whether get_drink(jill, coca_cola) holds in all models.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#holdsInAll"/>
              <having>
                <Parameter>
                  <is rdf:resource="#atom"/>
                  <literal rdf:parseType="Literal">get_drink(jill, coca_cola)</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="holds-some"
      title="What holds in some model?"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Answers everything that holds in some model.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#holdsInSome"/>
              <having>
                <Parameter>
                  <is rdf:resource="#atom"/>
                  <literal rdf:parseType="Literal">X</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
          <using>
            <Substitution>
              <binding>
                <Variable>
                  <name>X</name>
                </Variable>
              </binding>
            </Substitution>
          </using>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="holds-all"
      title="What holds in all models?"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Answers everything that holds in all models.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#holdsInAll"/>
              <having>
                <Parameter>
                  <is rdf:resource="#atom"/>
                  <literal rdf:parseType="Literal">X</literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
          <using>
            <Substitution>
              <binding>
                <Variable>
                  <name>X</name>
                </Variable>
              </binding>
            </Substitution>
          </using>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="reset"
      title="Reset"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Deletes the base program and events.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#reset"/>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
  </group>
  
  <!--
==============================================================================
=============================== Email Agent ==================================
==============================================================================
-->
<!--  
  <group
    name="email-agent"
    title="Email Agent Example">
    
    <template
      name="set-program"
      title="Set the base program"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Sets the base program of an EVOLP node.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#setProgram"/>
              <having>
                <Parameter>
                  <is rdf:resource="#program"/>
                  <literal rdf:parseType="Literal">
                    #domain _message_domain(M, A, S, B).
                    #domain _message_id(M).
                    #domain _address(A).
                    #domain _address_to(ATo).
                    #domain _subject(S).
                    #domain _body(B).
                    #domain _asb(A, S, B).
                    #domain _folder(F).
                    #domain _folder(Ffrom).
                    #domain _folder(Fto).
                    #domain time(T).
                    
                    _message_domain(1, "a@a", "credit", "some spam text").
                    _message_domain(2, "accountant@c", "hello", "some text").
                    _message_domain(3, "b@d", "free credit", "more spam").
                    _message_domain(4, "d@a", "free credit card", "spam spam spam").
                    _message_domain(5, "accountant@c", "credit", "got your credit").
                    _message_domain(6, "girlfriend@d", "hi", "theater tonight?").
                    _message_domain(7, "accountant@c", "are you there?", "...").
                    _message_domain(8, "a1@e", "abstract", "abs...").
                    _message_domain(9, "a2@e", "abstract", "abs...").
                    _message_domain(10, "a3@e", "abstract", "abs...").
                    _message_domain(11, "x@d", "urgent", "...").
                    _message_domain(12, "accountant@c", "fwd:credit", "...").
                    _message_domain(13, "accountant@c", "fwd:credit", "...").
                    
                    _message_id(W) :- _message_domain(W, X, Y, Z).
                    _address(X) :- _message_domain(W, X, Y, Z).
                    _address_to("b@domain").
                    _subject(Y) :- _message_domain(W, X, Y, Z).
                    _body(Z) :- _message_domain(W, X, Y, Z).
                    _asb(X, Y, Z) :- _message_domain(W, X, Y, Z).
                    
                    _folder(inbox).
                    _folder(abstracts).
                    _folder(cfp).
                    _folder(private).
                    
                    _contains("credit", "credit").
                    _contains("free credit", "credit").
                    _contains("free credit card", "credit").
                    _contains("fwd:credit", "credit").
                    _contains("accountant@c", "accountant").
                    _contains("abstract", "abstract").
                    
                    time(0).
                    assert(time(inc(T)) :-) :- time(T).
                    assert(not time(T) :-) :- time(T).
                    
                    assert(msg(M, A, S, B, T) :-) :- newmsg(M, A, S, B), time(T), not delete(M).
                    assert(in(M, inbox) :-) :- newmsg(M, A, S, B), not move(M), not delete(M).
                    assert(in(M, F) :-) :- newmsg(M, A, S, B), move(M, F).
                    assert(in(M, Fto) :-) :- move(M, Ffrom, Fto), in(M, Ffrom).
                    assert(not in(M, Ffrom) :-) :- move(M, Ffrom, Fto), not in(M, Fto).
                    assert(not in(M, F) :-) :- delete(M), in(M, F).
                    assert(sent(A, S, B, T) :-) :- send(A, S, B), time(T).
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="add-event1"
      title="Add the 1st event"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Adds the 1st event of the email agent example.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#addEvent"/>
              <having>
                <Parameter>
                  <is rdf:resource="#event"/>
                  <literal rdf:parseType="Literal">
                    newmsg(1, "a@a", "credit", "some spam text").
                    newmsg(2, "accountant@c", "hello", "some text").
                    newmsg(3, "b@d", "free credit", "more spam").
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="add-event2"
      title="Add the 2nd event"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Adds the 2nd event of the email agent example.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#addEvent"/>
              <having>
                <Parameter>
                  <is rdf:resource="#event"/>
                  <literal rdf:parseType="Literal">
                    assert(delete(M) :- newmsg(M, A, S, B), spam(A, S, B)).
                    assert(spam(A, S, B) :- _contains(S, "credit")).
                    delete(1).
                    delete(3).
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="add-event3"
      title="Add the 3rd event"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Adds the 3rd event of the email agent example.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#addEvent"/>
              <having>
                <Parameter>
                  <is rdf:resource="#event"/>
                  <literal rdf:parseType="Literal">
                    newmsg(4, "d@a", "free credit card", "spam spam spam").
                    newmsg(5, "accountant@c", "credit", "got your credit").
                    newmsg(6, "girlfriend@d", "hi", "theater tonight?").
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="add-event4"
      title="Add the 4th event"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Adds the 4th event of the email agent example.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#addEvent"/>
              <having>
                <Parameter>
                  <is rdf:resource="#event"/>
                  <literal rdf:parseType="Literal">
                    newmsg(7, "accountant@c", "are you there?", "...").
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    
    <template
      name="add-event5"
      title="Add the 5th event"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Adds the 5th event of the email agent example.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#addEvent"/>
              <having>
                <Parameter>
                  <is rdf:resource="#event"/>
                  <literal rdf:parseType="Literal">
                    assert(not spam(A, S, B) :- contains(A, "accountant")).
                    assert(move(M, abstracts) :- newmsg(M, A, S, B), contains(S, "abstract")).
                    assert(move(M, cfp) :- newmsg(M, A, S, B), contains(S, "cfp")).
                    assert(notify(M) :- newmsg(M, A, S, B), not assert(in(M, inbox)), assert(in(M, F))).
                    assert(send(A, S, "Thanks") :- newmsg(M, A, S, B), contains(S, "abstract")).
                    assert(send(M, ATo) :- forward(M, ATo), newmsg(M, A, S, B)).
                    assert(forward(M, "b@domain") :- newmsg(M, A, "urgent", B)).
                    assert(assert(not msg(M, A, S, B, T) :-) :- purge, msg(M, F, S, B, T), not in_folder(M)).
                    assert(in_folder(M) :- in(M, F)).
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="add-event6"
      title="Add the 6th event"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Adds the 6th event of the email agent example.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#addEvent"/>
              <having>
                <Parameter>
                  <is rdf:resource="#event"/>
                  <literal rdf:parseType="Literal">
                    newmsg(8, "a1@e", "abstract", "abs...").
                    newmsg(9, "a2@e", "abstract", "abs...").
                    newmsg(10, "a3@e", "abstract", "abs...").
                    newmsg(11, "x@d", "urgent", "...").
                    newmsg(12, "accountant@c", "fwd:credit", "...").
                    newmsg(13, "accountant@c", "fwd:credit", "...").
                    move(6, inbox, private).
                    delete(6).
                    purge.
                  </literal>
                </Parameter>
              </having>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
    <template
      name="get-evolution-stable-models"
      title="Get Evolution Stable Models"
      service="/r3-evolp/service"
      soap="http://rewerse.net/I5/NS/2006/r3#Evaluate">
      <description><![CDATA[
Lists the Evolution Stable Models of the current evolution.
      ]]></description>
      <input>
        <Evaluate
          xmlns="http://rewerse.net/I5/NS/2006/r3#"
          xml:base="http://rewerse.net/I5/NS/2006/r3/eval/evolp"
          xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
          <solve>
            <Expression>
              <is rdf:resource="#getEvolutionStableModels"/>
            </Expression>
          </solve>
        </Evaluate>
      </input>
    </template>
    
  </group>-->
</templates>

