diff --git a/PSOA2X/pom.xml b/PSOA2X/pom.xml
index ad65ac27..aa86ebd9 100644
--- a/PSOA2X/pom.xml
+++ b/PSOA2X/pom.xml
@@ -3,7 +3,7 @@
4.0.0
org.ruleml.psoa
PSOA2X
- 1.3
+ 1.4
PSOA2X
UTF-8
@@ -84,7 +84,7 @@
org.ruleml.psoa
PSOACore
- 1.3
+ 1.4
\ No newline at end of file
diff --git a/PSOA2X/src/main/java/org/ruleml/psoa/psoa2x/psoa2prolog/AbstractPrologConverter.java b/PSOA2X/src/main/java/org/ruleml/psoa/psoa2x/psoa2prolog/AbstractPrologConverter.java
index 5dd40166..5621aa4b 100644
--- a/PSOA2X/src/main/java/org/ruleml/psoa/psoa2x/psoa2prolog/AbstractPrologConverter.java
+++ b/PSOA2X/src/main/java/org/ruleml/psoa/psoa2x/psoa2prolog/AbstractPrologConverter.java
@@ -19,7 +19,7 @@ public abstract class AbstractPrologConverter extends PrologTermLangConverter {
{
// Taken from W3C RIF-DTB library
s_builtInMap.put("http://www.w3.org/2007/rif-builtin-predicate#numeric-equal", "\'=:=\'");
- s_builtInMap.put("http://www.w3.org/2007/rif-builtin-predicate#numeric-not-equal", "\'=\\=\'");
+ s_builtInMap.put("http://www.w3.org/2007/rif-builtin-predicate#numeric-not-equal", "\'=\\\\=\'");
s_builtInMap.put("http://www.w3.org/2007/rif-builtin-predicate#numeric-greater-than", "\'>\'");
s_builtInMap.put("http://www.w3.org/2007/rif-builtin-predicate#numeric-greater-than-or-equal", "\'>=\'");
s_builtInMap.put("http://www.w3.org/2007/rif-builtin-predicate#numeric-less-than", "\'<\'");
@@ -58,12 +58,12 @@ public abstract class AbstractPrologConverter extends PrologTermLangConverter {
s_builtInMap.put("https://www.iso.org/standard/21413.html#exp", "exp");
s_builtInMap.put("https://www.iso.org/standard/21413.html#log", "log");
- // Predicates
+ // Predicates
s_builtInMap.put("https://www.iso.org/standard/21413.html#integer", "integer"); // Test if integer
s_builtInMap.put("https://www.iso.org/standard/21413.html#float", "float"); // Test if shortcut or xs:double float number (represented as double) [Currently redundant because of above same-named coerce]
s_builtInMap.put("https://www.iso.org/standard/21413.html#number", "number"); // Test if number
s_builtInMap.put("https://www.iso.org/standard/21413.html#eq", "\'=:=\'"); // XSB's special character tokens ...
- s_builtInMap.put("https://www.iso.org/standard/21413.html#not_eq", "\'=\\=\'"); //
+ s_builtInMap.put("https://www.iso.org/standard/21413.html#not_eq", "\'=\\\\=\'"); //
s_builtInMap.put("https://www.iso.org/standard/21413.html#greater_than", "\'>\'"); //
s_builtInMap.put("https://www.iso.org/standard/21413.html#greater_than_or_eq", "\'>=\'"); //
s_builtInMap.put("https://www.iso.org/standard/21413.html#less_than", "\'<\'"); //
diff --git a/PSOACore/pom.xml b/PSOACore/pom.xml
index 33a8253b..7c57979c 100644
--- a/PSOACore/pom.xml
+++ b/PSOACore/pom.xml
@@ -3,7 +3,7 @@
4.0.0
org.ruleml.psoa
PSOACore
- 1.3
+ 1.4
PSOACore
install
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-KB.psoa
new file mode 100644
index 00000000..2f04faab
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-KB.psoa
@@ -0,0 +1,14 @@
+RuleML(
+ Assert(
+ % atomic-formula expressivity
+ % 2 relationships
+ % single tuple
+ % dependent tuple
+ % implicit tuple
+ % 1 element
+ % constant elements
+ p(a)
+ p(b)
+ % '_p'('_a').
+ % '_p'('_b').
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-answer10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-answer10.psoa
new file mode 100644
index 00000000..15a59f63
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-answer10.psoa
@@ -0,0 +1,4 @@
+?x=_a
+?x=_b
+?x=_c
+?x=_d
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-query10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-query10.psoa
new file mode 100644
index 00000000..9d096e53
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-query10.psoa
@@ -0,0 +1,4 @@
+p(?x)
+% '_p'(Qx).
+% Correctness Criterion: query for the an implicit atom with query variable matching
+% both of two implicit atoms in a KB answers with both bindings.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-KB.psoa
new file mode 100644
index 00000000..c4b3290e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-KB.psoa
@@ -0,0 +1,12 @@
+RuleML(
+ Assert(
+ % atomic-formula expressivity
+ % pn1 (perspeneutral)
+ % single tuple
+ % independent tuple
+ % 3 elements
+ % constant elements
+ p(-[a b c])
+ % tupterm('_1','_a','_b','_c').
+ % memterm('_1','_p').
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-answer3.psoa
new file mode 100644
index 00000000..c25ac348
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-answer3.psoa
@@ -0,0 +1,2 @@
+?x=_a
+?x=_b
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-answer4.psoa
new file mode 100644
index 00000000..7d2f8f05
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-answer4.psoa
@@ -0,0 +1,2 @@
+?x=_a ?y=_b ?z=_c
+?x=_c ?y=_b ?z=_a
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-answer8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-answer8.psoa
new file mode 100644
index 00000000..a8b0338b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-answer8.psoa
@@ -0,0 +1,2 @@
+?x=_1
+?x=_2
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-query3.psoa
new file mode 100644
index 00000000..99f8821b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-query3.psoa
@@ -0,0 +1,5 @@
+p(-[?x b c])
+% (tupterm(Q1,Qx,'_b','_c'),memterm(Q1,'_p')).
+% Correctness Criterion: Query for non-ground atom with independent single tuple of
+% one variable and two constant arguments
+% against KB containing a matching ground atom answers with appropriate substitution.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-query4.psoa
new file mode 100644
index 00000000..d1050a16
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-query4.psoa
@@ -0,0 +1,5 @@
+p(-[?x ?y ?z])
+% (tupterm(Q1,Qx,Qy,Qz),memterm(Q1,'_p')).
+% Correctness Criterion: Query for non-ground atom with independent single tuple of
+% three variable arguments
+% against KB containing a matching ground atom answers with appropriate substitution.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-query8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-query8.psoa
new file mode 100644
index 00000000..7e74be07
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test-meta/atomic_independent-1tuple3/atomic_independent-1tuple3-query8.psoa
@@ -0,0 +1,6 @@
+?x#Top(-[a b c])
+% tupterm(Qx,'_a','_b','_c').
+% Correctness Criterion: Query for ground atom with Top independent single tuple of three constant arguments
+% and masked oid variable
+% against KB containing only the independent version of that ground atom with
+% specific predicate answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/README.txt b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/README.txt
new file mode 100644
index 00000000..17eae00c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/README.txt
@@ -0,0 +1,37 @@
+The directory stores a test suite used for the automated testing of
+PSOA implementations, e.g. by our Java-based PSOATransRun
+testing module.
+
+The testing module expects the following naming conventions:
+Each test case is stored under one
+subdirectory, which we will call .
+Under this subdirectory, there exists
+ one main KB file -KB.psoa,
+ zero or more imported KB files, e.g. written as
+ -KB-importedI.psoa, I=1,2,... (the testing
+ module will ignore all files whose names contain anything
+ between "KB" and ".psoa"),
+ one or more query files -queryJ.psoa, J=1,2,..., and
+ one answer file -answerJ.psoa for each query -queryJ.psoa.
+
+A query/answer pair of files (-queryJ/-answerJ) is called a "unit test".
+
+Query and answer files should be authored such that answer bindings
+use only constants drawn from the KB ("certain answers") instead of
+system-generated ones (e.g., _oidcons, Skolem functions), which can
+vary under different command-line options and implementations.
+
+An Eclipse Run configuration may be used to automate the test execution as follows:
+Run Configurations
+ Main
+ Project: PSOATransRun
+ Main class: org.ruleml.psoa.psoatransrun.PSOATransRunCmdLine
+ Arguments
+ Program Arguments: --test -i ...\git\PSOATransRunComponents\PSOATransRun\test
+OR
+ Program Arguments: --test -s -i ...\git\PSOATransRunComponents\PSOATransRun\test
+
+The following command is used to manually execute
+-queryJ.psoa on -KB.psoa
+(the answers will go to the standard output):
+java -jar PSOATransRunLocal.jar -i -KB.psoa -q -queryJ.psoa
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-KB.psoa
new file mode 100644
index 00000000..cd9a382e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-KB.psoa
@@ -0,0 +1,5 @@
+Document(
+ Group (
+ _a2#_betweenObjRel(_canada _usa _mexico _dim->2 _orient->_northSouth)
+ )
+)
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer10.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer10.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer11.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer11.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer12.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer12.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer12.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer14.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer14.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer14.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer15.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer15.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer15.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer16.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer16.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer16.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer19.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer19.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer19.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer2.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer2.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer20.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer20.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer20.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer21.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer21.psoa
new file mode 100644
index 00000000..8d003daa
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer21.psoa
@@ -0,0 +1 @@
+?X=_canada
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer22.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer22.psoa
new file mode 100644
index 00000000..640d894f
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer22.psoa
@@ -0,0 +1 @@
+?X=_canada ?Z=_mexico
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer23.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer23.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer23.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer24.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer24.psoa
new file mode 100644
index 00000000..f727491d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer24.psoa
@@ -0,0 +1 @@
+?V=_northSouth
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer25.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer25.psoa
new file mode 100644
index 00000000..05500bab
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer25.psoa
@@ -0,0 +1 @@
+?U=2 ?V=_northSouth
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer26.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer26.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer26.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer27.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer27.psoa
new file mode 100644
index 00000000..f727491d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer27.psoa
@@ -0,0 +1 @@
+?V=_northSouth
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer28.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer28.psoa
new file mode 100644
index 00000000..43da7090
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer28.psoa
@@ -0,0 +1 @@
+?S=_dim
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer29.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer29.psoa
new file mode 100644
index 00000000..6e558082
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer29.psoa
@@ -0,0 +1 @@
+?S=_dim ?T=_orient
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer3.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer3.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer30.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer30.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer30.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer31.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer31.psoa
new file mode 100644
index 00000000..b168d8b3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer31.psoa
@@ -0,0 +1 @@
+?I=_a2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer32.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer32.psoa
new file mode 100644
index 00000000..b168d8b3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer32.psoa
@@ -0,0 +1 @@
+?I=_a2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer4.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer4.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer5.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer5.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer6.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer6.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer7.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer7.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer8.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer8.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer9.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer9.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query1.psoa
new file mode 100644
index 00000000..40e84f51
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query1.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel([_canada _usa _mexico] _dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query10.psoa
new file mode 100644
index 00000000..76b32a17
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query10.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query11.psoa
new file mode 100644
index 00000000..b3c8950b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query11.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel()
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query12.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query12.psoa
new file mode 100644
index 00000000..5b1cbcc7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query12.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_usa _canada _mexico _dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query14.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query14.psoa
new file mode 100644
index 00000000..6ac1f321
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query14.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_canada _usa _mexico _dim->3 _orient->_northSouth)
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query15.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query15.psoa
new file mode 100644
index 00000000..ceb83973
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query15.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_canada _usa _mexico _dim->2 _orient->_northSouth _start->1867)
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query16.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query16.psoa
new file mode 100644
index 00000000..4b65afb5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query16.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel([_canada _usa _mexico] [_estonia _latvia _lithuania] _dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query19.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query19.psoa
new file mode 100644
index 00000000..14f3b7dd
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query19.psoa
@@ -0,0 +1 @@
+_a1#_betweenObjRel(_canada _usa _mexico _dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query2.psoa
new file mode 100644
index 00000000..fd5de543
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query2.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_canada _usa _mexico _dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query20.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query20.psoa
new file mode 100644
index 00000000..f32760af
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query20.psoa
@@ -0,0 +1 @@
+_betweenObjRel(_canada _usa _mexico _dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query21.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query21.psoa
new file mode 100644
index 00000000..50118600
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query21.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(?X _usa _mexico _dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query22.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query22.psoa
new file mode 100644
index 00000000..7a24f41a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query22.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(?X _usa ?Z _dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query23.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query23.psoa
new file mode 100644
index 00000000..93d21e46
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query23.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(?X _usa ?X _dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query24.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query24.psoa
new file mode 100644
index 00000000..49c408bb
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query24.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_canada _usa _mexico _dim->2 _orient->?V)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query25.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query25.psoa
new file mode 100644
index 00000000..e9176c79
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query25.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_canada _usa _mexico _dim->?U _orient->?V)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query26.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query26.psoa
new file mode 100644
index 00000000..28d1000a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query26.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_canada _usa _mexico _dim->?U _orient->?U)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query27.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query27.psoa
new file mode 100644
index 00000000..c427d54c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query27.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_canada _usa _mexico _orient->?V)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query28.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query28.psoa
new file mode 100644
index 00000000..7deb6089
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query28.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_canada _usa _mexico ?S->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query29.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query29.psoa
new file mode 100644
index 00000000..3e06720f
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query29.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_canada _usa _mexico ?S->2 ?T->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query3.psoa
new file mode 100644
index 00000000..505c474d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query3.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_alaska _usa _mexico _dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query30.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query30.psoa
new file mode 100644
index 00000000..05c0b378
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query30.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_canada _usa _mexico ?S->2 ?S->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query31.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query31.psoa
new file mode 100644
index 00000000..8d7152a0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query31.psoa
@@ -0,0 +1 @@
+?I#_betweenObjRel(_canada _usa _mexico _dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query32.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query32.psoa
new file mode 100644
index 00000000..02147446
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query32.psoa
@@ -0,0 +1 @@
+?I#_betweenObjRel(_canada _usa _mexico)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query4.psoa
new file mode 100644
index 00000000..b79b65a8
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query4.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_canada _usa _mexico _orient->_northSouth _dim->2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query5.psoa
new file mode 100644
index 00000000..fd5de543
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query5.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_canada _usa _mexico _dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query6.psoa
new file mode 100644
index 00000000..fd5de543
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query6.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_canada _usa _mexico _dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query7.psoa
new file mode 100644
index 00000000..1c03e1ab
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query7.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_canada _usa _mexico _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query8.psoa
new file mode 100644
index 00000000..46c93f2c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query8.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_canada _usa _mexico)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query9.psoa
new file mode 100644
index 00000000..ff535ee6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query9.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-KB.psoa
new file mode 100644
index 00000000..540b5c4d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-KB.psoa
@@ -0,0 +1,9 @@
+Document
+(
+ Group
+ (
+ Forall ?M (
+ Exists ?O ( ?O#_betweenObjRel(_northPole ?M _southPole _dim->2 _orient->_northSouth) )
+ )
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer1.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer1.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer10.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer10.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer11.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer11.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer2.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer2.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer3.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer3.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer4.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer4.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer6.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer6.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer7.psoa
new file mode 100644
index 00000000..1f54e4fe
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer7.psoa
@@ -0,0 +1 @@
+?X=_northPole
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer8.psoa
new file mode 100644
index 00000000..e5179e35
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer8.psoa
@@ -0,0 +1 @@
+?X=_northPole ?Z=_southPole
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer9.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer9.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query1.psoa
new file mode 100644
index 00000000..3dda1019
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query1.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_northPole _usa _southPole _dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query10.psoa
new file mode 100644
index 00000000..27e5e848
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query10.psoa
@@ -0,0 +1 @@
+?#_betweenObjRel(_northPole _usa _southPole _dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query11.psoa
new file mode 100644
index 00000000..31685e8f
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query11.psoa
@@ -0,0 +1 @@
+?#_betweenObjRel(_northPole _usa _southPole)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query2.psoa
new file mode 100644
index 00000000..f1941335
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query2.psoa
@@ -0,0 +1 @@
+_a1#_betweenObjRel(_northPole _usa _southPole _dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query3.psoa
new file mode 100644
index 00000000..d122dc58
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query3.psoa
@@ -0,0 +1 @@
+Exists ?O (?O#_betweenObjRel(_northPole _usa _southPole _dim->2 _orient->_northSouth))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query4.psoa
new file mode 100644
index 00000000..67f18aef
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query4.psoa
@@ -0,0 +1 @@
+Exists ?O (?O#_betweenObjRel(_northPole _eu _southPole _dim->2 _orient->_northSouth))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query6.psoa
new file mode 100644
index 00000000..e00e19de
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query6.psoa
@@ -0,0 +1 @@
+_betweenObjRel(_northPole _usa _southPole _dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query7.psoa
new file mode 100644
index 00000000..4bd40a77
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query7.psoa
@@ -0,0 +1 @@
+Exists ?O (?O#_betweenObjRel(?X _usa _southPole _dim->2 _orient->_northSouth))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query8.psoa
new file mode 100644
index 00000000..7425e7bf
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query8.psoa
@@ -0,0 +1 @@
+Exists ?O (?O#_betweenObjRel(?X _usa ?Z _dim->2 _orient->_northSouth))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query9.psoa
new file mode 100644
index 00000000..b684e562
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query9.psoa
@@ -0,0 +1 @@
+Exists ?O (?O#_betweenObjRel(?X _usa ?X _dim->2 _orient->_northSouth))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-KB.psoa
new file mode 100644
index 00000000..14943b4a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-KB.psoa
@@ -0,0 +1,13 @@
+Document(
+ Group(
+ _a2#_betweenObjRel(_canada _usa _mexico _dim->2 _orient->_northSouth)
+ Forall ?Out1 ?In ?Out2 ?O (
+ _symm(?O)#_betweenObjRel(?Out2 ?In ?Out1 _orient->_southNorth) :-
+ ?O#_betweenObjRel(?Out1 ?In ?Out2 _orient->_northSouth)
+ )
+ Forall ?Out1 ?In ?Out2 ?O (
+ ?In#_GeoUnit(_neighborNorth->?Out1 _neighborSouth->?Out2) :-
+ ?O#_betweenObjRel(?Out1 ?In ?Out2 _orient->_northSouth)
+ )
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer1.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer1.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer10.psoa
new file mode 100644
index 00000000..eda611fb
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer10.psoa
@@ -0,0 +1 @@
+?OutX=_mexico
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer11.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer11.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer12.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer12.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer12.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer13.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer13.psoa
new file mode 100644
index 00000000..c8e68044
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer13.psoa
@@ -0,0 +1 @@
+?I=_usa
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer2.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer2.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer3.psoa
new file mode 100644
index 00000000..8d003daa
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer3.psoa
@@ -0,0 +1 @@
+?X=_canada
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer4.psoa
new file mode 100644
index 00000000..0c019806
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer4.psoa
@@ -0,0 +1 @@
+?I=_symm(_a2) ?X=_canada
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer5.psoa
new file mode 100644
index 00000000..f5d0c7aa
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer5.psoa
@@ -0,0 +1 @@
+?I=_symm(_a2) ?X=_canada ?Z=_mexico
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer6.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer6.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer7.psoa
new file mode 100644
index 00000000..9c0555bf
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer7.psoa
@@ -0,0 +1 @@
+?J=_a2 ?V=_southNorth
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer8.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer8.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer9.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-answer9.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query1.psoa
new file mode 100644
index 00000000..daf78239
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query1.psoa
@@ -0,0 +1 @@
+_symm(_a2)#_betweenObjRel(_mexico _usa _canada _dim->2 _orient->_southNorth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query10.psoa
new file mode 100644
index 00000000..1c5dc8ba
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query10.psoa
@@ -0,0 +1 @@
+_usa#_GeoUnit(_neighborNorth->_canada _neighborSouth->?OutX)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query11.psoa
new file mode 100644
index 00000000..2d0c6db6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query11.psoa
@@ -0,0 +1 @@
+_usa#_GeoUnit(_neighborNorth->_canada)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query12.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query12.psoa
new file mode 100644
index 00000000..31ff6e3c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query12.psoa
@@ -0,0 +1 @@
+_mexico#_GeoUnit(_neighborNorth->_canada)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query13.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query13.psoa
new file mode 100644
index 00000000..e198482f
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query13.psoa
@@ -0,0 +1 @@
+?I#_GeoUnit(_neighborNorth->_canada)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query2.psoa
new file mode 100644
index 00000000..81dc632d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query2.psoa
@@ -0,0 +1 @@
+_symm(_a2)#_betweenObjRel(_mexico _usa _canada _orient->_southNorth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query3.psoa
new file mode 100644
index 00000000..26c9bcc9
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query3.psoa
@@ -0,0 +1 @@
+_symm(_a2)#_betweenObjRel(_mexico _usa ?X _orient->_southNorth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query4.psoa
new file mode 100644
index 00000000..009f87cd
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query4.psoa
@@ -0,0 +1 @@
+?I#_betweenObjRel(_mexico _usa ?X _orient->_southNorth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query5.psoa
new file mode 100644
index 00000000..a70a6029
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query5.psoa
@@ -0,0 +1 @@
+?I#_betweenObjRel(?Z _usa ?X _orient->_southNorth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query6.psoa
new file mode 100644
index 00000000..b16d4a62
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query6.psoa
@@ -0,0 +1 @@
+?I#_betweenObjRel(?X _usa ?X _orient->_southNorth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query7.psoa
new file mode 100644
index 00000000..0e8c3032
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query7.psoa
@@ -0,0 +1 @@
+_symm(?J)#_betweenObjRel(_mexico _usa _canada _orient->?V)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query8.psoa
new file mode 100644
index 00000000..6ee1ca5d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query8.psoa
@@ -0,0 +1 @@
+_usa#_GeoUnit(_neighborNorth->_canada _neighborSouth->_mexico)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query9.psoa
new file mode 100644
index 00000000..42ea9a91
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v1/betweenObjRel-rule-v1-query9.psoa
@@ -0,0 +1 @@
+_usa#_GeoUnit(_neighborSouth->_mexico _neighborNorth->_canada)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-KB.psoa
new file mode 100644
index 00000000..5572458a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-KB.psoa
@@ -0,0 +1,14 @@
+Document(
+ Group (
+ _a2#_betweenObjRel(_canada _usa _mexico _dim->2 _orient->_northSouth)
+ _a3#_betweenObjRel(_pacific _usa _atlantic _dim->2 _orient->_westEast)
+
+ Forall ?Out1 ?Out2 ?Out3 ?Out4 ?In ?O1 ?O2 (
+ Exists ?O (
+ ?O#_compassRose(?In _west->?Out3 _north->?Out1 _east->?Out4 _south->?Out2)
+ ) :-
+ And(?O1#_betweenObjRel(?Out1 ?In ?Out2 _orient->_northSouth)
+ ?O2#_betweenObjRel(?Out3 ?In ?Out4 _orient->_westEast))
+ )
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-answer1.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-answer1.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-answer2.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-answer2.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-answer3.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-answer3.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-answer4.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-answer4.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-answer5.psoa
new file mode 100644
index 00000000..1ec43fb3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-answer5.psoa
@@ -0,0 +1 @@
+?W=_pacific ?N=_canada ?E=_atlantic ?S=_mexico ?C=_usa
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-query1.psoa
new file mode 100644
index 00000000..c4cad2cf
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-query1.psoa
@@ -0,0 +1 @@
+_a4#_compassRose(_usa _west->_pacific _north->_canada _east->_atlantic _south->_mexico)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-query2.psoa
new file mode 100644
index 00000000..d896047f
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-query2.psoa
@@ -0,0 +1 @@
+Exists ?O (?O#_compassRose(_usa _west->_pacific _north->_canada _east->_atlantic _south->_mexico))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-query3.psoa
new file mode 100644
index 00000000..5297d985
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-query3.psoa
@@ -0,0 +1 @@
+Exists ?O (?O#_compassRose(_south->_mexico _north->_canada))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-query4.psoa
new file mode 100644
index 00000000..16f30472
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-query4.psoa
@@ -0,0 +1 @@
+?#_compassRose(_usa _west->_pacific _north->_canada _east->_atlantic _south->_mexico)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-query5.psoa
new file mode 100644
index 00000000..7271e9a1
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/betweenObjRel-rule-v2/betweenObjRel-rule-v2-query5.psoa
@@ -0,0 +1 @@
+?#_compassRose(?C _west->?W _north->?N _east->?E _south->?S)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/class_membership/class_membership-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/class_membership/class_membership-KB.psoa
new file mode 100644
index 00000000..f7815329
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/class_membership/class_membership-KB.psoa
@@ -0,0 +1,13 @@
+Document(
+ Prefix(fam: )
+
+ Group (
+ Forall ?X ?Y (
+ fam:isFatherOf(?Y ?X) :- And (fam:isChildOf(?X ?Y) ?Y#fam:Male )
+ )
+
+ fam:isChildOf(fam:Adrian fam:Uwe)
+ fam:Adrian#fam:Male
+ fam:Uwe#fam:Male
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/class_membership/class_membership-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/class_membership/class_membership-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/class_membership/class_membership-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/class_membership/class_membership-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/class_membership/class_membership-query1.psoa
new file mode 100644
index 00000000..fc548f41
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/class_membership/class_membership-query1.psoa
@@ -0,0 +1 @@
+fam:isFatherOf(fam:Uwe fam:Adrian)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-KB.psoa
new file mode 100644
index 00000000..28b83735
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-KB.psoa
@@ -0,0 +1,18 @@
+Document(
+ Prefix(: )
+ Prefix(test: )
+ Prefix(xs: )
+
+ Group
+ (
+ _p1(3)
+ _p1("4"^^xs:integer)
+ _p1("5"^^)
+ :p2(3.5)
+ test:p2("4.5"^^xs:double)
+ ("5.5"^^)
+ :p3(:f("str1"))
+ :p3(:f("str2"^^xs:string))
+ :p3(:f("str3"^^))
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer10.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer10.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer11.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer11.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer12.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer12.psoa
new file mode 100644
index 00000000..933ab4a2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer12.psoa
@@ -0,0 +1,3 @@
+?x=("str1")
+?x=("str2")
+?x=("str3")
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer2.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer2.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer3.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer3.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer4.psoa
new file mode 100644
index 00000000..9e73ca67
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer4.psoa
@@ -0,0 +1,3 @@
+?x=3
+?x=4
+?x=5
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer5.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer5.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer6.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer6.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer7.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer7.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer8.psoa
new file mode 100644
index 00000000..0454ee69
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer8.psoa
@@ -0,0 +1,3 @@
+?x=3.5
+?x=4.5
+?x=5.5
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer9.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-answer9.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query1.psoa
new file mode 100644
index 00000000..0cda85cc
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query1.psoa
@@ -0,0 +1 @@
+And(_p1(3) _p1(4) _p1(5))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query10.psoa
new file mode 100644
index 00000000..d77fd980
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query10.psoa
@@ -0,0 +1 @@
+And(:p3(:f("str1"^^xs:string)) :p3(:f("str2"^^xs:string)) :p3(:f("str3"^^xs:string)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query11.psoa
new file mode 100644
index 00000000..d53de930
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query11.psoa
@@ -0,0 +1,5 @@
+And(
+ :p3(:f("str1"^^))
+ :p3(:f("str2"^^))
+ :p3(:f("str3"^^))
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query12.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query12.psoa
new file mode 100644
index 00000000..51c886b9
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query12.psoa
@@ -0,0 +1 @@
+:p3(?x)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query2.psoa
new file mode 100644
index 00000000..ef504a88
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query2.psoa
@@ -0,0 +1 @@
+And(_p1("3"^^xs:integer) _p1("4"^^xs:integer) _p1("5"^^xs:integer))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query3.psoa
new file mode 100644
index 00000000..1b1501b8
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query3.psoa
@@ -0,0 +1,5 @@
+And(
+ _p1("3"^^)
+ _p1("4"^^)
+ _p1("5"^^)
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query4.psoa
new file mode 100644
index 00000000..f3ab93d6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query4.psoa
@@ -0,0 +1 @@
+_p1(?x)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query5.psoa
new file mode 100644
index 00000000..83526516
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query5.psoa
@@ -0,0 +1 @@
+And(:p2(3.5) :p2(4.5) :p2(5.5))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query6.psoa
new file mode 100644
index 00000000..55eeec68
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query6.psoa
@@ -0,0 +1 @@
+And(test:p2("3.5"^^xs:double) test:p2("4.5"^^xs:double) test:p2("5.5"^^xs:double))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query7.psoa
new file mode 100644
index 00000000..253c717c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query7.psoa
@@ -0,0 +1,5 @@
+And(
+ ("3.5"^^)
+ ("4.5"^^)
+ ("5.5"^^)
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query8.psoa
new file mode 100644
index 00000000..e1074c1a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query8.psoa
@@ -0,0 +1 @@
+:p2(?x)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query9.psoa
new file mode 100644
index 00000000..d2c57a28
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/constant_variation/constant_variation-query9.psoa
@@ -0,0 +1 @@
+And(:p3(:f("str1")) :p3(:f("str2")) :p3(:f("str3")))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/discount/discount-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/discount/discount-KB.psoa
new file mode 100644
index 00000000..f110ae65
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/discount/discount-KB.psoa
@@ -0,0 +1,26 @@
+RuleML (
+ Assert (
+
+ Forall ?customer ?product (
+ discount(?customer ?product "5.0 percent") :-
+ And(premium(?customer) regular(?product))
+ )
+
+ Forall ?customer ?product (
+ discount(?customer ?product "7.5 percent") :-
+ And(premium(?customer) luxury(?product))
+ )
+
+ Forall ?customer (
+ premium(?customer) :-
+ spending(?customer "min 5000 euro" "previous year")
+ )
+
+ luxury(Porsche)
+
+ regular(Honda)
+
+ spending("Peter Miller" "min 5000 euro" "previous year")
+
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/discount/discount-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/discount/discount-answer1.psoa
new file mode 100644
index 00000000..24969aee
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/discount/discount-answer1.psoa
@@ -0,0 +1,2 @@
+?customer="Peter Miller" ?product=_Honda ?amount="5.0 percent"
+?customer="Peter Miller" ?product=_Porsche ?amount="7.5 percent"
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/discount/discount-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/discount/discount-query1.psoa
new file mode 100644
index 00000000..bd827f62
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/discount/discount-query1.psoa
@@ -0,0 +1 @@
+discount(?customer ?product ?amount)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-KB.psoa
new file mode 100644
index 00000000..1a27af68
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-KB.psoa
@@ -0,0 +1,40 @@
+RuleML (
+ Assert (
+ o#p()
+ o#p(+[])
+ o#p(-[])
+ o#p(a)
+ o#p(+[a])
+ o#p(-[a])
+ o#p(a b)
+ o#p(+[a b])
+ o#p(-[a b])
+ o#p(a b c)
+ o#p(+[a b c])
+ o#p(-[a b c])
+ o#p(+[] +[a] +[a b] +[a b c] -[] -[a] -[a b] -[a b c])
+ Forall ?o (
+ ?o#q(+[]) :-
+ And(?o#p(-[])
+ o#p(+[] +[a] +[a b] +[a b c] -[] -[a] -[a b] -[a b c])
+ )
+ )
+ r()
+ r(+[])
+ r(-[])
+ r(a)
+ r(+[a])
+ r(-[a])
+ r(a b)
+ r(+[a b])
+ r(-[a b])
+ r(a b c)
+ r(+[a b c])
+ r(-[a b c])
+ r(+[] +[a] +[a b] +[a b c] -[] -[a] -[a b] -[a b c])
+ s(+[]) :-
+ And(r(-[])
+ r(+[] +[a] +[a b] +[a b c] -[] -[a] -[a b] -[a b c])
+ )
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-answer2.psoa
new file mode 100644
index 00000000..68432be2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-answer2.psoa
@@ -0,0 +1 @@
+?o=_o ?x=_a
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-answer3.psoa
new file mode 100644
index 00000000..f604b45e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-answer3.psoa
@@ -0,0 +1 @@
+?o=_o
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-answer4.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-answer4.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-answer5.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-answer5.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-query1.psoa
new file mode 100644
index 00000000..c2b5f925
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-query1.psoa
@@ -0,0 +1 @@
+And(o#p() o#p(+[]) o#p(-[]) o#p(+[a]) o#p(a) o#p(+[] +[a] -[] -[a]))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-query2.psoa
new file mode 100644
index 00000000..fd7f37ea
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-query2.psoa
@@ -0,0 +1 @@
+And(?o#p() ?o#p(+[]) ?o#p(-[]) ?o#p(?x) o#p(+[?x]))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-query3.psoa
new file mode 100644
index 00000000..653c6a21
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-query3.psoa
@@ -0,0 +1 @@
+?o#q(+[])
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-query4.psoa
new file mode 100644
index 00000000..dd2c3c18
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-query4.psoa
@@ -0,0 +1 @@
+And(r() r(+[]) r(-[]) r(+[a]) r(a) r(+[] +[a] -[] -[a]))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-query5.psoa
new file mode 100644
index 00000000..d816fa5d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/empty-tuples/empty-tuples-query5.psoa
@@ -0,0 +1 @@
+s(+[])
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/entail_everything/entail-everything-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/entail_everything/entail-everything-KB.psoa
new file mode 100644
index 00000000..f5408343
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/entail_everything/entail-everything-KB.psoa
@@ -0,0 +1,6 @@
+Document(
+ Prefix(ex: )
+ Group(
+ Forall ?x ( ex:A(?x) )
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/entail_everything/entail-everything-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/entail_everything/entail-everything-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/entail_everything/entail-everything-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/entail_everything/entail-everything-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/entail_everything/entail-everything-query1.psoa
new file mode 100644
index 00000000..e298baa9
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/entail_everything/entail-everything-query1.psoa
@@ -0,0 +1,5 @@
+And(
+ ex:A(2)
+ ex:A("any string")
+ ex:A()
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-KB.psoa
new file mode 100644
index 00000000..5d4c1ff5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-KB.psoa
@@ -0,0 +1,6 @@
+Document(
+ Prefix(func: )
+
+ Group(
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-answer1.psoa
new file mode 100644
index 00000000..72fae6e6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-answer1.psoa
@@ -0,0 +1 @@
+?X=255
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-answer2.psoa
new file mode 100644
index 00000000..fe0de43e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-answer2.psoa
@@ -0,0 +1 @@
+?X=-1.5
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-answer3.psoa
new file mode 100644
index 00000000..e7aeb0bf
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-answer3.psoa
@@ -0,0 +1 @@
+?X=16256
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-answer4.psoa
new file mode 100644
index 00000000..735cbd5b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-answer4.psoa
@@ -0,0 +1 @@
+?x1=42.0 ?x2=31.75
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-answer5.psoa
new file mode 100644
index 00000000..9ad39649
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-answer5.psoa
@@ -0,0 +1 @@
+?x1=-5334 ?x2=-46.0
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-query1.psoa
new file mode 100644
index 00000000..008c1f37
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-query1.psoa
@@ -0,0 +1 @@
+?X=External(func:numeric-add(127 128))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-query2.psoa
new file mode 100644
index 00000000..57d488cb
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-query2.psoa
@@ -0,0 +1 @@
+?X=External(func:numeric-subtract(127 128.5))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-query3.psoa
new file mode 100644
index 00000000..897df5ae
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-query3.psoa
@@ -0,0 +1 @@
+?X=External(func:numeric-multiply(127 128))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-query4.psoa
new file mode 100644
index 00000000..c7f41843
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-query4.psoa
@@ -0,0 +1,4 @@
+And(
+ ?x1 = External(func:numeric-divide(126 3))
+ ?x2 = External(func:numeric-divide(127 4))
+)
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-query5.psoa
new file mode 100644
index 00000000..46a1fa6b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function1/external-function1-query5.psoa
@@ -0,0 +1,4 @@
+And(
+ ?x1=External(func:numeric-multiply(127 External(func:numeric-subtract(-32 10))))
+ ?x2=External(func:numeric-multiply(12 func:numeric-divide(23 -6)))
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-KB.psoa
new file mode 100644
index 00000000..ed63ec05
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-KB.psoa
@@ -0,0 +1,20 @@
+Document (
+ Prefix(func: )
+
+ Group (
+ Forall ?X ?Y ?Z (
+ _qadd(?Z) :- And(_toAdd(?X ?Y) ?Z=External(func:numeric-add(?X ?Y)))
+ )
+ _toAdd(2 5)
+
+ Forall ?X ?Y ?Z (
+ _qsub(?Z) :- And(_toSub(_op1->?X _op2->?Y) ?Z=External(func:numeric-subtract(?X ?Y)))
+ )
+ _toSub(_op1->5 _op2->2)
+
+ Forall ?X ?Y ?Z (
+ _qmul(?Z) :- And(_toMul(?X _p->?Y) ?Z=External(func:numeric-multiply(?X ?Y)))
+ )
+ _toMul(3 _p->5)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-answer1.psoa
new file mode 100644
index 00000000..9ee1760c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-answer1.psoa
@@ -0,0 +1 @@
+?X=7
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-answer2.psoa
new file mode 100644
index 00000000..569d9a90
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-answer2.psoa
@@ -0,0 +1 @@
+?X=3
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-answer3.psoa
new file mode 100644
index 00000000..75484170
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-answer3.psoa
@@ -0,0 +1 @@
+?X=15
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-query1.psoa
new file mode 100644
index 00000000..99eba961
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-query1.psoa
@@ -0,0 +1 @@
+_qadd(?X)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-query2.psoa
new file mode 100644
index 00000000..fd547802
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-query2.psoa
@@ -0,0 +1 @@
+_qsub(?X)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-query3.psoa
new file mode 100644
index 00000000..7e26f8bb
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-function2/external-function2-query3.psoa
@@ -0,0 +1 @@
+_qmul(?X)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-KB.psoa
new file mode 100644
index 00000000..0b3ca981
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-KB.psoa
@@ -0,0 +1,12 @@
+Document (
+ Prefix(isopl: )
+ Prefix(: )
+
+ Group (
+ Forall ?X1 ?X2 ?X3 (
+ :inRange(?X1 ?X2 ?X3) :-
+ And(External(isopl:greater_than_or_eq(?X1 ?X2))
+ External(isopl:less_than_or_eq(?X1 ?X3)))
+ )
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer1.psoa
new file mode 100644
index 00000000..09ce7c07
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer1.psoa
@@ -0,0 +1 @@
+?X1=60 ?X2=-1 ?X3=8 ?X4=6
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer10.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer10.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer11.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer11.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer2.psoa
new file mode 100644
index 00000000..b82e65d7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer2.psoa
@@ -0,0 +1 @@
+?X1=2 ?X2=-15 ?X3=2.5 ?X4=-0.25
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer3.psoa
new file mode 100644
index 00000000..f21b4892
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer3.psoa
@@ -0,0 +1 @@
+?X1=6 ?X2=-3 ?X3=5 ?X4=-2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer4.psoa
new file mode 100644
index 00000000..917886bd
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer4.psoa
@@ -0,0 +1 @@
+?X1=6 ?X2=7 ?X3=-1 ?X4=-2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer5.psoa
new file mode 100644
index 00000000..54322e5c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer5.psoa
@@ -0,0 +1 @@
+?X1=200 ?X2=50.25 ?X3=0
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer6.psoa
new file mode 100644
index 00000000..3516ca97
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer6.psoa
@@ -0,0 +1 @@
+?X1=-1 ?X2=1.0 ?X3=0 ?X4=3.0
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer7.psoa
new file mode 100644
index 00000000..e26ae4fd
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer7.psoa
@@ -0,0 +1 @@
+?X1=20 ?X2=-15 ?X3=19 ?X4=0
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer8.psoa
new file mode 100644
index 00000000..301790d3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer8.psoa
@@ -0,0 +1 @@
+?X1=2 ?X2=-4 ?X3=1 ?X4=-2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer9.psoa
new file mode 100644
index 00000000..8aeccad7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-answer9.psoa
@@ -0,0 +1 @@
+?X1=16 ?X2=2.0 ?X3=0.5 ?X4=2.0 ?X5=10.5
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query1.psoa
new file mode 100644
index 00000000..5a4a278a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query1.psoa
@@ -0,0 +1 @@
+And(?X1=External(isopl:add(10 50)) ?X2=External(isopl:add(20 -21)) ?X3=External(isopl:sub(2 -6)) ?X4=External(isopl:sub(-4 -10)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query10.psoa
new file mode 100644
index 00000000..af9cc51f
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query10.psoa
@@ -0,0 +1 @@
+And(:inRange(External(isopl:sin(3.14)) 0.0015 0.0016) :inRange(External(isopl:sin(-10)) 0.5440 0.5441) :inRange(External(isopl:cos(5)) 0.2836 0.2837) :inRange(External(isopl:cos(-90)) -0.4481 -0.4480) :inRange(External(isopl:atan(34)) 1.5413 1.5414) :inRange(External(isopl:atan(-180)) -1.5653 -1.5652)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query11.psoa
new file mode 100644
index 00000000..05916e08
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query11.psoa
@@ -0,0 +1 @@
+And(:inRange(External(isopl:exp(1)) 2.7182 2.7183) :inRange (External(isopl:exp(2)) 7.3890 7.3891) External(isopl:eq(isopl:log(isopl:exp(1)) 1)) :inRange (External(isopl:log(10)) 2.3025 2.3026))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query2.psoa
new file mode 100644
index 00000000..18b378b1
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query2.psoa
@@ -0,0 +1 @@
+And(?X1=External(isopl:int-div(25 10)) ?X2=External(isopl:int-div(-47 3)) ?X3=External(isopl:div(5 2)) ?X4=External(isopl:div(1 -4)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query3.psoa
new file mode 100644
index 00000000..a00b8801
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query3.psoa
@@ -0,0 +1 @@
+And(?X1=External(isopl:rem(16 10)) ?X2=External(isopl:rem(-23 10)) ?X3=External(isopl:rem(35 -6)) ?X4=External(isopl:rem(-12 -5)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query4.psoa
new file mode 100644
index 00000000..792fe39e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query4.psoa
@@ -0,0 +1,2 @@
+And(?X1=External(isopl:mod(16 10)) ?X2=External(isopl:mod(-23 10)) ?X3=External(isopl:mod(35 -6)) ?X4=External(isopl:mod(-12 -5)))
+
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query5.psoa
new file mode 100644
index 00000000..709a34bb
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query5.psoa
@@ -0,0 +1 @@
+And(?X1=External(isopl:abs(-200)) ?X2=External(isopl:abs(50.25)) ?X3=External(isopl:abs(0)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query6.psoa
new file mode 100644
index 00000000..f6534376
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query6.psoa
@@ -0,0 +1 @@
+And(?X1=External(isopl:sign(-200)) ?X2=External(isopl:sign(25.5)) ?X3=External(isopl:sign(0)) ?X4=External(isopl:float(3)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query7.psoa
new file mode 100644
index 00000000..5d2aaf41
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query7.psoa
@@ -0,0 +1 @@
+And(?X1=External(isopl:truncate(20.64)) ?X2=External(isopl:truncate(-15.40)) ?X3=External(isopl:round(19.4)) ?X4=External(isopl:round(-0.10)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query8.psoa
new file mode 100644
index 00000000..41afc04f
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query8.psoa
@@ -0,0 +1 @@
+And(?X1=External(isopl:floor(2.40)) ?X2=External(isopl:floor(-3.33)) ?X3=External(isopl:ceiling(0.10)) ?X4=External(isopl:ceiling(-2.99)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query9.psoa
new file mode 100644
index 00000000..e29e4f84
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-function/external-isopl-function-query9.psoa
@@ -0,0 +1 @@
+And(?X1=External(isopl:power(2 4)) ?X2=External(isopl:power(4 0.5)) ?X3=External(isopl:power(2 -1)) ?X4=External(isopl:sqrt(4)) ?X5=External(isopl:sqrt(110.25)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-KB.psoa
new file mode 100644
index 00000000..0b3ca981
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-KB.psoa
@@ -0,0 +1,12 @@
+Document (
+ Prefix(isopl: )
+ Prefix(: )
+
+ Group (
+ Forall ?X1 ?X2 ?X3 (
+ :inRange(?X1 ?X2 ?X3) :-
+ And(External(isopl:greater_than_or_eq(?X1 ?X2))
+ External(isopl:less_than_or_eq(?X1 ?X3)))
+ )
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer2.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer2.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer3.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer3.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer4.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer4.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer5.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer5.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer6.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer6.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer7.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-answer7.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query1.psoa
new file mode 100644
index 00000000..7f384ac4
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query1.psoa
@@ -0,0 +1 @@
+And(External(isopl:integer(10)) External(isopl:integer(-42)) External(isopl:float(2.356)) External(isopl:float(-3.145)) External(isopl:number(42)) External(isopl:number(42.646)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query2.psoa
new file mode 100644
index 00000000..a9287bed
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query2.psoa
@@ -0,0 +1 @@
+And(External(isopl:eq(10 10)) External(isopl:eq(-42 -42)) External(isopl:eq(42.50 42.50)) External(isopl:eq(-64.8 -64.8)) External(isopl:eq(2.0 2)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query3.psoa
new file mode 100644
index 00000000..583c381b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query3.psoa
@@ -0,0 +1 @@
+And(External(isopl:not_eq(10 -10)) External(isopl:not_eq(42 43)) External(isopl:not_eq(42.50 40)) External(isopl:not_eq(64.8 -64.8)) External(isopl:not_eq(40.50 40.70)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query4.psoa
new file mode 100644
index 00000000..422ea284
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query4.psoa
@@ -0,0 +1 @@
+And(External(isopl:greater_than(42 0)) External(isopl:greater_than(42 -42)) External(isopl:greater_than(-1 -10)) External(isopl:greater_than(42 10.50)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query5.psoa
new file mode 100644
index 00000000..e504c0e1
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query5.psoa
@@ -0,0 +1 @@
+And(External(isopl:greater_than_or_eq(42 0)) External(isopl:greater_than_or_eq(42 -42)) External(isopl:greater_than_or_eq(-1 -10)) External(isopl:greater_than_or_eq(42 10.50)) External(isopl:greater_than_or_eq(42 42)) External(isopl:greater_than_or_eq(42.5 42.5)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query6.psoa
new file mode 100644
index 00000000..2bb06da0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query6.psoa
@@ -0,0 +1 @@
+And(External(isopl:less_than(0 42)) External(isopl:less_than(-42 42)) External(isopl:less_than(-10 -1)) External(isopl:less_than(10.50 42 )))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query7.psoa
new file mode 100644
index 00000000..561a4816
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-isopl-predicate/external-isopl-predicate-query7.psoa
@@ -0,0 +1 @@
+And(External(isopl:less_than_or_eq(0 42)) External(isopl:less_than_or_eq(-42 42)) External(isopl:less_than_or_eq(-10 -1)) External(isopl:less_than_or_eq(10.50 42 )) External(isopl:less_than_or_eq(42 42)) External(isopl:less_than_or_eq(42.5 42.5)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-KB.psoa
new file mode 100644
index 00000000..bd9a426d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-KB.psoa
@@ -0,0 +1,7 @@
+Document (
+ Prefix(pred: )
+ Prefix(func: )
+
+ Group (
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-answer2.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-answer2.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-answer3.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-answer3.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-answer4.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-answer4.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-query1.psoa
new file mode 100644
index 00000000..7ba1d010
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-query1.psoa
@@ -0,0 +1 @@
+Exists ?X (And(?X=External(func:numeric-add(100 101)) External(pred:numeric-equal(201 ?X))))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-query2.psoa
new file mode 100644
index 00000000..80cbc786
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-query2.psoa
@@ -0,0 +1 @@
+External(pred:numeric-less-than(13 23))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-query3.psoa
new file mode 100644
index 00000000..ba03c16a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-query3.psoa
@@ -0,0 +1 @@
+External(pred:numeric-greater-than(101 100))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-query4.psoa
new file mode 100644
index 00000000..2ea41d79
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate1/external-predicate1-query4.psoa
@@ -0,0 +1 @@
+Exists ?X (And(?X=External(func:numeric-add(200 50)) External(pred:numeric-less-than-or-equal(?X 101))))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate2/external-predicate2-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate2/external-predicate2-KB.psoa
new file mode 100644
index 00000000..57de44d7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate2/external-predicate2-KB.psoa
@@ -0,0 +1,20 @@
+Document (
+ Prefix(pred: )
+
+ Group (
+ Forall ?X (
+ ?X#_highIncomePerson :- And(?X#_Person(_income->?I)
+ External(pred:numeric-greater-than-or-equal(?I 100000)))
+ )
+ Forall ?X (
+ ?X#_lowIncomePerson :- And(?X#_Person(_income->?I)
+ External(pred:numeric-less-than(?I 10000)))
+ )
+ _Tim#_Person(_income->5000)
+ _Jane#_Person(_income->8000)
+ _Jim#_Person(_income->50000)
+ _Gray#_Person(_income->99999)
+ _Mike#_Person(_income->100000)
+ _Zack#_Person(_income->500000)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate2/external-predicate2-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate2/external-predicate2-answer1.psoa
new file mode 100644
index 00000000..7387b7b9
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate2/external-predicate2-answer1.psoa
@@ -0,0 +1,2 @@
+?X=_Mike ?I=100000
+?X=_Zack ?I=500000
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate2/external-predicate2-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate2/external-predicate2-query1.psoa
new file mode 100644
index 00000000..6bc5ddae
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/external-predicate2/external-predicate2-query1.psoa
@@ -0,0 +1 @@
+?X#_highIncomePerson(_income->?I)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial1/factorial1-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial1/factorial1-KB.psoa
new file mode 100644
index 00000000..3b11dbfd
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial1/factorial1-KB.psoa
@@ -0,0 +1,17 @@
+Document(
+ Group(
+ Forall ?x ?y ?fx ?fy (
+ _factorial(?y ?fy) :-
+ And(_sum(?x 1 ?y) _factorial(?x ?fx) _multiply(?fx ?y ?fy))
+ )
+ _factorial(0 1)
+ _sum(0 1 1)
+ _multiply(1 1 1)
+ _sum(1 1 2)
+ _multiply(1 2 2)
+ _sum(2 1 3)
+ _multiply(2 3 6)
+ _sum(3 1 4)
+ _multiply(6 4 24)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial1/factorial1-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial1/factorial1-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial1/factorial1-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial1/factorial1-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial1/factorial1-answer2.psoa
new file mode 100644
index 00000000..f8bb701e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial1/factorial1-answer2.psoa
@@ -0,0 +1,5 @@
+?x=0 ?fx=1
+?x=1 ?fx=1
+?x=2 ?fx=2
+?x=3 ?fx=6
+?x=4 ?fx=24
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial1/factorial1-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial1/factorial1-query1.psoa
new file mode 100644
index 00000000..7419a0c9
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial1/factorial1-query1.psoa
@@ -0,0 +1 @@
+_factorial(4 24)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial1/factorial1-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial1/factorial1-query2.psoa
new file mode 100644
index 00000000..15d46be5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial1/factorial1-query2.psoa
@@ -0,0 +1 @@
+_factorial(?x ?fx)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial2/factorial2-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial2/factorial2-KB.psoa
new file mode 100644
index 00000000..09704ce8
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial2/factorial2-KB.psoa
@@ -0,0 +1,17 @@
+Document(
+ Group(
+ Forall ?x ?y ?fx ?fy (
+ _eq(?fy _factorial(?y)) :-
+ And(_eq(?y _sum(?x 1)) _eq(?fx _factorial(?x)) _eq(?fy _multiply(?fx ?y)))
+ )
+ _eq(1 _factorial(0))
+ _eq(1 _sum(0 1))
+ _eq(1 _multiply(1 1))
+ _eq(2 _sum(1 1))
+ _eq(2 _multiply(1 2))
+ _eq(3 _sum(2 1))
+ _eq(6 _multiply(2 3))
+ _eq(4 _sum(3 1))
+ _eq(24 _multiply(6 4))
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial2/factorial2-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial2/factorial2-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial2/factorial2-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial2/factorial2-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial2/factorial2-answer2.psoa
new file mode 100644
index 00000000..f8bb701e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial2/factorial2-answer2.psoa
@@ -0,0 +1,5 @@
+?x=0 ?fx=1
+?x=1 ?fx=1
+?x=2 ?fx=2
+?x=3 ?fx=6
+?x=4 ?fx=24
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial2/factorial2-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial2/factorial2-query1.psoa
new file mode 100644
index 00000000..634c5794
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial2/factorial2-query1.psoa
@@ -0,0 +1 @@
+_eq(24 _factorial(4))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial2/factorial2-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial2/factorial2-query2.psoa
new file mode 100644
index 00000000..da65f696
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial2/factorial2-query2.psoa
@@ -0,0 +1 @@
+_eq(?fx _factorial(?x))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial3/factorial3-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial3/factorial3-KB.psoa
new file mode 100644
index 00000000..8d0d9056
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial3/factorial3-KB.psoa
@@ -0,0 +1,15 @@
+Document(
+ Prefix(func: )
+ Prefix(pred: )
+
+ Group(
+ _factorial(0 1)
+ Forall ?N ?F ?N1 ?F1 (
+ _factorial(?N ?F) :-
+ And(External(pred:numeric-greater-than(?N 0))
+ ?N1 = External(func:numeric-subtract(?N 1))
+ _factorial(?N1 ?F1)
+ ?F = External(func:numeric-multiply(?N ?F1)) )
+ )
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial3/factorial3-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial3/factorial3-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial3/factorial3-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial3/factorial3-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial3/factorial3-answer2.psoa
new file mode 100644
index 00000000..08cc7bb3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial3/factorial3-answer2.psoa
@@ -0,0 +1 @@
+?X=120
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial3/factorial3-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial3/factorial3-query1.psoa
new file mode 100644
index 00000000..c07ef8ea
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial3/factorial3-query1.psoa
@@ -0,0 +1 @@
+_factorial(5 120)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial3/factorial3-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial3/factorial3-query2.psoa
new file mode 100644
index 00000000..bdc7edc6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/factorial3/factorial3-query2.psoa
@@ -0,0 +1 @@
+_factorial(5 ?X)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family1/family1-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family1/family1-KB.psoa
new file mode 100644
index 00000000..0df22572
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family1/family1-KB.psoa
@@ -0,0 +1,10 @@
+Document(
+ Group(
+ Forall ?Hu ?Wi ?Ch (
+ _family(_husb->?Hu _wife->?Wi _child->?Ch) :-
+ And(_married(?Hu ?Wi) Or(_kid(?Hu ?Ch) _kid(?Wi ?Ch)))
+ )
+ _married(_Joe _Sue)
+ _kid(_Sue _Pete)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family1/family1-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family1/family1-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family1/family1-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family1/family1-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family1/family1-answer2.psoa
new file mode 100644
index 00000000..e2175ad1
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family1/family1-answer2.psoa
@@ -0,0 +1 @@
+?Ch=_Pete
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family1/family1-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family1/family1-query1.psoa
new file mode 100644
index 00000000..92d7bf5d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family1/family1-query1.psoa
@@ -0,0 +1 @@
+_married(_Joe _Sue)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family1/family1-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family1/family1-query2.psoa
new file mode 100644
index 00000000..cbeab4c6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family1/family1-query2.psoa
@@ -0,0 +1 @@
+_family(_husb->_Joe _wife->_Sue _child->?Ch)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-KB.psoa
new file mode 100644
index 00000000..74788e8b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-KB.psoa
@@ -0,0 +1,21 @@
+Document(
+ Group (
+ Forall ?Hu ?Wi (
+ _family(_husb->?Hu _wife->?Wi) :-
+ _married(?Hu ?Wi)
+ )
+ Forall ?Hu ?Ch ?o (
+ ?o#_family(_child->?Ch) :-
+ And(?o#_family(_husb->?Hu)
+ _kid(?Hu ?Ch))
+ )
+ Forall ?Wi ?Ch ?o (
+ ?o#_family(_child->?Ch) :-
+ And(?o#_family(_wife->?Wi)
+ _kid(?Wi ?Ch))
+ )
+ _married(_Joe _Sue)
+ _kid(_Sue _Pete)
+ _kid(_Joe _Tom)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-answer1.psoa
new file mode 100644
index 00000000..2652d92e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-answer1.psoa
@@ -0,0 +1,4 @@
+?p=_husb ?v=_Joe
+?p=_wife ?v=_Sue
+?p=_child ?v=_Pete
+?p=_child ?v=_Tom
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-answer2.psoa
new file mode 100644
index 00000000..28971648
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-answer2.psoa
@@ -0,0 +1,2 @@
+?Ch=_Pete
+?Ch=_Tom
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-answer3.psoa
new file mode 100644
index 00000000..9fcc7410
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-answer3.psoa
@@ -0,0 +1,2 @@
+?Hu=_Joe ?Wi=_Sue ?Ch=_Tom
+?Hu=_Joe ?Wi=_Sue ?Ch=_Pete
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-answer4.psoa
new file mode 100644
index 00000000..5186acee
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-answer4.psoa
@@ -0,0 +1 @@
+?Who=_Pete
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-query1.psoa
new file mode 100644
index 00000000..cedfe1e3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-query1.psoa
@@ -0,0 +1 @@
+_family(?p->?v)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-query2.psoa
new file mode 100644
index 00000000..889eb142
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-query2.psoa
@@ -0,0 +1 @@
+_family(_husb->_Joe _child->?Ch)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-query3.psoa
new file mode 100644
index 00000000..7287d218
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-query3.psoa
@@ -0,0 +1 @@
+_family(_husb->?Hu _wife->?Wi _child->?Ch)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-query4.psoa
new file mode 100644
index 00000000..5e54fef4
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/family2/family2-query4.psoa
@@ -0,0 +1 @@
+And(_family(_husb->_Joe _wife->_Sue _child->?Who) _kid(_Sue ?Who))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-KB.psoa
new file mode 100644
index 00000000..d54caf6b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-KB.psoa
@@ -0,0 +1,7 @@
+Document(
+ Group(
+ _r(_p1->_v)
+ _r(_p1->_f(_v))
+ _o#_r(_p1->_g(_v) _p2->_f(0))
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-answer1.psoa
new file mode 100644
index 00000000..e1d28a82
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-answer1.psoa
@@ -0,0 +1 @@
+?x=_v
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-answer2.psoa
new file mode 100644
index 00000000..84089c29
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-answer2.psoa
@@ -0,0 +1,3 @@
+?x=_v
+?x=_f(_v)
+?x=_g(_v)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-answer3.psoa
new file mode 100644
index 00000000..89e721b0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-answer3.psoa
@@ -0,0 +1,2 @@
+?x=_p1 ?y=_v
+?x=_p2 ?y=0
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-answer4.psoa
new file mode 100644
index 00000000..459533a0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-answer4.psoa
@@ -0,0 +1 @@
+?x=_g(_v)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-query1.psoa
new file mode 100644
index 00000000..a23b1e89
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-query1.psoa
@@ -0,0 +1 @@
+_r(_p1->_f(?x))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-query2.psoa
new file mode 100644
index 00000000..93774530
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-query2.psoa
@@ -0,0 +1 @@
+_r(_p1->?x)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-query3.psoa
new file mode 100644
index 00000000..80813ded
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-query3.psoa
@@ -0,0 +1 @@
+_r(?x->_f(?y))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-query4.psoa
new file mode 100644
index 00000000..345772d6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/function_application_as_slot_filler/function_application_as_slot_filler-query4.psoa
@@ -0,0 +1 @@
+_o#_r(_p1->?x)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-KB.psoa
new file mode 100644
index 00000000..c76cd711
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-KB.psoa
@@ -0,0 +1,12 @@
+Document (
+ Group (
+ _o1#_c1(_p->_v) :- _o1#_c1(_a1 _a2 _a3)
+ _o1#_c1(_a1 _a2 _a3)
+
+ _o2#_c1(_a1 _a2 _a3) :- _o2#_c1(_p->_v)
+ _o2#_c1(_p->_v)
+
+ _o3#_c2() :- _o3#_c1(_a1 _a2 _a3 _p->_v)
+ _o3#_c1(_a1 _a2 _a3 _p->_v)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-answer2.psoa
new file mode 100644
index 00000000..05906c94
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-answer2.psoa
@@ -0,0 +1,3 @@
+?X=_o1
+?X=_o2
+?X=_o3
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-answer3.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-answer3.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-answer4.psoa
new file mode 100644
index 00000000..83d9a49e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-answer4.psoa
@@ -0,0 +1 @@
+?X=_o3
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-query1.psoa
new file mode 100644
index 00000000..806c9b06
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-query1.psoa
@@ -0,0 +1 @@
+_o1#_c1(_a1 _a2 _a3 _p->_v)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-query2.psoa
new file mode 100644
index 00000000..9bfa5aa5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-query2.psoa
@@ -0,0 +1 @@
+?X#_c1(_a1 _a2 _a3)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-query3.psoa
new file mode 100644
index 00000000..99d1fa4f
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-query3.psoa
@@ -0,0 +1 @@
+_o1#_c2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-query4.psoa
new file mode 100644
index 00000000..6516f8f1
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/ground-rule/ground-rule-query4.psoa
@@ -0,0 +1 @@
+?X#_c2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/mixed-use-of-oids-in-psoa-terms/mixed-use-of-oids-in-psoa-terms-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/mixed-use-of-oids-in-psoa-terms/mixed-use-of-oids-in-psoa-terms-KB.psoa
new file mode 100644
index 00000000..e5e24dea
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/mixed-use-of-oids-in-psoa-terms/mixed-use-of-oids-in-psoa-terms-KB.psoa
@@ -0,0 +1,19 @@
+Document(
+ Prefix (: )
+
+ Group (
+ Forall ?X ?Y (
+ :isFatherOf(?Y ?X) :- And ( :isChildOf(?X ?Y) ?Y#:Male )
+ )
+
+ :c1#:isChildOf(:Adrian :Uwe)
+ :Adrian#:Male
+ :Uwe#:Male
+
+ Forall ?X ?Y ?C (
+ :isMotherOf(?Y ?X) :- And ( ?C#:isChildOf(?X ?Y) ?Y#:Female )
+ )
+ :isChildOf(:Adrian :Emily)
+ :Emily#:Female
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/mixed-use-of-oids-in-psoa-terms/mixed-use-of-oids-in-psoa-terms-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/mixed-use-of-oids-in-psoa-terms/mixed-use-of-oids-in-psoa-terms-answer1.psoa
new file mode 100644
index 00000000..c671d209
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/mixed-use-of-oids-in-psoa-terms/mixed-use-of-oids-in-psoa-terms-answer1.psoa
@@ -0,0 +1 @@
+?X1= ?X2=
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/mixed-use-of-oids-in-psoa-terms/mixed-use-of-oids-in-psoa-terms-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/mixed-use-of-oids-in-psoa-terms/mixed-use-of-oids-in-psoa-terms-answer2.psoa
new file mode 100644
index 00000000..9d99d8e0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/mixed-use-of-oids-in-psoa-terms/mixed-use-of-oids-in-psoa-terms-answer2.psoa
@@ -0,0 +1 @@
+?X1= ?X2=
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/mixed-use-of-oids-in-psoa-terms/mixed-use-of-oids-in-psoa-terms-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/mixed-use-of-oids-in-psoa-terms/mixed-use-of-oids-in-psoa-terms-query1.psoa
new file mode 100644
index 00000000..0b234775
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/mixed-use-of-oids-in-psoa-terms/mixed-use-of-oids-in-psoa-terms-query1.psoa
@@ -0,0 +1 @@
+:isFatherOf(?X1 ?X2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/mixed-use-of-oids-in-psoa-terms/mixed-use-of-oids-in-psoa-terms-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/mixed-use-of-oids-in-psoa-terms/mixed-use-of-oids-in-psoa-terms-query2.psoa
new file mode 100644
index 00000000..705dbe31
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/mixed-use-of-oids-in-psoa-terms/mixed-use-of-oids-in-psoa-terms-query2.psoa
@@ -0,0 +1 @@
+:isMotherOf(?X1 ?X2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-KB.psoa
new file mode 100644
index 00000000..45decb7f
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-KB.psoa
@@ -0,0 +1,5 @@
+Document(
+ Group(
+ _o1#_p(_a->1 _b->2)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-answer2.psoa
new file mode 100644
index 00000000..aa703a21
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-answer2.psoa
@@ -0,0 +1 @@
+?1=_a
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-answer3.psoa
new file mode 100644
index 00000000..f005a629
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-answer3.psoa
@@ -0,0 +1,2 @@
+?2=_a ?3=1
+?2=_b ?3=2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-query1.psoa
new file mode 100644
index 00000000..643178d9
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-query1.psoa
@@ -0,0 +1 @@
+_o1#_p(_a->1)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-query2.psoa
new file mode 100644
index 00000000..8071ce22
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-query2.psoa
@@ -0,0 +1 @@
+_o1#_p(?1->1)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-query3.psoa
new file mode 100644
index 00000000..0e2793f6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-slot_psoa_fact/multi-slot_psoa_fact-query3.psoa
@@ -0,0 +1 @@
+_o1#_p(?2->?3)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-valued_slot/multi-valued_slot-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-valued_slot/multi-valued_slot-KB.psoa
new file mode 100644
index 00000000..d4c0a0fb
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-valued_slot/multi-valued_slot-KB.psoa
@@ -0,0 +1,12 @@
+Document(
+ Group(
+ _Adam#_Person(_father->_John)
+ _Jack#_Person(_father->_John)
+ _Tom#_Person(_father->_John)
+
+ Forall ?Ch ?M
+ (
+ ?M#_Male(_child->?Ch) :- ?Ch#_Person(_father->?M)
+ )
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-valued_slot/multi-valued_slot-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-valued_slot/multi-valued_slot-answer1.psoa
new file mode 100644
index 00000000..b3d39e22
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-valued_slot/multi-valued_slot-answer1.psoa
@@ -0,0 +1,3 @@
+?c1=_Adam
+?c1=_Jack
+?c1=_Tom
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-valued_slot/multi-valued_slot-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-valued_slot/multi-valued_slot-answer2.psoa
new file mode 100644
index 00000000..070910cf
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-valued_slot/multi-valued_slot-answer2.psoa
@@ -0,0 +1,9 @@
+?c1=_Adam ?c2=_Adam
+?c1=_Adam ?c2=_Jack
+?c1=_Adam ?c2=_Tom
+?c1=_Jack ?c2=_Adam
+?c1=_Jack ?c2=_Jack
+?c1=_Jack ?c2=_Tom
+?c1=_Tom ?c2=_Adam
+?c1=_Tom ?c2=_Jack
+?c1=_Tom ?c2=_Tom
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-valued_slot/multi-valued_slot-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-valued_slot/multi-valued_slot-query1.psoa
new file mode 100644
index 00000000..d6fd5ff4
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-valued_slot/multi-valued_slot-query1.psoa
@@ -0,0 +1 @@
+_John#_Male(_child->?c1)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-valued_slot/multi-valued_slot-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-valued_slot/multi-valued_slot-query2.psoa
new file mode 100644
index 00000000..2d2270a6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multi-valued_slot/multi-valued_slot-query2.psoa
@@ -0,0 +1 @@
+_John#_Male(_child->?c1 _child->?c2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multiple_entailment/multiple_entailment-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multiple_entailment/multiple_entailment-KB.psoa
new file mode 100644
index 00000000..96300980
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multiple_entailment/multiple_entailment-KB.psoa
@@ -0,0 +1,6 @@
+Document(
+ Group(
+ Forall ?x (_o1#_p(_a ?x))
+ Forall ?x (_o1#_p(?x _b))
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multiple_entailment/multiple_entailment-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multiple_entailment/multiple_entailment-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multiple_entailment/multiple_entailment-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multiple_entailment/multiple_entailment-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multiple_entailment/multiple_entailment-answer2.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multiple_entailment/multiple_entailment-answer2.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multiple_entailment/multiple_entailment-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multiple_entailment/multiple_entailment-query1.psoa
new file mode 100644
index 00000000..0973da3a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multiple_entailment/multiple_entailment-query1.psoa
@@ -0,0 +1 @@
+_o1#_p(_a _b)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multiple_entailment/multiple_entailment-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multiple_entailment/multiple_entailment-query2.psoa
new file mode 100644
index 00000000..1429414d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/multiple_entailment/multiple_entailment-query2.psoa
@@ -0,0 +1 @@
+_o1#_p(_b _a)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-KB.psoa
new file mode 100644
index 00000000..d1358a7c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-KB.psoa
@@ -0,0 +1,17 @@
+Document(
+ Prefix (: )
+
+ Group(
+ :o1#:albsplitObj( :artist->"Van Morrison" :title->"Astral Weeks" :favorite->"Madame George" )
+ :o2#:albsplitObj( :artist->"Beatles" :title->"Sgt. Pepper's" :favorite->"A Day in the Life" )
+ :o3#:albsplitObj( :artist->"Beatles" :title->"Abbey Road" :favorite->"Something" )
+ :o4#:albsplitObj( :artist->"Rolling Stones" :title->"Sticky Fingers" :favorite->"Brown Sugar" )
+ :o5#:albmergeObj( :artist->"Eagles" :tivorite->"Hotel California" )
+ :o6#:albmergeObj( :artist->"Elton John" :tivorite->"Goodbye Yellow Brick Road" )
+ :albmergeObj##:albsplitObj
+ Forall ?OID ?Tivorite
+ (
+ ?OID#:albsplitObj(:title->?Tivorite :favorite->?Tivorite) :- ?OID#:albmergeObj(:tivorite->?Tivorite)
+ )
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-answer1.psoa
new file mode 100644
index 00000000..865ef576
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-answer1.psoa
@@ -0,0 +1,6 @@
+?OID= ?Artist="Van Morrison" ?Title="Astral Weeks"
+?OID= ?Artist="Beatles" ?Title="Sgt. Pepper's"
+?OID= ?Artist="Beatles" ?Title="Abbey Road"
+?OID= ?Artist="Rolling Stones" ?Title="Sticky Fingers"
+?OID= ?Artist="Eagles" ?Title="Hotel California"
+?OID= ?Artist="Elton John" ?Title="Goodbye Yellow Brick Road"
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-answer2.psoa
new file mode 100644
index 00000000..1f906f43
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-answer2.psoa
@@ -0,0 +1,6 @@
+?OID= ?Title="Astral Weeks" ?Artist="Van Morrison"
+?OID= ?Title="Sgt. Pepper's" ?Artist="Beatles"
+?OID= ?Title="Abbey Road" ?Artist="Beatles"
+?OID= ?Title="Sticky Fingers" ?Artist="Rolling Stones"
+?OID= ?Title="Hotel California" ?Artist="Eagles"
+?OID= ?Title="Goodbye Yellow Brick Road" ?Artist="Elton John"
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-answer3.psoa
new file mode 100644
index 00000000..73fd6a75
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-answer3.psoa
@@ -0,0 +1,6 @@
+?OID= ?Favorite="Madame George"
+?OID= ?Favorite="A Day in the Life"
+?OID= ?Favorite="Something"
+?OID= ?Favorite="Brown Sugar"
+?OID= ?Favorite="Hotel California"
+?OID= ?Favorite="Goodbye Yellow Brick Road"
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-answer4.psoa
new file mode 100644
index 00000000..05853b50
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-answer4.psoa
@@ -0,0 +1,6 @@
+?OID= ?Artist="Van Morrison" ?Title="Astral Weeks" ?Favorite="Madame George"
+?OID= ?Artist="Beatles" ?Title="Sgt. Pepper's" ?Favorite="A Day in the Life"
+?OID= ?Artist="Beatles" ?Title="Abbey Road" ?Favorite="Something"
+?OID= ?Artist="Rolling Stones" ?Title="Sticky Fingers" ?Favorite="Brown Sugar"
+?OID= ?Artist="Eagles" ?Title="Hotel California" ?Favorite="Hotel California"
+?OID= ?Artist="Elton John" ?Title="Goodbye Yellow Brick Road" ?Favorite="Goodbye Yellow Brick Road"
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-answer5.psoa
new file mode 100644
index 00000000..4549276b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-answer5.psoa
@@ -0,0 +1 @@
+?OID= ?Favorite="Goodbye Yellow Brick Road"
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-answer6.psoa
new file mode 100644
index 00000000..9ad9db49
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-answer6.psoa
@@ -0,0 +1 @@
+?Favorite="Goodbye Yellow Brick Road"
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-query1.psoa
new file mode 100644
index 00000000..024a00ae
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-query1.psoa
@@ -0,0 +1 @@
+?OID#:albsplitObj(:artist->?Artist :title->?Title)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-query2.psoa
new file mode 100644
index 00000000..44af7443
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-query2.psoa
@@ -0,0 +1 @@
+?OID#:albsplitObj(:title->?Title :artist->?Artist)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-query3.psoa
new file mode 100644
index 00000000..15014b14
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-query3.psoa
@@ -0,0 +1 @@
+?OID#:albsplitObj(:favorite->?Favorite )
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-query4.psoa
new file mode 100644
index 00000000..ac862c7f
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-query4.psoa
@@ -0,0 +1 @@
+?OID#:albsplitObj(:artist->?Artist :title->?Title :favorite->?Favorite )
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-query5.psoa
new file mode 100644
index 00000000..3e862a12
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-query5.psoa
@@ -0,0 +1 @@
+?OID#:albmergeObj(:artist->"Elton John" :favorite->?Favorite )
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-query6.psoa
new file mode 100644
index 00000000..601de634
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/music_album/music_album-query6.psoa
@@ -0,0 +1 @@
+:o6#:albsplitObj(:artist->"Elton John" :favorite->?Favorite)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-KB.psoa
new file mode 100644
index 00000000..e84a3679
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-KB.psoa
@@ -0,0 +1,8 @@
+Document(
+ Group (
+ _r1(_a1 _a2#_c2)
+ _o1#_c1(_p1->_a3#_c2 _p1->_#_c2)
+ _o2#_c2(_p2->_v2)#_c1(_a1 _a2 _p3->_v3)
+ _c3(_p4->_f(_b1 _b2#_c1(_p5->_v5)))
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer1.psoa
new file mode 100644
index 00000000..3fdfb3d0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer1.psoa
@@ -0,0 +1 @@
+Yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer10.psoa
new file mode 100644
index 00000000..f4a8d1ed
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer10.psoa
@@ -0,0 +1 @@
+?X=_b2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer2.psoa
new file mode 100644
index 00000000..c1675d13
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer2.psoa
@@ -0,0 +1 @@
+?O=_a2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer3.psoa
new file mode 100644
index 00000000..3fdfb3d0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer3.psoa
@@ -0,0 +1 @@
+Yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer4.psoa
new file mode 100644
index 00000000..5ff59711
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer4.psoa
@@ -0,0 +1,2 @@
+?O=_o1 ?X=_1
+?O=_o1 ?X=_a3
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer5.psoa
new file mode 100644
index 00000000..3fdfb3d0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer5.psoa
@@ -0,0 +1 @@
+Yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer6.psoa
new file mode 100644
index 00000000..cb698353
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer6.psoa
@@ -0,0 +1,2 @@
+?C=_c1
+?C=_c2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer7.psoa
new file mode 100644
index 00000000..80539052
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer7.psoa
@@ -0,0 +1,4 @@
+?C=_c1 ?P=_p2 ?V=_v2
+?C=_c1 ?P=_p3 ?V=_v3
+?C=_c2 ?P=_p2 ?V=_v2
+?C=_c2 ?P=_p3 ?V=_v3
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer8.psoa
new file mode 100644
index 00000000..3fdfb3d0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer8.psoa
@@ -0,0 +1 @@
+Yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer9.psoa
new file mode 100644
index 00000000..6825870f
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-answer9.psoa
@@ -0,0 +1 @@
+?C=_c1
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query1.psoa
new file mode 100644
index 00000000..73de249b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query1.psoa
@@ -0,0 +1 @@
+_r1(_a1 _a2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query10.psoa
new file mode 100644
index 00000000..27fa733c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query10.psoa
@@ -0,0 +1 @@
+_c3(_p4->_f(_b1 ?X))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query2.psoa
new file mode 100644
index 00000000..fc2a82d7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query2.psoa
@@ -0,0 +1 @@
+_r1(_a1 ?O#_c2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query3.psoa
new file mode 100644
index 00000000..5db3826a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query3.psoa
@@ -0,0 +1 @@
+_a3#_c2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query4.psoa
new file mode 100644
index 00000000..954fd599
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query4.psoa
@@ -0,0 +1 @@
+?O#_c1(_p1->?X#_c2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query5.psoa
new file mode 100644
index 00000000..4676498e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query5.psoa
@@ -0,0 +1 @@
+_o2#_c2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query6.psoa
new file mode 100644
index 00000000..387fb998
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query6.psoa
@@ -0,0 +1 @@
+_o2#?C
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query7.psoa
new file mode 100644
index 00000000..4c5eaa76
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query7.psoa
@@ -0,0 +1 @@
+_o2#?C(?P->?V)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query8.psoa
new file mode 100644
index 00000000..c2a2a007
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query8.psoa
@@ -0,0 +1 @@
+_c3(_p4->_f(_b1 _b2))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query9.psoa
new file mode 100644
index 00000000..a7fc2cf8
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms1/nested_atoms1-query9.psoa
@@ -0,0 +1 @@
+_c3(_p4->_f(_b1 _b2#?C))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms2/nested_atoms2-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms2/nested_atoms2-KB.psoa
new file mode 100644
index 00000000..7cbea1ac
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms2/nested_atoms2-KB.psoa
@@ -0,0 +1,9 @@
+Document(
+ Group (
+ Forall ?O1 ?V1 ?V2
+ (
+ Exists ?O2 (?O1#_c4(_p5->?O2#_c5(_p6->_v6))) :- ?O1#_c1(_p1->?V1#_c2(_p2->?V2))
+ )
+ _o1#_c1(_p1->_f(_a1 _a2)#_c2(_p2->_v2_1) _p1->_v3#_c3(_b1 _b2 _p2->_v2_2))
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms2/nested_atoms2-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms2/nested_atoms2-answer1.psoa
new file mode 100644
index 00000000..761e18fa
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms2/nested_atoms2-answer1.psoa
@@ -0,0 +1 @@
+?O1=_o1
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms2/nested_atoms2-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms2/nested_atoms2-query1.psoa
new file mode 100644
index 00000000..72127335
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/nested_atoms2/nested_atoms2-query1.psoa
@@ -0,0 +1 @@
+?O1#_c4(_p5->?#_c5(_p6->_v6))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/objectification/objectification-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/objectification/objectification-KB.psoa
new file mode 100644
index 00000000..4335d1c1
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/objectification/objectification-KB.psoa
@@ -0,0 +1,8 @@
+Document(
+ Group(
+ Forall ?x ?y (
+ _g(?y ?x) :- _f(?x ?y)
+ )
+ _f(_a _b)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/objectification/objectification-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/objectification/objectification-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/objectification/objectification-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/objectification/objectification-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/objectification/objectification-answer2.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/objectification/objectification-answer2.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/objectification/objectification-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/objectification/objectification-query1.psoa
new file mode 100644
index 00000000..8fc7a230
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/objectification/objectification-query1.psoa
@@ -0,0 +1 @@
+_g(_b _a)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/objectification/objectification-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/objectification/objectification-query2.psoa
new file mode 100644
index 00000000..fa71695e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/objectification/objectification-query2.psoa
@@ -0,0 +1 @@
+And (_f(_a _b) _g(_b _a))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-KB.psoa
new file mode 100644
index 00000000..fb5068a5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-KB.psoa
@@ -0,0 +1,19 @@
+RuleML (
+ Assert (
+
+ Forall ?person ?merchant ?object (
+ own(?person ?object) :-
+ And(buy(?person ?merchant ?object) keep(?person ?object))
+ )
+
+ Forall ?person ?merchant ?object (
+ buy(?person ?merchant ?object) :-
+ sell(?merchant ?person ?object)
+ )
+
+ sell(John Mary XMLBible)
+
+ keep(Mary XMLBible)
+
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-answer2.psoa
new file mode 100644
index 00000000..f4d971ae
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-answer2.psoa
@@ -0,0 +1 @@
+?what=_XMLBible
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-answer3.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-answer3.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-answer4.psoa
new file mode 100644
index 00000000..f4d971ae
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-answer4.psoa
@@ -0,0 +1 @@
+?what=_XMLBible
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-answer5.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-answer5.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-query1.psoa
new file mode 100644
index 00000000..9e843b7c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-query1.psoa
@@ -0,0 +1 @@
+own(Mary XMLBible)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-query2.psoa
new file mode 100644
index 00000000..5999b2d0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-query2.psoa
@@ -0,0 +1 @@
+own(Mary ?what)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-query3.psoa
new file mode 100644
index 00000000..55a1d37c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-query3.psoa
@@ -0,0 +1 @@
+?#own(Mary XMLBible)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-query4.psoa
new file mode 100644
index 00000000..bd530257
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-query4.psoa
@@ -0,0 +1 @@
+?#own(Mary ?what)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-query5.psoa
new file mode 100644
index 00000000..8eedce11
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/own/own-query5.psoa
@@ -0,0 +1 @@
+Situation1#own(Mary XMLBible)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-KB.psoa
new file mode 100644
index 00000000..97407d93
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-KB.psoa
@@ -0,0 +1,5 @@
+Document(
+ Group(
+ Forall ?x ( _eq(_f(?x) ?x))
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-answer2.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-answer2.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-answer3.psoa
new file mode 100644
index 00000000..fe890689
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-answer3.psoa
@@ -0,0 +1 @@
+_eq(_f(_g(_b)) _g(_b))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-query1.psoa
new file mode 100644
index 00000000..f22fc5c1
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-query1.psoa
@@ -0,0 +1 @@
+_eq(_f(2) 2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-query2.psoa
new file mode 100644
index 00000000..e6e508d1
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-query2.psoa
@@ -0,0 +1 @@
+_eq(_f(_a) _a)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-query3.psoa
new file mode 100644
index 00000000..fe890689
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/passive_function/passive_function-query3.psoa
@@ -0,0 +1 @@
+_eq(_f(_g(_b)) _g(_b))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-KB.psoa
new file mode 100644
index 00000000..196d8b11
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-KB.psoa
@@ -0,0 +1,5 @@
+Document
+(
+ Prefix(: )
+ Import()
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer1.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer1.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer10.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer10.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer11.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer11.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer12.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer12.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer12.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer13.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer13.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer13.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer14.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer14.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer14.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer15.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer15.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer15.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer16.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer16.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer16.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer17.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer17.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer17.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer18.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer18.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer18.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer19.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer19.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer19.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer2.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer2.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer20.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer20.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer20.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer21.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer21.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer21.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer22.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer22.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer22.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer23.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer23.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer23.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer24.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer24.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer24.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer25.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer25.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer25.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer26.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer26.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer26.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer27.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer27.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer27.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer28.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer28.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer28.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer29.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer29.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer29.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer3.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer3.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer30.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer30.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer30.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer4.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer4.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer5.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer5.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer6.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer6.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer7.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer7.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer8.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer8.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer9.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-answer9.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query1.psoa
new file mode 100644
index 00000000..f53d567a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query1.psoa
@@ -0,0 +1,5 @@
+Or(:lessThanDate(:date(2017 05 30) :date(2017 05 30))
+ :lessThanDate(:date(2017 05 30) :date(2016 05 30))
+ :lessThanDate(:date(2017 05 30) :date(2017 04 30))
+ :lessThanDate(:date(2017 05 30) :date(2017 05 29)))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query10.psoa
new file mode 100644
index 00000000..f3a9d840
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query10.psoa
@@ -0,0 +1,5 @@
+And(:greaterEqDate(:date(2017 05 30) :date(2017 05 30))
+ :greaterEqDate(:date(2017 05 30) :date(2016 05 30))
+ :greaterEqDate(:date(2017 05 30) :date(2017 04 30))
+ :greaterEqDate(:date(2017 05 30) :date(2017 05 29)))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query11.psoa
new file mode 100644
index 00000000..7023c5e0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query11.psoa
@@ -0,0 +1,5 @@
+Or(:lessThanTime(:time(14 20 05) :time(14 20 05))
+ :lessThanTime(:time(14 20 05) :time(13 20 05))
+ :lessThanTime(:time(14 20 05) :time(14 19 05))
+ :lessThanTime(:time(14 20 05) :time(14 20 04)))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query12.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query12.psoa
new file mode 100644
index 00000000..c8bb8c21
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query12.psoa
@@ -0,0 +1,4 @@
+And(:lessThanTime(:time(13 20 05) :time(14 20 05))
+ :lessThanTime(:time(14 19 05) :time(14 20 05))
+ :lessThanTime(:time(14 20 04) :time(14 20 05)))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query13.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query13.psoa
new file mode 100644
index 00000000..69bc039e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query13.psoa
@@ -0,0 +1,4 @@
+Or(:eqTime(:time(14 20 05) :time(13 20 05))
+ :eqTime(:time(14 20 05) :time(14 19 05))
+ :eqTime(:time(14 20 05) :time(14 20 04)))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query14.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query14.psoa
new file mode 100644
index 00000000..3b0832a4
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query14.psoa
@@ -0,0 +1,2 @@
+:eqTime(:time(14 20 05) :time(14 20 05))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query15.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query15.psoa
new file mode 100644
index 00000000..810a3fb8
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query15.psoa
@@ -0,0 +1,4 @@
+Or(:lessEqTime(:time(14 20 05) :time(13 20 05))
+ :lessEqTime(:time(14 20 05) :time(14 19 05))
+ :lessEqTime(:time(14 20 05) :time(14 20 04)))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query16.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query16.psoa
new file mode 100644
index 00000000..d6c0fa47
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query16.psoa
@@ -0,0 +1,5 @@
+And(:lessEqTime(:time(14 20 05) :time(14 20 05))
+ :lessEqTime(:time(13 20 05) :time(14 20 05))
+ :lessEqTime(:time(14 19 05) :time(14 20 05))
+ :lessEqTime(:time(14 20 04) :time(14 20 05)))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query17.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query17.psoa
new file mode 100644
index 00000000..1e465250
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query17.psoa
@@ -0,0 +1,5 @@
+Or(:greaterThanTime(:time(14 20 05) :time(14 20 05))
+ :greaterThanTime(:time(13 20 05) :time(14 20 05))
+ :greaterThanTime(:time(14 19 05) :time(14 20 05))
+ :greaterThanTime(:time(14 20 04) :time(14 20 05)))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query18.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query18.psoa
new file mode 100644
index 00000000..1880feae
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query18.psoa
@@ -0,0 +1,4 @@
+And(:greaterThanTime(:time(14 20 05) :time(13 20 05))
+ :greaterThanTime(:time(14 20 05) :time(14 19 05))
+ :greaterThanTime(:time(14 20 05) :time(14 20 04)))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query19.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query19.psoa
new file mode 100644
index 00000000..0fcb6308
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query19.psoa
@@ -0,0 +1,4 @@
+Or(:greaterEqTime(:time(13 20 05) :time(14 20 05))
+ :greaterEqTime(:time(14 19 05) :time(14 20 05))
+ :greaterEqTime(:time(14 20 04) :time(14 20 05)))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query2.psoa
new file mode 100644
index 00000000..ee29bd56
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query2.psoa
@@ -0,0 +1,4 @@
+And(:lessThanDate(:date(2016 05 30) :date(2017 05 30))
+ :lessThanDate(:date(2017 04 30) :date(2017 05 30))
+ :lessThanDate(:date(2017 05 29) :date(2017 05 30)))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query20.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query20.psoa
new file mode 100644
index 00000000..342929d8
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query20.psoa
@@ -0,0 +1,5 @@
+And(:greaterEqTime(:time(14 20 05) :time(14 20 05))
+ :greaterEqTime(:time(14 20 05) :time(13 20 05))
+ :greaterEqTime(:time(14 20 05) :time(14 19 05))
+ :greaterEqTime(:time(14 20 05) :time(14 20 04)))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query21.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query21.psoa
new file mode 100644
index 00000000..2446599e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query21.psoa
@@ -0,0 +1,4 @@
+Or(:lessThanDateTime(:datetime(2017 5 30 14 20 5) :datetime(2017 5 30 14 20 5))
+ :lessThanDateTime(:datetime(2017 5 30 14 20 5) :datetime(2017 5 30 13 20 5))
+ :lessThanDateTime(:datetime(2017 5 30 14 20 5) :datetime(2016 5 30 14 20 5))
+ :lessThanDateTime(:datetime(2017 5 30 14 20 5) :datetime(2016 5 30 13 20 5)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query22.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query22.psoa
new file mode 100644
index 00000000..1427f1e3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query22.psoa
@@ -0,0 +1,3 @@
+And(:lessThanDatetime(:datetime(2017 5 30 13 20 5) :datetime(2017 5 30 14 20 5))
+ :lessThanDatetime(:datetime(2016 5 30 14 20 5) :datetime(2017 5 30 14 20 5))
+ :lessThanDatetime(:datetime(2016 5 30 13 20 5) :datetime(2017 5 30 14 20 5)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query23.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query23.psoa
new file mode 100644
index 00000000..2c56f03a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query23.psoa
@@ -0,0 +1,3 @@
+Or(:eqDatetime(:datetime(2017 5 30 13 20 5) :datetime(2017 5 30 14 20 5))
+ :eqDatetime(:datetime(2016 5 30 14 20 5) :datetime(2017 5 30 14 20 5))
+ :eqDatetime(:datetime(2016 5 30 13 20 5) :datetime(2017 5 30 14 20 5)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query24.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query24.psoa
new file mode 100644
index 00000000..c44f68f7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query24.psoa
@@ -0,0 +1 @@
+:eqDatetime(:datetime(2017 5 30 14 20 5) :datetime(2017 5 30 14 20 5)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query25.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query25.psoa
new file mode 100644
index 00000000..299adcb6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query25.psoa
@@ -0,0 +1,3 @@
+Or(:lessEqDatetime(:datetime(2017 5 30 14 20 5) :datetime(2017 5 30 13 20 5))
+ :lessEqDatetime(:datetime(2017 5 30 14 20 5) :datetime(2016 5 30 14 20 5))
+ :lessEqDatetime(:datetime(2017 5 30 14 20 5) :datetime(2016 5 30 13 20 5)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query26.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query26.psoa
new file mode 100644
index 00000000..5e9ae2e0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query26.psoa
@@ -0,0 +1,4 @@
+And(:lessEqDatetime(:datetime(2017 5 30 14 20 5) :datetime(2017 5 30 14 20 5))
+ :lessEqDatetime(:datetime(2017 5 30 13 20 5) :datetime(2017 5 30 14 20 5))
+ :lessEqDatetime(:datetime(2016 5 30 14 20 5) :datetime(2017 5 30 14 20 5))
+ :lessEqDatetime(:datetime(2016 5 30 13 20 5) :datetime(2017 5 30 14 20 5)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query27.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query27.psoa
new file mode 100644
index 00000000..e33af953
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query27.psoa
@@ -0,0 +1,4 @@
+Or(:greaterThanDatetime(:datetime(2017 5 30 14 20 5) :datetime(2017 5 30 14 20 5))
+ :greaterThanDatetime(:datetime(2017 5 30 13 20 5) :datetime(2017 5 30 14 20 5))
+ :greaterThanDatetime(:datetime(2016 5 30 14 20 5) :datetime(2017 5 30 14 20 5))
+ :greaterThanDatetime(:datetime(2016 5 30 13 20 5) :datetime(2017 5 30 14 20 5)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query28.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query28.psoa
new file mode 100644
index 00000000..169ff5da
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query28.psoa
@@ -0,0 +1,3 @@
+And(:greaterThanDatetime(:datetime(2017 5 30 14 20 5) :datetime(2017 5 30 13 20 5))
+ :greaterThanDatetime(:datetime(2017 5 30 14 20 5) :datetime(2016 5 30 14 20 5))
+ :greaterThanDatetime(:datetime(2017 5 30 14 20 5) :datetime(2016 5 30 13 20 5)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query29.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query29.psoa
new file mode 100644
index 00000000..a0f774c5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query29.psoa
@@ -0,0 +1,3 @@
+Or(:greaterEqDatetime(:datetime(2017 5 30 13 20 5) :datetime(2017 5 30 14 20 5))
+ :greaterEqDatetime(:datetime(2016 5 30 13 20 5) :datetime(2017 5 30 14 20 5))
+ :greaterEqDatetime(:datetime(2016 5 30 13 20 5) :datetime(2017 5 30 14 20 5)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query3.psoa
new file mode 100644
index 00000000..3c7a2df6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query3.psoa
@@ -0,0 +1,4 @@
+Or(:eqDate(:date(2017 05 30) :date(2016 05 30))
+ :eqDate(:date(2017 05 30) :date(2017 04 30))
+ :eqDate(:date(2017 05 30) :date(2017 05 29)))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query30.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query30.psoa
new file mode 100644
index 00000000..f59a951c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query30.psoa
@@ -0,0 +1,4 @@
+And(:greaterEqDatetime(:datetime(2017 5 30 14 20 5) :datetime(2017 5 30 14 20 5))
+ :greaterEqDatetime(:datetime(2017 5 30 14 20 5) :datetime(2017 5 30 13 20 5))
+ :greaterEqDatetime(:datetime(2017 5 30 14 20 5) :datetime(2016 5 30 14 20 5))
+ :greaterEqDatetime(:datetime(2017 5 30 14 20 5) :datetime(2016 5 30 13 20 5)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query4.psoa
new file mode 100644
index 00000000..e7c880f5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query4.psoa
@@ -0,0 +1,2 @@
+:eqDate(:date(2017 05 30) :date(2017 05 30))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query5.psoa
new file mode 100644
index 00000000..03536a2b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query5.psoa
@@ -0,0 +1,4 @@
+Or(:lessEqDate(:date(2017 05 30) :date(2016 05 30))
+ :lessEqDate(:date(2017 05 30) :date(2017 04 30))
+ :lessEqDate(:date(2017 05 30) :date(2017 05 29)))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query6.psoa
new file mode 100644
index 00000000..64271352
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query6.psoa
@@ -0,0 +1,5 @@
+And(:lessEqDate(:date(2017 05 30) :date(2017 05 30))
+ :lessEqDate(:date(2016 05 30) :date(2017 05 30))
+ :lessEqDate(:date(2017 04 30) :date(2017 05 30))
+ :lessEqDate(:date(2017 05 29) :date(2017 05 30)))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query7.psoa
new file mode 100644
index 00000000..0acafb28
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query7.psoa
@@ -0,0 +1,5 @@
+Or(:greaterThanDate(:date(2017 05 30) :date(2017 05 30))
+ :greaterThanDate(:date(2016 05 30) :date(2017 05 30))
+ :greaterThanDate(:date(2017 04 30) :date(2017 05 30))
+ :greaterThanDate(:date(2017 05 29) :date(2017 05 30)))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query8.psoa
new file mode 100644
index 00000000..da70e3f4
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query8.psoa
@@ -0,0 +1,4 @@
+And(:greaterThanDate(:date(2017 05 30) :date(2016 05 30))
+ :greaterThanDate(:date(2017 05 30) :date(2017 04 30))
+ :greaterThanDate(:date(2017 05 30) :date(2017 05 29)))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query9.psoa
new file mode 100644
index 00000000..8f91fda1
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/physics-comparison/physics-comparison-query9.psoa
@@ -0,0 +1,4 @@
+Or(:greaterEqDate(:date(2016 05 30) :date(2017 05 30))
+ :greaterEqDate(:date(2017 04 30) :date(2017 05 30))
+ :greaterEqDate(:date(2017 05 29) :date(2017 05 30)))
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants1/psoa-abridged-constants1-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants1/psoa-abridged-constants1-KB.psoa
new file mode 100644
index 00000000..221fbbbf
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants1/psoa-abridged-constants1-KB.psoa
@@ -0,0 +1,8 @@
+RuleML (
+ Prefix (: )
+
+ Assert (
+ _o#_c(+[:a1 _a2] -[b1 b2] :p1+>v1 p2->:v2)
+ r(a1)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants1/psoa-abridged-constants1-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants1/psoa-abridged-constants1-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants1/psoa-abridged-constants1-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants1/psoa-abridged-constants1-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants1/psoa-abridged-constants1-query1.psoa
new file mode 100644
index 00000000..439646c9
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants1/psoa-abridged-constants1-query1.psoa
@@ -0,0 +1 @@
+_o#_c(+[:a1 _a2] -[_b1 _b2] :p1+>_v1 _p2->:v2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants2/psoa-abridged-constants2-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants2/psoa-abridged-constants2-KB.psoa
new file mode 100644
index 00000000..7c8ee772
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants2/psoa-abridged-constants2-KB.psoa
@@ -0,0 +1,8 @@
+RuleML (
+ Prefix (: )
+
+ Assert (
+ o#c(+[:a1 a2] -[b1 b2] :p1+>v1 p2->:v2) :- o#c(+[:a1 a2] p2->:v2)
+ o#c(+[:a1 a2] p2->:v2)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants2/psoa-abridged-constants2-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants2/psoa-abridged-constants2-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants2/psoa-abridged-constants2-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants2/psoa-abridged-constants2-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants2/psoa-abridged-constants2-answer2.psoa
new file mode 100644
index 00000000..4a815bbd
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants2/psoa-abridged-constants2-answer2.psoa
@@ -0,0 +1 @@
+?x1= ?x2=_a2 ?y1=_v1 ?y2=
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants2/psoa-abridged-constants2-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants2/psoa-abridged-constants2-query1.psoa
new file mode 100644
index 00000000..ee968d53
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants2/psoa-abridged-constants2-query1.psoa
@@ -0,0 +1 @@
+o#c(+[:a1 a2] -[b1 b2] :p1+>v1 p2->:v2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants2/psoa-abridged-constants2-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants2/psoa-abridged-constants2-query2.psoa
new file mode 100644
index 00000000..37f6d05d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-abridged-constants2/psoa-abridged-constants2-query2.psoa
@@ -0,0 +1 @@
+o#c(+[?x1 ?x2] -[b1 b2] :p1+>?y1 p2->?y2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-KB.psoa
new file mode 100644
index 00000000..daf266c3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-KB.psoa
@@ -0,0 +1,6 @@
+Document(
+ Group (
+ _John#_Teacher(+[_Wed _Thu] _dept+>_physics _salary+>19400 _income->19400)
+ _John#_Student(+[_Mon _Tue _Fri] _dept+>_math _gender->_male)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer10.psoa
new file mode 100644
index 00000000..5c97ea5e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer10.psoa
@@ -0,0 +1,2 @@
+?p=_gender ?v=_male
+?p=_income ?v=19400
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer11.psoa
new file mode 100644
index 00000000..ad810c70
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer11.psoa
@@ -0,0 +1,2 @@
+?o=_John ?p=_Student ?dep=_math
+?o=_John ?p=_Teacher ?dep=_physics
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer2.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer2.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer3.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer3.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer4.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer4.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer5.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer5.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer6.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer6.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer7.psoa
new file mode 100644
index 00000000..3a735c2d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer7.psoa
@@ -0,0 +1 @@
+?x=_math
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer8.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer8.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer9.psoa
new file mode 100644
index 00000000..8537d2fa
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-answer9.psoa
@@ -0,0 +1 @@
+?x=19400
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query1.psoa
new file mode 100644
index 00000000..437e999b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query1.psoa
@@ -0,0 +1 @@
+_John#_Teacher(+[_Wed _Thu])
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query10.psoa
new file mode 100644
index 00000000..deb212a7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query10.psoa
@@ -0,0 +1 @@
+_John#_Student(?p->?v)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query11.psoa
new file mode 100644
index 00000000..35e73b56
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query11.psoa
@@ -0,0 +1 @@
+?o#?p(_dept+>?dep)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query2.psoa
new file mode 100644
index 00000000..2e546cab
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query2.psoa
@@ -0,0 +1 @@
+And(_John#_Teacher(_Wed _Thu) _John#_Teacher([_Wed _Thu]))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query3.psoa
new file mode 100644
index 00000000..9eb8e4e6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query3.psoa
@@ -0,0 +1 @@
+_John#_Teacher(_dept+>_physics)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query4.psoa
new file mode 100644
index 00000000..68829a3c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query4.psoa
@@ -0,0 +1 @@
+_John#_Teacher(_income->19400)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query5.psoa
new file mode 100644
index 00000000..af5e4140
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query5.psoa
@@ -0,0 +1 @@
+_John#_Student(+[_Mon _Tue _Fri])
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query6.psoa
new file mode 100644
index 00000000..d1b05e06
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query6.psoa
@@ -0,0 +1 @@
+_John#_Student(+[_Wed _Thu])
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query7.psoa
new file mode 100644
index 00000000..e919ea16
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query7.psoa
@@ -0,0 +1 @@
+_John#_Student(_dept+>?x)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query8.psoa
new file mode 100644
index 00000000..d3c0cecd
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query8.psoa
@@ -0,0 +1 @@
+_John#_Student(_salary+>?x)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query9.psoa
new file mode 100644
index 00000000..f196c844
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency1/psoa-atom-dependency1-query9.psoa
@@ -0,0 +1 @@
+_John#_Student(_income->?x)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency2/psoa-atom-dependency2-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency2/psoa-atom-dependency2-KB.psoa
new file mode 100644
index 00000000..c2983140
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency2/psoa-atom-dependency2-KB.psoa
@@ -0,0 +1,12 @@
+Document(
+ Group (
+ Forall ?h ?t (
+ ?h#_nurse(_behavior+>_caring _time+>?t) :- _onDuty(?h ?t)
+ )
+ Forall ?h ?t (
+ ?h#_athlete(_behavior+>_competing _time+>?t) :- _inMatch(?h ?t)
+ )
+ _onDuty(_nurlete17 _t1)
+ _inMatch(_nurlete17 _t2)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency2/psoa-atom-dependency2-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency2/psoa-atom-dependency2-answer1.psoa
new file mode 100644
index 00000000..94720c84
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency2/psoa-atom-dependency2-answer1.psoa
@@ -0,0 +1 @@
+?x=_caring ?y=_t1
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency2/psoa-atom-dependency2-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency2/psoa-atom-dependency2-answer2.psoa
new file mode 100644
index 00000000..9ce22a07
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency2/psoa-atom-dependency2-answer2.psoa
@@ -0,0 +1 @@
+?x=_competing ?y=_t2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency2/psoa-atom-dependency2-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency2/psoa-atom-dependency2-query1.psoa
new file mode 100644
index 00000000..3894d4a5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency2/psoa-atom-dependency2-query1.psoa
@@ -0,0 +1 @@
+_nurlete17#_nurse(_behavior+>?x _time+>?y)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency2/psoa-atom-dependency2-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency2/psoa-atom-dependency2-query2.psoa
new file mode 100644
index 00000000..c1e6cb63
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency2/psoa-atom-dependency2-query2.psoa
@@ -0,0 +1 @@
+_nurlete17#_athlete(_behavior+>?x _time+>?y)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-KB.psoa
new file mode 100644
index 00000000..9ee2a19c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-KB.psoa
@@ -0,0 +1,11 @@
+Document(
+ Group (
+ _o1#Top(+[_Ernie _Tony])
+ _o2#_startup(+[_Ernie _Tony])
+ _o3#Top(-[_Ernie _Tony])
+ _o4#_startup(-[_Ernie _Tony])
+ _o5#_company(+[_Ernie _Tony])
+ _o6#_company(-[_Ernie _Tony])
+ _startup##_company
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer2.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer2.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer3.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer3.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer4.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer4.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer5.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer5.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer6.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer6.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer7.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer7.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer8.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer8.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer9.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-answer9.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query1.psoa
new file mode 100644
index 00000000..9a281961
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query1.psoa
@@ -0,0 +1 @@
+And(_o1#Top(+[_Ernie _Tony]) _o1#Top(-[_Ernie _Tony]) _o2#_startup(+[_Ernie _Tony]) _o3#Top(+[_Ernie _Tony]) _o3#Top(-[_Ernie _Tony]))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query2.psoa
new file mode 100644
index 00000000..3c8427fa
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query2.psoa
@@ -0,0 +1 @@
+And(_o4#Top(+[_Ernie _Tony]) _o4#Top(-[_Ernie _Tony]) _o4#_startup(-[_Ernie _Tony]) _o4#_company(-[_Ernie _Tony]))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query3.psoa
new file mode 100644
index 00000000..c4153003
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query3.psoa
@@ -0,0 +1 @@
+And(_o5#_company(+[_Ernie _Tony]) _o6#_company(-[_Ernie _Tony]))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query4.psoa
new file mode 100644
index 00000000..108c3ab9
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query4.psoa
@@ -0,0 +1 @@
+Or(_o1#_startup(+[_Ernie _Tony]) _o1#_startup(-[_Ernie _Tony]))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query5.psoa
new file mode 100644
index 00000000..7b4c6f82
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query5.psoa
@@ -0,0 +1 @@
+Or(_o2#Top(+[_Ernie _Tony]) _o2#Top(-[_Ernie _Tony]) _o2#_startup(-[_Ernie _Tony]) _o2#_company(-[_Ernie _Tony]) _o2#_company(+[_Ernie _Tony]))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query6.psoa
new file mode 100644
index 00000000..51ef03eb
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query6.psoa
@@ -0,0 +1 @@
+Or(_o3#_startup(+[_Ernie _Tony]) _o3#_startup(-[_Ernie _Tony]))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query7.psoa
new file mode 100644
index 00000000..6f02c59d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query7.psoa
@@ -0,0 +1 @@
+Or(_o4#_startup(+[_Ernie _Tony]) _o4#_company(+[_Ernie _Tony]))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query8.psoa
new file mode 100644
index 00000000..88d2488c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query8.psoa
@@ -0,0 +1 @@
+Or(_o5#_company(-[_Ernie _Tony]) _o5#_startup(+[_Ernie _Tony]) _o5#_startup(-[_Ernie _Tony]))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query9.psoa
new file mode 100644
index 00000000..982aedb5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency3/psoa-atom-dependency3-query9.psoa
@@ -0,0 +1 @@
+Or(_o6#_company(+[_Ernie _Tony]) _o6#_startup(+[_Ernie _Tony]) _o6#_startup(-[_Ernie _Tony]))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-KB.psoa
new file mode 100644
index 00000000..689a614c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-KB.psoa
@@ -0,0 +1,11 @@
+Document(
+ Group (
+ _o1#Top(_p+>_v)
+ _o2#_startup(_p+>_v)
+ _o3#Top(_p->_v)
+ _o4#_startup(_p->_v)
+ _o5#_company(_p+>_v)
+ _o6#_company(_p->_v)
+ _startup##_company
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-answer1.psoa
new file mode 100644
index 00000000..76c872ba
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-answer1.psoa
@@ -0,0 +1,4 @@
+?o=_o1
+?o=_o3
+?o=_o4
+?o=_o6
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-answer2.psoa
new file mode 100644
index 00000000..76c872ba
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-answer2.psoa
@@ -0,0 +1,4 @@
+?o=_o1
+?o=_o3
+?o=_o4
+?o=_o6
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-answer3.psoa
new file mode 100644
index 00000000..a9a87c26
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-answer3.psoa
@@ -0,0 +1 @@
+?o=_o2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-answer4.psoa
new file mode 100644
index 00000000..2ed88bea
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-answer4.psoa
@@ -0,0 +1 @@
+?o=_o4
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-answer5.psoa
new file mode 100644
index 00000000..0ef79996
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-answer5.psoa
@@ -0,0 +1 @@
+?o=_o5
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-answer6.psoa
new file mode 100644
index 00000000..de5891b1
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-answer6.psoa
@@ -0,0 +1,2 @@
+?o=_o4
+?o=_o6
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-query1.psoa
new file mode 100644
index 00000000..979eb0f4
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-query1.psoa
@@ -0,0 +1 @@
+?o#Top(_p+>_v)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-query2.psoa
new file mode 100644
index 00000000..cd3107b6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-query2.psoa
@@ -0,0 +1 @@
+?o#Top(_p->_v)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-query3.psoa
new file mode 100644
index 00000000..55cb202b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-query3.psoa
@@ -0,0 +1 @@
+?o#_startup(_p+>_v)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-query4.psoa
new file mode 100644
index 00000000..49d6bec0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-query4.psoa
@@ -0,0 +1 @@
+?o#_startup(_p->_v)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-query5.psoa
new file mode 100644
index 00000000..1c927504
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-query5.psoa
@@ -0,0 +1 @@
+?o#_company(_p+>_v)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-query6.psoa
new file mode 100644
index 00000000..36046c87
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency4/psoa-atom-dependency4-query6.psoa
@@ -0,0 +1 @@
+?o#_company(_p->_v)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-KB.psoa
new file mode 100644
index 00000000..25f103ea
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-KB.psoa
@@ -0,0 +1,15 @@
+Document(
+ Group (
+ Forall ?x
+ (
+ ?o#_c1(+[?x ?y]) :- ?o#_c1(_p1+>?x _p2->?y)
+ )
+
+ _o1#_c1(_p1+>_v11 _p2->_v12)
+ _o2#_c1(_p1+>_v21)
+ _o2#Top(_p2->_v22)
+ _o3#_c1(_p1+>_v31)
+ _o3#_c2(_p2->_v32)
+ _c1##_c0
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-answer1.psoa
new file mode 100644
index 00000000..04234045
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-answer1.psoa
@@ -0,0 +1,3 @@
+?o=_o1 ?x=_v11 ?y=_v12
+?o=_o2 ?x=_v21 ?y=_v22
+?o=_o3 ?x=_v31 ?y=_v32
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-answer2.psoa
new file mode 100644
index 00000000..8ee38ec3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-answer2.psoa
@@ -0,0 +1,3 @@
+?o=_o1 ?x=_v11 ?y=_v12 ?v=_v12
+?o=_o2 ?x=_v21 ?y=_v22 ?v=_v22
+?o=_o3 ?x=_v31 ?y=_v32 ?v=_v32
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-answer3.psoa
new file mode 100644
index 00000000..11d444ec
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-answer3.psoa
@@ -0,0 +1,3 @@
+?o=_o1 ?v=_v12
+?o=_o2 ?v=_v22
+?o=_o3 ?v=_v32
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-answer4.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-answer4.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-answer5.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-answer5.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-query1.psoa
new file mode 100644
index 00000000..ba7b23d3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-query1.psoa
@@ -0,0 +1 @@
+?o#_c1(+[?x ?y])
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-query2.psoa
new file mode 100644
index 00000000..cf23b5e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-query2.psoa
@@ -0,0 +1 @@
+?o#_c1(+[?x ?y] _p2->?v)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-query3.psoa
new file mode 100644
index 00000000..9140a96e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-query3.psoa
@@ -0,0 +1 @@
+?o#_c0(_p2->?v)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-query4.psoa
new file mode 100644
index 00000000..2386c6c5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-query4.psoa
@@ -0,0 +1 @@
+?o#_c0(_p1+>?v)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-query5.psoa
new file mode 100644
index 00000000..93e3e20a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa-atom-dependency5/psoa-atom-dependency5-query5.psoa
@@ -0,0 +1 @@
+?o#_c0(+[?x ?y])
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-KB.psoa
new file mode 100644
index 00000000..55f1bb83
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-KB.psoa
@@ -0,0 +1,8 @@
+Document(
+ Group(
+ _f1#_family(_John _Mary _child->_Tom)
+ _f2#_family([_Tom _Jane] _income->100000)
+ _f3#_family([_Mike _Jessie] [1951] _child->_Fred _child->_Jane)
+ _Jane#_Person([_female] [_bcs _mcs _phd] _job->_engineer)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-answer1.psoa
new file mode 100644
index 00000000..7e68fcc6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-answer1.psoa
@@ -0,0 +1 @@
+?1=_income ?2=100000
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-answer2.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-answer2.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-answer3.psoa
new file mode 100644
index 00000000..de06ecea
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-answer3.psoa
@@ -0,0 +1,2 @@
+?c=_Fred
+?c=_Jane
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-answer4.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-answer4.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-answer5.psoa
new file mode 100644
index 00000000..d69b0f91
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-answer5.psoa
@@ -0,0 +1,2 @@
+?o=_f3 ?c=_Fred
+?o=_f3 ?c=_Jane
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-query1.psoa
new file mode 100644
index 00000000..08a6636a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-query1.psoa
@@ -0,0 +1 @@
+_f2#_family(?1->?2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-query2.psoa
new file mode 100644
index 00000000..5188f91d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-query2.psoa
@@ -0,0 +1 @@
+_f1#Top(_John _Mary)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-query3.psoa
new file mode 100644
index 00000000..72687564
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-query3.psoa
@@ -0,0 +1 @@
+_f3#_family(_Mike _Jessie _child->?c)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-query4.psoa
new file mode 100644
index 00000000..b4110517
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-query4.psoa
@@ -0,0 +1 @@
+_Jane#_Person([_bcs _mcs _phd] _job->_engineer)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-query5.psoa
new file mode 100644
index 00000000..e22944a2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_facts_with_slots_and_tuples/psoa_facts_with_slots_and_tuples-query5.psoa
@@ -0,0 +1 @@
+?o#_family(_Mike _Jessie _child->?c)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-KB.psoa
new file mode 100644
index 00000000..4a1daf2b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-KB.psoa
@@ -0,0 +1,23 @@
+Document(
+ Group(
+ Forall ?X ?Y ?1 (
+ ?1#_R4(?X ?Y) :- ?1#_R3(?X ?Y _p2->_v2)
+ )
+ Forall ?X ?Y ?1 (
+ ?1#_R3(?X ?Y) :- And (?X#_C2(_p3->_v3) ?1#_R2(?X ?Y))
+ )
+ Forall ?1 ?X ?Y (
+ ?1#_R2(?X ?Y _p1->_v1 _p2->_v2) :- ?1#_R1(?X ?Y)
+ )
+ Forall ?1 (
+ ?1#_C2() :- ?1#_C1()
+ )
+
+ _a1#_C1()
+ _o1#_R1(_a1 _b1)
+ _a2#_C1(_p3->_v3 _p4->_v4)
+ _o2#_R1(_a2 _b2)
+ _a3#_C1()
+ _o3#_R1(_a3 _b3 _c3)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer2.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer2.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer3.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer3.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer4.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer4.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer5.psoa
new file mode 100644
index 00000000..a76958d3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer5.psoa
@@ -0,0 +1 @@
+?1=_o2 ?Y=_b2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer6.psoa
new file mode 100644
index 00000000..16eed3af
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer6.psoa
@@ -0,0 +1 @@
+?2=_o2 ?X=_a2 ?Y=_b2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer7.psoa
new file mode 100644
index 00000000..210aee67
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer7.psoa
@@ -0,0 +1,2 @@
+?p=_p1 ?v=_v1
+?p=_p2 ?v=_v2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer8.psoa
new file mode 100644
index 00000000..a92c29aa
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer8.psoa
@@ -0,0 +1,2 @@
+?3=_o2 ?X=_a2 ?Y=_b2 ?p=_p1 ?v=_v1
+?3=_o2 ?X=_a2 ?Y=_b2 ?p=_p2 ?v=_v2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer9.psoa
new file mode 100644
index 00000000..94d5bb8c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-answer9.psoa
@@ -0,0 +1,4 @@
+?r=_R1
+?r=_R2
+?r=_R3
+?r=_R4
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query1.psoa
new file mode 100644
index 00000000..0cf63eb2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query1.psoa
@@ -0,0 +1 @@
+_a1#_C2()
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query2.psoa
new file mode 100644
index 00000000..64e0db7c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query2.psoa
@@ -0,0 +1 @@
+_o1#_R1(_p1->_v1)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query3.psoa
new file mode 100644
index 00000000..05c1da84
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query3.psoa
@@ -0,0 +1 @@
+_o2#_R3(_a2 _b2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query4.psoa
new file mode 100644
index 00000000..e3f01985
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query4.psoa
@@ -0,0 +1 @@
+_o2#_R4(_a2 _b2 _p1->_v1 _p2->_v2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query5.psoa
new file mode 100644
index 00000000..70648d56
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query5.psoa
@@ -0,0 +1 @@
+?1#_R3(_a2 ?Y)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query6.psoa
new file mode 100644
index 00000000..35e9a0f9
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query6.psoa
@@ -0,0 +1 @@
+?2#_R4(?X ?Y)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query7.psoa
new file mode 100644
index 00000000..986f8457
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query7.psoa
@@ -0,0 +1 @@
+_o2#_R1(_a2 _b2 ?p->?v)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query8.psoa
new file mode 100644
index 00000000..3e6808e6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query8.psoa
@@ -0,0 +1 @@
+?3#_R4(?X ?Y ?p->?v)
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query9.psoa
new file mode 100644
index 00000000..3db9664a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/psoa_terms_test/psoa_terms_test-query9.psoa
@@ -0,0 +1 @@
+_o2#?r(_a2 _b2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-KB.psoa
new file mode 100644
index 00000000..27aeb3b9
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-KB.psoa
@@ -0,0 +1,15 @@
+Document (
+ Group (
+ Forall ?X ?Y (
+ ?X # _person(_descendent->?Y) :- ?X # _person(_child->?Y)
+ )
+ Forall ?X ?Y ?Z (
+ ?X # _person(_descendent->?Z) :-
+ And(?X # _person(_child->?Y) ?Y # _person(_descendent->?Z))
+ )
+ _Tom # _person(_male _child->_Amy _job->_professor)
+ _Eva # _person(_female _child->_Amy)
+ _Amy # _person([_female] [_bcs _mcs _phd] _child->_Fred)
+ _Fred # _person(_school->_UNB)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-answer1.psoa
new file mode 100644
index 00000000..6e81e0f3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-answer1.psoa
@@ -0,0 +1,5 @@
+?Ancestor=_Amy ?Who=_Fred
+?Ancestor=_Eva ?Who=_Amy
+?Ancestor=_Tom ?Who=_Amy
+?Ancestor=_Eva ?Who=_Fred
+?Ancestor=_Tom ?Who=_Fred
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-answer2.psoa
new file mode 100644
index 00000000..7c32e56d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-answer2.psoa
@@ -0,0 +1,2 @@
+?Ancestor1=_Tom ?Ancestor2=_Eva
+?Ancestor1=_Tom ?Ancestor2=_Amy
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-answer3.psoa
new file mode 100644
index 00000000..5d7c5b62
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-answer3.psoa
@@ -0,0 +1,3 @@
+?Ancestor1=_Tom ?Ancestor2=_Eva ?Who=_Amy
+?Ancestor1=_Tom ?Ancestor2=_Eva ?Who=_Fred
+?Ancestor1=_Tom ?Ancestor2=_Amy ?Who=_Fred
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-query1.psoa
new file mode 100644
index 00000000..9d2a2e2a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-query1.psoa
@@ -0,0 +1 @@
+?Ancestor # _person(_descendent->?Who)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-query2.psoa
new file mode 100644
index 00000000..3b3a7cb5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-query2.psoa
@@ -0,0 +1,2 @@
+And (?Ancestor1 # _person(_male _descendent->_Fred)
+ ?Ancestor2 # _person(_female _descendent->_Fred))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-query3.psoa
new file mode 100644
index 00000000..ae0096c1
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_frame_rule/recursive_frame_rule-query3.psoa
@@ -0,0 +1,2 @@
+And (?Ancestor1 # _person(_male _descendent->?Who)
+ ?Ancestor2 # _person(_female _descendent->?Who))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_rule/recursive_rule-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_rule/recursive_rule-KB.psoa
new file mode 100644
index 00000000..cdd267b0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_rule/recursive_rule-KB.psoa
@@ -0,0 +1,16 @@
+Document(
+ Group(
+ Forall ?anc ?par ?des (
+ _isDescendentOf(?des ?anc) :- And (_isChildOf(?des ?par) _isDescendentOf(?par ?anc))
+ )
+ Forall ?par ?ch (
+ _isDescendentOf(?ch ?par) :- _isChildOf(?ch ?par)
+ )
+ _isChildOf(_Pete _Sue)
+ _isChildOf(_Sue _John)
+ _isChildOf(_John _Tom)
+ _Pete#_Person(_sex->_Male _age->24)
+ _Sue#_Person(_sex->_Female _age->47)
+ _John#_Person(_sex->_Male _age->77)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_rule/recursive_rule-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_rule/recursive_rule-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_rule/recursive_rule-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_rule/recursive_rule-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_rule/recursive_rule-answer2.psoa
new file mode 100644
index 00000000..42c3bdc4
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_rule/recursive_rule-answer2.psoa
@@ -0,0 +1,2 @@
+?Who=_Pete ?Age=24
+?Who=_John ?Age=77
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_rule/recursive_rule-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_rule/recursive_rule-query1.psoa
new file mode 100644
index 00000000..dd34abdc
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_rule/recursive_rule-query1.psoa
@@ -0,0 +1 @@
+_isDescendentOf(_Sue _Tom)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_rule/recursive_rule-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_rule/recursive_rule-query2.psoa
new file mode 100644
index 00000000..adef2175
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/recursive_rule/recursive_rule-query2.psoa
@@ -0,0 +1 @@
+And(_isDescendentOf(?Who _Tom) ?Who#_Person(_sex->_Male _age->?Age))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/single-tuple_psoa_fact/single-tuple-psoa-fact-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/single-tuple_psoa_fact/single-tuple-psoa-fact-KB.psoa
new file mode 100644
index 00000000..5f3df11a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/single-tuple_psoa_fact/single-tuple-psoa-fact-KB.psoa
@@ -0,0 +1,5 @@
+Document(
+ Group(
+ _o1#_p(_a1 _a2)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/single-tuple_psoa_fact/single-tuple-psoa-fact-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/single-tuple_psoa_fact/single-tuple-psoa-fact-answer1.psoa
new file mode 100644
index 00000000..d9e3b5f4
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/single-tuple_psoa_fact/single-tuple-psoa-fact-answer1.psoa
@@ -0,0 +1 @@
+?1=_a1
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/single-tuple_psoa_fact/single-tuple-psoa-fact-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/single-tuple_psoa_fact/single-tuple-psoa-fact-query1.psoa
new file mode 100644
index 00000000..a8350e8a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/single-tuple_psoa_fact/single-tuple-psoa-fact-query1.psoa
@@ -0,0 +1 @@
+_o1#_p(?1 _a2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-KB.psoa
new file mode 100644
index 00000000..1ab293a5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-KB.psoa
@@ -0,0 +1,12 @@
+Document(
+ Group(
+ Forall ?X ( ?X#_block(_color->_blue _size->_big) )
+ _b1#_book
+ _b2#_book(_title->"Java Programming")
+ _o#_albmergeObj( _artist->"Elton John" _tivorite->"Goodbye Yellow Brick Road" )
+ Forall ?OID ?Tivorite
+ (
+ ?OID#_albsplitObj(_title->?Tivorite _favorite->?Tivorite) :- ?OID#_albmergeObj(_tivorite->?Tivorite)
+ )
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-answer2.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-answer2.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-answer3.psoa
new file mode 100644
index 00000000..97ae2737
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-answer3.psoa
@@ -0,0 +1 @@
+?B=_b2 ?T="Java Programming"
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-query1.psoa
new file mode 100644
index 00000000..9f5ad2ac
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-query1.psoa
@@ -0,0 +1 @@
+_a#_block(_color->_blue)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-query2.psoa
new file mode 100644
index 00000000..fcc7a79b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-query2.psoa
@@ -0,0 +1 @@
+_b1#_block(_color->_blue)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-query3.psoa
new file mode 100644
index 00000000..08e603ff
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution1/slotribution1-query3.psoa
@@ -0,0 +1 @@
+?B#_book(_title->?T)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution2/slotribution2-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution2/slotribution2-KB.psoa
new file mode 100644
index 00000000..88ed5922
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution2/slotribution2-KB.psoa
@@ -0,0 +1,22 @@
+Document(
+ Prefix(: )
+ Prefix(func: )
+
+ Group(
+ Forall ?C ?X (
+ ?C#:Country(_capital->?X) :-
+ :geo-in(:government(?C) ?X)
+ )
+
+ Forall ?S ?X ?F ?V (
+ ?S#:Startup(_capital->?X) :-
+ And(:founder-capital(?S ?F)
+ :venture-capital(?S ?V)
+ ?X = External(func:numeric-add(?F ?V)))
+ )
+
+ :geo-in(:government(:Canada) :Ottawa)
+ :founder-capital("XYZ Inc." 100000)
+ :venture-capital("XYZ Inc." 200000)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution2/slotribution2-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution2/slotribution2-answer1.psoa
new file mode 100644
index 00000000..a0440e66
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution2/slotribution2-answer1.psoa
@@ -0,0 +1 @@
+?C= ?X=
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution2/slotribution2-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution2/slotribution2-answer2.psoa
new file mode 100644
index 00000000..53e60939
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution2/slotribution2-answer2.psoa
@@ -0,0 +1 @@
+?S="XYZ Inc." ?X=300000
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution2/slotribution2-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution2/slotribution2-query1.psoa
new file mode 100644
index 00000000..d708f9f3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution2/slotribution2-query1.psoa
@@ -0,0 +1 @@
+?C#:Country(_capital->?X)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution2/slotribution2-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution2/slotribution2-query2.psoa
new file mode 100644
index 00000000..287ed817
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/slotribution2/slotribution2-query2.psoa
@@ -0,0 +1 @@
+?S#:Startup(_capital->?X)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/startup/startup-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/startup/startup-KB.psoa
new file mode 100644
index 00000000..48ca00a7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/startup/startup-KB.psoa
@@ -0,0 +1,19 @@
+Document (
+ Prefix(func: )
+ Prefix(pred: )
+
+ Group (
+ Forall ?X ?Y ?Z ?EX ?EY (
+ _startup(-[?X ?Y] _employee->?Z) :-
+ And(_cofounders(?X ?Y) _hire(?X ?Z)
+ _equity(?X ?EX) _equity(?Y ?EY)
+ External(
+ pred:numeric-less-than-or-equal(
+ External(func:numeric-add(?EX ?EY)) 100)))
+ )
+
+ _cofounders(_Ernie _Tony) _hire(_Ernie _Kate)
+ _equity(_Ernie 50) _equity(_Tony 30)
+ _startup##_company
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/startup/startup-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/startup/startup-answer1.psoa
new file mode 100644
index 00000000..9522b9e8
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/startup/startup-answer1.psoa
@@ -0,0 +1 @@
+?X=_Ernie ?Y=_Tony
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/startup/startup-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/startup/startup-answer2.psoa
new file mode 100644
index 00000000..2a394af8
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/startup/startup-answer2.psoa
@@ -0,0 +1 @@
+?X=_Ernie ?Y=_Tony ?Z=_Kate
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/startup/startup-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/startup/startup-query1.psoa
new file mode 100644
index 00000000..af4f0084
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/startup/startup-query1.psoa
@@ -0,0 +1 @@
+_company(-[?X ?Y])
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/startup/startup-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/startup/startup-query2.psoa
new file mode 100644
index 00000000..3371d54a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/startup/startup-query2.psoa
@@ -0,0 +1 @@
+_company(-[?X ?Y] _employee->?Z)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-KB.psoa
new file mode 100644
index 00000000..09b1fc1f
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-KB.psoa
@@ -0,0 +1,26 @@
+Document (
+ Prefix (: )
+
+ Group (
+ Forall ?X
+ (
+ ?X#:c1 :- ?X#:c2
+ )
+ Forall ?X
+ (
+ ?X#:c1(:p1->:v1) :- ?X#:c2(:p2->:v1)
+ )
+ :o1#:c2
+ :o2#:c2(:p2->:v1)
+
+ Forall ?X
+ (
+ ?X#:c1 :- ?X#:c3
+ )
+ Forall ?X
+ (
+ ?X#Top(:p1->:v1) :- ?X#:c3(:p2->:v1)
+ )
+ :o3#:c3(:p2->:v1)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-answer2.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-answer2.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-answer3.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-answer3.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-answer4.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-answer4.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-answer5.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-answer5.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-query1.psoa
new file mode 100644
index 00000000..79204bc8
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-query1.psoa
@@ -0,0 +1 @@
+:o1#:c1
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-query2.psoa
new file mode 100644
index 00000000..4f3440ae
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-query2.psoa
@@ -0,0 +1 @@
+:o2#:c1
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-query3.psoa
new file mode 100644
index 00000000..1fc357ac
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-query3.psoa
@@ -0,0 +1 @@
+:o1#:c1(:p1->:v1)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-query4.psoa
new file mode 100644
index 00000000..57a8df71
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-query4.psoa
@@ -0,0 +1 @@
+:o2#:c1(:p1->:v1)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-query5.psoa
new file mode 100644
index 00000000..e66512aa
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-axiomization/subclass-axiomization-query5.psoa
@@ -0,0 +1 @@
+:o3#:c1(:p1->:v1)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-KB-Local.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-KB-Local.psoa
new file mode 100644
index 00000000..62b1d654
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-KB-Local.psoa
@@ -0,0 +1,54 @@
+Document(
+ Group(
+ _swan##_bird
+ _pigeon##_bird
+
+
+ Forall ?X (
+ ?X#Top(_hasPart->_wings) :- ?X#_bird
+ )
+
+
+ Forall ?X (
+ ?X#Top(_inhabits->_water) :- ?X#_swan
+ )
+
+
+ _b1#_swan(_age->2)
+ _b2#_pigeon(_age->4)
+ )
+)
+
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-KB.psoa
new file mode 100644
index 00000000..846a753a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-KB.psoa
@@ -0,0 +1,56 @@
+Document(
+ Prefix (: )
+
+ Group(
+ :swan##:bird
+ :pigeon##:bird
+
+
+ Forall ?X (
+ ?X#Top(:hasPart->:wings) :- ?X#:bird
+ )
+
+
+ Forall ?X (
+ ?X#Top(:inhabits->:water) :- ?X#:swan
+ )
+
+
+ :b1#:swan(:age->2)
+ :b2#:pigeon(:age->4)
+ )
+)
+
+
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer10.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer10.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer2.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer2.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer3.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer3.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer4.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer4.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer5.psoa
new file mode 100644
index 00000000..c32b56a3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer5.psoa
@@ -0,0 +1 @@
+?P=
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer6.psoa
new file mode 100644
index 00000000..33709fd5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer6.psoa
@@ -0,0 +1,2 @@
+?B=
+?B=
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer7.psoa
new file mode 100644
index 00000000..376f4461
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer7.psoa
@@ -0,0 +1 @@
+?B= ?L=
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer8.psoa
new file mode 100644
index 00000000..2368bd01
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer8.psoa
@@ -0,0 +1,2 @@
+?B= ?A=2
+?B= ?A=4
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer9.psoa
new file mode 100644
index 00000000..33709fd5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-answer9.psoa
@@ -0,0 +1,2 @@
+?B=
+?B=
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query1.psoa
new file mode 100644
index 00000000..086e03e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query1.psoa
@@ -0,0 +1 @@
+:b1#:swan(:hasPart->:wings)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query10.psoa
new file mode 100644
index 00000000..ed58b311
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query10.psoa
@@ -0,0 +1 @@
+?B#:apple(:hasPart->:wings)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query2.psoa
new file mode 100644
index 00000000..e8a49e8e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query2.psoa
@@ -0,0 +1 @@
+:b1#:bird(:inhabits->:water)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query3.psoa
new file mode 100644
index 00000000..d294a436
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query3.psoa
@@ -0,0 +1 @@
+:b2#:bird(:inhabits->:water)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query4.psoa
new file mode 100644
index 00000000..cf6be0ea
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query4.psoa
@@ -0,0 +1 @@
+:b1#:bird(:age->2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query5.psoa
new file mode 100644
index 00000000..ace93ef3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query5.psoa
@@ -0,0 +1 @@
+:b1#:swan(:hasPart->?P)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query6.psoa
new file mode 100644
index 00000000..5e385585
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query6.psoa
@@ -0,0 +1 @@
+?B#:bird
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query7.psoa
new file mode 100644
index 00000000..4aef877c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query7.psoa
@@ -0,0 +1 @@
+?B#:bird(:inhabits->?L)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query8.psoa
new file mode 100644
index 00000000..dda57112
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query8.psoa
@@ -0,0 +1 @@
+?B#:bird(:age->?A)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query9.psoa
new file mode 100644
index 00000000..81b90ea5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-bird/subclass-bird-query9.psoa
@@ -0,0 +1 @@
+?B#:bird(:hasPart->:wings)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-KB.psoa
new file mode 100644
index 00000000..2370b8ba
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-KB.psoa
@@ -0,0 +1,7 @@
+Document(
+ Group(
+ _o1#_c1(-[_a1 _a2])
+ _o2#_c1(_p->_v)
+ _c1##_c2
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-answer1.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-answer1.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-answer2.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-answer2.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-answer3.psoa
new file mode 100644
index 00000000..4a9c1447
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-answer3.psoa
@@ -0,0 +1 @@
+?1=_o1 ?2=_a2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-answer4.psoa
new file mode 100644
index 00000000..b643d3a1
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-answer4.psoa
@@ -0,0 +1 @@
+?1=_o2 ?2=_v
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-query1.psoa
new file mode 100644
index 00000000..8452600e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-query1.psoa
@@ -0,0 +1 @@
+_o1#_c2(-[_a1 _a2])
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-query2.psoa
new file mode 100644
index 00000000..966654b5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-query2.psoa
@@ -0,0 +1 @@
+_o2#_c2(_p->_v)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-query3.psoa
new file mode 100644
index 00000000..70d8eac0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-query3.psoa
@@ -0,0 +1 @@
+?1#_c2(-[_a1 ?2])
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-query4.psoa
new file mode 100644
index 00000000..a08a2d80
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test1/subclass-test1-query4.psoa
@@ -0,0 +1 @@
+?1#_c2(_p->?2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-KB.psoa
new file mode 100644
index 00000000..a55c99e1
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-KB.psoa
@@ -0,0 +1,13 @@
+Document(
+ Group(
+ _o1#_c1(_p->_v1)
+ _o2#_c3(_p->_v2)
+ _o3#_c5(_p->_v3 _q->_w0)
+ _c1##_c2
+ _c1##_c3
+ _c2##_c4
+ _c3##_c4
+ _c4##_c6
+ _c5##_c6
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-answer1.psoa
new file mode 100644
index 00000000..4018442d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-answer1.psoa
@@ -0,0 +1,5 @@
+?c=_c1
+?c=_c2
+?c=_c3
+?c=_c4
+?c=_c6
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-answer2.psoa
new file mode 100644
index 00000000..c78bf696
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-answer2.psoa
@@ -0,0 +1,2 @@
+?o=_o1
+?o=_o2
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-answer3.psoa
new file mode 100644
index 00000000..6b2af9ab
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-answer3.psoa
@@ -0,0 +1,3 @@
+?o=_o1 ?v=_v1
+?o=_o2 ?v=_v2
+?o=_o3 ?v=_v3
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-answer4.psoa
new file mode 100644
index 00000000..66640f4e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-answer4.psoa
@@ -0,0 +1 @@
+?o=_o3 ?v=_v3 ?w=_w0
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-query1.psoa
new file mode 100644
index 00000000..c3c0727b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-query1.psoa
@@ -0,0 +1 @@
+_o1#?c
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-query2.psoa
new file mode 100644
index 00000000..53f56a90
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-query2.psoa
@@ -0,0 +1 @@
+?o#_c4
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-query3.psoa
new file mode 100644
index 00000000..acfdb4b5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-query3.psoa
@@ -0,0 +1 @@
+?o#_c6(_p->?v)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-query4.psoa
new file mode 100644
index 00000000..49c56d98
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/subclass-test2/subclass-test2-query4.psoa
@@ -0,0 +1 @@
+?o#_c6(_p->?v _q->?w)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-KB.psoa
new file mode 100644
index 00000000..7e17546a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-KB.psoa
@@ -0,0 +1,11 @@
+Document (
+ Group (
+ Forall ?Pers ?JobTitle ?Comp1 ?Comp2 (
+ _transfer(?Pers ?Comp1 ?Comp2) :-
+ And(_work(?Pers ?Comp1 ?JobTitle)
+ _acquire(_buyer->?Comp2 _seller->?Comp1)))
+ _e1#_transfer(_Tony _Rho4biz _Chi4corp _bonus->20000)
+ _work(_Kate _Rho4biz "Director")
+ _a1#_acquire(_buyer->_Chi4corp _seller->_Rho4biz)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer1.psoa
new file mode 100644
index 00000000..d3186719
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer1.psoa
@@ -0,0 +1 @@
+?P=_Kate ?C=_Rho4biz ?J="Director"
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer10.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer10.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer11.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer11.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer2.psoa
new file mode 100644
index 00000000..d3186719
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer2.psoa
@@ -0,0 +1 @@
+?P=_Kate ?C=_Rho4biz ?J="Director"
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer3.psoa
new file mode 100644
index 00000000..56c061f0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer3.psoa
@@ -0,0 +1,2 @@
+?P=_Kate ?C1=_Rho4biz ?C2=_Chi4corp
+?P=_Tony ?C1=_Rho4biz ?C2=_Chi4corp
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer4.psoa
new file mode 100644
index 00000000..56c061f0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer4.psoa
@@ -0,0 +1,2 @@
+?P=_Kate ?C1=_Rho4biz ?C2=_Chi4corp
+?P=_Tony ?C1=_Rho4biz ?C2=_Chi4corp
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer5.psoa
new file mode 100644
index 00000000..d3186719
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer5.psoa
@@ -0,0 +1 @@
+?P=_Kate ?C=_Rho4biz ?J="Director"
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer6.psoa
new file mode 100644
index 00000000..c3da04e0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer6.psoa
@@ -0,0 +1 @@
+?J="Director"
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer7.psoa
new file mode 100644
index 00000000..289cc91e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer7.psoa
@@ -0,0 +1 @@
+No
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer9.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-answer9.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query1.psoa
new file mode 100644
index 00000000..e8999c2b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query1.psoa
@@ -0,0 +1 @@
+_work(?P ?C ?J)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query10.psoa
new file mode 100644
index 00000000..75f46e57
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query10.psoa
@@ -0,0 +1 @@
+_work()
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query11.psoa
new file mode 100644
index 00000000..9a7f235a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query11.psoa
@@ -0,0 +1 @@
+_transfer()
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query2.psoa
new file mode 100644
index 00000000..cb76b360
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query2.psoa
@@ -0,0 +1 @@
+?#_work(?P ?C ?J)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query3.psoa
new file mode 100644
index 00000000..7d84d128
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query3.psoa
@@ -0,0 +1 @@
+_transfer(?P ?C1 ?C2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query4.psoa
new file mode 100644
index 00000000..eb672685
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query4.psoa
@@ -0,0 +1 @@
+?#_transfer(?P ?C1 ?C2)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query5.psoa
new file mode 100644
index 00000000..24dd153a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query5.psoa
@@ -0,0 +1 @@
+_work(+[_Kate _Rho4biz "Director"] +[?P ?C ?J])
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query6.psoa
new file mode 100644
index 00000000..40b26bf7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query6.psoa
@@ -0,0 +1 @@
+?#_work(+[_Kate _Rho4biz "Director"] +[_Kate _Rho4biz ?J])
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query7.psoa
new file mode 100644
index 00000000..02f89bb8
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query7.psoa
@@ -0,0 +1 @@
+_work(+[_Kate _Rho4biz "Director"] +[_Tony ?C ?J])
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query9.psoa
new file mode 100644
index 00000000..4b096dec
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/test/transfer/transfer-query9.psoa
@@ -0,0 +1 @@
+?#_work
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_dependent-1tuple3/README.txt b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_dependent-1tuple3/README.txt
new file mode 100644
index 00000000..ff6b6c7a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_dependent-1tuple3/README.txt
@@ -0,0 +1,10 @@
+For general information about tests, see
+https://github.com/RuleML/PSOATransRunComponents/blob/master/PSOATransRun/test/README.txt
+
+An Eclipse Run configuration may be used to automate the test execution as follows:
+Run Configurations
+ Main
+ Project: PSOATransRun
+ Main class: org.ruleml.psoa.psoatransrun.PSOATransRunCmdLine
+ Arguments
+ Program Arguments: --test -s -i ...\git\PSOATransRunComponents\PSOATransRun\testsynsem-staticOnly
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_dependent-1tuple3/atomic_dependent-1tuple3-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_dependent-1tuple3/atomic_dependent-1tuple3-KB.psoa
new file mode 100644
index 00000000..f636728a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_dependent-1tuple3/atomic_dependent-1tuple3-KB.psoa
@@ -0,0 +1,13 @@
+RuleML(
+ Assert(
+ % atomic-formula expressivity
+ % relationships
+ % single tuple
+ % dependent tuple
+ % explicit tuple
+ % 3 elements
+ % constant elements
+ p(+[a b c])
+ % prdtupterm('_1','_p','_a','_b','_c').
+ % memterm('_1','_p').
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer1.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer1.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer2.psoa
new file mode 100644
index 00000000..4aae6ffc
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer2.psoa
@@ -0,0 +1 @@
+?x=_1
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query1.psoa
new file mode 100644
index 00000000..ee09f27e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query1.psoa
@@ -0,0 +1,6 @@
+?(+[a b c])
+% (prdtupterm(Q2,Q1,'_a','_b','_c'),memterm(Q2,Q1)).
+% Query contains "don't care" predicate variable (should yield Warning msg)
+% Correctness Criterion:Query for oidless ground atom with dependent single tuple of
+% three constant arguments and "don't care" variable predicate
+% against KB containing only a matching ground atom answers Yes.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query2.psoa
new file mode 100644
index 00000000..b6568ccf
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query2.psoa
@@ -0,0 +1,6 @@
+?x#p(+[a b c])
+% (prdtupterm(Qx,'_p','_a','_b','_c'),memterm(Qx,'_p')).
+% Correctness Criterion: Query for oidful ground atom with dependent single tuple of
+% three constant arguments and variable oid
+% against KB containing only the oidless version of that ground atom answers with
+% the appropriate bindings.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_independent-1tuple3/atomic_independent-1tuple3-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_independent-1tuple3/atomic_independent-1tuple3-KB.psoa
new file mode 100644
index 00000000..c4b3290e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnly/atomic_independent-1tuple3/atomic_independent-1tuple3-KB.psoa
@@ -0,0 +1,12 @@
+RuleML(
+ Assert(
+ % atomic-formula expressivity
+ % pn1 (perspeneutral)
+ % single tuple
+ % independent tuple
+ % 3 elements
+ % constant elements
+ p(-[a b c])
+ % tupterm('_1','_a','_b','_c').
+ % memterm('_1','_p').
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnlyAbsent/atomic_independent-1tuple3/atomic_independent-1tuple3-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnlyAbsent/atomic_independent-1tuple3/atomic_independent-1tuple3-KB.psoa
new file mode 100644
index 00000000..c4b3290e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem-staticOnlyAbsent/atomic_independent-1tuple3/atomic_independent-1tuple3-KB.psoa
@@ -0,0 +1,12 @@
+RuleML(
+ Assert(
+ % atomic-formula expressivity
+ % pn1 (perspeneutral)
+ % single tuple
+ % independent tuple
+ % 3 elements
+ % constant elements
+ p(-[a b c])
+ % tupterm('_1','_a','_b','_c').
+ % memterm('_1','_p').
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/README.txt b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/README.txt
new file mode 100644
index 00000000..5f6c8dab
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/README.txt
@@ -0,0 +1,13 @@
+For general information about tests, see
+https://github.com/RuleML/PSOATransRunComponents/blob/master/PSOATransRun/test/README.txt
+
+An Eclipse Run configuration may be used to automate the test execution as follows:
+Run Configurations
+ Main
+ Project: PSOATransRun
+ Main class: org.ruleml.psoa.psoatransrun.PSOATransRunCmdLine
+ Arguments
+ Program Arguments: --test -i ...\git\PSOATransRunComponents\PSOATransRun\testsynsem
+OR
+ Program Arguments: --test -s -i ...\git\PSOATransRunComponents\PSOATransRun\testsynsem
+
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-KB.psoa
new file mode 100644
index 00000000..2f04faab
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-KB.psoa
@@ -0,0 +1,14 @@
+RuleML(
+ Assert(
+ % atomic-formula expressivity
+ % 2 relationships
+ % single tuple
+ % dependent tuple
+ % implicit tuple
+ % 1 element
+ % constant elements
+ p(a)
+ p(b)
+ % '_p'('_a').
+ % '_p'('_b').
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-answer1.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-answer1.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-answer10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-answer10.psoa
new file mode 100644
index 00000000..c25ac348
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-answer10.psoa
@@ -0,0 +1,2 @@
+?x=_a
+?x=_b
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-answer2.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-answer2.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-query1.psoa
new file mode 100644
index 00000000..4e460b50
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-query1.psoa
@@ -0,0 +1,3 @@
+p(a)
+% '_p'('_a')
+% Correctness Criterion: query for the first of two implicit atoms in a KB answers Yes.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-query10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-query10.psoa
new file mode 100644
index 00000000..9d096e53
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-query10.psoa
@@ -0,0 +1,4 @@
+p(?x)
+% '_p'(Qx).
+% Correctness Criterion: query for the an implicit atom with query variable matching
+% both of two implicit atoms in a KB answers with both bindings.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-query2.psoa
new file mode 100644
index 00000000..e0015a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_2implicit-1tuple1/atomic_2implicit-1tuple1-query2.psoa
@@ -0,0 +1,3 @@
+p(b)
+% '_p'('_b')
+% Correctness Criterion: query for the second of two implicit atoms in a KB answers Yes.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_Top_independent-1tuple3/atomic_Top_independent-1tuple3-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_Top_independent-1tuple3/atomic_Top_independent-1tuple3-KB.psoa
new file mode 100644
index 00000000..bbb4fdb2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_Top_independent-1tuple3/atomic_Top_independent-1tuple3-KB.psoa
@@ -0,0 +1,5 @@
+RuleML(
+ Assert (
+ Top(-[a b c])
+ % tupterm('_1','_a','_b','_c').
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_Top_independent-1tuple3/atomic_Top_independent-1tuple3-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_Top_independent-1tuple3/atomic_Top_independent-1tuple3-answer1.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_Top_independent-1tuple3/atomic_Top_independent-1tuple3-answer1.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_Top_independent-1tuple3/atomic_Top_independent-1tuple3-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_Top_independent-1tuple3/atomic_Top_independent-1tuple3-answer2.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_Top_independent-1tuple3/atomic_Top_independent-1tuple3-answer2.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_Top_independent-1tuple3/atomic_Top_independent-1tuple3-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_Top_independent-1tuple3/atomic_Top_independent-1tuple3-query1.psoa
new file mode 100644
index 00000000..c37f00e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_Top_independent-1tuple3/atomic_Top_independent-1tuple3-query1.psoa
@@ -0,0 +1,4 @@
+Top(-[a b c])
+% tupterm('_1','_a','_b','_c').
+% Correctness Criterion: Query for ground atom with explicit Top-independent single tuple of
+% three constant arguments against KB containing only that ground atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_Top_independent-1tuple3/atomic_Top_independent-1tuple3-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_Top_independent-1tuple3/atomic_Top_independent-1tuple3-query2.psoa
new file mode 100644
index 00000000..841052c6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_Top_independent-1tuple3/atomic_Top_independent-1tuple3-query2.psoa
@@ -0,0 +1,6 @@
+Top(+[a b c])
+% tupterm(Q1,'_a','_b','_c').
+% Correctness Criterion: Query for ground atom with explicit syntactically-Top-dependent
+% single tuple of
+% three constant arguments against KB containing only the syntactically-independent version of that
+% ground atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-KB.psoa
new file mode 100644
index 00000000..2df191ef
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-KB.psoa
@@ -0,0 +1,12 @@
+RuleML(
+ Assert(
+ % atomic-formula expressivity
+ % relationships
+ % single tuple
+ % dependent tuple
+ % explicit tuple
+ % 3 elements
+ % constant elements
+ p(+[q(+[a])])
+ % '_p'('_q'('_a')).
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-answer1.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-answer1.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-answer2.psoa
new file mode 100644
index 00000000..c3c00e23
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-answer2.psoa
@@ -0,0 +1 @@
+?x=_q(_a)
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-answer3.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-answer3.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-query1.psoa
new file mode 100644
index 00000000..714983d8
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-query1.psoa
@@ -0,0 +1,4 @@
+p(+[q(+[a])])
+% '_p'('_q'('_a')).
+% Correctness Criterion: Query for ground atom with explicit dependent single tuple of
+% one nested argument against KB containing only that ground atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-query2.psoa
new file mode 100644
index 00000000..ee04e8b8
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-query2.psoa
@@ -0,0 +1,4 @@
+p(+[?x])
+% '_p'(Qx).
+% Correctness Criterion: Query for non-ground atom with one tuple of arity one
+% against KB containing a matching nested ground atom answers with appropriate binding.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-query3.psoa
new file mode 100644
index 00000000..5cf59957
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple1_functional/atomic_dependent-1tuple1_functional-query3.psoa
@@ -0,0 +1,4 @@
+q(a)
+% false.
+% Correctness Criterion: Query for ground atom of 1 tuple of arity 1
+% against KB containing a ground atom with functional term syntactically matching query atom answers No.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-KB.psoa
new file mode 100644
index 00000000..0327e6cb
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-KB.psoa
@@ -0,0 +1,12 @@
+RuleML(
+ Assert(
+ % atomic-formula expressivity
+ % relationships
+ % single tuple
+ % dependent tuple
+ % explicit tuple
+ % 3 elements
+ % constant elements
+ p(+[a b c])
+ % '_p'('_a','_b','_c').
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer1.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer1.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer10.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer10.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer11.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer11.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer2.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer2.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer3.psoa
new file mode 100644
index 00000000..371e6b44
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer3.psoa
@@ -0,0 +1 @@
+?x=_a
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer4.psoa
new file mode 100644
index 00000000..55efd593
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer4.psoa
@@ -0,0 +1 @@
+?x=_a ?y=_b ?z=_c
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer5.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer5.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer6.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer6.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer7.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer7.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer8.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer8.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer9.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer9.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query1.psoa
new file mode 100644
index 00000000..11e5f5fb
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query1.psoa
@@ -0,0 +1,4 @@
+p(+[a b c])
+% '_p'('_a','_b','_c').
+% Correctness Criterion: Query for ground atom with explicit dependent single tuple of
+% three constant arguments against KB containing only that ground atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query10.psoa
new file mode 100644
index 00000000..a53a929a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query10.psoa
@@ -0,0 +1,4 @@
+Top(-[a b c])
+% tupterm(Q1,'_a','_b','_c').
+% Correctness Criterion: Query for ground Top atom with independent single tuple of
+% three constant arguments against KB containg a similar dependent ground 'p' atom answers "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query11.psoa
new file mode 100644
index 00000000..3304ecd0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query11.psoa
@@ -0,0 +1,5 @@
+?#p(+[a b c])
+% (prdtupterm(Q1,'_p','_a','_b','_c'),memterm(Q1,'_p')).
+% Correctness Criterion: Query for oidful ground atom with dependent single tuple of
+% three constant arguments and variable oid
+% against KB containing only the oidless version of that ground atom answers Yes.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query2.psoa
new file mode 100644
index 00000000..e59e4b39
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query2.psoa
@@ -0,0 +1,4 @@
+p(+[c b a])
+% '_p'('_c','_b','_a').
+% Correctness Criterion: Query for ground atom with explicit dependent single tuple of three constant arguments
+% against KB containing a similar ground atom with permuted arguments answers "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query3.psoa
new file mode 100644
index 00000000..f0146001
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query3.psoa
@@ -0,0 +1,5 @@
+p(+[?x b c])
+% '_p'(Qx,'_b','_c').
+% Correctness Criterion: Query for non-ground atom with explicit dependent single tuple of
+% one variable and two constant arguments
+% against KB containing a matching ground atom answers with appropriate substitution.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query4.psoa
new file mode 100644
index 00000000..4233c0d7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query4.psoa
@@ -0,0 +1,5 @@
+p(+[?x ?y ?z])
+% '_p'(Qx,Qy,Qz).
+% Correctness Criterion: Query for non-ground atom with explicit dependent single tuple of
+% three variable arguments
+% against KB containing a matching ground atom answers with appropriate substitution.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query5.psoa
new file mode 100644
index 00000000..0e1f8f12
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query5.psoa
@@ -0,0 +1,5 @@
+p(?x ?y ?x)
+% '_p'(Qx,Qy,Qx).
+% Correctness Criterion: Query for non-ground atom with explicit dependent single tuple of
+% all variable arguments where one variable appears twice
+% against KB containing a similar ground atom with distinct arguments answers with "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query6.psoa
new file mode 100644
index 00000000..308fd674
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query6.psoa
@@ -0,0 +1,4 @@
+p(a b c)
+% '_p'('_a','_b','_c').
+% Correctness Criterion: Query for ground atom with implicit single tuple of three constant arguments
+% against KB containing only the explicit syntax for that ground atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query7.psoa
new file mode 100644
index 00000000..6c671cf7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query7.psoa
@@ -0,0 +1,4 @@
+p(-[a b c])
+% false.
+% Correctness Criterion: Query for ground atom with independent single tuple of three constant arguments
+% against KB containing only the dependent version of that ground atom answers "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query8.psoa
new file mode 100644
index 00000000..71c84ffe
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query8.psoa
@@ -0,0 +1,4 @@
+Top(+[a b c])
+% tupterm(Q1,'_a','_b','_c').
+% Correctness Criterion: Query for ground Top atom with dependent single tuple of
+% three constant arguments against KB containg a similar dependent ground 'p' atom answers "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query9.psoa
new file mode 100644
index 00000000..a5f9c722
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query9.psoa
@@ -0,0 +1,4 @@
+Top(a b c)
+% tupterm(Q1,'_a','_b','_c').
+% Correctness Criterion: Query for ground Top atom with implicit single tuple of
+% three constant arguments against KB containg a similar dependent ground 'p' atom answers "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-KB.psoa
new file mode 100644
index 00000000..7903e586
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-KB.psoa
@@ -0,0 +1,13 @@
+RuleML(
+ Assert(
+ % atomic-formula expressivity
+ % oidful
+ % mixed descriptor
+ o#p(+[a] -[b] m1->n1 m2+>n2)
+ % Translated KB:
+ % prdtupterm('_o','_p','_a').
+ % tupterm('_o','_b').
+ % sloterm('_o','_m1','_n1').
+ % prdsloterm('_o','_p','_m2','_n2').
+ % memterm('_o','_p').
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-answer1.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-answer1.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-answer2.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-answer2.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-answer3.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-answer3.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-answer4.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-answer4.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-answer5.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-answer5.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-answer6.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-answer6.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-query1.psoa
new file mode 100644
index 00000000..45013e51
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-query1.psoa
@@ -0,0 +1,4 @@
+o#p(+[a] -[b] m1->n1 m2+>n2)
+% (prdtupterm('_o','_p','_a'),tupterm('_o','_b'),sloterm('_o','_m1','_n1'),prdsloterm('_o','_p','_m2','_n2'),memterm('_o','_p')).
+% Correctness Criterion: Query for ground atom with fully mixed descriptor
+% against KB containing only that ground atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-query2.psoa
new file mode 100644
index 00000000..4ccfa6d0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-query2.psoa
@@ -0,0 +1,4 @@
+o#p(a)
+% (prdtupterm('_o','_p','_a'),memterm('_o','_p')).
+% Correctness Criterion: Query for oidful ground atom with implicit (dependent) tuple, arity 1
+% against KB containing only matching ground atom with fully mixed descriptor answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-query3.psoa
new file mode 100644
index 00000000..0afa9bbc
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-query3.psoa
@@ -0,0 +1,4 @@
+p(a)
+% (prdtupterm(Q1,'_p','_a'),memterm(Q1,'_p')).
+% Correctness Criterion: Query for oidless ground atom with implicit (dependent) tuple, arity 1
+% against KB containing only matching ground atom with fully mixed descriptor answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-query4.psoa
new file mode 100644
index 00000000..bcf22488
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-query4.psoa
@@ -0,0 +1,4 @@
+Top(-[b])
+% tupterm(Q1,'_b').
+% Correctness Criterion: Query for oidless Top atom with independent tuple, arity 1
+% against KB containing only matching ground atom with fully mixed descriptor answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-query5.psoa
new file mode 100644
index 00000000..147055eb
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-query5.psoa
@@ -0,0 +1,4 @@
+Top(m1->n1)
+% sloterm(Q1,'_m1','_n1').
+% Correctness Criterion: Query for oidless Top atom with independent slot
+% against KB containing only matching ground atom with fully mixed descriptor answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-query6.psoa
new file mode 100644
index 00000000..0bbf7511
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_full_descriptor_nonnested/atomic_full_descriptor_nonnested-query6.psoa
@@ -0,0 +1,4 @@
+p(m2+>n2)
+% (prdsloterm(Q1,'_p','_m2','_n2'),memterm(Q1,'_p')).
+% Correctness Criterion: Query for oidless Top atom with independent slot
+% against KB containing only matching ground atom with fully mixed descriptor answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-KB.psoa
new file mode 100644
index 00000000..ab1a0c77
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-KB.psoa
@@ -0,0 +1,12 @@
+RuleML(
+ Assert(
+ % atomic-formula expressivity
+ % relationships
+ % single tuple
+ % dependent tuple
+ % implicit tuple
+ % 3 elements
+ % constant elements
+ p(a b c)
+ % '_p'('_a','_b','_c').
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer1.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer1.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer10.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer10.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer11.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer11.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer2.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer2.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer3.psoa
new file mode 100644
index 00000000..371e6b44
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer3.psoa
@@ -0,0 +1 @@
+?x=_a
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer4.psoa
new file mode 100644
index 00000000..55efd593
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer4.psoa
@@ -0,0 +1 @@
+?x=_a ?y=_b ?z=_c
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer5.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer5.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer6.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer6.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer7.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer7.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer8.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer8.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer9.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-answer9.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query1.psoa
new file mode 100644
index 00000000..cba131b9
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query1.psoa
@@ -0,0 +1,4 @@
+p(a b c)
+% '_p'('_a','_b','_c').
+% Correctness Criterion: Query for ground atom with implicit single tuple of
+% three constant arguments against KB containing only that ground atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query10.psoa
new file mode 100644
index 00000000..9a39413e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query10.psoa
@@ -0,0 +1,4 @@
+Top(-[a b c])
+% tupterm(Q1,'_a','_b','_c').
+% Correctness Criterion: Query for ground Top atom with independent single tuple of
+% three constant arguments against KB containg a similar implicit ground 'p' atom answers "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query11.psoa
new file mode 100644
index 00000000..131295e5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query11.psoa
@@ -0,0 +1,4 @@
+Top(+[a b c])
+% tupterm(Q1,'_a','_b','_c').
+% Correctness Criterion: Query for ground Top atom with dependent single tuple of
+% three constant arguments against KB containg a similar implicit ground 'p' atom answers "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query2.psoa
new file mode 100644
index 00000000..03224ffb
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query2.psoa
@@ -0,0 +1,4 @@
+p(c b a)
+% '_p'('_c','_b','_a').
+% Correctness Criterion: Query for ground atom with implicit single tuple of three constant arguments
+% against KB containing a similar ground atom with permuted arguments answers "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query3.psoa
new file mode 100644
index 00000000..b4b8e69a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query3.psoa
@@ -0,0 +1,5 @@
+p(?x b c)
+% '_p'(Qx,'_b','_c').
+% Correctness Criterion: Query for non-ground atom with implicit single tuple of
+% one variable and two constant arguments
+% against KB containing a matching ground atom answers with appropriate substitution.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query4.psoa
new file mode 100644
index 00000000..0f8c34ac
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query4.psoa
@@ -0,0 +1,5 @@
+p(?x ?y ?z)
+% '_p'(Qx,Qy,Qz).
+% Correctness Criterion: Query for non-ground atom with implicit single tuple of
+% three variable arguments
+% against KB containing a matching ground atom answers with appropriate substitution.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query5.psoa
new file mode 100644
index 00000000..631e2502
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query5.psoa
@@ -0,0 +1,5 @@
+p(?x ?y ?x)
+% '_p'(Qx,Qy,Qx).
+% Correctness Criterion: Query for non-ground atom with implicit single tuple of
+% all variable arguments where one variable appears twice
+% against KB containing a similar ground atom with distinct arguments answers with "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query6.psoa
new file mode 100644
index 00000000..9a20619f
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query6.psoa
@@ -0,0 +1,4 @@
+p(+[a b c])
+% '_p'('_a','_b','_c').
+% Correctness Criterion: Query for ground atom with explicit dependent single tuple of three constant arguments
+% against KB containing only the implicit syntax for that ground atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query7.psoa
new file mode 100644
index 00000000..67eca14e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query7.psoa
@@ -0,0 +1,4 @@
+p(-[a b c])
+% false.
+% Correctness Criterion: Query for ground atom with independent single tuple of three constant arguments
+% against KB containing only the implicit dependent version of that ground atom answers "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query8.psoa
new file mode 100644
index 00000000..27e378db
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query8.psoa
@@ -0,0 +1,5 @@
+Top()
+% true.
+% Correctness Criterion: Query for oidless, descriptorless ground Top atom
+% against KB containing only an implicit dependent version of ground
+% atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query9.psoa
new file mode 100644
index 00000000..d7449252
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit-1tuple3/atomic_implicit-1tuple3-query9.psoa
@@ -0,0 +1,4 @@
+Top(a b c)
+% tupterm(Q1,'_a','_b','_c').
+% Correctness Criterion: Query for ground Top atom with implicit single tuple of
+% three constant arguments against KB containg a similar implicit ground 'p' atom answers "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-oid-1tuple1/atomic_implicit_1tuple1_nested-oid-1tuple1-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-oid-1tuple1/atomic_implicit_1tuple1_nested-oid-1tuple1-KB.psoa
new file mode 100644
index 00000000..0303f0a1
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-oid-1tuple1/atomic_implicit_1tuple1_nested-oid-1tuple1-KB.psoa
@@ -0,0 +1,19 @@
+RuleML(
+ Assert(
+ % atomic-formula expressivity
+ % relationships
+ % single tuple
+ % dependent tuple
+ % implicit tuple
+ % 1 element
+ % nested atom
+ % oid
+ % single tuple
+ % 1 element
+ % constant arguments
+ p(o#q(a))
+ % Translated KB:
+ % prdtupterm('_o','_q','_a').
+ % memterm('_o','_q').
+ % '_p'('_o').
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-oid-1tuple1/atomic_implicit_1tuple1_nested-oid-1tuple1-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-oid-1tuple1/atomic_implicit_1tuple1_nested-oid-1tuple1-answer1.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-oid-1tuple1/atomic_implicit_1tuple1_nested-oid-1tuple1-answer1.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-oid-1tuple1/atomic_implicit_1tuple1_nested-oid-1tuple1-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-oid-1tuple1/atomic_implicit_1tuple1_nested-oid-1tuple1-answer2.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-oid-1tuple1/atomic_implicit_1tuple1_nested-oid-1tuple1-answer2.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-oid-1tuple1/atomic_implicit_1tuple1_nested-oid-1tuple1-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-oid-1tuple1/atomic_implicit_1tuple1_nested-oid-1tuple1-query1.psoa
new file mode 100644
index 00000000..5b39c9f6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-oid-1tuple1/atomic_implicit_1tuple1_nested-oid-1tuple1-query1.psoa
@@ -0,0 +1,4 @@
+p(?#q(a))
+% ((prdtupterm(Q1,'_q','_a'),memterm(Q1,'_q')),'_p'(Q1)).
+% Correctness Criterion: Query for ground atom with implicit tuple having arity 1 containing
+% one nested oidful (don't care variable) atom with one argument against KB containing only a matching ground atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-oid-1tuple1/atomic_implicit_1tuple1_nested-oid-1tuple1-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-oid-1tuple1/atomic_implicit_1tuple1_nested-oid-1tuple1-query2.psoa
new file mode 100644
index 00000000..162ad114
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-oid-1tuple1/atomic_implicit_1tuple1_nested-oid-1tuple1-query2.psoa
@@ -0,0 +1,5 @@
+p(q(a))
+% '_p'('_q'('_a')).
+% Correctness Criterion: Query for ground atom with implicit tuple having arity 1 containing
+% a functional expression with one argument against KB containing only a
+% similar ground nested atom answers "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-slot/atomic_implicit_1tuple1_nested-slot-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-slot/atomic_implicit_1tuple1_nested-slot-KB.psoa
new file mode 100644
index 00000000..ba201b5f
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-slot/atomic_implicit_1tuple1_nested-slot-KB.psoa
@@ -0,0 +1,18 @@
+RuleML(
+ Assert(
+ % atomic-formula expressivity
+ % relationships
+ % single tuple
+ % dependent tuple
+ % implicit tuple
+ % 1 element
+ % nested atom
+ % oid (not optional, otherwise exception is thrown)
+ % single slot, no tuple
+ % constant arguments
+ p(o#q(a->b))
+ % Translated KB:
+ % sloterm('_o','_a','_b').
+ % memterm('_o','_q').
+ % '_p'('_o').
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-slot/atomic_implicit_1tuple1_nested-slot-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-slot/atomic_implicit_1tuple1_nested-slot-answer1.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-slot/atomic_implicit_1tuple1_nested-slot-answer1.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-slot/atomic_implicit_1tuple1_nested-slot-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-slot/atomic_implicit_1tuple1_nested-slot-query1.psoa
new file mode 100644
index 00000000..266e54d0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-slot/atomic_implicit_1tuple1_nested-slot-query1.psoa
@@ -0,0 +1,4 @@
+p(?#q(a->b))
+% ((sloterm('Q1','_a','_b'),memterm('Q1','_q')),(prdtupterm(Q2,'_p','Q1'),memterm(Q2,'_p'))).
+% Correctness Criterion: Query for ground atom with implicit single tuple of
+% one nested atom with slot against KB containing only that ground atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-slots2/atomic_implicit_1tuple1_nested-slots2-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-slots2/atomic_implicit_1tuple1_nested-slots2-KB.psoa
new file mode 100644
index 00000000..6b706f1d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-slots2/atomic_implicit_1tuple1_nested-slots2-KB.psoa
@@ -0,0 +1,19 @@
+RuleML(
+ Assert(
+ % atomic-formula expressivity
+ % relationships
+ % single tuple
+ % dependent tuple
+ % implicit tuple
+ % 1 element
+ % nested atom
+ % oid (not optional, otherwise exception is thrown)
+ % two slots, no tuple
+ % constant arguments
+ p(o#q(a->b c-> d))
+ % Translated KB:
+ % sloterm('_o','_a','_b').
+ % sloterm('_o','_c','_d').
+ % memterm('_o','_q').
+ % '_p'('_o').
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-slots2/atomic_implicit_1tuple1_nested-slots2-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-slots2/atomic_implicit_1tuple1_nested-slots2-answer1.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-slots2/atomic_implicit_1tuple1_nested-slots2-answer1.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-slots2/atomic_implicit_1tuple1_nested-slots2-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-slots2/atomic_implicit_1tuple1_nested-slots2-query1.psoa
new file mode 100644
index 00000000..a2cfd702
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_implicit_1tuple1_nested-slots2/atomic_implicit_1tuple1_nested-slots2-query1.psoa
@@ -0,0 +1,4 @@
+p(?#q(a->b))
+% ((sloterm(Q1,'_a','_b'),memterm(Q1,'_q')),'_p'(Q1)).
+% Correctness Criterion: Query for ground atom with implicit single tuple of
+% one nested atom with slot against KB containing only that ground atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-KB.psoa
new file mode 100644
index 00000000..3a35cba5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-KB.psoa
@@ -0,0 +1,11 @@
+RuleML(
+ Assert(
+ % atomic-formula expressivity
+ % single slot
+ % independent slot
+ % constant name
+ % constant filler
+ p(m->v)
+ % sloterm('_1','_m','_v').
+ % memterm('_1','_p').
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-answer1.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-answer1.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-answer10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-answer10.psoa
new file mode 100644
index 00000000..5b302dca
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-answer10.psoa
@@ -0,0 +1 @@
+?z=_p
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-answer11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-answer11.psoa
new file mode 100644
index 00000000..31f502f1
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-answer11.psoa
@@ -0,0 +1 @@
+?x=_m ?y=_v ?z=_p
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-answer2.psoa
new file mode 100644
index 00000000..6a5cd0c8
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-answer2.psoa
@@ -0,0 +1 @@
+?y=_v
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-answer3.psoa
new file mode 100644
index 00000000..95726572
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-answer3.psoa
@@ -0,0 +1 @@
+?x=_m
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-answer4.psoa
new file mode 100644
index 00000000..da3e7f5f
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-answer4.psoa
@@ -0,0 +1 @@
+?x=_m ?y=_v
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-query1.psoa
new file mode 100644
index 00000000..62669ca3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-query1.psoa
@@ -0,0 +1,3 @@
+p(m->v)
+% (sloterm(Q1,'_m','_v'),memterm(Q1,'_p')).
+% Correctness Criterion: query for the verbatim slotted atom in a KB answers Yes.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-query10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-query10.psoa
new file mode 100644
index 00000000..f18364d6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-query10.psoa
@@ -0,0 +1,4 @@
+?z(m->v)
+% (sloterm(Q1,'_m','_v'),memterm(Q1,Qx)).
+% Correctness Criterion: query for the predicate of the slotted atom in the KB answers with
+% the appropriate binding.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-query11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-query11.psoa
new file mode 100644
index 00000000..cc34ab38
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-query11.psoa
@@ -0,0 +1,4 @@
+?z(?x->?y)
+% (sloterm(Q1,Qx,Qy),memterm(Q1,Qz)).
+% Correctness Criterion: query for the predicate of the slotted atom in the KB answers with
+% the appropriate binding.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-query2.psoa
new file mode 100644
index 00000000..7c2363ee
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-query2.psoa
@@ -0,0 +1,4 @@
+p(m->?y)
+% (sloterm(Q1,'_m',Qy),memterm(Q1,'_p')).
+% Correctness Criterion: query for the slot filler of the atom in the KB answers with
+% the appropriate binding.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-query3.psoa
new file mode 100644
index 00000000..1b371c8e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-query3.psoa
@@ -0,0 +1,4 @@
+p(?x->v)
+% (sloterm(Q1,Qx,'_v'),memterm(Q1,'_p'))
+% Correctness Criterion: query for the slot role of the atom in the KB answers with
+% the appropriate binding.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-query4.psoa
new file mode 100644
index 00000000..308ed4d2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1slot/atomic_independent-1slot-query4.psoa
@@ -0,0 +1,4 @@
+p(?x->?y)
+% (sloterm(Q1,Qx,Qy),memterm(Q1,'_p')).
+% Correctness Criterion: query for the slot role and filler of the atom in the KB answers with
+% the appropriate binding.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-KB.psoa
new file mode 100644
index 00000000..c4b3290e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-KB.psoa
@@ -0,0 +1,12 @@
+RuleML(
+ Assert(
+ % atomic-formula expressivity
+ % pn1 (perspeneutral)
+ % single tuple
+ % independent tuple
+ % 3 elements
+ % constant elements
+ p(-[a b c])
+ % tupterm('_1','_a','_b','_c').
+ % memterm('_1','_p').
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer1.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer1.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer10.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer10.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer11.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer11.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer12.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer12.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer12.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer2.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer2.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer3.psoa
new file mode 100644
index 00000000..371e6b44
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer3.psoa
@@ -0,0 +1 @@
+?x=_a
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer4.psoa
new file mode 100644
index 00000000..55efd593
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer4.psoa
@@ -0,0 +1 @@
+?x=_a ?y=_b ?z=_c
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer5.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer5.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer8.psoa
new file mode 100644
index 00000000..4aae6ffc
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer8.psoa
@@ -0,0 +1 @@
+?x=_1
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer9.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer9.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query1.psoa
new file mode 100644
index 00000000..da06b76e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query1.psoa
@@ -0,0 +1,4 @@
+p(-[a b c])
+% (tupterm(Q1,'_a','_b','_c'),memterm(Q1,'_p')).
+% Correctness Criterion: Query for ground atom with explicit independent single tuple of
+% three constant arguments against KB containing only that ground atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query10.psoa
new file mode 100644
index 00000000..abc74c3d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query10.psoa
@@ -0,0 +1,4 @@
+Top(+[a b c])
+% tupterm(Q1,'_a','_b','_c').
+% Correctness Criterion: Query for ground Top atom with dependent single tuple of
+% three constant arguments against KB containg a similar independent ground 'p' atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query11.psoa
new file mode 100644
index 00000000..7df9df3a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query11.psoa
@@ -0,0 +1,4 @@
+Top(a b c)
+% tupterm(Q1,'_a','_b','_c').
+% Correctness Criterion: Query for ground Top atom with implicit single tuple of
+% three constant arguments against KB containg a similar indepdendent ground 'p' atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query12.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query12.psoa
new file mode 100644
index 00000000..4ec7f472
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query12.psoa
@@ -0,0 +1,6 @@
+?#Top(-[a b c])
+% tupterm(Q1,'_a','_b','_c').
+% Correctness Criterion: Query for ground atom with Top independent single tuple of three constant arguments
+% and masked oid variable
+% against KB containing only the independent version of that ground atom with
+% specific predicate answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query2.psoa
new file mode 100644
index 00000000..f44726e5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query2.psoa
@@ -0,0 +1,4 @@
+p(-[c b a])
+% (tupterm(Q1,'_c','_b','_a'),memterm(Q1,'_p')).
+% Correctness Criterion: Query for ground atom with independent single tuple of three constant arguments
+% against KB containing a similar ground atom with permuted arguments answers "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query3.psoa
new file mode 100644
index 00000000..99f8821b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query3.psoa
@@ -0,0 +1,5 @@
+p(-[?x b c])
+% (tupterm(Q1,Qx,'_b','_c'),memterm(Q1,'_p')).
+% Correctness Criterion: Query for non-ground atom with independent single tuple of
+% one variable and two constant arguments
+% against KB containing a matching ground atom answers with appropriate substitution.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query4.psoa
new file mode 100644
index 00000000..d1050a16
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query4.psoa
@@ -0,0 +1,5 @@
+p(-[?x ?y ?z])
+% (tupterm(Q1,Qx,Qy,Qz),memterm(Q1,'_p')).
+% Correctness Criterion: Query for non-ground atom with independent single tuple of
+% three variable arguments
+% against KB containing a matching ground atom answers with appropriate substitution.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query5.psoa
new file mode 100644
index 00000000..00f089f5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query5.psoa
@@ -0,0 +1,5 @@
+p(-[?x ?y ?x])
+% (tupterm(Q1,Qx,Qy,Qx),memterm(Q1,'_p')).
+% Correctness Criterion: Query for non-ground atom with independent single tuple of
+% all variable arguments where one variable appears twice
+% against KB containing a similar ground atom with distinct arguments answers with "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query8.psoa
new file mode 100644
index 00000000..7e74be07
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query8.psoa
@@ -0,0 +1,6 @@
+?x#Top(-[a b c])
+% tupterm(Qx,'_a','_b','_c').
+% Correctness Criterion: Query for ground atom with Top independent single tuple of three constant arguments
+% and masked oid variable
+% against KB containing only the independent version of that ground atom with
+% specific predicate answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query9.psoa
new file mode 100644
index 00000000..6a00af58
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query9.psoa
@@ -0,0 +1,4 @@
+Top(-[a b c])
+% tupterm(Q1,'_a','_b','_c').
+% Correctness Criterion: Query for ground Top atom with independent single tuple of
+% three constant arguments against KB containg a similar ground 'p' atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-KB.psoa
new file mode 100644
index 00000000..ccd7f6b6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-KB.psoa
@@ -0,0 +1,12 @@
+RuleML(
+ Assert(
+ % atomic-formula expressivity
+ % two slots
+ % independent slot
+ % constant name
+ % constant filler
+ p(m->v n->u)
+ % sloterm('_1','_m','_v').
+ % sloterm('_1','_n','_u').
+ % memterm('_1','_p').
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-answer1.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-answer1.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-answer2.psoa
new file mode 100644
index 00000000..6a5cd0c8
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-answer2.psoa
@@ -0,0 +1 @@
+?y=_v
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-answer3.psoa
new file mode 100644
index 00000000..95726572
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-answer3.psoa
@@ -0,0 +1 @@
+?x=_m
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-answer4.psoa
new file mode 100644
index 00000000..ce3edf09
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-answer4.psoa
@@ -0,0 +1,2 @@
+?x=_m ?y=_v
+?x=_n ?y=_u
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-query1.psoa
new file mode 100644
index 00000000..cba7dce3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-query1.psoa
@@ -0,0 +1,3 @@
+p(m->v n->u)
+% (sloterm(Q1,'_m','_v'),sloterm(Q1,'_n','_u'),memterm(Q1,'_p')).
+% Correctness Criterion: query for the verbatim slotted atom in a KB answers Yes.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-query2.psoa
new file mode 100644
index 00000000..d62224e8
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-query2.psoa
@@ -0,0 +1,4 @@
+p(m->?y)
+% (sloterm(Q1,'_m',Qy),memterm(Q1,'_p')).
+% Correctness Criterion: query for the 'm' slot filler of the atom in the KB answers with
+% the appropriate binding.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-query3.psoa
new file mode 100644
index 00000000..fbc226cc
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-query3.psoa
@@ -0,0 +1,4 @@
+p(?x->v)
+% (sloterm(Q1,Qx,'_v'),memterm(Q1,'_p'))
+% Correctness Criterion: query for the slot role with filler 'v' of the atom in the KB answers with
+% the appropriate binding.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-query4.psoa
new file mode 100644
index 00000000..6aebfcde
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_independent-2slot/atomic_independent-2slot-query4.psoa
@@ -0,0 +1,4 @@
+p(?x->?y)
+% (sloterm(Q1,Qx,Qy),memterm(Q1,'_p')).
+% Correctness Criterion: query for slot role/filler pairs of the 2-slot atom in the KB answers with
+% the appropriate bindings.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-KB.psoa
new file mode 100644
index 00000000..3d139e0e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-KB.psoa
@@ -0,0 +1,12 @@
+Document(
+ Group (
+ % atomic-formula expressivity
+ % oidful
+ % single tuple
+ % dependent tuple
+ % 3 elements
+ % constant elements
+ i#p(+[a b c])
+ % prdtupterm('_i','_p','_a','_b','_c').
+ % memterm('_i','_p').
+) )
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer1.psoa
new file mode 100644
index 00000000..3fdfb3d0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer1.psoa
@@ -0,0 +1 @@
+Yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer10.psoa
new file mode 100644
index 00000000..289cc91e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer10.psoa
@@ -0,0 +1 @@
+No
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer11.psoa
new file mode 100644
index 00000000..289cc91e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer11.psoa
@@ -0,0 +1 @@
+No
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer12.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer12.psoa
new file mode 100644
index 00000000..289cc91e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer12.psoa
@@ -0,0 +1 @@
+No
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer13.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer13.psoa
new file mode 100644
index 00000000..4a972222
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer13.psoa
@@ -0,0 +1 @@
+?x=_i
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer14.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer14.psoa
new file mode 100644
index 00000000..f8a81be4
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer14.psoa
@@ -0,0 +1 @@
+?x=_p
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer15.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer15.psoa
new file mode 100644
index 00000000..39fa6d61
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer15.psoa
@@ -0,0 +1 @@
+?x=_i ?y=_p
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer2.psoa
new file mode 100644
index 00000000..289cc91e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer2.psoa
@@ -0,0 +1 @@
+No
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer3.psoa
new file mode 100644
index 00000000..406fd614
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer3.psoa
@@ -0,0 +1 @@
+?x=_a
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer4.psoa
new file mode 100644
index 00000000..1ac1c1f2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer4.psoa
@@ -0,0 +1 @@
+?x=_a ?y=_b ?z=_c
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer5.psoa
new file mode 100644
index 00000000..289cc91e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer5.psoa
@@ -0,0 +1 @@
+No
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer6.psoa
new file mode 100644
index 00000000..3fdfb3d0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer6.psoa
@@ -0,0 +1 @@
+Yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer7.psoa
new file mode 100644
index 00000000..289cc91e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer7.psoa
@@ -0,0 +1 @@
+No
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer8.psoa
new file mode 100644
index 00000000..3fdfb3d0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer8.psoa
@@ -0,0 +1 @@
+Yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer9.psoa
new file mode 100644
index 00000000..3fdfb3d0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-answer9.psoa
@@ -0,0 +1 @@
+Yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query1.psoa
new file mode 100644
index 00000000..a8f5b38f
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query1.psoa
@@ -0,0 +1,4 @@
+i#p(+[a b c])
+% (prdtupterm('_i','_p','_a','_b','_c'),memterm('_i','_p')).
+% Correctness Criterion: Query for oidful ground atom with explicit dependent single tuple of
+% three constant arguments against KB containing only that ground atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query10.psoa
new file mode 100644
index 00000000..68a3d4d7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query10.psoa
@@ -0,0 +1,4 @@
+p(-[a b c])
+% (tupterm(Q1,'_a','_b','_c'),memterm(Q1,'_p')).
+% Correctness Criterion: Query for oidless ground atom with independent single tuple of three constant arguments
+% against KB containing only the dependent version of that ground atom answers "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query11.psoa
new file mode 100644
index 00000000..94f28651
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query11.psoa
@@ -0,0 +1,6 @@
+i#Top(+[a b c])
+% tupterm('_i','_a','_b','_c').
+% Correctness Criterion: Query for oidful ground atom with explicit Top-dependent
+% single tuple of
+% three constant arguments against KB containing only an oidful ground 'p'-dependent atom
+% with the same three arguments answers "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query12.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query12.psoa
new file mode 100644
index 00000000..0ba659e6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query12.psoa
@@ -0,0 +1,6 @@
+i#Top(-[a b c])
+% tupterm('_i','_a','_b','_c').
+% Correctness Criterion: Query for oidful ground atom with explicit Top-independent
+% single tuple of
+% three constant arguments against KB containing only an oidful ground atom 'p'-dependent
+% answers "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query13.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query13.psoa
new file mode 100644
index 00000000..a26bf430
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query13.psoa
@@ -0,0 +1,5 @@
+?x#p
+% memterm(Qx,'_p').
+% Correctness Criterion: Query for any membership in a predicate
+% against KB containing only an oidful ground atom of that predicate
+% answers with the appropriate substitution.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query14.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query14.psoa
new file mode 100644
index 00000000..594074eb
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query14.psoa
@@ -0,0 +1,6 @@
+i#?x
+% memterm('_i',Qx).
+% Query contains predicate variable (should yield Warning msg)
+% Correctness Criterion: Query for membership of a constant in any predicate
+% against KB containing only an oidful ground atom with that constant as oid
+% answers with the appropriate substitution.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query15.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query15.psoa
new file mode 100644
index 00000000..82e18823
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query15.psoa
@@ -0,0 +1,6 @@
+?x#?y
+% memterm(Qx,Qy).
+% Query contains predicate variable (should yield Warning msg)
+% Correctness Criterion: Query for any membership in any predicate
+% against KB containing only an oidful ground atom
+% answers with the appropriate substitution.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query2.psoa
new file mode 100644
index 00000000..a6d504dd
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query2.psoa
@@ -0,0 +1,4 @@
+i#p(+[c b a])
+% (prdtupterm('_i','_p','_c','_b','_a'),memterm('_i','_p')).
+% Correctness Criterion: Query for oidful ground atom with explicit dependent single tuple of three constant arguments
+% against KB containing a similar ground atom with permuted arguments answers "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query3.psoa
new file mode 100644
index 00000000..f7972745
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query3.psoa
@@ -0,0 +1,5 @@
+i#p(+[?x b c])
+% (prdtupterm('_i','_p',Qx,'_b','_c'),memterm('_i','_p')).
+% Correctness Criterion: Query for oidful non-ground atom with explicit dependent single tuple of
+% one variable and two constant arguments
+% against KB containing a matching ground atom answers with appropriate substitution.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query4.psoa
new file mode 100644
index 00000000..3c740cfa
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query4.psoa
@@ -0,0 +1,5 @@
+i#p(+[?x ?y ?z])
+% (prdtupterm('_i','_p',Qx,Qy,Qz),memterm('_i','_p')).
+% Correctness Criterion: Query for oidful non-ground atom with explicit dependent single tuple of
+% three variable arguments
+% against KB containing a matching ground atom answers with appropriate substitution.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query5.psoa
new file mode 100644
index 00000000..1a0a21f7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query5.psoa
@@ -0,0 +1,5 @@
+i#p(?x ?y ?x)
+% (prdtupterm('_i','_p',Qx,Qy,Qx),memterm('_i','_p')).
+% Correctness Criterion: Query for oidful non-ground atom with explicit dependent single tuple of
+% all variable arguments where one variable appears twice
+% against KB containing a ground atom with distinct arguments answers with "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query6.psoa
new file mode 100644
index 00000000..753cd3f5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query6.psoa
@@ -0,0 +1,4 @@
+i#p(a b c)
+% (prdtupterm('_i','_p','_a','_b','_c'),memterm('_i','_p')).
+% Correctness Criterion: Query for oidful ground atom with implicit single tuple of three constant arguments
+% against KB containing only the explicit syntax for that ground atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query7.psoa
new file mode 100644
index 00000000..451a7ba3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query7.psoa
@@ -0,0 +1,5 @@
+i#p(-[a b c])
+% (tupterm('_i','_a','_b','_c'),memterm('_i','_p')).
+% Correctness Criterion: Query for oidful ground atom with independent single tuple of
+% three constant arguments
+% against KB containing only the dependent version of that ground atom answers "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query8.psoa
new file mode 100644
index 00000000..168589e4
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query8.psoa
@@ -0,0 +1,5 @@
+i#p
+% memterm('_i','_p').
+% Correctness Criterion: Query for membership of a constant in a predicate
+% against KB containing only an oidful ground atom of that predicate
+% with that constant as oid answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query9.psoa
new file mode 100644
index 00000000..0e92800d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_dependent-1tuple3/atomic_oid_dependent-1tuple3-query9.psoa
@@ -0,0 +1,4 @@
+p(+[a b c])
+% (prdtupterm(Q1,'_p','_a','_b','_c'),memterm(Q1,'_p')).
+% Correctness Criterion: Query for oidless ground atom with explicit dependent single tuple of
+% three constant arguments against KB containing only the oidful version of that ground atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-KB.psoa
new file mode 100644
index 00000000..ad58cb6f
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-KB.psoa
@@ -0,0 +1,12 @@
+Document(
+ Group (
+ % atomic-formula expressivity
+ % oidful
+ % single tuple
+ % independent tuple
+ % 3 elements
+ % constant elements
+ i#p(-[a b c])
+ % tupterm('_i','_a','_b','_c').
+ % memterm('_i','_p').
+) )
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-answer10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-answer10.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-answer10.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-answer11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-answer11.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-answer11.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-answer12.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-answer12.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-answer12.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-answer8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-answer8.psoa
new file mode 100644
index 00000000..80efa8fd
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-answer8.psoa
@@ -0,0 +1 @@
+?x=_i
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-answer9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-answer9.psoa
new file mode 100644
index 00000000..f2024cb0
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-answer9.psoa
@@ -0,0 +1 @@
+Yes
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-query10.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-query10.psoa
new file mode 100644
index 00000000..a154f872
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-query10.psoa
@@ -0,0 +1,4 @@
+Top(+[a b c])
+% tupterm(Q1,'_a','_b','_c').
+% Correctness Criterion: Query for ground Top atom with dependent single tuple of
+% three constant arguments against KB containg a similar independent oidful ground 'p' atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-query11.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-query11.psoa
new file mode 100644
index 00000000..a923d36d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-query11.psoa
@@ -0,0 +1,4 @@
+Top(a b c)
+% tupterm(Q1,'_a','_b','_c').
+% Correctness Criterion: Query for ground Top atom with implicit single tuple of
+% three constant arguments against KB containg a similar indepdendent oidful ground 'p' atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-query12.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-query12.psoa
new file mode 100644
index 00000000..77b190fa
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-query12.psoa
@@ -0,0 +1,6 @@
+?#Top(-[a b c])
+% tupterm(Q1,'_a','_b','_c').
+% Correctness Criterion: Query for ground atom with Top independent single tuple of three constant arguments
+% and masked oid variable
+% against KB containing only the independent oidful version of that ground atom with
+% specific predicate answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-query8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-query8.psoa
new file mode 100644
index 00000000..beb63fc7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-query8.psoa
@@ -0,0 +1,6 @@
+?x#Top(-[a b c])
+% tupterm(Qx,'_a','_b','_c').
+% Correctness Criterion: Query for ground atom with Top independent single tuple of three constant arguments
+% and masked oid variable
+% against KB containing only the independent oidful version of that ground atom with
+% specific predicate answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-query9.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-query9.psoa
new file mode 100644
index 00000000..32e9da94
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/atomic_oid_independent-1tuple3/atomic_oid_independent-1tuple3-query9.psoa
@@ -0,0 +1,4 @@
+Top(-[a b c])
+% tupterm(Q1,'_a','_b','_c').
+% Correctness Criterion: Query for ground Top atom with independent single tuple of
+% three constant arguments against KB containg a similar oidful ground 'p' atom answers "Yes".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/empty/empty-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/empty/empty-KB.psoa
new file mode 100644
index 00000000..891b25e3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/empty/empty-KB.psoa
@@ -0,0 +1,4 @@
+RuleML(
+ Assert(
+ % Empty KB.
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/empty/empty-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/empty/empty-answer1.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/empty/empty-answer1.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/empty/empty-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/empty/empty-query1.psoa
new file mode 100644
index 00000000..97857d8e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/empty/empty-query1.psoa
@@ -0,0 +1,4 @@
+Top(-[a b c])
+% tupterm(Q1,'_a','_b','_c').
+% Correctness Criterion: Query for ground Top atom with independent single tuple of
+% three constant arguments against empty KB answers "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/hornlog-roundtrip-rules/hornlog-roundtrip-rules-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/hornlog-roundtrip-rules/hornlog-roundtrip-rules-KB.psoa
new file mode 100644
index 00000000..3264f4b1
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/hornlog-roundtrip-rules/hornlog-roundtrip-rules-KB.psoa
@@ -0,0 +1,15 @@
+RuleML (
+ Assert (
+ % Relationship-to-Frame Rule (R2F):
+ Forall ?x ?y (
+ f5(?x ?y)#p4(m->?x n->?y) :- p1(?x ?y)
+ )
+
+ % Frame-to-Relationship Rule (F2R):
+ Forall ?x ?y (
+ p1(?x ?y) :- ?#p4(m->?x n->?y)
+ )
+
+ p1(M1 N1)
+ f5(M2 N2)#p4(m->M2 n->N2)
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/hornlog-roundtrip-rules/hornlog-roundtrip-rules-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/hornlog-roundtrip-rules/hornlog-roundtrip-rules-answer1.psoa
new file mode 100644
index 00000000..2bfcd48c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/hornlog-roundtrip-rules/hornlog-roundtrip-rules-answer1.psoa
@@ -0,0 +1,2 @@
+?a=_M1 ?b=_N1
+?a=_M2 ?b=_N2
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/hornlog-roundtrip-rules/hornlog-roundtrip-rules-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/hornlog-roundtrip-rules/hornlog-roundtrip-rules-answer2.psoa
new file mode 100644
index 00000000..9075f1fc
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/hornlog-roundtrip-rules/hornlog-roundtrip-rules-answer2.psoa
@@ -0,0 +1,2 @@
+?o=_f5(_M1 _N1) ?a=_M1 ?b=_N1
+?o=_f5(_M2 _N2) ?a=_M2 ?b=_N2
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/hornlog-roundtrip-rules/hornlog-roundtrip-rules-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/hornlog-roundtrip-rules/hornlog-roundtrip-rules-query1.psoa
new file mode 100644
index 00000000..33ffd606
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/hornlog-roundtrip-rules/hornlog-roundtrip-rules-query1.psoa
@@ -0,0 +1,3 @@
+p1(?a ?b)
+% Correctness Criterion: returns two identical bindings for the descriptor that is
+% declared directly with p1, and one binding for the derived descriptor.
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/hornlog-roundtrip-rules/hornlog-roundtrip-rules-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/hornlog-roundtrip-rules/hornlog-roundtrip-rules-query2.psoa
new file mode 100644
index 00000000..b2ba6ff5
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-compatible/testsynsem/hornlog-roundtrip-rules/hornlog-roundtrip-rules-query2.psoa
@@ -0,0 +1,2 @@
+?o#p4(m->?a n->?b)
+% Correctness Criterion: returns one binding for each descriptor pair.
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-KB.psoa
new file mode 100644
index 00000000..cd9a382e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-KB.psoa
@@ -0,0 +1,5 @@
+Document(
+ Group (
+ _a2#_betweenObjRel(_canada _usa _mexico _dim->2 _orient->_northSouth)
+ )
+)
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer13.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer13.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer13.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer17.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer17.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer17.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer18.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer18.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-answer18.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query13.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query13.psoa
new file mode 100644
index 00000000..bb2e0e26
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query13.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_alaska _canada _usa _mexico _dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query17.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query17.psoa
new file mode 100644
index 00000000..21b67e7b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query17.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_usa _mexico _dim->2 _orient->_northSouth)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query18.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query18.psoa
new file mode 100644
index 00000000..3265e1b6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-groundfact/betweenObjRel-groundfact-query18.psoa
@@ -0,0 +1 @@
+_a2#_betweenObjRel(_usa _mexico)
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-KB.psoa
new file mode 100644
index 00000000..540b5c4d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-KB.psoa
@@ -0,0 +1,9 @@
+Document
+(
+ Group
+ (
+ Forall ?M (
+ Exists ?O ( ?O#_betweenObjRel(_northPole ?M _southPole _dim->2 _orient->_northSouth) )
+ )
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer5.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-answer5.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query5.psoa
new file mode 100644
index 00000000..c783d796
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/betweenObjRel-nongroundfact/betweenObjRel-nongroundfact-query5.psoa
@@ -0,0 +1 @@
+Exists ?O (?O#_betweenObjRel(_northPole _usa _eu _southPole _dim->2 _orient->_northSouth))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-KB.psoa
new file mode 100644
index 00000000..196d8b11
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-KB.psoa
@@ -0,0 +1,5 @@
+Document
+(
+ Prefix(: )
+ Import()
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer1.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer1.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer2.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer2.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer3.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer3.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer4.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer4.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer5.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer5.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer6.psoa
new file mode 100644
index 00000000..54299a48
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer6.psoa
@@ -0,0 +1 @@
+no
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer7.psoa
new file mode 100644
index 00000000..396a0ba2
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-answer7.psoa
@@ -0,0 +1 @@
+yes
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query1.psoa
new file mode 100644
index 00000000..290a185c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query1.psoa
@@ -0,0 +1 @@
+Or(:currentDatetime(:datetime(?)) :currentDatetime(:datetime(? ? ? ? ?)) :currentDatetime(:datetime(? ? ? ? ? ? ?)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query2.psoa
new file mode 100644
index 00000000..ea862814
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query2.psoa
@@ -0,0 +1 @@
+Or(:currentDatetimeUTC(:datetime(?)) :currentDatetimeUTC(:datetime(? ? ? ? ?)) :currentDatetimeUTC(:datetime(? ? ? ? ? ? ?)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query3.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query3.psoa
new file mode 100644
index 00000000..0315e3ca
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query3.psoa
@@ -0,0 +1 @@
+Or(:currentDate(:date(?)) :currentDate(:date(? ?)) :currentDate(:date(? ? ? ?)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query4.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query4.psoa
new file mode 100644
index 00000000..30f092d3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query4.psoa
@@ -0,0 +1 @@
+Or(:currentDateUTC(:date(?)) :currentDateUTC(:date(? ?)) :currentDateUTC(:date(? ? ? ?)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query5.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query5.psoa
new file mode 100644
index 00000000..f3233d6d
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query5.psoa
@@ -0,0 +1 @@
+Or(:currentTime(:time(?)) :currentTime(:time(? ?)) :currentTime(:time(? ? ? ?)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query6.psoa
new file mode 100644
index 00000000..6073ef3a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query6.psoa
@@ -0,0 +1 @@
+Or(:currentTimeUTC(:time(?)) :currentTimeUTC(:time(? ?)) :currentTimeUTC(:time(? ? ? ?)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query7.psoa
new file mode 100644
index 00000000..6f40e45b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/physics-datetime/physics-datetime-query7.psoa
@@ -0,0 +1 @@
+And(:currentDatetimeUTC(:datetime(? ? ? ? ? ?)) :currentDatetimeUTC(:datetime(? ? ? ? ? ?)) :currentDate(:date(? ? ?)) :currentDateUTC(:date(? ? ?)) :currentTime(:time(? ? ?)) :currentTimeUTC(:time(? ? ?)))
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/transfer/transfer-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/transfer/transfer-KB.psoa
new file mode 100644
index 00000000..7e17546a
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/transfer/transfer-KB.psoa
@@ -0,0 +1,11 @@
+Document (
+ Group (
+ Forall ?Pers ?JobTitle ?Comp1 ?Comp2 (
+ _transfer(?Pers ?Comp1 ?Comp2) :-
+ And(_work(?Pers ?Comp1 ?JobTitle)
+ _acquire(_buyer->?Comp2 _seller->?Comp1)))
+ _e1#_transfer(_Tony _Rho4biz _Chi4corp _bonus->20000)
+ _work(_Kate _Rho4biz "Director")
+ _a1#_acquire(_buyer->_Chi4corp _seller->_Rho4biz)
+ )
+)
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/transfer/transfer-answer8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/transfer/transfer-answer8.psoa
new file mode 100644
index 00000000..289cc91e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/transfer/transfer-answer8.psoa
@@ -0,0 +1 @@
+No
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/transfer/transfer-query8.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/transfer/transfer-query8.psoa
new file mode 100644
index 00000000..68c506d9
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/test/transfer/transfer-query8.psoa
@@ -0,0 +1 @@
+?#_work(+[_Kate _Rho4biz "Director"] +[_Kate _Rho4biz ?J ?K])
\ No newline at end of file
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem-staticOnlyAbsent/atomic_dependent-1tuple3/README.txt b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem-staticOnlyAbsent/atomic_dependent-1tuple3/README.txt
new file mode 100644
index 00000000..06f65595
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem-staticOnlyAbsent/atomic_dependent-1tuple3/README.txt
@@ -0,0 +1,10 @@
+For general information about tests, see
+https://github.com/RuleML/PSOATransRunComponents/blob/master/PSOATransRun/test/README.txt
+
+An Eclipse Run configuration may be used to automate the test execution as follows:
+Run Configurations
+ Main
+ Project: PSOATransRun
+ Main class: org.ruleml.psoa.psoatransrun.PSOATransRunCmdLine
+ Arguments
+ Program Arguments: --test -i ...\git\PSOATransRunComponents\PSOATransRun\testsynsem-staticOnlyAbsent
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem-staticOnlyAbsent/atomic_dependent-1tuple3/atomic_dependent-1tuple3-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem-staticOnlyAbsent/atomic_dependent-1tuple3/atomic_dependent-1tuple3-KB.psoa
new file mode 100644
index 00000000..0327e6cb
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem-staticOnlyAbsent/atomic_dependent-1tuple3/atomic_dependent-1tuple3-KB.psoa
@@ -0,0 +1,12 @@
+RuleML(
+ Assert(
+ % atomic-formula expressivity
+ % relationships
+ % single tuple
+ % dependent tuple
+ % explicit tuple
+ % 3 elements
+ % constant elements
+ p(+[a b c])
+ % '_p'('_a','_b','_c').
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem-staticOnlyAbsent/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem-staticOnlyAbsent/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer1.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem-staticOnlyAbsent/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer1.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem-staticOnlyAbsent/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem-staticOnlyAbsent/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer2.psoa
new file mode 100644
index 00000000..cb0fbbc3
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem-staticOnlyAbsent/atomic_dependent-1tuple3/atomic_dependent-1tuple3-answer2.psoa
@@ -0,0 +1 @@
+?x=_oidcons(_p _a _b _c)
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem-staticOnlyAbsent/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query1.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem-staticOnlyAbsent/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query1.psoa
new file mode 100644
index 00000000..d6b36a2b
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem-staticOnlyAbsent/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query1.psoa
@@ -0,0 +1,7 @@
+?(+[a b c])
+% (prdtupterm(Q2,Q1,'_a','_b','_c'),memterm(Q2,Q1)).
+% Query contains "don't care" predicate variable (should yield Warning msg)
+% Correctness Criterion: Query for oidless ground atom with dependent single tuple of
+% three constant arguments and "don't care" variable predicate
+% against KB containing only a matching ground atom answers No when the option
+% -s (static only) is absent (incompleteness).
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem-staticOnlyAbsent/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query2.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem-staticOnlyAbsent/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query2.psoa
new file mode 100644
index 00000000..062e42aa
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem-staticOnlyAbsent/atomic_dependent-1tuple3/atomic_dependent-1tuple3-query2.psoa
@@ -0,0 +1,7 @@
+?x#p(+[a b c])
+% (('_p'('_a','_b','_c'),'='(Qx,'_oidcons'('_p','_a','_b','_c')))).
+% Correctness Criterion: Query for oidful ground atom with dependent single tuple of
+% three constant arguments and variable oid
+% against KB containing only the oidless version of that ground atom answers with
+% the appropriate bindings based on '_oidcons'
+% when the static only option (-s) is absent.
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-KB.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-KB.psoa
new file mode 100644
index 00000000..c4b3290e
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-KB.psoa
@@ -0,0 +1,12 @@
+RuleML(
+ Assert(
+ % atomic-formula expressivity
+ % pn1 (perspeneutral)
+ % single tuple
+ % independent tuple
+ % 3 elements
+ % constant elements
+ p(-[a b c])
+ % tupterm('_1','_a','_b','_c').
+ % memterm('_1','_p').
+) )
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer6.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer6.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer7.psoa
new file mode 100644
index 00000000..ae6b87e7
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-answer7.psoa
@@ -0,0 +1 @@
+No
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query6.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query6.psoa
new file mode 100644
index 00000000..d14afb8c
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query6.psoa
@@ -0,0 +1,4 @@
+p(+[a b c])
+% (prdtupterm(Q1,'_p','_a','_b','_c'),memterm(Q1,'_p')).
+% Correctness Criterion: Query for ground atom with explicit dependent single tuple of three constant arguments
+% against KB containing only the independent version of that ground atom answers "No".
diff --git a/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query7.psoa b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query7.psoa
new file mode 100644
index 00000000..b6a1afd6
--- /dev/null
+++ b/PSOATransRun/SWI-Prolog-tests/SWI-incompatible/testsynsem/atomic_independent-1tuple3/atomic_independent-1tuple3-query7.psoa
@@ -0,0 +1,4 @@
+p(a b c)
+% (prdtupterm(Q1,'_p','_a','_b','_c'),memterm(Q1,'_p')).
+% Correctness Criterion: Query for ground atom with implicit dependent single tuple of three constant arguments
+% against KB containing only the independent version of that ground atom answers "No".
diff --git a/PSOATransRun/lib/interprolog.jar b/PSOATransRun/lib/interprolog.jar
index 581c3c29..44f1e373 100644
Binary files a/PSOATransRun/lib/interprolog.jar and b/PSOATransRun/lib/interprolog.jar differ
diff --git a/PSOATransRun/pom.xml b/PSOATransRun/pom.xml
index 962306b4..08649deb 100644
--- a/PSOATransRun/pom.xml
+++ b/PSOATransRun/pom.xml
@@ -3,7 +3,7 @@
4.0.0
org.ruleml.psoa
PSOATransRun
- 1.3
+ 1.4
PSOATransRun
@@ -24,7 +24,7 @@
org.ruleml.psoa
PSOA2X
- 1.3
+ 1.4
gnu.getopt
diff --git a/PSOATransRun/src/main/java/org/ruleml/psoa/psoatransrun/PSOATransRun.java b/PSOATransRun/src/main/java/org/ruleml/psoa/psoatransrun/PSOATransRun.java
index c8a2a68a..61441138 100644
--- a/PSOATransRun/src/main/java/org/ruleml/psoa/psoatransrun/PSOATransRun.java
+++ b/PSOATransRun/src/main/java/org/ruleml/psoa/psoatransrun/PSOATransRun.java
@@ -90,18 +90,24 @@ else if (targetLang.equalsIgnoreCase("tptp"))
*
* @param lang language name
* */
- public static String getSystemName(String lang)
+ public static String getSystemName(String lang, String prologBackend)
{
String systemInstantiation = new String();
- if (lang == null || lang.equalsIgnoreCase("prolog"))
+ if ((lang == null || lang.equalsIgnoreCase("prolog")) &&
+ (prologBackend == null || prologBackend.equalsIgnoreCase("xsb")))
{
systemInstantiation = "[PSOA2Prolog,XSBProlog]";
}
+ else if ((lang == null || lang.equalsIgnoreCase("prolog")) &&
+ prologBackend.equalsIgnoreCase("swi"))
+ {
+ systemInstantiation = "[PSOA2Prolog,SWIProlog]";
+ }
else if (lang.equalsIgnoreCase("tptp"))
{
systemInstantiation = "[PSOA2TPTP,VampirePrime]";
}
- return "PSOATransRun" + "1.3.2" + systemInstantiation;
+ return "PSOATransRun" + "1.4" + systemInstantiation;
}
/***
diff --git a/PSOATransRun/src/main/java/org/ruleml/psoa/psoatransrun/PSOATransRunCmdLine.java b/PSOATransRun/src/main/java/org/ruleml/psoa/psoatransrun/PSOATransRunCmdLine.java
index 204ef231..842cecd4 100644
--- a/PSOATransRun/src/main/java/org/ruleml/psoa/psoatransrun/PSOATransRunCmdLine.java
+++ b/PSOATransRun/src/main/java/org/ruleml/psoa/psoatransrun/PSOATransRunCmdLine.java
@@ -1,375 +1,410 @@
-package org.ruleml.psoa.psoatransrun;
-
-import java.io.*;
-import java.util.Scanner;
-
-import org.ruleml.psoa.psoa2x.common.Translator;
-import org.ruleml.psoa.psoa2x.psoa2prolog.PrologTranslator;
-import org.ruleml.psoa.psoa2x.psoa2tptp.TPTPTranslator;
-import org.ruleml.psoa.psoatransrun.engine.ExecutionEngine;
-import org.ruleml.psoa.psoatransrun.prolog.XSBEngine;
-import org.ruleml.psoa.psoatransrun.test.TestSuite;
-import org.ruleml.psoa.psoatransrun.tptp.VampirePrimeEngine;
-
-import gnu.getopt.Getopt;
-import gnu.getopt.LongOpt;
-
-import static org.ruleml.psoa.utils.IOUtil.*;
-
-/**
- * Command line interface of PSOATransRun
- *
- */
-public class PSOATransRunCmdLine {
- // Entrance of PSOATransRun program
- public static void main(String[] args) throws IOException {
- // Parse command line options
- LongOpt[] opts = new LongOpt[] {
- new LongOpt("help", LongOpt.NO_ARGUMENT, null, '?'),
- new LongOpt("longhelp", LongOpt.NO_ARGUMENT, null, '~'),
- new LongOpt("targetLang", LongOpt.REQUIRED_ARGUMENT, null, 'l'),
- new LongOpt("input", LongOpt.REQUIRED_ARGUMENT, null, 'i'),
- new LongOpt("query", LongOpt.REQUIRED_ARGUMENT, null, 'q'),
- new LongOpt("explicitLocalConstants", LongOpt.NO_ARGUMENT, null, 'c'),
- new LongOpt("test", LongOpt.NO_ARGUMENT, null, 't'),
- new LongOpt("numRuns", LongOpt.REQUIRED_ARGUMENT, null, 'n'),
- new LongOpt("echoInput", LongOpt.NO_ARGUMENT, null, 'e'),
- new LongOpt("printTrans", LongOpt.NO_ARGUMENT, null, 'p'),
- new LongOpt("outputTrans", LongOpt.REQUIRED_ARGUMENT, null, 'o'),
- new LongOpt("xsbfolder", LongOpt.REQUIRED_ARGUMENT, null, 'x'),
- new LongOpt("allAns", LongOpt.NO_ARGUMENT, null, 'a'),
- new LongOpt("timeout", LongOpt.REQUIRED_ARGUMENT, null, 'm'),
- new LongOpt("staticOnly", LongOpt.NO_ARGUMENT, null, 's'),
- new LongOpt("undiff", LongOpt.NO_ARGUMENT, null, 'u'),
- new LongOpt("verbose", LongOpt.NO_ARGUMENT, null, 'v'),
- new LongOpt("omitNegMem", LongOpt.NO_ARGUMENT, null, 'z'),
- new LongOpt("dense", LongOpt.NO_ARGUMENT, null, 'd')
- };
-
- Getopt optionsParser = new Getopt("", args, "?l:i:q:tn:epo:x:am:csuvzd", opts);
-
- boolean outputTrans = false, showOrigKB = false, getAllAnswers = false,
- dynamicObj = true, omitNegMem = false, differentiated = true,
- isTest = false, dense = false, verbose = false, reconstruct = true;
- String inputKBPath = null, inputQueryPath = null, lang = null, transKBPath = null, xsbPath = null;
- int timeout = -1, numRuns = 1;
-
- for (int opt = optionsParser.getopt(); opt != -1; opt = optionsParser
- .getopt()) {
- switch (opt) {
- case '?':
- printUsage(false);
- return;
- case '~':
- printUsage(true);
- return;
- case 'l':
- lang = optionsParser.getOptarg();
- break;
- case 'd':
- dense = true;
- break;
- case 'i':
- inputKBPath = optionsParser.getOptarg();
- break;
- case 'q':
- inputQueryPath = optionsParser.getOptarg();
- break;
- case 'c':
- reconstruct = false;
- break;
- case 'm':
- try {
- timeout = Integer.parseInt(optionsParser.getOptarg());
- }
- catch (NumberFormatException e) {
- printErrlnAndExit("Incorrect number format for --timeout");
- }
- break;
- case 't':
- isTest = true;
- break;
- case 'n':
- try {
- numRuns = Integer.parseInt(optionsParser.getOptarg());
- }
- catch (NumberFormatException e) {
- printErrlnAndExit("Incorrect number format for --numRuns");
- }
- break;
- case 'e':
- showOrigKB = true;
- break;
- case 'p':
- outputTrans = true;
- break;
- case 'o':
- transKBPath = optionsParser.getOptarg();
- break;
- case 'x':
- xsbPath = optionsParser.getOptarg();
- break;
- case 'a':
- getAllAnswers = true;
- break;
- case 's':
- dynamicObj = false;
- break;
- case 'u':
- differentiated = false;
- break;
- case 'v':
- verbose = true;
- break;
- case 'z':
- omitNegMem = true;
- break;
- default:
- assert false;
- }
- }
-
- // Display system name
- println(PSOATransRun.getSystemName(lang));
-
- // Check whether input KB file / directory has been specified
- if (inputKBPath == null) {
- printErrlnAndExit("No input KB specified");
- }
-
- // Initialize PSOATransRun
- Translator translator = null;
- ExecutionEngine engine = null;
-
- try {
- if (lang == null || lang.equalsIgnoreCase("prolog"))
- {
- PrologTranslator.Config transConfig = new PrologTranslator.Config();
- transConfig.setDynamicObj(dynamicObj);
- transConfig.setOmitMemtermInNegativeAtoms(omitNegMem);
- transConfig.setDifferentiateObj(differentiated);
- transConfig.setReconstruct(reconstruct);
- translator = new PrologTranslator(transConfig);
-
- XSBEngine.Config engineConfig = new XSBEngine.Config();
- engineConfig.transKBPath = transKBPath;
- engineConfig.xsbFolderPath = xsbPath;
- engine = new XSBEngine(engineConfig);
-
- if (timeout > 0)
- printErrln("Ignore -t option: only applicable for the target language TPTP");
- }
- else if (lang.equalsIgnoreCase("tptp"))
- {
- TPTPTranslator.Config transConfig = new TPTPTranslator.Config();
- transConfig.setDynamicObj(dynamicObj);
- transConfig.setOmitMemtermInNegativeAtoms(omitNegMem);
- transConfig.setDifferentiateObj(differentiated);
- transConfig.setReconstruct(reconstruct);
- translator = new TPTPTranslator(transConfig);
- VampirePrimeEngine.Config engineConfig = new VampirePrimeEngine.Config();
- if (timeout > 0)
- engineConfig.timeout = timeout;
- engineConfig.transKBPath = transKBPath;
- engine = new VampirePrimeEngine(engineConfig);
-
- if (xsbPath != null)
- printErrln("Ignore -x option: only applicable for the target language Prolog");
- }
- else
- {
- printErrlnAndExit("Unsupported language: ", lang);
- }
- }
- catch (PSOATransRunException e) {
- printErrlnAndExit(e.getMessage());
- }
-
- PSOATransRun system = new PSOATransRun(translator, engine);
- system.setPrintTrans(outputTrans);
-
- // Run tests
- if (isTest)
- {
- try {
- TestSuite ts = new TestSuite(inputKBPath, system, numRuns, verbose);
- ts.run();
- ts.outputSummary();
- return;
- }
- catch (PSOATransRunException e)
- {
- printErrlnAndExit(e.getMessage());
- }
- // TestSuite already calls system.shutdown(), hence
- // no finally block is needed
- }
-
- try {
- // Print input PSOA KB if requested
- if (showOrigKB) {
- println("Original KB:");
-
- try (BufferedReader reader = new BufferedReader(
- new FileReader(inputKBPath))) {
- String line;
- while ((line = reader.readLine()) != null)
- println(line);
- }
-
- println();
- }
-
- // Load KB file
- system.loadKBFromFile(inputKBPath);
- println("KB Loaded. Enter Queries:");
- println();
-
- // Execute query from file input
- if (inputQueryPath != null) {
- try (FileInputStream queryStream = new FileInputStream(inputQueryPath);
- Scanner sc = new Scanner(System.in)) {
- QueryResult result = system.executeQuery(queryStream);
- printQueryResult(result, getAllAnswers, sc);
- return;
- }
- catch (FileNotFoundException e) {
- printErrln("Cannot find query file ", inputQueryPath,
- ". Read from console.");
- }
- catch (SecurityException e) {
- printErrln("Unable to read query file ", inputQueryPath,
- ". Read from console.");
- }
- }
-
- // Execute query from console
- try (Scanner sc = new Scanner(System.in)) {
- // Console query loop
- do {
- print("> ");
- if (!sc.hasNext())
- {
- println();
- break;
- }
-
- String query = sc.nextLine();
- try {
- QueryResult result = system.executeQuery(query, getAllAnswers);
- printQueryResult(result, getAllAnswers, sc);
- }
- // The catch part could be later refined with specific kinds of
- // exceptions that would not interfere future query executions, e.g.:
- // catch (PSOATransRunException | TranslatorException e)
- catch (Exception e)
- {
- if (dense) {
- printErrln(e.getMessage());
- }
- else
- e.printStackTrace();
- }
- println();
- } while (true);
- }
- }
- catch (FileNotFoundException e) {
- printErrlnAndExit("Cannot find KB file ", inputKBPath);
- }
- catch (SecurityException e) {
- printErrlnAndExit("Unable to read KB file ", inputKBPath);
- }
- finally {
- system.shutdown();
- }
- }
-
- private static void printQueryResult(QueryResult result,
- boolean getAllAnswers, Scanner reader) {
- println("Answer(s):");
-
- if (getAllAnswers) {
- println(result);
- }
- else {
- AnswerIterator iter = result.iterator();
- try {
- if (!iter.hasNext()) {
- println("No");
- }
- else {
- // Output first answer
- Substitution answer = iter.next();
- print(answer, "\t");
-
- // Handle user requests for more answers if the first answer is not "yes"
- if (!answer.isEmpty()) {
- while(true) {
- String input = reader.nextLine();
- if (input.equals(";")) {
- if (iter.hasNext())
- print(iter.next(), " \t");
- else {
- print("No");
- break;
- }
- }
- else if (input.isEmpty()) {
- println(iter.hasNext()? "Yes" : "No");
- break;
- }
- }
- }
-
- println();
- }
- }
- finally
- {
- iter.dispose();
- }
- }
- }
-
- private static void printErrlnAndExit(Object... objs)
- {
- printErrln(objs);
- System.exit(1);
- }
-
- private static void printUsage(boolean isLong) {
- println("Usage: java -jar PSOATransRun.jar -i [-e] [-p] [-c] [-o ] [-q ] [-a] [-u] [-s] [-x ]");
- println("Options:");
- println(" -?,--help Print the help message");
- println(" -a,--allAns Retrieve all answers for each query at once");
- println(" -i,--input Input Knowledge Base (KB)");
- println(" -e,--echoInput Echo input KB to standard output");
- println(" -q,--query Query document for the KB. If the query document");
- println(" is not specified, the engine will read queries");
- println(" from the standard input.");
- println(" -c,--explicitLocalConstants Require explicit underscores for local constants");
- println(" -p,--printTrans Print translated KB and queries to standard output");
- println(" -o,--outputTrans Save translated KB to the designated file");
- println(" -x,--xsbfolder Specifies XSB installation folder. The default path is ");
- println(" obtained from the environment variable XSB_DIR");
- println(" -u,--undiff Perform undifferentiated objectification");
- println(" -s,--staticOnly Perform static objectification only");
- println(" -d,--denseErrorMsgs Display dense error messages");
-
- if (isLong)
- {
- println(" --longhelp Print the help message, including commands for internal use");
- println(" -l,--targetLang Translation target language (currently support");
- println(" \"prolog\" and \"tptp\")");
- println(" -t,--test Run PSOATransRun tests (-i specifies the directory");
- println(" for the test suite)");
- println(" -n,--numRuns Number of runs for each test case");
- println(" -m,--timeout Timeout (only supported for the TPTP instantiation");
- println(" of PSOATransRun)");
- println(" -v,--verbose Show output for each test case while running tests");
- println(" -z,--omitNegMem Omit memterm in the describution of negative occurrences");
- println(" of psoa atoms with at least one dependent descriptor");
- }
- }
-}
+package org.ruleml.psoa.psoatransrun;
+
+import java.io.*;
+import java.util.Scanner;
+
+import org.ruleml.psoa.psoa2x.common.Translator;
+import org.ruleml.psoa.psoa2x.psoa2prolog.PrologTranslator;
+import org.ruleml.psoa.psoa2x.psoa2tptp.TPTPTranslator;
+import org.ruleml.psoa.psoatransrun.engine.ExecutionEngine;
+import org.ruleml.psoa.psoatransrun.prolog.SWIEngine;
+import org.ruleml.psoa.psoatransrun.prolog.XSBEngine;
+import org.ruleml.psoa.psoatransrun.test.TestSuite;
+import org.ruleml.psoa.psoatransrun.tptp.VampirePrimeEngine;
+
+import gnu.getopt.Getopt;
+import gnu.getopt.LongOpt;
+
+import static org.ruleml.psoa.utils.IOUtil.*;
+
+/**
+ * Command line interface of PSOATransRun
+ *
+ */
+public class PSOATransRunCmdLine {
+ // Entrance of PSOATransRun program
+ public static void main(String[] args) throws IOException {
+ // Parse command line options
+ LongOpt[] opts = new LongOpt[] {
+ new LongOpt("help", LongOpt.NO_ARGUMENT, null, '?'),
+ new LongOpt("longhelp", LongOpt.NO_ARGUMENT, null, '~'),
+ new LongOpt("targetLang", LongOpt.REQUIRED_ARGUMENT, null, 'l'),
+ new LongOpt("backend", LongOpt.REQUIRED_ARGUMENT, null, 'b'),
+ new LongOpt("input", LongOpt.REQUIRED_ARGUMENT, null, 'i'),
+ new LongOpt("query", LongOpt.REQUIRED_ARGUMENT, null, 'q'),
+ new LongOpt("explicitLocalConstants", LongOpt.NO_ARGUMENT, null, 'c'),
+ new LongOpt("test", LongOpt.NO_ARGUMENT, null, 't'),
+ new LongOpt("numRuns", LongOpt.REQUIRED_ARGUMENT, null, 'n'),
+ new LongOpt("echoInput", LongOpt.NO_ARGUMENT, null, 'e'),
+ new LongOpt("printTrans", LongOpt.NO_ARGUMENT, null, 'p'),
+ new LongOpt("outputTrans", LongOpt.REQUIRED_ARGUMENT, null, 'o'),
+ new LongOpt("prologFolder", LongOpt.REQUIRED_ARGUMENT, null, 'x'),
+ new LongOpt("allAns", LongOpt.NO_ARGUMENT, null, 'a'),
+ new LongOpt("timeout", LongOpt.REQUIRED_ARGUMENT, null, 'm'),
+ new LongOpt("staticOnly", LongOpt.NO_ARGUMENT, null, 's'),
+ new LongOpt("undiff", LongOpt.NO_ARGUMENT, null, 'u'),
+ new LongOpt("verbose", LongOpt.NO_ARGUMENT, null, 'v'),
+ new LongOpt("omitNegMem", LongOpt.NO_ARGUMENT, null, 'z'),
+ new LongOpt("dense", LongOpt.NO_ARGUMENT, null, 'd')
+ };
+
+ Getopt optionsParser = new Getopt("", args, "?l:i:b:q:tn:epo:x:am:csuvzd", opts);
+
+ boolean outputTrans = false, showOrigKB = false, getAllAnswers = false,
+ dynamicObj = true, omitNegMem = false, differentiated = true,
+ isTest = false, dense = false, verbose = false, reconstruct = true;
+ String inputKBPath = null, inputQueryPath = null, lang = null, transKBPath = null,
+ prologPath = null, prologBackend = null;
+ int timeout = -1, numRuns = 1;
+
+ for (int opt = optionsParser.getopt(); opt != -1; opt = optionsParser
+ .getopt()) {
+ switch (opt) {
+ case '?':
+ printUsage(false);
+ return;
+ case '~':
+ printUsage(true);
+ return;
+ case 'l':
+ lang = optionsParser.getOptarg();
+ break;
+ case 'b':
+ prologBackend = optionsParser.getOptarg();
+ break;
+ case 'd':
+ dense = true;
+ break;
+ case 'i':
+ inputKBPath = optionsParser.getOptarg();
+ break;
+ case 'q':
+ inputQueryPath = optionsParser.getOptarg();
+ break;
+ case 'c':
+ reconstruct = false;
+ break;
+ case 'm':
+ try {
+ timeout = Integer.parseInt(optionsParser.getOptarg());
+ }
+ catch (NumberFormatException e) {
+ printErrlnAndExit("Incorrect number format for --timeout");
+ }
+ break;
+ case 't':
+ isTest = true;
+ break;
+ case 'n':
+ try {
+ numRuns = Integer.parseInt(optionsParser.getOptarg());
+ }
+ catch (NumberFormatException e) {
+ printErrlnAndExit("Incorrect number format for --numRuns");
+ }
+ break;
+ case 'e':
+ showOrigKB = true;
+ break;
+ case 'p':
+ outputTrans = true;
+ break;
+ case 'o':
+ transKBPath = optionsParser.getOptarg();
+ break;
+ case 'x':
+ prologPath = optionsParser.getOptarg();
+ break;
+ case 'a':
+ getAllAnswers = true;
+ break;
+ case 's':
+ dynamicObj = false;
+ break;
+ case 'u':
+ differentiated = false;
+ break;
+ case 'v':
+ verbose = true;
+ break;
+ case 'z':
+ omitNegMem = true;
+ break;
+ default:
+ assert false;
+ }
+ }
+
+ // Display system name
+ println(PSOATransRun.getSystemName(lang, prologBackend));
+
+ // Check whether input KB file / directory has been specified
+ if (inputKBPath == null) {
+ printErrlnAndExit("No input KB specified");
+ }
+
+ // Initialize PSOATransRun
+ Translator translator = null;
+ ExecutionEngine engine = null;
+
+ try {
+ if ((lang == null || lang.equalsIgnoreCase("prolog")) &&
+ (prologBackend == null || prologBackend.equalsIgnoreCase("xsb")))
+ {
+ PrologTranslator.Config transConfig = new PrologTranslator.Config();
+ transConfig.setDynamicObj(dynamicObj);
+ transConfig.setOmitMemtermInNegativeAtoms(omitNegMem);
+ transConfig.setDifferentiateObj(differentiated);
+ transConfig.setReconstruct(reconstruct);
+ translator = new PrologTranslator(transConfig);
+
+ XSBEngine.Config engineConfig = new XSBEngine.Config();
+ engineConfig.transKBPath = transKBPath;
+ engineConfig.xsbFolderPath = prologPath;
+ engine = new XSBEngine(engineConfig);
+
+ if (timeout > 0)
+ printErrln("Ignore -t option: only applicable for the target language TPTP");
+ }
+ else if ((lang == null || lang.equalsIgnoreCase("prolog")) && prologBackend.equalsIgnoreCase("swi"))
+
+ {
+ PrologTranslator.Config transConfig = new PrologTranslator.Config();
+ transConfig.setDynamicObj(dynamicObj);
+ transConfig.setOmitMemtermInNegativeAtoms(omitNegMem);
+ transConfig.setDifferentiateObj(differentiated);
+ transConfig.setReconstruct(reconstruct);
+ translator = new PrologTranslator(transConfig);
+
+ SWIEngine.Config engineConfig = new SWIEngine.Config();
+ engineConfig.transKBPath = transKBPath;
+ engineConfig.swiFolderPath = prologPath;
+ engine = new SWIEngine(engineConfig);
+
+ if (timeout > 0)
+ printErrln("Ignore -t option: only applicable for the target language TPTP");
+ }
+ else if (lang.equalsIgnoreCase("tptp"))
+ {
+ TPTPTranslator.Config transConfig = new TPTPTranslator.Config();
+ transConfig.setDynamicObj(dynamicObj);
+ transConfig.setOmitMemtermInNegativeAtoms(omitNegMem);
+ transConfig.setDifferentiateObj(differentiated);
+ transConfig.setReconstruct(reconstruct);
+ translator = new TPTPTranslator(transConfig);
+ VampirePrimeEngine.Config engineConfig = new VampirePrimeEngine.Config();
+ if (timeout > 0)
+ engineConfig.timeout = timeout;
+ engineConfig.transKBPath = transKBPath;
+ engine = new VampirePrimeEngine(engineConfig);
+
+ if (prologPath != null)
+ printErrln("Ignore -x option: only applicable for the target language \"prolog\"");
+ if (prologBackend != null)
+ printErrln("Ignore -b option: only applicable for the target language \"prolog\"");
+ }
+ else
+ {
+ if (lang == null || lang.equalsIgnoreCase("prolog"))
+ {
+ printErrlnAndExit("Unsupported Prolog backend: ", prologBackend);
+ }
+ else
+ {
+ printErrlnAndExit("Unsupported language: ", lang);
+ }
+ }
+ }
+ catch (PSOATransRunException e) {
+ printErrlnAndExit(e.getMessage());
+ }
+
+ PSOATransRun system = new PSOATransRun(translator, engine);
+ system.setPrintTrans(outputTrans);
+
+ // Run tests
+ if (isTest)
+ {
+ try {
+ TestSuite ts = new TestSuite(inputKBPath, system, numRuns, verbose);
+ ts.run();
+ ts.outputSummary();
+ System.exit(0);
+ }
+ catch (PSOATransRunException e)
+ {
+ printErrlnAndExit(e.getMessage());
+ }
+ }
+
+ try {
+ // Print input PSOA KB if requested
+ if (showOrigKB) {
+ println("Original KB:");
+
+ try (BufferedReader reader = new BufferedReader(
+ new FileReader(inputKBPath))) {
+ String line;
+ while ((line = reader.readLine()) != null)
+ println(line);
+ }
+
+ println();
+ }
+
+ // Load KB file
+ system.loadKBFromFile(inputKBPath);
+ println("KB Loaded. Enter Queries:");
+ println();
+
+ // Execute query from file input
+ if (inputQueryPath != null) {
+ try (FileInputStream queryStream = new FileInputStream(inputQueryPath);
+ Scanner sc = new Scanner(System.in)) {
+ QueryResult result = system.executeQuery(queryStream);
+ printQueryResult(result, getAllAnswers, sc);
+ return;
+ }
+ catch (FileNotFoundException e) {
+ printErrln("Cannot find query file ", inputQueryPath,
+ ". Read from console.");
+ }
+ catch (SecurityException e) {
+ printErrln("Unable to read query file ", inputQueryPath,
+ ". Read from console.");
+ }
+ }
+
+ // Execute query from console
+ try (Scanner sc = new Scanner(System.in)) {
+ // Console query loop
+ do {
+ print("> ");
+ if (!sc.hasNext())
+ {
+ println();
+ break;
+ }
+
+ String query = sc.nextLine();
+ try {
+ QueryResult result = system.executeQuery(query, getAllAnswers);
+ printQueryResult(result, getAllAnswers, sc);
+ }
+ // The catch part could be later refined with specific kinds of
+ // exceptions that would not interfere future query executions, e.g.:
+ // catch (PSOATransRunException | TranslatorException e)
+ catch (Exception e)
+ {
+ if (dense) {
+ printErrln(e.getMessage());
+ }
+ else
+ e.printStackTrace();
+ }
+ println();
+ } while (true);
+ }
+ }
+ catch (FileNotFoundException e) {
+ printErrlnAndExit("Cannot find KB file ", inputKBPath);
+ }
+ catch (SecurityException e) {
+ printErrlnAndExit("Unable to read KB file ", inputKBPath);
+ }
+ finally {
+ system.shutdown();
+ }
+ }
+
+ private static void printQueryResult(QueryResult result,
+ boolean getAllAnswers, Scanner reader) {
+ println("Answer(s):");
+
+ if (getAllAnswers) {
+ println(result);
+ }
+ else {
+ AnswerIterator iter = result.iterator();
+ try {
+ if (!iter.hasNext()) {
+ println("No");
+ }
+ else {
+ // Output first answer
+ Substitution answer = iter.next();
+ print(answer, "\t");
+
+ // Handle user requests for more answers if the first answer is not "yes"
+ if (!answer.isEmpty()) {
+ while(true) {
+ String input = reader.nextLine();
+ if (input.equals(";")) {
+ if (iter.hasNext())
+ print(iter.next(), " \t");
+ else {
+ print("No");
+ break;
+ }
+ }
+ else if (input.isEmpty()) {
+ println(iter.hasNext()? "Yes" : "No");
+ break;
+ }
+ }
+ }
+
+ println();
+ }
+ }
+ finally
+ {
+ iter.dispose();
+ }
+ }
+ }
+
+ private static void printErrlnAndExit(Object... objs)
+ {
+ printErrln(objs);
+ System.exit(1);
+ }
+
+ private static void printUsage(boolean isLong) {
+ println("Usage: java -jar PSOATransRun.jar -i [-e] [-p] [-c] [-o ] [-q ] [-a] [-u] [-s] [-x ]");
+ println("Options:");
+ println(" -?,--help Print the help message");
+ println(" -a,--allAns Retrieve all answers for each query at once");
+ println(" -i,--input Input Knowledge Base (KB)");
+ println(" -e,--echoInput Echo input KB to standard output");
+ println(" -q,--query Query document for the KB. If the query document");
+ println(" is not specified, the engine will read queries");
+ println(" from the standard input.");
+ println(" -c,--explicitLocalConstants Require explicit underscores for local constants");
+ println(" -p,--printTrans Print translated KB and queries to standard output");
+ println(" -o,--outputTrans Save translated KB to the designated file");
+ println(" -l,--targetLang Translation target language (currently support");
+ println(" \"prolog\" (default) and \"tptp\")");
+ println(" -b,--backend Backend for target language \"prolog\" (currently support");
+ println(" \"xsb\" (default) and \"swi\")");
+ println(" -x,--prologFolder Specifies Prolog installation folder. The default path is ");
+ println(" obtained from the environment variable XSB_DIR for XSB Prolog,");
+ println(" or from default install locations for SWI Prolog");
+ println(" -u,--undiff Perform undifferentiated objectification");
+ println(" -s,--staticOnly Perform static objectification only");
+ println(" -d,--denseErrorMsgs Display dense error messages");
+
+ if (isLong)
+ {
+ println(" --longhelp Print the help message, including commands for internal use");
+ println(" -t,--test Run PSOATransRun tests (-i specifies the directory");
+ println(" for the test suite)");
+ println(" -n,--numRuns Number of runs for each test case");
+ println(" -m,--timeout Timeout (only supported for the TPTP instantiation");
+ println(" of PSOATransRun)");
+ println(" -v,--verbose Show output for each test case while running tests");
+ println(" -z,--omitNegMem Omit memterm in the describution of negative occurrences");
+ println(" of psoa atoms with at least one dependent descriptor");
+ }
+ }
+}
diff --git a/PSOATransRun/src/main/java/org/ruleml/psoa/psoatransrun/prolog/SWIEngine.java b/PSOATransRun/src/main/java/org/ruleml/psoa/psoatransrun/prolog/SWIEngine.java
new file mode 100644
index 00000000..7f4cb0b8
--- /dev/null
+++ b/PSOATransRun/src/main/java/org/ruleml/psoa/psoatransrun/prolog/SWIEngine.java
@@ -0,0 +1,252 @@
+package org.ruleml.psoa.psoatransrun.prolog;
+
+import static org.ruleml.psoa.psoatransrun.utils.IOUtil.*;
+
+import java.io.*;
+
+import org.apache.commons.exec.OS;
+import org.ruleml.psoa.psoatransrun.PSOATransRunException;
+import org.ruleml.psoa.psoatransrun.engine.EngineConfig;
+
+import com.declarativa.interprolog.SWISubprocessEngine;
+
+/**
+ * SWI Engine
+ *
+ * */
+public class SWIEngine extends PrologEngine {
+ private String m_swiBinPath, m_swiFolder;
+ private File m_transKBFile;
+
+ // Maximum tuple length of psoa atoms for tupterm/prdtupterm
+ protected static final int MAX_TUPLE_LEN_FOR_TABLING = 10;
+
+ /**
+ * SWI engine configuration
+ *
+ * */
+ public static class Config extends EngineConfig {
+ public String swiFolderPath;
+ }
+
+ public SWIEngine() {
+ this(new Config());
+ }
+
+ public SWIEngine(Config config) {
+ this(config, false);
+ }
+
+ /**
+ * Initialize SWIEngine
+ *
+ * @param config the configuration
+ * @param delayStart if true, start the engine at initialization time; otherwise, start the engine when KB is loaded
+ * */
+ public SWIEngine(Config config, boolean delayStart) {
+
+ // Configure swi installation folder
+ m_swiFolder = config.swiFolderPath;
+
+ if (m_swiFolder == null || !(new File(m_swiFolder)).exists())
+ // Search by default install locations
+ if (OS.isFamilyUnix() || OS.isFamilyMac())
+ {
+ // Look for the SWI executable at /usr/bin (Linux),
+ // /Applications/SWI-Prolog.app/Contents/MacOS/swipl
+ String bin_path;
+ if (OS.isFamilyMac())
+ bin_path = "/Applications/SWI-Prolog.app/Contents/MacOS/swipl";
+ else
+ bin_path = "/usr/bin/swipl";
+
+ if (!(new File(bin_path)).exists())
+ {
+ // Search also for local or brew (MacOS) installation
+ bin_path = "/usr/local/bin/swipl";
+ }
+ File exec = new File(bin_path);
+
+ if (!(exec.exists()))
+ {
+ if (m_swiFolder == null)
+ {
+ if (!OS.isFamilyMac())
+ throw new PSOATransRunException(
+ "Cannot find SWI binary: Please install SWI Prolog "
+ + "or specify a SWI Prolog directory.\n\n"
+ + "You can install SWI Prolog through your package manager\n\n"
+ + "If you are using debian/mint/ubuntu try:\n" + " sudo apt-get install swi-prolog\n\n"
+ + "If you are using OpenSUSE try:\n" + " sudo zypper in swipl");
+ else
+ throw new PSOATransRunException("Cannot find SWI binary: Please install SWI Prolog"
+ + "or specify a SWI Prolog directory.");
+ }
+ else
+ throw new PSOATransRunException("Cannot find SWI binary: " + m_swiFolder + " does not exist or is empty.");
+ }
+ else
+ m_swiFolder = exec.getParentFile().getAbsolutePath();
+ }
+
+ else if (OS.isFamilyWindows())
+ {
+ // Search first at default installation location
+ File exec = new File("C:\\Program Files\\swipl");
+ if (!(exec.exists()))
+ {
+ // Have a last look if the executable is located at C:\\Program Files (x86)\
+ File exec_32 = new File("C:\\Program Files (x86)\\swipl");
+ if (!(exec_32.exists() && exec_32.isDirectory()))
+ {
+ if (m_swiFolder == null)
+ throw new PSOATransRunException("Cannot find SWI binary: Please install SWI Prolog or specify a SWI Prolog directory.");
+ else
+ throw new PSOATransRunException("Cannot find SWI binary: " + m_swiFolder + " does not exist or is empty.");
+
+ }
+ else
+ {
+ m_swiFolder = "C:\\Program Files (x86)\\swipl";
+ }
+
+ }
+ else
+ m_swiFolder = "C:\\Program Files\\swipl";
+ }
+
+ if (m_swiFolder == null)
+ throw new PSOATransRunException("Unable to locate SWI installation folder.");
+
+ File f = new File(m_swiFolder);
+ if (!(f.exists() && f.isDirectory()))
+ throw new PSOATransRunException("SWI installation folder " + m_swiFolder + " does not exist");
+
+ // Find the path of SWI binary
+ if (OS.isFamilyUnix() || OS.isFamilyMac())
+ {
+ if (m_swiFolder.equals("/usr/bin") ||
+ m_swiFolder.equals("/Applications/SWI-Prolog.app/Contents/MacOS") ||
+ m_swiFolder.equals("/usr/local/bin"))
+ {
+ m_swiBinPath = m_swiFolder;
+ System.out.println("Using SWI Prolog executable found at: " + m_swiFolder) ;
+ }
+ else
+ {
+ f = new File(f, "bin");
+ File[] subdirs = f.listFiles();
+ if (subdirs == null || subdirs.length == 0)
+ throw new PSOATransRunException("Cannot find SWI binary: " + f.getAbsolutePath() + " does not exist or is empty.");
+
+ File swiFile = null;
+ for (File dir : subdirs)
+ {
+ File f1 = new File(dir, "swipl");
+ if (f1.canExecute())
+ swiFile = f1;
+ }
+
+ if (swiFile != null)
+ {
+ m_swiBinPath = swiFile.getParentFile().getAbsolutePath();
+ }
+ else
+ throw new PSOATransRunException("Cannot find SWI binary in " + f.getAbsolutePath());
+ }
+ }
+ else if (OS.isFamilyWindows())
+ {
+ f = new File(f, "bin");
+ File f1 = new File(f, "swipl-win.exe");
+ if (f1.canExecute())
+ {
+ m_swiBinPath = f.getAbsolutePath();
+ }
+ else
+ throw new PSOATransRunException("Cannot find SWI binary in " + f.getAbsolutePath());
+ }
+
+ else
+ {
+ throw new PSOATransRunException("Unsupported operating system.");
+ }
+
+ // Start SWI engine
+ if (!delayStart)
+ m_engine = new SWISubprocessEngine(m_swiBinPath);
+
+ // Set translated KB
+ String transKBPath = config.transKBPath;
+ try
+ {
+ if (transKBPath != null)
+ {
+ if (!transKBPath.endsWith(".pl") && !transKBPath.endsWith(".P"))
+ throw new PSOATransRunException("Prolog translation output file name must end with .pl or .P: " + transKBPath);
+ m_transKBFile = new File(transKBPath);
+ m_transKBFile.createNewFile();
+ }
+ else
+ m_transKBFile = tmpFile("tmp-", ".pl");
+ }
+ catch (IOException e)
+ {
+ throw new PSOATransRunException(e);
+ }
+
+ }
+
+ @Override
+ public void loadKB(String kb) {
+ if (m_engine == null || m_engine.isShutingDown())
+ m_engine = new SWISubprocessEngine(m_swiBinPath);
+
+ try(PrintWriter writer = new PrintWriter(m_transKBFile))
+ {
+ writer.println(":- use_module(library(tabling)).");
+ writer.println(":- table memterm/2.");
+ writer.println(":- discontiguous 'memterm tabled'/2.");
+ writer.println(":- table sloterm/3.");
+ writer.println(":- discontiguous 'sloterm tabled'/3.");
+ writer.println(":- table prdsloterm/4.");
+ writer.println(":- discontiguous 'prdsloterm tabled'/4.");
+
+ // Assume a maximum tuple length of MAX_TUPLE_LEN_FOR_TABLING
+ for (int i = 1; i < 2 + MAX_TUPLE_LEN_FOR_TABLING; i++)
+ {
+ writer.println(":- table tupterm/" + i + ".");
+ writer.println(":- discontiguous 'tupterm tabled'/" + i + ".");
+ writer.println(":- table prdtupterm/" + (i + 1) + ".");
+ writer.println(":- discontiguous 'prdtupterm tabled'/" + (i + 1) + "-2.");
+ }
+
+ // Configure SWI
+ writer.println(":- set_prolog_flag(iso,true)."); // Select ISO prolog compatibility
+
+ writer.print(kb);
+ }
+
+ catch (FileNotFoundException e)
+ {
+ throw new PSOATransRunException(e);
+ }
+
+ String path = m_transKBFile.getPath();
+ path = path.substring(0, path.length() - 2).concat("xwam");
+ File xwamFile = new File(path);
+ if (xwamFile.exists())
+ xwamFile.delete();
+
+ if (m_engine.consultAbsolute(m_transKBFile))
+ {
+ if (xwamFile.exists())
+ xwamFile.deleteOnExit();
+ }
+ else
+ {
+ m_engine.interrupt();
+ throw new PSOATransRunException("Failed to load KB");
+ }
+ }
+}
diff --git a/PSOATransRunWebService/pom.xml b/PSOATransRunWebService/pom.xml
index 59aefa09..30081f66 100644
--- a/PSOATransRunWebService/pom.xml
+++ b/PSOATransRunWebService/pom.xml
@@ -32,7 +32,7 @@
org.ruleml.psoa
PSOATransRun
- 1.3
+ 1.4