/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 max_valued(g,a) w.r.t. the given Prolog program could successfully be proven: (0) Prolog (1) PrologToIRSwTTransformerProof [SOUND, 0 ms] (2) TRUE ---------------------------------------- (0) Obligation: Clauses: max_valued(.(Head, Tail), Max) :- max_Valued(Tail, Head, Max). max_valued([], Term, Term). max_valued(.(Head, Tail), Term, Max) :- ','(higher_valued(Head, Term), ','(!, max_valued(Tail, Head, Max))). max_valued(.(Head, Tail), Term, Max) :- ','(higher_valued(Term, Head), max_valued(Tail, Term, Max)). higher_valued(X, Y) :- greater(s(X), Y). greater(s(X1), 0). greater(s(X), s(Y)) :- greater(X, Y). Query: max_valued(g,a) ---------------------------------------- (1) PrologToIRSwTTransformerProof (SOUND) Transformed Prolog program to IRSwT according to method in Master Thesis of A. Weinert { "root": 2, "program": { "directives": [], "clauses": [ [ "(max_valued (. Head Tail) Max)", "(max_Valued Tail Head Max)" ], [ "(max_valued ([]) Term Term)", null ], [ "(max_valued (. Head Tail) Term Max)", "(',' (higher_valued Head Term) (',' (!) (max_valued Tail Head Max)))" ], [ "(max_valued (. Head Tail) Term Max)", "(',' (higher_valued Term Head) (max_valued Tail Term Max))" ], [ "(higher_valued X Y)", "(greater (s X) Y)" ], [ "(greater (s X1) (0))", null ], [ "(greater (s X) (s Y))", "(greater X Y)" ] ] }, "graph": { "nodes": { "22": { "goal": [{ "clause": -1, "scope": -1, "term": "(max_Valued T10 T9 T12)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T9", "T10" ], "free": [], "exprvars": [] } }, "23": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "2": { "goal": [{ "clause": -1, "scope": -1, "term": "(max_valued T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "4": { "goal": [{ "clause": 0, "scope": 1, "term": "(max_valued T1 T2)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": ["T1"], "free": [], "exprvars": [] } }, "type": "Nodes", "40": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } } }, "edges": [ { "from": 2, "to": 4, "label": "CASE" }, { "from": 4, "to": 22, "label": "EVAL with clause\nmax_valued(.(X8, X9), X10) :- max_Valued(X9, X8, X10).\nand substitutionX8 -> T9,\nX9 -> T10,\nT1 -> .(T9, T10),\nT2 -> T12,\nX10 -> T12,\nT11 -> T12" }, { "from": 4, "to": 23, "label": "EVAL-BACKTRACK" }, { "from": 22, "to": 40, "label": "UNDEFINED ERROR" } ], "type": "Graph" } } ---------------------------------------- (2) TRUE