diff --git a/Cargo.lock b/Cargo.lock
index ede5aa3d..268177ba 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -491,7 +491,7 @@ dependencies = [
[[package]]
name = "prolog_parser"
-version = "0.8.53"
+version = "0.8.54"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"lexical 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -638,7 +638,7 @@ dependencies = [
"nix 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)",
"num-rug-adapter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"ordered-float 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "prolog_parser 0.8.53 (registry+https://github.com/rust-lang/crates.io-index)",
+ "prolog_parser 0.8.54 (registry+https://github.com/rust-lang/crates.io-index)",
"ref_thread_local 0.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rug 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rustyline 6.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -870,7 +870,7 @@ dependencies = [
"checksum proc-macro-hack 0.5.14 (registry+https://github.com/rust-lang/crates.io-index)" = "fcfdefadc3d57ca21cf17990a28ef4c0f7c61383a28cb7604cf4a18e6ede1420"
"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
"checksum proc-macro2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6c09721c6781493a2a492a96b5a5bf19b65917fe6728884e7c44dd0c60ca3435"
-"checksum prolog_parser 0.8.53 (registry+https://github.com/rust-lang/crates.io-index)" = "772ac5f493b6c0d1a4fb486da6b05cba8d2486f4d7f9872ae363d5fb097728c7"
+"checksum prolog_parser 0.8.54 (registry+https://github.com/rust-lang/crates.io-index)" = "1724f289e6a670073445192ee382afd21138c106e2f4fa9797a7252926e7dea0"
"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
"checksum quote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2bdc6c187c65bca4260c9011c9e3132efe4909da44726bad24cf7572ae338d7f"
"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
diff --git a/src/prolog/examples/bimetatrans_ruleml.pl b/src/prolog/examples/bimetatrans_ruleml/bimetatrans_ruleml.pl
similarity index 100%
rename from src/prolog/examples/bimetatrans_ruleml.pl
rename to src/prolog/examples/bimetatrans_ruleml/bimetatrans_ruleml.pl
diff --git a/src/prolog/examples/bimetatrans_ruleml/bimetatrans_ruleml_tests.pl b/src/prolog/examples/bimetatrans_ruleml/bimetatrans_ruleml_tests.pl
new file mode 100644
index 00000000..cf1026d8
--- /dev/null
+++ b/src/prolog/examples/bimetatrans_ruleml/bimetatrans_ruleml_tests.pl
@@ -0,0 +1,4174 @@
+:- module(bimetatrans_ruleml_tests, [test_bimetatrans_ruleml/0]).
+
+:- use_module('bimetatrans_ruleml').
+
+:- use_module(library(dcgs)).
+:- use_module(library(iso_ext)).
+:- use_module(library(lists)).
+:- use_module(library(si)).
+
+/* test(N, Prolog, XML) is expanded to the predicates
+ *
+ * prolog2ruleml_N :- parse_ruleml(Prolog, XML0), XML0 = XML.
+ * ruleml2prolog_N :- parse_ruleml(Prolog0, XML), Prolog0 = Prolog.
+ *
+ * test_N :- prolog2ruleml_N, ruleml2prolog_N, !.
+ * test_N :- throw(error(test_failure, test_N)).
+ *
+ * which test the invertibility of parse_ruleml/2.
+ *
+ * The initialization goal is a chain of calls to the test_N in
+ * order of ascending N.
+ */
+
+term_expansion(Term0, Term) :-
+ nonvar(Term0),
+ Term0 = test(N, Assert, Query, XML),
+ integer(N),
+ list_si(Assert),
+ list_si(Query),
+ partial_string(XML),
+ number_chars(N, NChars),
+ atom_chars(NAtom, NChars),
+ atom_concat(prolog2ruleml_, NAtom, Prolog2RuleML),
+ atom_concat(ruleml2prolog_, NAtom, RuleML2Prolog),
+ atom_concat(test_, NAtom, TestN),
+ strip_indentation(XML, XML1),
+ Term = [(Prolog2RuleML :- parse_ruleml(Assert, Query, XML0),
+ XML0 = XML1),
+ (RuleML2Prolog :- parse_ruleml(Assert0, Query0, XML),
+ Assert0 = Assert,
+ Query0 = Query),
+ (TestN :- write(test(N)), nl, Prolog2RuleML, RuleML2Prolog, !),
+ (TestN :- throw(error(test_failure, TestN)))].
+
+
+until_non_space_or_end([C|Cs], Cs1) :-
+ ( C == (' ') ->
+ until_non_space_or_end(Cs, Cs1)
+ ; Cs1 = [C|Cs]
+ ).
+until_non_space_or_end([], []).
+
+
+strip_indentation(Cs, String) :-
+ strip_indentation_(Cs, Cs1),
+ partial_string(Cs1, String, []).
+
+strip_indentation_([C|Cs], Cs0) :-
+ ( C == ('>') ->
+ until_non_space_or_end(Cs, Cs1),
+ Cs0 = [C|Cs2],
+ strip_indentation_(Cs1, Cs2)
+ ; Cs0 = [C|Cs1],
+ strip_indentation_(Cs, Cs1)
+ ).
+strip_indentation_([], []).
+
+
+test(1,
+ [people('Alex',male),people('Alex',female),people('Siri',female)],
+ [],
+ "\
+ \
+ people\
+ Alex\
+ male\
+ \
+ \
+ people\
+ Alex\
+ female\
+ \
+ \
+ people\
+ Siri\
+ female\
+ \
+ ").
+
+test(2,
+ [parent('Alex','Mary')],
+ [],
+ "\
+ \
+ parent\
+ Alex\
+ Mary\
+ \
+ ").
+
+test(3,
+ [people('Alex',male),people('Alex',female),people('Siri',female),parent('Alex','Mary'),parent('Mary','Tom')],
+ [],
+ "\
+ \
+ people\
+ Alex\
+ male\
+ \
+ \
+ people\
+ Alex\
+ female\
+ \
+ \
+ people\
+ Siri\
+ female\
+ \
+ \
+ parent\
+ Alex\
+ Mary\
+ \
+ \
+ parent\
+ Mary\
+ Tom\
+ \
+ ").
+
+test(4,
+ [(ancestor(mark, terry) :- true)],
+ [],
+ "\
+ \
+ \
+ \
+ ancestor\
+ mark\
+ terry\
+ \
+ \
+ \
+ \
+ true\
+ \
+ \
+ \
+ ").
+
+test(5,
+ [(ancestor(mark, '$V'(y)) :- parent(mark, '$V'(x)), ancestor('$V'(x), '$V'(y)))],
+ [],
+ "\
+ \
+ \
+ \
+ ancestor\
+ mark\
+ y\
+ \
+ \
+ \
+ \
+ \
+ parent\
+ mark\
+ x\
+ \
+ \
+ ancestor\
+ x\
+ y\
+ \
+ \
+ \
+ \
+ ").
+
+test(6,
+ [(ancestor(mark, terry) :- condition_1, condition_2)],
+ [],
+ "\
+ \
+ \
+ \
+ ancestor\
+ mark\
+ terry\
+ \
+ \
+ \
+ \
+ \
+ condition_1\
+ \
+ \
+ condition_2\
+ \
+ \
+ \
+ \
+ ").
+
+test(7,
+ [(roots(nationality('$V'(x), '$V'(nation)), '$V'(y)) :- parent('$V'(x), '$V'(y)), nationality('$V'(y), '$V'(nation)))],
+ [],
+ "\
+ \
+ \
+ \
+ roots\
+ \
+ nationality\
+ x\
+ nation\
+ \
+ y\
+ \
+ \
+ \
+ \
+ \
+ parent\
+ x\
+ y\
+ \
+ \
+ nationality\
+ y\
+ nation\
+ \
+ \
+ \
+ \
+ ").
+
+test(8,
+ [a(item), b(item), c(item)],
+ [],
+ "\
+ \
+ a\
+ item\
+ \
+ \
+ b\
+ item\
+ \
+ \
+ c\
+ item\
+ \
+ ").
+
+test(9,
+ [number(1)],
+ [],
+ "\
+ \
+ number\
+ 1\
+ \
+ ").
+
+test(10,
+ [number(1.2)],
+ [],
+ "\
+ \
+ number\
+ 1.2\
+ \
+ ").
+
+test(11,
+ [number(-1.2)],
+ [],
+ "\
+ \
+ number\
+ -1.2\
+ \
+ ").
+
+test(12,
+ [h(f(1,2,g(b)), '$V'(stuff))],
+ [],
+ "\
+ \
+ h\
+ \
+ f\
+ 1\
+ 2\
+ \
+ g\
+ b\
+ \
+ \
+ stuff\
+ \
+ ").
+
+test(13,
+ [buy('$V'(person), '$V'(merchant), book(('$V'(title) | '$V'(info))))],
+ [],
+ "\
+ \
+ buy\
+ person\
+ merchant\
+ \
+ book\
+ title\
+ \
+ info\
+ \
+ \
+ \
+ ").
+
+test(14,
+ [(own('$V'(person),book(('$V'(title) | '$V'(info)))):-buy('$V'(person),'$V'(merchant),book(('$V'(title) | '$V'(info)))),\+relinquish('$V'(person),book(('$V'(title) | '$V'(info))))),buy('Mary','John',book('XML Bible','Elliotte Rusty Harold',2001))],
+ [],
+ "\
+ \
+ \
+ \
+ own\
+ person\
+ \
+ book\
+ title\
+ \
+ info\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ buy\
+ person\
+ merchant\
+ \
+ book\
+ title\
+ \
+ info\
+ \
+ \
+ \
+ \
+ \
+ relinquish\
+ person\
+ \
+ book\
+ title\
+ \
+ info\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ buy\
+ Mary\
+ John\
+ \
+ book\
+ XML Bible\
+ Elliotte Rusty Harold\
+ 2001\
+ \
+ \
+ ").
+
+
+test(15,
+ [(fact :- \+ blue_eyed(mark))],
+ [],
+ "\
+ \
+ \
+ \
+ fact\
+ \
+ \
+ \
+ \
+ \
+ blue_eyed\
+ mark\
+ \
+ \
+ \
+ \
+ ").
+
+test(16,
+ [string_data("string data")],
+ [],
+ "\
+ \
+ string_data\
+ \"string data\"\
+ \
+ ").
+
+test(17,
+ [factorial(0) = 1],
+ [],
+ "\
+ \
+ \
+ factorial\
+ 0\
+ \
+ 1\
+ \
+ ").
+
+test(18,
+ [factorial(n) = mul(n, factorial(sub(n,1)))],
+ [],
+ "\
+ \
+ \
+ factorial\
+ n\
+ \
+ \
+ mul\
+ n\
+ \
+ factorial\
+ \
+ sub\
+ n\
+ 1\
+ \
+ \
+ \
+ \
+ ").
+
+test(19,
+ [factorial(0) = 1, factorial(n) = mul(n,factorial(sub(n,1)))],
+ [],
+ "\
+ \
+ \
+ factorial\
+ 0\
+ \
+ 1\
+ \
+ \
+ \
+ factorial\
+ n\
+ \
+ \
+ mul\
+ n\
+ \
+ factorial\
+ \
+ sub\
+ n\
+ 1\
+ \
+ \
+ \
+ \
+ ").
+
+test(20,
+ [(visit('$V'(customer), store(best_buy, manager(karen), location(prospect_st))) :- feels_like_it('$V'(customer)))],
+ [],
+ "\
+ \
+ \
+ \
+ visit\
+ customer\
+ \
+ store\
+ best_buy\
+ \
+ manager\
+ karen\
+ \
+ \
+ location\
+ prospect_st\
+ \
+ \
+ \
+ \
+ \
+ \
+ feels_like_it\
+ customer\
+ \
+ \
+ \
+ ").
+
+
+test(21,
+ [(visit('$V'(customer), store(best_buy, manager(karen), location(prospect_st))) :- feels_like_it('$V'(customer)), has_car('$V'(customer)))],
+ [],
+ "\
+ \
+ \
+ \
+ visit\
+ customer\
+ \
+ store\
+ best_buy\
+ \
+ manager\
+ karen\
+ \
+ \
+ location\
+ prospect_st\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ feels_like_it\
+ customer\
+ \
+ \
+ has_car\
+ customer\
+ \
+ \
+ \
+ \
+ ").
+
+
+test(22,
+ [(visit('$V'(customer), store(best_buy, manager((karen | head_office_mgrs)), location(prospect_st))) :- feels_like_it('$V'(customer)), has_car('$V'(customer)))],
+ [],
+ "\
+ \
+ \
+ \
+ visit\
+ customer\
+ \
+ store\
+ best_buy\
+ \
+ manager\
+ karen\
+ \
+ head_office_mgrs\
+ \
+ \
+ \
+ location\
+ prospect_st\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ feels_like_it\
+ customer\
+ \
+ \
+ has_car\
+ customer\
+ \
+ \
+ \
+ \
+ ").
+
+test(23,
+ [employee('William'),'Bill'='William'],
+ [],
+ "\
+ \
+ employee\
+ William\
+ \
+ \
+ Bill\
+ William\
+ \
+ ").
+
+test(24,
+ ['$V'(x)='$V'(x)],
+ [],
+ "\
+ \
+ x\
+ x\
+ \
+ ").
+
+test(25,
+ [(s :- p, q, r)],
+ [],
+ "\
+ \
+ \
+ \
+ s\
+ \
+ \
+ \
+ \
+ \
+ p\
+ \
+ \
+ q\
+ \
+ \
+ r\
+ \
+ \
+ \
+ \
+ ").
+
+test(26,
+ [(trip(origin(us), destination(tuva)) :- airline_tickets('$V'(airline)), \+ expensive_tickets)],
+ [],
+ "\
+ \
+ \
+ \
+ trip\
+ \
+ origin\
+ us\
+ \
+ \
+ destination\
+ tuva\
+ \
+ \
+ \
+ \
+ \
+ \
+ airline_tickets\
+ airline\
+ \
+ \
+ \
+ expensive_tickets\
+ \
+ \
+ \
+ \
+ \
+ ").
+
+test(27,
+ [(or :- (a ; b))],
+ [],
+ "\
+ \
+ \
+ \
+ or\
+ \
+ \
+ \
+ \
+ \
+ a\
+ \
+ \
+ b\
+ \
+ \
+ \
+ \
+ ").
+
+test(28,
+ [(or_and :- (a ; b), c)],
+ [],
+ "\
+ \
+ \
+ \
+ or_and\
+ \
+ \
+ \
+ \
+ \
+ \
+ a\
+ \
+ \
+ b\
+ \
+ \
+ \
+ c\
+ \
+ \
+ \
+ \
+ ").
+
+test(29,
+ [(or_and_2 :- (a ; b, c), d)],
+ [],
+ "\
+ \
+ \
+ \
+ or_and_2\
+ \
+ \
+ \
+ \
+ \
+ \
+ a\
+ \
+ \
+ \
+ b\
+ \
+ \
+ c\
+ \
+ \
+ \
+ \
+ d\
+ \
+ \
+ \
+ \
+ ").
+
+test(30,
+ [(or_and_2_equal :- (a ; b, c), d, (factorial(0) = factorial(0)))],
+ [],
+ "\
+ \
+ \
+ \
+ or_and_2_equal\
+ \
+ \
+ \
+ \
+ \
+ \
+ a\
+ \
+ \
+ \
+ b\
+ \
+ \
+ c\
+ \
+ \
+ \
+ \
+ d\
+ \
+ \
+ \
+ factorial\
+ 0\
+ \
+ \
+ factorial\
+ 0\
+ \
+ \
+ \
+ \
+ \
+ ").
+
+test(31,
+ [(or_and_3_equal :- (a ; b, c), d, \+ p(a))],
+ [],
+ "\
+ \
+ \
+ \
+ or_and_3_equal\
+ \
+ \
+ \
+ \
+ \
+ \
+ a\
+ \
+ \
+ \
+ b\
+ \
+ \
+ c\
+ \
+ \
+ \
+ \
+ d\
+ \
+ \
+ \
+ p\
+ a\
+ \
+ \
+ \
+ \
+ \
+ ").
+
+test(32,
+ [(or_and_4_equal :- (a ; b, c), d, \+ p(a,b,c))],
+ [],
+ "\
+ \
+ \
+ \
+ or_and_4_equal\
+ \
+ \
+ \
+ \
+ \
+ \
+ a\
+ \
+ \
+ \
+ b\
+ \
+ \
+ c\
+ \
+ \
+ \
+ \
+ d\
+ \
+ \
+ \
+ p\
+ a\
+ b\
+ c\
+ \
+ \
+ \
+ \
+ \
+ ").
+
+test(33,
+ [((term_0 = term_1) :- (a ; b, c), d, \+ p(a,b,c))],
+ [],
+ "\
+ \
+ \
+ \
+ \
+ term_0\
+ \
+ \
+ term_1\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ a\
+ \
+ \
+ \
+ b\
+ \
+ \
+ c\
+ \
+ \
+ \
+ \
+ d\
+ \
+ \
+ \
+ p\
+ a\
+ b\
+ c\
+ \
+ \
+ \
+ \
+ \
+ ").
+
+test(34,
+ [((term_0 = term_1) :- (a, f, g ; b, c), d, \+ p(f(a, 1),b,c))],
+ [],
+ "\
+ \
+ \
+ \
+ \
+ term_0\
+ \
+ \
+ term_1\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ a\
+ \
+ \
+ f\
+ \
+ \
+ g\
+ \
+ \
+ \
+ \
+ b\
+ \
+ \
+ c\
+ \
+ \
+ \
+ \
+ d\
+ \
+ \
+ \
+ p\
+ \
+ f\
+ a\
+ 1\
+ \
+ b\
+ c\
+ \
+ \
+ \
+ \
+ \
+ ").
+
+test(35,
+ [((term_0(a,1.2,"string") = term_1) :- (a, f, g ; b, c), d, \+ p(f(a, 1),b,c))],
+ [],
+ "\
+ \
+ \
+ \
+ \
+ term_0\
+ a\
+ 1.2\
+ \"string\"\
+ \
+ \
+ term_1\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ a\
+ \
+ \
+ f\
+ \
+ \
+ g\
+ \
+ \
+ \
+ \
+ b\
+ \
+ \
+ c\
+ \
+ \
+ \
+ \
+ d\
+ \
+ \
+ \
+ p\
+ \
+ f\
+ a\
+ 1\
+ \
+ b\
+ c\
+ \
+ \
+ \
+ \
+ \
+ ").
+
+test(36,
+ [((term_0(a,1.2,"strings may contain \"") = term_1) :- (a, f, g ; b, c), d, \+ p(f(a, 1),b,c))],
+ [],
+ "\
+ \
+ \
+ \
+ \
+ term_0\
+ a\
+ 1.2\
+ \"strings may contain \\\"\"\
+ \
+ \
+ term_1\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ a\
+ \
+ \
+ f\
+ \
+ \
+ g\
+ \
+ \
+ \
+ \
+ b\
+ \
+ \
+ c\
+ \
+ \
+ \
+ \
+ d\
+ \
+ \
+ \
+ p\
+ \
+ f\
+ a\
+ 1\
+ \
+ b\
+ c\
+ \
+ \
+ \
+ \
+ \
+ ").
+
+test(37,
+ [(factorial(n) = mul(n, factorial(sub(n,1))) :- greaterThan(n, 0))],
+ [],
+ "\
+ \
+ \
+ \
+ \
+ factorial\
+ n\
+ \
+ \
+ mul\
+ n\
+ \
+ factorial\
+ \
+ sub\
+ n\
+ 1\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ greaterThan\
+ n\
+ 0\
+ \
+ \
+ \
+ ").
+
+test(38,
+ [],
+ [(?- p)],
+ "\
+ \
+ p\
+ \
+ ").
+
+test(39,
+ [],
+ [(?- p(with, args))],
+ "\
+ \
+ p\
+ with\
+ args\
+ \
+ ").
+
+test(40,
+ [],
+ [(?- p(h, f(g(a, 1))))],
+ "\
+ \
+ p\
+ h\
+ \
+ f\
+ \
+ g\
+ a\
+ 1\
+ \
+ \
+ \
+ ").
+
+test(41,
+ [],
+ [(?- p, q, r(1), s(-2.222342432), t("attached"))],
+ "\
+ \
+ \
+ p\
+ \
+ \
+ q\
+ \
+ \
+ r\
+ 1\
+ \
+ \
+ s\
+ -2.222342432\
+ \
+ \
+ t\
+ \"attached\"\
+ \
+ \
+ ").
+
+test(42,
+ [a(item), b(item), c(item)],
+ [(?- p, q, r(1), s(-2.222342432), t("attached")), (?- u, v('$V'(q)))],
+ "\
+ \
+ a\
+ item\
+ \
+ \
+ b\
+ item\
+ \
+ \
+ c\
+ item\
+ \
+ \
+ \
+ \
+ \
+ p\
+ \
+ \
+ q\
+ \
+ \
+ r\
+ 1\
+ \
+ \
+ s\
+ -2.222342432\
+ \
+ \
+ t\
+ \"attached\"\
+ \
+ \
+ \
+ \
+ \
+ \
+ u\
+ \
+ \
+ v\
+ q\
+ \
+ \
+ ").
+
+test(43,
+ [f([items,in,a,list])],
+ [],
+ "\
+ \
+ f\
+ \
+ items\
+ in\
+ a\
+ list\
+ \
+ \
+ ").
+
+test(44,
+ [f([items,in,a,list|'$V'(x)])],
+ [],
+ "\
+ \
+ f\
+ \
+ items\
+ in\
+ a\
+ list\
+ \
+ x\
+ \
+ \
+ \
+ ").
+
+test(45,
+ [select('$V'(x), ['$V'(x) | '$V'(xs)], '$V'(xs)),
+ (select('$V'(x), ['$V'(y) | '$V'(xs)], ['$V'(y) | '$V'(ys)]) :- select('$V'(x), '$V'(xs), '$V'(ys)))],
+ [],
+ "\
+ \
+ select\
+ x\
+ \
+ x\
+ \
+ xs\
+ \
+ \
+ xs\
+ \
+ \
+ \
+ \
+ select\
+ x\
+ \
+ y\
+ \
+ xs\
+ \
+ \
+ \
+ y\
+ \
+ ys\
+ \
+ \
+ \
+ \
+ \
+ \
+ select\
+ x\
+ xs\
+ ys\
+ \
+ \
+ \
+ ").
+
+test(46,
+ [permutation([], []),
+ (permutation(['$V'(x) | '$V'(xs)], '$V'(ys)) :-
+ permutation('$V'(xs), '$V'(yss)), select('$V'(x), '$V'(ys), '$V'(yss)))],
+ [],
+ "\
+ \
+ permutation\
+ \
+ \
+ \
+ \
+ \
+ \
+ permutation\
+ \
+ x\
+ \
+ xs\
+ \
+ \
+ ys\
+ \
+ \
+ \
+ \
+ \
+ permutation\
+ xs\
+ yss\
+ \
+ \
+ select\
+ x\
+ ys\
+ yss\
+ \
+ \
+ \
+ \
+ ").
+
+%% Try a more substantial test case.
+test(47,
+ [(mtow('$V'(kg)) :- aircraftType('$V'(type)), aircraftChar('$V'(type), '$V'(kg), '$V'(wingspan), '$V'(appSpeed))),
+ (mtowPreceding('$V'(kg)) :- precedingAircraftType('$V'(type)), aircraftChar('$V'(type), '$V'(kg), '$V'(wingspan), '$V'(appSpeed))),
+ (wingspan('$V'(feet)) :-aircraftType('$V'(type)), aircraftChar('$V'(type), '$V'(kg), '$V'(feet), '$V'(appSpeed))),
+ (wingspanPreceding('$V'(feet)) :- precedingAircraftType('$V'(type)), aircraftChar('$V'(type), '$V'(kg), '$V'(feet), '$V'(appSpeed))),
+ (runwayOneOrientation('$V'(runOneOr)) :- airportChar('$V'(code), '$V'(runOneOr), '$V'(runTwoOr), '$V'(runThreeOr), '$V'(runFourOr), '$V'(runOneName), '$V'(runTwoName), '$V'(runThreeName), '$V'(runFourName), '$V'(distanceBetweenRunways), '$V'(rules)), airportName('$V'(code))),
+ (runwayTwoOrientation('$V'(runTwoOr)) :- airportChar('$V'(code), '$V'(runOneOr), '$V'(runTwoOr), '$V'(runThreeOr), '$V'(runFourOr), '$V'(runOneName), '$V'(runTwoName), '$V'(runThreeName), '$V'(runFourName), '$V'(distanceBetweenRunways), '$V'(rules)), airportName('$V'(code))),
+ (runwayThreeOrientation('$V'(runThreeOr)) :- airportChar('$V'(code), '$V'(runOneOr), '$V'(runTwoOr), '$V'(runThreeOr), '$V'(runFourOr), '$V'(runOneName), '$V'(runTwoName), '$V'(runThreeName), '$V'(runFourName), '$V'(distanceBetweenRunways), '$V'(rules)), airportName('$V'(code))),
+ (runwayFourOrientation('$V'(runFourOr)) :- airportChar('$V'(code), '$V'(runOneOr), '$V'(runTwoOr), '$V'(runThreeOr), '$V'(runFourOr), '$V'(runOneName), '$V'(runTwoName), '$V'(runThreeName), '$V'(runFourName), '$V'(distanceBetweenRunways), '$V'(rules)), airportName('$V'(code))),
+ (runwayOneName('$V'(runOneName)) :- airportChar('$V'(code), '$V'(runOneOr), '$V'(runTwoOr), '$V'(runThreeOr), '$V'(runFourOr), '$V'(runOneName), '$V'(runTwoName), '$V'(runThreeName), '$V'(runFourName), '$V'(distanceBetweenRunways), '$V'(rules)), airportName('$V'(code))),
+ (runwayTwoName('$V'(runTwoName)) :- airportChar('$V'(code), '$V'(runOneOr), '$V'(runTwoOr), '$V'(runThreeOr), '$V'(runFourOr), '$V'(runOneName), '$V'(runTwoName), '$V'(runThreeName), '$V'(runFourName), '$V'(distanceBetweenRunways), '$V'(rules)), airportName('$V'(code))),
+ (runwayThreeName('$V'(runThreeName)) :- airportChar('$V'(code), '$V'(runOneOr), '$V'(runTwoOr), '$V'(runThreeOr), '$V'(runFourOr), '$V'(runOneName), '$V'(runTwoName), '$V'(runThreeName), '$V'(runFourName), '$V'(distanceBetweenRunways), '$V'(rules)), airportName('$V'(code))),
+ (runwayFourName('$V'(runFourName)) :- airportChar('$V'(code), '$V'(runOneOr), '$V'(runTwoOr), '$V'(runThreeOr), '$V'(runFourOr), '$V'(runOneName), '$V'(runTwoName), '$V'(runThreeName), '$V'(runFourName), '$V'(distanceBetweenRunways), '$V'(rules)), airportName('$V'(code))),
+ (distanceBetweenRunways('$V'(distanceBetweenRunways)) :- airportChar('$V'(code), '$V'(runOneOr), '$V'(runTwoOr), '$V'(runThreeOr), '$V'(runFourOr), '$V'(runOneName), '$V'(runTwoName), '$V'(runThreeName), '$V'(runFourName), '$V'(distanceBetweenRunways), '$V'(rules)), airportName('$V'(code)))],
+ [],
+ "\
+ \
+ \
+ \
+ mtow\
+ kg\
+ \
+ \
+ \
+ \
+ \
+ aircraftType\
+ type\
+ \
+ \
+ aircraftChar\
+ type\
+ kg\
+ wingspan\
+ appSpeed\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ mtowPreceding\
+ kg\
+ \
+ \
+ \
+ \
+ \
+ precedingAircraftType\
+ type\
+ \
+ \
+ aircraftChar\
+ type\
+ kg\
+ wingspan\
+ appSpeed\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ wingspan\
+ feet\
+ \
+ \
+ \
+ \
+ \
+ aircraftType\
+ type\
+ \
+ \
+ aircraftChar\
+ type\
+ kg\
+ feet\
+ appSpeed\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ wingspanPreceding\
+ feet\
+ \
+ \
+ \
+ \
+ \
+ precedingAircraftType\
+ type\
+ \
+ \
+ aircraftChar\
+ type\
+ kg\
+ feet\
+ appSpeed\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ runwayOneOrientation\
+ runOneOr\
+ \
+ \
+ \
+ \
+ \
+ airportChar\
+ code\
+ runOneOr\
+ runTwoOr\
+ runThreeOr\
+ runFourOr\
+ runOneName\
+ runTwoName\
+ runThreeName\
+ runFourName\
+ distanceBetweenRunways\
+ rules\
+ \
+ \
+ airportName\
+ code\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ runwayTwoOrientation\
+ runTwoOr\
+ \
+ \
+ \
+ \
+ \
+ airportChar\
+ code\
+ runOneOr\
+ runTwoOr\
+ runThreeOr\
+ runFourOr\
+ runOneName\
+ runTwoName\
+ runThreeName\
+ runFourName\
+ distanceBetweenRunways\
+ rules\
+ \
+ \
+ airportName\
+ code\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ runwayThreeOrientation\
+ runThreeOr\
+ \
+ \
+ \
+ \
+ \
+ airportChar\
+ code\
+ runOneOr\
+ runTwoOr\
+ runThreeOr\
+ runFourOr\
+ runOneName\
+ runTwoName\
+ runThreeName\
+ runFourName\
+ distanceBetweenRunways\
+ rules\
+ \
+ \
+ airportName\
+ code\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ runwayFourOrientation\
+ runFourOr\
+ \
+ \
+ \
+ \
+ \
+ airportChar\
+ code\
+ runOneOr\
+ runTwoOr\
+ runThreeOr\
+ runFourOr\
+ runOneName\
+ runTwoName\
+ runThreeName\
+ runFourName\
+ distanceBetweenRunways\
+ rules\
+ \
+ \
+ airportName\
+ code\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ runwayOneName\
+ runOneName\
+ \
+ \
+ \
+ \
+ \
+ airportChar\
+ code\
+ runOneOr\
+ runTwoOr\
+ runThreeOr\
+ runFourOr\
+ runOneName\
+ runTwoName\
+ runThreeName\
+ runFourName\
+ distanceBetweenRunways\
+ rules\
+ \
+ \
+ airportName\
+ code\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ runwayTwoName\
+ runTwoName\
+ \
+ \
+ \
+ \
+ \
+ airportChar\
+ code\
+ runOneOr\
+ runTwoOr\
+ runThreeOr\
+ runFourOr\
+ runOneName\
+ runTwoName\
+ runThreeName\
+ runFourName\
+ distanceBetweenRunways\
+ rules\
+ \
+ \
+ airportName\
+ code\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ runwayThreeName\
+ runThreeName\
+ \
+ \
+ \
+ \
+ \
+ airportChar\
+ code\
+ runOneOr\
+ runTwoOr\
+ runThreeOr\
+ runFourOr\
+ runOneName\
+ runTwoName\
+ runThreeName\
+ runFourName\
+ distanceBetweenRunways\
+ rules\
+ \
+ \
+ airportName\
+ code\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ runwayFourName\
+ runFourName\
+ \
+ \
+ \
+ \
+ \
+ airportChar\
+ code\
+ runOneOr\
+ runTwoOr\
+ runThreeOr\
+ runFourOr\
+ runOneName\
+ runTwoName\
+ runThreeName\
+ runFourName\
+ distanceBetweenRunways\
+ rules\
+ \
+ \
+ airportName\
+ code\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ distanceBetweenRunways\
+ distanceBetweenRunways\
+ \
+ \
+ \
+ \
+ \
+ airportChar\
+ code\
+ runOneOr\
+ runTwoOr\
+ runThreeOr\
+ runFourOr\
+ runOneName\
+ runTwoName\
+ runThreeName\
+ runFourName\
+ distanceBetweenRunways\
+ rules\
+ \
+ \
+ airportName\
+ code\
+ \
+ \
+ \
+ \
+ ").
+
+test(48,
+ [(icaoCategory(light) :- mtow('$V'(kg)), lessThanOrEqual('$V'(kg), 7000.0)),
+ (icaoCategory(medium):- mtow('$V'(kg)), lessThan('$V'(kg), 136000.0), greaterThan('$V'(kg), 7000.0)),
+ (icaoCategory(heavy) :- aircraftType('$V'(model)), notEqual('$V'(model),'A388'), notEqual('$V'(model),'A38F'), mtow('$V'(kg)), greaterThanOrEqual('$V'(kg), 136000.0)),
+ (icaoCategory(super) :- aircraftType('A388')),
+ (icaoCategory(super) :- aircraftType('A38F')),
+ %(icaoCategory(super) :- aircraftType('A225')),
+
+
+ (icaoCategoryPreceding(light) :- mtowPreceding('$V'(kgPreceding)), lessThanOrEqual('$V'(kgPreceding), 7000.0)),
+ (icaoCategoryPreceding(medium) :- mtowPreceding('$V'(kgPreceding)), lessThan('$V'(kgPreceding), 136000.0), greaterThan('$V'(kgPreceding), 7000.0)),
+ (icaoCategoryPreceding(heavy) :- precedingAircraftType('$V'(modelPreceding)), notEqual('$V'(modelPreceding),'A388'), notEqual('$V'(modelPreceding),'A38F'), notEqual('$V'(modelPreceding),'A225'), mtowPreceding('$V'(kgPreceding)), greaterThanOrEqual('$V'(kgPreceding), 136000.0)),
+
+ (icaoCategoryPreceding(super) :- precedingAircraftType('A388')),
+ (icaoCategoryPreceding(super) :- precedingAircraftType('A38F')),
+
+ (icaoSeparationMiles(4):- icaoCategory(heavy), icaoCategoryPreceding(heavy)),
+ (icaoSeparationMiles(5):- icaoCategory(medium), icaoCategoryPreceding(heavy)),
+ (icaoSeparationMiles(6):- icaoCategory(light), icaoCategoryPreceding(heavy)),
+ (icaoSeparationMiles(5):- icaoCategory(light), icaoCategoryPreceding(medium)),
+ (icaoSeparationMiles(mrs):- icaoCategoryPreceding(light)),
+ (icaoSeparationMiles(mrs):- icaoCategory(medium), icaoCategoryPreceding(medium)),
+ (icaoSeparationMiles(mrs):- icaoCategory(heavy), icaoCategoryPreceding(medium)),
+ (icaoSeparationMiles(mrs):- icaoCategory(super)),
+ (icaoSeparationMiles(6):- icaoCategory(heavy), icaoCategoryPreceding(super)),
+ (icaoSeparationMiles(7):- icaoCategory(medium), icaoCategoryPreceding(super)),
+ (icaoSeparationMiles(8):- icaoCategory(light), icaoCategoryPreceding(super))],
+ [],
+ "\
+ \
+ \
+ \
+ icaoCategory\
+ light\
+ \
+ \
+ \
+ \
+ \
+ mtow\
+ kg\
+ \
+ \
+ lessThanOrEqual\
+ kg\
+ 7000.0\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoCategory\
+ medium\
+ \
+ \
+ \
+ \
+ \
+ mtow\
+ kg\
+ \
+ \
+ lessThan\
+ kg\
+ 136000.0\
+ \
+ \
+ greaterThan\
+ kg\
+ 7000.0\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoCategory\
+ heavy\
+ \
+ \
+ \
+ \
+ \
+ aircraftType\
+ model\
+ \
+ \
+ notEqual\
+ model\
+ A388\
+ \
+ \
+ notEqual\
+ model\
+ A38F\
+ \
+ \
+ mtow\
+ kg\
+ \
+ \
+ greaterThanOrEqual\
+ kg\
+ 136000.0\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoCategory\
+ super\
+ \
+ \
+ \
+ \
+ aircraftType\
+ A388\
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoCategory\
+ super\
+ \
+ \
+ \
+ \
+ aircraftType\
+ A38F\
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoCategoryPreceding\
+ light\
+ \
+ \
+ \
+ \
+ \
+ mtowPreceding\
+ kgPreceding\
+ \
+ \
+ lessThanOrEqual\
+ kgPreceding\
+ 7000.0\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoCategoryPreceding\
+ medium\
+ \
+ \
+ \
+ \
+ \
+ mtowPreceding\
+ kgPreceding\
+ \
+ \
+ lessThan\
+ kgPreceding\
+ 136000.0\
+ \
+ \
+ greaterThan\
+ kgPreceding\
+ 7000.0\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoCategoryPreceding\
+ heavy\
+ \
+ \
+ \
+ \
+ \
+ precedingAircraftType\
+ modelPreceding\
+ \
+ \
+ notEqual\
+ modelPreceding\
+ A388\
+ \
+ \
+ notEqual\
+ modelPreceding\
+ A38F\
+ \
+ \
+ notEqual\
+ modelPreceding\
+ A225\
+ \
+ \
+ mtowPreceding\
+ kgPreceding\
+ \
+ \
+ greaterThanOrEqual\
+ kgPreceding\
+ 136000.0\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoCategoryPreceding\
+ super\
+ \
+ \
+ \
+ \
+ precedingAircraftType\
+ A388\
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoCategoryPreceding\
+ super\
+ \
+ \
+ \
+ \
+ precedingAircraftType\
+ A38F\
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoSeparationMiles\
+ 4\
+ \
+ \
+ \
+ \
+ \
+ icaoCategory\
+ heavy\
+ \
+ \
+ icaoCategoryPreceding\
+ heavy\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoSeparationMiles\
+ 5\
+ \
+ \
+ \
+ \
+ \
+ icaoCategory\
+ medium\
+ \
+ \
+ icaoCategoryPreceding\
+ heavy\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoSeparationMiles\
+ 6\
+ \
+ \
+ \
+ \
+ \
+ icaoCategory\
+ light\
+ \
+ \
+ icaoCategoryPreceding\
+ heavy\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoSeparationMiles\
+ 5\
+ \
+ \
+ \
+ \
+ \
+ icaoCategory\
+ light\
+ \
+ \
+ icaoCategoryPreceding\
+ medium\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoSeparationMiles\
+ mrs\
+ \
+ \
+ \
+ \
+ icaoCategoryPreceding\
+ light\
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoSeparationMiles\
+ mrs\
+ \
+ \
+ \
+ \
+ \
+ icaoCategory\
+ medium\
+ \
+ \
+ icaoCategoryPreceding\
+ medium\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoSeparationMiles\
+ mrs\
+ \
+ \
+ \
+ \
+ \
+ icaoCategory\
+ heavy\
+ \
+ \
+ icaoCategoryPreceding\
+ medium\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoSeparationMiles\
+ mrs\
+ \
+ \
+ \
+ \
+ icaoCategory\
+ super\
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoSeparationMiles\
+ 6\
+ \
+ \
+ \
+ \
+ \
+ icaoCategory\
+ heavy\
+ \
+ \
+ icaoCategoryPreceding\
+ super\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoSeparationMiles\
+ 7\
+ \
+ \
+ \
+ \
+ \
+ icaoCategory\
+ medium\
+ \
+ \
+ icaoCategoryPreceding\
+ super\
+ \
+ \
+ \
+ \
+ \
+ \
+ \
+ icaoSeparationMiles\
+ 8\
+ \
+ \
+ \
+ \
+ \
+ icaoCategory\
+ light\
+ \
+ \
+ icaoCategoryPreceding\
+ super\
+ \
+ \
+ \
+ \
+ ").
+
+test(49,
+ [(aircraftChar('A500',3175.144,44.0,97.5)),
+ (aircraftChar('SGUP',77110.64,156.25,123.0)),
+ (aircraftChar('AR11',566.99,36.0,64.0)),
+ (aircraftChar('AR15',929.8636,37.5,67.0)),
+ (aircraftChar('AT43',16699.896664,80.58,124.0)),
+ (aircraftChar('AT45',18599.53996,80.6,128.0)),
+ (aircraftChar('AT72',21999.665592,88.75,128.0)),
+ (aircraftChar('N262',10800.02552,74.17,96.0)),
+ (aircraftChar('S210',49985.8384,112.5,127.0)),
+ (aircraftChar('S601',6599.7636,42.25,118.0)),
+ (aircraftChar('AEST',2864.43348,36.7,94.0)),
+ (aircraftChar('AEST',2721.552,36.71,94.0)),
+ (aircraftChar('AEST',2721.552,36.71,94.0)),
+ (aircraftChar('AT3P',1583.943264,45.15,76.0)),
+ (aircraftChar('AT3T',4159.43864,51.0,69.0)),
+ (aircraftChar('AT5T',2902.9888,52.0,69.0)),
+ (aircraftChar('AT6T',5669.9,56.0,78.0)),
+ (aircraftChar('AT8T',7257.472,52.1,82.0)),
+ (aircraftChar('A306',164998.62592,147.08,132.0)),
+ (aircraftChar('A3ST',140613.52,147.17,135.0)),
+ (aircraftChar('A30B',141999.24356,147.08,131.0)),
+ (aircraftChar('A30B',171684.572,147.08,135.0)),
+ (aircraftChar('A310',164018.8672,144.0,135.0)),
+ (aircraftChar('A310',149999.699256,144.1,125.0)),
+ (aircraftChar('A318',59000.9794,111.9,138.0)),
+ (aircraftChar('A319',63999.56324,111.3,138.0)),
+ (aircraftChar('A320',65999.90396,111.3,138.0)),
+ (aircraftChar('A320',73500.04768,111.3,138.0)),
+ (aircraftChar('A321',93439.952,111.83,138.0)),
+ (aircraftChar('A388',560186.12,261.3,145.0)),
+ (aircraftChar('A38F',590032.4736,261.65,145.0)),
+ (aircraftChar('AA1',680.388,24.5,70.0)),
+ (aircraftChar('AA5',997.9024,31.5,80.0)),
+ (aircraftChar('CH7A',598.74144,33.5,78.0)),
+ (aircraftChar('CH7A',793.786,33.5,88.0)),
+ (aircraftChar('CH7B',816.4656,34.5,87.0)),
+ (aircraftChar('BL8',975.2228,36.2,92.0)),
+ (aircraftChar('BL8',884.5044,32.0,90.0)),
+ (aircraftChar('AN12',55111.428,124.8,127.0)),
+ (aircraftChar('A124',404999.142632,240.5,124.0)),
+ (aircraftChar('A140',21500.2608,83.67,230.0)),
+ (aircraftChar('AN72',29937.072,84.7,89.0)),
+ (aircraftChar('AT72',19989.79944,88.09,105.0)),
+ (aircraftChar('AT43',15172.6524,58.02,103.0)),
+ (aircraftChar('AT43',16699.896664,80.58,104.0)),
+ (aircraftChar('AT44',16150.14316,80.58,105.0)),
+ (aircraftChar('AT45',16150.14316,80.42,105.0)),
+ (aircraftChar('AT72',21500.2608,88.75,105.0)),
+ (aircraftChar('AT72',19989.79944,88.75,105.0)),
+ (aircraftChar('BA11',35833.768,88.5,129.0)),
+ (aircraftChar('BA11',40142.892,88.5,137.0)),
+ (aircraftChar('B461',38101.728,86.42,113.0)),
+ (aircraftChar('B462',42184.056,86.42,117.0)),
+ (aircraftChar('B463',44225.22,86.42,121.0)),
+ (aircraftChar('BE18',4490.5608,49.67,87.0)),
+ (aircraftChar('BE24',1247.378,38.6666666667,70.0)),
+ (aircraftChar('BE55',2404.0376,37.83,88.0)),
+ (aircraftChar('B190',7765.49504,58.0,113.0)),
+ (aircraftChar('BE99',5125.5896,45.92,107.0)),
+ (aircraftChar('B190',7529.6272,54.5,113.0)),
+ (aircraftChar('BE58',2494.756,37.8,96.0)),
+ (aircraftChar('BE58',2812.2704,37.8,101.0)),
+ (aircraftChar('BE58',2812.2704,37.8,101.0)),
+ (aircraftChar('BE36',1655.6108,33.5,80.0)),
+ (aircraftChar('BE36',1746.3292,37.83,75.0)),
+ (aircraftChar('BE35',1542.2128,33.5,70.0)),
+ (aircraftChar('BE76',1769.0088,38.0,76.0)),
+ (aircraftChar('BE60',3050.4062,39.25,98.0)),
+ (aircraftChar('BE10',5352.3856,45.92,111.0)),
+ (aircraftChar('BE9L',4581.2792,50.25,100.0)),
+ (aircraftChar('BE9T',4966.8324,45.9,108.0)),
+ (aircraftChar('PRM1',5669.9,44.5,108.0)),
+ (aircraftChar('BE77',759.7666,30.0,63.0)),
+ (aircraftChar('BE23',1111.3004,32.75,68.0)),
+ (aircraftChar('BE20',5669.9,54.5,103.0)),
+ (aircraftChar('B720',104008.6456,130.83,133.0)),
+ (aircraftChar('B742',377842.136,195.67,152.0)),
+ (aircraftChar('B74S',317514.4,195.67,140.0)),
+ (aircraftChar('B74R',272155.2,195.7,141.0)),
+ (aircraftChar('B752',115665.96,124.67,135.0)),
+ (aircraftChar('B752',99790.24,124.83,135.0)),
+ (aircraftChar('B772',347451.472,212.07,145.0)),
+ (aircraftChar('B773',340194.0,212.07,145.0)),
+ (aircraftChar('B701',116727.36528,130.83,139.0)),
+ (aircraftChar('B703',141520.704,142.42,139.0)),
+ (aircraftChar('B703',151318.2912,145.75,136.0)),
+ (aircraftChar('B712',54884.632,93.3333333333,125.0)),
+ (aircraftChar('B720',106276.6056,130.83,137.0)),
+ (aircraftChar('B721',76657.048,108.0,125.0)),
+ (aircraftChar('B722',95027.524,108.0,138.0)),
+ (aircraftChar('B731',49895.12,94.0,137.0)),
+ (aircraftChar('B732',52389.876,93.0,137.0)),
+ (aircraftChar('B733',63276.084,94.75,135.0)),
+ (aircraftChar('B734',68038.8,94.75,139.0)),
+ (aircraftChar('B735',61688.512,94.75,140.0)),
+ (aircraftChar('B736',65997.636,112.58,125.0)),
+ (aircraftChar('B737',70079.964,112.58,130.0)),
+ (aircraftChar('B738',79015.7264,112.58,141.0)),
+ (aircraftChar('B739',74389.088,112.07,144.0)),
+ (aircraftChar('B744',394625.04,213.0,154.0)),
+ (aircraftChar('B753',123603.82,124.83,142.0)),
+ (aircraftChar('B762',142881.48,156.08,130.0)),
+ (aircraftChar('B753',158757.2,156.08,130.0)),
+ (aircraftChar('B772',286896.94,199.9,145.0)),
+ (aircraftChar('B773',299370.72,199.9,145.0)),
+ (aircraftChar('B52',221352.896,185.0,141.0)),
+ (aircraftChar('C97',66133.7136,141.3,105.0)),
+ (aircraftChar('NOMA',4059.6484,54.0,69.0)),
+ (aircraftChar('GLEX',43091.24,94.0,126.0)),
+ (aircraftChar('CL60',21590.9792,61.8,125.0)),
+ (aircraftChar('TRIS',4535.92,53.0,65.0)),
+ (aircraftChar('CL60',18710.67,61.8,125.0)),
+ (aircraftChar('CL44',95254.32,142.3,123.0)),
+ (aircraftChar('C207',16510.7488,91.2,102.0)),
+ (aircraftChar('C150',725.7472,33.5,55.0)),
+ (aircraftChar('C177',1133.98,35.5,64.0)),
+ (aircraftChar('C182',1406.1352,36.0,92.0)),
+ (aircraftChar('C206',1632.9312,36.0,92.0)),
+ (aircraftChar('C402',2857.6296,44.17,95.0)),
+ (aircraftChar('C402',2857.6296,44.17,95.0)),
+ (aircraftChar('C404',3810.1728,46.3,92.0)),
+ (aircraftChar('C414',3077.62172,44.1,94.0)),
+ (aircraftChar('C421',3379.2604,41.7,96.0)),
+ (aircraftChar('C421',3102.56928,41.7,96.0)),
+ (aircraftChar('C441',4501.9006,49.3,100.0)),
+ (aircraftChar('C208',3628.736,52.1,104.0)),
+ (aircraftChar('A37_',6350.288,35.92,131.0)),
+ (aircraftChar('C550',6713.1616,52.17,112.0)),
+ (aircraftChar('C525',4808.0752,46.8,107.0)),
+ (aircraftChar('C25A',5669.9,49.83,118.0)),
+ (aircraftChar('C560',7543.23496,54.08,108.0)),
+ (aircraftChar('C500',5375.0652,47.1,108.0)),
+ (aircraftChar('C550',6032.7736,51.7,108.0)),
+ (aircraftChar('C650',9979.024,53.5,114.0)),
+ (aircraftChar('C560',7633.95336,55.8,107.0)),
+ (aircraftChar('CVLP',18955.60968,91.8,107.0)),
+ (aircraftChar('CVLP',22543.5224,105.33,104.0)),
+ (aircraftChar('CVLP',22543.5224,105.33,106.0)),
+ (aircraftChar('CVLT',24766.1232,105.3,107.0)),
+ (aircraftChar('FA20',18497.48176,61.92,113.0)),
+ (aircraftChar('F900',20638.436,63.42,100.0)),
+ (aircraftChar('F2TH',16238.5936,63.33,114.0)),
+ (aircraftChar('ATLA',43500.379984,119.08,130.0)),
+ (aircraftChar('FA10',8300.7336,42.92,104.0)),
+ (aircraftChar('FA20',12999.94672,53.5,107.0)),
+ (aircraftChar('DOVE',4059.6484,57.0,84.0)),
+ (aircraftChar('HERN',6123.492,71.5,85.0)),
+ (aircraftChar('DH2T',2313.3192,48.0,50.0)),
+ (aircraftChar('DHC4',12927.372,95.67,77.0)),
+ (aircraftChar('DHC6',5669.9,65.0,75.0)),
+ (aircraftChar('DHC7',19958.048,93.0,83.0)),
+ (aircraftChar('DH8C',18642.6312,90.0,90.0)),
+ (aircraftChar('E110',5899.871144,50.3,92.0)),
+ (aircraftChar('E121',5669.9,47.4,92.0)),
+ (aircraftChar('PA31',3175.144,40.5833333333,74.0)),
+ (aircraftChar('D28D',4016.55716,51.0,74.0)),
+ (aircraftChar('A10_',23133.192,57.5,140.0)),
+ (aircraftChar('VF14',19958.048,70.5,111.0)),
+ (aircraftChar('LJ25',6803.88,35.6,137.0)),
+ (aircraftChar('LJ24',5896.696,35.6,128.0)),
+ (aircraftChar('LJ25',6803.88,35.6,137.0)),
+ (aircraftChar('LJ28',6803.88,43.7,120.0)),
+ (aircraftChar('LJ28',8300.7336,39.5,143.0)),
+ (aircraftChar('GLF2',29619.5576,68.1,141.0)),
+ (aircraftChar('GLF3',31161.7704,77.1,136.0)),
+ (aircraftChar('GLF4',33837.9632,77.1,149.0)),
+ (aircraftChar('GLF4',33202.9344,77.1,128.0)),
+ (aircraftChar('GLF5',41276.872,93.5,145.0)),
+ (aircraftChar('A748',21092.028,102.46,94.0)),
+ (aircraftChar('TRID',71667.536,98.0,146.0)),
+ (aircraftChar('A748',22679.6,98.2,100.0)),
+ (aircraftChar('WW23',10659.412,44.8,129.0)),
+ (aircraftChar('ASTR',11181.0428,54.7,126.0)),
+ (aircraftChar('ARVA',6803.88,68.8,81.0)),
+ (aircraftChar('ARVA',6803.88,68.8,81.0)),
+ (aircraftChar('JCOM',7620.3456,43.3,130.0)),
+ (aircraftChar('WW24',10659.412,44.8,129.0)),
+ (aircraftChar('WW24',10659.412,44.8,129.0)),
+ (aircraftChar('IL18',61071.62688,122.7,103.0)),
+ (aircraftChar('IL76',169999.47772,165.7,119.0)),
+ (aircraftChar('C130',70306.76,132.07,129.0)),
+ (aircraftChar('C130',70306.76,132.6,129.0)),
+ (aircraftChar('C130',70306.76,132.07,138.0)),
+ (aircraftChar('C130',70306.76,132.6,138.0)),
+ (aircraftChar('L101',195044.56,155.3,138.0)),
+ (aircraftChar('L101',211373.872,155.3,140.0)),
+ (aircraftChar('L101',211373.872,155.3,144.0)),
+ (aircraftChar('L101',231331.92,155.3,144.0)),
+ (aircraftChar('L101',234053.472,155.3,148.0)),
+ (aircraftChar('L29A',19844.65,54.4,132.0)),
+ (aircraftChar('C141',143607.2272,159.9,129.0)),
+ (aircraftChar('C141',155582.056,159.9,129.0)),
+ (aircraftChar('C5',348812.248,222.7,135.0)),
+ (aircraftChar('C5',379656.504,222.7,135.0)),
+ (aircraftChar('P3',61234.92,99.7,134.0)),
+ (aircraftChar('A4_',11113.004,27.5,120.0)),
+ (aircraftChar('DC10',200941.256,155.3,136.0)),
+ (aircraftChar('DC7',64863.656,127.5,110.0)),
+ (aircraftChar('DC85',147417.4,142.4,137.0)),
+ (aircraftChar('MD11',273289.18,169.8,155.0)),
+ (aircraftChar('BE40',7135.00216,43.5,100.0)),
+ (aircraftChar('MU2',5250.3274,39.1666666667,88.0)),
+ (aircraftChar('MU2',4898.7936,39.2,119.0)),
+ (aircraftChar('B2',152633.708,172.0,140.0)),
+ (aircraftChar('AEST',2864.43348,36.67,94.0)),
+ (aircraftChar('PA31',2812.2704,40.7,100.0)),
+ (aircraftChar('PAY4',5465.7836,47.7,110.0)),
+ (aircraftChar('AN2',5499.803,59.67,54.0)),
+ (aircraftChar('BE40',7302.8312,43.06,111.0)),
+ (aircraftChar('AC11',5216.308,46.0,75.0)),
+ (aircraftChar('AC95',4683.3374,52.2,121.0)),
+ (aircraftChar('AC50',3061.746,49.08,97.0)),
+ (aircraftChar('AC56',2948.348,49.0833333333,97.0)),
+ (aircraftChar('AC68',3401.94,49.0833333333,97.0)),
+ (aircraftChar('B1_',216363.384,137.0,165.0)),
+ (aircraftChar('AC52',2494.756,44.1,97.0)),
+ (aircraftChar('AC80',4059.6484,49.05,97.0)),
+ (aircraftChar('AC90',4649.318,46.67,97.0)),
+ (aircraftChar('SBR1',8459.4908,44.5,120.0)),
+ (aircraftChar('SBR1',9071.84,44.5,120.0)),
+ (aircraftChar('SBR1',10886.208,50.5,105.0)),
+ (aircraftChar('SBR2',10568.6936,44.5,137.0)),
+ (aircraftChar('SBR2',11113.004,50.4,128.0)),
+ (aircraftChar('SH33',9979.024,74.67,96.0)),
+ (aircraftChar('SH36',11793.392,74.8,104.0))],
+ [],
+ "\
+ \
+ aircraftChar\
+ A500\
+ 3175.144\
+ 44.0\
+ 97.5\
+ \
+ \
+ aircraftChar\
+ SGUP\
+ 77110.64\
+ 156.25\
+ 123.0\
+ \
+ \
+ aircraftChar\
+ AR11\
+ 566.99\
+ 36.0\
+ 64.0\
+ \
+ \
+ aircraftChar\
+ AR15\
+ 929.8636\
+ 37.5\
+ 67.0\
+ \
+ \
+ aircraftChar\
+ AT43\
+ 16699.896664\
+ 80.58\
+ 124.0\
+ \
+ \
+ aircraftChar\
+ AT45\
+ 18599.53996\
+ 80.6\
+ 128.0\
+ \
+ \
+ aircraftChar\
+ AT72\
+ 21999.665592\
+ 88.75\
+ 128.0\
+ \
+ \
+ aircraftChar\
+ N262\
+ 10800.02552\
+ 74.17\
+ 96.0\
+ \
+ \
+ aircraftChar\
+ S210\
+ 49985.8384\
+ 112.5\
+ 127.0\
+ \
+ \
+ aircraftChar\
+ S601\
+ 6599.7636\
+ 42.25\
+ 118.0\
+ \
+ \
+ aircraftChar\
+ AEST\
+ 2864.43348\
+ 36.7\
+ 94.0\
+ \
+ \
+ aircraftChar\
+ AEST\
+ 2721.552\
+ 36.71\
+ 94.0\
+ \
+ \
+ aircraftChar\
+ AEST\
+ 2721.552\
+ 36.71\
+ 94.0\
+ \
+ \
+ aircraftChar\
+ AT3P\
+ 1583.943264\
+ 45.15\
+ 76.0\
+ \
+ \
+ aircraftChar\
+ AT3T\
+ 4159.43864\
+ 51.0\
+ 69.0\
+ \
+ \
+ aircraftChar\
+ AT5T\
+ 2902.9888\
+ 52.0\
+ 69.0\
+ \
+ \
+ aircraftChar\
+ AT6T\
+ 5669.9\
+ 56.0\
+ 78.0\
+ \
+ \
+ aircraftChar\
+ AT8T\
+ 7257.472\
+ 52.1\
+ 82.0\
+ \
+ \
+ aircraftChar\
+ A306\
+ 164998.62592\
+ 147.08\
+ 132.0\
+ \
+ \
+ aircraftChar\
+ A3ST\
+ 140613.52\
+ 147.17\
+ 135.0\
+ \
+ \
+ aircraftChar\
+ A30B\
+ 141999.24356\
+ 147.08\
+ 131.0\
+ \
+ \
+ aircraftChar\
+ A30B\
+ 171684.572\
+ 147.08\
+ 135.0\
+ \
+ \
+ aircraftChar\
+ A310\
+ 164018.8672\
+ 144.0\
+ 135.0\
+ \
+ \
+ aircraftChar\
+ A310\
+ 149999.699256\
+ 144.1\
+ 125.0\
+ \
+ \
+ aircraftChar\
+ A318\
+ 59000.9794\
+ 111.9\
+ 138.0\
+ \
+ \
+ aircraftChar\
+ A319\
+ 63999.56324\
+ 111.3\
+ 138.0\
+ \
+ \
+ aircraftChar\
+ A320\
+ 65999.90396\
+ 111.3\
+ 138.0\
+ \
+ \
+ aircraftChar\
+ A320\
+ 73500.04768\
+ 111.3\
+ 138.0\
+ \
+ \
+ aircraftChar\
+ A321\
+ 93439.952\
+ 111.83\
+ 138.0\
+ \
+ \
+ aircraftChar\
+ A388\
+ 560186.12\
+ 261.3\
+ 145.0\
+ \
+ \
+ aircraftChar\
+ A38F\
+ 590032.4736\
+ 261.65\
+ 145.0\
+ \
+ \
+ aircraftChar\
+ AA1\
+ 680.388\
+ 24.5\
+ 70.0\
+ \
+ \
+ aircraftChar\
+ AA5\
+ 997.9024\
+ 31.5\
+ 80.0\
+ \
+ \
+ aircraftChar\
+ CH7A\
+ 598.74144\
+ 33.5\
+ 78.0\
+ \
+ \
+ aircraftChar\
+ CH7A\
+ 793.786\
+ 33.5\
+ 88.0\
+ \
+ \
+ aircraftChar\
+ CH7B\
+ 816.4656\
+ 34.5\
+ 87.0\
+ \
+ \
+ aircraftChar\
+ BL8\
+ 975.2228\
+ 36.2\
+ 92.0\
+ \
+ \
+ aircraftChar\
+ BL8\
+ 884.5044\
+ 32.0\
+ 90.0\
+ \
+ \
+ aircraftChar\
+ AN12\
+ 55111.428\
+ 124.8\
+ 127.0\
+ \
+ \
+ aircraftChar\
+ A124\
+ 404999.142632\
+ 240.5\
+ 124.0\
+ \
+ \
+ aircraftChar\
+ A140\
+ 21500.2608\
+ 83.67\
+ 230.0\
+ \
+ \
+ aircraftChar\
+ AN72\
+ 29937.072\
+ 84.7\
+ 89.0\
+ \
+ \
+ aircraftChar\
+ AT72\
+ 19989.79944\
+ 88.09\
+ 105.0\
+ \
+ \
+ aircraftChar\
+ AT43\
+ 15172.6524\
+ 58.02\
+ 103.0\
+ \
+ \
+ aircraftChar\
+ AT43\
+ 16699.896664\
+ 80.58\
+ 104.0\
+ \
+ \
+ aircraftChar\
+ AT44\
+ 16150.14316\
+ 80.58\
+ 105.0\
+ \
+ \
+ aircraftChar\
+ AT45\
+ 16150.14316\
+ 80.42\
+ 105.0\
+ \
+ \
+ aircraftChar\
+ AT72\
+ 21500.2608\
+ 88.75\
+ 105.0\
+ \
+ \
+ aircraftChar\
+ AT72\
+ 19989.79944\
+ 88.75\
+ 105.0\
+ \
+ \
+ aircraftChar\
+ BA11\
+ 35833.768\
+ 88.5\
+ 129.0\
+ \
+ \
+ aircraftChar\
+ BA11\
+ 40142.892\
+ 88.5\
+ 137.0\
+ \
+ \
+ aircraftChar\
+ B461\
+ 38101.728\
+ 86.42\
+ 113.0\
+ \
+ \
+ aircraftChar\
+ B462\
+ 42184.056\
+ 86.42\
+ 117.0\
+ \
+ \
+ aircraftChar\
+ B463\
+ 44225.22\
+ 86.42\
+ 121.0\
+ \
+ \
+ aircraftChar\
+ BE18\
+ 4490.5608\
+ 49.67\
+ 87.0\
+ \
+ \
+ aircraftChar\
+ BE24\
+ 1247.378\
+ 38.6666666667\
+ 70.0\
+ \
+ \
+ aircraftChar\
+ BE55\
+ 2404.0376\
+ 37.83\
+ 88.0\
+ \
+ \
+ aircraftChar\
+ B190\
+ 7765.49504\
+ 58.0\
+ 113.0\
+ \
+ \
+ aircraftChar\
+ BE99\
+ 5125.5896\
+ 45.92\
+ 107.0\
+ \
+ \
+ aircraftChar\
+ B190\
+ 7529.6272\
+ 54.5\
+ 113.0\
+ \
+ \
+ aircraftChar\
+ BE58\
+ 2494.756\
+ 37.8\
+ 96.0\
+ \
+ \
+ aircraftChar\
+ BE58\
+ 2812.2704\
+ 37.8\
+ 101.0\
+ \
+ \
+ aircraftChar\
+ BE58\
+ 2812.2704\
+ 37.8\
+ 101.0\
+ \
+ \
+ aircraftChar\
+ BE36\
+ 1655.6108\
+ 33.5\
+ 80.0\
+ \
+ \
+ aircraftChar\
+ BE36\
+ 1746.3292\
+ 37.83\
+ 75.0\
+ \
+ \
+ aircraftChar\
+ BE35\
+ 1542.2128\
+ 33.5\
+ 70.0\
+ \
+ \
+ aircraftChar\
+ BE76\
+ 1769.0088\
+ 38.0\
+ 76.0\
+ \
+ \
+ aircraftChar\
+ BE60\
+ 3050.4062\
+ 39.25\
+ 98.0\
+ \
+ \
+ aircraftChar\
+ BE10\
+ 5352.3856\
+ 45.92\
+ 111.0\
+ \
+ \
+ aircraftChar\
+ BE9L\
+ 4581.2792\
+ 50.25\
+ 100.0\
+ \
+ \
+ aircraftChar\
+ BE9T\
+ 4966.8324\
+ 45.9\
+ 108.0\
+ \
+ \
+ aircraftChar\
+ PRM1\
+ 5669.9\
+ 44.5\
+ 108.0\
+ \
+ \
+ aircraftChar\
+ BE77\
+ 759.7666\
+ 30.0\
+ 63.0\
+ \
+ \
+ aircraftChar\
+ BE23\
+ 1111.3004\
+ 32.75\
+ 68.0\
+ \
+ \
+ aircraftChar\
+ BE20\
+ 5669.9\
+ 54.5\
+ 103.0\
+ \
+ \
+ aircraftChar\
+ B720\
+ 104008.6456\
+ 130.83\
+ 133.0\
+ \
+ \
+ aircraftChar\
+ B742\
+ 377842.136\
+ 195.67\
+ 152.0\
+ \
+ \
+ aircraftChar\
+ B74S\
+ 317514.4\
+ 195.67\
+ 140.0\
+ \
+ \
+ aircraftChar\
+ B74R\
+ 272155.2\
+ 195.7\
+ 141.0\
+ \
+ \
+ aircraftChar\
+ B752\
+ 115665.96\
+ 124.67\
+ 135.0\
+ \
+ \
+ aircraftChar\
+ B752\
+ 99790.24\
+ 124.83\
+ 135.0\
+ \
+ \
+ aircraftChar\
+ B772\
+ 347451.472\
+ 212.07\
+ 145.0\
+ \
+ \
+ aircraftChar\
+ B773\
+ 340194.0\
+ 212.07\
+ 145.0\
+ \
+ \
+ aircraftChar\
+ B701\
+ 116727.36528\
+ 130.83\
+ 139.0\
+ \
+ \
+ aircraftChar\
+ B703\
+ 141520.704\
+ 142.42\
+ 139.0\
+ \
+ \
+ aircraftChar\
+ B703\
+ 151318.2912\
+ 145.75\
+ 136.0\
+ \
+ \
+ aircraftChar\
+ B712\
+ 54884.632\
+ 93.3333333333\
+ 125.0\
+ \
+ \
+ aircraftChar\
+ B720\
+ 106276.6056\
+ 130.83\
+ 137.0\
+ \
+ \
+ aircraftChar\
+ B721\
+ 76657.048\
+ 108.0\
+ 125.0\
+ \
+ \
+ aircraftChar\
+ B722\
+ 95027.524\
+ 108.0\
+ 138.0\
+ \
+ \
+ aircraftChar\
+ B731\
+ 49895.12\
+ 94.0\
+ 137.0\
+ \
+ \
+ aircraftChar\
+ B732\
+ 52389.876\
+ 93.0\
+ 137.0\
+ \
+ \
+ aircraftChar\
+ B733\
+ 63276.084\
+ 94.75\
+ 135.0\
+ \
+ \
+ aircraftChar\
+ B734\
+ 68038.8\
+ 94.75\
+ 139.0\
+ \
+ \
+ aircraftChar\
+ B735\
+ 61688.512\
+ 94.75\
+ 140.0\
+ \
+ \
+ aircraftChar\
+ B736\
+ 65997.636\
+ 112.58\
+ 125.0\
+ \
+ \
+ aircraftChar\
+ B737\
+ 70079.964\
+ 112.58\
+ 130.0\
+ \
+ \
+ aircraftChar\
+ B738\
+ 79015.7264\
+ 112.58\
+ 141.0\
+ \
+ \
+ aircraftChar\
+ B739\
+ 74389.088\
+ 112.07\
+ 144.0\
+ \
+ \
+ aircraftChar\
+ B744\
+ 394625.04\
+ 213.0\
+ 154.0\
+ \
+ \
+ aircraftChar\
+ B753\
+ 123603.82\
+ 124.83\
+ 142.0\
+ \
+ \
+ aircraftChar\
+ B762\
+ 142881.48\
+ 156.08\
+ 130.0\
+ \
+ \
+ aircraftChar\
+ B753\
+ 158757.2\
+ 156.08\
+ 130.0\
+ \
+ \
+ aircraftChar\
+ B772\
+ 286896.94\
+ 199.9\
+ 145.0\
+ \
+ \
+ aircraftChar\
+ B773\
+ 299370.72\
+ 199.9\
+ 145.0\
+ \
+ \
+ aircraftChar\
+ B52\
+ 221352.896\
+ 185.0\
+ 141.0\
+ \
+ \
+ aircraftChar\
+ C97\
+ 66133.7136\
+ 141.3\
+ 105.0\
+ \
+ \
+ aircraftChar\
+ NOMA\
+ 4059.6484\
+ 54.0\
+ 69.0\
+ \
+ \
+ aircraftChar\
+ GLEX\
+ 43091.24\
+ 94.0\
+ 126.0\
+ \
+ \
+ aircraftChar\
+ CL60\
+ 21590.9792\
+ 61.8\
+ 125.0\
+ \
+ \
+ aircraftChar\
+ TRIS\
+ 4535.92\
+ 53.0\
+ 65.0\
+ \
+ \
+ aircraftChar\
+ CL60\
+ 18710.67\
+ 61.8\
+ 125.0\
+ \
+ \
+ aircraftChar\
+ CL44\
+ 95254.32\
+ 142.3\
+ 123.0\
+ \
+ \
+ aircraftChar\
+ C207\
+ 16510.7488\
+ 91.2\
+ 102.0\
+ \
+ \
+ aircraftChar\
+ C150\
+ 725.7472\
+ 33.5\
+ 55.0\
+ \
+ \
+ aircraftChar\
+ C177\
+ 1133.98\
+ 35.5\
+ 64.0\
+ \
+ \
+ aircraftChar\
+ C182\
+ 1406.1352\
+ 36.0\
+ 92.0\
+ \
+ \
+ aircraftChar\
+ C206\
+ 1632.9312\
+ 36.0\
+ 92.0\
+ \
+ \
+ aircraftChar\
+ C402\
+ 2857.6296\
+ 44.17\
+ 95.0\
+ \
+ \
+ aircraftChar\
+ C402\
+ 2857.6296\
+ 44.17\
+ 95.0\
+ \
+ \
+ aircraftChar\
+ C404\
+ 3810.1728\
+ 46.3\
+ 92.0\
+ \
+ \
+ aircraftChar\
+ C414\
+ 3077.62172\
+ 44.1\
+ 94.0\
+ \
+ \
+ aircraftChar\
+ C421\
+ 3379.2604\
+ 41.7\
+ 96.0\
+ \
+ \
+ aircraftChar\
+ C421\
+ 3102.56928\
+ 41.7\
+ 96.0\
+ \
+ \
+ aircraftChar\
+ C441\
+ 4501.9006\
+ 49.3\
+ 100.0\
+ \
+ \
+ aircraftChar\
+ C208\
+ 3628.736\
+ 52.1\
+ 104.0\
+ \
+ \
+ aircraftChar\
+ A37_\
+ 6350.288\
+ 35.92\
+ 131.0\
+ \
+ \
+ aircraftChar\
+ C550\
+ 6713.1616\
+ 52.17\
+ 112.0\
+ \
+ \
+ aircraftChar\
+ C525\
+ 4808.0752\
+ 46.8\
+ 107.0\
+ \
+ \
+ aircraftChar\
+ C25A\
+ 5669.9\
+ 49.83\
+ 118.0\
+ \
+ \
+ aircraftChar\
+ C560\
+ 7543.23496\
+ 54.08\
+ 108.0\
+ \
+ \
+ aircraftChar\
+ C500\
+ 5375.0652\
+ 47.1\
+ 108.0\
+ \
+ \
+ aircraftChar\
+ C550\
+ 6032.7736\
+ 51.7\
+ 108.0\
+ \
+ \
+ aircraftChar\
+ C650\
+ 9979.024\
+ 53.5\
+ 114.0\
+ \
+ \
+ aircraftChar\
+ C560\
+ 7633.95336\
+ 55.8\
+ 107.0\
+ \
+ \
+ aircraftChar\
+ CVLP\
+ 18955.60968\
+ 91.8\
+ 107.0\
+ \
+ \
+ aircraftChar\
+ CVLP\
+ 22543.5224\
+ 105.33\
+ 104.0\
+ \
+ \
+ aircraftChar\
+ CVLP\
+ 22543.5224\
+ 105.33\
+ 106.0\
+ \
+ \
+ aircraftChar\
+ CVLT\
+ 24766.1232\
+ 105.3\
+ 107.0\
+ \
+ \
+ aircraftChar\
+ FA20\
+ 18497.48176\
+ 61.92\
+ 113.0\
+ \
+ \
+ aircraftChar\
+ F900\
+ 20638.436\
+ 63.42\
+ 100.0\
+ \
+ \
+ aircraftChar\
+ F2TH\
+ 16238.5936\
+ 63.33\
+ 114.0\
+ \
+ \
+ aircraftChar\
+ ATLA\
+ 43500.379984\
+ 119.08\
+ 130.0\
+ \
+ \
+ aircraftChar\
+ FA10\
+ 8300.7336\
+ 42.92\
+ 104.0\
+ \
+ \
+ aircraftChar\
+ FA20\
+ 12999.94672\
+ 53.5\
+ 107.0\
+ \
+ \
+ aircraftChar\
+ DOVE\
+ 4059.6484\
+ 57.0\
+ 84.0\
+ \
+ \
+ aircraftChar\
+ HERN\
+ 6123.492\
+ 71.5\
+ 85.0\
+ \
+ \
+ aircraftChar\
+ DH2T\
+ 2313.3192\
+ 48.0\
+ 50.0\
+ \
+ \
+ aircraftChar\
+ DHC4\
+ 12927.372\
+ 95.67\
+ 77.0\
+ \
+ \
+ aircraftChar\
+ DHC6\
+ 5669.9\
+ 65.0\
+ 75.0\
+ \
+ \
+ aircraftChar\
+ DHC7\
+ 19958.048\
+ 93.0\
+ 83.0\
+ \
+ \
+ aircraftChar\
+ DH8C\
+ 18642.6312\
+ 90.0\
+ 90.0\
+ \
+ \
+ aircraftChar\
+ E110\
+ 5899.871144\
+ 50.3\
+ 92.0\
+ \
+ \
+ aircraftChar\
+ E121\
+ 5669.9\
+ 47.4\
+ 92.0\
+ \
+ \
+ aircraftChar\
+ PA31\
+ 3175.144\
+ 40.5833333333\
+ 74.0\
+ \
+ \
+ aircraftChar\
+ D28D\
+ 4016.55716\
+ 51.0\
+ 74.0\
+ \
+ \
+ aircraftChar\
+ A10_\
+ 23133.192\
+ 57.5\
+ 140.0\
+ \
+ \
+ aircraftChar\
+ VF14\
+ 19958.048\
+ 70.5\
+ 111.0\
+ \
+ \
+ aircraftChar\
+ LJ25\
+ 6803.88\
+ 35.6\
+ 137.0\
+ \
+ \
+ aircraftChar\
+ LJ24\
+ 5896.696\
+ 35.6\
+ 128.0\
+ \
+ \
+ aircraftChar\
+ LJ25\
+ 6803.88\
+ 35.6\
+ 137.0\
+ \
+ \
+ aircraftChar\
+ LJ28\
+ 6803.88\
+ 43.7\
+ 120.0\
+ \
+ \
+ aircraftChar\
+ LJ28\
+ 8300.7336\
+ 39.5\
+ 143.0\
+ \
+ \
+ aircraftChar\
+ GLF2\
+ 29619.5576\
+ 68.1\
+ 141.0\
+ \
+ \
+ aircraftChar\
+ GLF3\
+ 31161.7704\
+ 77.1\
+ 136.0\
+ \
+ \
+ aircraftChar\
+ GLF4\
+ 33837.9632\
+ 77.1\
+ 149.0\
+ \
+ \
+ aircraftChar\
+ GLF4\
+ 33202.9344\
+ 77.1\
+ 128.0\
+ \
+ \
+ aircraftChar\
+ GLF5\
+ 41276.872\
+ 93.5\
+ 145.0\
+ \
+ \
+ aircraftChar\
+ A748\
+ 21092.028\
+ 102.46\
+ 94.0\
+ \
+ \
+ aircraftChar\
+ TRID\
+ 71667.536\
+ 98.0\
+ 146.0\
+ \
+ \
+ aircraftChar\
+ A748\
+ 22679.6\
+ 98.2\
+ 100.0\
+ \
+ \
+ aircraftChar\
+ WW23\
+ 10659.412\
+ 44.8\
+ 129.0\
+ \
+ \
+ aircraftChar\
+ ASTR\
+ 11181.0428\
+ 54.7\
+ 126.0\
+ \
+ \
+ aircraftChar\
+ ARVA\
+ 6803.88\
+ 68.8\
+ 81.0\
+ \
+ \
+ aircraftChar\
+ ARVA\
+ 6803.88\
+ 68.8\
+ 81.0\
+ \
+ \
+ aircraftChar\
+ JCOM\
+ 7620.3456\
+ 43.3\
+ 130.0\
+ \
+ \
+ aircraftChar\
+ WW24\
+ 10659.412\
+ 44.8\
+ 129.0\
+ \
+ \
+ aircraftChar\
+ WW24\
+ 10659.412\
+ 44.8\
+ 129.0\
+ \
+ \
+ aircraftChar\
+ IL18\
+ 61071.62688\
+ 122.7\
+ 103.0\
+ \
+ \
+ aircraftChar\
+ IL76\
+ 169999.47772\
+ 165.7\
+ 119.0\
+ \
+ \
+ aircraftChar\
+ C130\
+ 70306.76\
+ 132.07\
+ 129.0\
+ \
+ \
+ aircraftChar\
+ C130\
+ 70306.76\
+ 132.6\
+ 129.0\
+ \
+ \
+ aircraftChar\
+ C130\
+ 70306.76\
+ 132.07\
+ 138.0\
+ \
+ \
+ aircraftChar\
+ C130\
+ 70306.76\
+ 132.6\
+ 138.0\
+ \
+ \
+ aircraftChar\
+ L101\
+ 195044.56\
+ 155.3\
+ 138.0\
+ \
+ \
+ aircraftChar\
+ L101\
+ 211373.872\
+ 155.3\
+ 140.0\
+ \
+ \
+ aircraftChar\
+ L101\
+ 211373.872\
+ 155.3\
+ 144.0\
+ \
+ \
+ aircraftChar\
+ L101\
+ 231331.92\
+ 155.3\
+ 144.0\
+ \
+ \
+ aircraftChar\
+ L101\
+ 234053.472\
+ 155.3\
+ 148.0\
+ \
+ \
+ aircraftChar\
+ L29A\
+ 19844.65\
+ 54.4\
+ 132.0\
+ \
+ \
+ aircraftChar\
+ C141\
+ 143607.2272\
+ 159.9\
+ 129.0\
+ \
+ \
+ aircraftChar\
+ C141\
+ 155582.056\
+ 159.9\
+ 129.0\
+ \
+ \
+ aircraftChar\
+ C5\
+ 348812.248\
+ 222.7\
+ 135.0\
+ \
+ \
+ aircraftChar\
+ C5\
+ 379656.504\
+ 222.7\
+ 135.0\
+ \
+ \
+ aircraftChar\
+ P3\
+ 61234.92\
+ 99.7\
+ 134.0\
+ \
+ \
+ aircraftChar\
+ A4_\
+ 11113.004\
+ 27.5\
+ 120.0\
+ \
+ \
+ aircraftChar\
+ DC10\
+ 200941.256\
+ 155.3\
+ 136.0\
+ \
+ \
+ aircraftChar\
+ DC7\
+ 64863.656\
+ 127.5\
+ 110.0\
+ \
+ \
+ aircraftChar\
+ DC85\
+ 147417.4\
+ 142.4\
+ 137.0\
+ \
+ \
+ aircraftChar\
+ MD11\
+ 273289.18\
+ 169.8\
+ 155.0\
+ \
+ \
+ aircraftChar\
+ BE40\
+ 7135.00216\
+ 43.5\
+ 100.0\
+ \
+ \
+ aircraftChar\
+ MU2\
+ 5250.3274\
+ 39.1666666667\
+ 88.0\
+ \
+ \
+ aircraftChar\
+ MU2\
+ 4898.7936\
+ 39.2\
+ 119.0\
+ \
+ \
+ aircraftChar\
+ B2\
+ 152633.708\
+ 172.0\
+ 140.0\
+ \
+ \
+ aircraftChar\
+ AEST\
+ 2864.43348\
+ 36.67\
+ 94.0\
+ \
+ \
+ aircraftChar\
+ PA31\
+ 2812.2704\
+ 40.7\
+ 100.0\
+ \
+ \
+ aircraftChar\
+ PAY4\
+ 5465.7836\
+ 47.7\
+ 110.0\
+ \
+ \
+ aircraftChar\
+ AN2\
+ 5499.803\
+ 59.67\
+ 54.0\
+ \
+ \
+ aircraftChar\
+ BE40\
+ 7302.8312\
+ 43.06\
+ 111.0\
+ \
+ \
+ aircraftChar\
+ AC11\
+ 5216.308\
+ 46.0\
+ 75.0\
+ \
+ \
+ aircraftChar\
+ AC95\
+ 4683.3374\
+ 52.2\
+ 121.0\
+ \
+ \
+ aircraftChar\
+ AC50\
+ 3061.746\
+ 49.08\
+ 97.0\
+ \
+ \
+ aircraftChar\
+ AC56\
+ 2948.348\
+ 49.0833333333\
+ 97.0\
+ \
+ \
+ aircraftChar\
+ AC68\
+ 3401.94\
+ 49.0833333333\
+ 97.0\
+ \
+ \
+ aircraftChar\
+ B1_\
+ 216363.384\
+ 137.0\
+ 165.0\
+ \
+ \
+ aircraftChar\
+ AC52\
+ 2494.756\
+ 44.1\
+ 97.0\
+ \
+ \
+ aircraftChar\
+ AC80\
+ 4059.6484\
+ 49.05\
+ 97.0\
+ \
+ \
+ aircraftChar\
+ AC90\
+ 4649.318\
+ 46.67\
+ 97.0\
+ \
+ \
+ aircraftChar\
+ SBR1\
+ 8459.4908\
+ 44.5\
+ 120.0\
+ \
+ \
+ aircraftChar\
+ SBR1\
+ 9071.84\
+ 44.5\
+ 120.0\
+ \
+ \
+ aircraftChar\
+ SBR1\
+ 10886.208\
+ 50.5\
+ 105.0\
+ \
+ \
+ aircraftChar\
+ SBR2\
+ 10568.6936\
+ 44.5\
+ 137.0\
+ \
+ \
+ aircraftChar\
+ SBR2\
+ 11113.004\
+ 50.4\
+ 128.0\
+ \
+ \
+ aircraftChar\
+ SH33\
+ 9979.024\
+ 74.67\
+ 96.0\
+ \
+ \
+ aircraftChar\
+ SH36\
+ 11793.392\
+ 74.8\
+ 104.0\
+ \
+ ").
+
+test(50,
+ [(p('$V'(x),'$V'(y)):-true,true)],
+ [],
+ "\
+ \
+ \
+ \
+ p\
+ x\
+ y\
+ \
+ \
+ \
+ \
+ \
+ \
+ ").
+
+test(51,
+ [(p('$V'(x),'$V'(y)) :- true, q)],
+ [],
+ "\
+ \
+ \
+ \
+ p\
+ x\
+ y\
+ \
+ \
+ \
+ \
+ \
+ q\
+ \
+ \
+ \
+ \
+ ").
+
+test(52,
+ [(p('$V'(x),'$V'(y)):-(false ; false))],
+ [],
+ "\
+ \
+ \
+ \
+ p\
+ x\
+ y\
+ \
+ \
+ \
+ \
+ \
+ \
+ ").
+
+test(53,
+ [(p('$V'(x),'$V'(y)) :- (false ; q))],
+ [],
+ "\
+ \
+ \
+ \
+ p\
+ x\
+ y\
+ \
+ \
+ \
+ \
+ \
+ q\
+ \
+ \
+ \
+ \
+ ").
+
+
+test_bimetatrans_ruleml :-
+ catch((test_1,
+ test_2,
+ test_3,
+ test_4,
+ test_5,
+ test_6,
+ test_7,
+ test_8,
+ test_9,
+ test_10,
+ test_11,
+ test_12,
+ test_13,
+ test_14,
+ test_15,
+ test_16,
+ test_17,
+ test_18,
+ test_19,
+ test_20,
+ test_21,
+ test_22,
+ test_23,
+ test_24,
+ test_25,
+ test_26,
+ test_27,
+ test_28,
+ test_29,
+ test_30,
+ test_31,
+ test_32,
+ test_33,
+ test_34,
+ test_35,
+ test_36,
+ test_37,
+ test_38,
+ test_39,
+ test_40,
+ test_41,
+ test_42,
+ test_43,
+ test_44,
+ test_45,
+ test_46,
+ test_47,
+ test_48,
+ test_49,
+ test_50,
+ test_51,
+ test_52,
+ test_53),
+ E,
+ (writeq(E),
+ nl,
+ false)).
diff --git a/src/prolog/machine/system_calls.rs b/src/prolog/machine/system_calls.rs
index d564be97..13ceb30c 100644
--- a/src/prolog/machine/system_calls.rs
+++ b/src/prolog/machine/system_calls.rs
@@ -1565,6 +1565,7 @@ impl MachineState {
arity
);
let source_sink = self.store(self.deref(a1));
+
MachineError::permission_error(
h,
Permission::Access,