YES proof of /export/starexec/sandbox/benchmark/theBenchmark.xml # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty Termination w.r.t. Q of the given QTRS could be proven: (0) QTRS (1) DependencyPairsProof [EQUIVALENT, 0 ms] (2) QDP (3) DependencyGraphProof [EQUIVALENT, 0 ms] (4) QDP (5) UsableRulesProof [EQUIVALENT, 0 ms] (6) QDP (7) QReductionProof [EQUIVALENT, 1 ms] (8) QDP (9) TransformationProof [EQUIVALENT, 0 ms] (10) QDP (11) Induction-Processor [SOUND, 32 ms] (12) AND (13) QDP (14) PisEmptyProof [EQUIVALENT, 0 ms] (15) YES (16) QTRS (17) QTRSRRRProof [EQUIVALENT, 0 ms] (18) QTRS (19) RisEmptyProof [EQUIVALENT, 0 ms] (20) YES ---------------------------------------- (0) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: f(0, 1, X) -> f(g(X, X), X, X) g(X, Y) -> X g(X, Y) -> Y The set Q consists of the following terms: f(0, 1, x0) g(x0, x1) ---------------------------------------- (1) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. ---------------------------------------- (2) Obligation: Q DP problem: The TRS P consists of the following rules: F(0, 1, X) -> F(g(X, X), X, X) F(0, 1, X) -> G(X, X) The TRS R consists of the following rules: f(0, 1, X) -> f(g(X, X), X, X) g(X, Y) -> X g(X, Y) -> Y The set Q consists of the following terms: f(0, 1, x0) g(x0, x1) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (3) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. ---------------------------------------- (4) Obligation: Q DP problem: The TRS P consists of the following rules: F(0, 1, X) -> F(g(X, X), X, X) The TRS R consists of the following rules: f(0, 1, X) -> f(g(X, X), X, X) g(X, Y) -> X g(X, Y) -> Y The set Q consists of the following terms: f(0, 1, x0) g(x0, x1) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (5) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (6) Obligation: Q DP problem: The TRS P consists of the following rules: F(0, 1, X) -> F(g(X, X), X, X) The TRS R consists of the following rules: g(X, Y) -> X g(X, Y) -> Y The set Q consists of the following terms: f(0, 1, x0) g(x0, x1) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (7) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. f(0, 1, x0) ---------------------------------------- (8) Obligation: Q DP problem: The TRS P consists of the following rules: F(0, 1, X) -> F(g(X, X), X, X) The TRS R consists of the following rules: g(X, Y) -> X g(X, Y) -> Y The set Q consists of the following terms: g(x0, x1) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (9) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule F(0, 1, X) -> F(g(X, X), X, X) we obtained the following new rules [LPAR04]: (F(0, 1, 1) -> F(g(1, 1), 1, 1),F(0, 1, 1) -> F(g(1, 1), 1, 1)) ---------------------------------------- (10) Obligation: Q DP problem: The TRS P consists of the following rules: F(0, 1, 1) -> F(g(1, 1), 1, 1) The TRS R consists of the following rules: g(X, Y) -> X g(X, Y) -> Y The set Q consists of the following terms: g(x0, x1) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (11) Induction-Processor (SOUND) This DP could be deleted by the Induction-Processor: F(0, 1, 1) -> F(g(1, 1), 1, 1) This order was computed: Polynomial interpretation [POLO]: POL(0) = 1 POL(1) = 0 POL(F(x_1, x_2, x_3)) = x_1 POL(g(x_1, x_2)) = 1 + x_1 + x_2 At least one of these decreasing rules is always used after the deleted DP: g(X, Y) -> X g(X', Y') -> Y' The following formula is valid: z0:sort[a0].(~(z0=0)->g'(z0, z0)=true) The transformed set: g'(X, Y) -> true g(X, Y) -> X g(X', Y') -> Y' equal_bool(true, false) -> false equal_bool(false, true) -> false equal_bool(true, true) -> true equal_bool(false, false) -> true and(true, x) -> x and(false, x) -> false or(true, x) -> true or(false, x) -> x not(false) -> true not(true) -> false isa_true(true) -> true isa_true(false) -> false isa_false(true) -> false isa_false(false) -> true equal_sort[a0](0, 0) -> true equal_sort[a0](0, 1) -> false equal_sort[a0](1, 0) -> false equal_sort[a0](1, 1) -> true equal_sort[a10](witness_sort[a10], witness_sort[a10]) -> true The proof given by the theorem prover: The following output was given by the internal theorem prover:proof of internal # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty Partial correctness of the following Program [x, X, Y, X', Y'] equal_bool(true, false) -> false equal_bool(false, true) -> false equal_bool(true, true) -> true equal_bool(false, false) -> true true and x -> x false and x -> false true or x -> true false or x -> x not(false) -> true not(true) -> false isa_true(true) -> true isa_true(false) -> false isa_false(true) -> false isa_false(false) -> true equal_sort[a0](0, 0) -> true equal_sort[a0](0, 1) -> false equal_sort[a0](1, 0) -> false equal_sort[a0](1, 1) -> true equal_sort[a10](witness_sort[a10], witness_sort[a10]) -> true g'(X, Y) -> true g(X, Y) -> X g(X', Y') -> Y' using the following formula: z0:sort[a0].(~(z0=0)->g'(z0, z0)=true) could be successfully shown: (0) Formula (1) Symbolic evaluation [EQUIVALENT, 0 ms] (2) YES ---------------------------------------- (0) Obligation: Formula: z0:sort[a0].(~(z0=0)->g'(z0, z0)=true) There are no hypotheses. ---------------------------------------- (1) Symbolic evaluation (EQUIVALENT) Could be reduced to the following new obligation by simple symbolic evaluation: True ---------------------------------------- (2) YES ---------------------------------------- (12) Complex Obligation (AND) ---------------------------------------- (13) Obligation: Q DP problem: P is empty. The TRS R consists of the following rules: g(X, Y) -> X g(X, Y) -> Y The set Q consists of the following terms: g(x0, x1) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (14) PisEmptyProof (EQUIVALENT) The TRS P is empty. Hence, there is no (P,Q,R) chain. ---------------------------------------- (15) YES ---------------------------------------- (16) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: g'(X, Y) -> true g(X, Y) -> X g(X', Y') -> Y' equal_bool(true, false) -> false equal_bool(false, true) -> false equal_bool(true, true) -> true equal_bool(false, false) -> true and(true, x) -> x and(false, x) -> false or(true, x) -> true or(false, x) -> x not(false) -> true not(true) -> false isa_true(true) -> true isa_true(false) -> false isa_false(true) -> false isa_false(false) -> true equal_sort[a0](0, 0) -> true equal_sort[a0](0, 1) -> false equal_sort[a0](1, 0) -> false equal_sort[a0](1, 1) -> true equal_sort[a10](witness_sort[a10], witness_sort[a10]) -> true Q is empty. ---------------------------------------- (17) QTRSRRRProof (EQUIVALENT) Used ordering: Knuth-Bendix order [KBO] with precedence:isa_false_1 > witness_sort[a10] > equal_sort[a10]_2 > 1 > 0 > equal_sort[a0]_2 > isa_true_1 > equal_bool_2 > not_1 > or_2 > and_2 > g'_2 > true > false > g_2 and weight map: true=2 false=2 0=1 1=1 witness_sort[a10]=1 not_1=1 isa_true_1=1 isa_false_1=0 g'_2=0 g_2=0 equal_bool_2=0 and_2=0 or_2=0 equal_sort[a0]_2=0 equal_sort[a10]_2=0 The variable weight is 1With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: g'(X, Y) -> true g(X, Y) -> X g(X', Y') -> Y' equal_bool(true, false) -> false equal_bool(false, true) -> false equal_bool(true, true) -> true equal_bool(false, false) -> true and(true, x) -> x and(false, x) -> false or(true, x) -> true or(false, x) -> x not(false) -> true not(true) -> false isa_true(true) -> true isa_true(false) -> false isa_false(true) -> false isa_false(false) -> true equal_sort[a0](0, 0) -> true equal_sort[a0](0, 1) -> false equal_sort[a0](1, 0) -> false equal_sort[a0](1, 1) -> true equal_sort[a10](witness_sort[a10], witness_sort[a10]) -> true ---------------------------------------- (18) Obligation: Q restricted rewrite system: R is empty. Q is empty. ---------------------------------------- (19) RisEmptyProof (EQUIVALENT) The TRS R is empty. Hence, termination is trivially proven. ---------------------------------------- (20) YES