/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 deriv(a,g,g) w.r.t. the given Prolog program could successfully be proven: (0) Prolog (1) PrologToTRSTransformerProof [SOUND, 0 ms] (2) QTRS (3) RisEmptyProof [EQUIVALENT, 0 ms] (4) YES ---------------------------------------- (0) Obligation: Clauses: d(+(U, V), X, +(DU, DV)) :- ','(!, ','(d(U, X, DU), d(V, X, DV))). d(-(U, V), X, -(DU, DV)) :- ','(!, ','(d(U, X, DU), d(V, X, DV))). d(*(U, V), X, +(*(DU, V), *(U, DV))) :- ','(!, ','(d(U, X, DU), d(V, X, DV))). d(/(U, V), X, /(-(*(DU, V), *(U, DV)), ^(V, 2))) :- ','(!, ','(d(U, X, DU), d(V, X, DV))). d(^(U, N), X, *(DU, *(N, ^(U, N1)))) :- ','(!, ','(integer(N), ','(is(N1, -(N, 1)), d(U, X, DU)))). d(-(U), X, -(DU)) :- ','(!, d(U, X, DU)). d(exp(U), X, *(exp(U), DU)) :- ','(!, d(U, X, DU)). d(log(U), X, /(DU, U)) :- ','(!, d(U, X, DU)). d(X, X, 1) :- !. d(C, X, 0). main :- ','(expression(X), ','(d(X, x, Y), write(Y))). expression(+(Exp, -(Exp, *(Exp, /(Exp, *(Exp, /(Exp, Exp))))))) :- value(Exp). value(/(+(*(3, x), -(*(4, *(exp(^(x, 3)), log(^(x, 2)))), 2)), +(-(*(3, x)), /(5, +(exp(^(x, 4)), 2))))). Query: deriv(a,g,g) ---------------------------------------- (1) PrologToTRSTransformerProof (SOUND) Transformed Prolog program to TRS. { "root": 3, "program": { "directives": [], "clauses": [ [ "(d (+ U V) X (+ DU DV))", "(',' (!) (',' (d U X DU) (d V X DV)))" ], [ "(d (- U V) X (- DU DV))", "(',' (!) (',' (d U X DU) (d V X DV)))" ], [ "(d (* U V) X (+ (* DU V) (* U DV)))", "(',' (!) (',' (d U X DU) (d V X DV)))" ], [ "(d (/ U V) X (/ (- (* DU V) (* U DV)) (^ V (2))))", "(',' (!) (',' (d U X DU) (d V X DV)))" ], [ "(d (^ U N) X (* DU (* N (^ U N1))))", "(',' (!) (',' (integer N) (',' (is N1 (- N (1))) (d U X DU))))" ], [ "(d (- U) X (- DU))", "(',' (!) (d U X DU))" ], [ "(d (exp U) X (* (exp U) DU))", "(',' (!) (d U X DU))" ], [ "(d (log U) X (/ DU U))", "(',' (!) (d U X DU))" ], [ "(d X X (1))", "(!)" ], [ "(d C X (0))", null ], [ "(main)", "(',' (expression X) (',' (d X (x) Y) (write Y)))" ], [ "(expression (+ Exp (- Exp (* Exp (/ Exp (* Exp (/ Exp Exp)))))))", "(value Exp)" ], [ "(value (/ (+ (* (3) (x)) (- (* (4) (* (exp (^ (x) (3))) (log (^ (x) (2))))) (2))) (+ (- (* (3) (x))) (/ (5) (+ (exp (^ (x) (4))) (2))))))", null ] ] }, "graph": { "nodes": { "3": { "goal": [{ "clause": -1, "scope": -1, "term": "(deriv T1 T2 T3)" }], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [ "T2", "T3" ], "free": [], "exprvars": [] } }, "4": { "goal": [], "kb": { "nonunifying": [], "intvars": {}, "arithmetic": { "type": "PlainIntegerRelationState", "relations": [] }, "ground": [], "free": [], "exprvars": [] } }, "type": "Nodes" }, "edges": [{ "from": 3, "to": 4, "label": "UNDEFINED ERROR" }], "type": "Graph" } } ---------------------------------------- (2) Obligation: Q restricted rewrite system: R is empty. Q is empty. ---------------------------------------- (3) RisEmptyProof (EQUIVALENT) The TRS R is empty. Hence, termination is trivially proven. ---------------------------------------- (4) YES