<?xml version="1.0" encoding="UTF-8"?>
<logic>
    <parser-version>2.1</parser-version>
    <description>Modal logic S4 also known as KT4: axiom K + T ([]p-&gt;p:of reflexivity) + 4 ([]p-&gt;[][]p:of transitivity)
Author: Lilac Team
Last update: February 2009</description>
    <connector>
        <connector-name>not</connector-name>
        <arity>1</arity>
        <associative>false</associative>
        <output-format>~ _</output-format>
        <priority>5</priority>
        <connector-comment/>
    </connector>
    <connector>
        <connector-name>and</connector-name>
        <arity>2</arity>
        <associative>true</associative>
        <output-format>_ &amp; _</output-format>
        <priority>4</priority>
        <connector-comment/>
    </connector>
    <connector>
        <connector-name>or</connector-name>
        <arity>2</arity>
        <associative>true</associative>
        <output-format>_ v _</output-format>
        <priority>3</priority>
        <connector-comment/>
    </connector>
    <connector>
        <connector-name>imp</connector-name>
        <arity>2</arity>
        <associative>false</associative>
        <output-format>_ -&gt; _</output-format>
        <priority>0</priority>
        <connector-comment/>
    </connector>
    <connector>
        <connector-name>mTrue</connector-name>
        <arity>1</arity>
        <associative>false</associative>
        <output-format>mTrue _</output-format>
        <priority>0</priority>
        <connector-comment/>
    </connector>
    <connector>
        <connector-name>mFalse</connector-name>
        <arity>1</arity>
        <associative>false</associative>
        <output-format>mFalse _</output-format>
        <priority>0</priority>
        <connector-comment/>
    </connector>
    <rule>
        <rule-name>mTrueAnd</rule-name>
        <condition>
            <condition-name>hasElement</condition-name>
            <parameter>node0</parameter>
            <parameter>mTrue and variable a variable b</parameter>
        </condition>
        <action>
            <action-name>add</action-name>
            <parameter>node0</parameter>
            <parameter>variable a</parameter>
        </action>
        <action>
            <action-name>add</action-name>
            <parameter>node0</parameter>
            <parameter>variable b</parameter>
        </action>
        <rule-comment/>
    </rule>
    <rule>
        <rule-name>loopTest</rule-name>
        <condition>
            <condition-name>isNewNode</condition-name>
            <parameter>node1</parameter>
        </condition>
        <condition>
            <condition-name>isAncestor</condition-name>
            <parameter>node0</parameter>
            <parameter>node1</parameter>
        </condition>
        <condition>
            <condition-name>contains</condition-name>
            <parameter>node0</parameter>
            <parameter>node1</parameter>
        </condition>
        <action>
            <action-name>mark</action-name>
            <parameter>node1</parameter>
            <parameter>CONTAINED</parameter>
        </action>
        <action>
            <action-name>link</action-name>
            <parameter>node1</parameter>
            <parameter>node0</parameter>
            <parameter>Loop</parameter>
        </action>
        <rule-comment/>
    </rule>
    <rule>
        <rule-name>mTrueOr</rule-name>
        <condition>
            <condition-name>hasElement</condition-name>
            <parameter>node</parameter>
            <parameter>mTrue or variable A variable B</parameter>
        </condition>
        <action>
            <action-name>duplicate</action-name>
            <parameter>premodel_copy</parameter>
        </action>
        <action>
            <action-name>add</action-name>
            <parameter>premodel_copy.node</parameter>
            <parameter>mTrue variable B</parameter>
        </action>
        <action>
            <action-name>add</action-name>
            <parameter>node</parameter>
            <parameter>mTrue variable A</parameter>
        </action>
        <rule-comment/>
    </rule>
    <rule>
        <rule-name>mFalseOr</rule-name>
        <condition>
            <condition-name>hasElement</condition-name>
            <parameter>node</parameter>
            <parameter>mFalse or variable A variable B</parameter>
        </condition>
        <action>
            <action-name>add</action-name>
            <parameter>node</parameter>
            <parameter>mFalse variable A</parameter>
        </action>
        <action>
            <action-name>add</action-name>
            <parameter>node</parameter>
            <parameter>mFalse variable B</parameter>
        </action>
        <rule-comment/>
    </rule>
    <rule>
        <rule-name>mFalseAnd</rule-name>
        <condition>
            <condition-name>hasElement</condition-name>
            <parameter>node</parameter>
            <parameter>mFalse and variable a variable b</parameter>
        </condition>
        <action>
            <action-name>duplicate</action-name>
            <parameter>premodel_copy</parameter>
        </action>
        <action>
            <action-name>add</action-name>
            <parameter>premodel_copy.node</parameter>
            <parameter>mFalse variable b</parameter>
        </action>
        <action>
            <action-name>add</action-name>
            <parameter>node</parameter>
            <parameter>mFalse variable a</parameter>
        </action>
        <rule-comment/>
    </rule>
    <rule>
        <rule-name>mTrueImpActual</rule-name>
        <condition>
            <condition-name>hasElement</condition-name>
            <parameter>node</parameter>
            <parameter>mTrue imp variable a variable b</parameter>
        </condition>
        <action>
            <action-name>add</action-name>
            <parameter>node</parameter>
            <parameter>mFalse variable a</parameter>
        </action>
        <action>
            <action-name>duplicate</action-name>
            <parameter>premodel_copy</parameter>
        </action>
        <action>
            <action-name>add</action-name>
            <parameter>premodel_copy.node</parameter>
            <parameter>mTrue variable b</parameter>
        </action>
        <rule-comment/>
    </rule>
    <rule>
        <rule-name>mFalseImp</rule-name>
        <condition>
            <condition-name>hasElement</condition-name>
            <parameter>node</parameter>
            <parameter>mFalse imp variable a variable b</parameter>
        </condition>
        <condition>
            <condition-name>isNotMarked</condition-name>
            <parameter>node</parameter>
            <parameter>CONTAINED</parameter>
        </condition>
        <action>
            <action-name>createNewNode</action-name>
            <parameter>node1</parameter>
        </action>
        <action>
            <action-name>add</action-name>
            <parameter>node1</parameter>
            <parameter>mTrue variable a</parameter>
        </action>
        <action>
            <action-name>add</action-name>
            <parameter>node1</parameter>
            <parameter>mFalse variable b</parameter>
        </action>
        <action>
            <action-name>link</action-name>
            <parameter>node</parameter>
            <parameter>node1</parameter>
            <parameter>R</parameter>
        </action>
        <rule-comment/>
    </rule>
    <rule>
        <rule-name>mTrueImpPropagation</rule-name>
        <condition>
            <condition-name>hasElement</condition-name>
            <parameter>node</parameter>
            <parameter>mTrue imp variable a variable b</parameter>
        </condition>
        <condition>
            <condition-name>isLinked</condition-name>
            <parameter>node</parameter>
            <parameter>node1</parameter>
            <parameter>R</parameter>
        </condition>
        <action>
            <action-name>add</action-name>
            <parameter>node1</parameter>
            <parameter>mTrue imp variable a variable b</parameter>
        </action>
        <rule-comment/>
    </rule>
    <rule>
        <rule-name>mTrueNotActual</rule-name>
        <condition>
            <condition-name>hasElement</condition-name>
            <parameter>node</parameter>
            <parameter>mTrue not variable a</parameter>
        </condition>
        <action>
            <action-name>add</action-name>
            <parameter>node</parameter>
            <parameter>mFalse variable a</parameter>
        </action>
        <rule-comment/>
    </rule>
    <rule>
        <rule-name>mTrueNotPropagation</rule-name>
        <condition>
            <condition-name>hasElement</condition-name>
            <parameter>node</parameter>
            <parameter>mTrue not variable a</parameter>
        </condition>
        <condition>
            <condition-name>isLinked</condition-name>
            <parameter>node</parameter>
            <parameter>node1</parameter>
            <parameter>R</parameter>
        </condition>
        <action>
            <action-name>add</action-name>
            <parameter>node1</parameter>
            <parameter>mTrue not variable a</parameter>
        </action>
        <rule-comment/>
    </rule>
    <rule>
        <rule-name>mFalseNot</rule-name>
        <condition>
            <condition-name>hasElement</condition-name>
            <parameter>node</parameter>
            <parameter>mFalse not variable a</parameter>
        </condition>
        <condition>
            <condition-name>isNotMarked</condition-name>
            <parameter>node</parameter>
            <parameter>CONTAINED</parameter>
        </condition>
        <action>
            <action-name>createNewNode</action-name>
            <parameter>node1</parameter>
        </action>
        <action>
            <action-name>add</action-name>
            <parameter>node1</parameter>
            <parameter>mTrue variable a</parameter>
        </action>
        <action>
            <action-name>link</action-name>
            <parameter>node</parameter>
            <parameter>node1</parameter>
            <parameter>R</parameter>
        </action>
        <rule-comment/>
    </rule>
    <rule>
        <rule-name>mTrueAtomPropagation</rule-name>
        <condition>
            <condition-name>hasElement</condition-name>
            <parameter>node</parameter>
            <parameter>mTrue variable a</parameter>
        </condition>
        <condition>
            <condition-name>isAtomic</condition-name>
            <parameter>variable a</parameter>
        </condition>
        <condition>
            <condition-name>isLinked</condition-name>
            <parameter>node</parameter>
            <parameter>node1</parameter>
            <parameter>R</parameter>
        </condition>
        <action>
            <action-name>add</action-name>
            <parameter>node1</parameter>
            <parameter>mTrue variable a</parameter>
        </action>
        <rule-comment/>
    </rule>
    <rule>
        <rule-name>mTrueAndFalse</rule-name>
        <condition>
            <condition-name>hasElement</condition-name>
            <parameter>node</parameter>
            <parameter>mTrue variable a</parameter>
        </condition>
        <condition>
            <condition-name>hasElement</condition-name>
            <parameter>node</parameter>
            <parameter>mFalse variable a</parameter>
        </condition>
        <action>
            <action-name>add</action-name>
            <parameter>node</parameter>
            <parameter>FALSE</parameter>
        </action>
        <rule-comment/>
    </rule>
    <strategy>
        <strategy-name>Intuit_min_Strategy</strategy-name>
        <strategy-code>repeat firstRule
  repeat
	mTrueAndFalse
	mTrueAnd
	mFalseOr
 	mTrueNotActual
	mTrueImpActual
	mTrueNotPropagation
	mTrueImpPropagation
	mTrueAtomPropagation
	mTrueOr
  end
  loopTest
  mFalseAnd
  mFalseNot
  mFalseImp
end end</strategy-code>
        <strategy-comment/>
    </strategy>
    <main-strategy>Intuit_min_Strategy</main-strategy>
    <testing-formula>
        <formula-name/>
        <formula-code>mFalse imp not not P P</formula-code>
        <formula-comment/>
    </testing-formula>
    <testing-formula>
        <formula-name/>
        <formula-code>mFalse imp P not not P</formula-code>
        <formula-comment/>
    </testing-formula>
    <testing-formula>
        <formula-name/>
        <formula-code>mFalse imp imp imp P Q P P</formula-code>
        <formula-comment/>
    </testing-formula>
</logic>
