/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.pl /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.pl # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Left Termination of the query pattern kay4(g) w.r.t. the given Prolog program could successfully be proven: (0) Prolog (1) PrologToIRSwTTransformerProof [SOUND, 0 ms] (2) TRUE ---------------------------------------- (0) Obligation: Clauses: kay4(I) :- ','(length(.(X1, .(X2, L)), I), ','(top(L), ','(mid([], L), bot(L)))). top(L) :- ','(write(a), ','(mwrite('-', L), ','(write(b), nl))). bot(L) :- ','(write(c), ','(mwrite('-', L), ','(write(d), nl))). mid(X, []). mid(X, .(X3, [])) :- ','(write('|'), ','(mwrite(' ', X), ','(write('X'), ','(mwrite(' ', X), ','(write('|'), nl))))). mid(X, .(X4, .(X5, Y))) :- ','(write('|'), ','(mwrite(' ', X), ','(write('\\'), ','(mwrite(' ', Y), ','(write('/'), ','(mwrite(' ', X), ','(write('|'), ','(nl, ','(mid(.(X6, X), Y), ','(write('|'), ','(mwrite(' ', X), ','(write('/'), ','(mwrite(' ', Y), ','(write('\\'), ','(mwrite(' ', X), ','(write('|'), nl)))))))))))))))). mwrite(Char, L) :- findall(X7, ','(member(X8, L), write(Char)), X9). member(X, .(X, X10)). member(X, .(X11, Xs)) :- member(X, Xs). Query: kay4(g) ---------------------------------------- (1) PrologToIRSwTTransformerProof (SOUND) Transformed Prolog program to IRSwT according to method in Master Thesis of A. Weinert { "root": 1, "program": { "directives": [], "clauses": [ [ "(kay4 I)", "(',' (length (. X1 (. X2 L)) I) (',' (top L) (',' (mid ([]) L) (bot L))))" ], [ "(top L)", "(',' (write (a)) (',' (mwrite ('-') L) (',' (write (b)) (nl))))" ], [ "(bot L)", "(',' (write (c)) (',' (mwrite ('-') L) (',' (write (d)) (nl))))" ], [ "(mid X ([]))", null ], [ "(mid X (. X3 ([])))", "(',' (write ('|')) (',' (mwrite (' ') X) (',' (write ('X')) (',' (mwrite (' ') X) (',' (write ('|')) (nl))))))" ], [ "(mid X (. X4 (. X5 Y)))", "(',' (write ('|')) (',' (mwrite (' ') X) (',' (write ('\\\\')) (',' (mwrite (' ') Y) (',' (write ('/')) (',' (mwrite (' ') X) (',' (write ('|')) (',' (nl) (',' (mid (. X6 X) Y) (',' (write ('|')) (',' (mwrite (' ') X) (',' (write ('/')) (',' (mwrite (' ') Y) (',' (write ('\\\\')) (',' (mwrite (' ') X) (',' (write ('|')) (nl)))))))))))))))))" ], [ "(mwrite Char L)", "(findall X7 (',' (member X8 L) (write Char)) X9)" ], [ "(member X (. X X10))", null ], [ "(member X (. X11 Xs))", "(member X Xs)" ] ] }, "graph": { "nodes": { "1": { "goal": [{ "clause": -1, "scope": -1, "term": "(kay4 T1)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "5": { "goal": [{ "clause": 0, "scope": 1, "term": "(kay4 T1)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "7": { "goal": [{ "clause": -1, "scope": -1, "term": "(',' (length (. X18 (. X19 X20)) T4) (',' (top X20) (',' (mid ([]) X20) (bot X20))))" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T4"], "free": [ "X18", "X19", "X20" ], "exprvars": [] } }, "type": "Nodes", "10": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } } }, "edges": [ { "from": 1, "to": 5, "label": "CASE" }, { "from": 5, "to": 7, "label": "ONLY EVAL with clause\nkay4(X17) :- ','(length(.(X18, .(X19, X20)), X17), ','(top(X20), ','(mid([], X20), bot(X20)))).\nand substitutionT1 -> T4,\nX17 -> T4" }, { "from": 7, "to": 10, "label": "UNDEFINED ERROR" } ], "type": "Graph" } } ---------------------------------------- (2) TRUE