JavaScript "dogelog"

Admin User, erstellt 03. Mai 2024
         
/**
* Modern Albufeira Prolog Interpreter
*
* Warranty & Liability
* To the extent permitted by applicable law and unless explicitly
* otherwise agreed upon, XLOG Technologies AG makes no warranties
* regarding the provided information. XLOG Technologies AG assumes
* no liability that any problems might be solved with the information
* provided by XLOG Technologies AG.
*
* Rights & License
* All industrial property rights regarding the information - copyright
* and patent rights in particular - are the sole property of XLOG
* Technologies AG. If the company was not the originator of some
* excerpts, XLOG Technologies AG has at least obtained the right to
* reproduce, change and translate the information.
*
* Reproduction is restricted to the whole unaltered document. Reproduction
* of the information is only allowed for non-commercial uses. Selling,
* giving away or letting of the execution of the library is prohibited.
* The library can be distributed as part of your applications and libraries
* for execution provided this comment remains unchanged.
*
* Restrictions
* Only to be distributed with programs that add significant and primary
* functionality to the library. Not to be distributed with additional
* software intended to replace any components of the library.
*
* Trademarks
* Jekejeke is a registered trademark of XLOG Technologies AG.
*/
const MASK_PRED_DYNAMIC = 0x00000001;
const MASK_PRED_SPECIAL = 0x00000002;
const MASK_PRED_CHECK = 0x00000004;
const MASK_PRED_ARITHMETIC = 0x00000008;
const MASK_TOUCH_DYNAMIC = 0x00000001;
const MASK_ADD_BOTTOM = 0x00000001;
const MASK_ADD_DYNAMIC = 0x00000002;
const MASK_REMOVE_BOTTOM = 0x00000001;
let kb = {};
let stage = -1;
function set_stage(num) {
stage = num;
}
function set_partition(path) {
engine.partition = path;
}
function Engine() {
this.signal = undefined;
this.interrupt = () => {};
this.text_output = undefined;
this.text_error = undefined;
this.text_input = undefined;
this.low = 0;
this.high = 0;
this.serno = 0;
this.backtrail = null;
this.backcount = 0;
this.partition = (stage === -1 ? "system" : "user");
}
let engine = new Engine();
function set_engine(ptr) {
engine = ptr;
}
function Variable() {
this.instantiated = undefined;
if (engine.low < engine.high) {
this.flags = engine.low;
engine.low++;
} else {
this.flags = engine.serno;
engine.serno++;
}
this.tail = null;
}
function is_variable(obj) {
return obj instanceof Variable;
}
function Compound(functor, args) {
this.functor = functor;
this.args = args;
}
function is_compound(obj) {
return obj instanceof Compound;
}
function Place(index) {
this.index = index;
}
function is_place(obj) {
return obj instanceof Place;
}
function Skeleton(functor, args) {
this.functor = functor;
this.args = args;
}
function is_skeleton(obj) {
return obj instanceof Skeleton;
}
function Quote(obj) {
this.obj = obj;
}
function is_quote(obj) {
return obj instanceof Quote;
}
function unquote_objects(body) {
for (let i = 0; i < body.length; i++) {
let alpha = body[i];
if (is_quote(alpha))
body[i] = alpha.obj;
}
}
function Clause(size, head, body, cutvar, idxval) {
this.size = size;
this.head = head;
this.body = body;
this.cutvar = cutvar;
this.idxval = idxval;
this.creator = stage;
this.remover = undefined;
this.shard = "";
}
function is_clause(obj) {
return obj instanceof Clause;
}
function Logical(cache, count, data) {
this.cache = cache;
this.count = count;
this.data = data;
}
function is_logical(obj) {
return obj instanceof Logical;
}
function Provable(flags) {
this.flags = flags;
this.rope = undefined;
this.nonguard = undefined;
this.idxmap = undefined;
this.func = undefined;
this.creator = stage;
this.remover = undefined;
this.overlay = undefined;
}
function is_provable(obj) {
return obj instanceof Provable;
}
function Cache(name) {
this.link = undefined;
this.name = name;
}
function is_cache(obj) {
return obj instanceof Cache;
}
function snapshot_data(rope) {
let res = rope.cache;
if (res === null) {
res = new Array(rope.count);
rope_copy(res, rope);
rope.cache = res;
}
return res;
}
function rope_copy(res, rope) {
let data = rope.data;
let j = 0;
for (let i = 0; i < data.length; i++) {
let clause = data[i];
if (clause.remover === undefined)
res[j++] = clause;
}
}
function ensure_link(cache, arity) {
let peek = cache.link;
if (peek === undefined || peek.remover !== undefined) {
peek = pred_link(cache.name, arity);
cache.link = peek;
}
return peek;
}
function pred_link(functor, arity) {
let temp = kb[functor];
if (temp === undefined)
return undefined;
let peek = temp[arity];
if (peek === undefined || peek.remover !== undefined)
return undefined;
return peek;
}
function make_defined(rope) {
let peek = new Provable(0);
peek.rope = new_rope();
peek.nonguard = new_rope();
peek.idxmap = new Map();
for (let i = 0; i < rope.length; i++)
add_peek(peek, rope[i], MASK_ADD_BOTTOM);
return peek;
}
function new_rope() {
return new Logical(null, 0, new Array(0));
}
function pred_touch(functor, arity, flags) {
let temp = kb[functor];
if (temp === undefined) {
temp = new Array(0);
kb[functor] = temp;
}
let peek = temp[arity];
if (peek === undefined || peek.remover !== undefined) {
let res = make_defined(VOID_ARGS);
if (peek !== undefined)
res.overlay = peek;
if ((flags & MASK_TOUCH_DYNAMIC) !== 0)
res.flags |= MASK_PRED_DYNAMIC;
temp[arity] = res;
} else {
if (!is_logical(peek.rope))
throw make_error(new Compound("permission_error",
["modify", "static_procedure",
make_indicator(functor, arity)]));
if ((flags & MASK_TOUCH_DYNAMIC) !== 0)
if ((peek.flags & MASK_PRED_DYNAMIC) === 0)
throw make_error(new Compound("permission_error",
["modify", "static_procedure",
make_indicator(functor, arity)]));
}
}
function pred_destroy(functor, arity) {
let temp = kb[functor];
if (temp === undefined)
return;
let peek = temp[arity];
if (peek === undefined || peek.remover !== undefined)
return;
if (peek.creator === stage) {
peek = clear_pop(peek);
temp[arity] = peek;
if (peek === undefined && trim_arities(temp))
delete kb[functor];
} else {
peek.remover = stage;
}
}
function clear_pop(peek) {
peek.remover = stage;
peek.rope = null;
peek.idxmap = null;
peek.nonguard = null;
let back = peek;
peek = back.overlay;
back.overlay = undefined;
return peek;
}
function trim_arities(peek) {
let pos = peek.length;
while (pos > 0 && peek[pos - 1] === undefined)
pos--;
if (pos === 0)
return true;
if (pos !== peek.length)
peek.splice(pos, peek.length - pos);
return false;
}
function clear() {
for (let functor in kb) {
let temp = kb[functor];
for (let i = 0; i < temp.length; i++) {
let peek = temp[i];
if (peek === undefined)
continue;
if (peek.creator === stage) {
peek = clear_pop(peek);
temp[i] = peek;
if (peek === undefined)
continue;
}
if (peek.remover === stage)
peek.remover = undefined;
if (is_logical(peek.rope))
rollback_peek(peek);
}
if (trim_arities(temp))
delete kb[functor]
}
}
function rollback_peek(peek) {
if (!has_action(peek.rope))
return;
for (let [key,value] of peek.idxmap) {
if (has_action(value)) {
rollback_rope(value, false);
if (value.data.length === 0)
peek.idxmap.delete(key);
}
}
if (has_action(peek.nonguard))
rollback_rope(peek.nonguard, false);
rollback_rope(peek.rope, true);
}
function has_action(rope) {
let data = rope.data;
for (let i = 0; i < data.length; i++) {
let clause = data[i];
if (clause.creator === stage)
return true;
if (clause.remover === stage)
return true;
}
return false;
}
function rollback_rope(rope, update) {
let data = rope.data;
let j = 0;
for (let i = 0; i < data.length; i++) {
let clause = data[i];
if (clause.creator === stage) {
rope.count--;
} else {
if (clause.remover === stage) {
if (update)
clause.remover = undefined;
rope.count++;
}
data[j++] = clause;
}
}
data.splice(j);
rope.cache = null;
}
function add(functor, arity, clause_or_pred) {
add_clause(functor, arity, clause_or_pred, MASK_ADD_BOTTOM);
}
function add_clause(functor, arity, clause_or_pred, flags) {
let temp = kb[functor];
if (temp === undefined) {
temp = new Array(0);
kb[functor] = temp;
}
let peek = temp[arity];
if (is_clause(clause_or_pred)) {
if (peek === undefined || peek.remover !== undefined) {
let res = make_defined(VOID_ARGS);
if (peek !== undefined)
res.overlay = peek;
if ((flags & MASK_ADD_DYNAMIC) !== 0)
res.flags |= MASK_PRED_DYNAMIC;
temp[arity] = res;
peek = res;
} else {
if (!is_logical(peek.rope))
throw make_error(new Compound("permission_error",
["modify", "static_procedure",
make_indicator(functor, arity)]));
if ((flags & MASK_ADD_DYNAMIC) !== 0)
if ((peek.flags & MASK_PRED_DYNAMIC) === 0)
throw make_error(new Compound("permission_error",
["modify", "static_procedure",
make_indicator(functor, arity)]));
}
if ((flags & MASK_ADD_DYNAMIC) === 0)
clause_or_pred.shard = engine.partition;
add_peek(peek, clause_or_pred, flags);
} else {
if (peek === undefined || peek.remover !== undefined) {
if (peek !== undefined)
clause_or_pred.overlay = peek;
temp[arity] = clause_or_pred;
} else {
throw make_error(new Compound("permission_error",
["coerce", "procedure", make_indicator(functor, arity)]));
}
}
}
function add_peek(peek, clause, flags) {
add_rope(peek.rope, clause, flags);
let idxval = clause.idxval;
if (idxval === undefined) {
for (let [key, value] of peek.idxmap)
add_rope(value, clause, flags);
add_rope(peek.nonguard, clause, flags);
} else {
let value = peek.idxmap.get(idxval);
if (value === undefined) {
value = clone_rope(peek.nonguard);
peek.idxmap.set(idxval, value);
}
add_rope(value, clause, flags);
}
}
function add_rope(rope, clause, flags) {
if ((flags & MASK_ADD_BOTTOM) !== 0) {
rope.data.push(clause);
} else {
rope.data.unshift(clause);
}
rope.count++;
rope.cache = null;
}
function clone_rope(rope) {
return new Logical(rope.cache, rope.count, rope.data.slice());
}
function remove_clause(functor, arity, clause, flags) {
if (!is_clause(clause))
throw make_error(new Compound("permission_error",
["coerce", "procedure", make_indicator(functor, arity)]));
let temp = kb[functor];
if (temp === undefined)
return false;
let peek = temp[arity];
if (peek === undefined || peek.remover !== undefined)
return false;
if (!is_logical(peek.rope))
throw make_error(new Compound("permission_error",
["modify", "static_procedure", make_indicator(functor, arity)]));
return remove_peek(peek, clause, flags);
}
function remove_peek(peek, clause, flags) {
if (clause.remover !== undefined)
return false;
if (!remove_rope(peek.rope, clause, flags))
return false;
let idxval = clause.idxval;
if (idxval === undefined) {
for (let [key,value] of peek.idxmap) {
remove_rope(value, clause, flags);
if (value.data.length === 0)
peek.idxmap.delete(key);
}
remove_rope(peek.nonguard, clause, flags);
} else {
let value = peek.idxmap.get(idxval);
remove_rope(value, clause, flags);
if (value.data.length === 0)
peek.idxmap.delete(idxval);
}
clause.remover = stage;
return true;
}
function remove_rope(rope, clause, flags) {
let data = rope.data;
let index;
if ((flags & MASK_REMOVE_BOTTOM) === 0) {
index = data.indexOf(clause);
} else {
index = data.lastIndexOf(clause);
}
if (index === -1)
return false;
if (clause.creator === stage)
data.splice(index, 1);
rope.count--;
rope.cache = null;
return true;
}
const VOID_ARGS = [];
let fs;
let url;
let path;
let http;
if (typeof window === 'undefined') {
fs = await import("node:fs");
url = await import("node:url");
path = await import("node:path");
http = await import("node:http");
} else {
fs = undefined
url = undefined
path = undefined
http = undefined
}
let trail = null;
let redo = null;
let call = "[]";
let count = 0;
function make_error(beta) {
return new Compound("error", [beta, fetch_stack()]);
}
function fetch_stack() {
let temp = pred_link("sys_including", 3);
if (temp === undefined || !is_logical(temp.rope))
return "[]";
let data = snapshot_data(temp.rope);
let back = null;
let res = null;
for (let i = 0; i < data.length; i++) {
let elem = fetch_frame(data[i]);
if (elem.args[1] !== ctx)
continue;
elem = new Compound("sys_including", [elem.args[0], elem.args[2]]);
elem = new Compound(".", [elem, undefined]);
if (back === null) {
res = elem;
} else {
back.args[1] = elem;
}
back = elem;
}
if (back === null) {
res = "[]";
} else {
back.args[1] = "[]";
}
return res;
}
function fetch_frame(clause) {
let display;
if (clause.size !== 0) {
display = new Array(clause.size);
} else {
display = null;
}
temp_display = display;
let args = new Array(clause.head.length);
for (let i = 0; i < args.length; i++)
args[i] = exec_build(clause.head[i]);
temp_display = null;
return new Compound("sys_including", args);
}
function make_indicator(functor, arity) {
return new Compound("/", [functor, arity]);
}
const VAR_MASK_EVEN = 0x40000000;
const VAR_MASK_ODD = 0x20000000;
const VAR_MASK_STATE = VAR_MASK_EVEN | VAR_MASK_ODD;
const GC_MASK_ASYNC_MODE = 0x00000001;
const GC_MASK_ALLOW_YIELD = 0x00000008;
const GC_MASK_IMPORT_ASYNC = 0x00000010;
const GC_MASK_PROP_ASYNC = 0x00000020;
const GC_MASK_READ_ASYNC = 0x00000040;
const GC_MASK_FULL_ASYNC = GC_MASK_ASYNC_MODE | GC_MASK_ALLOW_YIELD;
const GC_MAX_TRAIL = 3000000;
let GC_MAX_INFERS;
let GC_MAX_DIRTY;
if (fs !== undefined) {
/* LIPS / 60 */
GC_MAX_INFERS = 92000;
/* LIPS * 60 */
GC_MAX_DIRTY = 331200000;
} else {
/* LIPS / 60 */
GC_MAX_INFERS = 61000;
/* LIPS * 60 */
GC_MAX_DIRTY = 219600000;
}
let gc_flags = VAR_MASK_ODD |
GC_MASK_IMPORT_ASYNC | GC_MASK_PROP_ASYNC | GC_MASK_READ_ASYNC;
let gc_time = 0;
let gc_enter = 0;
let gc_tick = GC_MAX_INFERS;
let gc_tock = GC_MAX_DIRTY;
function real_time() {
if (fs !== undefined) {
return Number((process.hrtime.bigint()+500000n) / 1000000n);
} else {
return Math.round(performance.now());
}
}
function set_gc_flags(flags) {
gc_flags = flags;
}
function gc_major() {
gc_time -= real_time();
gc_flags ^= VAR_MASK_STATE;
/* mark phase */
engine.low = 0;
engine.high = engine.serno;
engine.serno = 0;
mark_call(call);
let last = redo;
while (last !== null) {
mark_call(last.cont);
last = last.tail;
}
/* sweep phase */
last = redo;
while (last !== null) {
last.mark = adjust_mark(last.mark);
last = last.tail;
}
sweep_trail(null);
gc_time += real_time();
}
function mark_term(term) {
for (; ;) {
if (is_variable(term)) {
let val = term.flags;
if ((val & VAR_MASK_STATE) === (gc_flags & VAR_MASK_STATE))
break;
val = val & ~VAR_MASK_STATE;
if (val > engine.serno)
engine.serno = val + 1;
if (engine.low <= val && val < engine.high) {
if (val-engine.low > engine.high-val) {
engine.high = val;
} else {
engine.low = val + 1;
}
}
term.flags = val | (gc_flags & VAR_MASK_STATE);
if (term.instantiated !== undefined) {
term = term.instantiated;
} else {
break;
}
} else if (is_compound(term)) {
term = term.args;
let i = 0;
for (; i < term.length - 1; i++)
mark_term(term[i]);
term = term[i];
} else {
break;
}
}
}
function mark_call(term) {
let gc_color = ((gc_flags & VAR_MASK_EVEN) !== 0) ? "E" : "O";
while (is_compound(term) && term.functor !== gc_color) {
term.functor = gc_color;
mark_term(term.args[0]);
term = term.args[1];
}
}
function gc_minor() {
gc_time -= real_time();
/* mark phase */
mark2_call(call);
let last = redo;
while (last !== null) {
mark2_call(last.cont);
last = last.tail;
}
mark2_trail(engine.backtrail);
/* sweep phase */
last = redo;
while (last !== null) {
last.mark = adjust_mark(last.mark);
last = last.tail;
}
sweep_trail(engine.backtrail);
gc_time += real_time();
}
function mark2_term(term) {
for (; ;) {
if (is_variable(term)) {
let val = term.flags;
if ((val & VAR_MASK_STATE) === (gc_flags & VAR_MASK_STATE))
break;
val = val & ~VAR_MASK_STATE;
term.flags = val | (gc_flags & VAR_MASK_STATE);
if (term.instantiated !== undefined) {
term = term.instantiated;
} else {
break;
}
} else if (is_compound(term)) {
term = term.args;
let i = 0;
for (; i < term.length - 1; i++)
mark2_term(term[i]);
term = term[i];
} else {
break;
}
}
}
function mark2_call(term) {
let gc_color = ((gc_flags & VAR_MASK_EVEN) !== 0) ? "E" : "O";
while (is_compound(term) && term.functor !== gc_color) {
term.functor = gc_color;
mark2_term(term.args[0]);
term = term.args[1];
}
}
function mark2_trail(stop) {
let temp = trail;
while (temp !== stop) {
if ((temp.flags & VAR_MASK_STATE) === VAR_MASK_STATE)
mark2_term(temp);
temp = temp.tail;
}
}
function adjust_mark(temp) {
while (temp !== null) {
if ((temp.flags & VAR_MASK_STATE) === (gc_flags & VAR_MASK_STATE)) {
return temp;
} else {
temp = temp.tail;
}
}
return null;
}
function sweep_trail(stop) {
let temp = trail;
let back = null;
while (temp !== stop) {
let term = temp;
temp = term.tail;
if ((term.flags & VAR_MASK_STATE) === (gc_flags & VAR_MASK_STATE)) {
if (back !== null) {
back.tail = term;
} else {
trail = term;
}
back = term;
} else {
count--;
term.instantiated = undefined;
term.tail = null;
}
}
if (back !== null) {
back.tail = stop;
} else {
trail = stop;
}
engine.backtrail = trail;
engine.backcount = count;
}
function solve_signal(rope,at,choice) {
if (engine.signal !== undefined) {
let message = engine.signal;
engine.signal = undefined;
throw make_error(message);
}
return true;
}
function copy_term(alpha) {
let assoc = null;
function copy_term2(alpha2) {
let back = null;
for (; ;) {
alpha2 = deref(alpha2);
if (is_variable(alpha2)) {
let peek;
if (assoc === null) {
assoc = new Map();
peek = undefined;
} else {
peek = assoc.get(alpha2);
}
if (peek === undefined) {
peek = new Variable();
assoc.set(alpha2, peek);
}
alpha2 = peek;
break;
} else if (is_compound(alpha2)) {
let t1 = alpha2.args;
let args = new Array(t1.length);
alpha2 = new Compound(alpha2.functor, args);
let i = 0;
for (; i < args.length - 1; i++)
args[i] = copy_term2(t1[i]);
args[i] = back;
back = alpha2;
alpha2 = t1[i];
} else {
break;
}
}
while (back !== null) {
let peek = back.args[back.args.length - 1];
back.args[back.args.length - 1] = alpha2;
alpha2 = back;
back = peek;
}
return alpha2;
}
return copy_term2(alpha);
}
function cont(term) {
call = term;
}
function solve(snap, found) {
for (; ;) {
if (found === true) {
if (gc_enter >= gc_tick) {
gc_tick += GC_MAX_INFERS;
if (count > GC_MAX_TRAIL) {
gc_major();
if (count > GC_MAX_TRAIL)
throw make_error(new Compound("system_error",
["stack_overflow"]));
} else if (gc_enter >= gc_tock) {
gc_tock += GC_MAX_DIRTY;
gc_major();
} else if (3 * (count - engine.backcount) > GC_MAX_TRAIL &&
3 * engine.backcount > GC_MAX_TRAIL) {
gc_minor();
}
if ((gc_flags & GC_MASK_ASYNC_MODE) !== 0) {
more(new Choice(solve_signal, null, null, trail));
return immediate_promise();
}
}
let goal = call;
if (is_compound(goal)) {
gc_enter++;
goal = deref(goal.args[0]);
let peek = lookup_pred(goal);
if (peek === undefined || (peek.flags & MASK_PRED_ARITHMETIC) !== 0)
throw make_error(new Compound("existence_error",
["procedure", make_indicator_term(goal)]));
if (is_compound(goal)) {
goal = goal.args;
} else {
goal = VOID_ARGS;
}
if ((peek.flags & MASK_PRED_CHECK) !== 0) {
if (!peek.func(goal)) {
found = false;
} else {
cont(call.args[1]);
found = true;
}
} else if ((peek.flags & MASK_PRED_SPECIAL) !== 0) {
found = peek.func(goal);
} else {
peek = defined_clauses(peek, goal);
found = solve2_rope(goal, snapshot_data(peek), 0, null);
}
} else {
break;
}
} else if (found === false) {
if (redo !== snap) {
let choice = redo;
redo = choice.tail;
unbind(choice.mark);
call = choice.cont;
found = choice.func(choice.data, choice.at, choice);
} else {
break;
}
} else {
break;
}
}
return found;
}
function immediate_promise() {
return new Promise(resolve => setDelay(resolve, 0));
}
function lookup_pred(goal) {
let functor;
let arity;
if (is_compound(goal)) {
functor = goal.functor;
arity = goal.args.length;
} else {
functor = goal;
arity = 0;
}
return resolve_functor(functor, arity);
}
function resolve_functor(functor, arity) {
if (is_cache(functor)) {
return ensure_link(functor, arity);
} else if (is_atom(functor)) {
return pred_link(functor, arity);
} else if (is_provable(functor)) {
return functor;
} else {
check_callable(functor);
return undefined;
}
}
function make_indicator_term(goal) {
let functor;
let arity;
if (is_compound(goal)) {
functor = goal.functor;
arity = goal.args.length;
} else {
functor = goal;
arity = 0;
}
if (is_cache(functor))
functor = functor.name;
return make_indicator(functor, arity);
}
function solve_rope(rope, at, choice) {
let goal = deref(call.args[0]);
if (is_compound(goal)) {
goal = goal.args;
} else {
goal = VOID_ARGS;
}
return solve2_rope(goal, rope, at, choice);
}
function solve2_rope(args, rope,at,choice) {
let mark = trail;
while (at < rope.length) {
let clause = rope[at++];
let display;
if (clause.size !== 0) {
display = new Array(clause.size);
} else {
display = null;
}
if (exec_head(clause.head, display, args)) {
let peek = clause.cutvar;
if (peek !== -1)
display[peek] = redo;
if (at < rope.length) {
if (choice === null) {
choice = new Choice(solve_rope, rope, at, mark);
} else {
choice.at = at;
}
more(choice);
if (exec_check(clause.body, display))
return true;
if (redo !== choice)
return false;
more(choice.tail);
} else {
return exec_check(clause.body, display);
}
}
unbind(mark);
}
return false;
}
function cut(last) {
redo = last;
}
function more(choice) {
redo = choice;
}
function Choice(func, data, at, mark) {
this.func = func;
this.data = data;
this.at = at;
this.mark = mark;
this.cont = call;
this.tail = redo;
}
function Goal(size, body) {
this.size = size;
this.body = body;
}
function defined_clauses(pred, args) {
let peek = pred.rope;
if (peek.count < 2)
return peek;
if (args.length > 0 && pred.idxmap.size > 0) {
let key = key_value(args[0]);
if (key === undefined) {
return peek;
} else {
peek = pred.idxmap.get(key);
if (peek === undefined) {
return pred.nonguard;
} else {
return peek;
}
}
} else {
return peek;
}
}
function key_value(term) {
term = deref(term);
if (is_variable(term)) {
return undefined;
} else if (is_compound(term)) {
return term.functor;
} else {
return term;
}
}
function run(goal) {
if (!launch(goal, "main", VOID_ARGS))
throw make_error(new Compound("syntax_error", ["directive_failed"]));
}
function snap_setup() {
redo = new Choice(solve_setup, null, null, trail);
return redo;
}
function solve_setup(rope,at,choice) {
return false;
}
function snap_cleanup(snap) {
cut(snap.tail);
unbind(snap.mark);
call = snap.cont;
}
function is_atom(obj) {
return typeof obj === "string";
}
function is_number(obj) {
if (typeof obj === "number")
return true;
if (typeof obj === "bigint")
return true;
return false;
}
function is_integer(obj) {
if (typeof obj === "number" &&
Number.isInteger(obj) &&
((-94906266 <= obj) && (obj <= 94906266)))
return true;
if (typeof obj == "bigint" &&
!((-94906266 <= obj) && (obj <= 94906266)))
return true;
return false;
}
function is_float(obj) {
if (typeof obj === "number" &&
(!Number.isInteger(obj) ||
!((-94906266 <= obj) && (obj <= 94906266))))
return true;
if (typeof obj === "bigint" &&
((-94906266 <= obj) && (obj <= 94906266)))
return true;
return false;
}
let temp_display = null;
function exec_build(template) {
let back = null;
for (; ;) {
if (is_place(template)) {
let index = template.index;
if (index === -1) {
template = new Variable();
} else if (index < -1) {
template = new Variable();
temp_display[(-index) - 2] = template;
} else {
template = temp_display[index];
}
break;
} else if (is_skeleton(template)) {
let t1 = template.args;
let args = new Array(t1.length);
template = new Compound(template.functor, args);
let i = 0;
for (; i < args.length - 1; i++)
args[i] = exec_build(t1[i]);
args[i] = back;
back = template;
template = t1[i];
} else {
break;
}
}
while (back !== null) {
let peek = back.args[back.args.length - 1];
back.args[back.args.length - 1] = template;
template = back;
back = peek;
}
return template;
}
function exec_unify(template, alpha) {
for (; ;) {
if (is_place(template)) {
template = template.index;
if (template === -1) {
return true;
} else if (template < -1) {
temp_display[(-template)-2] = deref(alpha);
return true;
} else {
return unify(temp_display[template], alpha);
}
} else if (is_skeleton(template)) {
alpha = deref(alpha);
if (is_variable(alpha)) {
let t1 = template.args;
let args = new Array(t1.length);
template = new Compound(template.functor, args);
for (let i = 0; i < args.length; i++)
args[i] = exec_build(t1[i]);
bind(template, alpha);
return true;
} else if (is_compound(alpha)) {
if (template.args.length !== alpha.args.length)
return false;
if (template.functor !== alpha.functor)
return false;
template = template.args;
alpha = alpha.args;
let i = 0;
for (; i < template.length - 1; i++)
if (!exec_unify(template[i], alpha[i]))
return false;
template = template[i];
alpha = alpha[i];
} else {
return false;
}
} else {
return unify(template, alpha);
}
}
}
function exec_body(code, display) {
temp_display = display;
let back = null;
let res = null;
for (let i = 0; i < code.length; i++) {
let goal = exec_build(code[i]);
let temp = new Compound(".", [goal, undefined]);
if (back === null) {
res = temp;
} else {
back.args[1] = temp;
}
back = temp;
}
if (back === null) {
res = "[]";
} else {
back.args[1] = "[]";
}
temp_display = null;
return res;
}
function exec_head(code, display, aux) {
temp_display = display;
for (let i = 0; i < code.length; i++) {
if (!exec_unify(code[i], aux[i])) {
temp_display = null;
return false;
}
}
temp_display = null;
return true;
}
function exec_eval(template) {
if (is_skeleton(template)) {
let peek = resolve_functor(template.functor, template.args.length + 1);
if (peek === undefined || (peek.flags & MASK_PRED_ARITHMETIC) === 0)
throw make_error(new Compound("type_error",
["evaluable", make_indicator(template.functor, template.args.length)]));
return peek.func(template.args);
} else {
if (is_place(template)) {
template = template.index;
if (template < 0) {
throw make_error("instantiation_error");
} else {
template = temp_display[template];
}
}
template = deref(template);
if (is_number(template))
return template;
let peek = lookup_eval(template);
if (peek === undefined || (peek.flags & MASK_PRED_ARITHMETIC) === 0)
throw make_error(new Compound("type_error",
["evaluable", make_indicator_term(template)]));
if (is_compound(template)) {
template = template.args;
} else {
template = VOID_ARGS;
}
return peek.func(template);
}
}
function exec_test(template) {
if (is_skeleton(template)) {
let peek = resolve_functor(template.functor, template.args.length);
if (peek === undefined || (peek.flags & MASK_PRED_CHECK) === 0) {
let args = new Array(template.args.length);
for (let i = 0; i < args.length; i++)
args[i] = exec_build(template.args[i]);
if (peek === undefined || (peek.flags & MASK_PRED_ARITHMETIC) !== 0) {
return new Compound(template.functor, args);
} else {
return new Compound(peek, args);
}
} else {
gc_enter++;
return peek.func(template.args);
}
} else {
if (is_place(template)) {
template = template.index;
if (template < 0) {
throw make_error("instantiation_error");
} else {
template = temp_display[template];
}
}
template = deref(template);
let peek = lookup_pred(template);
if (peek === undefined || (peek.flags & MASK_PRED_CHECK) === 0) {
return template;
} else {
gc_enter++;
if (is_compound(template)) {
template = template.args;
} else {
template = VOID_ARGS;
}
return peek.func(template);
}
}
}
function exec_check(code, display) {
temp_display = display;
let check = true;
let back = null;
let res = null;
for (let i = 0; i < code.length; i++) {
let goal = (check ? exec_test(code[i]) : exec_build(code[i]));
if (true === goal)
continue;
if (false === goal) {
temp_display = null;
return false;
}
let temp = new Compound(".", [goal, undefined]);
if (back === null) {
res = temp;
} else {
back.args[1] = temp;
}
back = temp;
check = false;
}
if (back === null) {
res = call.args[1];
} else {
back.args[1] = call.args[1];
}
temp_display = null;
cont(res);
return true;
}
function unify(first, second) {
for (; ;) {
first = deref(first);
second = deref(second);
if (is_variable(first)) {
if (is_variable(second) && first === second)
return true;
bind(second, first);
return true;
}
if (is_variable(second)) {
bind(first, second);
return true;
}
if (!is_compound(first))
return (first === second);
if (!is_compound(second))
return false;
if (first.args.length !== second.args.length)
return false;
if (first.functor !== second.functor)
return false;
first = first.args;
second = second.args;
let i = 0;
for (; i < first.length - 1; i++) {
if (!unify(first[i], second[i]))
return false;
}
first = first[i];
second = second[i];
}
}
function deref(term) {
while (is_variable(term) && term.instantiated !== undefined)
term = term.instantiated;
return term;
}
function bind(source, term) {
term.instantiated = source;
term.tail = trail;
if ((term.flags & VAR_MASK_STATE) === (gc_flags & VAR_MASK_STATE))
term.flags |= VAR_MASK_STATE;
trail = term;
count++;
}
function unbind(mark) {
while (mark !== trail) {
let term = trail;
if (engine.backtrail === term) {
engine.backtrail = term.tail;
engine.backcount--;
}
trail = term.tail;
count--;
term.instantiated = undefined;
term.tail = null;
}
}
function check_nonvar(beta) {
if (is_variable(beta))
throw make_error("instantiation_error");
}
function check_callable(beta) {
if (is_variable(beta) || is_number(beta)) {
check_nonvar(beta);
beta = copy_term(beta);
throw make_error(new Compound("type_error", ["callable", beta]));
}
}
function lookup_eval(expr) {
let functor;
let arity;
if (is_compound(expr)) {
functor = expr.functor;
arity = expr.args.length;
} else {
functor = expr;
arity = 0;
}
return resolve_functor(functor, arity + 1);
}
function Context() {
this.trail = null;
this.redo = null;
this.call = "[]";
this.count = 0;
this.gc_flags = VAR_MASK_ODD |
GC_MASK_IMPORT_ASYNC | GC_MASK_PROP_ASYNC | GC_MASK_READ_ASYNC;
this.engine = new Engine();
}
let ctx = "main";
function ctx_set(buf) {
ctx = buf;
}
function ctx_switch(buf) {
let temp = trail;
trail = buf.trail;
buf.trail = temp;
temp = redo;
redo = buf.redo;
buf.redo = temp;
temp = call;
call = buf.call;
buf.call = temp;
temp = count;
count = buf.count;
buf.count = temp;
temp = gc_flags;
gc_flags = buf.gc_flags;
buf.gc_flags = temp;
temp = engine;
set_engine(buf.engine);
buf.engine = temp;
}
function launch(form, buf, params) {
if (buf !== "main") {
ctx_set(buf);
ctx_switch(buf);
}
let back = gc_flags & GC_MASK_FULL_ASYNC;
set_gc_flags(gc_flags & ~GC_MASK_FULL_ASYNC);
let snap = snap_setup();
if (form instanceof Clause) {
call = melt_clause(form, params);
} else if (form instanceof Goal) {
call = melt_directive(form);
} else {
call = form;
}
let found;
try {
found = solve(snap, true);
} finally {
snap_cleanup(snap);
set_gc_flags((gc_flags & ~GC_MASK_FULL_ASYNC) | back);
if (buf !== "main") {
ctx_switch(buf);
ctx_set("main");
}
}
return found;
}
function melt_directive(goal) {
let display;
if (goal.size !== 0) {
display = new Array(goal.size);
} else {
display = null;
}
return exec_body(goal.body, display);
}
function melt_clause(clause, params) {
let display;
if (clause.size !== 0) {
display = new Array(clause.size);
} else {
display = null;
}
if (exec_head(clause.head, display, params)) {
let temp = clause.cutvar;
if (temp !== -1)
display[temp] = redo;
return exec_body(clause.body, display);
} else {
return "[]";
}
}
async function launch_async(form, buf, params) {
if (buf !== "main") {
ctx_set(buf);
ctx_switch(buf);
}
let back = gc_flags & GC_MASK_FULL_ASYNC;
set_gc_flags(gc_flags | GC_MASK_FULL_ASYNC);
let found = true;
let snap = snap_setup();
if (form instanceof Clause) {
call = melt_clause(form, params);
} else if (form instanceof Goal) {
call = melt_directive(form);
} else {
call = form;
}
try {
for (;;) {
found = solve(snap, found);
if (found === false) {
break;
} else if (found !== true) {
if (buf !== "main") {
ctx_switch(buf);
ctx_set("main");
}
await found;
if (buf !== "main") {
ctx_set(buf);
ctx_switch(buf);
}
found = false;
} else {
break;
}
}
} finally {
snap_cleanup(snap);
set_gc_flags((gc_flags & ~GC_MASK_FULL_ASYNC) | back);
if (buf !== "main") {
ctx_switch(buf);
ctx_set("main");
}
}
return found;
}
function setDelay(proc, delay) {
if (delay === 0 && fs !== undefined) {
return setImmediate(proc);
} else {
return setTimeout(proc, delay);
}
}
function register_interrupt(buf, func) {
let en = determine_engine(buf);
en.interrupt = func;
}
function register_signal(buf, msg) {
let en = determine_engine(buf);
en.signal = msg;
}
function invoke_interrupt(buf) {
let en = determine_engine(buf);
en.interrupt();
}
function determine_engine(buf) {
if (buf !== "main") {
if (buf !== ctx) {
return buf.engine;
} else {
return engine;
}
} else {
if (ctx !== "main") {
return ctx.engine;
} else {
return engine;
}
}
}
const pool = [[15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15],
[12, 24, 24, 24, 26, 24, 24, 24, 21, 22, 24, 25, 24, 20, 24, 24],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 24, 24, 25, 25, 25, 24],
[24, 353, 385, 417, 449, 481, 513, 545, 577, 609, 641, 673, 705, 737, 769, 801],
[833, 865, 897, 929, 961, 993, 1025, 1057, 1089, 1121, 1153, 21, 24, 22, 27, 23],
[27, 354, 386, 418, 450, 482, 514, 546, 578, 610, 642, 674, 706, 738, 770, 802],
[834, 866, 898, 930, 962, 994, 1026, 1058, 1090, 1122, 1154, 21, 25, 22, 25, 15],
[12, 24, 26, 26, 26, 26, 28, 24, 27, 28, 5, 29, 25, 16, 28, 27],
[28, 25, 11, 11, 27, 2, 24, 24, 27, 11, 5, 30, 11, 11, 11, 24],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 25, 1, 1, 1, 1, 1, 1, 1, 2],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
[2, 2, 2, 2, 2, 2, 2, 25, 2, 2, 2, 2, 2, 2, 2, 2],
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2],
[1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1],
[2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2],
[1, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 1, 2, 2],
[2, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1],
[1, 1, 2, 1, 1, 2, 1, 1, 1, 2, 2, 2, 1, 1, 2, 1],
[1, 2, 1, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1],
[2, 1, 1, 1, 2, 1, 2, 1, 1, 2, 2, 5, 1, 2, 2, 2],
[5, 5, 5, 5, 1, 3, 2, 1, 3, 2, 1, 3, 2, 1, 2, 1],
[2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2],
[2, 1, 3, 2, 1, 2, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2],
[1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2],
[2, 1, 2, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2],
[2, 2, 2, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
[4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4],
[4, 4, 27, 27, 27, 27, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4],
[4, 4, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27],
[4, 4, 4, 4, 4, 27, 27, 27, 27, 27, 27, 27, 4, 27, 4, 27],
[27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27],
[6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6],
[1, 2, 1, 2, 4, 27, 1, 2, 0, 0, 4, 2, 2, 2, 24, 1],
[0, 0, 0, 0, 27, 27, 1, 24, 1, 1, 1, 0, 1, 0, 1, 1],
[2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1],
[2, 2, 1, 1, 1, 2, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2],
[2, 2, 2, 2, 1, 2, 25, 1, 2, 1, 1, 2, 2, 1, 1, 1],
[1, 2, 28, 6, 6, 6, 6, 6, 7, 7, 1, 2, 1, 2, 1, 2],
[1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 0, 0, 4, 24, 24, 24, 24, 24, 24],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 24, 20, 0, 0, 28, 28, 26],
[0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6],
[6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 20, 6],
[24, 6, 6, 24, 6, 6, 24, 6, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 5],
[5, 5, 5, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[16, 16, 16, 16, 16, 16, 25, 25, 25, 24, 24, 26, 24, 24, 28, 28],
[6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 24, 16, 24, 24, 24],
[4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 24, 24, 24, 24, 5, 5],
[6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 24, 5, 6, 6, 6, 6, 6, 6, 6, 16, 28, 6],
[6, 6, 6, 6, 6, 4, 4, 6, 6, 28, 6, 6, 6, 6, 5, 5],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 5, 5, 5, 28, 28, 5],
[24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 16],
[5, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6],
[6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6],
[6, 6, 6, 6, 4, 4, 28, 24, 24, 24, 4, 0, 0, 6, 26, 26],
[5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 4, 6, 6, 6, 6, 6],
[6, 6, 6, 6, 4, 6, 6, 6, 4, 6, 6, 6, 6, 6, 0, 0],
[24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 0, 0, 24, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 27, 5, 5, 5, 5, 5, 5, 0],
[16, 16, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 6],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 6, 6, 6, 6, 6, 6],
[6, 6, 16, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6],
[6, 6, 6, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 8, 6, 5, 8, 8],
[8, 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 8, 8, 6, 8, 8],
[5, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 6, 6, 24, 24, 41, 73, 105, 137, 169, 201, 233, 265, 297, 329],
[24, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 6, 8, 8, 0, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 5],
[5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5],
[5, 0, 5, 0, 0, 0, 5, 5, 5, 5, 0, 0, 6, 5, 8, 8],
[8, 6, 6, 6, 6, 0, 0, 8, 8, 0, 0, 8, 8, 6, 5, 0],
[0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 5, 5, 0, 5],
[5, 5, 6, 6, 0, 0, 41, 73, 105, 137, 169, 201, 233, 265, 297, 329],
[5, 5, 26, 26, 11, 11, 11, 11, 11, 11, 28, 26, 5, 24, 6, 0],
[0, 6, 6, 8, 0, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 5],
[5, 0, 5, 5, 0, 5, 5, 0, 5, 5, 0, 0, 6, 0, 8, 8],
[8, 6, 6, 0, 0, 0, 0, 6, 6, 0, 0, 6, 6, 6, 0, 0],
[0, 6, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 0, 5, 0],
[0, 0, 0, 0, 0, 0, 41, 73, 105, 137, 169, 201, 233, 265, 297, 329],
[6, 6, 5, 5, 5, 6, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 6, 6, 8, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5],
[5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 0, 5, 5, 0, 5, 5, 5, 5, 5, 0, 0, 6, 5, 8, 8],
[8, 6, 6, 6, 6, 6, 0, 6, 6, 8, 0, 8, 8, 6, 0, 0],
[5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[24, 26, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 6, 6, 6, 6],
[0, 6, 8, 8, 0, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 5],
[5, 0, 5, 5, 0, 5, 5, 5, 5, 5, 0, 0, 6, 5, 8, 6],
[8, 6, 6, 6, 6, 0, 0, 8, 8, 0, 0, 8, 8, 6, 0, 0],
[0, 0, 0, 0, 0, 6, 6, 8, 0, 0, 0, 0, 5, 5, 0, 5],
[28, 5, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 6, 5, 0, 5, 5, 5, 5, 5, 5, 0, 0, 0, 5, 5],
[5, 0, 5, 5, 5, 5, 0, 0, 0, 5, 5, 0, 5, 0, 5, 5],
[0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 5, 0, 0, 0, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 8, 8],
[6, 8, 8, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 6, 0, 0],
[5, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0],
[11, 11, 11, 28, 28, 28, 28, 28, 28, 26, 28, 0, 0, 0, 0, 0],
[6, 8, 8, 8, 6, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5],
[5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 6, 5, 6, 6],
[6, 8, 8, 8, 8, 0, 6, 6, 6, 0, 6, 6, 6, 6, 0, 0],
[0, 0, 0, 0, 0, 6, 6, 0, 5, 5, 5, 0, 0, 5, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 24, 11, 11, 11, 11, 11, 11, 11, 28],
[5, 6, 8, 8, 24, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5],
[5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 0, 0, 6, 5, 8, 6],
[8, 8, 8, 8, 8, 0, 6, 8, 8, 0, 8, 8, 6, 6, 0, 0],
[0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 5, 5, 0],
[0, 5, 5, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[6, 6, 8, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 5, 8, 8],
[8, 6, 6, 6, 6, 0, 8, 8, 8, 0, 8, 8, 8, 6, 5, 28],
[0, 0, 0, 0, 5, 5, 5, 8, 11, 11, 11, 11, 11, 11, 11, 5],
[11, 11, 11, 11, 11, 11, 11, 11, 11, 28, 5, 5, 5, 5, 5, 5],
[0, 6, 8, 8, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 5, 5, 5, 5, 5, 5],
[5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 6, 0, 0, 0, 0, 8],
[8, 8, 6, 6, 6, 0, 6, 0, 8, 8, 8, 8, 8, 8, 8, 8],
[0, 0, 8, 8, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 6, 5, 5, 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0, 26],
[5, 5, 5, 5, 5, 5, 4, 6, 6, 6, 6, 6, 6, 6, 6, 24],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 24, 24, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 5, 5, 0, 5, 0, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5],
[5, 5, 5, 5, 0, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 6, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 0, 0],
[5, 5, 5, 5, 5, 0, 4, 0, 6, 6, 6, 6, 6, 6, 6, 0],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 0, 0, 5, 5, 5, 5],
[5, 28, 28, 28, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24],
[24, 24, 24, 28, 24, 28, 28, 28, 6, 6, 28, 28, 28, 28, 28, 28],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 11, 11, 11, 11, 11, 11],
[11, 11, 11, 11, 28, 6, 28, 6, 28, 6, 21, 22, 21, 22, 8, 8],
[5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0],
[0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8],
[6, 6, 6, 6, 6, 24, 6, 6, 5, 5, 5, 5, 5, 6, 6, 6],
[6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6],
[6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 28, 28],
[28, 28, 28, 28, 28, 28, 6, 28, 28, 28, 28, 28, 28, 0, 28, 28],
[24, 24, 24, 24, 24, 28, 28, 28, 28, 24, 24, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 8, 8, 6, 6, 6],
[6, 8, 6, 6, 6, 6, 6, 6, 8, 6, 6, 8, 8, 6, 6, 5],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 24, 24, 24, 24, 24, 24],
[5, 5, 5, 5, 5, 5, 8, 8, 6, 6, 5, 5, 5, 5, 6, 6],
[6, 5, 8, 8, 8, 5, 5, 8, 8, 8, 8, 8, 8, 8, 5, 5],
[5, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 6, 8, 8, 6, 6, 8, 8, 8, 8, 8, 8, 6, 5, 8],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 8, 8, 8, 6, 28, 28],
[1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 24, 4, 2, 2, 2],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 5, 5, 5, 5, 0, 0],
[5, 0, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 0],
[5, 0, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 6, 6, 6],
[24, 24, 24, 24, 24, 24, 24, 24, 24, 11, 11, 11, 11, 11, 11, 11],
[11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0],
[20, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 28, 24, 5],
[12, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 21, 22, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 24, 24, 24, 10, 10],
[10, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 6, 6, 6, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5],
[5, 5, 6, 6, 8, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5],
[5, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 8, 8],
[8, 8, 8, 8, 8, 8, 6, 8, 8, 6, 6, 6, 6, 6, 6, 6],
[6, 6, 6, 6, 24, 24, 24, 4, 24, 24, 24, 26, 5, 6, 0, 0],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 0, 0, 0, 0, 0, 0],
[11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0],
[24, 24, 24, 24, 24, 24, 20, 24, 24, 24, 24, 6, 6, 6, 16, 6],
[5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 5, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0],
[6, 6, 6, 8, 8, 8, 8, 6, 6, 8, 8, 8, 0, 0, 0, 0],
[8, 8, 6, 8, 8, 8, 8, 8, 8, 6, 6, 6, 0, 0, 0, 0],
[28, 0, 0, 0, 24, 24, 41, 73, 105, 137, 169, 201, 233, 265, 297, 329],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0],
[5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 11, 0, 0, 0, 28, 28],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],
[5, 5, 5, 5, 5, 5, 5, 6, 6, 8, 8, 6, 0, 0, 24, 24],
[5, 5, 5, 5, 5, 8, 6, 8, 6, 6, 6, 6, 6, 6, 6, 0],
[6, 8, 6, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 8],
[8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 6],
[24, 24, 24, 24, 24, 24, 24, 4, 24, 24, 24, 24, 24, 24, 0, 0],
[6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6],
[6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0],
[6, 6, 6, 6, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 6, 8, 6, 6, 6, 6, 6, 8, 6, 8, 8, 8],
[8, 8, 6, 8, 8, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0],
[24, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 6, 6, 6, 6, 6],
[6, 6, 6, 6, 28, 28, 28, 28, 28, 28, 28, 28, 28, 24, 24, 0],
[6, 6, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 8, 6, 6, 6, 6, 8, 8, 6, 6, 8, 6, 6, 6, 5, 5],
[5, 5, 5, 5, 5, 5, 6, 8, 6, 6, 8, 8, 8, 6, 8, 6],
[6, 6, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 24],
[5, 5, 5, 5, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6],
[6, 6, 6, 6, 8, 8, 6, 6, 0, 0, 0, 24, 24, 24, 24, 24],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 0, 0, 0, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 24, 24],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1],
[24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0],
[6, 6, 6, 24, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6],
[6, 8, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 6, 5, 5],
[5, 5, 5, 5, 6, 5, 5, 8, 6, 6, 5, 0, 0, 0, 0, 0],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4],
[4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2],
[2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4],
[1, 2, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2],
[2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1],
[2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 1, 0, 1, 0, 1],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0],
[2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3],
[2, 2, 2, 2, 2, 0, 2, 2, 1, 1, 1, 1, 3, 27, 2, 27],
[27, 27, 2, 2, 2, 0, 2, 2, 1, 1, 1, 1, 3, 27, 27, 27],
[2, 2, 2, 2, 0, 0, 2, 2, 1, 1, 1, 1, 0, 27, 27, 27],
[2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 27, 27, 27],
[0, 0, 2, 2, 2, 0, 2, 2, 1, 1, 1, 1, 3, 27, 27, 0],
[12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 16, 16, 16, 16, 16],
[20, 20, 20, 20, 20, 20, 24, 24, 29, 30, 21, 29, 29, 30, 21, 29],
[24, 24, 24, 24, 24, 24, 24, 24, 13, 14, 16, 16, 16, 16, 16, 12],
[24, 24, 24, 24, 24, 24, 24, 24, 24, 29, 30, 24, 24, 24, 24, 23],
[23, 24, 24, 24, 25, 21, 22, 24, 24, 24, 24, 24, 24, 24, 24, 24],
[24, 24, 25, 24, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 12],
[16, 16, 16, 16, 16, 0, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16],
[11, 4, 0, 0, 11, 11, 11, 11, 11, 11, 25, 25, 25, 21, 22, 4],
[11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 25, 25, 25, 21, 22, 0],
[4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0],
[26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26],
[26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7],
[7, 6, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6],
[6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[28, 28, 1, 28, 28, 28, 28, 1, 28, 28, 2, 1, 1, 1, 2, 2],
[1, 1, 1, 2, 28, 1, 28, 28, 25, 1, 1, 1, 1, 1, 28, 28],
[28, 28, 28, 28, 1, 28, 1, 28, 1, 28, 1, 1, 1, 1, 28, 2],
[1, 1, 1, 1, 2, 5, 5, 5, 5, 2, 28, 28, 2, 2, 1, 1],
[25, 25, 25, 25, 25, 1, 2, 2, 2, 2, 28, 25, 28, 28, 2, 28],
[11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11],
[10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
[10, 10, 10, 1, 2, 10, 10, 10, 10, 11, 28, 28, 0, 0, 0, 0],
[25, 25, 25, 25, 25, 28, 28, 28, 28, 28, 25, 25, 28, 28, 28, 28],
[25, 28, 28, 25, 28, 28, 25, 28, 28, 28, 28, 28, 28, 28, 25, 28],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 25, 25],
[28, 28, 25, 28, 25, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],
[28, 28, 28, 28, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25],
[25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25],
[28, 28, 28, 28, 28, 28, 28, 28, 21, 22, 21, 22, 28, 28, 28, 28],
[25, 25, 28, 28, 28, 28, 28, 28, 28, 21, 22, 28, 28, 28, 28, 28],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 25, 28, 28, 28],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 25, 25, 25, 25, 25],
[25, 25, 25, 25, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 25, 25, 25, 25],
[25, 25, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],
[28, 28, 28, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 0, 0, 0, 0, 0],
[11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 28, 28, 28, 28],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 11, 11, 11, 11, 11, 11],
[28, 28, 28, 28, 28, 28, 28, 25, 28, 28, 28, 28, 28, 28, 28, 28],
[28, 25, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],
[28, 28, 28, 28, 28, 28, 28, 28, 25, 25, 25, 25, 25, 25, 25, 25],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 25],
[28, 28, 28, 28, 28, 28, 28, 28, 21, 22, 21, 22, 21, 22, 21, 22],
[21, 22, 21, 22, 21, 22, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11],
[11, 11, 11, 11, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],
[25, 25, 25, 25, 25, 21, 22, 25, 25, 25, 25, 25, 25, 25, 25, 25],
[25, 25, 25, 25, 25, 25, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22],
[25, 25, 25, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21],
[22, 21, 22, 21, 22, 21, 22, 21, 22, 25, 25, 25, 25, 25, 25, 25],
[25, 25, 25, 25, 25, 25, 25, 25, 21, 22, 21, 22, 25, 25, 25, 25],
[25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 21, 22, 25, 25],
[25, 25, 25, 25, 25, 28, 28, 25, 25, 25, 25, 25, 25, 28, 28, 28],
[28, 28, 28, 28, 0, 0, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],
[28, 28, 28, 28, 28, 28, 0, 28, 28, 28, 28, 28, 28, 28, 28, 28],
[1, 2, 1, 1, 1, 2, 2, 1, 2, 1, 2, 1, 2, 1, 1, 1],
[1, 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, 2, 4, 4, 1, 1],
[1, 2, 1, 2, 2, 28, 28, 28, 28, 28, 28, 1, 2, 1, 2, 6],
[6, 6, 1, 2, 0, 0, 0, 0, 0, 24, 24, 24, 24, 11, 24, 24],
[2, 2, 2, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 4],
[24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6],
[5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 0],
[24, 24, 29, 30, 29, 30, 24, 24, 24, 29, 30, 24, 29, 30, 24, 24],
[24, 24, 24, 24, 24, 24, 24, 20, 24, 24, 20, 24, 29, 30, 24, 24],
[29, 30, 21, 22, 21, 22, 21, 22, 21, 22, 24, 24, 24, 24, 24, 4],
[24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 20, 20, 24, 24, 24, 24],
[20, 24, 21, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24],
[28, 28, 24, 24, 24, 21, 22, 21, 22, 21, 22, 21, 22, 20, 0, 0],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 0, 28, 28, 28, 28, 28],
[28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[28, 28, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 0, 0, 0, 0],
[12, 24, 24, 24, 28, 4, 5, 10, 21, 22, 21, 22, 21, 22, 21, 22],
[21, 22, 28, 28, 21, 22, 21, 22, 21, 22, 21, 22, 20, 21, 22, 22],
[28, 10, 10, 10, 10, 10, 10, 10, 10, 10, 6, 6, 6, 6, 8, 8],
[20, 4, 4, 4, 4, 4, 28, 28, 10, 10, 10, 4, 5, 24, 28, 28],
[5, 5, 5, 5, 5, 5, 5, 0, 0, 6, 6, 27, 27, 4, 4, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 24, 4, 4, 4, 5],
[0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[28, 28, 11, 11, 11, 11, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 0],
[11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 28, 28, 28, 28, 28, 28],
[28, 28, 28, 28, 28, 28, 28, 28, 11, 11, 11, 11, 11, 11, 11, 11],
[28, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11],
[5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 24, 24, 24],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 5, 5, 0, 0, 0, 0],
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 5, 6],
[7, 7, 7, 24, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 24, 4],
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 4, 4, 6, 6],
[5, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
[6, 6, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0],
[27, 27, 27, 27, 27, 27, 27, 4, 4, 4, 4, 4, 4, 4, 4, 4],
[27, 27, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2],
[2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2],
[4, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 2, 1, 1, 2],
[1, 2, 1, 2, 1, 2, 1, 2, 4, 27, 27, 1, 2, 1, 2, 5],
[1, 2, 1, 2, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2],
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2],
[1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2],
[1, 2, 1, 2, 1, 1, 1, 1, 2, 1, 2, 0, 0, 0, 0, 0],
[1, 2, 0, 2, 0, 2, 1, 2, 1, 2, 0, 0, 0, 0, 0, 0],
[0, 0, 4, 4, 4, 1, 2, 5, 4, 4, 2, 5, 5, 5, 5, 5],
[5, 5, 6, 5, 5, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5],
[5, 5, 5, 8, 8, 6, 6, 8, 28, 28, 28, 28, 6, 0, 0, 0],
[11, 11, 11, 11, 11, 11, 28, 28, 26, 28, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0],
[8, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8],
[8, 8, 8, 8, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24],
[6, 6, 5, 5, 5, 5, 5, 5, 24, 24, 24, 5, 24, 5, 5, 6],
[5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 24, 24],
[5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6],
[6, 6, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24],
[5, 5, 5, 6, 8, 8, 6, 6, 6, 6, 8, 8, 6, 6, 8, 8],
[8, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 4],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 0, 0, 0, 0, 24, 24],
[5, 5, 5, 5, 5, 6, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 5, 5, 5, 5, 5, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 8],
[8, 6, 6, 8, 8, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 6, 5, 5, 5, 5, 5, 5, 5, 5, 6, 8, 0, 0],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 0, 0, 24, 24, 24, 24],
[4, 5, 5, 5, 5, 5, 5, 28, 28, 28, 5, 8, 6, 8, 5, 5],
[6, 5, 6, 6, 6, 5, 5, 6, 6, 5, 5, 5, 5, 5, 6, 6],
[5, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 4, 24, 24],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 8, 6, 6, 8, 8],
[24, 24, 5, 4, 4, 8, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 0],
[0, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 27, 4, 4, 4, 4],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 27, 27, 0, 0, 0, 0],
[5, 5, 5, 8, 8, 6, 8, 8, 6, 8, 8, 24, 8, 6, 0, 0],
[5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 5, 5, 5, 5, 5],
[19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19],
[18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18],
[2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 5, 6, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 25, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 0, 5, 0],
[5, 5, 0, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27],
[27, 27, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 22, 21],
[0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 28],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 26, 28, 28, 28],
[24, 24, 24, 24, 24, 24, 24, 21, 22, 24, 0, 0, 0, 0, 0, 0],
[24, 20, 20, 23, 23, 21, 22, 21, 22, 21, 22, 21, 22, 21, 22, 21],
[22, 21, 22, 21, 22, 24, 24, 21, 22, 24, 24, 24, 24, 23, 23, 23],
[24, 24, 24, 0, 24, 24, 24, 24, 20, 21, 22, 21, 22, 21, 22, 24],
[24, 24, 25, 20, 25, 25, 25, 0, 24, 26, 24, 24, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 16],
[0, 24, 24, 24, 26, 24, 24, 24, 21, 22, 24, 25, 24, 20, 24, 24],
[834, 866, 898, 930, 962, 994, 1026, 1058, 1090, 1122, 1154, 21, 25, 22, 25, 21],
[22, 24, 21, 22, 24, 24, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4],
[0, 0, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5],
[0, 0, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 0, 0, 0],
[26, 26, 25, 27, 28, 26, 26, 0, 28, 25, 25, 25, 25, 28, 28, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 16, 28, 28, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 0, 5],
[24, 24, 24, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11],
[11, 11, 11, 11, 0, 0, 0, 28, 28, 28, 28, 28, 28, 28, 28, 28],
[10, 10, 10, 10, 10, 11, 11, 11, 11, 28, 28, 28, 28, 28, 28, 28],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 11, 11, 28, 28, 28, 0],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 0, 0, 0],
[28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 6, 0, 0],
[6, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11],
[11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0],
[11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5],
[5, 10, 5, 5, 5, 5, 5, 5, 5, 5, 10, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 24],
[5, 5, 5, 5, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5],
[24, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2],
[1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1],
[1, 1, 1, 0, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2],
[2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
[2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0],
[4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4],
[4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 0, 0, 5, 0, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 0, 5, 5, 0, 0, 0, 5, 0, 0, 5],
[5, 5, 5, 5, 5, 5, 0, 24, 11, 11, 11, 11, 11, 11, 11, 11],
[5, 5, 5, 5, 5, 5, 5, 28, 28, 11, 11, 11, 11, 11, 11, 11],
[0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11],
[5, 5, 5, 0, 5, 5, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11],
[5, 5, 5, 5, 5, 5, 11, 11, 11, 11, 11, 11, 0, 0, 0, 24],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 24],
[5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 11, 11, 5, 5],
[0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11],
[5, 6, 6, 6, 0, 6, 6, 0, 0, 0, 0, 0, 6, 6, 6, 6],
[5, 5, 5, 5, 0, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 0, 0, 6, 6, 6, 0, 0, 0, 0, 6],
[11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0],
[24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 11, 11, 24],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 11, 11, 11],
[5, 5, 5, 5, 5, 5, 5, 5, 28, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 6, 6, 0, 0, 0, 0, 11, 11, 11, 11, 11],
[24, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 0, 0, 0, 24, 24, 24, 24, 24, 24, 24],
[5, 5, 5, 5, 5, 5, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11],
[5, 5, 5, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11],
[5, 5, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 24, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11],
[1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11],
[5, 5, 5, 5, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0],
[11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 6, 6, 20, 0, 0],
[5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6],
[11, 11, 11, 11, 11, 11, 11, 5, 0, 0, 0, 0, 0, 0, 0, 0],
[6, 11, 11, 11, 11, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0],
[5, 5, 6, 6, 6, 6, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0],
[8, 6, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6],
[6, 6, 6, 6, 6, 6, 6, 24, 24, 24, 24, 24, 24, 24, 0, 0],
[11, 11, 11, 11, 11, 11, 41, 73, 105, 137, 169, 201, 233, 265, 297, 329],
[6, 5, 5, 6, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6],
[8, 8, 8, 6, 6, 6, 6, 8, 8, 6, 6, 24, 24, 16, 24, 24],
[24, 24, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0],
[6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 8, 6, 6, 6],
[6, 6, 6, 6, 6, 0, 41, 73, 105, 137, 169, 201, 233, 265, 297, 329],
[24, 24, 24, 24, 5, 8, 8, 5, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 6, 24, 24, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8],
[8, 5, 5, 5, 5, 24, 24, 24, 24, 6, 6, 6, 6, 24, 8, 6],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 5, 24, 5, 24, 24, 24],
[0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11],
[11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 8, 8, 8, 6],
[6, 6, 8, 8, 6, 8, 6, 6, 24, 24, 24, 24, 24, 24, 6, 5],
[5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 5, 5, 5, 5, 0, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 24, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6],
[8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0, 0],
[6, 6, 8, 8, 0, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 5],
[5, 0, 5, 5, 0, 5, 5, 5, 5, 5, 0, 6, 6, 5, 8, 8],
[6, 8, 8, 8, 8, 0, 0, 8, 8, 0, 0, 8, 8, 8, 0, 0],
[5, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 5, 5, 5],
[5, 5, 8, 8, 0, 0, 6, 6, 6, 6, 6, 6, 6, 0, 0, 0],
[6, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6],
[8, 8, 6, 6, 6, 8, 6, 5, 5, 5, 5, 24, 24, 24, 24, 24],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 24, 24, 0, 24, 6, 5],
[8, 8, 8, 6, 6, 6, 6, 6, 6, 8, 6, 8, 8, 8, 8, 6],
[6, 8, 6, 6, 5, 5, 24, 5, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 8],
[8, 8, 6, 6, 6, 6, 0, 0, 8, 8, 8, 8, 6, 6, 8, 6],
[6, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24],
[24, 24, 24, 24, 24, 24, 24, 24, 5, 5, 5, 5, 6, 6, 0, 0],
[8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 6, 8, 6],
[6, 24, 24, 24, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 8, 6, 8, 8],
[6, 6, 6, 6, 6, 6, 8, 6, 5, 24, 0, 0, 0, 0, 0, 0],
[8, 8, 6, 6, 6, 6, 8, 6, 6, 6, 6, 6, 0, 0, 0, 0],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 11, 11, 24, 24, 24, 28],
[6, 6, 6, 6, 6, 6, 6, 6, 8, 6, 6, 24, 0, 0, 0, 0],
[11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5],
[5, 5, 5, 5, 5, 5, 5, 0, 0, 5, 0, 0, 5, 5, 5, 5],
[5, 5, 5, 5, 0, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5],
[8, 8, 8, 8, 8, 8, 0, 8, 8, 0, 0, 6, 6, 8, 6, 5],
[8, 5, 8, 6, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5],
[5, 8, 8, 8, 6, 6, 6, 6, 0, 0, 6, 6, 8, 8, 8, 8],
[6, 5, 24, 5, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5],
[5, 5, 5, 6, 6, 6, 6, 6, 6, 8, 5, 6, 6, 6, 6, 24],
[24, 24, 24, 24, 24, 24, 24, 6, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 6, 6, 6, 6, 6, 6, 8, 8, 6, 6, 6, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6],
[6, 6, 6, 6, 6, 6, 6, 8, 6, 6, 24, 24, 24, 5, 24, 24],
[24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0],
[6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 8, 6],
[5, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[24, 24, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6],
[6, 6, 6, 6, 6, 6, 6, 6, 0, 8, 6, 6, 6, 6, 6, 6],
[6, 8, 6, 6, 8, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 0, 5, 5, 5, 5, 5],
[5, 6, 6, 6, 6, 6, 6, 0, 0, 0, 6, 0, 6, 6, 0, 6],
[6, 6, 6, 6, 6, 6, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 0, 5, 5, 0, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 8, 8, 8, 8, 8, 0],
[6, 6, 0, 8, 8, 6, 8, 6, 5, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 6, 6, 8, 8, 24, 24, 0, 0, 0, 0, 0, 0, 0],
[6, 6, 5, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 8, 8, 6, 6, 6, 6, 6, 0, 0, 0, 8, 8],
[6, 8, 6, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24],
[11, 11, 11, 11, 11, 28, 28, 28, 28, 28, 28, 28, 28, 26, 26, 26],
[26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],
[28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24],
[10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0],
[24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16],
[6, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6],
[6, 6, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[6, 6, 6, 6, 6, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[6, 6, 6, 6, 6, 6, 6, 24, 24, 24, 24, 24, 28, 28, 28, 28],
[4, 4, 4, 4, 24, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 0, 11, 11, 11, 11, 11],
[11, 11, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 0, 5, 5, 5],
[11, 11, 11, 11, 11, 11, 11, 24, 24, 24, 24, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 0, 6],
[5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8],
[8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8],
[8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 6],
[6, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4],
[4, 4, 24, 4, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 0],
[5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 28, 6, 6, 24],
[16, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0],
[6, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[28, 28, 28, 28, 28, 28, 28, 0, 0, 28, 28, 28, 28, 28, 28, 28],
[28, 28, 28, 28, 28, 8, 8, 6, 6, 6, 28, 28, 28, 8, 8, 8],
[8, 8, 8, 16, 16, 16, 16, 16, 16, 16, 16, 6, 6, 6, 6, 6],
[6, 6, 6, 28, 28, 6, 6, 6, 6, 6, 6, 6, 28, 28, 28, 28],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 6, 6, 6, 6, 28, 28],
[28, 28, 6, 6, 6, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2],
[2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2],
[2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
[1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0, 1, 1],
[0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1],
[1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2],
[2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
[2, 2, 2, 2, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1],
[1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2],
[2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 0, 1, 1, 1, 1, 0],
[1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1],
[1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
[2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 25, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 25, 2, 2, 2, 2],
[2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 2, 2, 2, 2],
[2, 2, 2, 2, 2, 25, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 25, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 25],
[2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 25, 2, 2, 2, 2, 2, 2],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 2, 2, 2, 2, 2, 2],
[2, 2, 2, 25, 2, 2, 2, 2, 2, 2, 1, 2, 0, 0, 41, 73],
[105, 137, 169, 201, 233, 265, 297, 329, 41, 73, 105, 137, 169, 201, 233, 265],
[297, 329, 41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 41, 73, 105, 137],
[169, 201, 233, 265, 297, 329, 41, 73, 105, 137, 169, 201, 233, 265, 297, 329],
[6, 6, 6, 6, 6, 6, 6, 28, 28, 28, 28, 6, 6, 6, 6, 6],
[6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 28, 28, 28],
[28, 28, 28, 28, 28, 6, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],
[28, 28, 28, 28, 6, 28, 28, 24, 24, 24, 24, 24, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 2, 2, 2, 2, 2],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0],
[0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0],
[6, 6, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6],
[6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, 6, 6, 6, 6, 6],
[6, 6, 0, 6, 6, 0, 6, 6, 6, 6, 6, 0, 0, 0, 0, 0],
[4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6],
[6, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 4, 4, 4, 0, 0],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 0, 0, 0, 0, 5, 28],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6],
[41, 73, 105, 137, 169, 201, 233, 265, 297, 329, 0, 0, 0, 0, 0, 26],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 6, 6, 6, 6],
[5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 0, 5, 5, 0],
[5, 5, 5, 5, 5, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11],
[2, 2, 2, 2, 6, 6, 6, 6, 6, 6, 6, 4, 0, 0, 0, 0],
[11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 28, 11, 11, 11],
[26, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 28, 11],
[11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0],
[5, 5, 5, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],
[0, 5, 5, 0, 5, 0, 0, 5, 0, 5, 5, 5, 5, 5, 5, 5],
[5, 5, 5, 0, 5, 5, 5, 5, 0, 5, 0, 5, 0, 0, 0, 0],
[0, 0, 5, 0, 0, 0, 0, 5, 0, 5, 0, 5, 0, 5, 5, 5],
[0, 5, 5, 0, 5, 0, 0, 5, 0, 5, 0, 5, 0, 5, 0, 5],
[0, 5, 5, 0, 5, 0, 0, 5, 5, 5, 5, 0, 5, 5, 5, 5],
[5, 5, 5, 0, 5, 5, 5, 5, 0, 5, 5, 5, 5, 0, 5, 0],
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5],
[0, 5, 5, 5, 0, 5, 5, 5, 5, 5, 0, 5, 5, 5, 5, 5],
[25, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],
[11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 28, 28, 28],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 0, 0],
[0, 0, 0, 0, 0, 0, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],
[28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0],
[28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 27, 27, 27, 27, 27],
[28, 28, 28, 28, 28, 28, 28, 28, 0, 0, 0, 0, 28, 28, 28, 28],
[28, 28, 28, 28, 28, 28, 28, 0, 0, 0, 0, 28, 28, 28, 28, 28],
[28, 28, 28, 28, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0],
[28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 0, 28],
[28, 28, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 28, 28],
[28, 28, 28, 0, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],
[0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 0, 0]];
const pool2 = [[0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 7, 8, 9, 10, 11, 12,
13, 13, 13, 14, 15, 13, 13, 16, 17, 18, 19, 20, 21, 22, 13, 23,
13, 13, 13, 24, 25, 11, 11, 11, 11, 26, 11, 27, 28, 29, 30, 31,
32, 32, 32, 32, 32, 32, 32, 33, 34, 35, 36, 11, 37, 38, 13, 39],
[9, 9, 9, 11, 11, 11, 13, 13, 40, 13, 13, 13, 41, 13, 13, 13,
13, 13, 13, 42, 9, 43, 11, 11, 44, 45, 32, 46, 47, 48, 49, 50,
51, 52, 48, 48, 53, 32, 54, 55, 48, 48, 48, 48, 48, 56, 57, 58,
59, 60, 48, 32, 61, 48, 48, 48, 48, 48, 62, 63, 64, 48, 65, 66],
[48, 67, 68, 69, 48, 70, 71, 48, 72, 73, 48, 48, 74, 32, 75, 32,
76, 48, 48, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
90, 83, 84, 91, 92, 93, 94, 95, 96, 97, 84, 98, 99, 100, 88, 101,
102, 83, 84, 103, 104, 105, 88, 106, 107, 108, 109, 110, 111, 112, 94, 113],
[114, 115, 84, 116, 117, 118, 88, 119, 120, 115, 84, 121, 122, 123, 88, 124,
125, 115, 48, 126, 127, 128, 88, 129, 130, 131, 48, 132, 133, 134, 94, 135,
136, 48, 48, 137, 138, 139, 140, 140, 141, 48, 142, 143, 144, 145, 140, 140,
146, 147, 148, 149, 150, 48, 151, 152, 153, 154, 32, 155, 156, 157, 140, 140],
[48, 48, 158, 159, 160, 161, 162, 163, 164, 165, 9, 9, 166, 11, 11, 167,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 168, 169, 48, 48, 168, 48, 48, 170, 171, 172, 48, 48,
48, 171, 48, 48, 48, 173, 174, 175, 48, 176, 9, 9, 9, 9, 9, 177],
[178, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 179, 48, 180, 181, 48, 48, 48, 48, 182, 183,
48, 184, 48, 185, 48, 186, 187, 188, 48, 48, 48, 189, 190, 191, 192, 193],
[194, 192, 48, 48, 195, 48, 48, 196, 197, 48, 198, 48, 48, 48, 48, 199,
48, 200, 201, 202, 203, 48, 204, 205, 48, 48, 206, 48, 207, 208, 209, 209,
48, 210, 48, 48, 48, 211, 212, 213, 192, 192, 214, 215, 216, 140, 140, 140,
217, 48, 48, 218, 219, 160, 220, 221, 222, 48, 223, 64, 48, 48, 224, 225],
[48, 48, 226, 227, 228, 64, 48, 229, 230, 9, 9, 231, 232, 233, 234, 235,
11, 11, 236, 27, 27, 27, 237, 238, 11, 239, 27, 27, 32, 32, 32, 32,
13, 13, 13, 13, 13, 13, 13, 13, 13, 240, 13, 13, 13, 13, 13, 13,
241, 242, 241, 241, 242, 243, 241, 244, 245, 245, 245, 246, 247, 248, 249, 250],
[251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 261, 262, 263, 264, 265,
266, 267, 268, 269, 270, 271, 272, 272, 273, 274, 275, 209, 276, 277, 209, 278,
279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
280, 209, 281, 209, 209, 209, 209, 282, 209, 283, 279, 284, 209, 285, 286, 209],
[209, 209, 287, 140, 288, 140, 271, 271, 271, 289, 209, 209, 209, 209, 290, 271,
209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 291, 292, 209, 209, 293,
209, 209, 209, 209, 209, 209, 294, 209, 209, 209, 209, 209, 209, 209, 209, 209,
209, 209, 209, 209, 209, 209, 295, 296, 271, 297, 209, 209, 298, 279, 299, 279],
[209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
279, 279, 279, 279, 279, 279, 279, 279, 300, 301, 279, 279, 279, 302, 279, 303,
279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
209, 209, 209, 279, 304, 209, 209, 305, 209, 306, 209, 209, 209, 209, 209, 209],
[9, 9, 9, 11, 11, 11, 307, 308, 13, 13, 13, 13, 13, 13, 309, 310,
11, 11, 311, 48, 48, 48, 312, 313, 48, 314, 315, 315, 315, 315, 32, 32,
316, 317, 318, 319, 320, 321, 140, 140, 209, 322, 209, 209, 209, 209, 209, 323,
209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 324, 140, 325],
[326, 327, 328, 329, 136, 48, 48, 48, 48, 330, 178, 48, 48, 48, 48, 331,
332, 48, 48, 136, 48, 48, 48, 48, 200, 333, 48, 48, 209, 209, 323, 48,
209, 334, 335, 209, 336, 337, 209, 209, 335, 209, 209, 337, 209, 209, 209, 209,
209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209],
[48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48],
[48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 209, 209, 209, 209,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48],
[48, 338, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48],
[48, 48, 48, 48, 48, 48, 48, 48, 151, 209, 209, 209, 287, 48, 48, 229,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
339, 48, 340, 140, 13, 13, 341, 342, 13, 343, 48, 48, 48, 48, 344, 345,
31, 346, 347, 348, 13, 13, 13, 349, 350, 351, 352, 353, 354, 355, 140, 356],
[357, 48, 358, 359, 48, 48, 48, 360, 361, 48, 48, 362, 363, 192, 32, 364,
64, 48, 365, 48, 366, 367, 48, 151, 76, 48, 48, 368, 369, 370, 371, 372,
48, 48, 373, 374, 375, 376, 48, 377, 48, 48, 48, 378, 379, 380, 381, 382,
383, 384, 315, 11, 11, 385, 386, 11, 11, 11, 11, 11, 48, 48, 387, 192],
[48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 388, 48, 389, 48, 48, 206],
[390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390],
[391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391],
[391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 204, 48, 48, 48, 48, 48, 48, 207, 140, 140,
392, 393, 394, 395, 396, 48, 48, 48, 48, 48, 48, 397, 398, 399, 48, 48],
[48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 400, 209, 48, 48, 48, 48, 401, 48, 48, 402, 140, 140, 403,
32, 404, 32, 405, 406, 407, 408, 409, 48, 48, 48, 48, 48, 48, 48, 410,
411, 2, 3, 4, 5, 412, 413, 414, 48, 415, 48, 200, 416, 417, 418, 419],
[420, 48, 172, 421, 204, 204, 140, 140, 48, 48, 48, 48, 48, 48, 48, 71,
422, 271, 271, 423, 272, 272, 272, 424, 425, 426, 427, 140, 140, 209, 209, 428,
140, 140, 140, 140, 140, 140, 140, 140, 48, 151, 48, 48, 48, 100, 429, 430,
48, 48, 431, 48, 432, 48, 48, 433, 48, 434, 48, 48, 435, 436, 140, 140],
[9, 9, 437, 11, 11, 48, 48, 48, 48, 204, 192, 9, 9, 438, 11, 439,
48, 48, 440, 48, 48, 48, 441, 442, 442, 443, 444, 445, 140, 140, 140, 140,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 314, 48, 199, 440, 140, 446, 27, 27, 447, 140, 140, 140, 140],
[448, 48, 48, 449, 48, 450, 48, 451, 48, 200, 452, 140, 140, 140, 48, 453,
48, 454, 48, 455, 140, 140, 140, 140, 48, 48, 48, 456, 271, 457, 271, 271,
458, 459, 48, 460, 461, 462, 48, 463, 48, 464, 140, 140, 465, 48, 466, 467,
48, 48, 48, 468, 48, 469, 48, 470, 48, 471, 472, 140, 140, 140, 140, 140],
[48, 48, 48, 48, 196, 140, 140, 140, 9, 9, 9, 473, 11, 11, 11, 474,
48, 48, 475, 192, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 271, 476, 48, 48, 477, 478, 140, 140, 140, 479,
48, 464, 480, 48, 62, 481, 140, 48, 482, 140, 140, 48, 483, 140, 48, 314],
[484, 48, 48, 485, 486, 457, 487, 488, 222, 48, 48, 489, 490, 48, 196, 192,
491, 48, 492, 493, 494, 48, 48, 495, 222, 48, 48, 496, 497, 498, 499, 500,
48, 97, 501, 502, 503, 140, 140, 140, 504, 505, 506, 48, 48, 507, 508, 192,
509, 83, 84, 510, 511, 512, 513, 514, 140, 140, 140, 140, 140, 140, 140, 140],
[48, 48, 48, 515, 516, 517, 478, 140, 48, 48, 48, 518, 519, 192, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 48, 48, 520, 521, 522, 523, 140, 140,
48, 48, 48, 524, 525, 192, 526, 140, 48, 48, 527, 528, 192, 140, 140, 140,
48, 173, 529, 530, 314, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140],
[48, 48, 501, 531, 140, 140, 140, 140, 140, 140, 9, 9, 11, 11, 148, 532,
533, 534, 48, 535, 536, 192, 140, 140, 140, 140, 537, 48, 48, 538, 539, 140,
540, 48, 48, 541, 542, 543, 48, 48, 544, 545, 546, 48, 48, 48, 48, 196,
547, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140],
[84, 48, 520, 548, 549, 148, 175, 550, 48, 551, 552, 553, 140, 140, 140, 140,
554, 48, 48, 555, 556, 192, 557, 48, 558, 559, 192, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 560,
561, 115, 48, 562, 563, 192, 140, 140, 140, 140, 140, 100, 271, 564, 565, 566],
[48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 207, 140, 140, 140, 140, 140, 140],
[272, 272, 272, 272, 272, 272, 567, 568, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 388, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140],
[140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140],
[140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 48, 48, 48, 48, 48, 569],
[48, 48, 48, 570, 571, 572, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140],
[48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 314, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140],
[48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 196, 48, 200, 370, 48, 48, 48, 48, 200, 192, 48, 204, 573,
48, 48, 48, 574, 575, 576, 577, 578, 48, 140, 140, 140, 140, 140, 140, 140],
[140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 9, 9, 11, 11, 271, 579, 140, 140, 140, 140, 140, 140,
48, 48, 48, 48, 580, 581, 582, 582, 583, 584, 140, 140, 140, 140, 585, 586],
[48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 440],
[48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 199, 140, 140,
196, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140],
[140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 587],
[48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 588, 589, 140, 590, 591, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 206,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140],
[48, 48, 48, 48, 48, 48, 71, 151, 196, 592, 593, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140],
[140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
32, 32, 594, 32, 595, 209, 209, 209, 209, 209, 209, 209, 323, 140, 140, 140],
[209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 324,
209, 209, 596, 209, 209, 209, 597, 598, 599, 209, 600, 209, 209, 209, 288, 140,
209, 209, 209, 209, 601, 140, 140, 140, 140, 140, 140, 140, 271, 602, 271, 602,
209, 209, 209, 209, 209, 287, 271, 461, 140, 140, 140, 140, 140, 140, 140, 140],
[9, 603, 11, 604, 605, 606, 241, 9, 607, 608, 609, 610, 611, 9, 603, 11,
612, 613, 11, 614, 615, 616, 617, 9, 618, 11, 9, 603, 11, 604, 605, 11,
241, 9, 607, 617, 9, 618, 11, 9, 603, 11, 619, 9, 620, 621, 622, 623,
11, 624, 9, 625, 626, 627, 628, 11, 629, 9, 630, 11, 631, 632, 633, 634],
[209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
32, 32, 32, 635, 32, 32, 636, 637, 638, 639, 45, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140],
[140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
640, 641, 642, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140],
[643, 644, 645, 27, 27, 27, 646, 140, 647, 140, 140, 140, 140, 140, 140, 140,
48, 48, 151, 648, 649, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 650, 140, 48, 48, 651, 652,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140],
[140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 653, 192,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 654, 200],
[48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 655, 595, 140, 140,
9, 9, 607, 11, 656, 370, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140],
[140, 140, 140, 140, 140, 140, 140, 499, 271, 271, 657, 658, 140, 140, 140, 140,
499, 271, 659, 660, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
661, 48, 662, 663, 664, 665, 666, 667, 668, 206, 669, 206, 140, 140, 140, 670,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140],
[209, 209, 325, 209, 209, 209, 209, 209, 209, 323, 334, 671, 671, 671, 209, 324,
672, 209, 209, 209, 209, 209, 209, 209, 209, 209, 673, 140, 140, 140, 674, 209,
675, 209, 209, 325, 676, 677, 324, 140, 140, 140, 140, 140, 140, 140, 140, 140,
209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 678],
[209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 679, 426, 426,
209, 209, 209, 209, 209, 209, 209, 680, 209, 209, 209, 209, 209, 176, 325, 427],
[325, 209, 209, 209, 681, 176, 209, 209, 681, 209, 673, 677, 140, 140, 140, 140,
209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
209, 209, 209, 209, 209, 323, 673, 426, 676, 209, 209, 682, 683, 325, 676, 676,
209, 209, 209, 209, 209, 209, 209, 209, 209, 684, 209, 209, 288, 140, 140, 192],
[48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 140, 140,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48],
[48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 207, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48],
[48, 204, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48],
[48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 478, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48],
[48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 100, 140],
[48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 204, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140],
[48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 71, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48],
[48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 140, 140, 140, 140, 140],
[685, 140, 570, 570, 570, 570, 570, 570, 140, 140, 140, 140, 140, 140, 140, 140,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140],
[391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 686]];
const buf3 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 13, 13,
13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 17, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 18, 19, 19, 20, 20, 20, 20, 20, 20, 21, 22,
23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 13, 35, 33, 33,
33, 36, 33, 33, 33, 33, 33, 33, 33, 33, 37, 38, 13, 13, 13, 13,
13, 39, 13, 40, 33, 33, 33, 33, 33, 33, 33, 41, 42, 33, 33, 43,
33, 33, 33, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 33,
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 13, 56, 13, 13, 13, 57, 58, 13,
13, 13, 13, 59, 13, 13, 13, 13, 13, 13, 60, 33, 33, 33, 61, 33,
13, 13, 13, 13, 62, 13, 13, 13, 63, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
64, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 65,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 65];
function code_property(ch) {
return pool[pool2[buf3[ch>>10]][(ch>>4)&0x3F]][ch&0xF];
}
function code_type(ch) {
return code_property(ch) & 0x1F;
}
function code_numeric(ch) {
return (code_property(ch) >> 5) - 1;
}
const MAX_ARITY = 2147483647;
function make_special(func) {
let peek = new Provable(MASK_PRED_SPECIAL);
peek.func = func;
return peek;
}
function make_check(func) {
let peek = new Provable(MASK_PRED_CHECK);
peek.func = func;
return peek;
}
function make_arithmetic(func) {
let peek = new Provable(MASK_PRED_ARITHMETIC);
peek.func = func;
return peek;
}
function test_fail(args) {
return false;
}
function test_cut(args) {
let choice = deref(exec_build(args[0]));
cut(choice);
return true;
}
function test_mark(args) {
let choice = redo;
return exec_unify(args[0], choice);
}
function special_seq(args) {
let temp = deref(args[0]);
solve_mark(temp);
temp = deref(args[1]);
solve_seq(temp);
return true;
}
function solve_mark(temp) {
if (is_compound(temp) && temp.functor === "just" && temp.args.length === 1) {
temp = deref(temp.args[0]);
bind(redo, temp);
}
}
function solve_seq(goal) {
let back = null;
let res = null;
while (is_compound(goal) && goal.functor === "." && goal.args.length === 2) {
let peek = goal.args[0];
let temp = new Compound(".", [peek, undefined]);
if (back === null) {
res = temp;
} else {
back.args[1] = temp;
}
back = temp;
goal = deref(goal.args[1]);
}
if (back === null) {
res = call.args[1];
} else {
back.args[1] = call.args[1];
}
cont(res);
}
function special_alt(args) {
let goal = deref(args[0]);
return solve_alt(goal, -1, null);
}
function solve_alt(goal, at, choice) {
if (is_compound(goal) && goal.functor === "." && goal.args.length === 2) {
let mark = trail;
let peek = deref(goal.args[0]);
let temp = deref(peek.args[0]);
solve_mark(temp);
peek = deref(peek.args[1]);
goal = deref(goal.args[1]);
if (is_compound(goal) && goal.functor === "." && goal.args.length === 2) {
if (choice === null) {
choice = new Choice(solve_alt, goal, -1, mark);
} else {
choice.data = goal;
}
more(choice);
}
solve_seq(peek);
return true;
} else {
return false;
}
}
function test_sys_raise(args) {
let problem = exec_build(args[0]);
throw copy_term(problem);
}
function special_sys_trap(args) {
let goal = deref(args[0]);
let snap = snap_setup();
goal = new Compound(".", [goal, "[]"]);
cont(goal);
return solve_catch(snap, true, null);
}
function solve_catch(snap, found, choice) {
if (choice !== null) {
choice.mark = null;
choice.cont = "[]";
choice.tail = null;
}
try {
found = solve(snap, found);
} catch (err) {
snap_cleanup(snap);
let goal = deref(call.args[0]);
err = map_throwable(err);
if (!unify(goal.args[1], err))
throw err;
goal = deref(goal.args[2]);
goal = new Compound(".", [goal, call.args[1]]);
cont(goal);
return true;
}
if (found === false)
return false;
if (redo !== snap) {
if (choice === null) {
choice = new Choice(solve_catch, snap, false, trail);
} else {
choice.mark = trail;
choice.cont = call;
choice.tail = redo;
}
more(choice);
} else {
cut(snap.tail);
}
if (found === true)
cont(snap.cont.args[1]);
return found;
}
function map_throwable(err) {
if (err instanceof RangeError)
err = make_error(new Compound("system_error", ["stack_overflow"]));
return err;
}
function test_os_sleep_promise(args) {
let delay = deref(exec_build(args[0]));
check_integer(delay);
if (delay < 0)
throw make_error(new Compound("domain_error",
["not_less_than_zero", delay]));
let buf = ctx;
return exec_unify(args[1], sleep_promise(buf, delay));
}
function sleep_promise(buf, delay) {
return new Promise(resolve => {
let timer = setDelay(resolve, delay);
register_interrupt(buf, () => {
clearTimeout(timer);
timer = setDelay(resolve, 0)})
}).then(() => register_interrupt(buf, () => {}));
}
function test_os_import_promise(args) {
let url = deref(exec_build(args[0]));
check_atom(url);
let res = {};
if (!exec_unify(args[1], res))
return false;
let buf = ctx;
return exec_unify(args[2], import_promise(buf, url, res));
}
function import_promise(buf, path, res) {
if (fs !== undefined) {
path = url.pathToFileURL(path);
return import(path).then(module => res["module"]=module);
} else {
return import(path).then(module => res["module"]=module);
}
}
function test_os_invoke_main(args) {
let module = deref(exec_build(args[0]));
module.main();
return true;
}
function special_yield(args) {
if ((gc_flags & GC_MASK_ALLOW_YIELD) === 0)
throw make_error(new Compound("system_error", ["illegal_yield"]));
cont(call.args[1]);
more(new Choice(solve_signal, null, null, trail));
return deref(args[0]);
}
function special_shield(args) {
let goal = deref(args[0]);
let snap = snap_setup();
goal = new Compound(".", [goal, "[]"]);
cont(goal);
return solve_shield(snap, true, null);
}
function solve_shield(snap, found, choice) {
if (choice !== null) {
choice.mark = null;
choice.cont = "[]";
choice.tail = null;
}
let back = gc_flags & GC_MASK_ASYNC_MODE;
set_gc_flags(gc_flags & ~GC_MASK_ASYNC_MODE);
try {
found = solve(snap, found);
} catch (x) {
set_gc_flags((gc_flags & ~GC_MASK_ASYNC_MODE) | back);
snap_cleanup(snap);
throw x;
}
set_gc_flags((gc_flags & ~GC_MASK_ASYNC_MODE) | back);
if (found === false)
return false;
if (redo !== snap) {
if (choice === null) {
choice = new Choice(solve_shield, snap, false, trail);
} else {
choice.mark = trail;
choice.cont = call;
choice.tail = redo;
}
more(choice);
} else {
cut(snap.tail);
}
if (found === true)
cont(snap.cont.args[1]);
return found;
}
function special_unshield(args) {
let goal = deref(args[0]);
let snap = snap_setup();
goal = new Compound(".", [goal, "[]"]);
cont(goal);
return solve_unshield(snap, true, null);
}
function solve_unshield(snap, found, choice) {
if (choice !== null) {
choice.mark = null;
choice.cont = "[]";
choice.tail = null;
}
let back = gc_flags & GC_MASK_ASYNC_MODE;
set_gc_flags(gc_flags | GC_MASK_ASYNC_MODE);
try {
found = solve(snap, found);
} catch (x) {
set_gc_flags((gc_flags & ~GC_MASK_ASYNC_MODE) | back);
snap_cleanup(snap);
throw x;
}
set_gc_flags((gc_flags & ~GC_MASK_ASYNC_MODE) | back);
if (found === false)
return false;
if (redo !== snap) {
if (choice === null) {
choice = new Choice(solve_unshield, snap, false, trail);
} else {
choice.mark = trail;
choice.cont = call;
choice.tail = redo;
}
more(choice);
} else {
cut(snap.tail);
}
if (found === true)
cont(snap.cont.args[1]);
return found;
}
function check_atom(beta) {
if (!is_atom(beta)) {
check_nonvar(beta);
beta = copy_term(beta);
throw make_error(new Compound("type_error", ["atom", beta]));
}
}
function check_number(beta) {
if (!is_number(beta)) {
check_nonvar(beta);
beta = copy_term(beta);
throw make_error(new Compound("type_error", ["number", beta]));
}
}
function check_integer(beta) {
if (!is_integer(beta)) {
check_nonvar(beta);
beta = copy_term(beta);
throw make_error(new Compound("type_error", ["integer", beta]));
}
}
function check_atomic(beta) {
if (is_variable(beta) || is_compound(beta)) {
check_nonvar(beta);
beta = copy_term(beta);
throw make_error(new Compound("type_error", ["atomic", beta]));
}
}
function check_nil(beta) {
if (beta !== "[]") {
if (is_compound(beta) && beta.functor === "."
&& beta.args.length === 2) {
throw make_error(new Compound("representation_error", ["int"]));
} else {
check_nonvar(beta);
beta = copy_term(beta);
throw make_error(new Compound("type_error", ["list", beta]));
}
}
}
function check_symbol(beta) {
if (is_variable(beta) || is_compound(beta) || is_number(beta)) {
check_nonvar(beta);
beta = copy_term(beta);
throw make_error(new Compound("type_error", ["symbol", beta]));
}
}
function test_unify(args) {
let alpha = exec_build(args[0]);
return exec_unify(args[1], alpha);
}
function test_copy_term(args) {
let alpha = exec_build(args[0]);
alpha = copy_term(alpha)
return exec_unify(args[1], alpha);
}
function test_univ(args) {
let alpha = deref(exec_build(args[0]));
if (is_variable(alpha)) {
let beta = deref(exec_build(args[1]));
beta = special_univ_pack(beta);
return unify(alpha, beta);
} else {
alpha = special_univ_unpack(alpha);
return exec_unify(args[1], alpha);
}
}
function special_univ_pack(beta) {
if (is_compound(beta) &&
"." === beta.functor &&
beta.args.length === 2) {
let peek = deref(beta.args[1]);
let args = list_objects(peek);
peek = deref(beta.args[0]);
if (args.length === 0) {
check_atomic(peek);
} else {
check_symbol(peek);
peek = new Compound(peek, args);
}
return peek;
} else {
check_nonvar(beta);
beta = copy_term(beta);
throw make_error(new Compound("type_error", ["list", beta]));
}
}
function list_objects(obj) {
let peek = obj;
let arity = 0;
while (is_compound(peek) &&
"." === peek.functor &&
peek.args.length === 2 &&
arity < MAX_ARITY) {
arity++;
peek = deref(peek.args[1]);
}
check_nil(peek);
if (arity === 0) {
return VOID_ARGS;
} else {
let args = new Array(arity);
peek = obj;
arity = 0;
while (is_compound(peek) &&
"." === peek.functor &&
peek.args.length === 2) {
args[arity++] = deref(peek.args[0]);
peek = deref(peek.args[1]);
}
return args;
}
}
function special_univ_unpack(alpha) {
let res;
if (is_compound(alpha)) {
res = new Compound(".", [alpha.functor, undefined]);
let back = res;
alpha = alpha.args;
for (let i = 0; i < alpha.length; i++) {
let peek = new Compound(".", [alpha[i], undefined]);
back.args[1] = peek;
back = peek;
}
back.args[1] = "[]";
} else {
res = new Compound(".", [alpha, "[]"]);
}
return res;
}
function test_functor(args) {
let alpha = deref(exec_build(args[0]));
if (is_variable(alpha)) {
let functor = deref(exec_build(args[1]));
let arity = deref(exec_build(args[2]));
check_integer(arity);
if (arity < 0)
throw make_error(new Compound("domain_error",
["not_less_than_zero", arity]));
if (arity > MAX_ARITY)
throw make_error(new Compound("representation_error",
["max_arity"]));
let res;
if (arity === 0) {
check_atomic(functor);
res = functor;
} else {
check_symbol(functor);
let temp = new Array(arity);
for (let i = 0; i < arity; i++)
temp[i] = new Variable();
res = new Compound(functor, temp);
}
return unify(alpha, res);
} else {
let functor;
let arity;
if (is_compound(alpha)) {
functor = alpha.functor;
arity = alpha.args.length;
} else {
functor = alpha;
arity = 0;
}
if (!exec_unify(args[1], functor))
return false;
return exec_unify(args[2], arity);
}
}
function test_arg(args) {
let alpha = deref(exec_build(args[0]));
check_integer(alpha);
let beta = deref(exec_build(args[1]));
check_callable(beta);
let arity;
if (is_compound(beta)) {
arity = beta.args.length;
} else {
arity = 0;
}
if (alpha < 1 || arity < alpha)
return false;
beta = beta.args[alpha - 1];
return exec_unify(args[2], beta);
}
function test_change_arg(args) {
let alpha = deref(exec_build(args[0]));
check_integer(alpha);
let beta = deref(exec_build(args[1]));
check_callable(beta);
let gamma = deref(exec_build(args[2]));
let arity;
if (is_compound(beta)) {
arity = beta.args.length;
} else {
arity = 0;
}
if (alpha < 1 || arity < alpha)
return false;
beta = beta.args[alpha - 1];
check_var(beta);
link(gamma, beta);
return true;
}
function check_var(beta) {
if (!is_variable(beta)) {
beta = copy_term(beta);
throw make_error(new Compound("type_error", ["var", beta]));
}
}
function link(source, term) {
if (term.tail === null) {
term.instantiated = source;
if ((term.flags & VAR_MASK_STATE) ===
(gc_flags & VAR_MASK_STATE))
mark2_term(source);
} else {
let beta = copy_term(term);
throw make_error(new Compound("type_error", ["conductor", beta]));
}
}
function test_ir_object_new(args) {
let res = {};
return exec_unify(args[0], res);
}
function test_ir_object_current(args) {
let obj = deref(exec_build(args[0]));
let key = deref(exec_build(args[1]));
check_atom(key);
let res = obj[key];
if (res === undefined)
return false;
return exec_unify(args[2], res);
}
function test_ir_object_set(args) {
let obj = deref(exec_build(args[0]));
let key = deref(exec_build(args[1]));
check_atom(key);
let value = deref(exec_build(args[2]));
obj[key] = value;
return true;
}
function test_ir_object_keys(args) {
let obj = deref(exec_build(args[0]));
let res = Object.keys(obj);
res = set_to_list(res, "[]");
return exec_unify(args[1], res);
}
function test_ground(args) {
let alpha = exec_build(args[0]);
alpha = first_variable(alpha);
return (alpha === undefined);
}
function test_nonground(args) {
let alpha = exec_build(args[0]);
alpha = first_variable(alpha);
if (alpha === undefined)
return false;
return exec_unify(args[1], alpha);
}
function first_variable(alpha) {
for (; ;) {
alpha = deref(alpha);
if (is_variable(alpha)) {
return alpha;
} else if (is_compound(alpha)) {
alpha = alpha.args;
let i = 0;
for (; i < alpha.length - 1; i++) {
let res = first_variable(alpha[i]);
if (res !== undefined)
return res;
}
alpha = alpha[i];
} else {
return undefined;
}
}
}
function test_term_variables(args) {
let alpha = exec_build(args[0]);
let beta = exec_build(args[1]);
let gamma = deref(exec_build(args[2]));
alpha = term_variables(alpha);
alpha = set_to_list(alpha, gamma);
return unify(beta, alpha);
}
function term_variables(alpha) {
let res = null;
function term_variables2(alpha2) {
for (; ;) {
alpha2 = deref(alpha2);
if (is_variable(alpha2)) {
if (res === null)
res = new Set();
res.add(alpha2);
break;
} else if (is_compound(alpha2)) {
alpha2 = alpha2.args;
let i = 0;
for (; i < alpha2.length - 1; i++)
term_variables2(alpha2[i]);
alpha2 = alpha2[i];
} else {
break;
}
}
}
term_variables2(alpha);
return res;
}
function test_term_singletons(args) {
let alpha = exec_build(args[0]);
alpha = term_singletons(alpha);
alpha = set_to_list(alpha, "[]");
return exec_unify(args[1], alpha);
}
function term_singletons(alpha) {
let res = null;
let anon = null;
function term_singletons2(alpha2) {
for (; ;) {
alpha2 = deref(alpha2);
if (is_variable(alpha2)) {
if (res === null) {
res = new Set();
anon = new Set();
}
if (res.has(alpha2)) {
anon.delete(alpha2);
} else {
res.add(alpha2);
anon.add(alpha2);
}
break;
} else if (is_compound(alpha2)) {
alpha2 = alpha2.args;
let i = 0;
for (; i < alpha2.length - 1; i++)
term_singletons2(alpha2[i]);
alpha2 = alpha2[i];
} else {
break;
}
}
}
term_singletons2(alpha);
return anon;
}
function set_to_list(temp, end) {
let back = null;
let res = null;
if (temp !== null) {
for (let peek of temp) {
peek = new Compound(".", [peek, undefined]);
if (back === null) {
res = peek;
} else {
back.args[1] = peek;
}
back = peek;
}
}
if (back === null) {
res = end;
} else {
back.args[1] = end;
}
return res;
}
function test_reference(args) {
let alpha = deref(exec_build(args[0]));
if (is_variable(alpha) || is_compound(alpha))
return false;
if (is_atom(alpha) || is_number(alpha))
return false;
return true;
}
function test_acyclic(args) {
let alpha = exec_build(args[0]);
return is_acyclic(alpha);
}
function is_acyclic(alpha) {
let visited = null;
function is_acyclic2(alpha2) {
let undo = null;
for (; ;) {
if (is_variable(alpha2)) {
if (alpha2.instantiated !== undefined) {
if (visited === null) {
visited = new Set();
} else if (visited.has(alpha2)) {
return false;
}
visited.add(alpha2);
if (undo === null)
undo = new Array(0);
undo.push(alpha2);
alpha2 = alpha2.instantiated;
} else {
break;
}
} else if (is_compound(alpha2)) {
alpha2 = alpha2.args;
let i = 0;
for (; i < alpha2.length - 1; i++)
if (!is_acyclic2(alpha2[i]))
return false;
alpha2 = alpha2[i];
} else {
break;
}
}
if (undo !== null)
for (let i = undo.length - 1; i >= 0; i--)
visited.delete(undo[i]);
return true;
}
return is_acyclic2(alpha);
}
function test_callable(args) {
let alpha = deref(exec_build(args[0]));
if (is_variable(alpha) || is_number(alpha))
return false;
return true;
}
function test_var(args) {
let alpha = deref(exec_build(args[0]));
return is_variable(alpha);
}
function test_nonvar(args) {
let alpha = deref(exec_build(args[0]));
return !is_variable(alpha);
}
function test_compound(args) {
let alpha = deref(exec_build(args[0]));
return is_compound(alpha);
}
function test_atomic(args) {
let alpha = deref(exec_build(args[0]));
if (is_compound(alpha) || is_variable(alpha))
return false;
return true;
}
function test_atom(args) {
let alpha = deref(exec_build(args[0]));
return is_atom(alpha);
}
function test_number(args) {
let alpha = deref(exec_build(args[0]));
return is_number(alpha);
}
function test_integer(args) {
let alpha = deref(exec_build(args[0]));
return is_integer(alpha);
}
function test_float(args) {
let alpha = deref(exec_build(args[0]));
return is_float(alpha);
}
function is_bigint(alpha) {
return typeof alpha === 'bigint';
}
function norm_smallint(alpha) {
if ((-94906266 <= alpha) && (alpha <= 94906266)) {
return alpha;
} else {
return BigInt(alpha);
}
}
function norm_bigint(alpha) {
if ((-94906266 <= alpha) && (alpha <= 94906266)) {
return Number(alpha);
} else {
return alpha;
}
}
function widen_bigint(alpha) {
if (!is_bigint(alpha)) {
return BigInt(alpha);
} else {
return alpha;
}
}
function narrow_float(alpha) {
if (is_bigint(alpha)) {
alpha = Number(alpha);
if (Number.isFinite(alpha)) {
return alpha;
} else {
throw make_error(new Compound("evaluation_error", ["float_overflow"]));
}
} else {
return alpha;
}
}
function norm_float(alpha) {
if ((-94906266 <= alpha) && (alpha <= 94906266)
&& Number.isInteger(alpha)) {
return BigInt(alpha);
} else if (Number.isFinite(alpha)) {
return alpha;
} else if (Number.isNaN(alpha)) {
throw make_error(new Compound("evaluation_error", ["undefined"]));
} else {
throw make_error(new Compound("evaluation_error", ["float_overflow"]));
}
}
function test_code_type(args) {
let alpha = deref(exec_build(args[0]));
check_integer(alpha);
if (alpha < 0 || alpha > 0x10FFFF) {
alpha = 0; // UNASSIGNED
} else {
alpha = code_type(alpha);
}
return exec_unify(args[1], alpha);
}
function test_code_numeric(args) {
let alpha = deref(exec_build(args[0]));
check_integer(alpha);
if (alpha < 0 || alpha > 0x10FFFF) {
alpha = -1; // UNASSIGNED
} else {
alpha = code_numeric(alpha);
}
return exec_unify(args[1], alpha);
}
function test_atom_integer(args) {
let text = deref(exec_build(args[0]));
let radix = deref(exec_build(args[1]));
check_integer(radix);
if (radix < 2 || radix > 36)
throw make_error(new Compound("domain_error", ["radix", radix]));
if (is_variable(text)) {
let beta = deref(exec_build(args[2]));
check_integer(beta);
beta = atom_integer_encode(beta, radix);
return unify(text, beta);
} else {
check_atom(text);
text = atom_integer_decode(text, radix);
return exec_unify(args[2], text);
}
}
function atom_integer_encode(num, radix) {
let res;
if (is_bigint(num)) {
res = BigInt(num).toString(radix);
} else {
res = Number(num).toString(radix);
}
return res;
}
function atom_integer_decode(text, radix) {
text = ascii_replace(text, radix, false);
let res;
let step = Math.trunc(52 / (32 - Math.clz32(radix - 1)));
if (text.length <= step) {
res = Number.parseInt(text, radix);
if (isNaN(res))
throw make_error(new Compound("syntax_error", ["illegal_number"]));
res = norm_smallint(res);
} else {
if (0 < text.length && text.charCodeAt(0) === 45) {
res = -bigint_parse(text, 1, step, radix);
} else {
res = bigint_parse(text, 0, step, radix);
}
res = norm_bigint(res);
}
return res;
}
function bigint_parse(str, help, step, radix) {
if (help === str.length)
throw make_error(new Compound("syntax_error", ["illegal_number"]));
let res = BigInt(0);
while (help + step < str.length) {
let temp = Number.parseInt(str.slice(help, help + step), radix);
if (isNaN(temp) || temp < 0)
throw make_error(new Compound("syntax_error", ["illegal_number"]));
res = res * BigInt(radix ** step) + BigInt(temp);
help += step;
}
let temp = Number.parseInt(str.slice(help), radix);
if (isNaN(temp) || temp < 0)
throw make_error(new Compound("syntax_error", ["illegal_number"]));
return res * BigInt(radix ** (str.length - help)) + BigInt(temp);
}
function test_atom_number(args) {
let text = deref(exec_build(args[0]));
if (is_variable(text)) {
let beta = deref(exec_build(args[1]));
check_number(beta);
beta = atom_number_encode(beta);
return unify(text, beta);
} else {
check_atom(text);
text = atom_number_decode(text);
return exec_unify(args[1], text);
}
}
function atom_number_encode(num) {
if (is_integer(num)) {
return num.toString();
} else {
num = narrow_float(num);
return shape_number(num.toPrecision(17));
}
}
function shape_number(res) {
let peek = res.indexOf("e");
if (peek !== -1) {
res = shape_number_mantissa(res.slice(0, peek)) +
"E" + shape_number_exponent(res.slice(peek + 1));
} else {
res = shape_number_mantissa(res);
}
return res;
}
function shape_number_mantissa(res) {
if (res.indexOf(".") !== -1) {
let pos = res.length;
while (res.charCodeAt(pos - 1) === 48) // '0'
pos--;
if (res.charCodeAt(pos - 1) === 46) // '.'
pos++;
if (pos !== res.length)
res = res.slice(0, pos);
}
return res;
}
function shape_number_exponent(res) {
if (0 < res.length && res.charCodeAt(0) === 43) // '+'
res = res.slice(1);
return res;
}
function atom_number_decode(text) {
text = ascii_replace(text, 10, true);
let res;
if ((text.indexOf(".") !== -1) ||
(text.indexOf("e") !== -1) ||
(text.indexOf("E") !== -1)) {
res = Number(text);
if (isNaN(res))
throw make_error(new Compound("syntax_error", ["illegal_number"]));
res = norm_float(res);
} else {
if (text.length <= 8) {
res = Number(text);
if (isNaN(res))
throw make_error(new Compound("syntax_error", ["illegal_number"]));
res = norm_smallint(res);
} else {
try {
res = BigInt(text);
} catch (e) {
throw make_error(new Compound("syntax_error", ["illegal_number"]));
}
res = norm_bigint(res);
}
}
return res;
}
function test_atom_reference(args) {
let text = deref(exec_build(args[0]));
if (is_variable(text)) {
let obj = deref(exec_build(args[1]));
if (obj === true) {
obj = "True";
} else if (obj === false) {
obj = "False";
} else if (obj === null) {
obj = "None";
} else {
obj = "Reference";
}
return unify(text, obj);
} else {
check_atom(text);
let obj;
if (text === "True") {
obj = true;
} else if (text === "False") {
obj = false;
} else if (text === "None") {
obj = null;
} else {
obj = undefined;
}
if (obj === undefined)
throw make_error(new Compound("syntax_error", ["illegal_reference"]));
return exec_unify(args[1], obj);
}
}
function ascii_replace(text, radix, expo) {
let buf = "";
let last = 0;
let pos = 0;
while (pos < text.length) {
let ch = text.codePointAt(pos);
let val = code_numeric(ch);
if (val >= 0 && val < radix) {
if (ch <= 127) { // ASCII
/* */
} else {
if (val < 10) {
val += 48; // '0'
} else {
val += 55; // 'A'-10
}
buf += text.slice(last, pos) + String.fromCodePoint(val);
last = pos + char_count(ch);
}
} else if ((ch===43 || ch===45) && (pos===0 ||
(expo && (text.charCodeAt(pos-1)===101 || text.charCodeAt(pos-1)===69)))) {
/* */
} else if (expo && (ch===46 || ch===101 || ch===69)) {
/* */
} else {
throw make_error(new Compound("syntax_error", ["illegal_number"]));
}
pos += char_count(ch);
}
if (last !== 0) {
buf += text.slice(last);
return buf;
} else {
return text;
}
}
function char_count(ch) {
if (ch <= 0xFFFF) {
return 1;
} else {
return 2;
}
}
function test_sys_get_locale(args) {
let loc = Intl.DateTimeFormat().resolvedOptions().locale;
return exec_unify(args[0], loc.replace("-", "_"));
}
function test_sys_time_atom(args) {
let text = deref(exec_build(args[0]));
check_atom(text);
let tms = deref(exec_build(args[1]));
if (is_variable(tms)) {
let res = deref(exec_build(args[2]));
check_atom(res);
let date = sys_time_parse(res, text);
return unify(tms, norm_smallint(date.getTime()));
} else {
check_integer(tms);
let date = new Date(narrow_float(tms));
return exec_unify(args[2], sys_time_format(text, date));
}
}
function sys_time_parse(res, pat) {
let year = 1970; let month = 1; let day = 1;
let hour = 0; let minute = 0; let second = 0;
let j = 0;
for (let i = 0; i < pat.length; i++) {
let ch = pat.charCodeAt(i);
if (ch === 37) { // %
i++;
let k;
switch (pat.charCodeAt(i)) {
case 100: // d
k = scan_integer(res, j);
day = Number.parseInt(res.substring(j, k));
j = k;
break;
case 109: // m
k = scan_integer(res, j);
month = Number.parseInt(res.substring(j, k));
j = k;
break;
case 89: // Y
k = scan_integer(res, j);
year = Number.parseInt(res.substring(j, k));
j = k;
break;
case 72: // H
k = scan_integer(res, j);
hour = Number.parseInt(res.substring(j, k));
j = k;
break;
case 77: // M
k = scan_integer(res, j);
minute = Number.parseInt(res.substring(j, k));
j = k;
break;
case 83: // S
k = scan_integer(res, j);
second = Number.parseInt(res.substring(j, k));
j = k;
break;
}
} else {
if (j < res.length && res.charCodeAt(j) === ch)
j++;
}
}
return new Date(year, month - 1, day, hour, minute, second);
}
function scan_integer(res, j) {
let ch;
while (j < res.length && 48 <= (ch = res.charCodeAt(j)) && ch <= 57)
j++;
return j;
}
function sys_time_format(pat, date) {
let buf = "";
let k = 0;
for (let i = 0; i < pat.length; i++) {
let ch = pat.charCodeAt(i);
if (ch === 37) { // %
buf += pat.substring(k, i);
i++;
if (i < pat.length) {
switch (pat.charCodeAt(i)) {
case 100: // d
buf = append_padded(buf, date.getDate());
break;
case 109: // m
buf = append_padded(buf, date.getMonth()+1);
break;
case 89: // Y
buf += date.getFullYear();
break;
case 72: // H
buf = append_padded(buf, date.getHours());
break;
case 77: // M
buf = append_padded(buf, date.getMinutes());
break;
case 83: // S
buf = append_padded(buf, date.getSeconds());
break;
}
k = i + 1;
} else {
k = i;
}
}
}
buf += pat.substring(k, pat.length);
return buf;
}
function append_padded(buf, value) {
if (value < 10)
buf += '0';
buf += value.toString();
return buf;
}
function test_sys_get_args(args) {
let res = "[]";
if (fs !== undefined) {
for (let i = process.argv.length - 1; i >= 2; i--)
res = new Compound(".", [process.argv[i], res]);
}
return exec_unify(args[0], res);
}
// Albufeira compiler, control flow
add("fail", 0, make_check(test_fail));
add("$CUT", 1, make_check(test_cut));
add("$MARK", 1, make_check(test_mark));
add("$SEQ", 2, make_special(special_seq));
add("$ALT", 1, make_special(special_alt));
add("sys_raise", 1, make_check(test_sys_raise));
add("sys_trap", 3, make_special(special_sys_trap));
// Albufeira compiler, async flow
add("os_sleep_promise", 2, make_check(test_os_sleep_promise));
add("os_import_promise", 3, make_check(test_os_import_promise));
add("os_invoke_main", 1, make_check(test_os_invoke_main));
add("$YIELD", 1, make_special(special_yield));
add("shield", 1, make_special(special_shield));
add("unshield", 1, make_special(special_unshield));
// term specials
add("=", 2, make_check(test_unify));
add("copy_term", 2, make_check(test_copy_term));
add("=..", 2, make_check(test_univ));
add("functor", 3, make_check(test_functor));
add("arg", 3, make_check(test_arg));
add("change_arg", 3, make_check(test_change_arg));
// object specials
add("ir_object_new", 1, make_check(test_ir_object_new));
add("ir_object_current", 3, make_check(test_ir_object_current));
add("ir_object_set", 3, make_check(test_ir_object_set));
add("ir_object_keys", 2, make_check(test_ir_object_keys));
// variable specials
add("ground", 1, make_check(test_ground));
add("nonground", 2, make_check(test_nonground));
add("term_variables", 3, make_check(test_term_variables));
add("term_singletons", 2, make_check(test_term_singletons));
add("reference", 1, make_check(test_reference));
add("acyclic_term", 1, make_check(test_acyclic));
// type specials
add("callable", 1, make_check(test_callable));
add("var", 1, make_check(test_var));
add("nonvar", 1, make_check(test_nonvar));
add("compound", 1, make_check(test_compound));
add("atomic", 1, make_check(test_atomic));
add("atom", 1, make_check(test_atom));
add("number", 1, make_check(test_number));
add("integer", 1, make_check(test_integer));
add("float", 1, make_check(test_float));
// atom specials
add("code_type", 2, make_check(test_code_type));
add("code_numeric", 2, make_check(test_code_numeric));
add("atom_integer", 3, make_check(test_atom_integer));
add("atom_number", 2, make_check(test_atom_number));
add("atom_reference", 2, make_check(test_atom_reference));
// locale specials
add("sys_get_locale", 1, make_check(test_sys_get_locale));
add("sys_time_atom", 3, make_check(test_sys_time_atom));
add("sys_get_args", 1, make_check(test_sys_get_args));
function test_eval(args) {
let res = exec_eval(args[0]);
return exec_unify(args[1], res);
}
function arit_neg(args) {
let alpha = exec_eval(args[0]);
return -alpha;
}
function arit_add(args) {
let alpha = exec_eval(args[0]);
let beta = exec_eval(args[1]);
if (is_integer(alpha) && is_integer(beta)) {
if (!is_bigint(alpha) && !is_bigint(beta)) {
return norm_smallint(alpha + beta);
} else {
return norm_bigint(widen_bigint(alpha) + widen_bigint(beta));
}
} else {
return norm_float(narrow_float(alpha) + narrow_float(beta));
}
}
function arit_sub(args) {
let alpha = exec_eval(args[0]);
let beta = exec_eval(args[1]);
if (is_integer(alpha) && is_integer(beta)) {
if (!is_bigint(alpha) && !is_bigint(beta)) {
return norm_smallint(alpha - beta);
} else {
return norm_bigint(widen_bigint(alpha) - widen_bigint(beta));
}
} else {
return norm_float(narrow_float(alpha) - narrow_float(beta));
}
}
function arit_mul(args) {
let alpha = exec_eval(args[0]);
let beta = exec_eval(args[1]);
if (is_integer(alpha) && is_integer(beta)) {
if (!is_bigint(alpha) && !is_bigint(beta)) {
return norm_smallint(alpha * beta);
} else {
return norm_bigint(widen_bigint(alpha) * widen_bigint(beta));
}
} else {
return norm_float(narrow_float(alpha) * narrow_float(beta));
}
}
function arit_quot(args) {
let alpha = exec_eval(args[0]);
let beta = exec_eval(args[1]);
beta = narrow_float(beta);
if (beta === 0)
throw make_error(new Compound("evaluation_error",["zero_divisor"]));
return norm_float(narrow_float(alpha) / beta);
}
function arit_intquot(args) {
let alpha = exec_eval(args[0]);
check_integer(alpha);
let beta = exec_eval(args[1]);
check_integer(beta);
if (beta === 0)
throw make_error(new Compound("evaluation_error",["zero_divisor"]));
if (!is_bigint(alpha) && !is_bigint(beta)) {
return Math.trunc(alpha / beta);
} else {
return norm_bigint(widen_bigint(alpha) / widen_bigint(beta));
}
}
function arit_rem(args) {
let alpha = exec_eval(args[0]);
check_integer(alpha);
let beta = exec_eval(args[1]);
check_integer(beta);
if (beta === 0)
throw make_error(new Compound("evaluation_error",["zero_divisor"]));
if (!is_bigint(alpha) && !is_bigint(beta)) {
return alpha % beta;
} else {
return norm_bigint(widen_bigint(alpha) % widen_bigint(beta));
}
}
function arit_float(args) {
let alpha = exec_eval(args[0]);
if (is_integer(alpha)) {
return norm_float(narrow_float(alpha));
} else {
return alpha;
}
}
function arit_intpow(args) {
let alpha = exec_eval(args[0]);
let beta = exec_eval(args[1]);
if (is_integer(alpha) && is_integer(beta)) {
if (beta < 0)
throw make_error(new Compound("domain_error",
["not_less_than_zero", beta]));
if (!is_bigint(alpha) && !is_bigint(beta)) {
if ((32 - Math.clz32(Math.abs(alpha))) * beta < 53) {
return norm_smallint(Math.pow(alpha, beta));
} else {
return norm_bigint(widen_bigint(alpha) ** widen_bigint(beta));
}
} else {
return norm_bigint(widen_bigint(alpha) ** widen_bigint(beta));
}
} else {
return norm_float(Math.pow(narrow_float(alpha), narrow_float(beta)));
}
}
function arit_div(args) {
let alpha = exec_eval(args[0]);
check_integer(alpha);
let beta = exec_eval(args[1]);
check_integer(beta);
if (beta === 0)
throw make_error(new Compound("evaluation_error", ["zero_divisor"]));
if (!is_bigint(alpha) && !is_bigint(beta)) {
return Math.floor(alpha / beta);
} else {
return norm_bigint(bigint_div(
widen_bigint(alpha), widen_bigint(beta)));
}
}
function bigint_div(alpha, beta) {
let temp = alpha / beta;
if ((alpha < 0) !== (beta < 0)) {
let res = alpha % beta;
if (res !== 0)
temp--;
}
return temp;
}
function arit_mod(args) {
let alpha = exec_eval(args[0]);
check_integer(alpha);
let beta = exec_eval(args[1]);
check_integer(beta);
if (beta === 0)
throw make_error(new Compound("evaluation_error",["zero_divisor"]));
if (!is_bigint(alpha) && !is_bigint(beta)) {
return number_mod(alpha, beta);
} else {
return norm_bigint(number_mod(
widen_bigint(alpha), widen_bigint(beta)));
}
}
function number_mod(alpha, beta) {
let res = alpha % beta;
if ((alpha < 0) !== (beta < 0)) {
if (res !== 0)
res += beta;
}
return res;
}
function arit_abs(args) {
let alpha = exec_eval(args[0]);
if (is_integer(alpha)) {
if (alpha < 0) {
return -alpha;
} else {
return alpha;
}
} else {
return norm_float(Math.abs(narrow_float(alpha)));
}
}
function arit_sign(args) {
let alpha = exec_eval(args[0]);
if (is_integer(alpha)) {
if (alpha < 0) {
return -1;
} else if (alpha > 0) {
return 1;
} else {
return 0;
}
} else {
return norm_float(Math.sign(narrow_float(alpha)));
}
}
function arit_min(args) {
let alpha = exec_eval(args[0]);
let beta = exec_eval(args[1]);
if (is_integer(alpha) && is_integer(beta)) {
if (alpha < beta) {
return alpha;
} else {
return beta;
}
} else {
return norm_float(Math.min(
narrow_float(alpha), narrow_float(beta)));
}
}
function arit_max(args) {
let alpha = exec_eval(args[0]);
let beta = exec_eval(args[1]);
if (is_integer(alpha) && is_integer(beta)) {
if (alpha > beta) {
return alpha;
} else {
return beta;
}
} else {
return norm_float(Math.max(
narrow_float(alpha), narrow_float(beta)));
}
}
function arit_truncate(args) {
let alpha = exec_eval(args[0]);
if (is_integer(alpha)) {
return alpha;
} else {
return norm_smallint(Math.trunc(narrow_float(alpha)));
}
}
function arit_floor(args) {
let alpha = exec_eval(args[0]);
if (is_integer(alpha)) {
return alpha;
} else {
return norm_smallint(Math.floor(narrow_float(alpha)));
}
}
function arit_ceiling(args) {
let alpha = exec_eval(args[0]);
if (is_integer(alpha)) {
return alpha;
} else {
return norm_smallint(Math.ceil(narrow_float(alpha)));
}
}
function arit_round(args) {
let alpha = exec_eval(args[0]);
if (is_integer(alpha)) {
return alpha;
} else {
return norm_smallint(Math.round(narrow_float(alpha)));
}
}
function test_numberequal(args) {
let alpha = exec_eval(args[0]);
let beta = exec_eval(args[1]);
return number_equal(alpha, beta);
}
function test_numbernotequal(args) {
let alpha = exec_eval(args[0]);
let beta = exec_eval(args[1]);
return !number_equal(alpha, beta);
}
function number_equal(alpha, beta) {
if (is_integer(alpha) && is_integer(beta)) {
return alpha === beta;
} else {
return narrow_float(alpha) === narrow_float(beta);
}
}
function test_numberless(args) {
let alpha = exec_eval(args[0]);
let beta = exec_eval(args[1]);
return number_less(alpha, beta);
}
function test_numbergreaterequal(args) {
let alpha = exec_eval(args[0]);
let beta = exec_eval(args[1]);
return !number_less(alpha, beta);
}
function test_numbergreater(args) {
let alpha = exec_eval(args[0]);
let beta = exec_eval(args[1]);
return number_less(beta, alpha);
}
function test_numberlessequal(args) {
let alpha = exec_eval(args[0]);
let beta = exec_eval(args[1]);
return !number_less(beta, alpha);
}
function number_less(alpha, beta) {
if (is_integer(alpha) && is_integer(beta)) {
return alpha < beta;
} else {
return narrow_float(alpha) < narrow_float(beta);
}
}
function arit_sin(args) {
let alpha = exec_eval(args[0]);
return norm_float(Math.sin(narrow_float(alpha)));
}
function arit_cos(args) {
let alpha = exec_eval(args[0]);
return norm_float(Math.cos(narrow_float(alpha)));
}
function arit_tan(args) {
let alpha = exec_eval(args[0]);
return norm_float(Math.tan(narrow_float(alpha)));
}
function arit_asin(args) {
let alpha = exec_eval(args[0]);
return norm_float(Math.asin(narrow_float(alpha)));
}
function arit_acos(args) {
let alpha = exec_eval(args[0]);
return norm_float(Math.acos(narrow_float(alpha)));
}
function arit_atan(args) {
let alpha = exec_eval(args[0]);
return norm_float(Math.atan(narrow_float(alpha)));
}
function arit_pi(args) {
return Math.PI;
}
function arit_pow(args) {
let alpha = exec_eval(args[0]);
let beta = exec_eval(args[1]);
return norm_float(Math.pow(narrow_float(alpha), narrow_float(beta)));
}
function arit_exp(args) {
let alpha = exec_eval(args[0]);
return norm_float(Math.exp(narrow_float(alpha)));
}
function arit_log(args) {
let alpha = exec_eval(args[0]);
return norm_float(Math.log(narrow_float(alpha)));
}
function arit_sqrt(args) {
let alpha = exec_eval(args[0]);
return norm_float(Math.sqrt(narrow_float(alpha)));
}
function arit_e(args) {
return Math.E;
}
function arit_epsilon(args) {
return Number.EPSILON;
}
function arit_atan2(args) {
let alpha = exec_eval(args[0]);
let beta = exec_eval(args[1]);
alpha = narrow_float(alpha);
beta = narrow_float(beta);
if (alpha === 0 && beta === 0) {
throw make_error(new Compound("evaluation_error", ["undefined"]));
} else {
return norm_float(Math.atan2(alpha, beta));
}
}
function arit_not(args) {
let alpha = exec_eval(args[0]);
check_integer(alpha);
return ~alpha;
}
function arit_and(args) {
let alpha = exec_eval(args[0]);
check_integer(alpha);
let beta = exec_eval(args[1]);
check_integer(beta);
if (!is_bigint(alpha) && !is_bigint(beta)) {
return alpha & beta;
} else {
return norm_bigint(widen_bigint(alpha) & widen_bigint(beta));
}
}
function arit_or(args) {
let alpha = exec_eval(args[0]);
check_integer(alpha);
let beta = exec_eval(args[1]);
check_integer(beta);
if (!is_bigint(alpha) && !is_bigint(beta)) {
return norm_smallint(alpha | beta);
} else {
return norm_bigint(widen_bigint(alpha) | widen_bigint(beta));
}
}
function arit_xor(args) {
let alpha = exec_eval(args[0]);
check_integer(alpha);
let beta = exec_eval(args[1]);
check_integer(beta);
if (!is_bigint(alpha) && !is_bigint(beta)) {
return norm_smallint(alpha ^ beta);
} else {
return norm_bigint(widen_bigint(alpha) ^ widen_bigint(beta));
}
}
function arit_shiftright(args) {
let alpha = exec_eval(args[0]);
check_integer(alpha);
let beta = exec_eval(args[1]);
check_integer(beta);
if (!is_bigint(alpha) && !is_bigint(beta)) {
if (0 <= beta && beta < 32) {
return alpha >> beta;
} else if (0 > beta && beta < Math.clz32(Math.abs(alpha)) - 1) {
return norm_smallint(alpha << -beta);
} else {
return norm_bigint(widen_bigint(alpha) >> widen_bigint(beta));
}
} else {
return norm_bigint(widen_bigint(alpha) >> widen_bigint(beta));
}
}
function arit_shiftleft(args) {
let alpha = exec_eval(args[0]);
check_integer(alpha);
let beta = exec_eval(args[1]);
check_integer(beta);
if (!is_bigint(alpha) && !is_bigint(beta)) {
if (0 < beta && beta < Math.clz32(Math.abs(alpha)) - 1) {
return norm_smallint(alpha << beta);
} else if (0 >= beta && -beta < 32) {
return alpha >> -beta;
} else {
return norm_bigint(widen_bigint(alpha) << widen_bigint(beta));
}
} else {
return norm_bigint(widen_bigint(alpha) << widen_bigint(beta));
}
}
function test_equal(args) {
let alpha = exec_build(args[0]);
let beta = exec_build(args[1]);
return equal_term(alpha, beta);
}
function test_notequal(args) {
let alpha = exec_build(args[0]);
let beta = exec_build(args[1]);
return !equal_term(alpha, beta);
}
function equal_term(first, second) {
for (; ;) {
first = deref(first);
second = deref(second);
if (!is_compound(first))
return (first === second);
if (!is_compound(second))
return false;
if (first.args.length !== second.args.length)
return false;
if (first.functor !== second.functor)
return false;
first = first.args;
second = second.args;
let i = 0;
for (; i < first.length - 1; i++) {
if (!equal_term(first[i], second[i]))
return false;
}
first = first[i];
second = second[i];
}
}
function test_less(args) {
let alpha = exec_build(args[0]);
let beta = exec_build(args[1]);
return compare_term(alpha, beta) < 0;
}
function test_greaterequal(args) {
let alpha = exec_build(args[0]);
let beta = exec_build(args[1]);
return compare_term(alpha, beta) >= 0;
}
function test_greater(args) {
let alpha = exec_build(args[0]);
let beta = exec_build(args[1]);
return compare_term(alpha, beta) > 0;
}
function test_lessequal(args) {
let alpha = exec_build(args[0]);
let beta = exec_build(args[1]);
return compare_term(alpha, beta) <= 0;
}
function test_compare(args) {
let alpha = exec_build(args[0]);
let beta = exec_build(args[1]);
let gamma = exec_build(args[2]);
beta = compare_term(beta, gamma);
if (beta < 0) {
beta = "<";
} else if (beta === 0) {
beta = "=";
} else {
beta = ">";
}
return unify(alpha, beta);
}
function compare_term(first, second) {
for (; ;) {
first = deref(first);
second = deref(second);
let i = compare_type(first);
let k = i - compare_type(second);
if (k !== 0)
return k;
switch (i) {
case 0:
return (first.flags & ~VAR_MASK_STATE) -
(second.flags & ~VAR_MASK_STATE);
case 1:
return compare_atomic(first, second);
case 2:
return compare_atomic(first, second);
case 3:
return compare_atomic(order_value(first), order_value(second));
case 4:
return compare_atomic(first, second);
case 5:
k = first.args.length - second.args.length;
if (k !== 0)
return k;
k = compare_atomic(first.functor, second.functor);
if (k !== 0)
return k;
first = first.args;
second = second.args;
let i = 0;
for (; i < first.length - 1; i++) {
k = compare_term(first[i], second[i]);
if (k !== 0) return k;
}
first = first[i];
second = second[i];
break;
default:
throw make_error(new Compound(
"system_error", ["unknown_type"]));
}
}
}
function compare_type(first) {
if (is_variable(first)) {
return 0;
} else if (is_compound(first)) {
return 5;
} else if (is_atom(first)) {
return 4;
} else if (is_integer(first)) {
return 2;
} else if (is_float(first)) {
return 1;
} else {
return 3;
}
}
function order_value(first) {
if (first === false) {
return 0;
} else if (first === true) {
return 1;
} else if (first === null) {
return -1;
} else {
throw make_error(new Compound("resource_error", ["not_supported"]));
}
}
function compare_atomic(first,second) {
if (first < second)
return -1;
if (first === second)
return 0;
return 1;
}
function test_atom_codes(args) {
let text = deref(exec_build(args[0]));
if (is_variable(text)) {
let res = deref(exec_build(args[1]));
res = atom_codes_pack(res);
return unify(text, res);
} else {
check_atom(text);
text = atom_codes_unpack(text);
return exec_unify(args[1], text);
}
}
function atom_codes_pack(peek) {
let temp = peek;
let i = 0;
while (is_compound(temp) && temp.functor === "."
&& temp.args.length === 2 && i < MAX_ARITY) {
let ch = deref(temp.args[0]);
check_integer(ch);
if (ch < 0 || ch > 0x10FFFF)
throw make_error(new Compound("domain_error", ["code_point", ch]));
i++;
temp = deref(temp.args[1]);
}
check_nil(temp);
let res = new Array(i);
temp = peek;
i = 0;
while (is_compound(temp) && temp.functor === "." && temp.args.length === 2) {
let ch = deref(temp.args[0]);
res[i++] = ch;
temp = deref(temp.args[1]);
}
return String.fromCodePoint(...res);
}
function atom_codes_unpack(text) {
let back = null;
let res;
let i = 0;
while (i < text.length) {
let ch = text.codePointAt(i);
let peek = new Compound(".", [ch, undefined]);
if (back !== null) {
back.args[1] = peek;
} else {
res = peek;
}
back = peek;
i += char_count(ch);
}
if (back !== null) {
back.args[1] = "[]";
} else {
res = "[]";
}
return res;
}
function test_char_code(args) {
let text = deref(exec_build(args[0]));
if (is_variable(text)) {
let ch = deref(exec_build(args[1]));
check_integer(ch);
if (ch < 0 || ch > 0x10FFFF)
throw make_error(new Compound("domain_error", ["code_point", ch]));
ch = String.fromCodePoint(ch);
return unify(text, ch);
} else {
check_atom(text);
let ch;
if (text.length === 0 ||
text.length !== char_count(ch = text.codePointAt(0)))
throw make_error(new Compound("type_error", ["character", text]));
return exec_unify(args[1], ch);
}
}
function test_atom_length(args) {
let text = deref(exec_build(args[0]));
check_atom(text);
let res = atom_count(text, 0, text.length);
return exec_unify(args[1], norm_smallint(res));
}
function atom_count(text, from, to) {
let res = 0;
while (from < to) {
let ch = text.codePointAt(from);
from += char_count(ch);
res ++;
}
return res;
}
function test_atom_split(args) {
let text = deref(exec_build(args[0]));
let dele = deref(exec_build(args[1]));
check_atom(dele);
if (is_variable(text)) {
let res = deref(exec_build(args[2]));
let val = atom_split_pack(dele, res);
return unify(text, val);
} else {
check_atom(text);
text = atom_split_unpack(text, dele);
return exec_unify(args[2], text);
}
}
function atom_split_pack(dele, res) {
let peek = res;
let i = 0;
while (is_compound(peek) && peek.functor === "."
&& peek.args.length === 2 && i < MAX_ARITY) {
i++;
peek = deref(peek.args[1]);
}
check_nil(peek);
let elems = new Array(i);
peek = res;
i = 0;
while (is_compound(peek) && peek.functor === "." && peek.args.length === 2) {
let val = deref(peek.args[0]);
check_atom(val);
elems[i++] = val;
peek = deref(peek.args[1]);
}
return elems.join(dele);
}
function atom_split_unpack(text, dele) {
let res = "[]";
let pos = text.length;
let found = (pos >= dele.length ? text.lastIndexOf(dele, pos-dele.length) : -1);
while (found !== -1) {
let val = text.substring(found+dele.length, pos);
res = new Compound(".", [val, res]);
pos = found;
found = (pos >= dele.length ? text.lastIndexOf(dele, pos-dele.length) : -1);
}
let val = text.substring(0, pos);
res = new Compound(".", [val, res]);
return res;
}
function test_atom_arg(args) {
let alpha = deref(exec_build(args[0]));
check_integer(alpha);
let text = deref(exec_build(args[1]));
check_atom(text);
alpha = atom_offset(text, 0, alpha);
if (alpha < 0 || alpha >= text.length)
return false;
return exec_unify(args[2], text.codePointAt(alpha));
}
function atom_offset(text,pos,alpha) {
if (alpha < 0)
return -1;
while (alpha > 0 && pos < text.length) {
let ch = text.codePointAt(pos);
pos += char_count(ch);
alpha--;
}
if (alpha > 0)
return -1;
return pos;
}
function special_atom_concat(args) {
let first = deref(args[0]);
let second = deref(args[1]);
let third = deref(args[2]);
if (is_variable(second)) {
if (is_variable(first)) {
check_atom(third);
return solve2_concat(args, null, 0, null);
} else {
check_atom(first);
check_atom(third);
if (!third.startsWith(first))
return false;
if (!unify(second, third.substring(first.length)))
return false;
}
} else if (is_variable(first)) {
check_atom(second);
check_atom(third);
if (!third.endsWith(second))
return false;
if (!unify(first, third.substring(0,third.length-second.length)))
return false;
} else {
check_atom(first);
check_atom(second);
if (!unify(third, first + second))
return false;
}
cont(call.args[1]);
return true;
}
function solve_concat(rope, at, choice) {
let goal = deref(call.args[0]);
return solve2_concat(goal.args, rope, at, choice);
}
function solve2_concat(args, rope, at, choice) {
let text = deref(args[2]);
let mark = trail;
while (at <= text.length) {
if (unify(args[0], text.substring(0, at)) &&
unify(args[1], text.substring(at))) {
at = atom_succ(text,at);
if (at <= text.length) {
if (choice === null) {
choice = new Choice(solve_concat, null, at, mark);
} else {
choice.at = at;
}
more(choice);
}
cont(call.args[1]);
return true;
}
unbind(mark);
at = atom_succ(text,at);
}
return false;
}
function atom_succ(text, at) {
if (at < text.length) {
let ch = text.codePointAt(at);
return at + char_count(ch);
} else {
return at + 1;
}
}
function special_sys_atom_match(args) {
let text = deref(args[0]);
check_atom(text);
let part = deref(args[1]);
check_atom(part);
let alpha = deref(args[2]);
if (is_variable(alpha)) {
return solve2_match(args, 0, 0, null);
} else {
check_integer(alpha);
alpha = atom_offset(text, 0, alpha);
if (alpha < 0)
return false;
if (!text.startsWith(part, alpha))
return false;
}
cont(call.args[1]);
return true;
}
function solve_match(rope, at, choice) {
let goal = deref(call.args[0]);
return solve2_match(goal.args, rope, at, choice);
}
function solve2_match(args, res, at, choice) {
let text = deref(args[0]);
let part = deref(args[1]);
let mark = trail;
while (at + part.length <= text.length) {
let pos = text.indexOf(part, at);
if (pos < 0)
return false;
res += atom_count(text, at, pos);
at = pos;
if (unify(args[2], norm_smallint(res))) {
at = atom_succ(text, at);
res++;
if (at + part.length <= text.length) {
if (choice === null) {
choice = new Choice(solve_match, res, at, mark);
} else {
choice.data = res;
choice.at = at;
}
more(choice);
}
cont(call.args[1]);
return true;
}
unbind(mark);
at = atom_succ(text,at);
res++;
}
return false;
}
function special_sys_atom_part(args) {
let text = deref(args[0]);
check_atom(text);
let alpha = deref(args[1]);
if (is_variable(alpha)) {
let beta = deref(args[2]);
check_integer(beta);
beta = atom_offset(text, 0, beta);
if (beta < 0)
return false;
return solve2_part(args, [0,0], beta, null);
} else {
check_integer(alpha);
let beta = deref(args[2]);
check_integer(beta);
alpha = atom_offset(text, 0, alpha);
if (alpha < 0)
return false;
beta = atom_offset(text, alpha, beta);
if (beta < 0)
return false;
if (!unify(args[3], text.substring(alpha, beta)))
return false;
}
cont(call.args[1]);
return true;
}
function solve_part(rope, at, choice) {
let goal = deref(call.args[0]);
return solve2_part(goal.args, rope, at, choice);
}
function solve2_part(args, pair, to, choice) {
let text = deref(args[0]);
let mark = trail;
while (to <= text.length) {
if (unify(args[1], norm_smallint(pair[1])) &&
unify(args[3], text.substring(pair[0], to))) {
pair[0] = atom_succ(text, pair[0]);
pair[1]++;
to = atom_succ(text, to);
if (to <= text.length) {
if (choice === null) {
choice = new Choice(solve_part, pair, to, mark);
} else {
choice.at = to;
}
more(choice);
}
cont(call.args[1]);
return true;
}
unbind(mark);
pair[0] = atom_succ(text, pair[0]);
pair[1]++;
to = atom_succ(text, to);
}
return false;
}
function special_sys_last_atom_match(args) {
let text = deref(args[0]);
check_atom(text);
let part = deref(args[1]);
check_atom(part);
let alpha = deref(args[2]);
if (is_variable(alpha)) {
let at = text.length - part.length;
let res = atom_count(text, 0, at);
return solve2_last_match(args, res, at, null);
} else {
check_integer(alpha);
alpha = atom_offset(text, 0, alpha);
if (alpha < 0)
return false;
if (!text.startsWith(part, alpha))
return false;
}
cont(call.args[1]);
return true;
}
function solve_last_match(rope, at, choice) {
let goal = deref(call.args[0]);
return solve2_last_match(goal.args, rope, at, choice);
}
function solve2_last_match(args, res, at, choice) {
let text = deref(args[0]);
let part = deref(args[1]);
let mark = trail;
while (at >= 0) {
let pos = text.lastIndexOf(part, at);
if (pos < 0)
return false;
res -= atom_count(text, pos, at);
at = pos;
if (unify(args[2], norm_smallint(res))) {
at = atom_pred(text, at);
res--;
if (at >= 0) {
if (choice === null) {
choice = new Choice(solve_last_match, res, at, mark);
} else {
choice.data = res;
choice.at = at;
}
more(choice);
}
cont(call.args[1]);
return true;
}
unbind(mark);
at = atom_pred(text, at);
res--;
}
return false;
}
function atom_pred(text, at) {
if (0 < at) {
let ch = last_code(text, at);
return at - char_count(ch);
} else {
return at - 1;
}
}
function special_sys_last_atom_part(args) {
let text = deref(args[0]);
check_atom(text);
let alpha = deref(args[1]);
if (is_variable(alpha)) {
let beta = deref(args[2]);
check_integer(beta);
beta = last_atom_offset(text, text.length, beta);
if (beta < 0)
return false;
let res = atom_count(text, 0, beta);
return solve2_last_part(args, [beta,res], text.length, null);
} else {
check_integer(alpha);
let beta = deref(args[2]);
check_integer(beta);
alpha = atom_offset(text, 0, alpha);
if (alpha < 0)
return false;
beta = atom_offset(text, alpha, beta);
if (beta < 0)
return false;
if (!unify(args[3], text.substring(alpha, beta)))
return false;
}
cont(call.args[1]);
return true;
}
function last_atom_offset(text,pos,alpha) {
if (alpha < 0)
return -1;
while (alpha > 0 && 0 < pos) {
let ch = last_code(text, pos);
pos -= char_count(ch);
alpha--;
}
if (alpha > 0)
return -1;
return pos;
}
function solve_last_part(rope, at, choice) {
let goal = deref(call.args[0]);
return solve2_last_part(goal.args, rope, at, choice);
}
function solve2_last_part(args, pair, to, choice) {
let text = deref(args[0]);
let mark = trail;
while (pair[0] >= 0) {
if (unify(args[1], norm_smallint(pair[1])) &&
unify(args[3], text.substring(pair[0], to))) {
pair[0] = atom_pred(text, pair[0]);
pair[1]--;
to = atom_pred(text, to);
if (pair[0] >= 0) {
if (choice === null) {
choice = new Choice(solve_last_part, pair, to, mark);
} else {
choice.at = to;
}
more(choice);
}
cont(call.args[1]);
return true;
}
unbind(mark);
pair[0] = atom_pred(text, pair[0]);
pair[1]--;
to = atom_pred(text, to);
}
return false;
}
// number specials, basic predicates
add("$EVAL", 2, make_check(test_eval));
// number specials, basic operations
add("-", 2, make_arithmetic(arit_neg));
add("+", 3, make_arithmetic(arit_add));
add("-", 3, make_arithmetic(arit_sub));
add("*", 3, make_arithmetic(arit_mul));
add("/", 3, make_arithmetic(arit_quot));
add("//", 3, make_arithmetic(arit_intquot));
add("rem", 3, make_arithmetic(arit_rem));
// number specials, more operations
add("float", 2, make_arithmetic(arit_float));
add("^", 3, make_arithmetic(arit_intpow));
add("div", 3, make_arithmetic(arit_div));
add("mod", 3, make_arithmetic(arit_mod));
// number specials, magnitude operations
add("abs", 2, make_arithmetic(arit_abs));
add("sign", 2, make_arithmetic(arit_sign));
add("min", 3, make_arithmetic(arit_min));
add("max", 3, make_arithmetic(arit_max));
// number specials, rounding operations
add("truncate", 2, make_arithmetic(arit_truncate));
add("floor", 2, make_arithmetic(arit_floor));
add("ceiling", 2, make_arithmetic(arit_ceiling));
add("round", 2, make_arithmetic(arit_round));
// number specials, magnitude predicates
add("=:=", 2, make_check(test_numberequal));
add("=\\=", 2, make_check(test_numbernotequal));
add("<", 2, make_check(test_numberless));
add(">=", 2, make_check(test_numbergreaterequal));
add(">", 2, make_check(test_numbergreater));
add("=<", 2, make_check(test_numberlessequal));
// number specials, trigonometric operations
add("sin", 2, make_arithmetic(arit_sin));
add("cos", 2, make_arithmetic(arit_cos));
add("tan", 2, make_arithmetic(arit_tan));
add("asin", 2, make_arithmetic(arit_asin));
add("acos", 2, make_arithmetic(arit_acos));
add("atan", 2, make_arithmetic(arit_atan));
add("pi", 1, make_arithmetic(arit_pi));
// number specials, exponential operations
add("**", 3, make_arithmetic(arit_pow));
add("exp", 2, make_arithmetic(arit_exp));
add("log", 2, make_arithmetic(arit_log));
add("sqrt", 2, make_arithmetic(arit_sqrt));
add("e", 1, make_arithmetic(arit_e));
add("epsilon", 1, make_arithmetic(arit_epsilon));
add("atan2", 3, make_arithmetic(arit_atan2));
// number specials, bitwise operations
add("\\", 2, make_arithmetic(arit_not));
add("/\\", 3, make_arithmetic(arit_and));
add("\\/", 3, make_arithmetic(arit_or));
add("xor", 3, make_arithmetic(arit_xor));
add(">>", 3, make_arithmetic(arit_shiftright));
add("<<", 3, make_arithmetic(arit_shiftleft));
// term specials, syntactic comparison
add("==", 2, make_check(test_equal));
add("\\==", 2, make_check(test_notequal));
add("@<", 2, make_check(test_less));
add("@>=", 2, make_check(test_greaterequal));
add("@>", 2, make_check(test_greater));
add("@=<", 2, make_check(test_lessequal));
add("compare", 3, make_check(test_compare));
// atom specials, standard
add("atom_codes", 2, make_check(test_atom_codes));
add("char_code", 2, make_check(test_char_code));
add("atom_length", 2, make_check(test_atom_length));
add("atom_split", 3, make_check(test_atom_split));
add("atom_arg", 3, make_check(test_atom_arg));
// atom specials, non-standard
add("atom_concat", 3, make_special(special_atom_concat));
add("sys_atom_part", 4, make_special(special_sys_atom_part));
add("sys_atom_match", 3, make_special(special_sys_atom_match));
add("sys_last_atom_part", 4, make_special(special_sys_last_atom_part));
add("sys_last_atom_match", 3, make_special(special_sys_last_atom_match));
const MAX_BUF = 4096;
let bootbase = "";
let codebase = "";
function set_bootbase(url) {
bootbase = url;
}
function set_codebase(url) {
codebase = url;
}
function set_cursor(elem) {
engine.text_output.data = elem;
engine.text_error.data = elem;
}
function Sink() {
this.buf = "";
this.send = (fd, buf) => {};
this.last = -1;
this.notify = (fd) => {};
this.release = (fd) => {};
this.data = undefined;
this.indent = 0;
}
function test_current_output(args) {
let alpha = engine.text_output;
return exec_unify(args[0], alpha);
}
function test_current_error(args) {
let alpha = engine.text_error;
return exec_unify(args[0], alpha);
}
function test_set_output(args) {
let obj = deref(exec_build(args[0]));
check_sink(obj);
engine.text_output = obj;
return true;
}
function test_set_error(args) {
let obj = deref(exec_build(args[0]));
check_sink(obj);
engine.text_error = obj;
return true;
}
function check_sink(beta) {
if (!(beta instanceof Sink)) {
check_nonvar(beta);
beta = copy_term(beta);
throw make_error(new Compound("type_error", ["writer", beta]));
}
}
function test_put_code(args) {
let stream = deref(exec_build(args[0]));
check_sink(stream);
let ch = deref(exec_build(args[1]));
check_integer(ch);
if (ch < 0 || ch > 0x10FFFF)
throw make_error(new Compound("domain_error", ["code_point", ch]));
put_code(stream, ch);
return true;
}
function put_code(stream, ch) {
stream.buf += String.fromCodePoint(ch);
stream.last = ch;
if (stream.buf.length >= MAX_BUF)
flush_buffer(stream);
}
function flush_buffer(stream) {
if (stream.buf.length > 0) {
stream.send(stream.data, stream.buf);
stream.buf = "";
}
}
function test_current_lastcode(args) {
let stream = deref(exec_build(args[0]));
check_sink(stream);
return exec_unify(args[1], norm_smallint(stream.last));
}
function test_set_lastcode(args) {
let stream = deref(exec_build(args[0]));
check_sink(stream);
let ch = deref(exec_build(args[1]));
check_integer(ch);
stream.last = narrow_float(ch);
return true;
}
function test_put_atom(args) {
let stream = deref(exec_build(args[0]));
check_sink(stream);
let text = deref(exec_build(args[1]));
check_atom(text);
put_atom(stream, text);
return true;
}
function put_atom(stream, text) {
if (text.length > 0) {
stream.buf += text;
stream.last = last_code(text, text.length);
if (stream.buf.length >= MAX_BUF)
flush_buffer(stream);
}
}
function last_code(text, pos) {
let ch = text.charCodeAt(pos - 1);
if (ch >= 0xDC00 && ch <= 0xDFFF && pos > 1) {
let res2 = text.charCodeAt(pos - 2);
if (res2 >= 0xD800 && res2 <= 0xDBFF)
ch = ((res2 - 0xD7C0) << 10) + ch - 0xDC00;
}
return ch;
}
const MASK_SRC_SKIP = 0x00000001;
const MASK_SRC_AREAD = 0x00000002;
function Source() {
this.buf = "";
this.pos = 0;
this.receive = (fd) => "";
this.flags = 0;
this.lineno = 0;
this.release = (fd) => {};
this.data = undefined;
}
function test_current_input(args) {
let alpha = engine.text_input;
return exec_unify(args[0], alpha);
}
function test_set_input(args) {
let obj = deref(exec_build(args[0]));
check_source(obj);
engine.text_input = obj;
return true;
}
function check_source(beta) {
if (!(beta instanceof Source)) {
check_nonvar(beta);
beta = copy_term(beta);
throw make_error(new Compound("type_error", ["reader", beta]));
}
}
function test_os_read_sync(args) {
let stream = deref(exec_build(args[0]));
stream.buf = stream.receive(stream.data);
stream.pos = 0;
return true;
}
function test_os_get_code(args) {
let stream = deref(exec_build(args[0]));
let pos = stream.pos;
let buf = stream.buf;
if (pos < buf.length) {
let ch = buf.codePointAt(pos);
pos += char_count(ch);
if (ch === 13 || (ch === 10 && (stream.flags & MASK_SRC_SKIP) === 0))
stream.lineno++;
if (ch === 13) {
stream.flags |= MASK_SRC_SKIP;
} else {
stream.flags &= ~MASK_SRC_SKIP;
}
stream.pos = pos;
return exec_unify(args[1], ch);
} else {
return false;
}
}
function test_os_peek_code(args) {
let stream = deref(exec_build(args[0]));
let pos = stream.pos;
let buf = stream.buf;
if (pos < buf.length) {
let ch = buf.codePointAt(pos);
return exec_unify(args[1], ch);
} else {
return false;
}
}
function test_os_open_promise(args) {
let url = deref(exec_build(args[0]));
check_atom(url);
let stream = new Source();
if (!exec_unify(args[1], stream))
return false;
let buf = ctx;
let prom;
if (fs !== undefined) {
if (url.startsWith("http:") || url.startsWith("https:")) {
prom = open_http_promise(buf, stream, url);
} else {
prom = open_file_promise(buf, stream, url);
}
} else {
try {
url = new URL(url, codebase).href;
} catch (err) {
throw make_error(
new Compound("resource_error", ["base_url"]));
}
prom = open_http_promise(buf, stream, url);
}
return exec_unify(args[2], prom);
}
function open_http_promise(buf, stream, url) {
let paras = {};
let contr = new AbortController();
paras.signal = contr.signal;
register_interrupt(buf, () => contr.abort("ABORT"));
return fetch(url, paras).then(response => {
register_interrupt(buf, () => {});
if (response.status !== 200) {
register_signal(buf, map_http_result(response.status, url));
} else {
stream.data = response.body.getReader();
stream.receive = http_read_promise;
stream.release = http_close_promise;
stream.flags |= MASK_SRC_AREAD;
}
}, err => {
register_interrupt(buf, () => {});
if ("ABORT" !== err)
register_signal(buf, map_file_error(err, url));
});
}
function open_file_promise(buf, stream, url) {
return new Promise(resolve => {
fs.open(url, (err, fd) => {
if (err === null) {
stream.data = fd;
stream.receive = file_read_promise;
stream.release = file_close_promise;
stream.flags |= MASK_SRC_AREAD;
} else {
register_signal(buf, map_file_error(err, url));
}
resolve();
});
});
}
function map_file_error(err, url) {
let code = err.code;
if (code === "ENOENT" || code === "ERR_CONNECTION_REFUSED") {
return new Compound("existence_error",
["source_sink", url]);
} else if (code === "EPERM" || code === "ERR_FAILED") {
return new Compound("permission_error",
["open", "source_sink", url]);
} else {
return new Compound("resource_error",
["remote_error"]);
}
}
function test_os_stream_flags(args) {
let obj = deref(exec_build(args[0]));
let flags;
if (obj instanceof Source) {
flags = obj.flags;
} else {
check_sink(obj);
flags = 0;
}
return exec_unify(args[1], flags);
}
function test_os_read_promise(args) {
let stream = deref(exec_build(args[0]));
let buf = ctx;
return exec_unify(args[1], stream.receive(buf, stream));
}
function file_read_promise(buf, stream) {
return new Promise(resolve => {
fs.readFile(stream.data, "utf8", (err, res) => {
if (err === null) {
stream.buf = res;
stream.pos = 0;
} else {
register_signal(buf, map_stream_error(err));
}
resolve();
});
});
}
function http_read_promise(buf, stream) {
return stream.data.read().then(response => {
let { done, value } = response;
let res;
if (done) {
res = "";
} else {
let decoder = new TextDecoder("utf8");
res = decoder.decode(value);
}
stream.buf = res;
stream.pos = 0;
}, err => {
register_signal(buf, map_stream_error(err));
});
}
function map_stream_error(err) {
let code = err.code;
if (code === "ETIMEDOUT") {
return new Compound("resource_error",
["socket_timeout"]);
} else if (code === "ECONNRESET") {
return new Compound("resource_error",
["remote_error"]);
} else {
return new Compound("resource_error",
["io_error"]);
}
}
function test_os_close_promise(args) {
let stream = deref(exec_build(args[0]));
let buf = ctx;
return exec_unify(args[1], stream.release(buf, stream));
}
function file_close_promise(buf, stream) {
return new Promise(resolve => {
fs.close(stream.data, (err) => {
if (err === null) {
/* */
} else {
register_signal(buf, map_stream_error(err));
}
resolve();
});
});
}
function http_close_promise(buf, stream) {
return stream.data.cancel();
}
function test_os_open_sync(args) {
let url = deref(exec_build(args[0]));
check_atom(url);
let mode = deref(exec_build(args[1]));
check_atom(mode);
let stream;
if ("read" === mode) {
throw make_error(new Compound("resource_error",
["not_implemented"]));
} else if ("write" === mode) {
stream = open_write(url, "w");
} else if ("append" === mode) {
stream = open_write(url, "a");
} else {
throw make_error(new Compound("domain_error",
["io_mode", mode]));
}
return exec_unify(args[2], stream);
}
function open_write(url, mode) {
if (fs !== undefined) {
let file;
try {
file = fs.openSync(url, mode);
} catch (err) {
throw make_error(map_file_error(err, url));
}
let dst = new Sink();
dst.data = file;
dst.send = file_write;
dst.release = file_close;
return dst;
} else {
throw make_error(new Compound("resource_error", ["io_exception"]));
}
}
function file_write(data, buf) {
try {
fs.writeSync(data, buf);
} catch (err) {
throw make_error(map_stream_error(err));
}
}
function file_close(data) {
try {
fs.closeSync(data);
} catch (err) {
throw make_error(map_stream_error(err));
}
}
function test_flush_output(args) {
let stream = deref(exec_build(args[0]));
check_sink(stream);
stream_flush(stream);
return true;
}
function stream_flush(stream) {
flush_buffer(stream);
stream.notify(stream.data);
}
function test_os_close_sync(args) {
let stream = deref(exec_build(args[0]));
if (stream instanceof Sink) {
/* */
} else {
check_source(stream);
}
stream_close(stream);
return true;
}
function stream_close(stream) {
if (stream instanceof Sink) {
flush_buffer(stream);
stream.release(stream.data);
} else {
stream.release(stream.data);
}
}
function test_os_prop_promise(args) {
let url = deref(exec_build(args[0]));
check_atom(url);
let res = {};
if (!exec_unify(args[1], res))
return false;
let buf = ctx;
let prom;
if (fs !== undefined) {
if (url.startsWith("http:") || url.startsWith("https:")) {
prom = prop_http_promise(buf, url, res);
} else {
prom = prop_file_promise(buf, url, res);
}
} else {
try {
url = new URL(url, codebase).href;
} catch (err) {
throw make_error(
new Compound("resource_error", ["base_url"]));
}
prom = prop_http_promise(buf, url, res);
}
return exec_unify(args[2], prom);
}
function prop_http_promise(buf, url, res) {
let paras = {};
paras.method = "HEAD";
let contr = new AbortController();
paras.signal = contr.signal;
register_interrupt(buf, () => contr.abort("ABORT"));
return fetch(url, paras).then(response => {
register_interrupt(buf, () => {});
if (response.status !== 200) {
register_signal(buf, map_http_result(response.status, url));
} else {
let mtime = response.headers.get("Last-Modified");
res.last_modified = norm_smallint(mtime !== null ? new Date(mtime).getTime() : -1);
res.real_path = response.url;
res.type = "regular";
}
}, err => {
register_interrupt(buf, () => {});
if ("ABORT" !== err)
register_signal(buf, map_file_error(err, url));
});
}
function map_http_result(res, url) {
switch (res) {
case 403: // Forbidden
return new Compound("permission_error",
["open", "source_sink", url]);
case 404: // Not Found
return new Compound("existence_error",
["source_sink", url]);
case 405: // Method Not Allowed
return new Compound("resource_error",
["illegal_method"]);
default:
return new Compound("resource_error",
["io_exception"]);
}
}
function prop_file_promise(buf, url, res) {
return new Promise(resolve => {
fs.realpath(url, (err, rpath) => {
if (err === null) {
fs.lstat(rpath, (err, stats) => {
if (err === null) {
let mtime = Math.round(stats.mtimeMs);
let ftype = (stats.isFile() ? "regular" : (stats.isDirectory() ? "directory" : "other"));
res.last_modified = norm_smallint(mtime);
res.real_path = rpath;
res.type = ftype;
} else {
register_signal(buf, map_file_error(err, url));
}
resolve();
});
} else {
register_signal(buf, map_file_error(err, url));
resolve();
}
});
});
}
function test_set_file_property(args) {
let url = deref(exec_build(args[0]));
check_atom(url);
if (fs === undefined)
throw make_error(new Compound("permission_error", ["access", "source_sink", url]));
let prop = deref(exec_build(args[1]));
if (is_compound(prop) &&
prop.functor === "last_modified" &&
prop.args.length === 1) {
let val2 = deref(prop.args[0]);
check_integer(val2);
if (val2 < 0)
throw make_error(new Compound("domain_error",
["not_less_than_zero", val2]));
val2 = narrow_float(val2);
try {
let val = Math.round(fs.lstatSync(url).atimeMs);
fs.lutimesSync(url, new Date(val), new Date(val2));
} catch (err) {
throw make_error(map_file_error(err, url));
}
} else {
check_nonvar(prop);
prop = copy_term(prop);
throw make_error(new Compound("domain_error", ["prolog_property", prop]));
}
return true;
}
function test_ir_place_new(args) {
let alpha = deref(exec_build(args[0]));
check_integer(alpha);
alpha = new Place(alpha);
return exec_unify(args[1], new Quote(alpha));
}
function test_ir_skeleton_new(args) {
let alpha = deref(exec_build(args[0]));
let beta = deref(exec_build(args[1]));
beta = list_objects(beta);
unquote_objects(beta);
alpha = new Skeleton(alpha, beta);
return exec_unify(args[2], new Quote(alpha));
}
function test_ir_is_site(args) {
let cache = deref(exec_build(args[0]));
return is_cache(cache);
}
function test_ir_pred_site(args) {
let name = deref(exec_build(args[0]));
check_atom(name);
return exec_unify(args[1], new Cache(name));
}
function test_ir_site_name(args) {
let cache = deref(exec_build(args[0]));
check_cache(cache);
return exec_unify(args[1], cache.name);
}
function check_cache(beta) {
if (!is_cache(beta)) {
check_nonvar(beta);
beta = copy_term(beta);
throw make_error(new Compound("type_error",
["cache", beta]));
}
}
function test_ir_clause_new(args) {
let alpha = deref(exec_build(args[0]));
check_integer(alpha);
let beta = deref(exec_build(args[1]));
beta = list_objects(beta);
let gamma = deref(exec_build(args[2]));
gamma = list_objects(gamma);
let delta = deref(exec_build(args[3]));
check_integer(delta);
let mue = deref(exec_build(args[4]));
if (is_compound(mue) && mue.functor === "just" && mue.args.length === 1) {
mue = deref(mue.args[0]);
} else {
mue = undefined;
}
unquote_objects(beta);
unquote_objects(gamma);
return exec_unify(args[5], new Clause(alpha, beta, gamma, delta, mue));
}
function test_ir_clause_add(args) {
let functor = deref(exec_build(args[0]));
check_atom(functor);
let arity = deref(exec_build(args[1]));
check_integer(arity);
let gamma = deref(exec_build(args[2]));
let flags = deref(exec_build(args[3]));
check_integer(flags);
add_clause(functor, arity, gamma, flags);
return true;
}
function test_ir_goal_new(args) {
let alpha = deref(exec_build(args[0]));
check_integer(alpha);
let beta = deref(exec_build(args[1]));
beta = list_objects(beta);
unquote_objects(beta);
return exec_unify(args[2], new Goal(alpha, beta));
}
function special_ir_goal_run(args) {
let goal = deref(args[0]);
check_goal(goal);
let snap = snap_setup();
cont(melt_directive(goal));
return solve_run(snap, true, null);
}
function solve_run(snap,found,choice) {
try {
found = solve(snap, found);
} catch (x) {
snap_cleanup(snap);
throw x;
}
if (found === false)
throw make_error(new Compound("syntax_error", ["directive_failed"]));
if (found !== true) {
if (redo !== snap) {
if (choice === null) {
choice = new Choice(solve_run, snap, false, trail);
} else {
choice.mark = trail;
choice.cont = call;
choice.tail = redo;
}
more(choice);
} else {
cut(snap.tail);
}
return found;
}
snap_cleanup(snap);
cont(call.args[1]);
return true;
}
const MASK_FIND_MODIFY = 0x00000001;
const MASK_FIND_DYNAMIC = 0x00000002;
const MASK_FIND_REVERSE = 0x00000004;
function special_kb_clause_ref(args) {
let head = deref(args[0]);
let flags = deref(args[1]);
check_integer(flags);
let peek = lookup_pred(head);
if (peek === undefined)
return false;
if ((flags & MASK_FIND_DYNAMIC) !== 0)
if ((peek.flags & MASK_PRED_DYNAMIC) === 0)
make_error_find(head, flags);
if (!is_logical(peek.rope))
return false;
if (is_compound(head)) {
head = head.args;
} else {
head = VOID_ARGS;
}
peek = defined_clauses(peek, head);
peek = snapshot_data(peek);
if ((flags & MASK_FIND_REVERSE) === 0) {
return solve2_ref(args, peek, 0, null);
} else {
return solve2_ref_reverse(args, peek, peek.length, null);
}
}
function make_error_find(head, flags) {
if ((flags & MASK_FIND_MODIFY) !== 0) {
throw make_error(new Compound("permission_error",
["modify", "static_procedure", make_indicator_term(head)]));
} else {
throw make_error(new Compound("permission_error",
["access", "private_procedure", make_indicator_term(head)]));
}
}
function solve_ref(rope, at, choice) {
let goal = deref(call.args[0]);
return solve2_ref(goal.args, rope, at, choice);
}
function solve_ref_reverse(rope, at, choice) {
let goal = deref(call.args[0]);
return solve2_ref_reverse(goal.args, rope, at, choice);
}
function solve2_ref(args, rope, at, choice) {
let mark = trail;
while (at < rope.length) {
let clause = rope[at++];
if (unify(args[2], clause)) {
if (at < rope.length) {
if (choice === null) {
choice = new Choice(solve_ref, rope, at, mark);
} else {
choice.at = at;
}
more(choice);
}
cont(call.args[1]);
return true;
}
unbind(mark);
}
return false;
}
function solve2_ref_reverse(args, rope, at, choice) {
let mark = trail;
while (at > 0) {
let clause = rope[--at];
if (unify(args[2], clause)) {
if (at > 0) {
if (choice === null) {
choice = new Choice(solve_ref_reverse, rope, at, mark);
} else {
choice.at = at;
}
more(choice);
}
cont(call.args[1]);
return true;
}
unbind(mark);
}
return false;
}
function test_kb_pred_touch(args) {
let functor = deref(exec_build(args[0]));
check_atom(functor);
let arity = deref(exec_build(args[1]));
check_integer(arity);
let flags = deref(exec_build(args[2]));
check_integer(flags);
pred_touch(functor, arity, flags);
return true;
}
function test_kb_clause_remove(args) {
let functor = deref(exec_build(args[0]));
check_atom(functor);
let arity = deref(exec_build(args[1]));
check_integer(arity);
let flags = deref(exec_build(args[2]));
check_integer(flags);
let clause = deref(exec_build(args[3]));
check_clause(clause);
return remove_clause(functor, arity, clause, flags);
}
function check_clause(beta) {
if (!(beta instanceof Clause)) {
check_nonvar(beta);
beta = copy_term(beta);
throw make_error(new Compound("type_error", ["clause", beta]));
}
}
function test_kb_pred_destroy(args) {
let functor = deref(exec_build(args[0]));
check_atom(functor);
let arity = deref(exec_build(args[1]));
check_integer(arity);
pred_destroy(functor, arity);
return true;
}
function test_kb_make_defined(args) {
let alpha = deref(exec_build(args[0]));
alpha = list_objects(alpha);
return exec_unify(args[1], make_defined(alpha));
}
function test_kb_is_link(args) {
let peek = deref(exec_build(args[0]));
return is_provable(peek);
}
function test_kb_pred_link(args) {
let functor = deref(exec_build(args[0]));
check_atom(functor);
let arity = deref(exec_build(args[1]));
check_integer(arity);
let peek = pred_link(functor, arity);
if (peek === undefined)
return false;
return exec_unify(args[2], peek);
}
function test_kb_link_flags(args) {
let peek = deref(exec_build(args[0]));
check_provable(peek);
return exec_unify(args[1], peek.flags);
}
function check_provable(beta) {
if (!is_provable(beta)) {
check_nonvar(beta);
beta = copy_term(beta);
throw make_error(new Compound("type_error",
["provable", beta]));
}
}
function test_kb_pred_list(args) {
let res = kb_pred_list();
return exec_unify(args[0], res);
}
function kb_pred_list() {
let back = null;
let res = null;
for (let functor in kb) {
let temp = kb[functor];
for (let i = 0; i < temp.length; i++) {
let peek = temp[i]
if (peek === undefined || peek.remover !== undefined)
continue;
peek = new Compound(".", [make_indicator(functor, i), undefined]);
if (back === null) {
res = peek;
} else {
back.args[1] = peek;
}
back = peek;
}
}
if (back === null) {
res = "[]";
} else {
back.args[1] = "[]";
}
return res;
}
function test_kb_clause_creator(args) {
let clause = deref(exec_build(args[0]));
check_clause(clause);
return exec_unify(args[1], norm_smallint(clause.creator));
}
function test_kb_clause_shard(args) {
let clause = deref(exec_build(args[0]));
check_clause(clause);
return exec_unify(args[1], clause.shard);
}
function special_kb_clause_head(args) {
let clause = deref(args[0]);
check_clause(clause);
let head = deref(args[1]);
let display;
if (clause.size !== 0) {
display = new Array(clause.size);
} else {
display = null;
}
if (is_compound(head) &&
!exec_head(clause.head, display, head.args))
return false;
cont(call.args[1]);
return true;
}
function special_kb_clause_data(args) {
let clause = deref(args[0]);
check_clause(clause);
let head = deref(args[1]);
let display;
if (clause.size !== 0) {
display = new Array(clause.size);
} else {
display = null;
}
if (is_compound(head) &&
!exec_head(clause.head, display, head.args))
return false;
let temp;
let peek = clause.cutvar;
if (peek !== -1) {
temp = new Variable();
display[peek] = temp;
temp = new Compound("just", [temp]);
} else {
temp = "nothing";
}
if (!unify(args[2], temp))
return false;
temp = exec_body(clause.body, display);
if (!unify(args[3], temp))
return false;
cont(call.args[1]);
return true;
}
function test_dg_date_now(args) {
return exec_unify(args[0], norm_smallint(Date.now()));
}
function test_dg_real_time(args) {
return exec_unify(args[0], norm_smallint(real_time()));
}
function test_dg_gc_time(args) {
return exec_unify(args[0], norm_smallint(gc_time));
}
function test_dg_call_count(args) {
return exec_unify(args[0], norm_smallint(gc_enter));
}
function test_dg_gc_flags(args) {
return exec_unify(args[0], norm_smallint(gc_flags));
}
function test_dg_var_serno(args) {
let obj = deref(exec_build(args[0]));
check_var(obj);
return exec_unify(args[1], norm_smallint(obj.flags & ~VAR_MASK_STATE));
}
function test_dg_clear_stage(args) {
clear();
return true;
}
function test_dg_get_stage(args) {
return exec_unify(args[0], norm_smallint(stage));
}
function test_dg_set_stage(args) {
let value = deref(exec_build(args[0]));
check_integer(value);
set_stage(narrow_float(value));
return true;
}
function test_dg_get_partition(args) {
return exec_unify(args[0], engine.partition);
}
function test_dg_set_partition(args) {
let value = deref(exec_build(args[0]));
check_atom(value);
set_partition(value);
return true;
}
function test_os_stream_list(args) {
let stream = deref(exec_build(args[0]));
stream = os_stream_list(stream);
return exec_unify(args[1], stream);
}
function os_stream_list(stream) {
let res
if (stream instanceof Sink) {
res = "[]";
} else {
check_source(stream);
res = "[]";
let value = new Compound("line_no", [norm_smallint(stream.lineno)]);
res = new Compound(".", [value, res]);
}
return res;
}
function test_os_get_workdir(args) {
let url;
if (fs !== undefined) {
url = process.cwd()+path.sep;
} else {
url = codebase;
}
return exec_unify(args[0], url);
}
function test_os_set_workdir(args) {
let url = deref(exec_build(args[0]));
check_atom(url);
if (fs !== undefined) {
try {
process.chdir(url);
} catch (err) {
throw make_error(map_file_error(err, url));
}
} else {
try {
url = new URL(url, codebase).href;
} catch (err) {
throw make_error(new Compound("resource_error", ["base_url"]));
}
codebase = url;
}
return true;
}
function test_os_get_libpath(args) {
return exec_unify(args[0], bootbase);
}
function test_os_get_natext(args) {
return exec_unify(args[0], ".mjs");
}
function test_os_call_later(args) {
let goal = deref(exec_build(args[0]));
check_goal(goal);
let delay = deref(exec_build(args[1]));
check_integer(delay);
delay = narrow_float(delay);
let buf = ctx;
let tid = setDelay(() => {launch(goal, buf, VOID_ARGS)}, delay);
return exec_unify(args[2], tid);
}
function check_goal(beta) {
if (!(beta instanceof Goal)) {
check_nonvar(beta);
beta = copy_term(beta);
throw make_error(new Compound("type_error", ["goal", beta]));
}
}
function test_os_call_cancel(args) {
let tid = deref(exec_build(args[0]));
clearTimeout(tid);
return true;
}
function test_os_task_current(args) {
return exec_unify(args[0], ctx);
}
function test_os_task_abort(args) {
let buf = deref(exec_build(args[0]));
let msg = exec_build(args[1]);
msg = copy_term(msg);
register_signal(buf, msg);
invoke_interrupt(buf);
return true;
}
function test_os_task_create(args) {
let goal = deref(exec_build(args[0]));
check_goal(goal);
let buf = new Context();
buf.engine.text_output = engine.text_output;
buf.engine.text_error = engine.text_error;
buf.engine.text_input = engine.text_input;
setDelay(async () => { await launch_async(goal, buf, VOID_ARGS) }, 0);
return exec_unify(args[1], buf);
}
function test_os_host_info(args) {
let version;
if (fs !== undefined) {
version = process.versions.node;
} else {
version = "0.0.0";
}
let st = version.split('.');
let res = new Array(3);
for (let i = 0; i < res.length; i++)
res[i] = Number.parseInt(st[i]);
let value = new Compound("javascript", res);
return exec_unify(args[0], value);
}
function fiddle_out(data, buf) {
data.insertAdjacentText("beforeend", buf);
}
function fiddle_err(data, buf) {
data.insertAdjacentHTML("beforeend", "<span style='color: #A52A2A'></span>");
data.lastElementChild.insertAdjacentText("beforeend", buf);
}
// stream specials, output
add("current_output", 1, make_check(test_current_output));
add("current_error", 1, make_check(test_current_error));
add("set_output", 1, make_check(test_set_output));
add("set_error", 1, make_check(test_set_error));
add("put_code", 2, make_check(test_put_code));
add("current_lastcode", 2, make_check(test_current_lastcode));
add("set_lastcode", 2, make_check(test_set_lastcode));
add("put_atom", 2, make_check(test_put_atom));
// stream specials, input
add("current_input", 1, make_check(test_current_input));
add("set_input", 1, make_check(test_set_input));
add("os_read_sync", 1, make_check(test_os_read_sync));
add("os_get_code", 2, make_check(test_os_get_code));
add("os_peek_code", 2, make_check(test_os_peek_code));
add("os_open_promise", 3, make_check(test_os_open_promise));
add("os_stream_flags", 2, make_check(test_os_stream_flags));
add("os_read_promise", 2, make_check(test_os_read_promise));
add("os_close_promise", 2, make_check(test_os_close_promise));
// stream specials, files
add("os_open_sync", 3, make_check(test_os_open_sync));
add("flush_output", 1, make_check(test_flush_output));
add("os_close_sync", 1, make_check(test_os_close_sync));
add("os_prop_promise", 3, make_check(test_os_prop_promise));
add("set_file_property", 2, make_check(test_set_file_property));
// intermediate representation, Albufeira code
add("ir_place_new", 2, make_check(test_ir_place_new));
add("ir_skeleton_new", 3, make_check(test_ir_skeleton_new));
add("ir_is_site", 1, make_check(test_ir_is_site));
add("ir_pred_site", 2, make_check(test_ir_pred_site));
add("ir_site_name", 2, make_check(test_ir_site_name));
// intermediate representation specials, consult text, internal only
add("ir_clause_new", 6, make_check(test_ir_clause_new));
add("ir_clause_add", 4, make_check(test_ir_clause_add));
add("ir_goal_new", 3, make_check(test_ir_goal_new));
add("ir_goal_run", 1, make_special(special_ir_goal_run));
// knowledge base specials, dynamic database, internal only
add("kb_clause_ref", 3, make_special(special_kb_clause_ref));
add("kb_pred_touch", 3, make_check(test_kb_pred_touch));
add("kb_clause_remove", 4, make_check(test_kb_clause_remove));
add("kb_pred_destroy", 2, make_check(test_kb_pred_destroy));
// knowledge base specials, linked provables, internal only
add("kb_make_defined", 2, make_check(test_kb_make_defined));
add("kb_is_link", 1, make_check(test_kb_is_link));
add("kb_pred_link", 3, make_check(test_kb_pred_link));
add("kb_link_flags", 2, make_check(test_kb_link_flags));
// knowledge base specials, meta data, internal only
add("kb_pred_list", 1, make_check(test_kb_pred_list));
add("kb_clause_creator", 2, make_check(test_kb_clause_creator));
add("kb_clause_shard", 2, make_check(test_kb_clause_shard));
add("kb_clause_head", 2, make_special(special_kb_clause_head));
add("kb_clause_data", 4, make_special(special_kb_clause_data));
// system specials, statistics, internal only
add("dg_date_now", 1, make_check(test_dg_date_now));
add("dg_real_time", 1, make_check(test_dg_real_time));
add("dg_gc_time", 1, make_check(test_dg_gc_time));
add("dg_call_count", 1, make_check(test_dg_call_count));
add("dg_gc_flags", 1, make_check(test_dg_gc_flags));
add("dg_var_serno", 2, make_check(test_dg_var_serno));
// system specials, staging, internal only
add("dg_clear_stage", 0, make_check(test_dg_clear_stage));
add("dg_get_stage", 1, make_check(test_dg_get_stage));
add("dg_set_stage", 1, make_check(test_dg_set_stage));
add("dg_get_partition", 1, make_check(test_dg_get_partition));
add("dg_set_partition", 1, make_check(test_dg_set_partition));
// system specials, operating, internal only
add("os_stream_list", 2, make_check(test_os_stream_list));
add("os_get_workdir", 1, make_check(test_os_get_workdir));
add("os_set_workdir", 1, make_check(test_os_set_workdir));
add("os_get_libpath", 1, make_check(test_os_get_libpath));
add("os_get_natext", 1, make_check(test_os_get_natext));
// system specials, coroutines, internal only
add("os_call_later", 3, make_check(test_os_call_later));
add("os_call_cancel", 1, make_check(test_os_call_cancel));
add("os_task_current", 1, make_check(test_os_task_current));
add("os_task_abort", 2, make_check(test_os_task_abort));
add("os_task_create", 2, make_check(test_os_task_create));
// system specials, natlib, internal only
add("os_host_info", 1, make_check(test_os_host_info));
add("sys_trans_horn", 2, new Clause(1, [new Place(-2), new Place(-1)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("sys_trans_horn", 2, new Clause(3, [new Skeleton(":-", [new Place(-3)]), new Skeleton("tr_goal", [new Place(-4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_trans_body"), [new Place(1), "nothing", new Place(-3), new Place(-2), "[]"]), new Skeleton(new Cache("sys_trans_mark"), [new Place(1), new Place(2), new Place(0)])], 0, ":-"));
add("sys_trans_horn", 2, new Clause(5, [new Skeleton(":-", [new Place(-3), new Place(-4)]), new Skeleton("tr_clause", [new Place(-5), new Place(1), new Place(-6)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_check_callable"), [new Place(1)]), new Skeleton(new Cache("sys_trans_body"), [new Place(2), "nothing", new Place(3), new Place(4), "[]"])], 0, ":-"));
add("sys_trans_horn", 2, new Clause(1, [new Place(-2), new Skeleton("tr_clause", ["nothing", new Place(0), "[]"])], [new Skeleton(new Cache("sys_check_callable"), [new Place(0)])], -1, undefined));
add("sys_trans_body", 5, new Clause(4, [new Place(-3), new Place(-4), new Place(2), new Place(-4), new Place(-5)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("="), [new Place(2), new Skeleton(".", [new Skeleton("call", [new Place(1)]), new Place(3)])])], 0, undefined));
add("sys_trans_body", 5, new Clause(3, ["true", new Place(-3), new Place(1), new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, "true"));
add("sys_trans_body", 5, new Clause(7, [new Skeleton(",", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6), new Place(-7), new Place(-8)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(5), new Place(-7)]), new Skeleton(new Cache("sys_trans_body"), [new Place(1), new Place(3), new Place(-5), new Place(5), new Place(-7)]), new Skeleton(new Cache("sys_trans_body"), [new Place(2), new Place(3), new Place(4), new Place(5), new Place(6)])], 0, ","));
add("sys_trans_body", 5, new Clause(7, [new Skeleton(";", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6), new Place(-7), new Place(-8)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(5), new Place(-7)]), new Skeleton(new Cache("sys_trans_disj"), [new Skeleton(";", [new Place(1), new Place(2)]), 0, new Place(3), new Place(4), new Place(-6)]), new Skeleton(new Cache("="), [new Place(5), new Place(-7)]), new Skeleton(new Cache("="), [new Place(5), new Skeleton(".", [new Skeleton("$ALT", [new Place(4)]), new Place(6)])])], 0, ";"));
add("sys_trans_body", 5, new Clause(7, [new Skeleton("->", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6), new Place(-7), new Place(-8)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(5), new Place(-7)]), new Skeleton(new Cache("sys_trans_disj"), [new Skeleton("->", [new Place(1), new Place(2)]), 0, new Place(3), new Place(4), new Place(-6)]), new Skeleton(new Cache("="), [new Place(5), new Place(-7)]), new Skeleton(new Cache("="), [new Place(5), new Skeleton(".", [new Skeleton("$ALT", [new Place(4)]), new Place(6)])])], 0, "->"));
add("sys_trans_body", 5, new Clause(5, ["!", new Place(-3), new Skeleton("just", [new Place(-4)]), new Place(-5), new Place(-6)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_trans_cut"), [new Place(1), new Place(2)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("="), [new Place(3), new Skeleton(".", [new Skeleton("$CUT", [new Place(2)]), new Place(4)])])], 0, "!"));
add("sys_trans_body", 5, new Clause(3, [new Place(-2), new Place(-3), new Place(1), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_check_callable"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("="), [new Place(1), new Skeleton(".", [new Place(0), new Place(2)])])], -1, undefined));
add("sys_trans_cut", 2, new Clause(1, ["nothing", new Place(-1)], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "nothing"));
add("sys_trans_cut", 2, new Clause(1, [new Skeleton("just", [new Place(-2)]), new Place(0)], [], -1, "just"));
add("sys_trans_disj", 5, new Clause(5, [new Place(-3), new Place(-1), new Place(-4), new Place(-5), new Skeleton(".", [new Place(-6), "[]"])], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_trans_alternative"), [new Place(1), new Place(2), new Place(3), new Place(4), new Place(-1)])], 0, undefined));
add("sys_trans_disj", 5, new Clause(7, [new Skeleton(";", [new Place(-3), new Place(-4)]), new Place(-1), new Place(-5), new Place(-6), new Skeleton(".", [new Place(-7), new Place(-8)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_trans_alternative"), [new Place(1), new Place(3), new Place(-5), new Place(5), new Place(-7)]), new Skeleton(new Cache("sys_trans_disj"), [new Place(2), new Place(5), new Place(3), new Place(4), new Place(6)])], 0, ";"));
add("sys_trans_disj", 5, new Clause(2, ["fail", 1, new Place(-3), new Place(1), "[]"], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "fail"));
add("sys_trans_disj", 5, new Clause(4, [new Place(-2), new Place(-1), new Place(-3), new Place(-4), new Skeleton(".", [new Place(-5), "[]"])], [new Skeleton(new Cache("sys_trans_alternative"), [new Place(0), new Place(1), new Place(2), new Place(3), new Place(-1)])], -1, undefined));
add("sys_trans_alternative", 5, new Clause(5, [new Place(-3), new Place(-4), new Place(-5), new Skeleton("$SEQ", ["nothing", new Place(-6)]), 0], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_trans_body"), [new Place(1), new Place(2), new Place(3), new Place(4), "[]"])], 0, undefined));
add("sys_trans_alternative", 5, new Clause(7, [new Skeleton("->", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6), new Skeleton("$SEQ", [new Skeleton("just", [new Place(-7)]), new Place(-8)]), 1], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_trans_body"), [new Place(1), "nothing", new Place(-3), new Place(-2), new Skeleton(".", [new Skeleton("$CUT", [new Place(5)]), new Place(-7)])]), new Skeleton(new Cache("sys_trans_body"), [new Place(2), new Place(3), new Place(4), new Place(5), "[]"]), new Skeleton(new Cache("sys_trans_mark"), [new Place(1), new Place(6), new Place(0)])], 0, "->"));
add("sys_trans_alternative", 5, new Clause(4, [new Place(-2), new Place(-3), new Place(-4), new Skeleton("$SEQ", ["nothing", new Place(-5)]), 0], [new Skeleton(new Cache("sys_trans_body"), [new Place(0), new Place(1), new Place(2), new Place(3), "[]"])], -1, undefined));
add("sys_trans_mark", 3, new Clause(2, [new Skeleton("just", [new Place(-3)]), new Skeleton(".", [new Skeleton("$MARK", [new Place(1)]), new Place(-3)]), new Place(1)], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "just"));
add("sys_trans_mark", 3, new Clause(1, ["nothing", new Place(-2), new Place(0)], [], -1, "nothing"));
add("sys_encode_horn", 3, new Clause(4, [new Skeleton("tr_goal", [new Place(-3)]), new Skeleton("ir_goal", [new Place(-4)]), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_ast_body"), [new Place(1), new Place(2), "[]", new Place(3), "[]", new Place(-1)])], 0, "tr_goal"));
add("sys_encode_horn", 3, new Clause(8, [new Skeleton("tr_clause", [new Skeleton("just", [new Place(-3)]), new Place(-4), new Place(-5)]), new Skeleton("ir_clause", [new Place(-6), new Place(-7), 0, new Place(-8)]), new Place(-9)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("=.."), [new Place(2), new Skeleton(".", [new Place(-1), new Place(-2)])]), new Skeleton(new Cache("sys_ast_list"), [new Place(0), new Place(4), new Skeleton(".", [new Skeleton("v", [new Place(1), 0, new Place(-1)]), "[]"]), new Place(-6)]), new Skeleton(new Cache("sys_ast_body"), [new Place(3), new Place(5), new Skeleton(".", [new Skeleton("-", [new Place(2), new Place(1)]), "[]"]), new Place(7), new Place(4), new Place(-1)]), new Skeleton(new Cache("sys_idx_value"), [new Place(3), new Place(2), new Place(7), new Place(6)])], 0, "tr_clause"));
add("sys_encode_horn", 3, new Clause(7, [new Skeleton("tr_clause", ["nothing", new Place(-2), new Place(-3)]), new Skeleton("ir_clause", [new Place(-4), new Place(-5), -1, new Place(-6)]), new Place(-7)], [new Skeleton(new Cache("=.."), [new Place(0), new Skeleton(".", [new Place(-1), new Place(-8)])]), new Skeleton(new Cache("sys_ast_list"), [new Place(6), new Place(2), "[]", new Place(-4)]), new Skeleton(new Cache("sys_ast_body"), [new Place(1), new Place(3), new Skeleton(".", [new Place(0), "[]"]), new Place(5), new Place(2), new Place(-1)]), new Skeleton(new Cache("sys_idx_value"), [new Place(1), new Place(0), new Place(5), new Place(4)])], -1, "tr_clause"));
add("sys_encode_alternatives", 4, new Clause(8, [new Skeleton(".", [new Skeleton("$SEQ", [new Place(-3), new Place(-4)]), new Place(-5)]), new Place(-6), new Skeleton(".", [new Place(-7), new Place(-8)]), new Place(-9)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_encode_horn"), [new Skeleton("tr_clause", [new Place(1), new Place(4), new Place(2)]), new Place(5), new Place(7)]), new Skeleton(new Cache("sys_encode_alternatives"), [new Place(3), new Place(4), new Place(6), new Place(7)])], 0, "."));
add("sys_encode_alternatives", 4, new Clause(0, ["[]", new Place(-1), "[]", new Place(-1)], [], -1, "[]"));
add("sys_ast_body", 6, new Clause(8, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Skeleton(".", [new Place(-4), new Place(-5)]), new Place(-6), new Place(-7), new Place(-8), new Place(-9)], [new Skeleton(new Cache("sys_ast_goal"), [new Place(0), new Place(5), new Place(2), new Place(1), new Place(4), new Place(6), new Place(-8)]), new Skeleton(new Cache("sys_ast_body"), [new Place(1), new Place(3), new Skeleton(".", [new Place(0), new Place(4)]), new Place(5), new Place(6), new Place(7)])], -1, "."));
add("sys_ast_body", 6, new Clause(2, ["[]", "[]", new Place(-1), new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, "[]"));
add("sys_ast_goal", 7, new Clause(5, [new Skeleton("call", [new Place(-3)]), 1, new Place(-4), new Place(-1), new Place(-1), new Place(-5), new Place(-6)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_ast_term"), [new Place(1), new Place(2), new Place(3), new Place(4)])], 0, "call"));
add("sys_ast_goal", 7, new Clause(7, [new Skeleton("$ALT", [new Place(-3)]), 1, new Place(-4), new Place(-5), new Place(-6), new Place(-7), new Place(-8)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(5), new Place(-7)]), new Skeleton(new Cache("term_variables"), [new Skeleton("-", [new Place(3), new Place(4)]), new Place(-6)]), new Skeleton(new Cache("term_variables"), [new Place(1), new Place(-5)]), new Skeleton(new Cache("eq_intersection"), [new Place(3), new Place(4), new Place(-6)]), new Skeleton(new Cache("=.."), [new Place(-5), new Skeleton(".", ["", new Place(4)])]), new Skeleton(new Cache("sys_encode_alternatives"), [new Place(1), new Place(3), new Place(-3), 1]), new Skeleton(new Cache("="), [new Place(5), new Place(-7)]), new Skeleton(new Cache("sys_ast_invoke"), [new Place(3), new Place(2), new Skeleton("link", [new Place(1)]), new Place(5), new Place(6)])], 0, "$ALT"));
add("sys_ast_goal", 7, new Clause(6, [new Skeleton("is", [new Place(-3), new Place(-4)]), 1, new Place(-5), new Place(-1), new Place(-1), new Place(-6), new Place(-7)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_ast_expr"), [new Place(2), new Place(-4), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_ast_term"), [new Place(1), new Place(-3), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_const_functor"), [new Compound("site", ["$EVAL"]), new Skeleton(".", [new Place(2), new Skeleton(".", [new Place(1), "[]"])]), new Place(3)]), new Skeleton(new Cache("="), [new Place(4), new Place(5)])], 0, "is"));
add("sys_ast_goal", 7, new Clause(6, [new Skeleton("=:=", [new Place(-3), new Place(-4)]), 1, new Place(-5), new Place(-1), new Place(-1), new Place(-6), new Place(-7)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_ast_expr"), [new Place(1), new Place(-3), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_ast_expr"), [new Place(2), new Place(-4), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_const_functor"), [new Compound("site", ["=:="]), new Skeleton(".", [new Place(1), new Skeleton(".", [new Place(2), "[]"])]), new Place(3)]), new Skeleton(new Cache("="), [new Place(4), new Place(5)])], 0, "=:="));
add("sys_ast_goal", 7, new Clause(6, [new Skeleton("=\\=", [new Place(-3), new Place(-4)]), 1, new Place(-5), new Place(-1), new Place(-1), new Place(-6), new Place(-7)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_ast_expr"), [new Place(1), new Place(-3), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_ast_expr"), [new Place(2), new Place(-4), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_const_functor"), [new Compound("site", ["=\\="]), new Skeleton(".", [new Place(1), new Skeleton(".", [new Place(2), "[]"])]), new Place(3)]), new Skeleton(new Cache("="), [new Place(4), new Place(5)])], 0, "=\\="));
add("sys_ast_goal", 7, new Clause(6, [new Skeleton("<", [new Place(-3), new Place(-4)]), 1, new Place(-5), new Place(-1), new Place(-1), new Place(-6), new Place(-7)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_ast_expr"), [new Place(1), new Place(-3), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_ast_expr"), [new Place(2), new Place(-4), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_const_functor"), [new Compound("site", ["<"]), new Skeleton(".", [new Place(1), new Skeleton(".", [new Place(2), "[]"])]), new Place(3)]), new Skeleton(new Cache("="), [new Place(4), new Place(5)])], 0, "<"));
add("sys_ast_goal", 7, new Clause(6, [new Skeleton(">", [new Place(-3), new Place(-4)]), 1, new Place(-5), new Place(-1), new Place(-1), new Place(-6), new Place(-7)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_ast_expr"), [new Place(1), new Place(-3), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_ast_expr"), [new Place(2), new Place(-4), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_const_functor"), [new Compound("site", [">"]), new Skeleton(".", [new Place(1), new Skeleton(".", [new Place(2), "[]"])]), new Place(3)]), new Skeleton(new Cache("="), [new Place(4), new Place(5)])], 0, ">"));
add("sys_ast_goal", 7, new Clause(6, [new Skeleton("=<", [new Place(-3), new Place(-4)]), 1, new Place(-5), new Place(-1), new Place(-1), new Place(-6), new Place(-7)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_ast_expr"), [new Place(1), new Place(-3), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_ast_expr"), [new Place(2), new Place(-4), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_const_functor"), [new Compound("site", ["=<"]), new Skeleton(".", [new Place(1), new Skeleton(".", [new Place(2), "[]"])]), new Place(3)]), new Skeleton(new Cache("="), [new Place(4), new Place(5)])], 0, "=<"));
add("sys_ast_goal", 7, new Clause(6, [new Skeleton(">=", [new Place(-3), new Place(-4)]), 1, new Place(-5), new Place(-1), new Place(-1), new Place(-6), new Place(-7)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_ast_expr"), [new Place(1), new Place(-3), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_ast_expr"), [new Place(2), new Place(-4), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_const_functor"), [new Compound("site", [">="]), new Skeleton(".", [new Place(1), new Skeleton(".", [new Place(2), "[]"])]), new Place(3)]), new Skeleton(new Cache("="), [new Place(4), new Place(5)])], 0, ">="));
add("sys_ast_goal", 7, new Clause(6, [new Place(-3), 1, new Place(-4), new Place(-1), new Place(-1), new Place(-5), new Place(-6)], [new Skeleton(new Cache("functor"), [new Place(1), new Place(-7), new Place(-1)]), new Skeleton(new Cache("atom"), [new Place(5)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_ast_invoke"), [new Place(1), new Place(2), new Skeleton("site", [new Place(5)]), new Place(3), new Place(4)])], 0, undefined));
add("sys_ast_goal", 7, new Clause(4, [new Place(-2), new Place(-1), new Place(-3), new Place(-1), new Place(-1), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_ast_term"), [new Place(0), new Place(1), new Place(2), new Place(3)])], -1, undefined));
add("sys_ast_invoke", 5, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("compound"), [new Place(1)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("functor"), [new Place(1), new Place(-1), new Place(-1)]), new Skeleton(new Cache("=.."), [new Place(1), new Skeleton(".", [new Place(-1), new Place(-3)])]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_ast_list"), [new Place(1), new Place(-3), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_const_functor"), [new Place(3), new Place(1), new Place(2)]), new Skeleton(new Cache("="), [new Place(4), new Place(5)])], 0, undefined));
add("sys_ast_invoke", 5, new Clause(2, [new Place(-1), new Skeleton("const", [new Place(-2)]), new Place(0), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined));
add("sys_ast_args", 4, new Clause(6, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Skeleton(".", [new Place(-4), new Place(-5)]), new Place(-6), new Place(-7)], [new Skeleton(new Cache("sys_ast_expr"), [new Place(0), new Place(2), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_ast_args"), [new Place(1), new Place(3), new Place(4), new Place(5)])], -1, "."));
add("sys_ast_args", 4, new Clause(2, ["[]", "[]", new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, "[]"));
add("sys_ast_expr", 4, new Clause(5, [new Place(-3), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_ast_var"), [new Place(1), new Place(2), new Place(3), new Place(4)])], 0, undefined));
add("sys_ast_expr", 4, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("functor"), [new Place(1), new Place(-7), new Place(-1)]), new Skeleton(new Cache("atom"), [new Place(5)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_ast_compute"), [new Place(1), new Place(2), new Skeleton("site", [new Place(5)]), new Place(3), new Place(4)])], 0, undefined));
add("sys_ast_expr", 4, new Clause(5, [new Place(-3), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("compound"), [new Place(1)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("functor"), [new Place(1), new Place(-2), new Place(-1)]), new Skeleton(new Cache("=.."), [new Place(1), new Skeleton(".", [new Place(-1), new Place(-3)])]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_ast_args"), [new Place(1), new Place(-3), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_const_functor"), [new Place(0), new Place(1), new Place(2)]), new Skeleton(new Cache("="), [new Place(3), new Place(4)])], 0, undefined));
add("sys_ast_expr", 4, new Clause(2, [new Place(-2), new Skeleton("const", [new Place(0)]), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined));
add("sys_ast_compute", 5, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("compound"), [new Place(1)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("functor"), [new Place(1), new Place(-1), new Place(-1)]), new Skeleton(new Cache("=.."), [new Place(1), new Skeleton(".", [new Place(-1), new Place(-3)])]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_ast_args"), [new Place(1), new Place(-3), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_const_functor"), [new Place(3), new Place(1), new Place(2)]), new Skeleton(new Cache("="), [new Place(4), new Place(5)])], 0, undefined));
add("sys_ast_compute", 5, new Clause(2, [new Place(-1), new Skeleton("const", [new Place(-2)]), new Place(0), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined));
add("sys_ast_list", 4, new Clause(6, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Skeleton(".", [new Place(-4), new Place(-5)]), new Place(-6), new Place(-7)], [new Skeleton(new Cache("sys_ast_term"), [new Place(0), new Place(2), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_ast_list"), [new Place(1), new Place(3), new Place(4), new Place(5)])], -1, "."));
add("sys_ast_list", 4, new Clause(2, ["[]", "[]", new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, "[]"));
add("sys_ast_term", 4, new Clause(5, [new Place(-3), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_ast_var"), [new Place(1), new Place(2), new Place(3), new Place(4)])], 0, undefined));
add("sys_ast_term", 4, new Clause(5, [new Place(-3), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("compound"), [new Place(1)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("functor"), [new Place(1), new Place(-2), new Place(-1)]), new Skeleton(new Cache("=.."), [new Place(1), new Skeleton(".", [new Place(-1), new Place(-3)])]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_ast_list"), [new Place(1), new Place(-3), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_const_functor"), [new Place(0), new Place(1), new Place(2)]), new Skeleton(new Cache("="), [new Place(3), new Place(4)])], 0, undefined));
add("sys_ast_term", 4, new Clause(2, [new Place(-2), new Skeleton("const", [new Place(0)]), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined));
add("sys_const_functor", 3, new Clause(3, [new Place(-3), new Place(-4), new Skeleton("const", [new Skeleton("functor", [new Place(1), new Place(-3)])])], [new Skeleton(new Cache("sys_const_only"), [new Place(2), new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_const_functor", 3, new Clause(2, [new Place(-2), new Place(-3), new Skeleton("functor", [new Place(0), new Place(1)])], [], -1, undefined));
add("sys_const_only", 2, new Clause(2, [new Skeleton(".", [new Skeleton("const", [new Place(-2)]), new Place(-3)]), new Skeleton(".", [new Place(0), new Place(-2)])], [new Skeleton(new Cache("sys_const_only"), [new Place(1), new Place(0)])], -1, "."));
add("sys_const_only", 2, new Clause(0, ["[]", "[]"], [], -1, "[]"));
add("sys_ast_var", 4, new Clause(9, [new Place(-3), new Skeleton("var", [new Place(-4), new Place(-5)]), new Place(-6), new Place(-7)], [new Skeleton(new Cache("sys_current_dcg"), [new Place(-8), new Place(4), new Place(-6)]), new Skeleton(new Cache("select"), [new Skeleton("v", [new Place(-9), new Place(2), new Place(-10)]), new Place(6), new Place(-8)]), new Skeleton(new Cache("=="), [new Place(7), new Place(1)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("="), [new Place(8), 0]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_set_dcg"), [new Skeleton(".", [new Skeleton("v", [new Place(7), new Place(2), new Place(3)]), new Place(6)]), new Place(4), new Place(5)])], 0, undefined));
add("sys_ast_var", 4, new Clause(6, [new Place(-2), new Skeleton("first_var", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6)], [new Skeleton(new Cache("sys_current_dcg"), [new Place(-7), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_set_dcg"), [new Skeleton(".", [new Skeleton("v", [new Place(0), new Place(1), new Place(2)]), new Place(5)]), new Place(3), new Place(4)])], -1, undefined));
add("sys_current_dcg", 3, new Clause(1, [new Place(-2), new Place(0), new Place(0)], [], -1, undefined));
add("sys_set_dcg", 3, new Clause(1, [new Place(-2), new Place(-1), new Place(0)], [], -1, undefined));
add("sys_idx_value", 4, new Clause(4, [new Place(-1), new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("arg"), [1, new Place(1), new Place(-3)]), new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(2), 1]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_idx_value_term"), [new Place(1), new Place(3)])], 0, undefined));
add("sys_idx_value", 4, new Clause(4, [new Place(-3), new Place(-4), new Place(-1), new Place(-5)], [new Skeleton(new Cache("arg"), [1, new Place(2), new Place(-4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_idx_value_arg"), [new Place(1), new Place(2), new Place(3)])], 0, undefined));
add("sys_idx_value", 4, new Clause(0, [new Place(-1), new Place(-1), new Place(-1), "nothing"], [], -1, undefined));
add("sys_idx_value_arg", 3, new Clause(3, [new Place(-1), new Place(-3), new Skeleton("just", [new Place(-4)])], [new Skeleton(new Cache("nonvar"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("functor"), [new Place(1), new Place(2), new Place(-1)])], 0, undefined));
add("sys_idx_value_arg", 3, new Clause(6, [new Skeleton(".", [new Skeleton("=", [new Place(-3), new Place(-4)]), new Place(-5)]), new Place(-6), new Place(-7)], [new Skeleton(new Cache("=="), [new Place(4), new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_idx_value_arg"), [new Place(3), new Place(2), new Place(5)])], 0, "."));
add("sys_idx_value_arg", 3, new Clause(6, [new Skeleton(".", [new Skeleton("=", [new Place(-3), new Place(-4)]), new Place(-5)]), new Place(-6), new Place(-7)], [new Skeleton(new Cache("=="), [new Place(4), new Place(2)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_idx_value_arg"), [new Place(3), new Place(1), new Place(5)])], 0, "."));
add("sys_idx_value_arg", 3, new Clause(4, [new Skeleton(".", [new Skeleton("=", [new Place(-1), new Place(-1)]), new Place(-3)]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_idx_value_arg"), [new Place(1), new Place(2), new Place(3)])], 0, "."));
add("sys_idx_value_arg", 3, new Clause(0, [new Place(-1), new Place(-1), "nothing"], [], -1, undefined));
add("sys_idx_value_term", 2, new Clause(3, [new Place(-3), new Skeleton("just", [new Place(-4)])], [new Skeleton(new Cache("nonvar"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("functor"), [new Place(1), new Place(2), new Place(-1)])], 0, undefined));
add("sys_idx_value_term", 2, new Clause(0, [new Place(-1), "nothing"], [], -1, undefined));
add("eq_contains", 2, new Clause(3, [new Skeleton(".", [new Place(-3), new Place(-1)]), new Place(-4)], [new Skeleton(new Cache("=="), [new Place(1), new Place(2)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "."));
add("eq_contains", 2, new Clause(2, [new Skeleton(".", [new Place(-1), new Place(-2)]), new Place(-3)], [new Skeleton(new Cache("eq_contains"), [new Place(0), new Place(1)])], -1, "."));
add("eq_intersection", 3, new Clause(5, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Skeleton(".", [new Place(1), new Place(-6)])], [new Skeleton(new Cache("eq_contains"), [new Place(3), new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("eq_intersection"), [new Place(2), new Place(3), new Place(4)])], 0, "."));
add("eq_intersection", 3, new Clause(4, [new Skeleton(".", [new Place(-1), new Place(-3)]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("eq_intersection"), [new Place(1), new Place(2), new Place(3)])], 0, "."));
add("eq_intersection", 3, new Clause(0, ["[]", new Place(-1), "[]"], [], -1, "[]"));
add("sys_check_callable", 1, new Clause(2, [new Place(-3)], [new Skeleton(new Cache("callable"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_check_callable", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("sys_check_callable", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["callable", new Place(0)]), new Place(-1)])])], -1, undefined));
add("open", 3, new Clause(3, [new Place(-3), "read", new Place(-4)], [new Compound(new Cache("current_prolog_flag"), ["read_async", "on"]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("os_open_promise"), [new Place(1), new Place(2), new Place(-4)]), new Skeleton(new Cache("$YIELD"), [new Place(2)])], 0, undefined));
add("open", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("os_open_sync"), [new Place(0), new Place(1), new Place(2)])], -1, undefined));
add("close", 1, new Clause(3, [new Place(-3)], [new Skeleton(new Cache("os_stream_flags"), [new Place(1), new Place(-4)]), new Skeleton(new Cache("=\\="), [new Skeleton(new Cache("\/\\"), [new Place(2), 2]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("os_close_promise"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("$YIELD"), [new Place(1)])], 0, undefined));
add("close", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("os_close_sync"), [new Place(0)])], -1, undefined));
add("stream_property", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("os_stream_list"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("member"), [new Place(1), new Place(0)])], -1, undefined));
add("term_variables", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("term_variables"), [new Place(0), new Place(1), "[]"])], -1, undefined));
add("is", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("$EVAL"), [new Place(1), new Place(0)])], -1, undefined));
add("call", 1, new Clause(1, [new Place(-2)], [new Place(0)], -1, undefined));
add("true", 0, new Clause(0, [], [], -1, undefined));
add("!", 0, new Clause(1, [], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add(",", 2, new Clause(4, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_trans_body"), [new Place(0), "nothing", new Place(-2), new Place(-4), new Place(-5)]), new Skeleton(new Cache("sys_trans_body"), [new Place(1), new Place(0), new Place(-2), new Place(3), "[]"]), new Skeleton(new Cache("$SEQ"), [new Place(0), new Place(2)])], -1, undefined));
add(";", 2, new Clause(4, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_trans_alternative"), [new Place(0), "nothing", new Place(-2), new Place(-4), new Place(-5)]), new Skeleton(new Cache("sys_trans_disj"), [new Place(1), new Place(3), new Place(0), new Place(-2), new Place(-5)]), new Skeleton(new Cache("$SEQ"), [new Place(0), new Skeleton(".", [new Skeleton("$ALT", [new Skeleton(".", [new Place(2), new Place(3)])]), "[]"])])], -1, undefined));
add("->", 2, new Clause(5, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_trans_body"), [new Place(0), "nothing", new Place(-2), new Place(-4), new Skeleton(".", [new Skeleton("$CUT", [new Place(-5)]), new Place(-6)])]), new Skeleton(new Cache("sys_trans_body"), [new Place(1), "nothing", new Place(-3), new Place(4), "[]"]), new Skeleton(new Cache("sys_trans_mark"), [new Place(0), new Place(-2), new Place(2)]), new Skeleton(new Cache("$SEQ"), [new Place(1), new Skeleton(".", [new Skeleton("$ALT", [new Skeleton(".", [new Skeleton("$SEQ", [new Skeleton("just", [new Place(3)]), new Place(0)]), "[]"])]), "[]"])])], -1, undefined));
add("\\=", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("="), [new Place(1), new Place(2)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Cache("fail")], 0, undefined));
add("\\=", 2, new Clause(0, [new Place(-1), new Place(-1)], [], -1, undefined));
add("\\+", 1, new Clause(2, [new Place(-3)], [new Place(1), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Cache("fail")], 0, undefined));
add("\\+", 1, new Clause(0, [new Place(-1)], [], -1, undefined));
add("once", 1, new Clause(2, [new Place(-3)], [new Place(1), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("repeat", 0, new Clause(0, [], [], -1, undefined));
add("repeat", 0, new Clause(0, [], [new Cache("repeat")], -1, undefined));
add("catch", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_trap"), [new Place(0), new Place(-2), new Skeleton("sys_error_handler", [new Place(0), new Place(1), new Place(2)])])], -1, undefined));
add("sys_error_handler", 3, new Clause(1, [new Place(-2), new Place(-1), new Place(-1)], [new Skeleton(new Cache("sys_chain_head"), [new Place(0), new Skeleton("error", [new Skeleton("system_error", [new Place(-1)]), new Place(-1)])]), new Skeleton(new Cache("sys_raise"), [new Place(0)])], -1, undefined));
add("sys_error_handler", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_chain_head"), [new Place(1), new Place(2)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Place(3)], 0, undefined));
add("sys_error_handler", 3, new Clause(1, [new Place(-2), new Place(-1), new Place(-1)], [new Skeleton(new Cache("sys_raise"), [new Place(0)])], -1, undefined));
add("sys_chain_head", 2, new Clause(3, [new Skeleton("cause", [new Place(-3), new Place(-1)]), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, "cause"));
add("sys_chain_head", 2, new Clause(1, [new Place(-2), new Place(0)], [], -1, undefined));
add("throw", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("sys_fill_stack"), [new Place(0)]), new Skeleton(new Cache("sys_raise"), [new Place(0)])], -1, undefined));
add("sys_fill_stack", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("sys_fill_stack", 1, new Clause(2, [new Skeleton("error", [new Place(-1), new Place(-3)])], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_fetch_stack"), [new Place(1)])], 0, "error"));
add("sys_fill_stack", 1, new Clause(2, [new Skeleton("warning", [new Place(-1), new Place(-3)])], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_fetch_stack"), [new Place(1)])], 0, "warning"));
add("sys_fill_stack", 1, new Clause(0, [new Place(-1)], [], -1, undefined));
add("sys_fetch_stack", 1, new Clause(4, [new Place(-2)], [new Skeleton(new Cache("os_task_current"), [new Place(-3)]), new Skeleton(new Cache("findall"), [new Skeleton("sys_including", [new Place(-4), new Place(-5)]), new Skeleton("sys_including", [new Place(2), new Place(1), new Place(3)]), new Place(0)])], -1, undefined));
add("ignore", 1, new Clause(2, [new Place(-3)], [new Place(1), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("ignore", 1, new Clause(0, [new Place(-1)], [], -1, undefined));
add("chain", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_trap"), [new Place(0), new Place(-2), new Skeleton("sys_chain_error", [new Place(0), new Place(1)])]), new Place(1)], -1, undefined));
add("sys_chain_error", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_trap"), [new Place(1), new Place(-3), new Skeleton("sys_chain_raise", [new Place(0), new Place(1)])]), new Skeleton(new Cache("sys_raise"), [new Place(0)])], -1, undefined));
add("sys_chain_error", 2, new Clause(1, [new Place(-2), new Place(-1)], [new Skeleton(new Cache("sys_raise"), [new Place(0)])], -1, undefined));
add("sys_chain_raise", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_chain_concat"), [new Place(0), new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_raise"), [new Place(1)])], -1, undefined));
add("sys_chain_concat", 3, new Clause(4, [new Skeleton("cause", [new Place(-3), new Place(-4)]), new Place(-5), new Skeleton("cause", [new Place(1), new Place(-3)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_chain_concat"), [new Place(2), new Place(3), new Place(1)])], 0, "cause"));
add("sys_chain_concat", 3, new Clause(2, [new Place(-2), new Place(-3), new Skeleton("cause", [new Place(0), new Place(1)])], [], -1, undefined));
add("abort", 0, new Clause(0, [], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Compound("system_error", ["user_abort"]), new Place(-1)])])], -1, undefined));
add("once_cleanup", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Compound(new Cache("current_prolog_flag"), ["async_mode", "on"]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("shield"), [new Skeleton("sys_once_cleanup", [new Skeleton("unshield", [new Place(1)]), new Place(2)])])], 0, undefined));
add("once_cleanup", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_once_cleanup"), [new Place(0), new Place(1)])], -1, undefined));
add("setup_once_cleanup", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Compound(new Cache("current_prolog_flag"), ["async_mode", "on"]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("shield"), [new Skeleton("sys_setup_once_cleanup", [new Place(1), new Skeleton("unshield", [new Place(2)]), new Place(3)])])], 0, undefined));
add("setup_once_cleanup", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_setup_once_cleanup"), [new Place(0), new Place(1), new Place(2)])], -1, undefined));
add("sys_setup_once_cleanup", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Place(0), new Skeleton(new Cache("sys_once_cleanup"), [new Place(1), new Place(2)])], -1, undefined));
add("sys_once_cleanup", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("chain"), [new Place(1), new Skeleton("ignore", [new Place(2)])]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_once_cleanup", 2, new Clause(1, [new Place(-1), new Place(-2)], [new Skeleton(new Cache("ignore"), [new Place(0)]), new Cache("fail")], -1, undefined));
add("sys_print_error", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("current_error"), [new Place(-3)]), new Skeleton(new Cache("sys_print_error"), [new Place(0), new Place(1)])], -1, undefined));
add("sys_print_error", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_print_message"), ["exception_unknown", new Place(2)]), new Skeleton(new Cache("writeq"), [new Place(2), new Place(1)]), new Skeleton(new Cache("nl"), [new Place(2)])], 0, undefined));
add("sys_print_error", 2, new Clause(4, [new Skeleton("cause", [new Place(-3), new Place(-4)]), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_print_error"), [new Place(1), new Place(3)]), new Skeleton(new Cache("sys_print_error"), [new Place(2), new Place(3)])], 0, "cause"));
add("sys_print_error", 2, new Clause(4, [new Skeleton("error", [new Place(-3), new Place(-4)]), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_print_message"), ["exception_error", new Place(3)]), new Skeleton(new Cache("sys_print_message"), [new Place(1), new Place(3)]), new Skeleton(new Cache("nl"), [new Place(3)]), new Skeleton(new Cache("sys_print_trace"), [new Place(2), new Place(3)])], 0, "error"));
add("sys_print_error", 2, new Clause(4, [new Skeleton("warning", [new Place(-3), new Place(-4)]), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_print_message"), ["exception_warning", new Place(3)]), new Skeleton(new Cache("sys_print_message"), [new Place(1), new Place(3)]), new Skeleton(new Cache("nl"), [new Place(3)]), new Skeleton(new Cache("sys_print_trace"), [new Place(2), new Place(3)])], 0, "warning"));
add("sys_print_error", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_print_message"), ["exception_unknown", new Place(1)]), new Skeleton(new Cache("writeq"), [new Place(1), new Place(0)]), new Skeleton(new Cache("nl"), [new Place(1)])], -1, undefined));
add("sys_print_trace", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_print_message"), ["exception_context", new Place(2)]), new Skeleton(new Cache("writeq"), [new Place(2), new Place(1)]), new Skeleton(new Cache("nl"), [new Place(2)])], 0, undefined));
add("sys_print_trace", 2, new Clause(4, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_print_frame"), [new Place(1), new Place(3)]), new Skeleton(new Cache("sys_print_trace"), [new Place(2), new Place(3)])], 0, "."));
add("sys_print_trace", 2, new Clause(1, ["[]", new Place(-1)], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "[]"));
add("sys_print_trace", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_print_message"), ["exception_context", new Place(1)]), new Skeleton(new Cache("writeq"), [new Place(1), new Place(0)]), new Skeleton(new Cache("nl"), [new Place(1)])], -1, undefined));
add("sys_print_frame", 2, new Clause(4, [new Skeleton("sys_including", [new Place(-3), new Place(-4)]), new Place(-5)], [new Skeleton(new Cache("atom"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("file_base_name"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("stream_property"), [new Place(2), new Skeleton("line_no", [new Place(-4)])]), new Skeleton(new Cache("sys_print_message"), [new Skeleton("file_line", [new Place(1), new Place(2)]), new Place(3)]), new Skeleton(new Cache("nl"), [new Place(3)])], 0, "sys_including"));
add("sys_print_frame", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_print_message"), [new Place(0), new Place(1)]), new Skeleton(new Cache("nl"), [new Place(1)])], -1, undefined));
add("sys_print_message", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("current_error"), [new Place(-3)]), new Skeleton(new Cache("sys_print_message"), [new Place(0), new Place(1)])], -1, undefined));
add("sys_print_message", 2, new Clause(3, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("current_prolog_flag"), ["sys_locale", new Place(-4)]), new Skeleton(new Cache("sys_print_message"), [new Place(0), new Place(1), new Place(2)])], -1, undefined));
add("sys_print_message", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_print_message"), ["exception_template", new Place(2), new Place(3)]), new Skeleton(new Cache("writeq"), [new Place(2), new Place(1)])], 0, undefined));
add("sys_print_message", 3, new Clause(5, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("=.."), [new Place(1), new Skeleton(".", [new Place(-3), new Place(-6)])]), new Skeleton(new Cache("atom"), [new Place(1)]), new Skeleton(new Cache("get_string"), [new Place(1), new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_inter_polate"), [new Place(2), new Place(3), new Place(4)])], 0, undefined));
add("sys_print_message", 3, new Clause(7, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("=.."), [new Place(1), new Skeleton(".", [new Place(-3), new Skeleton(".", [new Place(-6), new Place(-7)])])]), new Skeleton(new Cache("atom"), [new Place(1)]), new Skeleton(new Cache("atom"), [new Place(4)]), new Skeleton(new Cache("atom_split"), [new Place(-8), ".", new Skeleton(".", [new Place(1), new Skeleton(".", [new Place(4), "[]"])])]), new Skeleton(new Cache("get_string"), [new Place(6), new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_inter_polate"), [new Place(2), new Place(3), new Place(5)])], 0, undefined));
add("sys_print_message", 3, new Clause(8, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("=.."), [new Place(1), new Skeleton(".", [new Place(-3), new Skeleton(".", [new Place(-6), new Skeleton(".", [new Place(-7), new Place(-8)])])])]), new Skeleton(new Cache("atom"), [new Place(1)]), new Skeleton(new Cache("atom"), [new Place(4)]), new Skeleton(new Cache("atom"), [new Place(5)]), new Skeleton(new Cache("atom_split"), [new Place(-9), ".", new Skeleton(".", [new Place(1), new Skeleton(".", [new Place(4), new Skeleton(".", [new Place(5), "[]"])])])]), new Skeleton(new Cache("get_string"), [new Place(7), new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_inter_polate"), [new Place(2), new Place(3), new Place(6)])], 0, undefined));
add("sys_print_message", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_print_message"), ["exception_template", new Place(1), new Place(2)]), new Skeleton(new Cache("writeq"), [new Place(1), new Place(0)])], -1, undefined));
add("sys_inter_polate", 3, new Clause(4, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("atom_split"), [new Place(1), "~", new Skeleton(".", [new Place(-3), new Place(-5)])]), new Skeleton(new Cache("put_atom"), [new Place(0), new Place(1)]), new Skeleton(new Cache("sys_zipper_output"), [new Place(2), new Place(3), new Place(0)])], -1, undefined));
add("sys_zipper_output", 3, new Clause(6, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Skeleton(".", ["", new Skeleton(".", [new Place(-5), new Place(-6)])]), new Place(-7)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("write"), [new Place(5), new Place(1)]), new Skeleton(new Cache("put_atom"), [new Place(5), new Place(3)]), new Skeleton(new Cache("sys_zipper_output"), [new Place(2), new Place(4), new Place(5)])], 0, "."));
add("sys_zipper_output", 3, new Clause(5, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Skeleton(".", [new Place(-4), new Place(-5)]), new Place(-6)], [new Skeleton(new Cache("writeq"), [new Place(4), new Place(0)]), new Skeleton(new Cache("put_atom"), [new Place(4), new Place(2)]), new Skeleton(new Cache("sys_zipper_output"), [new Place(1), new Place(3), new Place(4)])], -1, "."));
add("sys_zipper_output", 3, new Clause(0, ["[]", "[]", new Place(-1)], [], -1, "[]"));
add("get_string", 2, new Clause(3, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("current_prolog_flag"), ["sys_locale", new Place(-4)]), new Skeleton(new Cache("get_string"), [new Place(0), new Place(2), new Place(1)])], -1, undefined));
add("get_string", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_locale_ancestor"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("strings"), [new Place(1), new Place(2), new Place(-4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(2)])], 0, undefined));
add("sys_locale_ancestor", 2, new Clause(1, [new Place(-2), new Place(0)], [], -1, undefined));
add("sys_locale_ancestor", 2, new Clause(3, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("last_sub_atom"), [new Place(0), new Place(-4), new Place(-1), new Place(-1), "_"]), new Skeleton(new Cache("sub_atom"), [new Place(0), 0, new Place(2), new Place(-1), new Place(1)])], -1, undefined));
add("sys_locale_ancestor", 2, new Clause(1, [new Place(-2), ""], [new Skeleton(new Cache("\\=="), [new Place(0), ""])], -1, undefined));
add("sys_check_atom", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("sys_check_atom", 1, new Clause(2, [new Place(-3)], [new Skeleton(new Cache("atom"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_check_atom", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["atom", new Place(0)]), new Place(-1)])])], -1, undefined));
add("sys_check_integer", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("sys_check_integer", 1, new Clause(2, [new Place(-3)], [new Skeleton(new Cache("integer"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_check_integer", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["integer", new Place(0)]), new Place(-1)])])], -1, undefined));
add("call_later", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_frost_horn"), [new Skeleton(":-", [new Skeleton("sys_call_print", [new Place(0)])]), new Place(-2)]), new Skeleton(new Cache("os_call_later"), [new Place(0), new Place(1), new Place(-1)])], -1, undefined));
add("sys_frost_horn", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_trans_horn"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("sys_encode_horn"), [new Place(0), new Place(-2), 0]), new Skeleton(new Cache("sys_host_make"), [new Place(0), new Place(1)])], -1, undefined));
add("sys_call_print", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("sys_trap"), [new Place(0), new Place(-2), new Skeleton("sys_print_error", [new Place(0)])])], -1, undefined));
add("create_task", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("sys_frost_horn"), [new Skeleton(":-", [new Skeleton("sys_call_print", [new Place(0)])]), new Place(-2)]), new Skeleton(new Cache("os_task_create"), [new Place(0), new Place(-1)])], -1, undefined));
add("sleep", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("os_sleep_promise"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("$YIELD"), [new Place(0)])], -1, undefined));
add("time_out", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Compound(new Cache("current_prolog_flag"), ["allow_yield", "on"]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("os_task_current"), [new Place(-2)]), new Skeleton(new Cache("sys_frost_horn"), [new Skeleton(":-", [new Skeleton("sys_timeout", [new Place(0)])]), new Place(-2)]), new Skeleton(new Cache("setup_once_cleanup"), [new Skeleton("os_call_later", [new Place(0), new Place(2), new Place(-4)]), new Place(1), new Skeleton("os_call_cancel", [new Place(2)])])], 0, undefined));
add("time_out", 2, new Clause(0, [new Place(-1), new Place(-1)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Compound("system_error", ["illegal_yield"]), new Place(-1)])])], -1, undefined));
add("sys_timeout", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("os_task_abort"), [new Place(0), new Compound("system_error", ["timelimit_exceeded"])])], -1, undefined));
add("member", 2, new Clause(3, [new Place(-2), new Skeleton(".", [new Place(-3), new Place(-4)])], [new Skeleton(new Cache("sys_member"), [new Place(2), new Place(0), new Place(1)])], -1, undefined));
add("sys_member", 3, new Clause(1, [new Place(-1), new Place(-2), new Place(0)], [], -1, undefined));
add("sys_member", 3, new Clause(3, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Place(-4), new Place(-1)], [new Skeleton(new Cache("sys_member"), [new Place(1), new Place(2), new Place(0)])], -1, "."));
add("select", 3, new Clause(4, [new Place(-2), new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5)], [new Skeleton(new Cache("sys_select"), [new Place(2), new Place(0), new Place(1), new Place(3)])], -1, undefined));
add("sys_select", 4, new Clause(2, [new Place(-2), new Place(-3), new Place(1), new Place(0)], [], -1, undefined));
add("sys_select", 4, new Clause(4, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Place(-4), new Place(-5), new Skeleton(".", [new Place(3), new Place(-5)])], [new Skeleton(new Cache("sys_select"), [new Place(1), new Place(2), new Place(0), new Place(3)])], -1, "."));
add("findall", 3, new Clause(5, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("="), [new Place(-5), new Skeleton(".", ["-", new Place(-1)])]), new Skeleton(new Cache("="), [new Place(-6), new Skeleton("v", [new Place(-1)])]), new Skeleton(new Cache("change_arg"), [1, new Place(4), new Place(3)]), new Skeleton(new Cache("sys_findall"), [new Place(4), new Place(0), new Place(1)]), new Skeleton(new Cache("arg"), [2, new Place(3), new Place(2)])], -1, undefined));
add("sys_findall", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Place(2), new Skeleton(new Cache("copy_term"), [new Skeleton(".", [new Place(1), new Place(-1)]), new Place(-3)]), new Skeleton(new Cache("arg"), [1, new Place(0), new Place(-4)]), new Skeleton(new Cache("change_arg"), [2, new Place(2), new Place(1)]), new Skeleton(new Cache("change_arg"), [1, new Place(0), new Place(1)]), new Cache("fail")], -1, undefined));
add("sys_findall", 3, new Clause(1, [new Place(-2), new Place(-1), new Place(-1)], [new Skeleton(new Cache("arg"), [1, new Place(0), new Place(-2)]), new Skeleton(new Cache("change_arg"), [2, new Place(0), "[]"])], -1, undefined));
add("list_to_set", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_list_to_set"), [new Place(0), "[]", new Place(1)])], -1, undefined));
add("sys_list_to_set", 3, new Clause(0, ["[]", new Place(-1), "[]"], [], -1, "[]"));
add("sys_list_to_set", 3, new Clause(5, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6)], [new Skeleton(new Cache("member"), [new Place(1), new Place(3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_list_to_set"), [new Place(2), new Place(3), new Place(4)])], 0, "."));
add("sys_list_to_set", 3, new Clause(4, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Place(-4), new Skeleton(".", [new Place(0), new Place(-5)])], [new Skeleton(new Cache("sys_list_to_set"), [new Place(1), new Skeleton(".", [new Place(0), new Place(2)]), new Place(3)])], -1, "."));
add("reverse", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_reverse"), [new Place(0), "[]", new Place(1)])], -1, undefined));
add("sys_reverse", 3, new Clause(1, ["[]", new Place(-2), new Place(0)], [], -1, "[]"));
add("sys_reverse", 3, new Clause(4, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_reverse"), [new Place(1), new Skeleton(".", [new Place(0), new Place(2)]), new Place(3)])], -1, "."));
add("append", 3, new Clause(1, ["[]", new Place(-2), new Place(0)], [], -1, "[]"));
add("append", 3, new Clause(3, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Place(-4), new Skeleton(".", [new Place(0), new Place(-2)])], [new Skeleton(new Cache("append"), [new Place(1), new Place(2), new Place(0)])], -1, "."));
add("length", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("var"), [new Place(2)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_length"), [new Place(1), 0, new Place(2)])], 0, undefined));
add("length", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_check_integer"), [new Place(1)]), new Skeleton(new Cache(">="), [new Place(1), 0]), new Skeleton(new Cache("sys_length"), [new Place(1), new Place(0)])], -1, undefined));
add("sys_length", 3, new Clause(1, ["[]", new Place(-2), new Place(0)], [], -1, "[]"));
add("sys_length", 3, new Clause(3, [new Skeleton(".", [new Place(-1), new Place(-2)]), new Place(-3), new Place(-4)], [new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("+"), [new Place(1), 1]), new Place(-3)]), new Skeleton(new Cache("sys_length"), [new Place(0), new Place(1), new Place(2)])], -1, "."));
add("sys_length", 2, new Clause(2, [0, new Place(-3)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), "[]"])], 0, 0));
add("sys_length", 2, new Clause(2, [new Place(-2), new Skeleton(".", [new Place(-1), new Place(-3)])], [new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(0), 1]), new Place(-2)]), new Skeleton(new Cache("sys_length"), [new Place(0), new Place(1)])], -1, undefined));
add("number_codes", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("ground"), [new Place(2)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_codes"), [new Place(-2), new Place(2)]), new Skeleton(new Cache("atom_number"), [new Place(0), new Place(1)])], 0, undefined));
add("number_codes", 2, new Clause(3, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("atom_number"), [new Place(-4), new Place(0)]), new Skeleton(new Cache("atom_codes"), [new Place(2), new Place(1)])], -1, undefined));
add("between", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("var"), [new Place(3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_check_integer"), [new Place(1)]), new Skeleton(new Cache("sys_check_integer"), [new Place(2)]), new Skeleton(new Cache("=<"), [new Place(1), new Place(2)]), new Skeleton(new Cache("sys_between"), [new Place(1), new Place(2), new Place(3)])], 0, undefined));
add("between", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_check_integer"), [new Place(0)]), new Skeleton(new Cache("sys_check_integer"), [new Place(1)]), new Skeleton(new Cache("sys_check_integer"), [new Place(2)]), new Skeleton(new Cache("=<"), [new Place(0), new Place(2)]), new Skeleton(new Cache("=<"), [new Place(2), new Place(1)])], -1, undefined));
add("sys_between", 3, new Clause(2, [new Place(-3), new Place(1), new Place(1)], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_between", 3, new Clause(1, [new Place(-2), new Place(-1), new Place(0)], [], -1, undefined));
add("sys_between", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("+"), [new Place(0), 1]), new Place(-2)]), new Skeleton(new Cache("sys_between"), [new Place(0), new Place(1), new Place(2)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("kb_pred_touch"), ["sys_lastpred", 3, 1])]));
add("sys_update_last", 2, new Clause(3, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("os_task_current"), [new Place(-4)]), new Skeleton(new Cache("retractall"), [new Skeleton("sys_lastpred", [new Place(2), new Place(-1), new Place(-1)])]), new Skeleton(new Cache("assertz"), [new Skeleton("sys_lastpred", [new Place(2), new Place(0), new Place(1)])])], -1, undefined));
add("sys_style_static", 1, new Clause(2, [new Place(-3)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_style_static", 1, new Clause(1, [new Skeleton(":-", [new Place(-1)])], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, ":-"));
add("sys_style_static", 1, new Clause(2, [new Skeleton(":-", [new Place(-3), new Place(-1)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_style_head"), [new Place(1)])], 0, ":-"));
add("sys_style_static", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("sys_style_head"), [new Place(0)])], -1, undefined));
add("sys_style_head", 1, new Clause(2, [new Place(-3)], [new Skeleton(new Cache("callable"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("functor"), [new Place(1), new Place(-3), new Place(-2)]), new Skeleton(new Cache("sys_style_indicator"), [new Place(1), new Place(0)])], 0, undefined));
add("sys_style_head", 1, new Clause(0, [new Place(-1)], [], -1, undefined));
add("sys_style_indicator", 2, new Clause(4, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("os_task_current"), [new Place(-5)]), new Skeleton(new Cache("sys_lastpred"), [new Place(3), new Place(1), new Place(2)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_style_indicator", 2, new Clause(4, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("dg_get_partition"), [new Place(-5)]), new Skeleton(new Cache("sys_predprop"), [new Place(1), new Place(2), new Skeleton("sys_usage", [new Place(3)])]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(make_defined([new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_predprop"), [new Place(1), new Place(2), new Skeleton("sys_discontiguous", [new Place(3)])]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined), new Clause(3, [new Place(-2), new Place(-3), new Place(-1)], [new Skeleton(new Cache("="), [new Place(-4), new Skeleton("warning", [new Skeleton("syntax_error", ["discontiguous_pred", new Skeleton("\/", [new Place(0), new Place(1)])]), new Place(-1)])]), new Skeleton(new Cache("sys_fill_stack"), [new Place(2)]), new Skeleton(new Cache("sys_print_error"), [new Place(2)])], -1, undefined)]), [new Place(1), new Place(2), new Place(3)]), new Skeleton(new Cache("sys_update_last"), [new Place(1), new Place(2)])], 0, undefined));
add("sys_style_indicator", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_usage_predicate"), [new Place(0), new Place(1)]), new Skeleton(new Cache("sys_update_last"), [new Place(0), new Place(1)])], -1, undefined));
add("sys_usage_predicate", 2, new Clause(3, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("dg_get_partition"), [new Place(-4)]), new Skeleton(make_defined([new Clause(5, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("\\+"), [new Skeleton("sys_predprop", [new Place(1), new Place(2), new Skeleton("sys_multifile", [new Place(3)])])]), new Skeleton(new Cache("sys_predprop"), [new Place(1), new Place(2), new Skeleton("sys_usage", [new Place(-6)])]), new Skeleton(new Cache("\\=="), [new Place(3), new Place(4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("permission_error", ["redefine", "procedure", new Skeleton("\/", [new Place(1), new Place(2)])]), new Place(-1)])])], 0, undefined), new Clause(0, [new Place(-1), new Place(-1), new Place(-1)], [], -1, undefined)]), [new Place(0), new Place(1), new Place(2)]), new Skeleton(new Cache("assertz"), [new Skeleton("sys_predprop", [new Place(0), new Place(1), new Skeleton("sys_usage", [new Place(2)])])])], -1, undefined));
add("discontiguous", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("discontiguous", 1, new Clause(3, [new Skeleton("\/", [new Place(-3), new Place(-4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_check_atom"), [new Place(1)]), new Skeleton(new Cache("sys_check_integer"), [new Place(2)]), new Skeleton(new Cache("dg_get_partition"), [new Place(-2)]), new Skeleton(new Cache("assertz"), [new Skeleton("sys_predprop", [new Place(1), new Place(2), new Skeleton("sys_discontiguous", [new Place(0)])])])], 0, "\/"));
add("discontiguous", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["predicate_indicator", new Place(0)]), new Place(-1)])])], -1, undefined));
add("multifile", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("multifile", 1, new Clause(3, [new Skeleton("\/", [new Place(-3), new Place(-4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_check_atom"), [new Place(1)]), new Skeleton(new Cache("sys_check_integer"), [new Place(2)]), new Skeleton(new Cache("sys_multifile_safe"), [new Place(1), new Place(2)])], 0, "\/"));
add("multifile", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["predicate_indicator", new Place(0)]), new Place(-1)])])], -1, undefined));
add("sys_multifile_safe", 2, new Clause(3, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("dg_get_partition"), [new Place(-4)]), new Skeleton(make_defined([new Clause(5, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_predprop"), [new Place(1), new Place(2), new Skeleton("sys_usage", [new Place(-6)])]), new Skeleton(new Cache("\\=="), [new Place(3), new Place(4)]), new Skeleton(new Cache("\\+"), [new Skeleton("sys_predprop", [new Place(1), new Place(2), new Skeleton("sys_multifile", [new Place(4)])])]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("permission_error", ["promote", "multifile", new Skeleton("\/", [new Place(1), new Place(2)])]), new Place(-1)])])], 0, undefined), new Clause(0, [new Place(-1), new Place(-1), new Place(-1)], [], -1, undefined)]), [new Place(0), new Place(1), new Place(2)]), new Skeleton(new Cache("assertz"), [new Skeleton("sys_predprop", [new Place(0), new Place(1), new Skeleton("sys_multifile", [new Place(2)])])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("kb_pred_touch"), ["sys_source", 3, 1])]));
run(new Goal(0, [new Compound(new Cache("kb_pred_touch"), ["sys_srcprop", 2, 1])]));
add("current_source", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("sys_source"), [new Place(0), new Place(-1), new Place(-1)])], -1, undefined));
add("source_property", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_srcprop"), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("kb_pred_touch"), ["sys_emulated", 2, 1])]));
add("sys_emulated", 2, new Clause(0, ["dialect", "dogelog"], [], -1, "dialect"));
add("sys_emulated", 2, new Clause(0, ["emulator_url", ""], [], -1, "emulator_url"));
add("sys_emulated", 2, new Clause(0, ["argv", "[]"], [], -1, "argv"));
add("sys_emulated", 2, new Clause(0, ["sys_locale", "en_GB"], [], -1, "sys_locale"));
add("set_prolog_flag", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_check_atom"), [new Place(1)]), new Skeleton(new Cache("sys_prolog_flag_set"), [new Place(1), new Place(2)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("set_prolog_flag", 2, new Clause(1, [new Place(-2), new Place(-1)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("domain_error", ["prolog_flag", new Place(0)]), new Place(-1)])])], -1, undefined));
add("sys_prolog_flag_set", 2, new Clause(1, ["double_quotes", new Place(-2)], [new Skeleton(new Cache("sys_check_atom"), [new Place(0)]), new Skeleton(new Cache("sys_check_codes"), [new Place(0)])], -1, "double_quotes"));
add("sys_prolog_flag_set", 2, new Clause(1, ["base_url", new Place(-2)], [new Skeleton(new Cache("os_set_workdir"), [new Place(0)])], -1, "base_url"));
add("sys_prolog_flag_set", 2, new Clause(1, ["stage", new Place(-2)], [new Skeleton(new Cache("dg_set_stage"), [new Place(0)])], -1, "stage"));
add("sys_prolog_flag_set", 2, new Clause(1, ["partition", new Place(-2)], [new Skeleton(new Cache("dg_set_partition"), [new Place(0)])], -1, "partition"));
add("sys_prolog_flag_set", 2, new Clause(1, ["dialect", new Place(-2)], [new Skeleton(new Cache("sys_check_atom"), [new Place(0)]), new Skeleton(new Cache("retractall"), [new Skeleton("sys_emulated", ["dialect", new Place(-1)])]), new Skeleton(new Cache("assertz"), [new Skeleton("sys_emulated", ["dialect", new Place(0)])])], -1, "dialect"));
add("sys_prolog_flag_set", 2, new Clause(1, ["emulator_url", new Place(-2)], [new Skeleton(new Cache("sys_check_atom"), [new Place(0)]), new Skeleton(new Cache("retractall"), [new Skeleton("sys_emulated", ["emulator_url", new Place(-1)])]), new Skeleton(new Cache("assertz"), [new Skeleton("sys_emulated", ["emulator_url", new Place(0)])])], -1, "emulator_url"));
add("sys_prolog_flag_set", 2, new Clause(1, ["argv", new Place(-2)], [new Skeleton(new Cache("retractall"), [new Skeleton("sys_emulated", ["argv", new Place(-1)])]), new Skeleton(new Cache("assertz"), [new Skeleton("sys_emulated", ["argv", new Place(0)])])], -1, "argv"));
add("sys_prolog_flag_set", 2, new Clause(1, ["sys_locale", new Place(-2)], [new Skeleton(new Cache("sys_check_atom"), [new Place(0)]), new Skeleton(new Cache("retractall"), [new Skeleton("sys_emulated", ["sys_locale", new Place(-1)])]), new Skeleton(new Cache("assertz"), [new Skeleton("sys_emulated", ["sys_locale", new Place(0)])])], -1, "sys_locale"));
add("sys_check_codes", 1, new Clause(1, ["codes"], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "codes"));
add("sys_check_codes", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("domain_error", ["flag_value", new Place(0)]), new Place(-1)])])], -1, undefined));
add("current_prolog_flag", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_prolog_flag_get"), [new Place(1), new Place(2)])], 0, undefined));
add("current_prolog_flag", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_check_atom"), [new Place(1)]), new Skeleton(new Cache("sys_prolog_flag_get"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(1)])], 0, undefined));
add("current_prolog_flag", 2, new Clause(1, [new Place(-2), new Place(-1)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("domain_error", ["prolog_flag", new Place(0)]), new Place(-1)])])], -1, undefined));
add("sys_prolog_flag_get", 2, new Clause(0, ["max_code", 1114111], [], -1, "max_code"));
add("sys_prolog_flag_get", 2, new Clause(1, ["dialect", new Place(-2)], [new Skeleton(new Cache("sys_emulated"), ["dialect", new Place(0)])], -1, "dialect"));
add("sys_prolog_flag_get", 2, new Clause(1, ["emulator_url", new Place(-2)], [new Skeleton(new Cache("sys_emulated"), ["emulator_url", new Place(0)])], -1, "emulator_url"));
add("sys_prolog_flag_get", 2, new Clause(1, ["argv", new Place(-2)], [new Skeleton(new Cache("sys_emulated"), ["argv", new Place(0)])], -1, "argv"));
add("sys_prolog_flag_get", 2, new Clause(1, ["sys_locale", new Place(-2)], [new Skeleton(new Cache("sys_emulated"), ["sys_locale", new Place(0)])], -1, "sys_locale"));
add("sys_prolog_flag_get", 2, new Clause(0, ["single_quotes", "atom"], [], -1, "single_quotes"));
add("sys_prolog_flag_get", 2, new Clause(0, ["double_quotes", "codes"], [], -1, "double_quotes"));
add("sys_prolog_flag_get", 2, new Clause(0, ["back_quotes", "variable"], [], -1, "back_quotes"));
add("sys_prolog_flag_get", 2, new Clause(0, ["version", 10200], [], -1, "version"));
add("sys_prolog_flag_get", 2, new Clause(0, ["version_data", new Compound("dogelog", [1, 2, 0, new Compound(".", [new Compound("date", [1713912157538n]), "[]"])])], [], -1, "version_data"));
add("sys_prolog_flag_get", 2, new Clause(0, ["iso", "false"], [], -1, "iso"));
add("sys_prolog_flag_get", 2, new Clause(0, ["max_arity", 2147483647n], [], -1, "max_arity"));
add("sys_prolog_flag_get", 2, new Clause(1, ["stage", new Place(-2)], [new Skeleton(new Cache("dg_get_stage"), [new Place(0)])], -1, "stage"));
add("sys_prolog_flag_get", 2, new Clause(1, ["partition", new Place(-2)], [new Skeleton(new Cache("dg_get_partition"), [new Place(0)])], -1, "partition"));
add("sys_prolog_flag_get", 2, new Clause(2, ["async_mode", new Place(-2)], [new Skeleton(new Cache("dg_gc_flags"), [new Place(-3)]), new Skeleton(new Cache("sys_prolog_flag_decode"), [new Place(1), 1, new Place(0)])], -1, "async_mode"));
add("sys_prolog_flag_get", 2, new Clause(2, ["allow_yield", new Place(-2)], [new Skeleton(new Cache("dg_gc_flags"), [new Place(-3)]), new Skeleton(new Cache("sys_prolog_flag_decode"), [new Place(1), 8, new Place(0)])], -1, "allow_yield"));
add("sys_prolog_flag_get", 2, new Clause(1, ["base_url", new Place(-2)], [new Skeleton(new Cache("os_get_workdir"), [new Place(0)])], -1, "base_url"));
add("sys_prolog_flag_get", 2, new Clause(1, ["system_url", new Place(-2)], [new Skeleton(new Cache("os_get_libpath"), [new Place(0)])], -1, "system_url"));
add("sys_prolog_flag_get", 2, new Clause(1, ["foreign_ext", new Place(-2)], [new Skeleton(new Cache("os_get_natext"), [new Place(0)])], -1, "foreign_ext"));
add("sys_prolog_flag_get", 2, new Clause(1, ["host_info", new Place(-2)], [new Skeleton(new Cache("os_host_info"), [new Place(0)])], -1, "host_info"));
add("sys_prolog_flag_get", 2, new Clause(2, ["import_async", new Place(-2)], [new Skeleton(new Cache("dg_gc_flags"), [new Place(-3)]), new Skeleton(new Cache("sys_prolog_flag_decode"), [new Place(1), 16, new Place(0)])], -1, "import_async"));
add("sys_prolog_flag_get", 2, new Clause(2, ["prop_async", new Place(-2)], [new Skeleton(new Cache("dg_gc_flags"), [new Place(-3)]), new Skeleton(new Cache("sys_prolog_flag_decode"), [new Place(1), 32, new Place(0)])], -1, "prop_async"));
add("sys_prolog_flag_get", 2, new Clause(2, ["read_async", new Place(-2)], [new Skeleton(new Cache("dg_gc_flags"), [new Place(-3)]), new Skeleton(new Cache("sys_prolog_flag_decode"), [new Place(1), 64, new Place(0)])], -1, "read_async"));
add("sys_prolog_flag_decode", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("=\\="), [new Skeleton(new Cache("\/\\"), [new Place(1), new Place(2)]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), "on"])], 0, undefined));
add("sys_prolog_flag_decode", 3, new Clause(0, [new Place(-1), new Place(-1), "off"], [], -1, undefined));
add("statistics", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_stat_get"), [new Place(1), new Place(2)])], 0, undefined));
add("statistics", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_check_atom"), [new Place(1)]), new Skeleton(new Cache("sys_stat_get"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(1)])], 0, undefined));
add("statistics", 2, new Clause(1, [new Place(-2), new Place(-1)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("domain_error", ["prolog_flag", new Place(0)]), new Place(-1)])])], -1, undefined));
add("sys_stat_get", 2, new Clause(1, ["gctime", new Place(-2)], [new Skeleton(new Cache("dg_gc_time"), [new Place(0)])], -1, "gctime"));
add("sys_stat_get", 2, new Clause(1, ["calls", new Place(-2)], [new Skeleton(new Cache("dg_call_count"), [new Place(0)])], -1, "calls"));
add("sys_stat_get", 2, new Clause(1, ["time", new Place(-2)], [new Skeleton(new Cache("dg_real_time"), [new Place(0)])], -1, "time"));
add("sys_stat_get", 2, new Clause(1, ["wall", new Place(-2)], [new Skeleton(new Cache("dg_date_now"), [new Place(0)])], -1, "wall"));
add("statistics", 0, new Clause(3, [], [new Skeleton(new Cache("statistics"), [new Place(-2), new Place(-3)]), new Skeleton(new Cache("current_output"), [new Place(-4)]), new Skeleton(new Cache("sys_convert_stat"), [new Place(0), new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_print_message"), [new Skeleton("statistics", [new Place(0), new Place(1)]), new Place(2)]), new Cache("nl"), new Cache("fail")], -1, undefined));
add("statistics", 0, new Clause(0, [], [], -1, undefined));
add("sys_convert_stat", 3, new Clause(3, ["wall", new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("get_string"), ["format.datetime", new Place(-2)]), new Skeleton(new Cache("sys_time_atom"), [new Place(0), new Place(1), new Place(2)])], 0, "wall"));
add("sys_convert_stat", 3, new Clause(1, [new Place(-1), new Place(-2), new Place(0)], [], -1, undefined));
add("time", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("="), [new Place(-3), new Skeleton("v", [new Place(-1), new Place(-1), new Place(-1)])]), new Skeleton(new Cache("try_call_finally"), [new Skeleton("sys_time_set", [new Place(1)]), new Place(0), new Skeleton("sys_time_show", [new Place(1)])])], -1, undefined));
add("sys_time_set", 1, new Clause(4, [new Place(-2)], [new Skeleton(new Cache("statistics"), ["time", new Place(-3)]), new Skeleton(new Cache("statistics"), ["gctime", new Place(-4)]), new Skeleton(new Cache("statistics"), ["calls", new Place(-5)]), new Skeleton(new Cache("change_arg"), [1, new Place(0), new Place(1)]), new Skeleton(new Cache("change_arg"), [2, new Place(0), new Place(2)]), new Skeleton(new Cache("change_arg"), [3, new Place(0), new Place(3)])], -1, undefined));
add("sys_time_show", 1, new Clause(7, [new Place(-2)], [new Skeleton(new Cache("arg"), [1, new Place(0), new Place(-3)]), new Skeleton(new Cache("arg"), [2, new Place(0), new Place(-4)]), new Skeleton(new Cache("arg"), [3, new Place(0), new Place(-2)]), new Skeleton(new Cache("statistics"), ["time", new Place(-5)]), new Skeleton(new Cache("statistics"), ["gctime", new Place(-6)]), new Skeleton(new Cache("statistics"), ["calls", new Place(-7)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(3), new Place(1)]), new Place(-3)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(4), new Place(2)]), new Place(-4)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(5), new Place(0)]), new Place(-2)]), new Skeleton(make_defined([new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("=\\="), [new Place(1), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("truncate"), [new Skeleton(new Cache("\/"), [new Skeleton(new Cache("*"), [new Place(3), 1000]), new Place(1)])]), new Place(2)])], 0, undefined), new Clause(1, [new Place(-1), new Place(-2), new Place(-1)], [new Skeleton(new Cache("="), [new Place(0), 0])], -1, undefined)]), [new Place(1), new Place(-7), new Place(0)]), new Skeleton(new Cache("statistics"), ["wall", new Place(-2)]), new Skeleton(new Cache("current_output"), [new Place(-6)]), new Skeleton(new Cache("member"), [new Skeleton("-", [new Place(-5), new Place(-8)]), new Skeleton(".", [new Skeleton("-", ["time", new Place(1)]), new Skeleton(".", [new Skeleton("-", ["gctime", new Place(2)]), new Skeleton(".", [new Skeleton("-", ["lips", new Place(5)]), new Skeleton(".", [new Skeleton("-", ["wall", new Place(0)]), "[]"])])])])]), new Skeleton(new Cache("sys_convert_stat"), [new Place(3), new Place(6), new Place(-8)]), new Skeleton(new Cache("sys_print_message"), [new Skeleton("time", [new Place(3), new Place(6)]), new Place(4)]), new Cache("fail")], -1, undefined));
add("sys_time_show", 1, new Clause(0, [new Place(-1)], [new Cache("nl")], -1, undefined));
add("try_call_finally", 3, new Clause(5, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(make_defined([new Clause(1, [new Place(-2), new Place(-1)], [new Place(0)], -1, undefined), new Clause(1, [new Place(-1), new Place(-2)], [new Place(0), new Cache("fail")], -1, undefined)]), [new Place(1), new Place(3)]), new Skeleton(new Cache("$MARK"), [new Place(-6)]), new Skeleton(new Cache("sys_trap"), [new Place(2), new Place(-4), new Skeleton(",", [new Place(3), new Skeleton("sys_raise", [new Place(2)])])]), new Skeleton(new Cache("$MARK"), [new Place(-4)]), new Skeleton(make_defined([new Clause(5, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-1)], [new Skeleton(new Cache("=="), [new Place(1), new Place(2)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("$CUT"), [new Place(3)]), new Place(4)], 0, undefined), new Clause(1, [new Place(-1), new Place(-1), new Place(-1), new Place(-2), new Place(-1)], [new Place(0)], -1, undefined), new Clause(1, [new Place(-1), new Place(-1), new Place(-1), new Place(-1), new Place(-2)], [new Place(0), new Cache("fail")], -1, undefined)]), [new Place(4), new Place(2), new Place(0), new Place(3), new Place(1)])], 0, undefined));
add("sub_atom", 5, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("var"), [new Place(2)]), new Skeleton(new Cache("var"), [new Place(3)]), new Skeleton(new Cache("var"), [new Place(4)]), new Skeleton(new Cache("var"), [new Place(5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_length"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("between"), [0, new Place(0), new Place(2)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(0), new Place(2)]), new Place(-2)]), new Skeleton(new Cache("between"), [0, new Place(0), new Place(3)]), new Skeleton(new Cache("sys_atom_part"), [new Place(1), new Place(2), new Place(3), new Place(5)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(0), new Place(3)]), new Place(4)])], 0, undefined));
add("sub_atom", 5, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("var"), [new Place(2)]), new Skeleton(new Cache("var"), [new Place(4)]), new Skeleton(new Cache("var"), [new Place(5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_length"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("sys_atom_part"), [new Place(1), new Place(2), new Place(3), new Place(5)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Skeleton(new Cache("-"), [new Place(0), new Place(2)]), new Place(3)]), new Place(4)])], 0, undefined));
add("sub_atom", 5, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("var"), [new Place(2)]), new Skeleton(new Cache("var"), [new Place(4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_length"), [new Place(5), new Place(3)]), new Skeleton(new Cache("atom_length"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("sys_atom_match"), [new Place(1), new Place(5), new Place(2)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Skeleton(new Cache("-"), [new Place(0), new Place(2)]), new Place(3)]), new Place(4)])], 0, undefined));
add("sub_atom", 5, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("var"), [new Place(2)]), new Skeleton(new Cache("var"), [new Place(3)]), new Skeleton(new Cache("var"), [new Place(5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_length"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("=<"), [0, new Place(4)]), new Skeleton(new Cache("=<"), [new Place(4), new Place(0)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(0), new Place(4)]), new Place(-6)]), new Skeleton(new Cache("between"), [0, new Place(4), new Place(2)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(4), new Place(2)]), new Place(3)]), new Skeleton(new Cache("sys_atom_part"), [new Place(1), new Place(2), new Place(3), new Place(5)])], 0, undefined));
add("sub_atom", 5, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("var"), [new Place(2)]), new Skeleton(new Cache("var"), [new Place(5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_length"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Skeleton(new Cache("-"), [new Place(0), new Place(4)]), new Place(3)]), new Place(2)]), new Skeleton(new Cache("sys_atom_part"), [new Place(1), new Place(2), new Place(3), new Place(5)])], 0, undefined));
add("sub_atom", 5, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("var"), [new Place(3)]), new Skeleton(new Cache("var"), [new Place(4)]), new Skeleton(new Cache("var"), [new Place(5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_length"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("=<"), [0, new Place(2)]), new Skeleton(new Cache("=<"), [new Place(2), new Place(0)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(0), new Place(2)]), new Place(-2)]), new Skeleton(new Cache("between"), [0, new Place(0), new Place(3)]), new Skeleton(new Cache("sys_atom_part"), [new Place(1), new Place(2), new Place(3), new Place(5)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(0), new Place(3)]), new Place(4)])], 0, undefined));
add("sub_atom", 5, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("var"), [new Place(4)]), new Skeleton(new Cache("var"), [new Place(5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_length"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Skeleton(new Cache("-"), [new Place(0), new Place(2)]), new Place(3)]), new Place(4)]), new Skeleton(new Cache("sys_atom_part"), [new Place(1), new Place(2), new Place(3), new Place(5)])], 0, undefined));
add("sub_atom", 5, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("var"), [new Place(5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_length"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Skeleton(new Cache("-"), [new Place(0), new Place(4)]), new Place(2)]), new Place(3)]), new Skeleton(new Cache("sys_atom_part"), [new Place(1), new Place(2), new Place(3), new Place(5)])], 0, undefined));
add("sub_atom", 5, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("var"), [new Place(4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_length"), [new Place(5), new Place(3)]), new Skeleton(new Cache("atom_length"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Skeleton(new Cache("-"), [new Place(0), new Place(2)]), new Place(3)]), new Place(4)]), new Skeleton(new Cache("sys_atom_match"), [new Place(1), new Place(5), new Place(2)])], 0, undefined));
add("sub_atom", 5, new Clause(6, [new Place(-2), new Place(-3), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("atom_length"), [new Place(4), new Place(2)]), new Skeleton(new Cache("atom_length"), [new Place(0), new Place(-7)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Skeleton(new Cache("-"), [new Place(5), new Place(3)]), new Place(2)]), new Place(1)]), new Skeleton(new Cache("sys_atom_match"), [new Place(0), new Place(4), new Place(1)])], -1, undefined));
add("last_sub_atom", 5, new Clause(7, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("var"), [new Place(2)]), new Skeleton(new Cache("var"), [new Place(3)]), new Skeleton(new Cache("var"), [new Place(4)]), new Skeleton(new Cache("var"), [new Place(5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_length"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("between"), [0, new Place(0), new Place(-8)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(0), new Place(6)]), new Place(2)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(0), new Place(2)]), new Place(-2)]), new Skeleton(new Cache("between"), [0, new Place(0), new Place(-8)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(0), new Place(6)]), new Place(3)]), new Skeleton(new Cache("sys_last_atom_part"), [new Place(1), new Place(2), new Place(3), new Place(5)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(0), new Place(3)]), new Place(4)])], 0, undefined));
add("last_sub_atom", 5, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("var"), [new Place(2)]), new Skeleton(new Cache("var"), [new Place(4)]), new Skeleton(new Cache("var"), [new Place(5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_length"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("sys_last_atom_part"), [new Place(1), new Place(2), new Place(3), new Place(5)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Skeleton(new Cache("-"), [new Place(0), new Place(2)]), new Place(3)]), new Place(4)])], 0, undefined));
add("last_sub_atom", 5, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("var"), [new Place(2)]), new Skeleton(new Cache("var"), [new Place(4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_length"), [new Place(5), new Place(3)]), new Skeleton(new Cache("atom_length"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("sys_last_atom_match"), [new Place(1), new Place(5), new Place(2)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Skeleton(new Cache("-"), [new Place(0), new Place(2)]), new Place(3)]), new Place(4)])], 0, undefined));
add("last_sub_atom", 5, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("var"), [new Place(2)]), new Skeleton(new Cache("var"), [new Place(3)]), new Skeleton(new Cache("var"), [new Place(5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_length"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("=<"), [0, new Place(4)]), new Skeleton(new Cache("=<"), [new Place(4), new Place(0)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(0), new Place(4)]), new Place(-6)]), new Skeleton(new Cache("between"), [0, new Place(4), new Place(-2)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(4), new Place(0)]), new Place(2)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(4), new Place(2)]), new Place(3)]), new Skeleton(new Cache("sys_last_atom_part"), [new Place(1), new Place(2), new Place(3), new Place(5)])], 0, undefined));
add("last_sub_atom", 5, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("var"), [new Place(2)]), new Skeleton(new Cache("var"), [new Place(5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_length"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Skeleton(new Cache("-"), [new Place(0), new Place(4)]), new Place(3)]), new Place(2)]), new Skeleton(new Cache("sys_last_atom_part"), [new Place(1), new Place(2), new Place(3), new Place(5)])], 0, undefined));
add("last_sub_atom", 5, new Clause(7, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("var"), [new Place(3)]), new Skeleton(new Cache("var"), [new Place(4)]), new Skeleton(new Cache("var"), [new Place(5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_length"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("=<"), [0, new Place(2)]), new Skeleton(new Cache("=<"), [new Place(2), new Place(0)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(0), new Place(2)]), new Place(-2)]), new Skeleton(new Cache("between"), [0, new Place(0), new Place(-8)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(0), new Place(6)]), new Place(3)]), new Skeleton(new Cache("sys_last_atom_part"), [new Place(1), new Place(2), new Place(3), new Place(5)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(0), new Place(3)]), new Place(4)])], 0, undefined));
add("last_sub_atom", 5, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("var"), [new Place(4)]), new Skeleton(new Cache("var"), [new Place(5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_length"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Skeleton(new Cache("-"), [new Place(0), new Place(2)]), new Place(3)]), new Place(4)]), new Skeleton(new Cache("sys_last_atom_part"), [new Place(1), new Place(2), new Place(3), new Place(5)])], 0, undefined));
add("last_sub_atom", 5, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("var"), [new Place(5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_length"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Skeleton(new Cache("-"), [new Place(0), new Place(4)]), new Place(2)]), new Place(3)]), new Skeleton(new Cache("sys_last_atom_part"), [new Place(1), new Place(2), new Place(3), new Place(5)])], 0, undefined));
add("last_sub_atom", 5, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("var"), [new Place(4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_length"), [new Place(5), new Place(3)]), new Skeleton(new Cache("atom_length"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Skeleton(new Cache("-"), [new Place(0), new Place(2)]), new Place(3)]), new Place(4)]), new Skeleton(new Cache("sys_last_atom_match"), [new Place(1), new Place(5), new Place(2)])], 0, undefined));
add("last_sub_atom", 5, new Clause(6, [new Place(-2), new Place(-3), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("atom_length"), [new Place(4), new Place(2)]), new Skeleton(new Cache("atom_length"), [new Place(0), new Place(-7)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Skeleton(new Cache("-"), [new Place(5), new Place(3)]), new Place(2)]), new Place(1)]), new Skeleton(new Cache("sys_last_atom_match"), [new Place(0), new Place(4), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("kb_pred_touch"), ["sys_op", 5, 1])]));
add("sys_op", 5, new Clause(0, [":-", "fx", 1200, 12, "system"], [], -1, ":-"));
add("sys_op", 5, new Clause(0, [":-", "xfx", 1200, 12, "system"], [], -1, ":-"));
add("sys_op", 5, new Clause(0, ["?-", "fx", 1200, 12, "system"], [], -1, "?-"));
add("sys_op", 5, new Clause(0, ["-->", "xfx", 1200, 12, "system"], [], -1, "-->"));
add("sys_op", 5, new Clause(0, ["dynamic", "fx", 1150, 12, "system"], [], -1, "dynamic"));
add("sys_op", 5, new Clause(0, ["discontiguous", "fx", 1150, 12, "system"], [], -1, "discontiguous"));
add("sys_op", 5, new Clause(0, ["multifile", "fx", 1150, 12, "system"], [], -1, "multifile"));
add("sys_op", 5, new Clause(0, ["initialization", "fx", 1150, 12, "system"], [], -1, "initialization"));
add("sys_op", 5, new Clause(0, [";", "xfy", 1100, 10, "system"], [], -1, ";"));
add("sys_op", 5, new Clause(0, ["->", "xfy", 1050, 8, "system"], [], -1, "->"));
add("sys_op", 5, new Clause(0, [",", "xfy", 1000, 6, "system"], [], -1, ","));
add("sys_op", 5, new Clause(0, ["\\+", "fy", 900, 0, "system"], [], -1, "\\+"));
add("sys_op", 5, new Clause(0, ["is", "xfx", 700, 0, "system"], [], -1, "is"));
add("sys_op", 5, new Clause(0, ["=", "xfx", 700, 0, "system"], [], -1, "="));
add("sys_op", 5, new Clause(0, ["\\=", "xfx", 700, 0, "system"], [], -1, "\\="));
add("sys_op", 5, new Clause(0, ["=..", "xfx", 700, 0, "system"], [], -1, "=.."));
add("sys_op", 5, new Clause(0, ["<", "xfx", 700, 0, "system"], [], -1, "<"));
add("sys_op", 5, new Clause(0, ["=<", "xfx", 700, 0, "system"], [], -1, "=<"));
add("sys_op", 5, new Clause(0, ["=\\=", "xfx", 700, 0, "system"], [], -1, "=\\="));
add("sys_op", 5, new Clause(0, [">=", "xfx", 700, 0, "system"], [], -1, ">="));
add("sys_op", 5, new Clause(0, [">", "xfx", 700, 0, "system"], [], -1, ">"));
add("sys_op", 5, new Clause(0, ["=:=", "xfx", 700, 0, "system"], [], -1, "=:="));
add("sys_op", 5, new Clause(0, ["@<", "xfx", 700, 0, "system"], [], -1, "@<"));
add("sys_op", 5, new Clause(0, ["@=<", "xfx", 700, 0, "system"], [], -1, "@=<"));
add("sys_op", 5, new Clause(0, ["\\==", "xfx", 700, 0, "system"], [], -1, "\\=="));
add("sys_op", 5, new Clause(0, ["@>=", "xfx", 700, 0, "system"], [], -1, "@>="));
add("sys_op", 5, new Clause(0, ["@>", "xfx", 700, 0, "system"], [], -1, "@>"));
add("sys_op", 5, new Clause(0, ["==", "xfx", 700, 0, "system"], [], -1, "=="));
add("sys_op", 5, new Clause(0, [":", "xfy", 600, 3, "system"], [], -1, ":"));
add("sys_op", 5, new Clause(0, ["+", "yfx", 500, 3, "system"], [], -1, "+"));
add("sys_op", 5, new Clause(0, ["-", "yfx", 500, 3, "system"], [], -1, "-"));
add("sys_op", 5, new Clause(0, ["\/\\", "yfx", 500, 3, "system"], [], -1, "\/\\"));
add("sys_op", 5, new Clause(0, ["\\\/", "yfx", 500, 3, "system"], [], -1, "\\\/"));
add("sys_op", 5, new Clause(0, ["*", "yfx", 400, 3, "system"], [], -1, "*"));
add("sys_op", 5, new Clause(0, ["\/", "yfx", 400, 3, "system"], [], -1, "\/"));
add("sys_op", 5, new Clause(0, ["\/\/", "yfx", 400, 3, "system"], [], -1, "\/\/"));
add("sys_op", 5, new Clause(0, ["rem", "yfx", 400, 3, "system"], [], -1, "rem"));
add("sys_op", 5, new Clause(0, ["div", "yfx", 400, 3, "system"], [], -1, "div"));
add("sys_op", 5, new Clause(0, ["mod", "yfx", 400, 3, "system"], [], -1, "mod"));
add("sys_op", 5, new Clause(0, ["xor", "yfx", 400, 3, "system"], [], -1, "xor"));
add("sys_op", 5, new Clause(0, [">>", "yfx", 400, 3, "system"], [], -1, ">>"));
add("sys_op", 5, new Clause(0, ["<<", "yfx", 400, 3, "system"], [], -1, "<<"));
add("sys_op", 5, new Clause(0, ["-", "fy", 200, 1, "system"], [], -1, "-"));
add("sys_op", 5, new Clause(0, ["\\", "fy", 200, 1, "system"], [], -1, "\\"));
add("sys_op", 5, new Clause(0, ["**", "xfx", 200, 3, "system"], [], -1, "**"));
add("sys_op", 5, new Clause(0, ["^", "xfy", 200, 3, "system"], [], -1, "^"));
add("current_op", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_op"), [new Place(2), new Place(1), new Place(0), new Place(-1), new Place(-1)])], -1, undefined));
add("op", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_check_integer"), [new Place(0)]), new Skeleton(new Cache("sys_check_priority"), [new Place(0)]), new Skeleton(new Cache("sys_check_atom"), [new Place(1)]), new Skeleton(new Cache("sys_check_atom"), [new Place(2)]), new Skeleton(new Cache("sys_op_retract"), [new Place(2), new Place(1)]), new Skeleton(new Cache("sys_op_assert"), [new Place(2), new Place(1), new Place(0)])], -1, undefined));
add("sys_check_priority", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("<"), [new Place(0), 0]), new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("domain_error", ["not_less_than_zero", new Place(0)]), new Place(-1)])])], -1, undefined));
add("sys_check_priority", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache(">"), [new Place(0), 1200]), new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("domain_error", ["operator_priority", new Place(0)]), new Place(-1)])])], -1, undefined));
add("sys_check_priority", 1, new Clause(0, [new Place(-1)], [], -1, undefined));
add("sys_op_retract", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_is_prefix"), [new Place(2), new Place(-1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(make_defined([new Clause(3, [new Place(-2)], [new Skeleton(new Cache("sys_op"), [new Place(0), new Place(-3), new Place(-4), new Place(-1), new Place(-1)]), new Skeleton(new Cache("sys_is_prefix"), [new Place(1), new Place(-1)]), new Skeleton(new Cache("retract"), [new Skeleton("sys_op", [new Place(0), new Place(1), new Place(2), new Place(-1), new Place(-1)])]), new Cache("fail")], -1, undefined), new Clause(0, [new Place(-1)], [], -1, undefined)]), [new Place(1)])], 0, undefined));
add("sys_op_retract", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_is_postfix"), [new Place(2), new Place(-1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(make_defined([new Clause(3, [new Place(-2)], [new Skeleton(new Cache("sys_op"), [new Place(0), new Place(-3), new Place(-4), new Place(-1), new Place(-1)]), new Skeleton(new Cache("sys_is_postfix"), [new Place(1), new Place(-1)]), new Skeleton(new Cache("retract"), [new Skeleton("sys_op", [new Place(0), new Place(1), new Place(2), new Place(-1), new Place(-1)])]), new Cache("fail")], -1, undefined), new Clause(0, [new Place(-1)], [], -1, undefined)]), [new Place(1)])], 0, undefined));
add("sys_op_retract", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_is_infix"), [new Place(2), new Place(-1), new Place(-1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(make_defined([new Clause(3, [new Place(-2)], [new Skeleton(new Cache("sys_op"), [new Place(0), new Place(-3), new Place(-4), new Place(-1), new Place(-1)]), new Skeleton(new Cache("sys_is_infix"), [new Place(1), new Place(-1), new Place(-1)]), new Skeleton(new Cache("retract"), [new Skeleton("sys_op", [new Place(0), new Place(1), new Place(2), new Place(-1), new Place(-1)])]), new Cache("fail")], -1, undefined), new Clause(0, [new Place(-1)], [], -1, undefined)]), [new Place(1)])], 0, undefined));
add("sys_op_retract", 2, new Clause(1, [new Place(-1), new Place(-2)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("domain_error", ["operator_specifier", new Place(0)]), new Place(-1)])])], -1, undefined));
add("sys_op_assert", 3, new Clause(1, [new Place(-1), new Place(-1), 0], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_op_assert", 3, new Clause(2, [new Place(-2), new Place(-3), new Place(-1)], [new Skeleton(new Cache("sys_is_infix"), [new Place(1), new Place(-1), new Place(-1)]), new Skeleton(new Cache("sys_op"), [new Place(0), new Place(-3), new Place(-1), new Place(-1), new Place(-1)]), new Skeleton(new Cache("sys_is_postfix"), [new Place(1), new Place(-1)]), new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("permission_error", ["create", "operator", new Place(0)]), new Place(-1)])])], -1, undefined));
add("sys_op_assert", 3, new Clause(2, [new Place(-2), new Place(-3), new Place(-1)], [new Skeleton(new Cache("sys_is_postfix"), [new Place(1), new Place(-1)]), new Skeleton(new Cache("sys_op"), [new Place(0), new Place(-3), new Place(-1), new Place(-1), new Place(-1)]), new Skeleton(new Cache("sys_is_infix"), [new Place(1), new Place(-1), new Place(-1)]), new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("permission_error", ["create", "operator", new Place(0)]), new Place(-1)])])], -1, undefined));
add("sys_op_assert", 3, new Clause(5, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_op_space"), [new Place(1), new Place(2), new Place(-5)]), new Skeleton(new Cache("sys_op_format"), [new Place(1), new Place(2), new Place(-6)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("\\\/"), [new Place(3), new Place(4)]), new Place(-6)]), new Skeleton(new Cache("dg_get_partition"), [new Place(-5)]), new Skeleton(new Cache("assertz"), [new Skeleton("sys_op", [new Place(0), new Place(1), new Place(2), new Place(4), new Place(3)])])], -1, undefined));
add("sys_op_space", 3, new Clause(2, [new Place(-1), new Place(-3), 0], [new Skeleton(new Cache(">"), [new Place(1), 699]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_op_space", 3, new Clause(2, [new Place(-3), new Place(-1), 1], [new Skeleton(new Cache("sys_is_prefix"), [new Place(1), new Place(-1)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_op_space", 3, new Clause(2, [new Place(-3), new Place(-1), 2], [new Skeleton(new Cache("sys_is_postfix"), [new Place(1), new Place(-1)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_op_space", 3, new Clause(0, [new Place(-1), new Place(-1), 3], [], -1, undefined));
add("sys_op_format", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_is_infix"), [new Place(1), new Place(-1), new Place(-1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_op_format2"), [new Place(2), new Place(3)])], 0, undefined));
add("sys_op_format", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_is_prefix"), [new Place(1), new Place(-1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_op_format3"), [new Place(2), new Place(3)])], 0, undefined));
add("sys_op_format", 3, new Clause(0, [new Place(-1), new Place(-1), 0], [], -1, undefined));
add("sys_op_format2", 2, new Clause(2, [new Place(-3), 12], [new Skeleton(new Cache(">"), [new Place(1), 1149]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_op_format2", 2, new Clause(2, [new Place(-3), 8], [new Skeleton(new Cache(">"), [new Place(1), 1049]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_op_format2", 2, new Clause(2, [new Place(-3), 4], [new Skeleton(new Cache(">"), [new Place(1), 949]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_op_format2", 2, new Clause(0, [new Place(-1), 0], [], -1, undefined));
add("sys_op_format3", 2, new Clause(2, [new Place(-3), 12], [new Skeleton(new Cache(">"), [new Place(1), 1149]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_op_format3", 2, new Clause(0, [new Place(-1), 0], [], -1, undefined));
add("term_conversion", 2, new Clause(2, [new Place(-3), new Place(-1)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Cache("fail")], 0, undefined));
add("term_conversion", 2, new Clause(2, [new Skeleton("-->", [new Place(-3), new Place(-1)]), new Place(-1)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Cache("fail")], 0, "-->"));
add("term_conversion", 2, new Clause(7, [new Skeleton("-->", [new Skeleton(",", [new Place(-3), new Place(-4)]), new Place(-5)]), new Skeleton(":-", [new Place(-6), new Skeleton(",", [new Place(-7), new Place(-8)])])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_phrase_expansion"), [new Place(1), new Place(-3), new Place(-2), new Place(4)]), new Skeleton(new Cache("sys_phrase_expansion"), [new Place(3), new Place(1), new Place(-3), new Place(5)]), new Skeleton(new Cache("sys_phrase_expansion"), [new Place(2), new Place(0), new Place(1), new Place(6)])], 0, "-->"));
add("term_conversion", 2, new Clause(5, [new Skeleton("-->", [new Place(-3), new Place(-4)]), new Skeleton(":-", [new Place(-5), new Place(-6)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_phrase_expansion"), [new Place(1), new Place(-3), new Place(-2), new Place(3)]), new Skeleton(new Cache("sys_phrase_expansion"), [new Place(2), new Place(1), new Place(0), new Place(4)])], 0, "-->"));
add("sys_phrase_expansion", 4, new Clause(2, [new Place(-3), new Place(-1), new Place(-1), new Place(-1)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Cache("fail")], 0, undefined));
add("sys_phrase_expansion", 4, new Clause(7, [new Skeleton(",", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6), new Skeleton(",", [new Place(-7), new Place(-8)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_phrase_expansion"), [new Place(1), new Place(3), new Place(-5), new Place(5)]), new Skeleton(new Cache("sys_phrase_expansion"), [new Place(2), new Place(3), new Place(4), new Place(6)])], 0, ","));
add("sys_phrase_expansion", 4, new Clause(7, [new Skeleton(";", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6), new Skeleton(";", [new Place(-7), new Place(-8)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_phrase_expansion"), [new Place(1), new Place(3), new Place(4), new Place(5)]), new Skeleton(new Cache("sys_phrase_expansion"), [new Place(2), new Place(3), new Place(4), new Place(6)])], 0, ";"));
add("sys_phrase_expansion", 4, new Clause(7, [new Skeleton("->", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6), new Skeleton("->", [new Place(-7), new Place(-8)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_phrase_expansion"), [new Place(1), new Place(3), new Place(-5), new Place(5)]), new Skeleton(new Cache("sys_phrase_expansion"), [new Place(2), new Place(3), new Place(4), new Place(6)])], 0, "->"));
add("sys_phrase_expansion", 4, new Clause(3, ["[]", new Place(-3), new Place(-4), new Skeleton("=", [new Place(1), new Place(2)])], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "[]"));
add("sys_phrase_expansion", 4, new Clause(5, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6), new Skeleton("=", [new Place(3), new Skeleton(".", [new Place(1), new Place(-3)])])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_list_expansion"), [new Place(2), new Place(4), new Place(1)])], 0, "."));
add("sys_phrase_expansion", 4, new Clause(3, ["!", new Place(-3), new Place(-4), new Skeleton(",", ["!", new Skeleton("=", [new Place(1), new Place(2)])])], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "!"));
add("sys_phrase_expansion", 4, new Clause(4, [new Skeleton("{}", [new Place(-3)]), new Place(-4), new Place(-5), new Skeleton(",", [new Place(1), new Skeleton("=", [new Place(2), new Place(3)])])], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "{}"));
add("sys_phrase_expansion", 4, new Clause(5, [new Skeleton("\\+", [new Place(-3)]), new Place(-4), new Place(-5), new Skeleton(",", [new Skeleton("\\+", [new Place(-6)]), new Skeleton("=", [new Place(2), new Place(3)])])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_phrase_expansion"), [new Place(1), new Place(2), new Place(-1), new Place(4)])], 0, "\\+"));
add("sys_phrase_expansion", 4, new Clause(5, [new Place(-2), new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("callable"), [new Place(0)]), new Skeleton(new Cache("=.."), [new Place(0), new Skeleton(".", [new Place(-2), new Place(-6)])]), new Skeleton(new Cache("append"), [new Place(4), new Skeleton(".", [new Place(1), new Skeleton(".", [new Place(2), "[]"])]), new Place(-4)]), new Skeleton(new Cache("=.."), [new Place(3), new Skeleton(".", [new Place(0), new Place(2)])])], -1, undefined));
add("sys_list_expansion", 3, new Clause(2, [new Place(-3), new Place(-1), new Place(-1)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Cache("fail")], 0, undefined));
add("sys_list_expansion", 3, new Clause(1, ["[]", new Place(-2), new Place(0)], [], -1, "[]"));
add("sys_list_expansion", 3, new Clause(3, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Place(-4), new Skeleton(".", [new Place(0), new Place(-2)])], [new Skeleton(new Cache("sys_list_expansion"), [new Place(1), new Place(2), new Place(0)])], -1, "."));
add("absolute_file_name", 2, new Clause(3, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("current_prolog_flag"), ["base_url", new Place(-4)]), new Skeleton(new Cache("sys_file_combine"), [new Place(2), new Place(0), new Place(1)])], -1, undefined));
add("sys_file_combine", 3, new Clause(3, [new Place(-1), new Place(-3), new Place(-4)], [new Skeleton(new Cache("is_absolute_file_name"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, undefined));
add("sys_file_combine", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("file_directory_name"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("atom_concat"), [new Place(0), new Place(1), new Place(2)])], -1, undefined));
add("is_absolute_file_name", 1, new Clause(4, [new Place(-2)], [new Skeleton(new Cache("atom_length"), [new Place(0), new Place(-3)]), new Skeleton(make_defined([new Clause(3, [new Place(-3), new Place(-4), new Place(-1)], [new Skeleton(new Cache("sub_atom"), [new Place(1), new Place(2), new Place(-1), new Place(-1), "\/"]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined), new Clause(2, [new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined)]), [new Place(0), new Place(-4), new Place(1)]), new Skeleton(make_defined([new Clause(3, [new Place(-3), new Place(-4), new Place(-1)], [new Skeleton(new Cache("sub_atom"), [new Place(1), new Place(2), new Place(-1), new Place(-1), "\\"]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined), new Clause(2, [new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined)]), [new Place(0), new Place(-5), new Place(1)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("min"), [new Place(2), new Place(3)]), new Place(-5)]), new Skeleton(make_defined([new Clause(3, [new Place(-3), new Place(-4), new Place(-1)], [new Skeleton(new Cache("=="), [new Place(1), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("<"), [new Place(1), new Place(2)])], 0, undefined), new Clause(3, [new Place(-3), new Place(-1), new Place(-4)], [new Skeleton(new Cache("sub_atom"), [new Place(2), new Place(-4), new Place(-1), new Place(-1), ":"]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("<"), [new Place(2), new Place(1)])], 0, undefined)]), [new Place(3), new Place(1), new Place(0)])], -1, undefined));
add("file_directory_name", 2, new Clause(4, [new Place(-2), new Place(-3)], [new Skeleton(make_defined([new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("last_sub_atom"), [new Place(1), new Place(2), new Place(-1), new Place(-1), "\/"]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined), new Clause(1, [new Place(-1), new Place(-2)], [new Skeleton(new Cache("="), [new Place(0), -1])], -1, undefined)]), [new Place(0), new Place(-4)]), new Skeleton(make_defined([new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("last_sub_atom"), [new Place(1), new Place(2), new Place(-1), new Place(-1), "\\"]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined), new Clause(1, [new Place(-1), new Place(-2)], [new Skeleton(new Cache("="), [new Place(0), -1])], -1, undefined)]), [new Place(0), new Place(-5)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("max"), [new Place(2), new Place(3)]), new Place(-5)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("+"), [new Place(3), 1]), new Place(-5)]), new Skeleton(new Cache("sub_atom"), [new Place(0), 0, new Place(3), new Place(-1), new Place(1)])], -1, undefined));
add("file_base_name", 2, new Clause(5, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("atom_length"), [new Place(0), new Place(-4)]), new Skeleton(make_defined([new Clause(3, [new Place(-3), new Place(-4), new Place(-1)], [new Skeleton(new Cache("last_sub_atom"), [new Place(1), new Place(-1), new Place(-1), new Place(2), "\/"]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined), new Clause(2, [new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined)]), [new Place(0), new Place(-5), new Place(2)]), new Skeleton(make_defined([new Clause(3, [new Place(-3), new Place(-4), new Place(-1)], [new Skeleton(new Cache("last_sub_atom"), [new Place(1), new Place(-1), new Place(-1), new Place(2), "\\"]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined), new Clause(2, [new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined)]), [new Place(0), new Place(-6), new Place(2)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("min"), [new Place(3), new Place(4)]), new Place(-6)]), new Skeleton(new Cache("sub_atom"), [new Place(0), new Place(-1), new Place(4), 0, new Place(1)])], -1, undefined));
add("strings", 3, new Clause(0, ["exception_unknown", "de", "Unbekannte Ausnahme: "], [], -1, "exception_unknown"));
add("strings", 3, new Clause(0, ["exception_error", "de", "Fehler: "], [], -1, "exception_error"));
add("strings", 3, new Clause(0, ["exception_warning", "de", "Warnung: "], [], -1, "exception_warning"));
add("strings", 3, new Clause(0, ["exception_context", "de", "\tUnbekannter Kontext: "], [], -1, "exception_context"));
add("strings", 3, new Clause(0, ["exception_template", "de", "Unbekannte Vorlage: "], [], -1, "exception_template"));
add("strings", 3, new Clause(0, ["file_line", "de", "\t~ auf ~"], [], -1, "file_line"));
add("strings", 3, new Clause(0, ["format.date", "de", "%d.%m.%Y"], [], -1, "format.date"));
add("strings", 3, new Clause(0, ["format.datetime", "de", "%d.%m.%Y %H:%M"], [], -1, "format.datetime"));
add("strings", 3, new Clause(0, ["time.time", "de", "% Zeit ~ ms"], [], -1, "time.time"));
add("strings", 3, new Clause(0, ["time.gctime", "de", ", GC ~ ms"], [], -1, "time.gctime"));
add("strings", 3, new Clause(0, ["time.lips", "de", ", Lips ~"], [], -1, "time.lips"));
add("strings", 3, new Clause(0, ["time.wall", "de", ", Uhr ~~"], [], -1, "time.wall"));
add("strings", 3, new Clause(0, ["statistics.gctime", "de", "GC Zeit\t\t~ ms"], [], -1, "statistics.gctime"));
add("strings", 3, new Clause(0, ["statistics.calls", "de", "Aufrufe\t\t~"], [], -1, "statistics.calls"));
add("strings", 3, new Clause(0, ["statistics.time", "de", "Betriebszeit\t~ ms"], [], -1, "statistics.time"));
add("strings", 3, new Clause(0, ["statistics.wall", "de", "Uhrzeit\t\t~~"], [], -1, "statistics.wall"));
add("strings", 3, new Clause(0, ["exception_unknown", "", "Unknown exception: "], [], -1, "exception_unknown"));
add("strings", 3, new Clause(0, ["exception_error", "", "Error: "], [], -1, "exception_error"));
add("strings", 3, new Clause(0, ["exception_warning", "", "Warning: "], [], -1, "exception_warning"));
add("strings", 3, new Clause(0, ["exception_context", "", "\tUnknown context: "], [], -1, "exception_context"));
add("strings", 3, new Clause(0, ["exception_template", "", "Unknown template: "], [], -1, "exception_template"));
add("strings", 3, new Clause(0, ["file_line", "", "\t~ at ~"], [], -1, "file_line"));
add("strings", 3, new Clause(0, ["format.date", "", "%d\/%m\/%Y"], [], -1, "format.date"));
add("strings", 3, new Clause(0, ["format.datetime", "", "%d\/%m\/%Y %H:%M"], [], -1, "format.datetime"));
add("strings", 3, new Clause(0, ["time.time", "", "% Time ~ ms"], [], -1, "time.time"));
add("strings", 3, new Clause(0, ["time.gctime", "", ", GC ~ ms"], [], -1, "time.gctime"));
add("strings", 3, new Clause(0, ["time.lips", "", ", Lips ~"], [], -1, "time.lips"));
add("strings", 3, new Clause(0, ["time.wall", "", ", Wall ~~"], [], -1, "time.wall"));
add("strings", 3, new Clause(0, ["statistics.gctime", "", "GC time\t\t~ ms"], [], -1, "statistics.gctime"));
add("strings", 3, new Clause(0, ["statistics.calls", "", "Calls\t\t~"], [], -1, "statistics.calls"));
add("strings", 3, new Clause(0, ["statistics.time", "", "Realtime\t~ ms"], [], -1, "statistics.time"));
add("strings", 3, new Clause(0, ["statistics.wall", "", "Walltime\t~~"], [], -1, "statistics.wall"));
add("strings", 3, new Clause(0, ["instantiation_error", "de", "Argument sollte keine Variable sein."], [], -1, "instantiation_error"));
add("strings", 3, new Clause(0, ["syntax_error.directive_failed", "de", "Direktive fehlgeschlagen."], [], -1, "syntax_error.directive_failed"));
add("strings", 3, new Clause(0, ["existence_error.body", "de", "Prädikat ~ fehlt Implementation."], [], -1, "existence_error.body"));
add("strings", 3, new Clause(0, ["existence_error.procedure", "de", "Prädikat ~ undefiniert oder unerreichbar."], [], -1, "existence_error.procedure"));
add("strings", 3, new Clause(0, ["permission_error.modify.static_procedure", "de", "Kann Prädikat ~ nicht aktualisieren."], [], -1, "permission_error.modify.static_procedure"));
add("strings", 3, new Clause(0, ["permission_error.coerce.procedure", "de", "Kann Prädikat ~ nicht zu anderen Delegiertentyp zwingen."], [], -1, "permission_error.coerce.procedure"));
add("strings", 3, new Clause(0, ["permission_error.access.private_procedure", "de", "Kann auf Prädikat ~ nicht zugreifen."], [], -1, "permission_error.access.private_procedure"));
add("strings", 3, new Clause(0, ["permission_error.redefine.procedure", "de", "Kann Prädikat ~ nicht umdefinieren, nicht als Mehrdateien markiert."], [], -1, "permission_error.redefine.procedure"));
add("strings", 3, new Clause(0, ["permission_error.promote.multifile", "de", "Kann Funktion ~ nicht zu Mehrdateien heben."], [], -1, "permission_error.promote.multifile"));
add("strings", 3, new Clause(0, ["permission_error.create.operator", "de", "Kann Operator ~ nicht erstellen."], [], -1, "permission_error.create.operator"));
add("strings", 3, new Clause(0, ["resource_error.illegal_method", "de", "Methode nicht zugelassen."], [], -1, "resource_error.illegal_method"));
add("strings", 3, new Clause(0, ["system_error.timelimit_exceeded", "de", "Ausführung abgebrochen da Zeitfrist abgelaufen."], [], -1, "system_error.timelimit_exceeded"));
add("strings", 3, new Clause(0, ["system_error.user_abort", "de", "Ausführung auf Benutzerwunsch abgebrochen."], [], -1, "system_error.user_abort"));
add("strings", 3, new Clause(0, ["system_error.stack_overflow", "de", "Ausführung wegen Stapelüberlauf abgebrochen."], [], -1, "system_error.stack_overflow"));
add("strings", 3, new Clause(0, ["instantiation_error", "", "Argument should not be a variable."], [], -1, "instantiation_error"));
add("strings", 3, new Clause(0, ["syntax_error.directive_failed", "", "Directive failed."], [], -1, "syntax_error.directive_failed"));
add("strings", 3, new Clause(0, ["existence_error.body", "", "Predicate ~ implementation missing."], [], -1, "existence_error.body"));
add("strings", 3, new Clause(0, ["existence_error.procedure", "", "Undefined or inaccesible predicate ~."], [], -1, "existence_error.procedure"));
add("strings", 3, new Clause(0, ["permission_error.modify.static_procedure", "", "Can\'t modify predicate ~."], [], -1, "permission_error.modify.static_procedure"));
add("strings", 3, new Clause(0, ["permission_error.coerce.procedure", "", "Can\'t coerce predicate ~ into other delegate type."], [], -1, "permission_error.coerce.procedure"));
add("strings", 3, new Clause(0, ["permission_error.access.private_procedure", "", "Can\'t access predicate ~."], [], -1, "permission_error.access.private_procedure"));
add("strings", 3, new Clause(0, ["permission_error.redefine.procedure", "", "Can\'t redefine predicate ~, not marked multfile."], [], -1, "permission_error.redefine.procedure"));
add("strings", 3, new Clause(0, ["permission_error.promote.multifile", "", "Can\'t promote predicate ~ to multi-file."], [], -1, "permission_error.promote.multifile"));
add("strings", 3, new Clause(0, ["permission_error.create.operator", "", "Can\'t create the operator ~."], [], -1, "permission_error.create.operator"));
add("strings", 3, new Clause(0, ["resource_error.illegal_method", "", "Method not allowed."], [], -1, "resource_error.illegal_method"));
add("strings", 3, new Clause(0, ["system_error.timelimit_exceeded", "", "Execution aborted since time limit exceeded."], [], -1, "system_error.timelimit_exceeded"));
add("strings", 3, new Clause(0, ["system_error.user_abort", "", "Execution aborted on user request."], [], -1, "system_error.user_abort"));
add("strings", 3, new Clause(0, ["system_error.stack_overflow", "", "Execution aborted because of stack overflow."], [], -1, "system_error.stack_overflow"));
add("dynamic", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("dynamic", 1, new Clause(3, [new Skeleton("\/", [new Place(-3), new Place(-4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_check_atom"), [new Place(1)]), new Skeleton(new Cache("sys_check_integer"), [new Place(2)]), new Skeleton(new Cache("sys_style_indicator"), [new Place(1), new Place(2)]), new Skeleton(new Cache("kb_pred_touch"), [new Place(1), new Place(2), 1])], 0, "\/"));
add("dynamic", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["predicate_indicator", new Place(0)]), new Place(-1)])])], -1, undefined));
add("asserta", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("sys_trans_horn"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("sys_encode_horn"), [new Place(0), new Place(-3), 0]), new Skeleton(new Cache("sys_host_make"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_host_asserta"), [new Place(0), new Place(1)])], -1, undefined));
add("sys_host_asserta", 2, new Clause(3, [new Skeleton("tr_clause", [new Place(-1), new Place(-3), new Place(-1)]), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("functor"), [new Place(1), new Place(-3), new Place(-2)]), new Skeleton(new Cache("ir_clause_add"), [new Place(1), new Place(0), new Place(2), 2])], 0, "tr_clause"));
add("sys_host_asserta", 2, new Clause(1, [new Place(-2), new Place(-1)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["tr_clause", new Place(0)]), new Place(-1)])])], -1, undefined));
add("assertz", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("sys_trans_horn"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("sys_encode_horn"), [new Place(0), new Place(-3), 0]), new Skeleton(new Cache("sys_host_make"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_host_assertz"), [new Place(0), new Place(1)])], -1, undefined));
add("sys_host_assertz", 2, new Clause(3, [new Skeleton("tr_clause", [new Place(-1), new Place(-3), new Place(-1)]), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("functor"), [new Place(1), new Place(-3), new Place(-2)]), new Skeleton(new Cache("ir_clause_add"), [new Place(1), new Place(0), new Place(2), 3])], 0, "tr_clause"));
add("sys_host_assertz", 2, new Clause(1, [new Place(-2), new Place(-1)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["tr_clause", new Place(0)]), new Place(-1)])])], -1, undefined));
add("clause", 2, new Clause(3, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_check_callable"), [new Place(0)]), new Skeleton(new Cache("kb_clause_ref"), [new Place(0), 2, new Place(-4)]), new Skeleton(new Cache("kb_clause_data"), [new Place(2), new Place(0), new Place(-2), new Place(-4)]), new Skeleton(new Cache("sys_decode_body"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_untrans_body"), [new Place(2), new Place(0), new Place(-2)]), new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined));
add("retract", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("retract", 1, new Clause(6, [new Skeleton(":-", [new Place(-3), new Place(-4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_check_callable"), [new Place(1)]), new Skeleton(new Cache("functor"), [new Place(1), new Place(-2), new Place(-5)]), new Skeleton(new Cache("kb_clause_ref"), [new Place(1), 3, new Place(-6)]), new Skeleton(new Cache("kb_clause_data"), [new Place(4), new Place(1), new Place(-3), new Place(-7)]), new Skeleton(new Cache("sys_decode_body"), [new Place(5), new Place(-7)]), new Skeleton(new Cache("sys_untrans_body"), [new Place(5), new Place(1), new Place(-3)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)]), new Skeleton(new Cache("kb_clause_remove"), [new Place(0), new Place(3), 0, new Place(4)])], 0, ":-"));
add("retract", 1, new Clause(4, [new Place(-2)], [new Skeleton(new Cache("sys_check_callable"), [new Place(0)]), new Skeleton(new Cache("functor"), [new Place(0), new Place(-3), new Place(-4)]), new Skeleton(new Cache("kb_clause_ref"), [new Place(0), 3, new Place(-5)]), new Skeleton(new Cache("kb_clause_data"), [new Place(3), new Place(0), new Place(-1), new Place(-2)]), new Skeleton(new Cache("="), [new Place(0), "[]"]), new Skeleton(new Cache("kb_clause_remove"), [new Place(1), new Place(2), 0, new Place(3)])], -1, undefined));
add("retractall", 1, new Clause(4, [new Place(-2)], [new Skeleton(new Cache("sys_check_callable"), [new Place(0)]), new Skeleton(new Cache("functor"), [new Place(0), new Place(-3), new Place(-4)]), new Skeleton(new Cache("kb_clause_ref"), [new Place(0), 7, new Place(-5)]), new Skeleton(new Cache("kb_clause_head"), [new Place(3), new Place(0)]), new Skeleton(new Cache("kb_clause_remove"), [new Place(1), new Place(2), 1, new Place(3)]), new Cache("fail")], -1, undefined));
add("retractall", 1, new Clause(0, [new Place(-1)], [], -1, undefined));
add("abolish", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("abolish", 1, new Clause(3, [new Skeleton("\/", [new Place(-3), new Place(-4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_check_atom"), [new Place(1)]), new Skeleton(new Cache("sys_check_integer"), [new Place(2)]), new Skeleton(new Cache("sys_abolish"), [new Place(1), new Place(2)])], 0, "\/"));
add("abolish", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["predicate_indicator", new Place(0)]), new Place(-1)])])], -1, undefined));
add("sys_abolish", 2, new Clause(3, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("kb_pred_link"), [new Place(0), new Place(1), new Place(-4)]), new Skeleton(new Cache("kb_link_flags"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(2), 1]), 0]), new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("permission_error", ["modify", "static_procedure", new Skeleton("\/", [new Place(0), new Place(1)])]), new Place(-1)])])], -1, undefined));
add("sys_abolish", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("retractall"), [new Skeleton("sys_predprop", [new Place(0), new Place(1), new Place(-1)])]), new Skeleton(new Cache("kb_pred_destroy"), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("kb_pred_touch"), ["sys_predprop", 3, 1])]));
add("current_predicate", 1, new Clause(2, [new Place(-3)], [new Skeleton(new Cache("\\+"), [new Skeleton("ground", [new Place(1)])]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("kb_pred_list"), [new Place(-2)]), new Skeleton(new Cache("member"), [new Place(1), new Place(0)])], 0, undefined));
add("current_predicate", 1, new Clause(3, [new Skeleton("\/", [new Place(-3), new Place(-4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_check_atom"), [new Place(1)]), new Skeleton(new Cache("sys_check_integer"), [new Place(2)]), new Skeleton(new Cache("kb_pred_link"), [new Place(1), new Place(2), new Place(-1)])], 0, "\/"));
add("current_predicate", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["predicate_indicator", new Place(0)]), new Place(-1)])])], -1, undefined));
add("predicate_property", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("\\+"), [new Skeleton("ground", [new Place(1)])]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_predprop_pattern"), [new Place(1), new Place(2)])], 0, undefined));
add("predicate_property", 2, new Clause(4, [new Skeleton("\/", [new Place(-3), new Place(-4)]), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_check_atom"), [new Place(1)]), new Skeleton(new Cache("sys_check_integer"), [new Place(2)]), new Skeleton(new Cache("sys_predprop_get"), [new Place(1), new Place(2), new Place(3)])], 0, "\/"));
add("predicate_property", 2, new Clause(1, [new Place(-2), new Place(-1)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["predicate_indicator", new Place(0)]), new Place(-1)])])], -1, undefined));
add("sys_predprop_pattern", 2, new Clause(3, [new Skeleton("\/", [new Place(-2), new Place(-3)]), new Place(-4)], [new Skeleton(new Cache("current_predicate"), [new Skeleton("\/", [new Place(0), new Place(1)])]), new Skeleton(new Cache("sys_predprop_get"), [new Place(0), new Place(1), new Place(2)])], -1, "\/"));
add("sys_predprop_get", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("kb_pred_link"), [new Place(0), new Place(1), new Place(-3)]), new Skeleton(new Cache("kb_link_flags"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_predprop_flag"), [new Place(1), new Place(2)])], -1, undefined));
add("sys_predprop_get", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_predprop"), [new Place(0), new Place(1), new Place(2)])], -1, undefined));
add("sys_predprop_flag", 2, new Clause(1, [new Place(-2), "dynamic"], [new Skeleton(new Cache("=\\="), [new Skeleton(new Cache("\/\\"), [new Place(0), 1]), 0])], -1, undefined));
add("sys_predprop_flag", 2, new Clause(1, [new Place(-2), "static"], [new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(0), 1]), 0])], -1, undefined));
add("sys_host_make", 2, new Clause(7, [new Skeleton("ir_clause", [new Place(-2), new Place(-3), new Place(-4), new Place(-5)]), new Place(-6)], [new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("+"), [new Place(2), 1]), new Place(-7)]), new Skeleton(new Cache("sys_host_list"), [new Place(0), new Place(-2), new Skeleton("v", [new Place(5), "[]"]), new Skeleton("v", [new Place(-7), new Place(-8)])]), new Skeleton(new Cache("sys_host_list"), [new Place(1), new Place(-3), new Skeleton("v", [new Place(5), new Place(6)]), new Skeleton("v", [new Place(-8), new Place(-1)])]), new Skeleton(new Cache("ir_clause_new"), [new Place(6), new Place(0), new Place(1), new Place(2), new Place(3), new Place(4)])], -1, "ir_clause"));
add("sys_host_make", 2, new Clause(3, [new Skeleton("ir_goal", [new Place(-2)]), new Place(-3)], [new Skeleton(new Cache("sys_host_list"), [new Place(0), new Place(-2), new Compound("v", [0, "[]"]), new Skeleton("v", [new Place(-4), new Place(-1)])]), new Skeleton(new Cache("ir_goal_new"), [new Place(2), new Place(0), new Place(1)])], -1, "ir_goal"));
add("sys_host_list", 4, new Clause(6, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Skeleton(".", [new Place(-4), new Place(-5)]), new Place(-6), new Place(-7)], [new Skeleton(new Cache("sys_host_instr"), [new Place(0), new Place(2), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_host_list"), [new Place(1), new Place(3), new Place(4), new Place(5)])], -1, "."));
add("sys_host_list", 4, new Clause(2, ["[]", "[]", new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, "[]"));
add("sys_host_instr", 4, new Clause(5, [new Skeleton("first_var", [new Place(-1), new Place(-3)]), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("ir_place_new"), [-1, new Place(2)]), new Skeleton(new Cache("="), [new Place(3), new Place(4)])], 0, "first_var"));
add("sys_host_instr", 4, new Clause(4, [new Skeleton("first_var", [new Place(-2), new Place(-1)]), new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(make_defined([new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_host_current_recycle"), [new Skeleton(".", [new Place(1), new Place(-3)]), new Place(2), new Place(-4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_host_set_recycle"), [new Place(1), new Place(2), new Place(3)])], 0, undefined), new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_host_current_max"), [new Place(0), new Place(1), new Place(-3)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("+"), [new Place(0), 1]), new Place(-2)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_host_set_max"), [new Place(0), new Place(1), new Place(2)])], -1, undefined)]), [new Place(0), new Place(2), new Place(-4)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Skeleton(new Cache("-"), [new Place(0)]), 2]), new Place(-2)]), new Skeleton(new Cache("ir_place_new"), [new Place(0), new Place(1)]), new Skeleton(new Cache("="), [new Place(2), new Place(3)])], -1, "first_var"));
add("sys_host_instr", 4, new Clause(5, [new Skeleton("var", [new Place(-2), new Place(-3)]), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(make_defined([new Clause(5, [new Place(-3), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_host_current_recycle"), [new Place(-2), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_host_set_recycle"), [new Skeleton(".", [new Place(3), new Place(0)]), new Place(2), new Place(4)])], 0, undefined), new Clause(2, [new Place(-1), new Place(-2), new Place(-1), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined)]), [new Place(1), new Place(3), new Place(0), new Place(-5)]), new Skeleton(new Cache("ir_place_new"), [new Place(0), new Place(2)]), new Skeleton(new Cache("="), [new Place(3), new Place(4)])], -1, "var"));
add("sys_host_instr", 4, new Clause(5, [new Skeleton("functor", [new Place(-2), new Place(-3)]), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("sys_host_const"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_host_list"), [new Place(1), new Place(-3), new Place(3), new Place(-5)]), new Skeleton(new Cache("ir_skeleton_new"), [new Place(0), new Place(1), new Place(2)]), new Skeleton(new Cache("="), [new Place(3), new Place(4)])], -1, "functor"));
add("sys_host_instr", 4, new Clause(4, [new Skeleton("const", [new Place(-2)]), new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_host_const"), [new Place(0), new Place(1)]), new Skeleton(new Cache("="), [new Place(2), new Place(3)])], -1, "const"));
add("sys_host_current_max", 3, new Clause(2, [new Place(-2), new Skeleton("v", [new Place(0), new Place(-3)]), new Skeleton("v", [new Place(0), new Place(1)])], [], -1, undefined));
add("sys_host_set_max", 3, new Clause(2, [new Place(-2), new Skeleton("v", [new Place(-1), new Place(-3)]), new Skeleton("v", [new Place(0), new Place(1)])], [], -1, undefined));
add("sys_host_current_recycle", 3, new Clause(2, [new Place(-2), new Skeleton("v", [new Place(-3), new Place(0)]), new Skeleton("v", [new Place(1), new Place(0)])], [], -1, undefined));
add("sys_host_set_recycle", 3, new Clause(2, [new Place(-2), new Skeleton("v", [new Place(-3), new Place(-1)]), new Skeleton("v", [new Place(1), new Place(0)])], [], -1, undefined));
add("sys_host_alternatives", 2, new Clause(4, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Skeleton(".", [new Place(-4), new Place(-5)])], [new Skeleton(new Cache("sys_host_make"), [new Place(0), new Place(2)]), new Skeleton(new Cache("sys_host_alternatives"), [new Place(1), new Place(3)])], -1, "."));
add("sys_host_alternatives", 2, new Clause(0, ["[]", "[]"], [], -1, "[]"));
add("sys_host_const", 2, new Clause(4, [new Skeleton("functor", [new Place(-3), new Place(-4)]), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_host_const"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_host_args"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("=.."), [new Place(3), new Skeleton(".", [new Place(1), new Place(2)])])], 0, "functor"));
add("sys_host_const", 2, new Clause(3, [new Skeleton("link", [new Place(-3)]), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_host_alternatives"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("kb_make_defined"), [new Place(1), new Place(2)])], 0, "link"));
add("sys_host_const", 2, new Clause(3, [new Skeleton("site", [new Place(-3)]), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("ir_pred_site"), [new Place(1), new Place(2)])], 0, "site"));
add("sys_host_const", 2, new Clause(1, [new Place(-2), new Place(0)], [], -1, undefined));
add("sys_host_args", 2, new Clause(4, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Skeleton(".", [new Place(-4), new Place(-5)])], [new Skeleton(new Cache("sys_host_const"), [new Place(0), new Place(2)]), new Skeleton(new Cache("sys_host_args"), [new Place(1), new Place(3)])], -1, "."));
add("sys_host_args", 2, new Clause(0, ["[]", "[]"], [], -1, "[]"));
add("sys_decode_body", 2, new Clause(4, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Skeleton(".", [new Place(-4), new Place(-5)])], [new Skeleton(new Cache("sys_decode_callable"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("sys_decode_goal"), [new Place(0), new Place(2)]), new Skeleton(new Cache("sys_decode_body"), [new Place(1), new Place(3)])], -1, "."));
add("sys_decode_body", 2, new Clause(0, ["[]", "[]"], [], -1, "[]"));
add("sys_decode_callable", 2, new Clause(2, [new Place(-3), new Place(1)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_decode_callable", 2, new Clause(4, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("functor"), [new Place(1), new Place(-5), new Place(-1)]), new Skeleton(new Cache("ir_is_site"), [new Place(3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("ir_site_name"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_decode_site"), [new Place(1), new Place(2), new Place(3)])], 0, undefined));
add("sys_decode_callable", 2, new Clause(1, [new Place(-2), new Place(0)], [], -1, undefined));
add("sys_decode_site", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("compound"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("=.."), [new Place(1), new Skeleton(".", [new Place(-1), new Place(-3)])]), new Skeleton(new Cache("=.."), [new Place(2), new Skeleton(".", [new Place(3), new Place(1)])])], 0, undefined));
add("sys_decode_site", 3, new Clause(1, [new Place(-1), new Place(-2), new Place(0)], [], -1, undefined));
add("sys_decode_goal", 2, new Clause(2, [new Place(-3), new Skeleton("call", [new Place(1)])], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_decode_goal", 2, new Clause(4, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("functor"), [new Place(1), new Place(-5), new Place(-1)]), new Skeleton(new Cache("kb_is_link"), [new Place(3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_decode_link"), [new Place(1), new Place(2)])], 0, undefined));
add("sys_decode_goal", 2, new Clause(3, [new Skeleton("$EVAL", [new Place(-3), new Place(-4)]), new Skeleton("is", [new Place(2), new Place(-4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_decode_expr"), [new Place(1), new Place(2)])], 0, "$EVAL"));
add("sys_decode_goal", 2, new Clause(5, [new Skeleton("=:=", [new Place(-3), new Place(-4)]), new Skeleton("=:=", [new Place(-5), new Place(-6)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_decode_expr"), [new Place(1), new Place(3)]), new Skeleton(new Cache("sys_decode_expr"), [new Place(2), new Place(4)])], 0, "=:="));
add("sys_decode_goal", 2, new Clause(5, [new Skeleton("=\\=", [new Place(-3), new Place(-4)]), new Skeleton("=\\=", [new Place(-5), new Place(-6)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_decode_expr"), [new Place(1), new Place(3)]), new Skeleton(new Cache("sys_decode_expr"), [new Place(2), new Place(4)])], 0, "=\\="));
add("sys_decode_goal", 2, new Clause(5, [new Skeleton("<", [new Place(-3), new Place(-4)]), new Skeleton("<", [new Place(-5), new Place(-6)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_decode_expr"), [new Place(1), new Place(3)]), new Skeleton(new Cache("sys_decode_expr"), [new Place(2), new Place(4)])], 0, "<"));
add("sys_decode_goal", 2, new Clause(5, [new Skeleton(">", [new Place(-3), new Place(-4)]), new Skeleton(">", [new Place(-5), new Place(-6)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_decode_expr"), [new Place(1), new Place(3)]), new Skeleton(new Cache("sys_decode_expr"), [new Place(2), new Place(4)])], 0, ">"));
add("sys_decode_goal", 2, new Clause(5, [new Skeleton("=<", [new Place(-3), new Place(-4)]), new Skeleton("=<", [new Place(-5), new Place(-6)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_decode_expr"), [new Place(1), new Place(3)]), new Skeleton(new Cache("sys_decode_expr"), [new Place(2), new Place(4)])], 0, "=<"));
add("sys_decode_goal", 2, new Clause(5, [new Skeleton(">=", [new Place(-3), new Place(-4)]), new Skeleton(">=", [new Place(-5), new Place(-6)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_decode_expr"), [new Place(1), new Place(3)]), new Skeleton(new Cache("sys_decode_expr"), [new Place(2), new Place(4)])], 0, ">="));
add("sys_decode_goal", 2, new Clause(1, [new Place(-2), new Place(0)], [], -1, undefined));
add("sys_decode_link", 2, new Clause(3, [new Place(-2), new Skeleton("$ALT", [new Place(-3)])], [new Skeleton(new Cache("findall"), [new Place(-4), new Skeleton("kb_clause_ref", [new Place(0), 0, new Place(2)]), new Place(-4)]), new Skeleton(new Cache("sys_decode_alternatives"), [new Place(2), new Place(0), new Place(1)])], -1, undefined));
add("sys_decode_alternatives", 3, new Clause(6, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Place(-4), new Skeleton(".", [new Skeleton("$SEQ", [new Place(-5), new Place(-6)]), new Place(-7)])], [new Skeleton(new Cache("kb_clause_data"), [new Place(0), new Place(2), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_decode_body"), [new Place(3), new Place(4)]), new Skeleton(new Cache("sys_decode_alternatives"), [new Place(1), new Place(2), new Place(5)])], -1, "."));
add("sys_decode_alternatives", 3, new Clause(0, ["[]", new Place(-1), "[]"], [], -1, "[]"));
add("sys_decode_expr", 2, new Clause(2, [new Place(-3), new Place(1)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_decode_expr", 2, new Clause(4, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("functor"), [new Place(1), new Place(-5), new Place(-1)]), new Skeleton(new Cache("ir_is_site"), [new Place(3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("ir_site_name"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_decode_compute"), [new Place(1), new Place(2), new Place(3)])], 0, undefined));
add("sys_decode_expr", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("compound"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("=.."), [new Place(1), new Skeleton(".", [new Place(-3), new Place(-2)])]), new Skeleton(new Cache("sys_decode_args"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("=.."), [new Place(2), new Skeleton(".", [new Place(1), new Place(0)])])], 0, undefined));
add("sys_decode_expr", 2, new Clause(1, [new Place(-2), new Place(0)], [], -1, undefined));
add("sys_decode_compute", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("compound"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("=.."), [new Place(1), new Skeleton(".", [new Place(-1), new Place(-3)])]), new Skeleton(new Cache("sys_decode_args"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("=.."), [new Place(2), new Skeleton(".", [new Place(3), new Place(1)])])], 0, undefined));
add("sys_decode_compute", 3, new Clause(1, [new Place(-1), new Place(-2), new Place(0)], [], -1, undefined));
add("sys_decode_args", 2, new Clause(4, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Skeleton(".", [new Place(-4), new Place(-5)])], [new Skeleton(new Cache("sys_decode_expr"), [new Place(0), new Place(2)]), new Skeleton(new Cache("sys_decode_args"), [new Place(1), new Place(3)])], -1, "."));
add("sys_decode_args", 2, new Clause(0, ["[]", "[]"], [], -1, "[]"));
add("sys_untrans_body", 3, new Clause(4, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_untrans_rest"), [new Place(1), new Place(0), new Place(2), new Place(3)])], -1, "."));
add("sys_untrans_body", 3, new Clause(0, ["[]", new Place(-1), "true"], [], -1, "[]"));
add("sys_untrans_rest", 4, new Clause(6, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Place(-4), new Place(-5), new Skeleton(",", [new Place(-6), new Place(-7)])], [new Skeleton(new Cache("sys_untrans_goal"), [new Place(2), new Place(3), new Place(4)]), new Skeleton(new Cache("sys_untrans_rest"), [new Place(1), new Place(0), new Place(3), new Place(5)])], -1, "."));
add("sys_untrans_rest", 4, new Clause(3, ["[]", new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_untrans_goal"), [new Place(0), new Place(1), new Place(2)])], -1, "[]"));
add("sys_untrans_goal", 3, new Clause(4, [new Skeleton("$ALT", [new Place(-3)]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_untrans_alternatives"), [new Place(1), new Place(2), new Place(3)])], 0, "$ALT"));
add("sys_untrans_goal", 3, new Clause(3, [new Skeleton("$CUT", [new Place(-3)]), new Skeleton("just", [new Place(-4)]), "!"], [new Skeleton(new Cache("=="), [new Place(1), new Place(2)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "$CUT"));
add("sys_untrans_goal", 3, new Clause(1, [new Place(-2), new Place(-1), new Place(0)], [], -1, undefined));
add("sys_untrans_alternatives", 3, new Clause(4, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_untrans_more"), [new Place(1), new Place(0), new Place(2), new Place(3)])], -1, "."));
add("sys_untrans_alternatives", 3, new Clause(0, ["[]", new Place(-1), "fail"], [], -1, "[]"));
add("sys_untrans_more", 4, new Clause(7, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Skeleton("$SEQ", [new Place(-4), new Place(-5)]), new Place(-6), new Skeleton(";", [new Place(-7), new Place(-8)])], [new Skeleton(new Cache("sys_untrans_alternative"), [new Place(2), new Place(3), new Place(4), new Place(5)]), new Skeleton(new Cache("sys_untrans_more"), [new Place(1), new Place(0), new Place(4), new Place(6)])], -1, "."));
add("sys_untrans_more", 4, new Clause(4, ["[]", new Skeleton("$SEQ", [new Place(-2), new Place(-3)]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_untrans_alternative"), [new Place(0), new Place(1), new Place(2), new Place(3)])], -1, "[]"));
add("sys_untrans_alternative", 4, new Clause(6, [new Skeleton("just", [new Place(-2)]), new Place(-3), new Place(-4), new Skeleton("->", [new Place(-5), new Place(-6)])], [new Skeleton(new Cache("sys_untrans_split"), [new Place(1), new Place(0), new Place(-2), new Place(-3)]), new Skeleton(new Cache("sys_trans_mark"), [new Place(-7), new Place(0), new Place(-2)]), new Skeleton(new Cache("sys_untrans_body"), [new Place(0), new Place(5), new Place(3)]), new Skeleton(new Cache("sys_untrans_body"), [new Place(1), new Place(2), new Place(4)])], -1, "just"));
add("sys_untrans_alternative", 4, new Clause(3, ["nothing", new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_untrans_body"), [new Place(0), new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_untrans_ambiguity"), [new Place(1), new Place(2)])], -1, "nothing"));
add("sys_untrans_split", 4, new Clause(4, [new Skeleton(".", [new Skeleton("$CUT", [new Place(-3)]), new Place(-4)]), new Place(-5), "[]", new Place(2)], [new Skeleton(new Cache("=="), [new Place(1), new Place(3)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "."));
add("sys_untrans_split", 4, new Clause(4, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Place(-4), new Skeleton(".", [new Place(0), new Place(-2)]), new Place(-5)], [new Skeleton(new Cache("sys_untrans_split"), [new Place(1), new Place(2), new Place(0), new Place(3)])], -1, "."));
add("sys_untrans_ambiguity", 2, new Clause(3, [new Skeleton("->", [new Place(-3), new Place(-4)]), new Skeleton(";", [new Skeleton("->", [new Place(1), new Place(2)]), "fail"])], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "->"));
add("sys_untrans_ambiguity", 2, new Clause(1, [new Place(-2), new Place(0)], [], -1, undefined));
run(new Goal(1, [new Skeleton(new Cache("sys_get_locale"), [new Place(-2)]), new Skeleton(new Cache("set_prolog_flag"), ["sys_locale", new Place(0)])]));
run(new Goal(1, [new Skeleton(new Cache("sys_get_args"), [new Place(-2)]), new Skeleton(new Cache("set_prolog_flag"), ["argv", new Place(0)])]));
add("include", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("sys_file_relative"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("file_property"), [new Place(0), new Skeleton("real_path", [new Place(-2)])]), new Skeleton(new Cache("sys_include_file"), [new Place(0)])], -1, undefined));
add("sys_include_file", 1, new Clause(1, ["user"], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("current_input"), [new Place(-2)]), new Skeleton(new Cache("sys_include_stream"), ["user", new Place(0)])], 0, "user"));
add("sys_include_file", 1, new Clause(3, [new Place(-3)], [new Skeleton(new Cache("current_prolog_flag"), ["foreign_ext", new Place(-4)]), new Skeleton(new Cache("sub_atom"), [new Place(1), new Place(-1), new Place(-1), 0, new Place(2)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_include_native"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("ir_object_current"), [new Place(1), "module", new Place(-3)]), new Skeleton(new Cache("os_invoke_main"), [new Place(1)])], 0, undefined));
add("sys_include_file", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("setup_once_cleanup"), [new Skeleton("open", [new Place(0), "read", new Place(-3)]), new Skeleton("sys_include_stream", [new Place(0), new Place(1)]), new Skeleton("close", [new Place(1)])])], -1, undefined));
add("sys_include_native", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Compound(new Cache("current_prolog_flag"), ["import_async", "on"]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("os_import_promise"), [new Place(1), new Place(2), new Place(-4)]), new Skeleton(new Cache("$YIELD"), [new Place(2)])], 0, undefined));
add("sys_include_native", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("os_import_sync"), [new Place(0), new Place(1)])], -1, undefined));
add(".", 2, new Clause(3, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("member"), [new Place(-4), new Skeleton(".", [new Place(0), new Place(1)])]), new Skeleton(new Cache("ensure_loaded"), [new Place(2)]), new Cache("fail")], -1, undefined));
add(".", 2, new Clause(0, [new Place(-1), new Place(-1)], [], -1, undefined));
add("ensure_loaded", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("ensure_loaded", 1, new Clause(1, ["user"], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Compound(new Cache("sys_include_file"), ["user"])], 0, "user"));
add("ensure_loaded", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("sys_file_relative"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("dg_get_partition"), [new Place(-3)]), new Skeleton(make_defined([new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_srcprop"), [new Place(1), new Skeleton("sys_link", [new Place(2)])]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined), new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("assertz"), [new Skeleton("sys_srcprop", [new Place(0), new Skeleton("sys_link", [new Place(1)])])])], -1, undefined)]), [new Place(1), new Place(0)]), new Skeleton(new Cache("sys_ensure_file"), [new Place(0)])], -1, undefined));
add("sys_ensure_file", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("sys_prop_map"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("ir_object_current"), [new Place(0), "real_path", new Place(-3)]), new Skeleton(new Cache("ir_object_current"), [new Place(0), "last_modified", new Place(-2)]), new Skeleton(new Cache("sys_check_file"), [new Place(1), new Place(0)])], -1, undefined));
add("make", 0, new Clause(0, [], [new Cache("sys_make_unmark"), new Compound(new Cache("sys_replay_file"), ["user"]), new Cache("sys_make_reclaim")], -1, undefined));
add("sys_make_unmark", 0, new Clause(2, [], [new Skeleton(new Cache("retract"), [new Skeleton("sys_source", [new Place(-2), new Place(-3), 1])]), new Skeleton(new Cache("assertz"), [new Skeleton("sys_source", [new Place(0), new Place(1), 0])]), new Cache("fail")], -1, undefined));
add("sys_make_unmark", 0, new Clause(0, [], [], -1, undefined));
add("sys_make_reclaim", 0, new Clause(1, [], [new Skeleton(new Cache("retract"), [new Skeleton("sys_source", [new Place(-2), new Place(-1), 0])]), new Skeleton(new Cache("sys_clear_file"), [new Place(0)]), new Cache("fail")], -1, undefined));
add("sys_make_reclaim", 0, new Clause(0, [], [], -1, undefined));
add("sys_check_file", 2, new Clause(5, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("shield"), [new Skeleton("sys_check_file2", [new Place(1), new Place(2), new Place(-5), new Place(-6)])]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_check_file3"), [new Place(1), new Place(2), new Place(3), new Place(4)])], 0, undefined));
add("sys_check_file", 2, new Clause(1, [new Place(-2), new Place(-1)], [new Skeleton(new Cache("sys_load_file"), [new Place(0)])], -1, undefined));
add("sys_check_file2", 4, new Clause(4, [new Place(-3), new Place(-1), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_source"), [new Place(1), new Place(2), new Place(3)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_check_file2", 4, new Clause(2, [new Place(-2), new Place(-3), new Place(-1), new Place(-1)], [new Skeleton(new Cache("assertz"), [new Skeleton("sys_source", [new Place(0), new Place(1), 1])]), new Cache("fail")], -1, undefined));
add("sys_check_file3", 4, new Clause(1, [new Place(-1), new Place(-1), new Place(-1), 1], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_check_file3", 4, new Clause(3, [new Place(-3), new Place(-4), new Place(2), new Place(-1)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("shield"), [new Skeleton(",", [new Skeleton("retractall", [new Skeleton("sys_source", [new Place(1), new Place(-1), new Place(-1)])]), new Skeleton("assertz", [new Skeleton("sys_source", [new Place(1), new Place(2), 1])])])]), new Skeleton(new Cache("sys_replay_file"), [new Place(1)])], 0, undefined));
add("sys_check_file3", 4, new Clause(2, [new Place(-2), new Place(-3), new Place(-1), new Place(-1)], [new Skeleton(new Cache("shield"), [new Skeleton(",", [new Skeleton("retractall", [new Skeleton("sys_source", [new Place(0), new Place(-1), new Place(-1)])]), new Skeleton("assertz", [new Skeleton("sys_source", [new Place(0), new Place(1), 1])])])]), new Skeleton(new Cache("sys_clear_file"), [new Place(0)]), new Skeleton(new Cache("sys_load_file"), [new Place(0)])], -1, undefined));
add("sys_load_file", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("setup_once_cleanup"), [new Skeleton("sys_loading_begin", [new Place(0), new Place(-3)]), new Skeleton("sys_include_file", [new Place(0)]), new Skeleton("sys_loading_end", [new Place(1)])])], -1, undefined));
add("sys_loading_begin", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("dg_get_partition"), [new Place(1)]), new Skeleton(new Cache("dg_set_partition"), [new Place(0)])], -1, undefined));
add("sys_loading_end", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("dg_get_partition"), [new Place(-3)]), new Skeleton(new Cache("dg_set_partition"), [new Place(0)]), new Skeleton(new Cache("os_task_current"), [new Place(-2)]), new Skeleton(new Cache("retractall"), [new Skeleton("sys_lastpred", [new Place(0), new Place(-1), new Place(-1)])]), new Skeleton(new Cache("retractall"), [new Skeleton("sys_predprop", [new Place(-1), new Place(-1), new Skeleton("sys_discontiguous", [new Place(1)])])])], -1, undefined));
add("sys_clear_file", 1, new Clause(3, [new Place(-2)], [new Skeleton(new Cache("retractall"), [new Skeleton("sys_op", [new Place(-1), new Place(-1), new Place(-1), new Place(-1), new Place(0)])]), new Skeleton(new Cache("retractall"), [new Skeleton("sys_srcprop", [new Place(0), new Place(-1)])]), new Skeleton(new Cache("sys_predprop"), [new Place(-3), new Place(-4), new Skeleton("sys_usage", [new Place(0)])]), new Skeleton(make_defined([new Clause(5, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_predprop"), [new Place(1), new Place(2), new Skeleton("sys_usage", [new Place(-6)])]), new Skeleton(new Cache("\\=="), [new Place(3), new Place(4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_clear_file3"), [new Place(1), new Place(2), new Place(3)])], 0, undefined), new Clause(2, [new Place(-2), new Place(-3), new Place(-1)], [new Skeleton(new Cache("sys_clear_file2"), [new Place(0), new Place(1)])], -1, undefined)]), [new Place(1), new Place(2), new Place(0)]), new Cache("fail")], -1, undefined));
add("sys_clear_file", 1, new Clause(0, [new Place(-1)], [], -1, undefined));
add("sys_clear_file2", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("retractall"), [new Skeleton("sys_predprop", [new Place(0), new Place(1), new Place(-1)])]), new Skeleton(new Cache("kb_pred_destroy"), [new Place(0), new Place(1)])], -1, undefined));
add("sys_clear_file3", 3, new Clause(4, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("retractall"), [new Skeleton("sys_predprop", [new Place(0), new Place(1), new Skeleton("sys_usage", [new Place(2)])])]), new Skeleton(new Cache("retractall"), [new Skeleton("sys_predprop", [new Place(0), new Place(1), new Skeleton("sys_multifile", [new Place(2)])])]), new Skeleton(new Cache("functor"), [new Place(-5), new Place(0), new Place(1)]), new Skeleton(new Cache("kb_clause_ref"), [new Place(3), 4, new Place(-5)]), new Skeleton(new Cache("kb_clause_shard"), [new Place(3), new Place(2)]), new Skeleton(new Cache("kb_clause_remove"), [new Place(0), new Place(1), 1, new Place(3)]), new Cache("fail")], -1, undefined));
add("sys_clear_file3", 3, new Clause(0, [new Place(-1), new Place(-1), new Place(-1)], [], -1, undefined));
add("sys_replay_file", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("sys_srcprop"), [new Place(0), new Skeleton("sys_link", [new Place(-2)])]), new Skeleton(new Cache("sys_replay_file2"), [new Place(0)]), new Cache("fail")], -1, undefined));
add("sys_replay_file", 1, new Clause(0, [new Place(-1)], [], -1, undefined));
add("sys_replay_file2", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("sys_trap"), [new Skeleton("sys_ensure_file", [new Place(0)]), new Place(-2), new Skeleton(";", [new Skeleton(",", [new Skeleton("sys_chain_head", [new Place(0), new Skeleton("error", [new Skeleton("system_error", [new Place(-1)]), new Place(-1)])]), new Skeleton("sys_raise", [new Place(0)])]), new Skeleton("sys_print_error", [new Place(0)])])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("kb_pred_touch"), ["sys_including", 3, 1])]));
add("sys_include_stream", 2, new Clause(3, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("os_task_current"), [new Place(-4)]), new Skeleton(new Cache("setup_once_cleanup"), [new Skeleton("asserta", [new Skeleton("sys_including", [new Place(0), new Place(2), new Place(1)])]), new Skeleton("sys_include_lines", [new Place(1)]), new Skeleton("once", [new Skeleton("retract", [new Skeleton("sys_including", [new Place(0), new Place(2), new Place(1)])])])])], -1, undefined));
add("sys_include_lines", 1, new Clause(2, [new Place(-3)], [new Cache("repeat"), new Skeleton(new Cache("sys_trap"), [new Skeleton("sys_next_term", [new Place(1)]), new Place(-3), new Skeleton(";", [new Skeleton(",", [new Skeleton("sys_chain_head", [new Place(1), new Skeleton("error", [new Skeleton("system_error", [new Place(-1)]), new Place(-1)])]), new Skeleton("sys_raise", [new Place(1)])]), new Skeleton(",", [new Skeleton("sys_print_error", [new Place(1)]), "fail"])])]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_next_term", 1, new Clause(3, [new Place(-2)], [new Skeleton(new Cache("read_term"), [new Place(0), new Place(-2), new Skeleton(".", [new Skeleton("variable_names", [new Place(-3)]), new Skeleton(".", [new Skeleton("singletons", [new Place(-4)]), "[]"])])]), new Skeleton(make_defined([new Clause(2, [new Place(-3), new Place(-1), new Place(-1)], [new Skeleton(new Cache("=="), [new Place(1), "end_of_file"]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined), new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_expand_include"), [new Place(0), new Place(1), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_style_static"), [new Place(2)]), new Skeleton(new Cache("sys_handle_static"), [new Place(2)]), new Cache("fail")], -1, undefined)]), [new Place(0), new Place(1), new Place(2)])], -1, undefined));
add("sys_handle_static", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("sys_trans_horn"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("sys_assertz_static"), [new Place(0)])], -1, undefined));
add("sys_assertz_static", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("sys_assertz_static", 1, new Clause(4, [new Place(-3)], [new Skeleton(new Cache("="), [new Place(1), new Skeleton("tr_clause", [new Place(-1), new Place(-4), new Place(-1)])]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("functor"), [new Place(2), new Place(-4), new Place(-2)]), new Skeleton(new Cache("sys_pred_type"), [new Place(2), new Place(0), new Place(-5)]), new Skeleton(new Cache("sys_encode_horn"), [new Place(1), new Place(-3), new Place(3)]), new Skeleton(new Cache("sys_host_make"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("ir_clause_add"), [new Place(2), new Place(0), new Place(1), 1])], 0, "tr_clause"));
add("sys_assertz_static", 1, new Clause(2, [new Place(-3)], [new Skeleton(new Cache("="), [new Place(1), new Skeleton("tr_goal", [new Place(-1)])]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_encode_horn"), [new Place(1), new Place(-3), 1]), new Skeleton(new Cache("sys_host_make"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("ir_goal_run"), [new Place(1)])], 0, "tr_goal"));
add("sys_assertz_static", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["tr_clause_or_goal", new Place(0)]), new Place(-1)])])], -1, undefined));
add("sys_pred_type", 3, new Clause(3, [new Place(-3), new Place(-4), 0], [new Skeleton(new Cache("kb_pred_link"), [new Place(1), new Place(2), new Place(-4)]), new Skeleton(new Cache("kb_link_flags"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("=\\="), [new Skeleton(new Cache("\/\\"), [new Place(2), 1]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_pred_type", 3, new Clause(0, [new Place(-1), new Place(-1), 1], [], -1, undefined));
add("sys_file_relative", 2, new Clause(1, [new Place(-2), new Place(-1)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("sys_file_relative", 2, new Clause(3, [new Skeleton("library", [new Place(-3)]), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_file_liblet"), [new Place(1), ".p", new Place(2)])], 0, "library"));
add("sys_file_relative", 2, new Clause(3, [new Skeleton("foreign", [new Place(-3)]), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("current_prolog_flag"), ["foreign_ext", new Place(-2)]), new Skeleton(new Cache("sys_file_liblet"), [new Place(1), new Place(0), new Place(2)])], 0, "foreign"));
add("sys_file_relative", 2, new Clause(4, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_file_including"), [new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_file_combine"), [new Place(3), new Place(1), new Place(2)])], 0, undefined));
add("sys_file_relative", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("absolute_file_name"), [new Place(0), new Place(1)])], -1, undefined));
add("sys_file_liblet", 3, new Clause(4, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_file_struct"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("atom_split"), [new Place(-5), "", new Skeleton(".", ["liblet\/", new Skeleton(".", [new Place(0), new Skeleton(".", [new Place(1), "[]"])])])]), new Skeleton(new Cache("current_prolog_flag"), ["system_url", new Place(-3)]), new Skeleton(new Cache("sys_file_combine"), [new Place(1), new Place(3), new Place(2)])], -1, undefined));
add("sys_file_including", 1, new Clause(3, [new Place(-3)], [new Skeleton(new Cache("os_task_current"), [new Place(-4)]), new Skeleton(new Cache("sys_including"), [new Place(1), new Place(2), new Place(-1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("\\=="), [new Place(1), "user"])], 0, undefined));
add("sys_file_struct", 2, new Clause(1, [new Place(-2), new Place(-1)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("sys_file_struct", 2, new Clause(4, [new Skeleton("\/", [new Place(-3), new Place(-4)]), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_file_struct"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("atom_split"), [new Place(3), "", new Skeleton(".", [new Place(1), new Skeleton(".", ["\/", new Skeleton(".", [new Place(2), "[]"])])])])], 0, "\/"));
add("sys_file_struct", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("atom"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, undefined));
add("sys_file_struct", 2, new Clause(1, [new Place(-2), new Place(-1)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["atom", new Place(0)]), new Place(-1)])])], -1, undefined));
add("sys_expand_include", 4, new Clause(1, [new Place(-2), new Place(-1), new Place(-1), new Place(-1)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("sys_expand_include", 4, new Clause(4, [new Skeleton("?-", [new Place(-3)]), new Place(-4), new Place(-1), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Skeleton(":-", [new Skeleton("sys_query_unattended", [new Place(1), new Place(2)])])])], 0, "?-"));
add("sys_expand_include", 4, new Clause(3, [new Place(-2), new Place(-1), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_singleton_check"), [new Place(1)]), new Skeleton(new Cache("expand_term"), [new Place(0), new Place(2)])], -1, undefined));
add("expand_term", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("term_conversion"), [new Place(1), new Place(2)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("expand_term", 2, new Clause(1, [new Place(-2), new Place(0)], [], -1, undefined));
add("sys_query_unattended", 2, new Clause(4, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("$MARK"), [new Place(-5)]), new Place(1), new Skeleton(new Cache("$MARK"), [new Place(-3)]), new Skeleton(new Cache("sys_answer_show"), [new Place(2)]), new Skeleton(make_defined([new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("=="), [new Place(1), new Place(2)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("$CUT"), [new Place(3)]), new Cache("sys_listing_period")], 0, undefined), new Clause(0, [new Place(-1), new Place(-1), new Place(-1)], [new Compound(new Cache("put_atom"), [";"]), new Cache("nl"), new Cache("fail")], -1, undefined)]), [new Place(3), new Place(1), new Place(0)])], 0, undefined));
add("sys_query_unattended", 2, new Clause(0, [new Place(-1), new Place(-1)], [new Compound(new Cache("put_atom"), ["fail"]), new Cache("sys_listing_period")], -1, undefined));
add("sys_singleton_check", 1, new Clause(2, [new Skeleton(".", [new Place(-2), new Place(-3)])], [new Skeleton(new Cache("sys_assoc_keys"), [new Skeleton(".", [new Place(0), new Place(1)]), new Place(-3)]), new Skeleton(new Cache("="), [new Place(-2), new Skeleton("warning", [new Skeleton("syntax_error", ["singleton_var", new Place(1)]), new Place(-1)])]), new Skeleton(new Cache("sys_fill_stack"), [new Place(0)]), new Skeleton(new Cache("sys_print_error"), [new Place(0)])], -1, "."));
add("sys_singleton_check", 1, new Clause(0, ["[]"], [], -1, "[]"));
add("sys_assoc_keys", 2, new Clause(2, [new Skeleton(".", [new Skeleton("=", [new Place(-2), new Place(-1)]), new Place(-3)]), new Skeleton(".", [new Place(0), new Place(-2)])], [new Skeleton(new Cache("sys_assoc_keys"), [new Place(1), new Place(0)])], -1, "."));
add("sys_assoc_keys", 2, new Clause(0, ["[]", "[]"], [], -1, "[]"));
add("strings", 3, new Clause(0, ["syntax_error.discontiguous_pred", "de", "Unterbrochenes Prädikat ~, entsprechend deklarieren."], [], -1, "syntax_error.discontiguous_pred"));
add("strings", 3, new Clause(0, ["syntax_error.discontiguous_pred", "", "Discontiguous predicate ~, declare accordingly."], [], -1, "syntax_error.discontiguous_pred"));
run(new Goal(0, [new Compound(new Cache("sys_multifile_safe"), ["strings", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_multifile_safe"), ["term_conversion", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_multifile_safe"), ["strings", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_multifile_safe"), ["strings", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_trans_horn", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_trans_body", 5])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_trans_cut", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_trans_disj", 5])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_trans_alternative", 5])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_trans_mark", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_encode_horn", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_encode_alternatives", 4])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_ast_body", 6])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_ast_goal", 7])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_ast_invoke", 5])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_ast_args", 4])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_ast_expr", 4])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_ast_compute", 5])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_ast_list", 4])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_ast_term", 4])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_const_functor", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_const_only", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_ast_var", 4])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_current_dcg", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_set_dcg", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_idx_value", 4])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_idx_value_arg", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_idx_value_term", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["eq_contains", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["eq_intersection", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_check_callable", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["open", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["close", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["stream_property", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["term_variables", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["is", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["call", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["true", 0])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["!", 0])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), [",", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), [";", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["->", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["\\=", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["\\+", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["once", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["repeat", 0])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["catch", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_error_handler", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_chain_head", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["throw", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_fill_stack", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_fetch_stack", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["ignore", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["chain", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_chain_error", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_chain_raise", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_chain_concat", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["abort", 0])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["once_cleanup", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["setup_once_cleanup", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_setup_once_cleanup", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_once_cleanup", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_print_error", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_print_error", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_print_trace", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_print_frame", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_print_message", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_print_message", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_print_message", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_inter_polate", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_zipper_output", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["get_string", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["get_string", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_locale_ancestor", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_check_atom", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_check_integer", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["call_later", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_frost_horn", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_call_print", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["create_task", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sleep", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["time_out", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_timeout", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["member", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_member", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["select", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_select", 4])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["findall", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_findall", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["list_to_set", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_list_to_set", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["reverse", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_reverse", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["append", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["length", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_length", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_length", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["number_codes", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["between", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_between", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_lastpred", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_update_last", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_style_static", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_style_head", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_style_indicator", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_usage_predicate", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["discontiguous", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["multifile", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_multifile_safe", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_source", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_srcprop", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["current_source", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["source_property", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_emulated", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["set_prolog_flag", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_prolog_flag_set", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_check_codes", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["current_prolog_flag", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_prolog_flag_get", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_prolog_flag_decode", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["statistics", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_stat_get", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["statistics", 0])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_convert_stat", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["time", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_time_set", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_time_show", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["try_call_finally", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sub_atom", 5])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["last_sub_atom", 5])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_op", 5])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["current_op", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["op", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_check_priority", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_op_retract", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_op_assert", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_op_space", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_op_format", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_op_format2", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_op_format3", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["term_conversion", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_phrase_expansion", 4])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_list_expansion", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["absolute_file_name", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_file_combine", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["is_absolute_file_name", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["file_directory_name", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["file_base_name", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["strings", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["dynamic", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["asserta", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_host_asserta", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["assertz", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_host_assertz", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["clause", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["retract", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["retractall", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["abolish", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_abolish", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_predprop", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["current_predicate", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["predicate_property", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_predprop_pattern", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_predprop_get", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_predprop_flag", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_host_make", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_host_list", 4])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_host_instr", 4])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_host_current_max", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_host_set_max", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_host_current_recycle", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_host_set_recycle", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_host_alternatives", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_host_const", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_host_args", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_decode_body", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_decode_callable", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_decode_site", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_decode_goal", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_decode_link", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_decode_alternatives", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_decode_expr", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_decode_compute", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_decode_args", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_untrans_body", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_untrans_rest", 4])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_untrans_goal", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_untrans_alternatives", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_untrans_more", 4])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_untrans_alternative", 4])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_untrans_split", 4])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_untrans_ambiguity", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["include", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_include_file", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_include_native", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), [".", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["ensure_loaded", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_ensure_file", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["make", 0])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_make_unmark", 0])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_make_reclaim", 0])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_check_file", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_check_file2", 4])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_check_file3", 4])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_load_file", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_loading_begin", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_loading_end", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_clear_file", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_clear_file2", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_clear_file3", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_replay_file", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_replay_file2", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_including", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_include_stream", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_include_lines", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_next_term", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_handle_static", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_assertz_static", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_pred_type", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_file_relative", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_file_liblet", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_file_including", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_file_struct", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_expand_include", 4])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["expand_term", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_query_unattended", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_singleton_check", 1])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_assoc_keys", 2])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["strings", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["nl", 0])]));
add("nl", 0, new Clause(1, [], [new Skeleton(new Cache("current_output"), [new Place(-2)]), new Skeleton(new Cache("put_code"), [new Place(0), 10]), new Skeleton(new Cache("flush_output"), [new Place(0)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["nl", 1])]));
add("nl", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("put_code"), [new Place(0), 10]), new Skeleton(new Cache("flush_output"), [new Place(0)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["flush_output", 0])]));
add("flush_output", 0, new Clause(1, [], [new Skeleton(new Cache("current_output"), [new Place(-2)]), new Skeleton(new Cache("flush_output"), [new Place(0)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["put_code", 1])]));
add("put_code", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("current_output"), [new Place(-3)]), new Skeleton(new Cache("put_code"), [new Place(1), new Place(0)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["get_code", 1])]));
add("get_code", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("current_input"), [new Place(-3)]), new Skeleton(new Cache("get_code"), [new Place(1), new Place(0)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["get_code", 2])]));
add("get_code", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("os_get_code"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, undefined));
add("get_code", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_read_buffer"), [new Place(1)]), new Skeleton(new Cache("os_get_code"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, undefined));
add("get_code", 2, new Clause(1, [new Place(-1), new Place(-2)], [new Skeleton(new Cache("="), [-1, new Place(0)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["peek_code", 1])]));
add("peek_code", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("current_input"), [new Place(-3)]), new Skeleton(new Cache("peek_code"), [new Place(1), new Place(0)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["peek_code", 2])]));
add("peek_code", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("os_peek_code"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, undefined));
add("peek_code", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_read_buffer"), [new Place(1)]), new Skeleton(new Cache("os_peek_code"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, undefined));
add("peek_code", 2, new Clause(1, [new Place(-1), new Place(-2)], [new Skeleton(new Cache("="), [-1, new Place(0)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_read_buffer", 1])]));
add("sys_read_buffer", 1, new Clause(3, [new Place(-3)], [new Skeleton(new Cache("os_stream_flags"), [new Place(1), new Place(-4)]), new Skeleton(new Cache("=\\="), [new Skeleton(new Cache("\/\\"), [new Place(2), 2]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("os_read_promise"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("$YIELD"), [new Place(1)])], 0, undefined));
add("sys_read_buffer", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("os_read_sync"), [new Place(0)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["get_atom", 2])]));
add("get_atom", 2, new Clause(3, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("current_input"), [new Place(-4)]), new Skeleton(new Cache("get_atom"), [new Place(2), new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["get_atom", 3])]));
add("get_atom", 3, new Clause(4, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("get_compress"), [new Place(0), new Place(-5)]), new Skeleton(new Cache("sys_get_atom"), [new Place(3), new Place(1), new Place(0), new Place(-2)]), new Skeleton(new Cache("atom_codes"), [new Place(2), new Place(0)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_atom", 4])]));
add("sys_get_atom", 4, new Clause(2, [-1, new Place(-1), new Place(-1), new Place(-3)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), ["[]", new Place(1)])], 0, -1));
add("sys_get_atom", 4, new Clause(3, [new Place(-3), new Place(1), new Place(-1), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Skeleton(".", [new Place(1), "[]"]), new Place(2)])], 0, undefined));
add("sys_get_atom", 4, new Clause(4, [new Place(-2), new Place(-3), new Place(-4), new Skeleton(".", [new Place(0), new Place(-2)])], [new Skeleton(new Cache("get_compress"), [new Place(2), new Place(-5)]), new Skeleton(new Cache("sys_get_atom"), [new Place(3), new Place(1), new Place(2), new Place(0)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["get_compress", 2])]));
add("get_compress", 2, new Clause(4, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("os_stream_flags"), [new Place(0), new Place(-4)]), new Skeleton(new Cache("get_code"), [new Place(0), new Place(-5)]), new Skeleton(new Cache("sys_get_compress"), [new Place(3), new Place(2), new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_compress", 4])]));
add("sys_get_compress", 4, new Clause(2, [13, new Place(-1), new Place(-1), new Place(-3)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [10, new Place(1)])], 0, 13));
add("sys_get_compress", 4, new Clause(4, [10, new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("=\\="), [new Skeleton(new Cache("\/\\"), [new Place(1), 1]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("get_compress"), [new Place(2), new Place(3)])], 0, 10));
add("sys_get_compress", 4, new Clause(1, [new Place(-2), new Place(-1), new Place(-1), new Place(0)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["put_atom", 1])]));
add("put_atom", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("current_output"), [new Place(-3)]), new Skeleton(new Cache("put_atom"), [new Place(1), new Place(0)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["write", 1])]));
add("write", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("current_output"), [new Place(-3)]), new Skeleton(new Cache("sys_write_term"), [new Place(1), new Place(0), "[]"])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["write", 2])]));
add("write", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_write_term"), [new Place(0), new Place(1), "[]"])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["writeq", 1])]));
add("writeq", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("current_output"), [new Place(-3)]), new Skeleton(new Cache("sys_write_term"), [new Place(1), new Place(0), new Compound(".", [new Compound("numbervars", ["true"]), new Compound(".", [new Compound("quoted", ["true"]), "[]"])])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["writeq", 2])]));
add("writeq", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_write_term"), [new Place(0), new Place(1), new Compound(".", [new Compound("numbervars", ["true"]), new Compound(".", [new Compound("quoted", ["true"]), "[]"])])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["write_canonical", 1])]));
add("write_canonical", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("current_output"), [new Place(-3)]), new Skeleton(new Cache("sys_write_term"), [new Place(1), new Place(0), new Compound(".", [new Compound("quoted", ["true"]), new Compound(".", [new Compound("ignore_ops", ["true"]), "[]"])])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["write_canonical", 2])]));
add("write_canonical", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_write_term"), [new Place(0), new Place(1), new Compound(".", [new Compound("quoted", ["true"]), new Compound(".", [new Compound("ignore_ops", ["true"]), "[]"])])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["write_term", 2])]));
add("write_term", 2, new Clause(3, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("current_output"), [new Place(-4)]), new Skeleton(new Cache("sys_write_term"), [new Place(2), new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["write_term", 3])]));
add("write_term", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_write_term"), [new Place(0), new Place(1), new Place(2)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["read", 1])]));
add("read", 1, new Clause(3, [new Place(-2)], [new Skeleton(new Cache("current_input"), [new Place(-3)]), new Skeleton(new Cache("get_code"), [new Place(1), new Place(-4)]), new Skeleton(new Cache("sys_read_term"), [new Place(2), new Place(1), "[]", new Place(0)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["read", 2])]));
add("read", 2, new Clause(3, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("get_code"), [new Place(0), new Place(-4)]), new Skeleton(new Cache("sys_read_term"), [new Place(2), new Place(0), "[]", new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["read_term", 2])]));
add("read_term", 2, new Clause(4, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("current_input"), [new Place(-4)]), new Skeleton(new Cache("get_code"), [new Place(2), new Place(-5)]), new Skeleton(new Cache("sys_read_term"), [new Place(3), new Place(2), new Place(1), new Place(0)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["read_term", 3])]));
add("read_term", 3, new Clause(4, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("get_code"), [new Place(0), new Place(-5)]), new Skeleton(new Cache("sys_read_term"), [new Place(3), new Place(0), new Place(2), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["file_property", 2])]));
add("file_property", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("var"), [new Place(2)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_prop_map"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("member"), [new Place(-2), new Compound(".", ["last_modified", new Compound(".", ["real_path", new Compound(".", ["type", "[]"])])])]), new Skeleton(new Cache("ir_object_current"), [new Place(1), new Place(0), new Place(-3)]), new Skeleton(new Cache("=.."), [new Place(2), new Skeleton(".", [new Place(0), new Skeleton(".", [new Place(1), "[]"])])])], 0, undefined));
add("file_property", 2, new Clause(3, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("=.."), [new Place(1), new Skeleton(".", [new Place(-3), new Skeleton(".", [new Place(-4), "[]"])])]), new Skeleton(new Cache("sys_prop_map"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("ir_object_current"), [new Place(0), new Place(1), new Place(2)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_prop_map", 2])]));
add("sys_prop_map", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Compound(new Cache("current_prolog_flag"), ["prop_async", "on"]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("os_prop_promise"), [new Place(1), new Place(2), new Place(-4)]), new Skeleton(new Cache("$YIELD"), [new Place(2)])], 0, undefined));
add("sys_prop_map", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("os_prop_sync"), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_multifile_safe"), ["strings", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["strings", 3])]));
add("strings", 3, new Clause(0, ["evaluation_error.float_overflow", "de", "Die Funktion überschreitet hier den Gleitpunktzahlbereich."], [], -1, "evaluation_error.float_overflow"));
add("strings", 3, new Clause(0, ["evaluation_error.undefined", "de", "Die Funktion ist hier undefiniert."], [], -1, "evaluation_error.undefined"));
add("strings", 3, new Clause(0, ["evaluation_error.zero_divisor", "de", "Nulldivision."], [], -1, "evaluation_error.zero_divisor"));
add("strings", 3, new Clause(0, ["representation_error.int", "de", "Unerlaubte Int-Ganzzahl (nicht zwischen - 2^31 und 2^31-1)."], [], -1, "representation_error.int"));
add("strings", 3, new Clause(0, ["domain_error.prolog_flag", "de", "Argument sollte ein Flag sein, gefunden ~."], [], -1, "domain_error.prolog_flag"));
add("strings", 3, new Clause(0, ["domain_error.flag_value", "de", "Argument sollte ein Flagwert sein, gefunden ~."], [], -1, "domain_error.flag_value"));
add("strings", 3, new Clause(0, ["domain_error.not_less_than_zero", "de", "Argument sollte positiv oder 0 sein, gefunden ~."], [], -1, "domain_error.not_less_than_zero"));
add("strings", 3, new Clause(0, ["domain_error.operator_priority", "de", "Argument sollte ein Operatorlevel sein (kleiner oder gleich 1200), gefunden ~."], [], -1, "domain_error.operator_priority"));
add("strings", 3, new Clause(0, ["domain_error.operator_specifier", "de", "Argument sollte ein Operatormode sein (fx, fy, xfx, yfx, xfy, xf, yf), gefunden ~."], [], -1, "domain_error.operator_specifier"));
add("strings", 3, new Clause(0, ["type_error.atom", "de", "Argument sollte Atom sein, gefunden ~."], [], -1, "type_error.atom"));
add("strings", 3, new Clause(0, ["type_error.number", "de", "Argument sollte Zahl sein, gefunden ~."], [], -1, "type_error.number"));
add("strings", 3, new Clause(0, ["type_error.integer", "de", "Argument sollte Ganzzahl sein, gefunden ~."], [], -1, "type_error.integer"));
add("strings", 3, new Clause(0, ["type_error.callable", "de", "Argument sollte aufrufbar sein (Atom oder Verbund), gefunden ~."], [], -1, "type_error.callable"));
add("strings", 3, new Clause(0, ["type_error.atomic", "de", "Argument sollte atomar sein, gefunden ~."], [], -1, "type_error.atomic"));
add("strings", 3, new Clause(0, ["type_error.list", "de", "Argument sollte Liste sein ([] oder [_|_]), gefunden ~."], [], -1, "type_error.list"));
add("strings", 3, new Clause(0, ["type_error.evaluable", "de", "Argument sollte berechenbaren Funktor haben, gefunden ~."], [], -1, "type_error.evaluable"));
add("strings", 3, new Clause(0, ["type_error.character", "de", "Argument sollte Zeichen sein, gefunden ~."], [], -1, "type_error.character"));
add("strings", 3, new Clause(0, ["type_error.pair", "de", "Argument sollte Paar sein (_-_), gefunden ~."], [], -1, "type_error.pair"));
add("strings", 3, new Clause(0, ["type_error.predicate_indicator", "de", "Argument sollte Prädikatspezifikation sein ( _\/_), gefunden ~."], [], -1, "type_error.predicate_indicator"));
add("strings", 3, new Clause(0, ["evaluation_error.float_overflow", "", "The function overflows the float range here."], [], -1, "evaluation_error.float_overflow"));
add("strings", 3, new Clause(0, ["evaluation_error.undefined", "", "The function is undefined here."], [], -1, "evaluation_error.undefined"));
add("strings", 3, new Clause(0, ["evaluation_error.zero_divisor", "", "Division by zero."], [], -1, "evaluation_error.zero_divisor"));
add("strings", 3, new Clause(0, ["representation_error.int", "", "Illegal int integer (not between - 2^31 and 2^31-1)."], [], -1, "representation_error.int"));
add("strings", 3, new Clause(0, ["domain_error.prolog_flag", "", "Argument should be a flag, found ~."], [], -1, "domain_error.prolog_flag"));
add("strings", 3, new Clause(0, ["domain_error.flag_value", "", "Argument should be a flag value, found ~."], [], -1, "domain_error.flag_value"));
add("strings", 3, new Clause(0, ["domain_error.not_less_than_zero", "", "Argument should be positive or 0, found ~."], [], -1, "domain_error.not_less_than_zero"));
add("strings", 3, new Clause(0, ["domain_error.operator_priority", "", "Argument should be an operator level (less or equal 1200), found ~."], [], -1, "domain_error.operator_priority"));
add("strings", 3, new Clause(0, ["domain_error.operator_specifier", "", "Argument should be an operator mode (fx, fy, xfx, yfx, xfy, xf, yf), found ~."], [], -1, "domain_error.operator_specifier"));
add("strings", 3, new Clause(0, ["type_error.atom", "", "Argument should be an atom, found ~."], [], -1, "type_error.atom"));
add("strings", 3, new Clause(0, ["type_error.number", "", "Argument should be a number, found ~."], [], -1, "type_error.number"));
add("strings", 3, new Clause(0, ["type_error.integer", "", "Argument should be an integer, found ~."], [], -1, "type_error.integer"));
add("strings", 3, new Clause(0, ["type_error.callable", "", "Argument should be callable (atom or compound), found ~."], [], -1, "type_error.callable"));
add("strings", 3, new Clause(0, ["type_error.atomic", "", "Argument should be an atomic, found ~."], [], -1, "type_error.atomic"));
add("strings", 3, new Clause(0, ["type_error.list", "", "Argument should be a list ([] or [_|_]), found ~."], [], -1, "type_error.list"));
add("strings", 3, new Clause(0, ["type_error.evaluable", "", "Argument should have evaluable functor, found ~."], [], -1, "type_error.evaluable"));
add("strings", 3, new Clause(0, ["type_error.character", "", "Argument should be a character, found ~."], [], -1, "type_error.character"));
add("strings", 3, new Clause(0, ["type_error.pair", "", "Argument should be a pair (_-_), found ~."], [], -1, "type_error.pair"));
add("strings", 3, new Clause(0, ["type_error.predicate_indicator", "", "Argument should be a predicate specification (_\/_), found ~."], [], -1, "type_error.predicate_indicator"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_code_class", 2])]));
add("sys_code_class", 2, new Clause(2, [44, new Place(-3)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), "is_punct"])], 0, 44));
add("sys_code_class", 2, new Clause(2, [40, new Place(-3)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), "is_punct"])], 0, 40));
add("sys_code_class", 2, new Clause(2, [41, new Place(-3)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), "is_punct"])], 0, 41));
add("sys_code_class", 2, new Clause(2, [124, new Place(-3)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), "is_punct"])], 0, 124));
add("sys_code_class", 2, new Clause(2, [91, new Place(-3)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), "is_punct"])], 0, 91));
add("sys_code_class", 2, new Clause(2, [93, new Place(-3)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), "is_punct"])], 0, 93));
add("sys_code_class", 2, new Clause(2, [123, new Place(-3)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), "is_punct"])], 0, 123));
add("sys_code_class", 2, new Clause(2, [125, new Place(-3)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), "is_punct"])], 0, 125));
add("sys_code_class", 2, new Clause(2, [59, new Place(-3)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), "is_solo"])], 0, 59));
add("sys_code_class", 2, new Clause(2, [33, new Place(-3)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), "is_solo"])], 0, 33));
add("sys_code_class", 2, new Clause(2, [39, new Place(-3)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), "is_solo"])], 0, 39));
add("sys_code_class", 2, new Clause(2, [96, new Place(-3)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), "is_solo"])], 0, 96));
add("sys_code_class", 2, new Clause(2, [34, new Place(-3)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), "is_solo"])], 0, 34));
add("sys_code_class", 2, new Clause(2, [37, new Place(-3)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), "is_solo"])], 0, 37));
add("sys_code_class", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("code_type"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("sys_type_class"), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_type_class", 2])]));
add("sys_type_class", 2, new Clause(0, [0, "is_invalid"], [], -1, 0));
add("sys_type_class", 2, new Clause(0, [1, "is_upper"], [], -1, 1));
add("sys_type_class", 2, new Clause(0, [2, "is_ident"], [], -1, 2));
add("sys_type_class", 2, new Clause(0, [3, "is_upper"], [], -1, 3));
add("sys_type_class", 2, new Clause(0, [4, "is_ident"], [], -1, 4));
add("sys_type_class", 2, new Clause(0, [5, "is_ident"], [], -1, 5));
add("sys_type_class", 2, new Clause(0, [6, "is_ident"], [], -1, 6));
add("sys_type_class", 2, new Clause(0, [7, "is_ident"], [], -1, 7));
add("sys_type_class", 2, new Clause(0, [8, "is_ident"], [], -1, 8));
add("sys_type_class", 2, new Clause(0, [9, "is_digit"], [], -1, 9));
add("sys_type_class", 2, new Clause(0, [10, "is_ident"], [], -1, 10));
add("sys_type_class", 2, new Clause(0, [11, "is_ident"], [], -1, 11));
add("sys_type_class", 2, new Clause(0, [12, "is_blank"], [], -1, 12));
add("sys_type_class", 2, new Clause(0, [13, "is_blank"], [], -1, 13));
add("sys_type_class", 2, new Clause(0, [14, "is_blank"], [], -1, 14));
add("sys_type_class", 2, new Clause(0, [15, "is_cntrl"], [], -1, 15));
add("sys_type_class", 2, new Clause(0, [16, "is_cntrl"], [], -1, 16));
add("sys_type_class", 2, new Clause(0, [18, "is_invalid"], [], -1, 18));
add("sys_type_class", 2, new Clause(0, [19, "is_invalid"], [], -1, 19));
add("sys_type_class", 2, new Clause(0, [20, "is_graphic"], [], -1, 20));
add("sys_type_class", 2, new Clause(0, [21, "is_solo"], [], -1, 21));
add("sys_type_class", 2, new Clause(0, [22, "is_solo"], [], -1, 22));
add("sys_type_class", 2, new Clause(0, [23, "is_score"], [], -1, 23));
add("sys_type_class", 2, new Clause(0, [24, "is_graphic"], [], -1, 24));
add("sys_type_class", 2, new Clause(0, [25, "is_graphic"], [], -1, 25));
add("sys_type_class", 2, new Clause(0, [26, "is_graphic"], [], -1, 26));
add("sys_type_class", 2, new Clause(0, [27, "is_graphic"], [], -1, 27));
add("sys_type_class", 2, new Clause(0, [28, "is_graphic"], [], -1, 28));
add("sys_type_class", 2, new Clause(0, [29, "is_solo"], [], -1, 29));
add("sys_type_class", 2, new Clause(0, [30, "is_solo"], [], -1, 30));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_name_class", 1])]));
add("sys_name_class", 1, new Clause(0, ["is_ident"], [], -1, "is_ident"));
add("sys_name_class", 1, new Clause(0, ["is_upper"], [], -1, "is_upper"));
add("sys_name_class", 1, new Clause(0, ["is_score"], [], -1, "is_score"));
add("sys_name_class", 1, new Clause(0, ["is_digit"], [], -1, "is_digit"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_white_class", 1])]));
add("sys_white_class", 1, new Clause(0, ["is_blank"], [], -1, "is_blank"));
add("sys_white_class", 1, new Clause(0, ["is_cntrl"], [], -1, "is_cntrl"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_token", 3])]));
add("sys_get_token", 3, new Clause(5, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_current_code"), [new Place(-5), new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_code_class"), [new Place(3), new Place(-6)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_get_class"), [new Place(4), new Place(3), new Place(0), new Place(1), new Place(2)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_class", 5])]));
add("sys_get_class", 5, new Clause(5, ["is_ident", new Place(-2), new Skeleton("atom", [new Place(-3)]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_name"), [new Place(-6), new Place(2), new Place(-4)]), new Skeleton(new Cache("atom_codes"), [new Place(1), new Skeleton(".", [new Place(0), new Place(4)])]), new Skeleton(new Cache("="), [new Place(2), new Place(3)])], -1, "is_ident"));
add("sys_get_class", 5, new Clause(5, ["is_upper", new Place(-2), new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_name"), [new Place(-6), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_make_variable"), [new Skeleton(".", [new Place(0), new Place(4)]), new Place(1)]), new Skeleton(new Cache("="), [new Place(2), new Place(3)])], -1, "is_upper"));
add("sys_get_class", 5, new Clause(5, ["is_score", new Place(-2), new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_name"), [new Place(-6), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_make_variable"), [new Skeleton(".", [new Place(0), new Place(4)]), new Place(1)]), new Skeleton(new Cache("="), [new Place(2), new Place(3)])], -1, "is_score"));
add("sys_get_class", 5, new Clause(4, ["is_digit", new Place(-2), new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_get_number"), [new Place(0), new Place(1), new Place(2), new Place(3)])], -1, "is_digit"));
add("sys_get_class", 5, new Clause(4, ["is_punct", new Place(-2), new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("char_code"), [new Place(1), new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(3)])], -1, "is_punct"));
add("sys_get_class", 5, new Clause(4, ["is_graphic", new Place(-2), new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_block_or_symbol"), [new Place(0), new Place(1), new Place(2), new Place(3)])], -1, "is_graphic"));
add("sys_get_class", 5, new Clause(4, ["is_solo", new Place(-2), new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_get_line_or_solo"), [new Place(0), new Place(1), new Place(2), new Place(3)])], -1, "is_solo"));
add("sys_get_class", 5, new Clause(4, ["is_invalid", new Place(-2), new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_get_eof_or_error"), [new Place(0), new Place(1), new Place(2), new Place(3)])], -1, "is_invalid"));
add("sys_get_class", 5, new Clause(3, ["is_blank", new Place(-1), new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_next_code"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_get_token"), [new Place(0), new Place(1), new Place(2)])], -1, "is_blank"));
add("sys_get_class", 5, new Clause(3, ["is_cntrl", new Place(-1), new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_next_code"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_get_token"), [new Place(0), new Place(1), new Place(2)])], -1, "is_cntrl"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_eof_or_error", 4])]));
add("sys_get_eof_or_error", 4, new Clause(3, [-1, "end_of_file", new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, -1));
add("sys_get_eof_or_error", 4, new Clause(2, [new Place(-1), new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Compound("syntax_error", ["illegal_unicode"]), new Place(-1)])]), new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_name", 3])]));
add("sys_get_name", 3, new Clause(5, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6)], [new Skeleton(new Cache("sys_current_code"), [new Place(1), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_code_class"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_name_class"), [new Place(1)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_code"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_get_name"), [new Place(2), new Place(3), new Place(4)])], 0, "."));
add("sys_get_name", 3, new Clause(2, ["[]", new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, "[]"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_make_variable", 2])]));
add("sys_make_variable", 2, new Clause(2, [new Skeleton(".", [new Place(-3), "[]"]), "anon"], [new Skeleton(new Cache("sys_code_class"), [new Place(1), "is_score"]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "."));
add("sys_make_variable", 2, new Clause(2, [new Place(-2), new Skeleton("var", [new Place(-3)])], [new Skeleton(new Cache("atom_codes"), [new Place(1), new Place(0)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_number", 4])]));
add("sys_get_number", 4, new Clause(4, [48, new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_current_code"), [new Place(-2), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_special"), [new Place(0), new Place(1), new Place(2), new Place(3)])], 0, 48));
add("sys_get_number", 4, new Clause(3, [new Place(-2), new Skeleton("decimal", [new Skeleton(".", [new Place(0), new Place(-2)])]), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_next_code"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_get_decimal"), [new Place(0), new Place(1), new Place(2)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_special", 4])]));
add("sys_get_special", 4, new Clause(4, [120, new Skeleton("radix", [new Place(-3), 16]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_radix"), [new Place(1), "[]", 16, new Place(2), new Place(3)])], 0, 120));
add("sys_get_special", 4, new Clause(4, [111, new Skeleton("radix", [new Place(-3), 8]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_radix"), [new Place(1), "[]", 8, new Place(2), new Place(3)])], 0, 111));
add("sys_get_special", 4, new Clause(4, [98, new Skeleton("radix", [new Place(-3), 2]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_radix"), [new Place(1), "[]", 2, new Place(2), new Place(3)])], 0, 98));
add("sys_get_special", 4, new Clause(4, [114, new Skeleton("reference", [new Place(-3)]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_name"), [new Place(1), new Place(2), new Place(3)])], 0, 114));
add("sys_get_special", 4, new Clause(4, [102, new Skeleton("decimal", [new Skeleton(".", [48, new Skeleton(".", [102, new Place(-3)])])]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_tolerant"), [new Place(1), new Place(2), new Place(3)])], 0, 102));
add("sys_get_special", 4, new Clause(4, [100, new Skeleton("decimal", [new Skeleton(".", [48, new Skeleton(".", [100, new Place(-3)])])]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_tolerant"), [new Place(1), new Place(2), new Place(3)])], 0, 100));
add("sys_get_special", 4, new Clause(4, [39, new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_current_code"), [new Place(-2), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_code"), [new Place(0), new Place(1), new Place(2), new Place(3)])], 0, 39));
add("sys_get_special", 4, new Clause(3, [new Place(-1), new Skeleton("decimal", [new Skeleton(".", [48, new Place(-2)])]), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_get_decimal"), [new Place(0), new Place(1), new Place(2)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_code", 4])]));
add("sys_get_code", 4, new Clause(4, [39, new Skeleton("code", [new Skeleton(".", [39, new Place(-3)])]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_double"), [new Place(1), new Place(2), new Place(3)])], 0, 39));
add("sys_get_code", 4, new Clause(4, [92, new Skeleton("code", [new Skeleton(".", [92, new Place(-3)])]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_current_code"), [new Place(-2), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_escape"), [new Place(0), new Place(1), "[]", new Place(2), new Place(3)])], 0, 92));
add("sys_get_code", 4, new Clause(3, [new Place(-2), new Skeleton("code", [new Skeleton(".", [new Place(0), "[]"])]), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_get_char"), [new Place(0), new Place(1), new Place(2)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_double", 3])]));
add("sys_get_double", 3, new Clause(3, [new Compound(".", [39, "[]"]), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_current_code"), [39, new Place(1), new Place(-3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_next_code"), [new Place(1), new Place(2)])], 0, "."));
add("sys_get_double", 3, new Clause(2, ["[]", new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, "[]"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_tolerant", 3])]));
add("sys_get_tolerant", 3, new Clause(5, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6)], [new Skeleton(new Cache("sys_current_code"), [new Place(1), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_code_class"), [new Place(1), "is_digit"]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_code"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_get_tolerant"), [new Place(2), new Place(3), new Place(4)])], 0, "."));
add("sys_get_tolerant", 3, new Clause(5, [new Skeleton(".", [46, new Place(-3)]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_current_code"), [46, new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_at_code"), [new Place(-6), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_code_class"), [new Place(4), "is_digit"]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_fraction"), [new Place(1), new Place(2), new Place(3)])], 0, "."));
add("sys_get_tolerant", 3, new Clause(5, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6)], [new Skeleton(new Cache("sys_current_code"), [new Place(1), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_is_expo"), [new Place(1)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_at_code"), [new Place(-3), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_is_sign_digit"), [new Place(1)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_code"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_get_exponent"), [new Place(2), new Place(3), new Place(4)])], 0, "."));
add("sys_get_tolerant", 3, new Clause(2, ["[]", new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, "[]"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_decimal", 3])]));
add("sys_get_decimal", 3, new Clause(5, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6)], [new Skeleton(new Cache("sys_current_code"), [new Place(1), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_code_class"), [new Place(1), "is_digit"]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_code"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_get_decimal"), [new Place(2), new Place(3), new Place(4)])], 0, "."));
add("sys_get_decimal", 3, new Clause(5, [new Skeleton(".", [46, new Place(-3)]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_current_code"), [46, new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_at_code"), [new Place(-6), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_code_class"), [new Place(4), "is_digit"]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_fraction"), [new Place(1), new Place(2), new Place(3)])], 0, "."));
add("sys_get_decimal", 3, new Clause(2, ["[]", new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, "[]"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_fraction", 3])]));
add("sys_get_fraction", 3, new Clause(5, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6)], [new Skeleton(new Cache("sys_current_code"), [new Place(1), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_code_class"), [new Place(1), "is_digit"]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_code"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_get_fraction"), [new Place(2), new Place(3), new Place(4)])], 0, "."));
add("sys_get_fraction", 3, new Clause(5, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6)], [new Skeleton(new Cache("sys_current_code"), [new Place(1), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_is_expo"), [new Place(1)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_at_code"), [new Place(-3), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_is_sign_digit"), [new Place(1)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_code"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_get_exponent"), [new Place(2), new Place(3), new Place(4)])], 0, "."));
add("sys_get_fraction", 3, new Clause(2, ["[]", new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, "[]"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_exponent", 3])]));
add("sys_get_exponent", 3, new Clause(5, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6)], [new Skeleton(new Cache("sys_current_code"), [new Place(1), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_is_sign"), [new Place(1)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_code"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_get_rest"), [new Place(2), new Place(3), new Place(4)])], 0, "."));
add("sys_get_exponent", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_get_rest"), [new Place(0), new Place(1), new Place(2)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_rest", 3])]));
add("sys_get_rest", 3, new Clause(5, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6)], [new Skeleton(new Cache("sys_current_code"), [new Place(1), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_code_class"), [new Place(1), "is_digit"]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_code"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_get_rest"), [new Place(2), new Place(3), new Place(4)])], 0, "."));
add("sys_get_rest", 3, new Clause(2, ["[]", new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, "[]"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_is_expo", 1])]));
add("sys_is_expo", 1, new Clause(0, [69], [], -1, 69));
add("sys_is_expo", 1, new Clause(0, [101], [], -1, 101));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_is_sign_digit", 1])]));
add("sys_is_sign_digit", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("sys_is_sign"), [new Place(0)])], -1, undefined));
add("sys_is_sign_digit", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("sys_code_class"), [new Place(0), "is_digit"])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_is_sign", 1])]));
add("sys_is_sign", 1, new Clause(0, [45], [], -1, 45));
add("sys_is_sign", 1, new Clause(0, [43], [], -1, 43));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_block_or_symbol", 4])]));
add("sys_get_block_or_symbol", 4, new Clause(4, [47, new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_current_code"), [42, new Place(2), new Place(-4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_skip_block"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_token"), [new Place(1), new Place(2), new Place(3)])], 0, 47));
add("sys_get_block_or_symbol", 4, new Clause(6, [new Place(-2), new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_get_symbol"), [new Place(-6), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_current_code"), [new Place(-7), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_make_period"), [new Place(5), new Skeleton(".", [new Place(0), new Place(4)]), new Place(1)]), new Skeleton(new Cache("="), [new Place(2), new Place(3)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_symbol", 3])]));
add("sys_get_symbol", 3, new Clause(5, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6)], [new Skeleton(new Cache("sys_current_code"), [new Place(1), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_code_class"), [new Place(1), "is_graphic"]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_code"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_get_symbol"), [new Place(2), new Place(3), new Place(4)])], 0, "."));
add("sys_get_symbol", 3, new Clause(2, ["[]", new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, "[]"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_skip_block", 2])]));
add("sys_skip_block", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_current_code"), [42, new Place(1), new Place(-3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_next_code"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_skip_end"), [new Place(1), new Place(2)])], 0, undefined));
add("sys_skip_block", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_current_code"), [-1, new Place(0), new Place(-2)]), new Skeleton(new Cache("throw"), [new Skeleton("error", [new Compound("syntax_error", ["end_of_file_in_block_comment"]), new Place(-1)])]), new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined));
add("sys_skip_block", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_next_code"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("sys_skip_block"), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_skip_end", 2])]));
add("sys_skip_end", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_current_code"), [47, new Place(1), new Place(-3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_next_code"), [new Place(1), new Place(2)])], 0, undefined));
add("sys_skip_end", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_skip_block"), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_make_period", 3])]));
add("sys_make_period", 3, new Clause(1, [37, new Compound(".", [46, "[]"]), "."], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, 37));
add("sys_make_period", 3, new Clause(1, [-1, new Compound(".", [46, "[]"]), "."], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, -1));
add("sys_make_period", 3, new Clause(2, [new Place(-3), new Compound(".", [46, "[]"]), "."], [new Skeleton(new Cache("sys_code_class"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_white_class"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_make_period", 3, new Clause(2, [new Place(-1), new Place(-2), new Skeleton("atom", [new Place(-3)])], [new Skeleton(new Cache("atom_codes"), [new Place(1), new Place(0)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_line_or_solo", 4])]));
add("sys_get_line_or_solo", 4, new Clause(4, [39, new Skeleton("single", [new Place(-3)]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_quote"), [new Place(1), 39, new Place(2), new Place(3)])], 0, 39));
add("sys_get_line_or_solo", 4, new Clause(4, [96, new Skeleton("back", [new Place(-3)]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_quote"), [new Place(1), 96, new Place(2), new Place(3)])], 0, 96));
add("sys_get_line_or_solo", 4, new Clause(4, [34, new Skeleton("codes", [new Place(-3)]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_quote"), [new Place(1), 34, new Place(2), new Place(3)])], 0, 34));
add("sys_get_line_or_solo", 4, new Clause(4, [37, new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_current_code"), [new Place(-2), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_skip_line"), [new Place(0), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_token"), [new Place(1), new Place(2), new Place(3)])], 0, 37));
add("sys_get_line_or_solo", 4, new Clause(4, [new Place(-2), new Skeleton("atom", [new Place(-3)]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_next_code"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("char_code"), [new Place(1), new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(3)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_skip_line", 3])]));
add("sys_skip_line", 3, new Clause(3, [10, new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, 10));
add("sys_skip_line", 3, new Clause(3, [13, new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, 13));
add("sys_skip_line", 3, new Clause(3, [-1, new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, -1));
add("sys_skip_line", 3, new Clause(3, [new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_next_code"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("sys_current_code"), [new Place(-4), new Place(0), new Place(-2)]), new Skeleton(new Cache("sys_skip_line"), [new Place(2), new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_quote", 4])]));
add("sys_get_quote", 4, new Clause(5, [new Place(-3), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("sys_current_code"), [new Place(2), new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_code"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_get_more"), [new Place(1), new Place(2), new Place(3), new Place(4)])], 0, undefined));
add("sys_get_quote", 4, new Clause(5, [new Place(-3), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("sys_current_code"), [92, new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_code"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_get_cont"), [new Place(1), new Place(2), new Place(3), new Place(4)])], 0, undefined));
add("sys_get_quote", 4, new Clause(5, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("sys_current_code"), [new Place(0), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_get_char"), [new Place(0), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_get_quote"), [new Place(1), new Place(2), new Place(3), new Place(4)])], -1, "."));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_more", 4])]));
add("sys_get_more", 4, new Clause(5, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(1), new Place(-5), new Place(-6)], [new Skeleton(new Cache("sys_current_code"), [new Place(1), new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_code"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_get_quote"), [new Place(2), new Place(1), new Place(3), new Place(4)])], 0, "."));
add("sys_get_more", 4, new Clause(2, ["[]", new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, "[]"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_char", 3])]));
add("sys_get_char", 3, new Clause(2, [10, new Place(-2), new Place(-3)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Compound("syntax_error", ["end_of_line_as_character"]), new Place(-1)])]), new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, 10));
add("sys_get_char", 3, new Clause(2, [13, new Place(-2), new Place(-3)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Compound("syntax_error", ["end_of_line_as_character"]), new Place(-1)])]), new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, 13));
add("sys_get_char", 3, new Clause(2, [-1, new Place(-2), new Place(-3)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Compound("syntax_error", ["unbalanced_quoted"]), new Place(-1)])]), new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, -1));
add("sys_get_char", 3, new Clause(2, [new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_next_code"), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_cont", 4])]));
add("sys_get_cont", 4, new Clause(5, [new Skeleton(".", [92, new Place(-2)]), new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_current_code"), [new Place(-6), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_escape"), [new Place(4), new Place(0), new Place(-2), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_get_quote"), [new Place(0), new Place(1), new Place(2), new Place(3)])], -1, "."));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_escape", 5])]));
add("sys_get_escape", 5, new Clause(5, [13, new Skeleton(".", [13, new Place(-3)]), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_code"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_get_skip"), [new Place(1), new Place(2), new Place(3), new Place(4)])], 0, 13));
add("sys_get_escape", 5, new Clause(2, [-1, new Place(-1), new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Compound("syntax_error", ["illegal_escape"]), new Place(-1)])]), new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, -1));
add("sys_get_escape", 5, new Clause(5, [120, new Skeleton(".", [120, new Place(-3)]), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_code"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_get_radix"), [new Place(1), new Place(-3), 16, new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_get_backslash"), [new Place(1), new Place(2), new Place(3), new Place(4)])], 0, 120));
add("sys_get_escape", 5, new Clause(6, [new Place(-3), new Skeleton(".", [new Place(1), new Place(-4)]), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("sys_is_radix"), [new Place(1), 8]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_next_code"), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_get_radix"), [new Place(2), new Place(-4), 8, new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_get_backslash"), [new Place(2), new Place(3), new Place(4), new Place(5)])], 0, undefined));
add("sys_get_escape", 5, new Clause(2, [new Place(-2), new Skeleton(".", [new Place(0), new Place(-2)]), new Place(0), new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_next_code"), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_skip", 4])]));
add("sys_get_skip", 4, new Clause(3, [new Skeleton(".", [10, new Place(-3)]), new Place(1), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_current_code"), [10, new Place(1), new Place(-3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_next_code"), [new Place(1), new Place(2)])], 0, "."));
add("sys_get_skip", 4, new Clause(2, [new Place(-2), new Place(0), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_backslash", 4])]));
add("sys_get_backslash", 4, new Clause(3, [new Skeleton(".", [92, new Place(-3)]), new Place(1), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_current_code"), [92, new Place(1), new Place(-3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_next_code"), [new Place(1), new Place(2)])], 0, "."));
add("sys_get_backslash", 4, new Clause(2, [new Place(-2), new Place(0), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_get_radix", 5])]));
add("sys_get_radix", 5, new Clause(7, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6), new Place(-7), new Place(-8)], [new Skeleton(new Cache("sys_current_code"), [new Place(1), new Place(5), new Place(-7)]), new Skeleton(new Cache("sys_is_radix"), [new Place(1), new Place(4)]), new Skeleton(new Cache("="), [new Place(5), new Place(-7)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(5), new Place(-7)]), new Skeleton(new Cache("sys_next_code"), [new Place(5), new Place(-7)]), new Skeleton(new Cache("sys_get_radix"), [new Place(2), new Place(3), new Place(4), new Place(5), new Place(6)])], 0, "."));
add("sys_get_radix", 5, new Clause(2, [new Place(-2), new Place(0), new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_is_radix", 2])]));
add("sys_is_radix", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("code_numeric"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("=<"), [0, new Place(0)]), new Skeleton(new Cache("<"), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_is_meta", 1])]));
add("sys_is_meta", 1, new Clause(0, [39], [], -1, 39));
add("sys_is_meta", 1, new Clause(0, [96], [], -1, 96));
add("sys_is_meta", 1, new Clause(0, [34], [], -1, 34));
add("sys_is_meta", 1, new Clause(0, [92], [], -1, 92));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_is_escape", 2])]));
add("sys_is_escape", 2, new Clause(0, [110, 10], [], -1, 110));
add("sys_is_escape", 2, new Clause(0, [116, 9], [], -1, 116));
add("sys_is_escape", 2, new Clause(0, [98, 8], [], -1, 98));
add("sys_is_escape", 2, new Clause(0, [102, 12], [], -1, 102));
add("sys_is_escape", 2, new Clause(0, [114, 13], [], -1, 114));
add("sys_is_escape", 2, new Clause(0, [97, 7], [], -1, 97));
add("sys_is_escape", 2, new Clause(0, [118, 11], [], -1, 118));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_current_code", 3])]));
add("sys_current_code", 3, new Clause(2, [new Place(-2), new Skeleton("-", [new Place(-3), new Place(0)]), new Skeleton("-", [new Place(1), new Place(0)])], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_next_code", 2])]));
add("sys_next_code", 2, new Clause(2, [new Skeleton("-", [new Place(-2), new Place(-1)]), new Skeleton("-", [new Place(0), new Place(-3)])], [new Skeleton(new Cache("get_code"), [new Place(0), new Place(1)])], -1, "-"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_at_code", 3])]));
add("sys_at_code", 3, new Clause(3, [new Place(-2), new Skeleton("-", [new Place(-3), new Place(-4)]), new Skeleton("-", [new Place(1), new Place(2)])], [new Skeleton(new Cache("peek_code"), [new Place(1), new Place(0)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_sync_throw", 3])]));
add("sys_sync_throw", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_fill_stack"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_sync_tokens"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_raise"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_sync_raise", 3])]));
add("sys_sync_raise", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_sync_tokens"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_raise"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_sync_tokens", 2])]));
add("sys_sync_tokens", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_current_token"), [".", new Place(1), new Place(-3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, undefined));
add("sys_sync_tokens", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_current_token"), ["end_of_file", new Place(1), new Place(-3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, undefined));
add("sys_sync_tokens", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_sync_token"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("sys_sync_tokens"), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_sync_token", 2])]));
add("sys_sync_token", 2, new Clause(5, [new Skeleton("t", [new Place(-1), new Place(-2), new Skeleton("r", [new Place(-3), new Place(-4)]), new Place(-5)]), new Skeleton("t", [new Place(-6), new Place(0), new Skeleton("r", [new Place(1), new Place(-2)]), new Place(3)])], [new Skeleton(new Cache("sys_get_token"), [new Place(4), new Skeleton("-", [new Place(1), new Place(2)]), new Skeleton("-", [new Place(-1), new Place(0)])])], -1, "t"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_safe_code", 2])]));
add("sys_safe_code", 2, new Clause(3, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("current_lastcode"), [new Place(0), new Place(-4)]), new Skeleton(new Cache("sys_safe_space"), [new Place(0), new Place(2), new Place(1)]), new Skeleton(new Cache("put_code"), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_safe_atom", 2])]));
add("sys_safe_atom", 2, new Clause(4, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("atom_arg"), [0, new Place(2), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("current_lastcode"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("sys_safe_space"), [new Place(1), new Place(0), new Place(3)]), new Skeleton(new Cache("put_atom"), [new Place(1), new Place(2)])], 0, undefined));
add("sys_safe_atom", 2, new Clause(0, [new Place(-1), new Place(-1)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_safe_space", 3])]));
add("sys_safe_space", 3, new Clause(5, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_code_class"), [new Place(2), new Place(-6)]), new Skeleton(new Cache("sys_name_class"), [new Place(4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_safe_name"), [new Place(1), new Place(2), new Place(3)])], 0, undefined));
add("sys_safe_space", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_code_class"), [new Place(2), "is_graphic"]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_safe_symbol"), [new Place(1), new Place(3)])], 0, undefined));
add("sys_safe_space", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("=:="), [new Place(2), new Place(3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_safe_quote"), [new Place(1), new Place(3)])], 0, undefined));
add("sys_safe_space", 3, new Clause(0, [new Place(-1), new Place(-1), new Place(-1)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_safe_name", 3])]));
add("sys_safe_name", 3, new Clause(3, [new Place(-3), new Place(-1), new Place(-4)], [new Skeleton(new Cache("sys_code_class"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_name_class"), [new Place(2)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("put_code"), [new Place(1), 32])], 0, undefined));
add("sys_safe_name", 3, new Clause(2, [new Place(-3), 48, 39], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("put_code"), [new Place(1), 32])], 0, undefined));
add("sys_safe_name", 3, new Clause(0, [new Place(-1), new Place(-1), new Place(-1)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_safe_symbol", 2])]));
add("sys_safe_symbol", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_code_class"), [new Place(2), "is_graphic"]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("put_code"), [new Place(1), 32])], 0, undefined));
add("sys_safe_symbol", 2, new Clause(0, [new Place(-1), new Place(-1)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_safe_quote", 2])]));
add("sys_safe_quote", 2, new Clause(2, [new Place(-3), 39], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("put_code"), [new Place(1), 32])], 0, undefined));
add("sys_safe_quote", 2, new Clause(2, [new Place(-3), 96], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("put_code"), [new Place(1), 32])], 0, undefined));
add("sys_safe_quote", 2, new Clause(2, [new Place(-3), 34], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("put_code"), [new Place(1), 32])], 0, undefined));
add("sys_safe_quote", 2, new Clause(0, [new Place(-1), new Place(-1)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_next_token", 2])]));
add("sys_next_token", 2, new Clause(7, [new Skeleton("t", [new Place(-1), new Place(-2), new Skeleton("r", [new Place(-3), new Place(-4)]), new Place(-5)]), new Skeleton("t", [new Place(-6), new Place(0), new Skeleton("r", [new Place(1), new Place(-7)]), new Place(3)])], [new Skeleton(new Cache("sys_get_token"), [new Place(-8), new Skeleton("-", [new Place(1), new Place(2)]), new Skeleton("-", [new Place(-1), new Place(5)])]), new Skeleton(new Cache("sys_trap"), [new Skeleton("sys_convert_token", [new Place(6), new Place(4)]), new Place(-6), new Skeleton("sys_sync_raise", [new Place(4), new Skeleton("t", [new Place(6), new Place(0), new Skeleton("r", [new Place(1), new Place(5)]), new Place(3)]), new Place(-1)])])], -1, "t"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_convert_token", 2])]));
add("sys_convert_token", 2, new Clause(3, [new Skeleton("single", [new Place(-3)]), new Skeleton("atom", [new Place(-4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_convert_quote"), [new Place(-2), new Place(1), "[]"]), new Skeleton(new Cache("atom_codes"), [new Place(2), new Place(0)])], 0, "single"));
add("sys_convert_token", 2, new Clause(3, [new Skeleton("back", [new Place(-3)]), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_convert_quote"), [new Place(-2), new Place(1), "[]"]), new Skeleton(new Cache("sys_make_variable"), [new Place(0), new Place(2)])], 0, "back"));
add("sys_convert_token", 2, new Clause(3, [new Skeleton("decimal", [new Place(-3)]), new Skeleton("number", [new Place(-4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_codes"), [new Place(-2), new Place(1)]), new Skeleton(new Cache("atom_number"), [new Place(0), new Place(2)])], 0, "decimal"));
add("sys_convert_token", 2, new Clause(4, [new Skeleton("radix", [new Place(-3), new Place(-4)]), new Skeleton("radix", [new Place(-5), new Place(2)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_codes"), [new Place(-2), new Place(1)]), new Skeleton(new Cache("atom_integer"), [new Place(0), new Place(2), new Place(3)])], 0, "radix"));
add("sys_convert_token", 2, new Clause(3, [new Skeleton("reference", [new Place(-3)]), new Skeleton("reference", [new Place(-4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_codes"), [new Place(-2), new Place(1)]), new Skeleton(new Cache("atom_reference"), [new Place(0), new Place(2)])], 0, "reference"));
add("sys_convert_token", 2, new Clause(3, [new Skeleton("codes", [new Place(-3)]), new Skeleton("codes", [new Place(-4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_convert_quote"), [new Place(2), new Place(1), "[]"])], 0, "codes"));
add("sys_convert_token", 2, new Clause(3, [new Skeleton("code", [new Place(-3)]), new Skeleton("code", [new Place(-4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_convert_code"), [new Place(2), new Place(1), "[]"])], 0, "code"));
add("sys_convert_token", 2, new Clause(1, [new Place(-2), new Place(0)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_convert_quote", 3])]));
add("sys_convert_quote", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("="), [new Place(2), new Skeleton(".", [92, new Place(-4)])]), new Skeleton(new Cache("sys_convert_sep"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_convert_quote"), [new Place(1), new Place(2), new Place(3)])], 0, undefined));
add("sys_convert_quote", 3, new Clause(5, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6)], [new Skeleton(new Cache("sys_convert_char"), [new Place(1), new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_convert_quote"), [new Place(2), new Place(3), new Place(4)])], 0, "."));
add("sys_convert_quote", 3, new Clause(2, ["[]", new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, "[]"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_convert_sep", 2])]));
add("sys_convert_sep", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Skeleton(".", [13, new Skeleton(".", [10, new Place(1)])])])], -1, "."));
add("sys_convert_sep", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Skeleton(".", [10, new Place(1)])])], -1, "."));
add("sys_convert_sep", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Skeleton(".", [13, new Place(1)])])], -1, "."));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_convert_char", 3])]));
add("sys_convert_char", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("="), [new Place(2), new Skeleton(".", [92, new Place(-4)])]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_convert_escape"), [new Place(1), new Place(2), new Place(3)])], 0, undefined));
add("sys_convert_char", 3, new Clause(3, [new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Skeleton(".", [new Place(-2), new Place(-4)])]), new Skeleton(new Cache("sys_code_class"), [new Place(0), "is_cntrl"]), new Skeleton(new Cache("throw"), [new Skeleton("error", [new Compound("syntax_error", ["illegal_layout"]), new Place(-1)])]), new Skeleton(new Cache("="), [new Place(2), new Place(1)])], -1, undefined));
add("sys_convert_char", 3, new Clause(3, [new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Skeleton(".", [new Place(-2), new Place(-4)])]), new Skeleton(new Cache("sys_code_class"), [new Place(0), "is_invalid"]), new Skeleton(new Cache("throw"), [new Skeleton("error", [new Compound("syntax_error", ["illegal_unicode"]), new Place(-1)])]), new Skeleton(new Cache("="), [new Place(2), new Place(1)])], -1, undefined));
add("sys_convert_char", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("="), [new Place(1), new Skeleton(".", [new Place(0), new Place(2)])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_convert_code", 3])]));
add("sys_convert_code", 3, new Clause(3, [39, new Place(-3), new Place(-4)], [new Skeleton(new Cache("="), [new Place(1), new Skeleton(".", [39, new Place(-3)])]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_convert_double"), [new Place(1), new Place(2)])], 0, 39));
add("sys_convert_code", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_convert_char"), [new Place(0), new Place(1), new Place(2)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_convert_double", 2])]));
add("sys_convert_double", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("="), [new Place(1), new Skeleton(".", [39, new Place(-3)])]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, "."));
add("sys_convert_double", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Compound("syntax_error", ["doubling_missing"]), new Place(-1)])]), new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_convert_escape", 3])]));
add("sys_convert_escape", 3, new Clause(5, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("="), [new Place(2), new Skeleton(".", [new Place(-4), new Place(-6)])]), new Skeleton(new Cache("sys_is_escape"), [new Place(2), new Place(1)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(4), new Place(3)])], 0, undefined));
add("sys_convert_escape", 3, new Clause(6, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("="), [new Place(2), new Skeleton(".", [new Place(-4), new Place(-6)])]), new Skeleton(new Cache("sys_is_radix"), [new Place(2), 8]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_convert_radix"), [new Place(-2), 8, new Place(4), new Place(-6)]), new Skeleton(new Cache("atom_codes"), [new Place(-7), new Skeleton(".", [new Place(2), new Place(0)])]), new Skeleton(new Cache("atom_integer"), [new Place(5), 8, new Place(1)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_convert_backslash"), [new Place(4), new Place(3)])], 0, undefined));
add("sys_convert_escape", 3, new Clause(5, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("="), [new Place(2), new Skeleton(".", [120, new Place(-4)])]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_convert_radix"), [new Place(-2), 16, new Place(2), new Place(-4)]), new Skeleton(new Cache("atom_codes"), [new Place(-6), new Place(0)]), new Skeleton(new Cache("atom_integer"), [new Place(4), 16, new Place(1)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_convert_backslash"), [new Place(2), new Place(3)])], 0, undefined));
add("sys_convert_escape", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("="), [new Place(2), new Skeleton(".", [new Place(1), new Place(-4)])]), new Skeleton(new Cache("sys_is_meta"), [new Place(1)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(3)])], 0, undefined));
add("sys_convert_escape", 3, new Clause(2, [new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Compound("syntax_error", ["illegal_escape"]), new Place(-1)])]), new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_convert_backslash", 2])]));
add("sys_convert_backslash", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("="), [new Place(1), new Skeleton(".", [92, new Place(-3)])]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, "."));
add("sys_convert_backslash", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Compound("syntax_error", ["unbalanced_escape"]), new Place(-1)])]), new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_convert_radix", 4])]));
add("sys_convert_radix", 4, new Clause(6, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("="), [new Place(4), new Skeleton(".", [new Place(1), new Place(-6)])]), new Skeleton(new Cache("sys_is_radix"), [new Place(1), new Place(3)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_convert_radix"), [new Place(2), new Place(3), new Place(4), new Place(5)])], 0, "."));
add("sys_convert_radix", 4, new Clause(2, ["[]", new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, "[]"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_write_opts", 3])]));
add("sys_write_opts", 3, new Clause(1, [new Place(-2), new Place(-1), new Place(-1)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("sys_write_opts", 3, new Clause(5, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_write_opt"), [new Place(1), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_write_opts"), [new Place(2), new Place(3), new Place(4)])], 0, "."));
add("sys_write_opts", 3, new Clause(2, ["[]", new Place(-3), new Place(1)], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "[]"));
add("sys_write_opts", 3, new Clause(1, [new Place(-2), new Place(-1), new Place(-1)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["list", new Place(0)]), new Place(-1)])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_write_opt", 3])]));
add("sys_write_opt", 3, new Clause(1, [new Place(-2), new Place(-1), new Place(-1)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("sys_write_opt", 3, new Clause(4, [new Skeleton("variable_names", [new Place(-3)]), new Skeleton("v", [new Place(-1), new Place(-4), new Place(-5)]), new Skeleton("v", [new Place(1), new Place(2), new Place(3)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_write_variable_names"), [new Place(1)])], 0, "variable_names"));
add("sys_write_opt", 3, new Clause(5, [new Skeleton("quoted", [new Place(-3)]), new Skeleton("v", [new Place(-4), new Place(-5), new Place(-6)]), new Skeleton("v", [new Place(2), new Place(-4), new Place(4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_opt_boolean"), [new Place(1), 1, new Place(3), new Place(2)])], 0, "quoted"));
add("sys_write_opt", 3, new Clause(5, [new Skeleton("ignore_ops", [new Place(-3)]), new Skeleton("v", [new Place(-4), new Place(-5), new Place(-6)]), new Skeleton("v", [new Place(2), new Place(-4), new Place(4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_opt_boolean"), [new Place(1), 2, new Place(3), new Place(2)])], 0, "ignore_ops"));
add("sys_write_opt", 3, new Clause(5, [new Skeleton("format", [new Place(-3)]), new Skeleton("v", [new Place(-4), new Place(-5), new Place(-6)]), new Skeleton("v", [new Place(2), new Place(-4), new Place(4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_opt_boolean"), [new Place(1), 4, new Place(3), new Place(2)])], 0, "format"));
add("sys_write_opt", 3, new Clause(5, [new Skeleton("numbervars", [new Place(-3)]), new Skeleton("v", [new Place(-4), new Place(-5), new Place(-6)]), new Skeleton("v", [new Place(2), new Place(-4), new Place(4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_opt_boolean"), [new Place(1), 8, new Place(3), new Place(2)])], 0, "numbervars"));
add("sys_write_opt", 3, new Clause(5, [new Skeleton("annotation", [new Place(-3)]), new Skeleton("v", [new Place(-4), new Place(-5), new Place(-6)]), new Skeleton("v", [new Place(2), new Place(-4), new Place(4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_opt_boolean"), [new Place(1), 16, new Place(3), new Place(2)])], 0, "annotation"));
add("sys_write_opt", 3, new Clause(4, [new Skeleton("priority", [new Place(-3)]), new Skeleton("v", [new Place(-4), new Place(-5), new Place(-1)]), new Skeleton("v", [new Place(2), new Place(3), new Place(1)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_check_integer"), [new Place(1)])], 0, "priority"));
add("sys_write_opt", 3, new Clause(1, [new Place(-2), new Place(-1), new Place(-1)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["write_option", new Place(0)]), new Place(-1)])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_write_variable_names", 1])]));
add("sys_write_variable_names", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("sys_write_variable_names", 1, new Clause(3, [new Skeleton(".", [new Place(-3), new Place(-4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_write_variable_name"), [new Place(1)]), new Skeleton(new Cache("sys_write_variable_names"), [new Place(2)])], 0, "."));
add("sys_write_variable_names", 1, new Clause(1, ["[]"], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "[]"));
add("sys_write_variable_names", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["list", new Place(0)]), new Place(-1)])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_write_variable_name", 1])]));
add("sys_write_variable_name", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("sys_write_variable_name", 1, new Clause(2, [new Skeleton("=", [new Place(-3), new Place(-1)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_check_atom"), [new Place(1)])], 0, "="));
add("sys_write_variable_name", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["variable_name", new Place(0)]), new Place(-1)])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_read_opts", 3])]));
add("sys_read_opts", 3, new Clause(1, [new Place(-2), new Place(-1), new Place(-1)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("sys_read_opts", 3, new Clause(5, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_read_opt"), [new Place(1), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_read_opts"), [new Place(2), new Place(3), new Place(4)])], 0, "."));
add("sys_read_opts", 3, new Clause(2, ["[]", new Place(-3), new Place(1)], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "[]"));
add("sys_read_opts", 3, new Clause(1, [new Place(-2), new Place(-1), new Place(-1)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["list", new Place(0)]), new Place(-1)])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_read_opt", 3])]));
add("sys_read_opt", 3, new Clause(1, [new Place(-2), new Place(-1), new Place(-1)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("sys_read_opt", 3, new Clause(2, [new Skeleton("variable_names", [new Place(-1)]), new Place(-3), new Place(1)], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "variable_names"));
add("sys_read_opt", 3, new Clause(2, [new Skeleton("singletons", [new Place(-1)]), new Place(-3), new Place(1)], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "singletons"));
add("sys_read_opt", 3, new Clause(3, [new Skeleton("priority", [new Place(-3)]), new Skeleton("z", [new Place(-1), new Place(-4)]), new Skeleton("z", [new Place(1), new Place(2)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_check_integer"), [new Place(1)])], 0, "priority"));
add("sys_read_opt", 3, new Clause(4, [new Skeleton("annotation", [new Place(-3)]), new Skeleton("z", [new Place(-4), new Place(-5)]), new Skeleton("z", [new Place(2), new Place(-4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_opt_boolean"), [new Place(1), 16, new Place(3), new Place(2)])], 0, "annotation"));
add("sys_read_opt", 3, new Clause(1, [new Place(-2), new Place(-1), new Place(-1)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["read_option", new Place(0)]), new Place(-1)])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_read_results", 2])]));
add("sys_read_results", 2, new Clause(1, [new Place(-2), new Place(-1)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("sys_read_results", 2, new Clause(4, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_read_result"), [new Place(1), new Place(3)]), new Skeleton(new Cache("sys_read_results"), [new Place(2), new Place(3)])], 0, "."));
add("sys_read_results", 2, new Clause(1, ["[]", new Place(-1)], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "[]"));
add("sys_read_results", 2, new Clause(1, [new Place(-2), new Place(-1)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["list", new Place(0)]), new Place(-1)])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_read_result", 2])]));
add("sys_read_result", 2, new Clause(1, [new Place(-2), new Place(-1)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("sys_read_result", 2, new Clause(3, [new Skeleton("variable_names", [new Place(-3)]), new Skeleton("s", [new Place(-4), new Place(-1)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("reverse"), [new Place(2), new Place(1)])], 0, "variable_names"));
add("sys_read_result", 2, new Clause(3, [new Skeleton("singletons", [new Place(-3)]), new Skeleton("s", [new Place(-1), new Place(-4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("reverse"), [new Place(2), new Place(1)])], 0, "singletons"));
add("sys_read_result", 2, new Clause(1, [new Skeleton("priority", [new Place(-1)]), new Place(-1)], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "priority"));
add("sys_read_result", 2, new Clause(1, [new Skeleton("annotation", [new Place(-1)]), new Place(-1)], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "annotation"));
add("sys_read_result", 2, new Clause(1, [new Place(-2), new Place(-1)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["read_option", new Place(0)]), new Place(-1)])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_opt_boolean", 4])]));
add("sys_opt_boolean", 4, new Clause(1, [new Place(-2), new Place(-1), new Place(-1), new Place(-1)], [new Skeleton(new Cache("var"), [new Place(0)]), new Skeleton(new Cache("throw"), [new Skeleton("error", ["instantiation_error", new Place(-1)])])], -1, undefined));
add("sys_opt_boolean", 4, new Clause(4, ["true", new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("\\\/"), [new Place(2), new Place(1)]), new Place(3)])], 0, "true"));
add("sys_opt_boolean", 4, new Clause(4, ["false", new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("\/\\"), [new Place(2), new Skeleton(new Cache("\\"), [new Place(1)])]), new Place(3)])], 0, "false"));
add("sys_opt_boolean", 4, new Clause(1, [new Place(-2), new Place(-1), new Place(-1), new Place(-1)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["boolean", new Place(0)]), new Place(-1)])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_proper_atom", 1])]));
add("sys_proper_atom", 1, new Clause(3, [new Skeleton(".", [new Place(-2), new Place(-3)])], [new Skeleton(new Cache("sys_code_class"), [new Place(0), new Place(-4)]), new Skeleton(new Cache("sys_proper_atom"), [new Place(2), new Skeleton(".", [new Place(0), new Place(1)])])], -1, "."));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_proper_atom", 2])]));
add("sys_proper_atom", 2, new Clause(1, ["is_ident", new Skeleton(".", [new Place(-1), new Place(-2)])], [new Skeleton(new Cache("sys_proper_atom_name"), [new Place(0)])], -1, "is_ident"));
add("sys_proper_atom", 2, new Clause(1, ["is_graphic", new Compound(".", [46, "[]"])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Cache("fail")], 0, "is_graphic"));
add("sys_proper_atom", 2, new Clause(1, ["is_graphic", new Skeleton(".", [47, new Skeleton(".", [42, new Place(-1)])])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Cache("fail")], 0, "is_graphic"));
add("sys_proper_atom", 2, new Clause(1, ["is_graphic", new Skeleton(".", [new Place(-1), new Place(-2)])], [new Skeleton(new Cache("sys_proper_atom_graphic"), [new Place(0)])], -1, "is_graphic"));
add("sys_proper_atom", 2, new Clause(1, ["is_solo", new Compound(".", [39, "[]"])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Cache("fail")], 0, "is_solo"));
add("sys_proper_atom", 2, new Clause(1, ["is_solo", new Compound(".", [96, "[]"])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Cache("fail")], 0, "is_solo"));
add("sys_proper_atom", 2, new Clause(1, ["is_solo", new Compound(".", [34, "[]"])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Cache("fail")], 0, "is_solo"));
add("sys_proper_atom", 2, new Clause(1, ["is_solo", new Compound(".", [37, "[]"])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Cache("fail")], 0, "is_solo"));
add("sys_proper_atom", 2, new Clause(0, ["is_solo", new Skeleton(".", [new Place(-1), "[]"])], [], -1, "is_solo"));
add("sys_proper_atom", 2, new Clause(1, ["is_punct", new Compound(".", [91, new Compound(".", [93, "[]"])])], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "is_punct"));
add("sys_proper_atom", 2, new Clause(0, ["is_punct", new Compound(".", [123, new Compound(".", [125, "[]"])])], [], -1, "is_punct"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_proper_atom_name", 1])]));
add("sys_proper_atom_name", 1, new Clause(3, [new Skeleton(".", [new Place(-3), new Place(-4)])], [new Skeleton(new Cache("sys_code_class"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_name_class"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_proper_atom_name"), [new Place(2)])], 0, "."));
add("sys_proper_atom_name", 1, new Clause(0, ["[]"], [], -1, "[]"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_proper_atom_graphic", 1])]));
add("sys_proper_atom_graphic", 1, new Clause(3, [new Skeleton(".", [new Place(-3), new Place(-4)])], [new Skeleton(new Cache("sys_code_class"), [new Place(1), "is_graphic"]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_proper_atom_graphic"), [new Place(2)])], 0, "."));
add("sys_proper_atom_graphic", 1, new Clause(0, ["[]"], [], -1, "[]"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_escape_codes", 3])]));
add("sys_escape_codes", 3, new Clause(4, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_escape_code"), [new Place(0), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_escape_codes"), [new Place(1), new Place(2), new Place(3)])], -1, "."));
add("sys_escape_codes", 3, new Clause(2, ["[]", new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, "[]"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_escape_code", 3])]));
add("sys_escape_code", 3, new Clause(5, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_is_escape"), [new Place(-6), new Place(1)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("="), [new Place(2), new Skeleton(".", [92, new Skeleton(".", [new Place(4), new Place(3)])])])], 0, undefined));
add("sys_escape_code", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_is_meta"), [new Place(1)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("="), [new Place(2), new Skeleton(".", [92, new Skeleton(".", [new Place(1), new Place(3)])])])], 0, undefined));
add("sys_escape_code", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_code_class"), [new Place(1), "is_cntrl"]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_escape_code2"), [new Place(1), new Place(2), new Place(3)])], 0, undefined));
add("sys_escape_code", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_code_class"), [new Place(1), "is_invalid"]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_escape_code2"), [new Place(1), new Place(2), new Place(3)])], 0, undefined));
add("sys_escape_code", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("="), [new Place(1), new Skeleton(".", [new Place(0), new Place(2)])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_escape_code2", 3])]));
add("sys_escape_code2", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("=<"), [new Place(1), 511]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("atom_integer"), [new Place(-2), 8, new Place(1)]), new Skeleton(new Cache("atom_codes"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("="), [new Place(2), new Skeleton(".", [92, new Place(-4)])]), new Skeleton(new Cache("sys_escape_codes2"), [new Place(0), new Place(2), new Place(-4)]), new Skeleton(new Cache("="), [new Place(2), new Skeleton(".", [92, new Place(3)])])], 0, undefined));
add("sys_escape_code2", 3, new Clause(4, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("atom_integer"), [new Place(-5), 16, new Place(0)]), new Skeleton(new Cache("atom_codes"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("="), [new Place(1), new Skeleton(".", [92, new Skeleton(".", [120, new Place(-3)])])]), new Skeleton(new Cache("sys_escape_codes2"), [new Place(3), new Place(1), new Place(-3)]), new Skeleton(new Cache("="), [new Place(1), new Skeleton(".", [92, new Place(2)])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_escape_codes2", 3])]));
add("sys_escape_codes2", 3, new Clause(5, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("="), [new Place(3), new Skeleton(".", [new Place(1), new Place(-3)])]), new Skeleton(new Cache("sys_escape_codes2"), [new Place(2), new Place(1), new Place(4)])], 0, "."));
add("sys_escape_codes2", 3, new Clause(2, ["[]", new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, "[]"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_make_negative", 2])]));
add("sys_make_negative", 2, new Clause(4, [new Skeleton("$RDX", [new Place(-3), new Place(-4)]), new Skeleton("$RDX", [new Place(-5), new Place(2)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(1)]), new Place(3)])], 0, "$RDX"));
add("sys_make_negative", 2, new Clause(3, [new Skeleton("$CHR", [new Place(-3)]), new Skeleton("$CHR", [new Place(-4)])], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(1)]), new Place(2)])], 0, "$CHR"));
add("sys_make_negative", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(0)]), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_multifile_safe"), ["strings", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["strings", 3])]));
add("strings", 3, new Clause(0, ["syntax_error.illegal_number", "de", "Keine Nummer."], [], -1, "syntax_error.illegal_number"));
add("strings", 3, new Clause(0, ["syntax_error.illegal_reference", "de", "Keine Referenz."], [], -1, "syntax_error.illegal_reference"));
add("strings", 3, new Clause(0, ["syntax_error.illegal_layout", "de", "Unerlaubtes Druckbildzeichen in Zeichenkette."], [], -1, "syntax_error.illegal_layout"));
add("strings", 3, new Clause(0, ["syntax_error.illegal_unicode", "de", "Unerlaubtes Unicodezeichen im Text."], [], -1, "syntax_error.illegal_unicode"));
add("strings", 3, new Clause(0, ["syntax_error.doubling_missing", "de", "Anführungszeichen nicht zweifach."], [], -1, "syntax_error.doubling_missing"));
add("strings", 3, new Clause(0, ["syntax_error.illegal_escape", "de", "Unerlaubte Steuersequenz in Zeichenkette."], [], -1, "syntax_error.illegal_escape"));
add("strings", 3, new Clause(0, ["syntax_error.unbalanced_escape", "de", "Steuersequenz nicht abgeschlossen."], [], -1, "syntax_error.unbalanced_escape"));
add("strings", 3, new Clause(0, ["syntax_error.end_of_file_in_block_comment", "de", "Blockkommentar nicht geschlossen."], [], -1, "syntax_error.end_of_file_in_block_comment"));
add("strings", 3, new Clause(0, ["syntax_error.end_of_line_as_character", "de", "Unerlaubtes Zeilenende als Zeichen."], [], -1, "syntax_error.end_of_line_as_character"));
add("strings", 3, new Clause(0, ["syntax_error.singleton_var", "de", "Alleinstehende Variable(n) ~, anonyme Variable(n) (_) benutzen."], [], -1, "syntax_error.singleton_var"));
add("strings", 3, new Clause(0, ["syntax_error.bracket_balance", "de", "Rechte eckige Klammer (\"]\") fehlt."], [], -1, "syntax_error.bracket_balance"));
add("strings", 3, new Clause(0, ["syntax_error.brace_balance", "de", "Rechte geschweifte Klammer (\"}\") fehlt."], [], -1, "syntax_error.brace_balance"));
add("strings", 3, new Clause(0, ["syntax_error.parenthesis_balance", "de", "Rechte runde Klammer (\")\") fehlt."], [], -1, "syntax_error.parenthesis_balance"));
add("strings", 3, new Clause(0, ["syntax_error.end_of_clause_expected", "de", "Überflüssiges Token."], [], -1, "syntax_error.end_of_clause_expected"));
add("strings", 3, new Clause(0, ["syntax_error.operator_clash", "de", "Runde Klammer (\"(\") vor Operator fehlt."], [], -1, "syntax_error.operator_clash"));
add("strings", 3, new Clause(0, ["syntax_error.cannot_start_term", "de", "Term fehlt."], [], -1, "syntax_error.cannot_start_term"));
add("strings", 3, new Clause(0, ["existence_error.source_sink", "de", "Datei ~ nicht gefunden."], [], -1, "existence_error.source_sink"));
add("strings", 3, new Clause(0, ["permission_error.open.source_sink", "de", "Kann Datei ~ nicht öffnen."], [], -1, "permission_error.open.source_sink"));
add("strings", 3, new Clause(0, ["resource_error.io_exception", "de", "Datei nicht erstellt oder nicht zugreifbar."], [], -1, "resource_error.io_exception"));
add("strings", 3, new Clause(0, ["resource_error.remote_error", "de", "Fehler von Entfernt erhalten."], [], -1, "resource_error.remote_error"));
add("strings", 3, new Clause(0, ["resource_error.socket_timeout", "de", "Ein-\/Ausgabeauszeit."], [], -1, "resource_error.socket_timeout"));
add("strings", 3, new Clause(0, ["syntax_error.illegal_number", "", "Not a number."], [], -1, "syntax_error.illegal_number"));
add("strings", 3, new Clause(0, ["syntax_error.illegal_reference", "", "Not a reference."], [], -1, "syntax_error.illegal_reference"));
add("strings", 3, new Clause(0, ["syntax_error.illegal_layout", "", "Illegal layout character in string."], [], -1, "syntax_error.illegal_layout"));
add("strings", 3, new Clause(0, ["syntax_error.illegal_unicode", "", "Illegal Unicode character in text."], [], -1, "syntax_error.illegal_unicode"));
add("strings", 3, new Clause(0, ["syntax_error.doubling_missing", "", "Quote not doubled."], [], -1, "syntax_error.doubling_missing"));
add("strings", 3, new Clause(0, ["syntax_error.illegal_escape", "", "Illegal escape sequence in string."], [], -1, "syntax_error.illegal_escape"));
add("strings", 3, new Clause(0, ["syntax_error.unbalanced_escape", "", "Escape sequence not closed."], [], -1, "syntax_error.unbalanced_escape"));
add("strings", 3, new Clause(0, ["syntax_error.end_of_file_in_block_comment", "", "Block comment not closed."], [], -1, "syntax_error.end_of_file_in_block_comment"));
add("strings", 3, new Clause(0, ["syntax_error.end_of_line_as_character", "", "Illegal end of line as character."], [], -1, "syntax_error.end_of_line_as_character"));
add("strings", 3, new Clause(0, ["syntax_error.singleton_var", "", "Singleton variable(s) ~, use anonymous variable(s) (_)."], [], -1, "syntax_error.singleton_var"));
add("strings", 3, new Clause(0, ["syntax_error.bracket_balance", "", "Right bracket (\"]\") missing."], [], -1, "syntax_error.bracket_balance"));
add("strings", 3, new Clause(0, ["syntax_error.brace_balance", "", "Right brace (\"}\") missing."], [], -1, "syntax_error.brace_balance"));
add("strings", 3, new Clause(0, ["syntax_error.parenthesis_balance", "", "Right parenthesis (\")\") missing."], [], -1, "syntax_error.parenthesis_balance"));
add("strings", 3, new Clause(0, ["syntax_error.end_of_clause_expected", "", "Superfluous token."], [], -1, "syntax_error.end_of_clause_expected"));
add("strings", 3, new Clause(0, ["syntax_error.operator_clash", "", "Parenthesis (\"(\") before operator missing."], [], -1, "syntax_error.operator_clash"));
add("strings", 3, new Clause(0, ["syntax_error.cannot_start_term", "", "Term missing."], [], -1, "syntax_error.cannot_start_term"));
add("strings", 3, new Clause(0, ["existence_error.source_sink", "", "File ~ not found."], [], -1, "existence_error.source_sink"));
add("strings", 3, new Clause(0, ["permission_error.open.source_sink", "", "Cannot open file ~."], [], -1, "permission_error.open.source_sink"));
add("strings", 3, new Clause(0, ["resource_error.io_exception", "", "File not created or not accessible."], [], -1, "resource_error.io_exception"));
add("strings", 3, new Clause(0, ["resource_error.remote_error", "", "Got error from remote."], [], -1, "resource_error.remote_error"));
add("strings", 3, new Clause(0, ["resource_error.socket_timeout", "", "Input\/output timeout."], [], -1, "resource_error.socket_timeout"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_is_infix", 3])]));
add("sys_is_infix", 3, new Clause(0, ["xfx", 1, 1], [], -1, "xfx"));
add("sys_is_infix", 3, new Clause(0, ["yfx", 0, 1], [], -1, "yfx"));
add("sys_is_infix", 3, new Clause(0, ["xfy", 1, 0], [], -1, "xfy"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_is_prefix", 2])]));
add("sys_is_prefix", 2, new Clause(0, ["fx", 1], [], -1, "fx"));
add("sys_is_prefix", 2, new Clause(0, ["fy", 0], [], -1, "fy"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_is_postfix", 2])]));
add("sys_is_postfix", 2, new Clause(0, ["xf", 1], [], -1, "xf"));
add("sys_is_postfix", 2, new Clause(0, ["yf", 0], [], -1, "yf"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_write_term", 3])]));
add("sys_write_term", 3, new Clause(5, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_write_opts"), [new Place(2), new Compound("v", ["[]", 0, 1200]), new Skeleton("v", [new Place(-4), new Place(-5), new Place(-6)])]), new Skeleton(new Cache("set_lastcode"), [new Place(0), -1]), new Skeleton(new Cache("sys_write_priority"), [new Place(1), new Skeleton("w", [1, new Place(4), 0]), new Skeleton("v", [new Place(0), new Place(3), new Place(2)])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_write_priority", 3])]));
add("sys_write_priority", 3, new Clause(3, [new Place(-3), new Place(-1), new Place(-4)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_write_var"), [new Place(1), new Place(2)])], 0, undefined));
add("sys_write_priority", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("number"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_write_number"), [new Place(1), new Place(2), new Place(3)])], 0, undefined));
add("sys_write_priority", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("atom"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_write_atom"), [new Place(1), new Place(2), new Place(3)])], 0, undefined));
add("sys_write_priority", 3, new Clause(3, [new Place(-3), new Place(-1), new Place(-4)], [new Skeleton(new Cache("reference"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_put_symbol"), [new Place(1), new Place(2)])], 0, undefined));
add("sys_write_priority", 3, new Clause(6, [new Skeleton("$RDX", [new Place(-3), new Place(-4)]), new Skeleton("w", [new Place(-5), new Place(-1), new Place(-1)]), new Place(-6)], [new Skeleton(new Cache("sys_current_flags"), [new Place(4), new Place(-7)]), new Skeleton(new Cache("=\\="), [new Skeleton(new Cache("\/\\"), [new Place(5), 16]), 0]), new Skeleton(new Cache("integer"), [new Place(1)]), new Skeleton(new Cache("integer"), [new Place(2)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_atom_radix"), [new Place(-2), new Place(2), new Place(1)]), new Skeleton(new Cache("sys_current_stream"), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_put_nspace"), [new Place(4), new Place(3)]), new Skeleton(new Cache("sys_safe_atom"), [new Place(4), new Place(0)])], 0, "$RDX"));
add("sys_write_priority", 3, new Clause(4, [new Skeleton("$STR", [new Place(-3)]), new Place(-1), new Place(-4)], [new Skeleton(new Cache("sys_current_flags"), [new Place(2), new Place(-5)]), new Skeleton(new Cache("=\\="), [new Skeleton(new Cache("\/\\"), [new Place(3), 16]), 0]), new Skeleton(new Cache("atom"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_atom_string"), [new Place(-2), new Place(1)]), new Skeleton(new Cache("sys_current_stream"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_safe_atom"), [new Place(2), new Place(0)])], 0, "$STR"));
add("sys_write_priority", 3, new Clause(5, [new Skeleton("$CHR", [new Place(-3)]), new Skeleton("w", [new Place(-4), new Place(-1), new Place(-1)]), new Place(-5)], [new Skeleton(new Cache("sys_current_flags"), [new Place(3), new Place(-6)]), new Skeleton(new Cache("=\\="), [new Skeleton(new Cache("\/\\"), [new Place(4), 16]), 0]), new Skeleton(new Cache("integer"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_atom_char"), [new Place(-2), new Place(1)]), new Skeleton(new Cache("sys_current_stream"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_put_nspace"), [new Place(3), new Place(2)]), new Skeleton(new Cache("sys_safe_atom"), [new Place(3), new Place(0)])], 0, "$CHR"));
add("sys_write_priority", 3, new Clause(5, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_current_flags"), [new Place(3), new Place(-6)]), new Skeleton(new Cache("=\\="), [new Skeleton(new Cache("\/\\"), [new Place(4), 2]), 0]), new Skeleton(new Cache("compound"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_write_compound"), [new Place(1), new Place(2), new Place(3)])], 0, undefined));
add("sys_write_priority", 3, new Clause(5, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Skeleton("w", [new Place(-1), new Place(-1), new Place(-5)]), new Place(-6)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_current_stream"), [new Place(4), new Place(-2)]), new Skeleton(new Cache("put_code"), [new Place(0), 91]), new Skeleton(new Cache("sys_write_priority"), [new Place(1), new Skeleton("w", [1, 999, new Place(3)]), new Place(4)]), new Skeleton(new Cache("sys_write_list"), [new Place(2), new Place(3), new Place(4)]), new Skeleton(new Cache("put_code"), [new Place(0), 93])], 0, "."));
add("sys_write_priority", 3, new Clause(4, [new Skeleton("{}", [new Place(-3)]), new Skeleton("w", [new Place(-1), new Place(-1), new Place(-4)]), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_current_stream"), [new Place(3), new Place(-2)]), new Skeleton(new Cache("put_code"), [new Place(0), 123]), new Skeleton(new Cache("sys_write_priority"), [new Place(1), new Skeleton("w", [1, 1200, new Place(2)]), new Place(3)]), new Skeleton(new Cache("put_code"), [new Place(0), 125])], 0, "{}"));
add("sys_write_priority", 3, new Clause(7, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("functor"), [new Place(1), new Place(-6), 1]), new Skeleton(new Cache("sys_op"), [new Place(4), new Place(-6), new Place(-7), new Place(-8), new Place(-1)]), new Skeleton(new Cache("sys_is_prefix"), [new Place(4), new Place(-6)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_write_prefix"), [new Place(1), new Place(2), new Place(3), new Place(5), new Place(6), new Place(4)])], 0, undefined));
add("sys_write_priority", 3, new Clause(7, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("functor"), [new Place(1), new Place(-6), 1]), new Skeleton(new Cache("sys_op"), [new Place(4), new Place(-6), new Place(-7), new Place(-8), new Place(-1)]), new Skeleton(new Cache("sys_is_postfix"), [new Place(4), new Place(-6)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_write_postfix"), [new Place(1), new Place(2), new Place(3), new Place(5), new Place(6), new Place(4)])], 0, undefined));
add("sys_write_priority", 3, new Clause(8, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("functor"), [new Place(1), new Place(-6), 2]), new Skeleton(new Cache("sys_op"), [new Place(4), new Place(-6), new Place(-7), new Place(-8), new Place(-1)]), new Skeleton(new Cache("sys_is_infix"), [new Place(4), new Place(-6), new Place(-9)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_write_infix"), [new Place(1), new Place(2), new Place(3), new Place(5), new Place(6), new Place(4), new Place(7)])], 0, undefined));
add("sys_write_priority", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_write_compound"), [new Place(0), new Place(1), new Place(2)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_write_number", 3])]));
add("sys_write_number", 3, new Clause(4, [new Place(-3), new Skeleton("w", [new Place(-4), new Place(-1), new Place(-1)]), new Place(-5)], [new Skeleton(new Cache("number"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_number"), [new Place(-2), new Place(1)]), new Skeleton(new Cache("sys_current_stream"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_put_nspace"), [new Place(3), new Place(2)]), new Skeleton(new Cache("sys_safe_atom"), [new Place(3), new Place(0)])], 0, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_write_atom", 3])]));
add("sys_write_atom", 3, new Clause(5, [new Place(-3), new Skeleton("w", [new Place(-4), new Place(-1), new Place(-1)]), new Place(-5)], [new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(2), 1]), 0]), new Skeleton(new Cache("sys_op"), [new Place(1), new Place(-6), new Place(-1), new Place(-1), new Place(-1)]), new Skeleton(new Cache("sys_is_prefix"), [new Place(4), new Place(-1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_current_stream"), [new Place(3), new Place(-2)]), new Skeleton(new Cache("sys_put_lparen"), [new Place(0), 1, 0, 1200, new Place(2), new Place(-1)]), new Skeleton(new Cache("sys_put_symbol"), [new Place(1), new Place(3)]), new Skeleton(new Cache("put_code"), [new Place(0), 41])], 0, undefined));
add("sys_write_atom", 3, new Clause(2, [new Place(-2), new Place(-1), new Place(-3)], [new Skeleton(new Cache("sys_put_symbol"), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_write_prefix", 6])]));
add("sys_write_prefix", 6, new Clause(12, [new Place(-2), new Skeleton("w", [new Place(-3), new Place(-4), new Place(-5)]), new Place(-6), new Place(-7), new Place(-8), new Place(-9)], [new Skeleton(new Cache("=.."), [new Place(0), new Skeleton(".", [new Place(-2), new Skeleton(".", [new Place(-10), "[]"])])]), new Skeleton(new Cache("sys_current_stream"), [new Place(4), new Place(-11)]), new Skeleton(new Cache("sys_current_flags"), [new Place(4), new Place(-12)]), new Skeleton(new Cache("sys_put_lparen"), [new Place(9), new Place(7), new Place(2), new Place(5), new Place(1), new Place(-13)]), new Skeleton(new Cache("sys_put_adjust"), [new Place(3), new Place(10), new Place(6), new Place(-12)]), new Skeleton(new Cache("sys_oper_minus"), [new Place(0), new Place(11), new Place(-13)]), new Skeleton(new Cache("sys_put_symbol"), [new Place(0), new Place(4)]), new Skeleton(new Cache("sys_put_rspace"), [new Place(9), new Place(6), new Place(11), new Place(-13)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(5), new Place(7)]), new Place(-8)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("\/\\"), [new Place(11), new Compound(new Cache("\\"), [8])]), new Place(-13)]), new Skeleton(new Cache("sys_write_priority"), [new Place(8), new Skeleton("w", [new Place(11), new Place(6), new Place(10)]), new Place(4)]), new Skeleton(new Cache("sys_put_rparen"), [new Place(9), new Place(7), new Place(2), new Place(5), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_write_postfix", 6])]));
add("sys_write_postfix", 6, new Clause(11, [new Place(-2), new Skeleton("w", [new Place(-3), new Place(-4), new Place(-5)]), new Place(-6), new Place(-7), new Place(-8), new Place(-9)], [new Skeleton(new Cache("=.."), [new Place(0), new Skeleton(".", [new Place(-2), new Skeleton(".", [new Place(-10), "[]"])])]), new Skeleton(new Cache("sys_current_stream"), [new Place(4), new Place(-11)]), new Skeleton(new Cache("sys_put_lparen"), [new Place(9), 1, new Place(2), new Place(5), new Place(1), new Place(-12)]), new Skeleton(new Cache("sys_oper_escape"), [new Place(0), new Place(10), new Place(-12)]), new Skeleton(new Cache("sys_oper_side"), [new Place(7), new Place(10), new Place(-12)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(5), new Place(7)]), new Place(-9)]), new Skeleton(new Cache("sys_write_priority"), [new Place(8), new Skeleton("w", [new Place(10), new Place(7), new Place(3)]), new Place(4)]), new Skeleton(new Cache("sys_put_lspace"), [new Place(9), new Place(6)]), new Skeleton(new Cache("sys_put_oper"), [new Place(0), new Place(4), new Place(-1)]), new Skeleton(new Cache("sys_put_rparen"), [new Place(9), 1, new Place(2), new Place(5), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_write_infix", 7])]));
add("sys_write_infix", 7, new Clause(15, [new Place(-2), new Skeleton("w", [new Place(-3), new Place(-4), new Place(-5)]), new Place(-6), new Place(-7), new Place(-8), new Place(-9), new Place(-10)], [new Skeleton(new Cache("=.."), [new Place(0), new Skeleton(".", [new Place(-2), new Skeleton(".", [new Place(-11), new Skeleton(".", [new Place(-12), "[]"])])])]), new Skeleton(new Cache("sys_current_stream"), [new Place(4), new Place(-13)]), new Skeleton(new Cache("sys_current_flags"), [new Place(4), new Place(-14)]), new Skeleton(new Cache("sys_put_lparen"), [new Place(11), new Place(8), new Place(2), new Place(5), new Place(1), new Place(-15)]), new Skeleton(new Cache("sys_put_indent"), [new Place(11), new Place(3), new Place(12), new Place(6), new Place(8), new Place(2), new Place(5), new Place(1), new Place(-5)]), new Skeleton(new Cache("sys_oper_escape"), [new Place(0), new Place(13), new Place(-16)]), new Skeleton(new Cache("sys_oper_side"), [new Place(7), new Place(14), new Place(-16)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(5), new Place(7)]), new Place(-9)]), new Skeleton(new Cache("sys_write_priority"), [new Place(9), new Skeleton("w", [new Place(14), new Place(7), new Place(3)]), new Place(4)]), new Skeleton(new Cache("sys_put_lformat"), [new Place(11), new Place(3), new Place(12), new Place(6)]), new Skeleton(new Cache("sys_put_oper"), [new Place(0), new Place(4), new Place(-2)]), new Skeleton(new Cache("sys_put_rformat"), [new Place(11), new Place(3), new Place(12), new Place(6), new Place(0), new Place(13)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(5), new Place(8)]), new Place(-2)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("\/\\"), [new Place(13), new Compound(new Cache("\\"), [14])]), new Place(-15)]), new Skeleton(new Cache("sys_write_priority"), [new Place(10), new Skeleton("w", [new Place(13), new Place(0), new Place(3)]), new Place(4)]), new Skeleton(new Cache("sys_put_rparen"), [new Place(11), new Place(8), new Place(2), new Place(5), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_write_list", 3])]));
add("sys_write_list", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("var"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_current_stream"), [new Place(3), new Place(-2)]), new Skeleton(new Cache("put_code"), [new Place(0), 124]), new Skeleton(new Cache("sys_write_priority"), [new Place(1), new Skeleton("w", [1, 999, new Place(2)]), new Place(3)])], 0, undefined));
add("sys_write_list", 3, new Clause(5, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_current_stream"), [new Place(4), new Place(-2)]), new Skeleton(new Cache("put_atom"), [new Place(0), ", "]), new Skeleton(new Cache("sys_write_priority"), [new Place(1), new Skeleton("w", [1, 999, new Place(3)]), new Place(4)]), new Skeleton(new Cache("sys_write_list"), [new Place(2), new Place(3), new Place(4)])], 0, "."));
add("sys_write_list", 3, new Clause(1, ["[]", new Place(-1), new Place(-1)], [new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, "[]"));
add("sys_write_list", 3, new Clause(4, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_current_stream"), [new Place(2), new Place(-5)]), new Skeleton(new Cache("put_code"), [new Place(3), 124]), new Skeleton(new Cache("sys_write_priority"), [new Place(0), new Skeleton("w", [1, 999, new Place(1)]), new Place(2)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_write_compound", 3])]));
add("sys_write_compound", 3, new Clause(6, [new Place(-2), new Skeleton("w", [new Place(-1), new Place(-1), new Place(-3)]), new Place(-4)], [new Skeleton(new Cache("=.."), [new Place(0), new Skeleton(".", [new Place(-2), new Skeleton(".", [new Place(-5), new Place(-6)])])]), new Skeleton(new Cache("sys_current_stream"), [new Place(2), new Place(-7)]), new Skeleton(new Cache("sys_put_symbol"), [new Place(0), new Place(2)]), new Skeleton(new Cache("put_code"), [new Place(5), 40]), new Skeleton(new Cache("sys_write_priority"), [new Place(3), new Skeleton("w", [1, 999, new Place(1)]), new Place(2)]), new Skeleton(new Cache("sys_write_args"), [new Place(4), new Place(1), new Place(2)]), new Skeleton(new Cache("put_code"), [new Place(5), 41])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_write_args", 3])]));
add("sys_write_args", 3, new Clause(5, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_current_stream"), [new Place(3), new Place(-6)]), new Skeleton(new Cache("put_atom"), [new Place(4), ", "]), new Skeleton(new Cache("sys_write_priority"), [new Place(0), new Skeleton("w", [1, 999, new Place(2)]), new Place(3)]), new Skeleton(new Cache("sys_write_args"), [new Place(1), new Place(2), new Place(3)])], -1, "."));
add("sys_write_args", 3, new Clause(0, ["[]", new Place(-1), new Place(-1)], [], -1, "[]"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_atom_radix", 3])]));
add("sys_atom_radix", 3, new Clause(3, [new Place(-3), 16, new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_atom_radix2"), [new Place(1), 16, "0x", new Place(2)])], 0, undefined));
add("sys_atom_radix", 3, new Clause(3, [new Place(-3), 8, new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_atom_radix2"), [new Place(1), 8, "0o", new Place(2)])], 0, undefined));
add("sys_atom_radix", 3, new Clause(3, [new Place(-3), 2, new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_atom_radix2"), [new Place(1), 2, "0b", new Place(2)])], 0, undefined));
add("sys_atom_radix", 3, new Clause(2, [new Place(-2), new Place(-1), new Place(-3)], [new Skeleton(new Cache("atom_integer"), [new Place(0), 10, new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_atom_radix2", 4])]));
add("sys_atom_radix2", 4, new Clause(5, [new Place(-3), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("=<"), [0, new Place(4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_integer"), [new Place(-2), new Place(2), new Place(4)]), new Skeleton(new Cache("atom_split"), [new Place(1), "", new Skeleton(".", [new Place(3), new Skeleton(".", [new Place(0), "[]"])])])], 0, undefined));
add("sys_atom_radix2", 4, new Clause(5, [new Place(-3), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(4)]), new Place(-6)]), new Skeleton(new Cache("atom_integer"), [new Place(-2), new Place(2), new Place(4)]), new Skeleton(new Cache("atom_split"), [new Place(1), "", new Skeleton(".", ["-", new Skeleton(".", [new Place(3), new Skeleton(".", [new Place(0), "[]"])])])])], 0, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_atom_string", 2])]));
add("sys_atom_string", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("atom_codes"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_escape_codes"), [new Place(1), new Place(-3), new Compound(".", [34, "[]"])]), new Skeleton(new Cache("atom_codes"), [new Place(0), new Skeleton(".", [34, new Place(1)])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_atom_char", 2])]));
add("sys_atom_char", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("=<"), [0, new Place(2)]), new Skeleton(new Cache("=<"), [new Place(2), 1114111]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_escape_code"), [new Place(2), new Place(-4), "[]"]), new Skeleton(new Cache("atom_codes"), [new Place(1), new Skeleton(".", [48, new Skeleton(".", [39, new Place(2)])])])], 0, undefined));
add("sys_atom_char", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("=<"), [-1114111, new Place(2)]), new Skeleton(new Cache("=<"), [new Place(2), -1]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(2)]), new Place(-4)]), new Skeleton(new Cache("sys_escape_code"), [new Place(2), new Place(-4), "[]"]), new Skeleton(new Cache("atom_codes"), [new Place(1), new Skeleton(".", [45, new Skeleton(".", [48, new Skeleton(".", [39, new Place(2)])])])])], 0, undefined));
add("sys_atom_char", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("atom_integer"), [new Place(0), 10, new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_write_var", 2])]));
add("sys_write_var", 2, new Clause(4, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_current_vars"), [new Place(2), new Place(-5)]), new Skeleton(new Cache("sys_find_var"), [new Place(1), new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_current_flags"), [new Place(2), new Place(-2)]), new Skeleton(new Cache("sys_var_quoted"), [new Place(3), new Place(0), new Place(-2)]), new Skeleton(new Cache("sys_current_stream"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_safe_atom"), [new Place(2), new Place(0)])], 0, undefined));
add("sys_write_var", 2, new Clause(3, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_current_stream"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_safe_code"), [new Place(1), 95]), new Skeleton(new Cache("dg_var_serno"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("atom_integer"), [new Place(-4), 10, new Place(0)]), new Skeleton(new Cache("put_atom"), [new Place(1), new Place(2)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_find_var", 3])]));
add("sys_find_var", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("member"), [new Skeleton("=", [new Place(3), new Place(-5)]), new Place(2)]), new Skeleton(new Cache("=="), [new Place(1), new Place(3)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_var_quoted", 3])]));
add("sys_var_quoted", 3, new Clause(3, [new Place(-3), new Place(-4), new Place(1)], [new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(2), 1]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_var_quoted", 3, new Clause(3, [new Place(-3), new Place(-1), new Place(-4)], [new Skeleton(new Cache("atom_codes"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("\\+"), [new Skeleton("sys_proper_var", [new Place(1)])]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_escape_codes"), [new Place(1), new Place(-3), new Compound(".", [96, "[]"])]), new Skeleton(new Cache("atom_codes"), [new Place(2), new Skeleton(".", [96, new Place(1)])])], 0, undefined));
add("sys_var_quoted", 3, new Clause(1, [new Place(-2), new Place(-1), new Place(0)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_proper_var", 1])]));
add("sys_proper_var", 1, new Clause(3, [new Skeleton(".", [new Place(-2), new Place(-3)])], [new Skeleton(new Cache("sys_code_class"), [new Place(0), new Place(-4)]), new Skeleton(new Cache("sys_proper_var"), [new Place(2), new Skeleton(".", [new Place(0), new Place(1)])])], -1, "."));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_proper_var", 2])]));
add("sys_proper_var", 2, new Clause(1, ["is_upper", new Skeleton(".", [new Place(-1), new Place(-2)])], [new Skeleton(new Cache("sys_proper_atom_name"), [new Place(0)])], -1, "is_upper"));
add("sys_proper_var", 2, new Clause(1, ["is_score", new Skeleton(".", [new Place(-1), new Place(-2)])], [new Skeleton(new Cache("sys_proper_atom_name"), [new Place(0)])], -1, "is_score"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_put_adjust", 4])]));
add("sys_put_adjust", 4, new Clause(3, [new Place(-3), new Place(-4), new Place(-1), new Place(1)], [new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(2), 4]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_put_adjust", 4, new Clause(4, [new Place(-3), new Place(-1), new Place(-4), new Place(-5)], [new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(2), 12]), 12]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("+"), [new Place(1), 3]), new Place(3)])], 0, undefined));
add("sys_put_adjust", 4, new Clause(1, [new Place(-2), new Place(-1), new Place(-1), new Place(0)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_put_indent", 9])]));
add("sys_put_indent", 9, new Clause(3, [new Place(-1), new Place(-3), new Place(-4), new Place(-1), new Place(-1), new Place(-1), new Place(-1), new Place(-1), new Place(1)], [new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(2), 4]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_put_indent", 9, new Clause(3, [new Place(-1), new Place(-3), new Place(-1), new Place(-4), new Place(-1), new Place(-1), new Place(-1), new Place(-1), new Place(1)], [new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(2), 12]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_put_indent", 9, new Clause(4, [new Place(-1), new Place(-3), new Place(-1), new Place(-4), new Place(-1), new Place(-1), new Place(-1), new Place(-1), new Place(-5)], [new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(2), 12]), 12]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("+"), [new Place(1), 3]), new Place(3)])], 0, undefined));
add("sys_put_indent", 9, new Clause(8, [new Place(-3), new Place(-4), new Place(-1), new Place(-1), new Place(-5), new Place(-6), new Place(-7), new Place(-8), new Place(-9)], [new Skeleton(new Cache("sys_needs_paren"), [new Place(3), new Place(4), new Place(5), new Place(6)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_put_spaces"), [new Place(1), 2]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("+"), [new Place(2), 3]), new Place(7)])], 0, undefined));
add("sys_put_indent", 9, new Clause(1, [new Place(-1), new Place(-2), new Place(-1), new Place(-1), new Place(-1), new Place(-1), new Place(-1), new Place(-1), new Place(0)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_put_lparen", 6])]));
add("sys_put_lparen", 6, new Clause(7, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7), new Place(-8)], [new Skeleton(new Cache("sys_needs_paren"), [new Place(2), new Place(3), new Place(4), new Place(5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_put_lparen2"), [new Place(1), new Place(5), new Place(6)])], 0, undefined));
add("sys_put_lparen", 6, new Clause(1, [new Place(-1), new Place(-1), new Place(-1), new Place(-1), new Place(-2), new Place(0)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_put_lparen2", 3])]));
add("sys_put_lparen2", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("=\\="), [new Skeleton(new Cache("\/\\"), [new Place(2), 2]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("put_code"), [new Place(1), 32]), new Skeleton(new Cache("put_code"), [new Place(1), 40]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("\\\/"), [new Skeleton(new Cache("\/\\"), [new Place(2), new Compound(new Cache("\\"), [6])]), 1]), new Place(3)])], 0, undefined));
add("sys_put_lparen2", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("put_code"), [new Place(0), 40]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("\\\/"), [new Place(1), 1]), new Place(2)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_put_rparen", 5])]));
add("sys_put_rparen", 5, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("sys_needs_paren"), [new Place(2), new Place(3), new Place(4), new Place(5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("put_code"), [new Place(1), 41])], 0, undefined));
add("sys_put_rparen", 5, new Clause(0, [new Place(-1), new Place(-1), new Place(-1), new Place(-1), new Place(-1)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_needs_paren", 4])]));
add("sys_needs_paren", 4, new Clause(3, [new Place(-1), new Place(-3), new Place(-4), new Place(-1)], [new Skeleton(new Cache("<"), [new Place(1), new Place(2)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_needs_paren", 4, new Clause(1, [0, new Place(-2), new Place(0), new Place(-2)], [new Skeleton(new Cache("=\\="), [new Skeleton(new Cache("\/\\"), [new Place(0), 8]), 0])], -1, 0));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_put_lformat", 4])]));
add("sys_put_lformat", 4, new Clause(4, [new Place(-3), new Place(-1), new Place(-4), new Place(-5)], [new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(2), 4]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_put_lspace"), [new Place(1), new Place(3)])], 0, undefined));
add("sys_put_lformat", 4, new Clause(3, [new Place(-3), new Place(-1), new Place(-1), new Place(-4)], [new Skeleton(new Cache("=\\="), [new Skeleton(new Cache("\/\\"), [new Place(2), 12]), 8]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_put_lspace"), [new Place(1), new Place(2)])], 0, undefined));
add("sys_put_lformat", 4, new Clause(2, [new Place(-2), new Place(-3), new Place(-1), new Place(-1)], [new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(1), 3]), new Place(-3)]), new Skeleton(new Cache("nl"), [new Place(0)]), new Skeleton(new Cache("sys_put_spaces"), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_put_rformat", 6])]));
add("sys_put_rformat", 6, new Clause(5, [new Place(-3), new Place(-1), new Place(-4), new Place(-5), new Place(-1), new Place(-6)], [new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(2), 4]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_put_rspace"), [new Place(1), new Place(3), new Place(4), new Place(-1)])], 0, undefined));
add("sys_put_rformat", 6, new Clause(4, [new Place(-3), new Place(-1), new Place(-1), new Place(-4), new Place(-1), new Place(-5)], [new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(2), 12]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_put_rspace"), [new Place(1), new Place(2), new Place(3), new Place(-1)])], 0, undefined));
add("sys_put_rformat", 6, new Clause(4, [new Place(-3), new Place(-4), new Place(-1), new Place(-5), new Place(-1), new Place(-1)], [new Skeleton(new Cache("=\\="), [new Skeleton(new Cache("\/\\"), [new Place(3), 12]), 8]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("nl"), [new Place(1)]), new Skeleton(new Cache("sys_put_spaces"), [new Place(1), new Place(2)])], 0, undefined));
add("sys_put_rformat", 6, new Clause(2, [new Place(-2), new Place(-1), new Place(-1), new Place(-1), new Place(-3), new Place(-1)], [new Skeleton(new Cache("atom_length"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [3, new Place(1)]), new Place(-3)]), new Skeleton(new Cache("sys_put_spaces"), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_put_spaces", 2])]));
add("sys_put_spaces", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache(">"), [new Place(2), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("put_code"), [new Place(1), 32]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(2), 1]), new Place(-4)]), new Skeleton(new Cache("sys_put_spaces"), [new Place(1), new Place(2)])], 0, undefined));
add("sys_put_spaces", 2, new Clause(0, [new Place(-1), new Place(-1)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_put_lspace", 2])]));
add("sys_put_lspace", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(2), 2]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("put_code"), [new Place(1), 32])], 0, undefined));
add("sys_put_lspace", 2, new Clause(0, [new Place(-1), new Place(-1)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_put_rspace", 4])]));
add("sys_put_rspace", 4, new Clause(5, [new Place(-3), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(2), 1]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("put_code"), [new Place(1), 32]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("\/\\"), [new Place(3), new Compound(new Cache("\\"), [6])]), new Place(4)])], 0, undefined));
add("sys_put_rspace", 4, new Clause(2, [new Place(-1), new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("\\\/"), [new Place(0), 2]), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_oper_side", 3])]));
add("sys_oper_side", 3, new Clause(3, [0, new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("\\\/"), [new Place(1), 8]), new Place(2)])], 0, 0));
add("sys_oper_side", 3, new Clause(2, [new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("\/\\"), [new Place(0), new Compound(new Cache("\\"), [8])]), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_oper_minus", 3])]));
add("sys_oper_minus", 3, new Clause(3, ["-", new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("\\\/"), [new Place(1), 4]), new Place(2)])], 0, "-"));
add("sys_oper_minus", 3, new Clause(2, [new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("\/\\"), [new Place(0), new Compound(new Cache("\\"), [4])]), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_put_nspace", 2])]));
add("sys_put_nspace", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("=\\="), [new Skeleton(new Cache("\/\\"), [new Place(2), 4]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("put_code"), [new Place(1), 32])], 0, undefined));
add("sys_put_nspace", 2, new Clause(0, [new Place(-1), new Place(-1)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_oper_escape", 3])]));
add("sys_oper_escape", 3, new Clause(3, [",", new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("\\\/"), [new Place(1), 1]), new Place(2)])], 0, ","));
add("sys_oper_escape", 3, new Clause(3, ["|", new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("\\\/"), [new Place(1), 1]), new Place(2)])], 0, "|"));
add("sys_oper_escape", 3, new Clause(2, [new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("\/\\"), [new Place(0), new Compound(new Cache("\\"), [1])]), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_current_stream", 2])]));
add("sys_current_stream", 2, new Clause(1, [new Skeleton("v", [new Place(-2), new Place(-1), new Place(-1)]), new Place(0)], [], -1, "v"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_current_flags", 2])]));
add("sys_current_flags", 2, new Clause(1, [new Skeleton("v", [new Place(-1), new Place(-2), new Place(-1)]), new Place(0)], [], -1, "v"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_current_vars", 2])]));
add("sys_current_vars", 2, new Clause(1, [new Skeleton("v", [new Place(-1), new Place(-1), new Place(-2)]), new Place(0)], [], -1, "v"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_put_oper", 3])]));
add("sys_put_oper", 3, new Clause(2, [",", new Place(-3), ","], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_current_stream"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("put_code"), [new Place(1), 44])], 0, ","));
add("sys_put_oper", 3, new Clause(2, ["|", new Place(-3), "|"], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_current_stream"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("put_code"), [new Place(1), 124])], 0, "|"));
add("sys_put_oper", 3, new Clause(4, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_current_flags"), [new Place(1), new Place(-5)]), new Skeleton(new Cache("sys_symbol_quoted"), [new Place(0), new Place(3), new Place(2)]), new Skeleton(new Cache("sys_current_stream"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_safe_atom"), [new Place(1), new Place(2)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_put_symbol", 2])]));
add("sys_put_symbol", 2, new Clause(3, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_current_flags"), [new Place(1), new Place(-4)]), new Skeleton(new Cache("sys_symbol_quoted"), [new Place(0), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_current_stream"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_safe_atom"), [new Place(1), new Place(2)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_symbol_quoted", 3])]));
add("sys_symbol_quoted", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("reference"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_reference_quoted"), [new Place(1), new Place(2), new Place(3)])], 0, undefined));
add("sys_symbol_quoted", 3, new Clause(3, [new Place(-3), new Place(-4), new Place(1)], [new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(2), 1]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
add("sys_symbol_quoted", 3, new Clause(3, [new Place(-3), new Place(-1), new Place(-4)], [new Skeleton(new Cache("atom_codes"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("\\+"), [new Skeleton("sys_proper_atom", [new Place(1)])]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_escape_codes"), [new Place(1), new Place(-3), new Compound(".", [39, "[]"])]), new Skeleton(new Cache("atom_codes"), [new Place(2), new Skeleton(".", [39, new Place(1)])])], 0, undefined));
add("sys_symbol_quoted", 3, new Clause(1, [new Place(-2), new Place(-1), new Place(0)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_reference_quoted", 3])]));
add("sys_reference_quoted", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(2), 1]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("atom_reference"), [new Place(3), new Place(1)])], 0, undefined));
add("sys_reference_quoted", 3, new Clause(3, [new Place(-2), new Place(-1), new Place(-3)], [new Skeleton(new Cache("atom_reference"), [new Place(-4), new Place(0)]), new Skeleton(new Cache("atom_concat"), ["0r", new Place(2), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_read_term", 4])]));
add("sys_read_term", 4, new Clause(6, [new Place(-2), new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_read_opts"), [new Place(2), new Compound("z", [1200, 0]), new Skeleton("z", [new Place(-6), new Place(-7)])]), new Skeleton(new Cache("sys_next_token"), [new Skeleton("t", ["-", new Place(5), new Skeleton("r", [new Place(1), new Place(0)]), new Compound("s", ["[]", "[]"])]), new Place(-2)]), new Skeleton(new Cache("sys_read_optional"), [new Place(-3), new Place(4), new Place(0), new Skeleton("t", [new Place(-1), new Place(-1), new Place(-1), new Place(-2)])]), new Skeleton(new Cache("sys_read_results"), [new Place(2), new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_read_optional", 4])]));
add("sys_read_optional", 4, new Clause(3, ["end_of_file", new Place(-1), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_current_token"), ["end_of_file", new Place(1), new Place(-3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, "end_of_file"));
add("sys_read_optional", 4, new Clause(4, [new Place(-2), new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_read_priority"), [new Place(0), new Place(1), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_read_end"), [".", new Place(2), new Place(3)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_read_priority", 4])]));
add("sys_read_priority", 4, new Clause(7, [new Place(-2), new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_current_token"), [new Place(-6), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_read_factor"), [new Place(4), new Place(-6), new Place(1), new Place(-7), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_current_token"), [new Place(-8), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_read_secondary"), [new Place(6), new Place(4), new Place(0), new Place(1), new Place(5), new Place(2), new Place(3)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_read_secondary", 7])]));
add("sys_read_secondary", 7, new Clause(8, [new Skeleton("atom", [new Place(-3)]), new Place(-4), new Place(-5), new Place(-6), new Place(-7), new Place(-8), new Place(-9)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(6), new Place(-8)]), new Skeleton(new Cache("sys_read_infix"), [new Place(1), new Place(2), new Place(3), new Place(4), new Place(5), new Place(6), new Place(7)])], 0, "atom"));
add("sys_read_secondary", 7, new Clause(8, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7), new Place(-8), new Place(-9)], [new Skeleton(new Cache("="), [new Place(1), ","]), new Skeleton(new Cache("="), [new Place(6), new Place(-8)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(6), new Place(-8)]), new Skeleton(new Cache("sys_read_infix"), [new Place(1), new Place(2), new Place(3), new Place(4), new Place(5), new Place(6), new Place(7)])], 0, ","));
add("sys_read_secondary", 7, new Clause(8, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7), new Place(-8), new Place(-9)], [new Skeleton(new Cache("="), [new Place(1), "|"]), new Skeleton(new Cache("="), [new Place(6), new Place(-8)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(6), new Place(-8)]), new Skeleton(new Cache("sys_read_infix"), [new Place(1), new Place(2), new Place(3), new Place(4), new Place(5), new Place(6), new Place(7)])], 0, "|"));
add("sys_read_secondary", 7, new Clause(2, [new Place(-1), new Place(-2), new Place(0), new Place(-1), new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_read_infix", 7])]));
add("sys_read_infix", 7, new Clause(11, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7), new Place(-8), new Place(-9)], [new Skeleton(new Cache("sys_op"), [new Place(1), new Place(-10), new Place(-11), new Place(-1), new Place(-1)]), new Skeleton(new Cache("sys_is_infix"), [new Place(8), new Place(-10), new Place(-12)]), new Skeleton(new Cache(">="), [new Place(4), new Place(9)]), new Skeleton(new Cache("="), [new Place(6), new Place(-8)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(6), new Place(-8)]), new Skeleton(new Cache("sys_next_token"), [new Place(6), new Place(-8)]), new Skeleton(make_defined([new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("<"), [new Skeleton(new Cache("-"), [new Place(1), new Place(2)]), new Place(3)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_sync_throw"), [new Skeleton("error", [new Compound("syntax_error", ["operator_clash"]), new Place(-1)]), new Place(4), new Place(5)])], 0, undefined), new Clause(2, [new Place(-1), new Place(-1), new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined)]), [new Place(9), new Place(8), new Place(5), new Place(6), new Place(-8)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(9), new Place(10)]), new Place(-12)]), new Skeleton(new Cache("="), [new Place(6), new Place(-8)]), new Skeleton(new Cache("sys_read_priority"), [new Place(-7), new Place(10), new Place(6), new Place(-8)]), new Skeleton(new Cache("=.."), [new Place(-12), new Skeleton(".", [new Place(1), new Skeleton(".", [new Place(2), new Skeleton(".", [new Place(5), "[]"])])])]), new Skeleton(new Cache("="), [new Place(6), new Place(-8)]), new Skeleton(new Cache("sys_current_token"), [new Place(-7), new Place(6), new Place(-8)]), new Skeleton(new Cache("sys_read_secondary"), [new Place(5), new Place(10), new Place(3), new Place(4), new Place(9), new Place(6), new Place(7)])], 0, undefined));
add("sys_read_infix", 7, new Clause(10, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7), new Place(-8), new Place(-9)], [new Skeleton(new Cache("sys_op"), [new Place(1), new Place(-10), new Place(-11), new Place(-1), new Place(-1)]), new Skeleton(new Cache("sys_is_postfix"), [new Place(8), new Place(-10)]), new Skeleton(new Cache(">="), [new Place(4), new Place(9)]), new Skeleton(new Cache("="), [new Place(6), new Place(-8)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(6), new Place(-8)]), new Skeleton(new Cache("sys_next_token"), [new Place(6), new Place(-8)]), new Skeleton(make_defined([new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("<"), [new Skeleton(new Cache("-"), [new Place(1), new Place(2)]), new Place(3)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_sync_throw"), [new Skeleton("error", [new Compound("syntax_error", ["operator_clash"]), new Place(-1)]), new Place(4), new Place(5)])], 0, undefined), new Clause(2, [new Place(-1), new Place(-1), new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined)]), [new Place(9), new Place(8), new Place(5), new Place(6), new Place(-8)]), new Skeleton(new Cache("=.."), [new Place(-7), new Skeleton(".", [new Place(1), new Skeleton(".", [new Place(2), "[]"])])]), new Skeleton(new Cache("="), [new Place(6), new Place(-8)]), new Skeleton(new Cache("sys_current_token"), [new Place(-4), new Place(6), new Place(-8)]), new Skeleton(new Cache("sys_read_secondary"), [new Place(2), new Place(5), new Place(3), new Place(4), new Place(9), new Place(6), new Place(7)])], 0, undefined));
add("sys_read_infix", 7, new Clause(2, [new Place(-1), new Place(-2), new Place(0), new Place(-1), new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_lookup_var", 4])]));
add("sys_lookup_var", 4, new Clause(6, [new Place(-3), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("sys_sys_current_vars"), [new Place(-7), new Place(3), new Place(-5)]), new Skeleton(new Cache("member"), [new Skeleton("=", [new Place(1), new Place(2)]), new Place(5)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_remove_anon"), [new Place(1), new Place(3), new Place(4)])], 0, undefined));
add("sys_lookup_var", 4, new Clause(5, [new Place(-2), new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_sys_current_vars"), [new Place(-6), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_set_vars"), [new Skeleton(".", [new Skeleton("=", [new Place(0), new Place(1)]), new Place(4)]), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_current_anon"), [new Place(-6), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_set_anon"), [new Skeleton(".", [new Skeleton("=", [new Place(0), new Place(1)]), new Place(4)]), new Place(2), new Place(3)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_remove_anon", 3])]));
add("sys_remove_anon", 3, new Clause(5, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_current_anon"), [new Place(-6), new Place(2), new Place(-4)]), new Skeleton(new Cache("select"), [new Skeleton("=", [new Place(1), new Place(-1)]), new Place(4), new Place(-6)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_set_anon"), [new Place(4), new Place(2), new Place(3)])], 0, undefined));
add("sys_remove_anon", 3, new Clause(2, [new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_current_token", 3])]));
add("sys_current_token", 3, new Clause(4, [new Place(-2), new Skeleton("t", [new Place(0), new Place(-3), new Place(-4), new Place(-5)]), new Skeleton("t", [new Place(0), new Place(1), new Place(2), new Place(3)])], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_current_options", 3])]));
add("sys_current_options", 3, new Clause(4, [new Place(-2), new Skeleton("t", [new Place(-3), new Place(0), new Place(-4), new Place(-5)]), new Skeleton("t", [new Place(1), new Place(0), new Place(2), new Place(3)])], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_reach_code", 3])]));
add("sys_reach_code", 3, new Clause(5, [new Place(-2), new Skeleton("t", [new Place(-3), new Place(-4), new Skeleton("r", [new Place(-5), new Place(0)]), new Place(-6)]), new Skeleton("t", [new Place(1), new Place(2), new Skeleton("r", [new Place(3), new Place(0)]), new Place(4)])], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_sys_current_vars", 3])]));
add("sys_sys_current_vars", 3, new Clause(5, [new Place(-2), new Skeleton("t", [new Place(-3), new Place(-4), new Place(-5), new Skeleton("s", [new Place(0), new Place(-6)])]), new Skeleton("t", [new Place(1), new Place(2), new Place(3), new Skeleton("s", [new Place(0), new Place(4)])])], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_set_vars", 3])]));
add("sys_set_vars", 3, new Clause(5, [new Place(-2), new Skeleton("t", [new Place(-3), new Place(-4), new Place(-5), new Skeleton("s", [new Place(-1), new Place(-6)])]), new Skeleton("t", [new Place(1), new Place(2), new Place(3), new Skeleton("s", [new Place(0), new Place(4)])])], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_current_anon", 3])]));
add("sys_current_anon", 3, new Clause(5, [new Place(-2), new Skeleton("t", [new Place(-3), new Place(-4), new Place(-5), new Skeleton("s", [new Place(-6), new Place(0)])]), new Skeleton("t", [new Place(1), new Place(2), new Place(3), new Skeleton("s", [new Place(4), new Place(0)])])], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_set_anon", 3])]));
add("sys_set_anon", 3, new Clause(5, [new Place(-2), new Skeleton("t", [new Place(-3), new Place(-4), new Place(-5), new Skeleton("s", [new Place(-6), new Place(-1)])]), new Skeleton("t", [new Place(1), new Place(2), new Place(3), new Skeleton("s", [new Place(4), new Place(0)])])], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_read_factor", 6])]));
add("sys_read_factor", 6, new Clause(7, [new Skeleton("atom", [new Place(-3)]), new Place(-4), new Place(-5), new Place(-6), new Place(-7), new Place(-8)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(5), new Place(-7)]), new Skeleton(new Cache("sys_reach_code"), [new Place(-2), new Place(5), new Place(-7)]), new Skeleton(new Cache("sys_next_token"), [new Place(5), new Place(-7)]), new Skeleton(new Cache("sys_read_atom"), [new Place(0), new Place(1), new Place(2), new Place(3), new Place(4), new Place(5), new Place(6)])], 0, "atom"));
add("sys_read_factor", 6, new Clause(3, ["anon", new Place(-1), new Place(-1), 0, new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_next_token"), [new Place(1), new Place(2)])], 0, "anon"));
add("sys_read_factor", 6, new Clause(5, [new Skeleton("var", [new Place(-3)]), new Place(-4), new Place(-1), 0, new Place(-5), new Place(-6)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_lookup_var"), [new Place(1), new Place(2), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_token"), [new Place(3), new Place(4)])], 0, "var"));
add("sys_read_factor", 6, new Clause(6, ["[", new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_next_token"), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_current_token"), [new Place(-2), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_read_list"), [new Place(0), new Place(1), new Place(2), new Place(3), new Place(4), new Place(5)])], 0, "["));
add("sys_read_factor", 6, new Clause(6, ["{", new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_next_token"), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_current_token"), [new Place(-2), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_read_set"), [new Place(0), new Place(1), new Place(2), new Place(3), new Place(4), new Place(5)])], 0, "{"));
add("sys_read_factor", 6, new Clause(4, ["(", new Place(-3), new Place(-1), 0, new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_token"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_read_priority"), [new Place(1), 1200, new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_read_end"), [")", new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_token"), [new Place(2), new Place(3)])], 0, "("));
add("sys_read_factor", 6, new Clause(3, [new Skeleton("number", [new Place(-3)]), new Place(1), new Place(-1), 0, new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_next_token"), [new Place(1), new Place(2)])], 0, "number"));
add("sys_read_factor", 6, new Clause(4, [new Skeleton("radix", [new Place(-3), new Place(-1)]), new Place(1), new Place(-1), 0, new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_current_options"), [new Place(-5), new Place(1), new Place(-3)]), new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(3), 16]), 0]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_next_token"), [new Place(1), new Place(2)])], 0, "radix"));
add("sys_read_factor", 6, new Clause(3, [new Skeleton("radix", [new Place(-3), new Place(-4)]), new Skeleton("$RDX", [new Place(1), new Place(2)]), new Place(-1), 0, new Place(-4), new Place(-3)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_token"), [new Place(2), new Place(1)])], 0, "radix"));
add("sys_read_factor", 6, new Clause(3, [new Skeleton("reference", [new Place(-3)]), new Place(1), new Place(-1), 0, new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_next_token"), [new Place(1), new Place(2)])], 0, "reference"));
add("sys_read_factor", 6, new Clause(4, [new Skeleton("codes", [new Place(-3)]), new Place(1), new Place(-1), 0, new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_current_options"), [new Place(-5), new Place(1), new Place(-3)]), new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(3), 16]), 0]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_next_token"), [new Place(1), new Place(2)])], 0, "codes"));
add("sys_read_factor", 6, new Clause(5, [new Skeleton("codes", [new Place(-3)]), new Skeleton("$STR", [new Place(-4)]), new Place(-1), 0, new Place(-5), new Place(-6)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("atom_codes"), [new Place(2), new Place(1)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_token"), [new Place(3), new Place(4)])], 0, "codes"));
add("sys_read_factor", 6, new Clause(4, [new Skeleton("code", [new Place(-3)]), new Place(1), new Place(-1), 0, new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_current_options"), [new Place(-5), new Place(1), new Place(-3)]), new Skeleton(new Cache("=:="), [new Skeleton(new Cache("\/\\"), [new Place(3), 16]), 0]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_next_token"), [new Place(1), new Place(2)])], 0, "code"));
add("sys_read_factor", 6, new Clause(3, [new Skeleton("code", [new Place(-3)]), new Skeleton("$CHR", [new Place(1)]), new Place(-1), 0, new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_next_token"), [new Place(1), new Place(2)])], 0, "code"));
add("sys_read_factor", 6, new Clause(2, [new Place(-1), new Place(-1), new Place(-1), new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_sync_throw"), [new Skeleton("error", [new Compound("syntax_error", ["cannot_start_term"]), new Place(-1)]), new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_read_atom", 7])]));
add("sys_read_atom", 7, new Clause(6, [40, new Place(-3), new Place(-4), new Place(-1), 0, new Place(-5), new Place(-6)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_token"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_read_priority"), [new Place(-2), 999, new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_current_token"), [new Place(-7), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_read_args"), [new Place(5), new Place(-7), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_read_end"), [")", new Place(3), new Place(-5)]), new Skeleton(new Cache("=.."), [new Place(2), new Skeleton(".", [new Place(1), new Skeleton(".", [new Place(0), new Place(5)])])]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_token"), [new Place(3), new Place(4)])], 0, 40));
add("sys_read_atom", 7, new Clause(7, [new Place(-3), "-", new Place(-4), new Place(-5), new Place(-6), new Place(-7), new Place(-8)], [new Skeleton(new Cache("sys_code_class"), [new Place(1), "is_digit"]), new Skeleton(new Cache("="), [new Place(5), new Place(-7)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(5), new Place(-7)]), new Skeleton(new Cache("sys_current_token"), [new Place(-2), new Place(5), new Place(-7)]), new Skeleton(new Cache("sys_read_factor"), [new Place(0), new Place(-2), new Place(3), new Place(4), new Place(5), new Place(-7)]), new Skeleton(new Cache("sys_make_negative"), [new Place(0), new Place(2)]), new Skeleton(new Cache("="), [new Place(5), new Place(6)])], 0, undefined));
add("sys_read_atom", 7, new Clause(9, [new Place(-1), new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7), new Place(-8)], [new Skeleton(new Cache("sys_op"), [new Place(1), new Place(-9), new Place(-10), new Place(-1), new Place(-1)]), new Skeleton(new Cache("sys_is_prefix"), [new Place(7), new Place(-9)]), new Skeleton(new Cache("="), [new Place(5), new Place(-7)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(5), new Place(-7)]), new Skeleton(new Cache("sys_current_token"), [new Place(-2), new Place(5), new Place(-7)]), new Skeleton(new Cache("sys_read_prefix"), [new Place(0), new Place(2), new Place(1), new Place(3), new Place(8), new Place(7), new Place(4), new Place(5), new Place(6)])], 0, undefined));
add("sys_read_atom", 7, new Clause(2, [new Place(-1), new Place(-2), new Place(0), new Place(-1), 0, new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_read_prefix", 9])]));
add("sys_read_prefix", 9, new Clause(3, [",", new Place(-3), new Place(1), new Place(-1), new Place(-1), new Place(-1), 0, new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, ","));
add("sys_read_prefix", 9, new Clause(3, ["|", new Place(-3), new Place(1), new Place(-1), new Place(-1), new Place(-1), 0, new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, "|"));
add("sys_read_prefix", 9, new Clause(3, [")", new Place(-3), new Place(1), new Place(-1), new Place(-1), new Place(-1), 0, new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, ")"));
add("sys_read_prefix", 9, new Clause(3, ["]", new Place(-3), new Place(1), new Place(-1), new Place(-1), new Place(-1), 0, new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, "]"));
add("sys_read_prefix", 9, new Clause(3, ["}", new Place(-3), new Place(1), new Place(-1), new Place(-1), new Place(-1), 0, new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, "}"));
add("sys_read_prefix", 9, new Clause(3, [".", new Place(-3), new Place(1), new Place(-1), new Place(-1), new Place(-1), 0, new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(2)])], 0, "."));
add("sys_read_prefix", 9, new Clause(7, [new Place(-1), new Place(-2), new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(3), new Place(-7), new Place(-8)], [new Skeleton(make_defined([new Clause(5, [new Place(-3), new Place(-4), new Place(-5), new Place(-6)], [new Skeleton(new Cache("<"), [new Place(1), new Place(2)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_sync_throw"), [new Skeleton("error", [new Compound("syntax_error", ["operator_clash"]), new Place(-1)]), new Place(3), new Place(4)])], 0, undefined), new Clause(2, [new Place(-1), new Place(-1), new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined)]), [new Place(2), new Place(3), new Place(5), new Place(-7)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("-"), [new Place(3), new Place(4)]), new Place(-6)]), new Skeleton(new Cache("="), [new Place(5), new Place(-7)]), new Skeleton(new Cache("sys_read_priority"), [new Place(-5), new Place(4), new Place(5), new Place(-7)]), new Skeleton(new Cache("=.."), [new Place(0), new Skeleton(".", [new Place(1), new Skeleton(".", [new Place(3), "[]"])])]), new Skeleton(new Cache("="), [new Place(5), new Place(6)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_read_args", 4])]));
add("sys_read_args", 4, new Clause(5, [",", new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_token"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_read_priority"), [new Place(1), 999, new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_current_token"), [new Place(-3), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_read_args"), [new Place(1), new Place(2), new Place(3), new Place(4)])], 0, ","));
add("sys_read_args", 4, new Clause(2, [new Place(-1), "[]", new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_read_list", 6])]));
add("sys_read_list", 6, new Clause(6, ["]", new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_reach_code"), [new Place(-2), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_next_token"), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_read_atom"), [new Place(0), "[]", new Place(1), new Place(2), new Place(3), new Place(4), new Place(5)])], 0, "]"));
add("sys_read_list", 6, new Clause(4, [new Place(-1), new Skeleton(".", [new Place(-2), new Place(-3)]), new Place(-1), 0, new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_read_priority"), [new Place(0), 999, new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_current_token"), [new Place(-2), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_read_rest"), [new Place(0), new Place(1), new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_read_end"), ["]", new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_token"), [new Place(2), new Place(3)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_read_rest", 4])]));
add("sys_read_rest", 4, new Clause(5, [",", new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_next_token"), [new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_read_priority"), [new Place(1), 999, new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_current_token"), [new Place(-3), new Place(3), new Place(-5)]), new Skeleton(new Cache("sys_read_rest"), [new Place(1), new Place(2), new Place(3), new Place(4)])], 0, ","));
add("sys_read_rest", 4, new Clause(4, ["|", new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_next_token"), [new Place(2), new Place(-4)]), new Skeleton(new Cache("sys_read_priority"), [new Place(1), 999, new Place(2), new Place(3)])], 0, "|"));
add("sys_read_rest", 4, new Clause(2, [new Place(-1), "[]", new Place(-2), new Place(-3)], [new Skeleton(new Cache("="), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_read_set", 6])]));
add("sys_read_set", 6, new Clause(6, ["}", new Place(-3), new Place(-4), new Place(-5), new Place(-6), new Place(-7)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_reach_code"), [new Place(-2), new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_next_token"), [new Place(4), new Place(-6)]), new Skeleton(new Cache("sys_read_atom"), [new Place(0), "{}", new Place(1), new Place(2), new Place(3), new Place(4), new Place(5)])], 0, "}"));
add("sys_read_set", 6, new Clause(3, [new Place(-1), new Skeleton("{}", [new Place(-2)]), new Place(-1), 0, new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_read_priority"), [new Place(0), 1200, new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_read_end"), ["}", new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_next_token"), [new Place(1), new Place(2)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_read_end", 3])]));
add("sys_read_end", 3, new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_current_token"), [new Place(1), new Place(2), new Place(-4)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(2), new Place(3)])], 0, undefined));
add("sys_read_end", 3, new Clause(3, [".", new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_sync_throw"), [new Skeleton("error", [new Compound("syntax_error", ["end_of_clause_expected"]), new Place(-1)]), new Place(1), new Place(2)])], 0, "."));
add("sys_read_end", 3, new Clause(3, [")", new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_sync_throw"), [new Skeleton("error", [new Compound("syntax_error", ["parenthesis_balance"]), new Place(-1)]), new Place(1), new Place(2)])], 0, ")"));
add("sys_read_end", 3, new Clause(3, ["}", new Place(-3), new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("="), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_sync_throw"), [new Skeleton("error", [new Compound("syntax_error", ["brace_balance"]), new Place(-1)]), new Place(1), new Place(2)])], 0, "}"));
add("sys_read_end", 3, new Clause(2, ["]", new Place(-2), new Place(-3)], [new Skeleton(new Cache("sys_sync_throw"), [new Skeleton("error", [new Compound("syntax_error", ["bracket_balance"]), new Place(-1)]), new Place(0), new Place(1)])], -1, "]"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["initialization", 1])]));
add("initialization", 1, new Clause(1, [new Place(-2)], [new Place(0)], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_launch", 0])]));
add("sys_launch", 0, new Clause(1, [], [new Skeleton(new Cache("current_prolog_flag"), ["argv", new Place(-2)]), new Skeleton(new Cache("sys_trap"), [new Skeleton("sys_launch", [new Place(0)]), new Place(-2), new Skeleton("sys_print_error", [new Place(0)])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_launch", 1])]));
add("sys_launch", 1, new Clause(0, ["[]"], [new Cache("sys_banner"), new Cache("sys_toplevel")], -1, "[]"));
add("sys_launch", 1, new Clause(2, [new Skeleton(".", [new Place(-2), new Place(-3)])], [new Skeleton(new Cache("set_prolog_flag"), ["argv", new Place(1)]), new Skeleton(new Cache("ensure_loaded"), [new Place(0)])], -1, "."));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_banner", 0])]));
add("sys_banner", 0, new Clause(5, [], [new Skeleton(new Cache("current_prolog_flag"), ["version_data", new Place(-2)]), new Skeleton(new Cache("=.."), [new Place(0), new Skeleton(".", [new Place(-1), new Skeleton(".", [new Place(-2), new Skeleton(".", [new Place(-3), new Skeleton(".", [new Place(-4), new Skeleton(".", [new Skeleton(".", [new Skeleton("date", [new Place(-5)]), new Place(-1)]), new Place(-1)])])])])])]), new Skeleton(new Cache("get_string"), ["format.date", new Place(-6)]), new Skeleton(new Cache("sys_time_atom"), [new Place(4), new Place(3), new Place(-5)]), new Skeleton(new Cache("current_output"), [new Place(-6)]), new Skeleton(new Cache("sys_print_message"), [new Skeleton("banner", ["player", new Place(0), new Place(1), new Place(2), new Place(3)]), new Place(4)]), new Cache("nl"), new Skeleton(new Cache("sys_print_message"), [new Compound("banner", ["copyright"]), new Place(4)]), new Cache("nl")], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_toplevel", 0])]));
add("sys_toplevel", 0, new Clause(2, [], [new Skeleton(new Cache("current_input"), [new Place(-2)]), new Skeleton(new Cache("os_task_current"), [new Place(-3)]), new Skeleton(new Cache("setup_once_cleanup"), [new Skeleton("asserta", [new Skeleton("sys_including", ["user", new Place(1), new Place(0)])]), new Skeleton("sys_toplevel_prompt", [new Place(0)]), new Skeleton("once", [new Skeleton("retract", [new Skeleton("sys_including", ["user", new Place(1), new Place(0)])])])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_toplevel_prompt", 1])]));
add("sys_toplevel_prompt", 1, new Clause(4, [new Place(-3)], [new Cache("repeat"), new Compound(new Cache("put_atom"), ["?- "]), new Cache("flush_output"), new Skeleton(new Cache("sys_trap"), [new Skeleton("read_term", [new Place(1), new Place(-3), new Skeleton(".", [new Skeleton("variable_names", [new Place(-4)]), "[]"])]), new Place(-5), new Skeleton(",", [new Skeleton("sys_print_error", [new Place(3)]), "fail"])]), new Skeleton(make_defined([new Clause(2, [new Place(-3), new Place(-1), new Place(-1)], [new Skeleton(new Cache("=="), [new Place(1), "end_of_file"]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined), new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_trap"), [new Skeleton("sys_query_attended", [new Place(0), new Place(1)]), new Place(2), new Skeleton("sys_print_error", [new Place(2)])]), new Cache("fail")], -1, undefined)]), [new Place(1), new Place(2), new Place(3)]), new Skeleton(new Cache("$CUT"), [new Place(0)])], 0, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_query_attended", 2])]));
add("sys_query_attended", 2, new Clause(4, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("$MARK"), [new Place(-5)]), new Place(1), new Skeleton(new Cache("$MARK"), [new Place(-3)]), new Skeleton(new Cache("sys_answer_show"), [new Place(2)]), new Skeleton(make_defined([new Clause(4, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("=="), [new Place(1), new Place(2)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("$CUT"), [new Place(3)]), new Cache("sys_listing_period")], 0, undefined), new Clause(2, [new Place(-1), new Place(-1), new Place(-3)], [new Cache("sys_ask_abort"), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("$CUT"), [new Place(1)])], 0, undefined)]), [new Place(3), new Place(1), new Place(0)])], 0, undefined));
add("sys_query_attended", 2, new Clause(0, [new Place(-1), new Place(-1)], [new Compound(new Cache("put_atom"), ["fail"]), new Cache("sys_listing_period")], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_ask_abort", 0])]));
add("sys_ask_abort", 0, new Clause(1, [], [new Cache("flush_output"), new Skeleton(new Cache("get_atom"), [10, new Place(-2)]), new Skeleton(new Cache("\\=="), [new Place(0), ";\n"])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_answer_show", 1])]));
add("sys_answer_show", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("reverse"), [new Place(0), new Place(-3)]), new Skeleton(new Cache("sys_filter_names"), [new Place(0), new Place(1), new Place(-2)]), new Skeleton(new Cache("sys_answer_map"), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_filter_names", 3])]));
add("sys_filter_names", 3, new Clause(6, [new Skeleton(".", [new Skeleton("=", [new Place(-3), new Place(-4)]), new Place(-5)]), new Place(-6), new Place(-7)], [new Skeleton(new Cache("var"), [new Place(2)]), new Skeleton(new Cache("sys_find_var"), [new Place(2), new Place(4), new Place(-4)]), new Skeleton(new Cache("="), [new Place(2), new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_filter_names"), [new Place(3), new Place(4), new Place(5)])], 0, "."));
add("sys_filter_names", 3, new Clause(3, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Place(-4), new Skeleton(".", [new Place(0), new Place(-2)])], [new Skeleton(new Cache("sys_filter_names"), [new Place(1), new Place(2), new Place(0)])], -1, "."));
add("sys_filter_names", 3, new Clause(0, ["[]", new Place(-1), "[]"], [], -1, "[]"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_answer_map", 2])]));
add("sys_answer_map", 2, new Clause(5, [new Skeleton(".", [new Place(-3), new Skeleton(".", [new Place(-4), new Place(-5)])]), new Place(-6)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_answer_eq"), [new Place(1), new Place(4)]), new Compound(new Cache("put_atom"), [", "]), new Skeleton(new Cache("sys_answer_map"), [new Skeleton(".", [new Place(2), new Place(3)]), new Place(4)])], 0, "."));
add("sys_answer_map", 2, new Clause(2, [new Skeleton(".", [new Place(-2), "[]"]), new Place(-3)], [new Skeleton(new Cache("sys_answer_eq"), [new Place(0), new Place(1)])], -1, "."));
add("sys_answer_map", 2, new Clause(0, ["[]", new Place(-1)], [new Compound(new Cache("put_atom"), ["true"])], -1, "[]"));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_answer_eq", 2])]));
add("sys_answer_eq", 2, new Clause(3, [new Skeleton("=", [new Place(-2), new Place(-3)]), new Place(-4)], [new Skeleton(new Cache("sys_var_quoted"), [new Place(0), 1, new Place(-2)]), new Skeleton(new Cache("put_atom"), [new Place(0)]), new Compound(new Cache("put_atom"), [" = "]), new Skeleton(new Cache("sys_answer_term"), [new Place(1), new Place(2)])], -1, "="));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_answer_term", 2])]));
add("sys_answer_term", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("acyclic_term"), [new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("write_term"), [new Place(1), new Skeleton(".", [new Compound("priority", [699]), new Skeleton(".", [new Skeleton("variable_names", [new Place(2)]), new Compound(".", [new Compound("quoted", ["true"]), "[]"])])])])], 0, undefined));
add("sys_answer_term", 2, new Clause(0, [new Place(-1), new Place(-1)], [new Compound(new Cache("put_atom"), ["<cyclic term>"])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["listing", 0])]));
add("listing", 0, new Clause(0, [], [new Skeleton(new Cache("listing"), [new Place(-1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["listing", 1])]));
add("listing", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("current_output"), [new Place(-3)]), new Skeleton(new Cache("listing"), [new Place(0), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["listing", 2])]));
add("listing", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("\\+"), [new Skeleton("ground", [new Place(1)])]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_listing_pattern"), [new Place(1), new Place(2)])], 0, undefined));
add("listing", 2, new Clause(4, [new Skeleton("\/", [new Place(-3), new Place(-4)]), new Place(-5)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_check_atom"), [new Place(1)]), new Skeleton(new Cache("sys_check_integer"), [new Place(2)]), new Skeleton(new Cache("sys_listing_user"), [new Skeleton("\/", [new Place(1), new Place(2)]), new Place(3)])], 0, "\/"));
add("listing", 2, new Clause(1, [new Place(-2), new Place(-1)], [new Skeleton(new Cache("throw"), [new Skeleton("error", [new Skeleton("type_error", ["predicate_indicator", new Place(0)]), new Place(-1)])])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_listing_pattern", 2])]));
add("sys_listing_pattern", 2, new Clause(2, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("current_predicate"), [new Place(0)]), new Skeleton(new Cache("sys_listing_user"), [new Place(0), new Place(1)]), new Cache("fail")], -1, undefined));
add("sys_listing_pattern", 2, new Clause(0, [new Place(-1), new Place(-1)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_listing_user", 2])]));
add("sys_listing_user", 2, new Clause(4, [new Skeleton("\/", [new Place(-2), new Place(-3)]), new Place(-4)], [new Skeleton(new Cache("\\+"), [new Skeleton("sys_listing_stop", [new Place(0), new Place(1)])]), new Skeleton(new Cache("sys_listing_multifile"), [new Place(0), new Place(1), new Place(2)]), new Skeleton(new Cache("sys_listing_dynamic"), [new Place(0), new Place(1), new Place(2)]), new Skeleton(new Cache("functor"), [new Place(-5), new Place(0), new Place(1)]), new Skeleton(new Cache("kb_clause_ref"), [new Place(3), 0, new Place(-3)]), new Skeleton(new Cache("kb_clause_shard"), [new Place(1), new Place(-2)]), new Skeleton(new Cache("\\+"), [new Skeleton("sys_listing_stop", [new Place(0)])]), new Skeleton(new Cache("kb_clause_data"), [new Place(1), new Place(3), new Place(-3), new Place(-2)]), new Skeleton(new Cache("sys_decode_body"), [new Place(0), new Place(-2)]), new Skeleton(new Cache("sys_untrans_body"), [new Place(0), new Place(1), new Place(-3)]), new Skeleton(new Cache("sys_listing_show"), [new Place(3), new Place(1), new Place(2)]), new Cache("fail")], -1, "\/"));
add("sys_listing_user", 2, new Clause(0, [new Place(-1), new Place(-1)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_listing_multifile", 3])]));
add("sys_listing_multifile", 3, new Clause(5, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("sys_predprop"), [new Place(1), new Place(2), new Skeleton("sys_multifile", [new Place(-6)])]), new Skeleton(new Cache("\\+"), [new Skeleton("sys_listing_stop", [new Place(4)])]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_listing_write"), [new Skeleton(":-", [new Skeleton("multifile", [new Skeleton("\/", [new Place(1), new Place(2)])])]), new Place(3)])], 0, undefined));
add("sys_listing_multifile", 3, new Clause(0, [new Place(-1), new Place(-1), new Place(-1)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_listing_dynamic", 3])]));
add("sys_listing_dynamic", 3, new Clause(5, [new Place(-3), new Place(-4), new Place(-5)], [new Skeleton(new Cache("kb_pred_link"), [new Place(1), new Place(2), new Place(-6)]), new Skeleton(new Cache("kb_link_flags"), [new Place(4), new Place(-6)]), new Skeleton(new Cache("=\\="), [new Skeleton(new Cache("\/\\"), [new Place(4), 1]), 0]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_listing_write"), [new Skeleton(":-", [new Skeleton("dynamic", [new Skeleton("\/", [new Place(1), new Place(2)])])]), new Place(3)])], 0, undefined));
add("sys_listing_dynamic", 3, new Clause(0, [new Place(-1), new Place(-1), new Place(-1)], [], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_listing_show", 3])]));
add("sys_listing_show", 3, new Clause(3, [new Place(-3), "true", new Place(-4)], [new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_listing_write"), [new Place(1), new Place(2)])], 0, undefined));
add("sys_listing_show", 3, new Clause(3, [new Place(-2), new Place(-3), new Place(-4)], [new Skeleton(new Cache("sys_listing_write"), [new Skeleton(":-", [new Place(0), new Place(1)]), new Place(2)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_listing_write", 2])]));
add("sys_listing_write", 2, new Clause(4, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("term_variables"), [new Place(0), new Place(-4)]), new Skeleton(new Cache("term_singletons"), [new Place(0), new Place(-5)]), new Skeleton(new Cache("sys_listing_names"), [new Place(2), new Place(3), 0, new Place(-5)]), new Skeleton(new Cache("write_term"), [new Place(1), new Place(0), new Skeleton(".", [new Compound("quoted", ["true"]), new Skeleton(".", [new Skeleton("variable_names", [new Place(3)]), new Compound(".", [new Compound("format", ["true"]), "[]"])])])]), new Skeleton(new Cache("sys_listing_period"), [new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_listing_names", 4])]));
add("sys_listing_names", 4, new Clause(0, ["[]", new Place(-1), new Place(-1), "[]"], [], -1, "[]"));
add("sys_listing_names", 4, new Clause(7, [new Skeleton(".", [new Place(-3), new Place(-4)]), new Place(-5), new Place(-6), new Skeleton(".", [new Skeleton("=", ["_", new Place(1)]), new Place(-7)])], [new Skeleton(new Cache("member"), [new Place(-8), new Place(3)]), new Skeleton(new Cache("=="), [new Place(6), new Place(1)]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("sys_listing_names"), [new Place(2), new Place(3), new Place(4), new Place(5)])], 0, "."));
add("sys_listing_names", 4, new Clause(5, [new Skeleton(".", [new Place(-2), new Place(-3)]), new Place(-4), new Place(-5), new Skeleton(".", [new Skeleton("=", [new Place(-6), new Place(0)]), new Place(-2)])], [new Skeleton(new Cache("sys_listing_name"), [new Place(3), new Place(4)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("+"), [new Place(3), 1]), new Place(-5)]), new Skeleton(new Cache("sys_listing_names"), [new Place(1), new Place(2), new Place(3), new Place(0)])], -1, "."));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_listing_name", 2])]));
add("sys_listing_name", 2, new Clause(3, [new Place(-3), new Place(-4)], [new Skeleton(new Cache("<"), [new Place(1), 26]), new Skeleton(new Cache("$CUT"), [new Place(0)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("+"), [new Place(1), 65]), new Place(-3)]), new Skeleton(new Cache("char_code"), [new Place(2), new Place(1)])], 0, undefined));
add("sys_listing_name", 2, new Clause(4, [new Place(-2), new Place(-3)], [new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("+"), [new Skeleton(new Cache("rem"), [new Place(0), 26]), 65]), new Place(-4)]), new Skeleton(new Cache("char_code"), [new Place(-5), new Place(2)]), new Skeleton(new Cache("$EVAL"), [new Skeleton(new Cache("+"), [new Skeleton(new Cache("\/\/"), [new Place(0), 26]), 1]), new Place(-2)]), new Skeleton(new Cache("atom_integer"), [new Place(-4), 10, new Place(0)]), new Skeleton(new Cache("atom_concat"), [new Place(3), new Place(2), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_listing_period", 0])]));
add("sys_listing_period", 0, new Clause(1, [], [new Skeleton(new Cache("current_output"), [new Place(-2)]), new Skeleton(new Cache("sys_listing_period"), [new Place(0)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_listing_period", 1])]));
add("sys_listing_period", 1, new Clause(1, [new Place(-2)], [new Skeleton(new Cache("sys_safe_code"), [new Place(0), 46]), new Skeleton(new Cache("nl"), [new Place(0)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_listing_stop", 1])]));
add("sys_listing_stop", 1, new Clause(0, ["system"], [], -1, "system"));
add("sys_listing_stop", 1, new Clause(2, [new Place(-2)], [new Skeleton(new Cache("current_prolog_flag"), ["system_url", new Place(-3)]), new Skeleton(new Cache("file_directory_name"), [new Place(1), new Place(-3)]), new Skeleton(new Cache("sub_atom"), [new Place(0), 0, new Place(-1), new Place(-1), new Place(1)])], -1, undefined));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["sys_listing_stop", 2])]));
add("sys_listing_stop", 2, new Clause(0, ["sys_op", 5], [], -1, "sys_op"));
add("sys_listing_stop", 2, new Clause(0, ["sys_source", 3], [], -1, "sys_source"));
add("sys_listing_stop", 2, new Clause(0, ["sys_srcprop", 2], [], -1, "sys_srcprop"));
add("sys_listing_stop", 2, new Clause(0, ["sys_predprop", 3], [], -1, "sys_predprop"));
add("sys_listing_stop", 2, new Clause(0, ["sys_lastpred", 3], [], -1, "sys_lastpred"));
add("sys_listing_stop", 2, new Clause(0, ["sys_including", 3], [], -1, "sys_including"));
add("sys_listing_stop", 2, new Clause(0, ["sys_emulated", 2], [], -1, "sys_emulated"));
run(new Goal(0, [new Compound(new Cache("sys_multifile_safe"), ["strings", 3])]));
run(new Goal(0, [new Compound(new Cache("sys_usage_predicate"), ["strings", 3])]));
add("strings", 3, new Clause(0, ["banner.player", "de", "Dogelog Spieler, Prolog zum Mond, ~.~.~ (~~)"], [], -1, "banner.player"));
add("strings", 3, new Clause(0, ["banner.copyright", "de", "(c) 1985-2024, XLOG Technologies AG, Schweiz"], [], -1, "banner.copyright"));
add("strings", 3, new Clause(0, ["banner.player", "", "Dogelog Player, Prolog to the Moon, ~.~.~ (~~)"], [], -1, "banner.player"));
add("strings", 3, new Clause(0, ["banner.copyright", "", "(c) 1985-2024, XLOG Technologies AG, Switzerland"], [], -1, "banner.copyright"));
export {add, Clause, run, check_goal, clear,
Goal, Cache, make_defined, launch, set_stage,
launch_async, Context}
export function get_cont() {
return call;
}
export function get_mark() {
return trail;
}
export function get_engine() {
return engine;
}
export function get_ctx() {
return ctx;
}
export function get_stage() {
return stage;
}
export function get_codebase() {
return codebase;
}
export {make_special, make_arithmetic, check_atomic,
make_check, cont, make_error, check_clause, register_interrupt,
check_nonvar, check_atom, fs, http, register_signal,
check_number, check_integer, check_callable}
export {Variable, Compound, is_variable, is_compound,
is_atom, is_number, is_integer, is_float, unify,
equal_term, compare_term, bind, unbind, exec_unify,
deref, copy_term, exec_eval, exec_build}
export {Source, Sink, set_cursor, stream_close, stream_flush,
check_source, check_sink, put_atom, flush_buffer,
MASK_SRC_AREAD, open_write, open_file_promise,
open_http_promise, map_http_result, map_file_error,
map_stream_error, http_read_promise, http_close_promise}
export {is_bigint, norm_smallint, widen_bigint,
norm_bigint, narrow_float, norm_float, char_count}
export {fiddle_out, fiddle_err}
export function init() {
set_stage(0);
set_partition("user");
}
export async function consult_async(text) {
check_atom(text);
let back_input = engine.text_input;
let src = new Source();
src.buf = text;
engine.text_input = src;
try {
await perform_async(new Compound("ensure_loaded", ["user"]));
} finally {
stream_flush(engine.text_error);
stream_flush(engine.text_output);
engine.text_input = back_input;
}
}
export async function toplevel_async() {
await perform_async("sys_launch");
}
export function post(message) {
register_signal("main", message);
invoke_interrupt("main");
}
export function show(term) {
perform(new Compound("sys_print_error", [term]));
}
export const FFI_FUNC = 0x00000100;
export function register(functor, arity, func, flags) {
let res;
if ((flags & FFI_FUNC) !== 0) {
res = make_special((args) => invoke_func(func, args));
} else {
res = make_special((args) => invoke(func, args));
}
add(functor, arity, res);
}
function invoke(func, args) {
let temp = new Array(args.length);
for (let i = 0; i < temp.length; i++)
temp[i] = deref(args[i]);
func(...temp);
cont(call.args[1]);
return true;
}
function invoke_func(func, args) {
let temp = new Array(args.length-1);
for (let i = 0; i < temp.length; i++)
temp[i] = deref(args[i]);
temp = func(...temp);
if (!unify(args[args.length-1], temp))
return false;
cont(call.args[1]);
return true;
}
export function perform(goal) {
goal = new Compound(".", [goal, "[]"]);
return launch(goal, "main", VOID_ARGS);
}
export async function perform_async(goal) {
goal = new Compound(".", [goal, "[]"]);
return await launch_async(goal, "main", VOID_ARGS);
}
function plain_out(data, buf) {
try {
fs.writeSync(data, buf);
} catch (err) {
throw make_error(map_stream_error(err));
}
}
function plain_err(data, buf) {
try {
fs.writeSync(data, buf);
} catch (err) {
throw make_error(map_stream_error(err));
}
}
// See also:
// https://github.com/Financial-Times/ebi/issues/86#issuecomment-487510849
function console_promise(buf, stream) {
return new Promise(resolve => {
let bytes = Buffer.alloc(1024);
fs.read(stream.data, bytes, (err, len, bytes) => {
if (err === null) {
stream.buf = bytes.toString("utf8", 0, len);
stream.pos = 0;
} else {
register_signal(buf, map_stream_error(err));
}
resolve();
});
});
}
const ANSI_RESET = "\x1B[0m";
const ANSI_INPUT = "\x1B[92m"; // Intense Green
const ANSI_ERROR = "\x1B[91m"; // Intense Red
function ansi_out(data, buf) {
try {
fs.writeSync(data, ANSI_RESET);
fs.writeSync(data, buf);
fs.writeSync(data, ANSI_INPUT);
} catch (err) {
throw make_error(map_stream_error(err));
}
}
function ansi_err(data, buf) {
try {
fs.writeSync(data, ANSI_ERROR);
fs.writeSync(data, buf);
fs.writeSync(data, ANSI_INPUT);
} catch (err) {
throw make_error(map_stream_error(err));
}
}
function ctrlc_abort() {
post(new Compound("system_error", ["user_abort"]));
}
async function dogelog_async() {
init();
process.on("SIGINT", ctrlc_abort);
if (process.argv.length > 2) {
await toplevel_async();
} else {
fs.writeSync(process.stdout.fd, ANSI_INPUT);
let dst = new Sink();
dst.data = process.stdout.fd;
dst.send = ansi_out;
engine.text_output = dst;
dst = new Sink();
dst.data = process.stderr.fd;
dst.send = ansi_err;
engine.text_error = dst;
await toplevel_async();
fs.writeSync(process.stdout.fd, ANSI_RESET);
}
}
if (fs !== undefined) {
set_bootbase(url.fileURLToPath(import.meta.url));
let dst = new Sink();
dst.data = process.stdout.fd;
dst.send = plain_out;
engine.text_output = dst;
dst = new Sink();
dst.data = process.stderr.fd;
dst.send = plain_err;
engine.text_error = dst;
// engine.text_input = new Source("", console_in, (data) => {}, 0);
let src = new Source();
src.data = 0;
src.receive = console_promise;
src.flags |= MASK_SRC_AREAD;
engine.text_input = src;
if (bootbase === process.argv[1])
(async () => { await dogelog_async() })();
} else {
set_bootbase(import.meta.url);
let dst = new Sink();
dst.data = document.body;
dst.send = fiddle_out;
engine.text_output = dst;
dst = new Sink();
dst.data = document.body;
dst.send = fiddle_err;
engine.text_error = dst;
if (self.document !== undefined) {
set_codebase(document.URL);
}
}