/export/starexec/sandbox2/solver/bin/starexec_run_rcdcRelativeAlsoLower /export/starexec/sandbox2/benchmark/theBenchmark.xml /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- WORST_CASE(?, O(n^1)) proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty The Derivational Complexity (innermost) of the given DCpxTrs could be proven to be BOUNDS(1, n^1). (0) DCpxTrs (1) DerivationalComplexityToRuntimeComplexityProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxRelTRS (3) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 273 ms] (4) CpxRelTRS (5) NonCtorToCtorProof [UPPER BOUND(ID), 0 ms] (6) CpxRelTRS (7) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CpxWeightedTrs (9) CpxWeightedTrsRenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CpxWeightedTrs (11) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (12) CpxTypedWeightedTrs (13) CompletionProof [UPPER BOUND(ID), 0 ms] (14) CpxTypedWeightedCompleteTrs (15) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (16) CpxRNTS (17) CompleteCoflocoProof [FINISHED, 1617 ms] (18) BOUNDS(1, n^1) ---------------------------------------- (0) Obligation: The Derivational Complexity (innermost) of the given DCpxTrs could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: not(x) -> if(x, false, true) and(x, y) -> if(x, y, false) or(x, y) -> if(x, true, y) implies(x, y) -> if(x, y, true) =(x, x) -> true =(x, y) -> if(x, y, not(y)) if(true, x, y) -> x if(false, x, y) -> y if(x, x, if(x, false, true)) -> true =(x, y) -> if(x, y, if(y, false, true)) S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (1) DerivationalComplexityToRuntimeComplexityProof (BOTH BOUNDS(ID, ID)) The following rules have been added to S to convert the given derivational complexity problem to a runtime complexity problem: encArg(false) -> false encArg(true) -> true encArg(cons_not(x_1)) -> not(encArg(x_1)) encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) encArg(cons_or(x_1, x_2)) -> or(encArg(x_1), encArg(x_2)) encArg(cons_implies(x_1, x_2)) -> implies(encArg(x_1), encArg(x_2)) encArg(cons_=(x_1, x_2)) -> =(encArg(x_1), encArg(x_2)) encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encode_not(x_1) -> not(encArg(x_1)) encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encode_false -> false encode_true -> true encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) encode_or(x_1, x_2) -> or(encArg(x_1), encArg(x_2)) encode_implies(x_1, x_2) -> implies(encArg(x_1), encArg(x_2)) encode_=(x_1, x_2) -> =(encArg(x_1), encArg(x_2)) ---------------------------------------- (2) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: not(x) -> if(x, false, true) and(x, y) -> if(x, y, false) or(x, y) -> if(x, true, y) implies(x, y) -> if(x, y, true) =(x, x) -> true =(x, y) -> if(x, y, not(y)) if(true, x, y) -> x if(false, x, y) -> y if(x, x, if(x, false, true)) -> true =(x, y) -> if(x, y, if(y, false, true)) The (relative) TRS S consists of the following rules: encArg(false) -> false encArg(true) -> true encArg(cons_not(x_1)) -> not(encArg(x_1)) encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) encArg(cons_or(x_1, x_2)) -> or(encArg(x_1), encArg(x_2)) encArg(cons_implies(x_1, x_2)) -> implies(encArg(x_1), encArg(x_2)) encArg(cons_=(x_1, x_2)) -> =(encArg(x_1), encArg(x_2)) encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encode_not(x_1) -> not(encArg(x_1)) encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encode_false -> false encode_true -> true encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) encode_or(x_1, x_2) -> or(encArg(x_1), encArg(x_2)) encode_implies(x_1, x_2) -> implies(encArg(x_1), encArg(x_2)) encode_=(x_1, x_2) -> =(encArg(x_1), encArg(x_2)) Rewrite Strategy: INNERMOST ---------------------------------------- (3) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (4) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: not(x) -> if(x, false, true) and(x, y) -> if(x, y, false) or(x, y) -> if(x, true, y) implies(x, y) -> if(x, y, true) =(x, x) -> true =(x, y) -> if(x, y, not(y)) if(true, x, y) -> x if(false, x, y) -> y if(x, x, if(x, false, true)) -> true =(x, y) -> if(x, y, if(y, false, true)) The (relative) TRS S consists of the following rules: encArg(false) -> false encArg(true) -> true encArg(cons_not(x_1)) -> not(encArg(x_1)) encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) encArg(cons_or(x_1, x_2)) -> or(encArg(x_1), encArg(x_2)) encArg(cons_implies(x_1, x_2)) -> implies(encArg(x_1), encArg(x_2)) encArg(cons_=(x_1, x_2)) -> =(encArg(x_1), encArg(x_2)) encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encode_not(x_1) -> not(encArg(x_1)) encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encode_false -> false encode_true -> true encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) encode_or(x_1, x_2) -> or(encArg(x_1), encArg(x_2)) encode_implies(x_1, x_2) -> implies(encArg(x_1), encArg(x_2)) encode_=(x_1, x_2) -> =(encArg(x_1), encArg(x_2)) Rewrite Strategy: INNERMOST ---------------------------------------- (5) NonCtorToCtorProof (UPPER BOUND(ID)) transformed non-ctor to ctor-system ---------------------------------------- (6) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: not(x) -> if(x, false, true) and(x, y) -> if(x, y, false) or(x, y) -> if(x, true, y) implies(x, y) -> if(x, y, true) =(x, x) -> true =(x, y) -> if(x, y, not(y)) if(true, x, y) -> x if(false, x, y) -> y =(x, y) -> if(x, y, if(y, false, true)) if(x, x, c_if(x, false, true)) -> true The (relative) TRS S consists of the following rules: encArg(false) -> false encArg(true) -> true encArg(cons_not(x_1)) -> not(encArg(x_1)) encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) encArg(cons_or(x_1, x_2)) -> or(encArg(x_1), encArg(x_2)) encArg(cons_implies(x_1, x_2)) -> implies(encArg(x_1), encArg(x_2)) encArg(cons_=(x_1, x_2)) -> =(encArg(x_1), encArg(x_2)) encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encode_not(x_1) -> not(encArg(x_1)) encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) encode_false -> false encode_true -> true encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) encode_or(x_1, x_2) -> or(encArg(x_1), encArg(x_2)) encode_implies(x_1, x_2) -> implies(encArg(x_1), encArg(x_2)) encode_=(x_1, x_2) -> =(encArg(x_1), encArg(x_2)) if(x0, x1, x2) -> c_if(x0, x1, x2) Rewrite Strategy: INNERMOST ---------------------------------------- (7) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (8) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: not(x) -> if(x, false, true) [1] and(x, y) -> if(x, y, false) [1] or(x, y) -> if(x, true, y) [1] implies(x, y) -> if(x, y, true) [1] =(x, x) -> true [1] =(x, y) -> if(x, y, not(y)) [1] if(true, x, y) -> x [1] if(false, x, y) -> y [1] =(x, y) -> if(x, y, if(y, false, true)) [1] if(x, x, c_if(x, false, true)) -> true [1] encArg(false) -> false [0] encArg(true) -> true [0] encArg(cons_not(x_1)) -> not(encArg(x_1)) [0] encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) [0] encArg(cons_or(x_1, x_2)) -> or(encArg(x_1), encArg(x_2)) [0] encArg(cons_implies(x_1, x_2)) -> implies(encArg(x_1), encArg(x_2)) [0] encArg(cons_=(x_1, x_2)) -> =(encArg(x_1), encArg(x_2)) [0] encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) [0] encode_not(x_1) -> not(encArg(x_1)) [0] encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) [0] encode_false -> false [0] encode_true -> true [0] encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) [0] encode_or(x_1, x_2) -> or(encArg(x_1), encArg(x_2)) [0] encode_implies(x_1, x_2) -> implies(encArg(x_1), encArg(x_2)) [0] encode_=(x_1, x_2) -> =(encArg(x_1), encArg(x_2)) [0] if(x0, x1, x2) -> c_if(x0, x1, x2) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (9) CpxWeightedTrsRenamingProof (BOTH BOUNDS(ID, ID)) Renamed defined symbols to avoid conflicts with arithmetic symbols: = => eq ---------------------------------------- (10) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: not(x) -> if(x, false, true) [1] and(x, y) -> if(x, y, false) [1] or(x, y) -> if(x, true, y) [1] implies(x, y) -> if(x, y, true) [1] eq(x, x) -> true [1] eq(x, y) -> if(x, y, not(y)) [1] if(true, x, y) -> x [1] if(false, x, y) -> y [1] eq(x, y) -> if(x, y, if(y, false, true)) [1] if(x, x, c_if(x, false, true)) -> true [1] encArg(false) -> false [0] encArg(true) -> true [0] encArg(cons_not(x_1)) -> not(encArg(x_1)) [0] encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) [0] encArg(cons_or(x_1, x_2)) -> or(encArg(x_1), encArg(x_2)) [0] encArg(cons_implies(x_1, x_2)) -> implies(encArg(x_1), encArg(x_2)) [0] encArg(cons_=(x_1, x_2)) -> eq(encArg(x_1), encArg(x_2)) [0] encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) [0] encode_not(x_1) -> not(encArg(x_1)) [0] encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) [0] encode_false -> false [0] encode_true -> true [0] encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) [0] encode_or(x_1, x_2) -> or(encArg(x_1), encArg(x_2)) [0] encode_implies(x_1, x_2) -> implies(encArg(x_1), encArg(x_2)) [0] encode_=(x_1, x_2) -> eq(encArg(x_1), encArg(x_2)) [0] if(x0, x1, x2) -> c_if(x0, x1, x2) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (11) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (12) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: not(x) -> if(x, false, true) [1] and(x, y) -> if(x, y, false) [1] or(x, y) -> if(x, true, y) [1] implies(x, y) -> if(x, y, true) [1] eq(x, x) -> true [1] eq(x, y) -> if(x, y, not(y)) [1] if(true, x, y) -> x [1] if(false, x, y) -> y [1] eq(x, y) -> if(x, y, if(y, false, true)) [1] if(x, x, c_if(x, false, true)) -> true [1] encArg(false) -> false [0] encArg(true) -> true [0] encArg(cons_not(x_1)) -> not(encArg(x_1)) [0] encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) [0] encArg(cons_or(x_1, x_2)) -> or(encArg(x_1), encArg(x_2)) [0] encArg(cons_implies(x_1, x_2)) -> implies(encArg(x_1), encArg(x_2)) [0] encArg(cons_=(x_1, x_2)) -> eq(encArg(x_1), encArg(x_2)) [0] encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) [0] encode_not(x_1) -> not(encArg(x_1)) [0] encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) [0] encode_false -> false [0] encode_true -> true [0] encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) [0] encode_or(x_1, x_2) -> or(encArg(x_1), encArg(x_2)) [0] encode_implies(x_1, x_2) -> implies(encArg(x_1), encArg(x_2)) [0] encode_=(x_1, x_2) -> eq(encArg(x_1), encArg(x_2)) [0] if(x0, x1, x2) -> c_if(x0, x1, x2) [0] The TRS has the following type information: not :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if if :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if false :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if true :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if and :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if or :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if implies :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if eq :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if c_if :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if encArg :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if cons_not :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if cons_and :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if cons_or :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if cons_implies :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if cons_= :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if cons_if :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if encode_not :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if encode_if :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if encode_false :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if encode_true :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if encode_and :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if encode_or :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if encode_implies :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if encode_= :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if Rewrite Strategy: INNERMOST ---------------------------------------- (13) CompletionProof (UPPER BOUND(ID)) The TRS is a completely defined constructor system, as every type has a constant constructor and the following rules were added: encArg(v0) -> null_encArg [0] encode_not(v0) -> null_encode_not [0] encode_if(v0, v1, v2) -> null_encode_if [0] encode_false -> null_encode_false [0] encode_true -> null_encode_true [0] encode_and(v0, v1) -> null_encode_and [0] encode_or(v0, v1) -> null_encode_or [0] encode_implies(v0, v1) -> null_encode_implies [0] encode_=(v0, v1) -> null_encode_= [0] if(v0, v1, v2) -> null_if [0] And the following fresh constants: null_encArg, null_encode_not, null_encode_if, null_encode_false, null_encode_true, null_encode_and, null_encode_or, null_encode_implies, null_encode_=, null_if ---------------------------------------- (14) Obligation: Runtime Complexity Weighted TRS where all functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: not(x) -> if(x, false, true) [1] and(x, y) -> if(x, y, false) [1] or(x, y) -> if(x, true, y) [1] implies(x, y) -> if(x, y, true) [1] eq(x, x) -> true [1] eq(x, y) -> if(x, y, not(y)) [1] if(true, x, y) -> x [1] if(false, x, y) -> y [1] eq(x, y) -> if(x, y, if(y, false, true)) [1] if(x, x, c_if(x, false, true)) -> true [1] encArg(false) -> false [0] encArg(true) -> true [0] encArg(cons_not(x_1)) -> not(encArg(x_1)) [0] encArg(cons_and(x_1, x_2)) -> and(encArg(x_1), encArg(x_2)) [0] encArg(cons_or(x_1, x_2)) -> or(encArg(x_1), encArg(x_2)) [0] encArg(cons_implies(x_1, x_2)) -> implies(encArg(x_1), encArg(x_2)) [0] encArg(cons_=(x_1, x_2)) -> eq(encArg(x_1), encArg(x_2)) [0] encArg(cons_if(x_1, x_2, x_3)) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) [0] encode_not(x_1) -> not(encArg(x_1)) [0] encode_if(x_1, x_2, x_3) -> if(encArg(x_1), encArg(x_2), encArg(x_3)) [0] encode_false -> false [0] encode_true -> true [0] encode_and(x_1, x_2) -> and(encArg(x_1), encArg(x_2)) [0] encode_or(x_1, x_2) -> or(encArg(x_1), encArg(x_2)) [0] encode_implies(x_1, x_2) -> implies(encArg(x_1), encArg(x_2)) [0] encode_=(x_1, x_2) -> eq(encArg(x_1), encArg(x_2)) [0] if(x0, x1, x2) -> c_if(x0, x1, x2) [0] encArg(v0) -> null_encArg [0] encode_not(v0) -> null_encode_not [0] encode_if(v0, v1, v2) -> null_encode_if [0] encode_false -> null_encode_false [0] encode_true -> null_encode_true [0] encode_and(v0, v1) -> null_encode_and [0] encode_or(v0, v1) -> null_encode_or [0] encode_implies(v0, v1) -> null_encode_implies [0] encode_=(v0, v1) -> null_encode_= [0] if(v0, v1, v2) -> null_if [0] The TRS has the following type information: not :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if if :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if false :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if true :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if and :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if or :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if implies :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if eq :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if c_if :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if encArg :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if cons_not :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if cons_and :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if cons_or :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if cons_implies :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if cons_= :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if cons_if :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if encode_not :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if encode_if :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if encode_false :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if encode_true :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if encode_and :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if encode_or :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if encode_implies :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if encode_= :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if -> false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if null_encArg :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if null_encode_not :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if null_encode_if :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if null_encode_false :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if null_encode_true :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if null_encode_and :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if null_encode_or :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if null_encode_implies :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if null_encode_= :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if null_if :: false:true:c_if:cons_not:cons_and:cons_or:cons_implies:cons_=:cons_if:null_encArg:null_encode_not:null_encode_if:null_encode_false:null_encode_true:null_encode_and:null_encode_or:null_encode_implies:null_encode_=:null_if Rewrite Strategy: INNERMOST ---------------------------------------- (15) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: false => 0 true => 1 null_encArg => 0 null_encode_not => 0 null_encode_if => 0 null_encode_false => 0 null_encode_true => 0 null_encode_and => 0 null_encode_or => 0 null_encode_implies => 0 null_encode_= => 0 null_if => 0 ---------------------------------------- (16) Obligation: Complexity RNTS consisting of the following rules: and(z, z') -{ 1 }-> if(x, y, 0) :|: x >= 0, y >= 0, z = x, z' = y encArg(z) -{ 0 }-> or(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> not(encArg(x_1)) :|: z = 1 + x_1, x_1 >= 0 encArg(z) -{ 0 }-> implies(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> if(encArg(x_1), encArg(x_2), encArg(x_3)) :|: x_1 >= 0, z = 1 + x_1 + x_2 + x_3, x_3 >= 0, x_2 >= 0 encArg(z) -{ 0 }-> eq(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> and(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, z = 1 + x_1 + x_2, x_2 >= 0 encArg(z) -{ 0 }-> 1 :|: z = 1 encArg(z) -{ 0 }-> 0 :|: z = 0 encArg(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encode_=(z, z') -{ 0 }-> eq(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, x_2 >= 0, z = x_1, z' = x_2 encode_=(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 encode_and(z, z') -{ 0 }-> and(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, x_2 >= 0, z = x_1, z' = x_2 encode_and(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 encode_false -{ 0 }-> 0 :|: encode_if(z, z', z'') -{ 0 }-> if(encArg(x_1), encArg(x_2), encArg(x_3)) :|: x_1 >= 0, x_3 >= 0, x_2 >= 0, z = x_1, z' = x_2, z'' = x_3 encode_if(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 encode_implies(z, z') -{ 0 }-> implies(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, x_2 >= 0, z = x_1, z' = x_2 encode_implies(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 encode_not(z) -{ 0 }-> not(encArg(x_1)) :|: x_1 >= 0, z = x_1 encode_not(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 encode_or(z, z') -{ 0 }-> or(encArg(x_1), encArg(x_2)) :|: x_1 >= 0, x_2 >= 0, z = x_1, z' = x_2 encode_or(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 encode_true -{ 0 }-> 1 :|: encode_true -{ 0 }-> 0 :|: eq(z, z') -{ 1 }-> if(x, y, not(y)) :|: x >= 0, y >= 0, z = x, z' = y eq(z, z') -{ 1 }-> if(x, y, if(y, 0, 1)) :|: x >= 0, y >= 0, z = x, z' = y eq(z, z') -{ 1 }-> 1 :|: z' = x, x >= 0, z = x if(z, z', z'') -{ 1 }-> x :|: z' = x, z'' = y, z = 1, x >= 0, y >= 0 if(z, z', z'') -{ 1 }-> y :|: z' = x, z'' = y, x >= 0, y >= 0, z = 0 if(z, z', z'') -{ 1 }-> 1 :|: z' = x, x >= 0, z'' = 1 + x + 0 + 1, z = x if(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 if(z, z', z'') -{ 0 }-> 1 + x0 + x1 + x2 :|: z = x0, x0 >= 0, x1 >= 0, z' = x1, z'' = x2, x2 >= 0 implies(z, z') -{ 1 }-> if(x, y, 1) :|: x >= 0, y >= 0, z = x, z' = y not(z) -{ 1 }-> if(x, 0, 1) :|: x >= 0, z = x or(z, z') -{ 1 }-> if(x, 1, y) :|: x >= 0, y >= 0, z = x, z' = y Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (17) CompleteCoflocoProof (FINISHED) Transformed the RNTS (where only complete derivations are relevant) into cost relations for CoFloCo: eq(start(V, V3, V13),0,[not(V, Out)],[V >= 0]). eq(start(V, V3, V13),0,[and(V, V3, Out)],[V >= 0,V3 >= 0]). eq(start(V, V3, V13),0,[or(V, V3, Out)],[V >= 0,V3 >= 0]). eq(start(V, V3, V13),0,[implies(V, V3, Out)],[V >= 0,V3 >= 0]). eq(start(V, V3, V13),0,[eq(V, V3, Out)],[V >= 0,V3 >= 0]). eq(start(V, V3, V13),0,[if(V, V3, V13, Out)],[V >= 0,V3 >= 0,V13 >= 0]). eq(start(V, V3, V13),0,[encArg(V, Out)],[V >= 0]). eq(start(V, V3, V13),0,[fun(V, Out)],[V >= 0]). eq(start(V, V3, V13),0,[fun1(V, V3, V13, Out)],[V >= 0,V3 >= 0,V13 >= 0]). eq(start(V, V3, V13),0,[fun2(Out)],[]). eq(start(V, V3, V13),0,[fun3(Out)],[]). eq(start(V, V3, V13),0,[fun4(V, V3, Out)],[V >= 0,V3 >= 0]). eq(start(V, V3, V13),0,[fun5(V, V3, Out)],[V >= 0,V3 >= 0]). eq(start(V, V3, V13),0,[fun6(V, V3, Out)],[V >= 0,V3 >= 0]). eq(start(V, V3, V13),0,[fun7(V, V3, Out)],[V >= 0,V3 >= 0]). eq(not(V, Out),1,[if(V1, 0, 1, Ret)],[Out = Ret,V1 >= 0,V = V1]). eq(and(V, V3, Out),1,[if(V2, V4, 0, Ret1)],[Out = Ret1,V2 >= 0,V4 >= 0,V = V2,V3 = V4]). eq(or(V, V3, Out),1,[if(V5, 1, V6, Ret2)],[Out = Ret2,V5 >= 0,V6 >= 0,V = V5,V3 = V6]). eq(implies(V, V3, Out),1,[if(V8, V7, 1, Ret3)],[Out = Ret3,V8 >= 0,V7 >= 0,V = V8,V3 = V7]). eq(eq(V, V3, Out),1,[],[Out = 1,V3 = V9,V9 >= 0,V = V9]). eq(eq(V, V3, Out),1,[not(V10, Ret21),if(V11, V10, Ret21, Ret4)],[Out = Ret4,V11 >= 0,V10 >= 0,V = V11,V3 = V10]). eq(if(V, V3, V13, Out),1,[],[Out = V14,V3 = V14,V13 = V12,V = 1,V14 >= 0,V12 >= 0]). eq(if(V, V3, V13, Out),1,[],[Out = V15,V3 = V16,V13 = V15,V16 >= 0,V15 >= 0,V = 0]). eq(eq(V, V3, Out),1,[if(V17, 0, 1, Ret22),if(V18, V17, Ret22, Ret5)],[Out = Ret5,V18 >= 0,V17 >= 0,V = V18,V3 = V17]). eq(if(V, V3, V13, Out),1,[],[Out = 1,V3 = V19,V19 >= 0,V13 = 2 + V19,V = V19]). eq(encArg(V, Out),0,[],[Out = 0,V = 0]). eq(encArg(V, Out),0,[],[Out = 1,V = 1]). eq(encArg(V, Out),0,[encArg(V20, Ret0),not(Ret0, Ret6)],[Out = Ret6,V = 1 + V20,V20 >= 0]). eq(encArg(V, Out),0,[encArg(V21, Ret01),encArg(V22, Ret11),and(Ret01, Ret11, Ret7)],[Out = Ret7,V21 >= 0,V = 1 + V21 + V22,V22 >= 0]). eq(encArg(V, Out),0,[encArg(V23, Ret02),encArg(V24, Ret12),or(Ret02, Ret12, Ret8)],[Out = Ret8,V23 >= 0,V = 1 + V23 + V24,V24 >= 0]). eq(encArg(V, Out),0,[encArg(V26, Ret03),encArg(V25, Ret13),implies(Ret03, Ret13, Ret9)],[Out = Ret9,V26 >= 0,V = 1 + V25 + V26,V25 >= 0]). eq(encArg(V, Out),0,[encArg(V28, Ret04),encArg(V27, Ret14),eq(Ret04, Ret14, Ret10)],[Out = Ret10,V28 >= 0,V = 1 + V27 + V28,V27 >= 0]). eq(encArg(V, Out),0,[encArg(V30, Ret05),encArg(V31, Ret15),encArg(V29, Ret23),if(Ret05, Ret15, Ret23, Ret16)],[Out = Ret16,V30 >= 0,V = 1 + V29 + V30 + V31,V29 >= 0,V31 >= 0]). eq(fun(V, Out),0,[encArg(V32, Ret06),not(Ret06, Ret17)],[Out = Ret17,V32 >= 0,V = V32]). eq(fun1(V, V3, V13, Out),0,[encArg(V35, Ret07),encArg(V34, Ret18),encArg(V33, Ret24),if(Ret07, Ret18, Ret24, Ret19)],[Out = Ret19,V35 >= 0,V33 >= 0,V34 >= 0,V = V35,V3 = V34,V13 = V33]). eq(fun2(Out),0,[],[Out = 0]). eq(fun3(Out),0,[],[Out = 1]). eq(fun4(V, V3, Out),0,[encArg(V37, Ret08),encArg(V36, Ret110),and(Ret08, Ret110, Ret20)],[Out = Ret20,V37 >= 0,V36 >= 0,V = V37,V3 = V36]). eq(fun5(V, V3, Out),0,[encArg(V38, Ret09),encArg(V39, Ret111),or(Ret09, Ret111, Ret25)],[Out = Ret25,V38 >= 0,V39 >= 0,V = V38,V3 = V39]). eq(fun6(V, V3, Out),0,[encArg(V40, Ret010),encArg(V41, Ret112),implies(Ret010, Ret112, Ret26)],[Out = Ret26,V40 >= 0,V41 >= 0,V = V40,V3 = V41]). eq(fun7(V, V3, Out),0,[encArg(V42, Ret011),encArg(V43, Ret113),eq(Ret011, Ret113, Ret27)],[Out = Ret27,V42 >= 0,V43 >= 0,V = V42,V3 = V43]). eq(if(V, V3, V13, Out),0,[],[Out = 1 + V44 + V45 + V46,V = V46,V46 >= 0,V44 >= 0,V3 = V44,V13 = V45,V45 >= 0]). eq(encArg(V, Out),0,[],[Out = 0,V47 >= 0,V = V47]). eq(fun(V, Out),0,[],[Out = 0,V48 >= 0,V = V48]). eq(fun1(V, V3, V13, Out),0,[],[Out = 0,V50 >= 0,V13 = V51,V49 >= 0,V = V50,V3 = V49,V51 >= 0]). eq(fun3(Out),0,[],[Out = 0]). eq(fun4(V, V3, Out),0,[],[Out = 0,V52 >= 0,V53 >= 0,V = V52,V3 = V53]). eq(fun5(V, V3, Out),0,[],[Out = 0,V54 >= 0,V55 >= 0,V = V54,V3 = V55]). eq(fun6(V, V3, Out),0,[],[Out = 0,V56 >= 0,V57 >= 0,V = V56,V3 = V57]). eq(fun7(V, V3, Out),0,[],[Out = 0,V59 >= 0,V58 >= 0,V = V59,V3 = V58]). eq(if(V, V3, V13, Out),0,[],[Out = 0,V60 >= 0,V13 = V62,V61 >= 0,V = V60,V3 = V61,V62 >= 0]). input_output_vars(not(V,Out),[V],[Out]). input_output_vars(and(V,V3,Out),[V,V3],[Out]). input_output_vars(or(V,V3,Out),[V,V3],[Out]). input_output_vars(implies(V,V3,Out),[V,V3],[Out]). input_output_vars(eq(V,V3,Out),[V,V3],[Out]). input_output_vars(if(V,V3,V13,Out),[V,V3,V13],[Out]). input_output_vars(encArg(V,Out),[V],[Out]). input_output_vars(fun(V,Out),[V],[Out]). input_output_vars(fun1(V,V3,V13,Out),[V,V3,V13],[Out]). input_output_vars(fun2(Out),[],[Out]). input_output_vars(fun3(Out),[],[Out]). input_output_vars(fun4(V,V3,Out),[V,V3],[Out]). input_output_vars(fun5(V,V3,Out),[V,V3],[Out]). input_output_vars(fun6(V,V3,Out),[V,V3],[Out]). input_output_vars(fun7(V,V3,Out),[V,V3],[Out]). CoFloCo proof output: Preprocessing Cost Relations ===================================== #### Computed strongly connected components 0. non_recursive : [if/4] 1. non_recursive : [and/3] 2. non_recursive : [not/2] 3. non_recursive : [eq/3] 4. non_recursive : [implies/3] 5. non_recursive : [or/3] 6. recursive [non_tail,multiple] : [encArg/2] 7. non_recursive : [fun/2] 8. non_recursive : [fun1/4] 9. non_recursive : [fun2/1] 10. non_recursive : [fun3/1] 11. non_recursive : [fun4/3] 12. non_recursive : [fun5/3] 13. non_recursive : [fun6/3] 14. non_recursive : [fun7/3] 15. non_recursive : [start/3] #### Obtained direct recursion through partial evaluation 0. SCC is partially evaluated into if/4 1. SCC is completely evaluated into other SCCs 2. SCC is completely evaluated into other SCCs 3. SCC is partially evaluated into eq/3 4. SCC is completely evaluated into other SCCs 5. SCC is completely evaluated into other SCCs 6. SCC is partially evaluated into encArg/2 7. SCC is partially evaluated into fun/2 8. SCC is partially evaluated into fun1/4 9. SCC is completely evaluated into other SCCs 10. SCC is partially evaluated into fun3/1 11. SCC is partially evaluated into fun4/3 12. SCC is partially evaluated into fun5/3 13. SCC is partially evaluated into fun6/3 14. SCC is partially evaluated into fun7/3 15. SCC is partially evaluated into start/3 Control-Flow Refinement of Cost Relations ===================================== ### Specialization of cost equations if/4 * CE 19 is refined into CE [46] * CE 18 is refined into CE [47] * CE 20 is refined into CE [48] * CE 16 is refined into CE [49] * CE 17 is refined into CE [50] ### Cost equations --> "Loop" of if/4 * CEs [46] --> Loop 21 * CEs [47] --> Loop 22 * CEs [48] --> Loop 23 * CEs [49] --> Loop 24 * CEs [50] --> Loop 25 ### Ranking functions of CR if(V,V3,V13,Out) #### Partial ranking functions of CR if(V,V3,V13,Out) ### Specialization of cost equations eq/3 * CE 21 is refined into CE [51] * CE 22 is refined into CE [52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68] * CE 23 is refined into CE [69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85] ### Cost equations --> "Loop" of eq/3 * CEs [68,85] --> Loop 26 * CEs [59,63,76,80] --> Loop 27 * CEs [58,75] --> Loop 28 * CEs [55,72] --> Loop 29 * CEs [54,71] --> Loop 30 * CEs [57,74] --> Loop 31 * CEs [53,61,65,70,78,82] --> Loop 32 * CEs [64,81] --> Loop 33 * CEs [56,60,62,66,73,77,79,83] --> Loop 34 * CEs [51,52,67,69,84] --> Loop 35 ### Ranking functions of CR eq(V,V3,Out) #### Partial ranking functions of CR eq(V,V3,Out) ### Specialization of cost equations encArg/2 * CE 24 is refined into CE [86] * CE 25 is refined into CE [87] * CE 31 is refined into CE [88,89,90,91,92] * CE 27 is refined into CE [93,94,95,96] * CE 28 is refined into CE [97,98,99,100,101] * CE 29 is refined into CE [102,103,104,105] * CE 30 is refined into CE [106,107,108,109,110,111,112,113] * CE 26 is refined into CE [114,115,116,117] ### Cost equations --> "Loop" of encArg/2 * CEs [117] --> Loop 36 * CEs [114] --> Loop 37 * CEs [115,116] --> Loop 38 * CEs [96,112] --> Loop 39 * CEs [113] --> Loop 40 * CEs [109] --> Loop 41 * CEs [94,103,107] --> Loop 42 * CEs [101,105,106] --> Loop 43 * CEs [97] --> Loop 44 * CEs [111] --> Loop 45 * CEs [98,100] --> Loop 46 * CEs [102] --> Loop 47 * CEs [110] --> Loop 48 * CEs [93,95,99,104,108] --> Loop 49 * CEs [92] --> Loop 50 * CEs [89] --> Loop 51 * CEs [88] --> Loop 52 * CEs [91] --> Loop 53 * CEs [90] --> Loop 54 * CEs [86] --> Loop 55 * CEs [87] --> Loop 56 ### Ranking functions of CR encArg(V,Out) * RF of phase [36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54]: [V] #### Partial ranking functions of CR encArg(V,Out) * Partial RF of phase [36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54]: - RF of loop [36:1,37:1,38:1,39:1,39:2,40:1,40:2,41:1,41:2,42:1,42:2,43:1,43:2,44:1,44:2,45:1,45:2,46:1,46:2,47:1,47:2,48:1,48:2,49:1,49:2,50:1,50:2,50:3,51:1,51:2,51:3,52:1,52:2,52:3,53:1,53:2,53:3,54:1,54:2,54:3]: V ### Specialization of cost equations fun/2 * CE 32 is refined into CE [118,119,120,121,122,123,124] * CE 33 is refined into CE [125] ### Cost equations --> "Loop" of fun/2 * CEs [121] --> Loop 57 * CEs [124] --> Loop 58 * CEs [118,122] --> Loop 59 * CEs [119,120,123,125] --> Loop 60 ### Ranking functions of CR fun(V,Out) #### Partial ranking functions of CR fun(V,Out) ### Specialization of cost equations fun1/4 * CE 34 is refined into CE [126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157] * CE 35 is refined into CE [158] ### Cost equations --> "Loop" of fun1/4 * CEs [132] --> Loop 61 * CEs [143] --> Loop 62 * CEs [134,150] --> Loop 63 * CEs [126,127,130,135,139,144,147,151,154] --> Loop 64 * CEs [129,138,146,153,157] --> Loop 65 * CEs [128,131,133,136,137,140,141,142,145,148,149,152,155,156,158] --> Loop 66 ### Ranking functions of CR fun1(V,V3,V13,Out) #### Partial ranking functions of CR fun1(V,V3,V13,Out) ### Specialization of cost equations fun3/1 * CE 36 is refined into CE [159] * CE 37 is refined into CE [160] ### Cost equations --> "Loop" of fun3/1 * CEs [159] --> Loop 67 * CEs [160] --> Loop 68 ### Ranking functions of CR fun3(Out) #### Partial ranking functions of CR fun3(Out) ### Specialization of cost equations fun4/3 * CE 38 is refined into CE [161,162,163,164,165,166,167,168,169,170,171,172,173,174] * CE 39 is refined into CE [175] ### Cost equations --> "Loop" of fun4/3 * CEs [162] --> Loop 69 * CEs [168] --> Loop 70 * CEs [164,171] --> Loop 71 * CEs [174] --> Loop 72 * CEs [161,163,165,166,167,169,170,172,173,175] --> Loop 73 ### Ranking functions of CR fun4(V,V3,Out) #### Partial ranking functions of CR fun4(V,V3,Out) ### Specialization of cost equations fun5/3 * CE 40 is refined into CE [176,177,178,179,180,181,182,183,184,185,186,187,188,189,190] * CE 41 is refined into CE [191] ### Cost equations --> "Loop" of fun5/3 * CEs [184] --> Loop 74 * CEs [176,180,185,187] --> Loop 75 * CEs [190] --> Loop 76 * CEs [177,179,182] --> Loop 77 * CEs [178,181,183,186,188,189,191] --> Loop 78 ### Ranking functions of CR fun5(V,V3,Out) #### Partial ranking functions of CR fun5(V,V3,Out) ### Specialization of cost equations fun6/3 * CE 42 is refined into CE [192,193,194,195,196,197,198,199,200,201,202,203,204,205] * CE 43 is refined into CE [206] ### Cost equations --> "Loop" of fun6/3 * CEs [193] --> Loop 79 * CEs [199] --> Loop 80 * CEs [195,202] --> Loop 81 * CEs [205] --> Loop 82 * CEs [192,196,200,203] --> Loop 83 * CEs [194,197,198,201,204,206] --> Loop 84 ### Ranking functions of CR fun6(V,V3,Out) #### Partial ranking functions of CR fun6(V,V3,Out) ### Specialization of cost equations fun7/3 * CE 44 is refined into CE [207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234] * CE 45 is refined into CE [235] ### Cost equations --> "Loop" of fun7/3 * CEs [208] --> Loop 85 * CEs [218,220,221] --> Loop 86 * CEs [207,210,213,214,222,227,228] --> Loop 87 * CEs [234] --> Loop 88 * CEs [215,224,229,231] --> Loop 89 * CEs [212,219,226,232,233] --> Loop 90 * CEs [209,211,216,217,223,225,230,235] --> Loop 91 ### Ranking functions of CR fun7(V,V3,Out) #### Partial ranking functions of CR fun7(V,V3,Out) ### Specialization of cost equations start/3 * CE 1 is refined into CE [236,237,238,239] * CE 2 is refined into CE [240,241,242,243] * CE 3 is refined into CE [244,245,246,247,248] * CE 4 is refined into CE [249,250,251,252] * CE 5 is refined into CE [253,254,255,256,257,258,259,260] * CE 6 is refined into CE [261,262,263,264,265] * CE 7 is refined into CE [266,267] * CE 8 is refined into CE [268,269,270,271] * CE 9 is refined into CE [272,273,274,275,276,277] * CE 10 is refined into CE [278] * CE 11 is refined into CE [279,280] * CE 12 is refined into CE [281,282,283,284,285] * CE 13 is refined into CE [286,287,288,289,290] * CE 14 is refined into CE [291,292,293,294,295,296] * CE 15 is refined into CE [297,298,299,300,301,302,303] ### Cost equations --> "Loop" of start/3 * CEs [236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303] --> Loop 92 ### Ranking functions of CR start(V,V3,V13) #### Partial ranking functions of CR start(V,V3,V13) Computing Bounds ===================================== #### Cost of chains of if(V,V3,V13,Out): * Chain [25]: 1 with precondition: [V=0,V13=Out,V3>=0,V13>=0] * Chain [24]: 1 with precondition: [V=1,V3=Out,V3>=0,V13>=0] * Chain [23]: 0 with precondition: [Out=0,V>=0,V3>=0,V13>=0] * Chain [22]: 1 with precondition: [Out=1,V=V3,V+2=V13,V>=0] * Chain [21]: 0 with precondition: [V+V3+V13+1=Out,V>=0,V3>=0,V13>=0] #### Cost of chains of eq(V,V3,Out): * Chain [35]: 4 with precondition: [Out=1,V=V3,V>=0] * Chain [34]: 4 with precondition: [Out=0,V>=0,V3>=0] * Chain [33]: 3 with precondition: [V=0,V3+2=Out,V3>=0] * Chain [32]: 4 with precondition: [V=1,V3=Out,V3>=0] * Chain [31]: 4 with precondition: [V=1,V3=1,Out=1] * Chain [30]: 3 with precondition: [V3=0,Out=0,V>=0] * Chain [29]: 3 with precondition: [V3=0,V+2=Out,V>=0] * Chain [28]: 3 with precondition: [V3=1,Out=0,V>=0] * Chain [27]: 3 with precondition: [V+V3+1=Out,V>=0,V3>=0] * Chain [26]: 2 with precondition: [V+2*V3+3=Out,V>=0,V3>=0] #### Cost of chains of encArg(V,Out): * Chain [56]: 0 with precondition: [V=1,Out=1] * Chain [55]: 0 with precondition: [Out=0,V>=0] * Chain [multiple([36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54],[[56],[55]])]: 40*it(36)+0 Such that:aux(6) =< V it(36) =< aux(6) with precondition: [V>=1,Out>=0] #### Cost of chains of fun(V,Out): * Chain [60]: 80*s(4)+2 Such that:aux(7) =< V s(4) =< aux(7) with precondition: [Out=0,V>=0] * Chain [59]: 40*s(8)+2 Such that:s(7) =< V s(8) =< s(7) with precondition: [Out=1,V>=0] * Chain [58]: 1 with precondition: [Out=2,V>=0] * Chain [57]: 40*s(10)+1 Such that:s(9) =< V s(10) =< s(9) with precondition: [V>=1,Out>=2] #### Cost of chains of fun1(V,V3,V13,Out): * Chain [66]: 320*s(12)+240*s(14)+200*s(16)+1 Such that:aux(8) =< V aux(9) =< V3 aux(10) =< V13 s(16) =< aux(10) s(14) =< aux(9) s(12) =< aux(8) with precondition: [Out=0,V>=0,V3>=0,V13>=0] * Chain [65]: 80*s(50)+80*s(52)+160*s(54)+1 Such that:aux(11) =< V aux(12) =< V3 aux(13) =< V13 s(54) =< aux(13) s(52) =< aux(12) s(50) =< aux(11) with precondition: [Out=1,V>=0,V3>=0,V13>=0] * Chain [64]: 200*s(66)+200*s(68)+360*s(70)+1 Such that:aux(14) =< V aux(15) =< V3 aux(16) =< V13 s(70) =< aux(16) s(68) =< aux(15) s(66) =< aux(14) with precondition: [V>=0,V3>=0,V13>=1,Out>=0] * Chain [63]: 40*s(104)+80*s(106)+0 Such that:s(103) =< V aux(17) =< V3 s(106) =< aux(17) s(104) =< s(103) with precondition: [V>=0,V3>=1,V13>=0,Out>=1] * Chain [62]: 40*s(110)+0 Such that:s(109) =< V s(110) =< s(109) with precondition: [V>=1,V3>=0,V13>=0,Out>=1] * Chain [61]: 40*s(112)+40*s(114)+1 Such that:s(111) =< V s(113) =< V3 s(114) =< s(113) s(112) =< s(111) with precondition: [V>=1,V3>=1,V13>=0,Out>=0] #### Cost of chains of fun3(Out): * Chain [68]: 0 with precondition: [Out=0] * Chain [67]: 0 with precondition: [Out=1] #### Cost of chains of fun4(V,V3,Out): * Chain [73]: 200*s(116)+160*s(118)+2 Such that:aux(18) =< V aux(19) =< V3 s(118) =< aux(19) s(116) =< aux(18) with precondition: [Out=0,V>=0,V3>=0] * Chain [72]: 1 with precondition: [Out=1,V>=0,V3>=0] * Chain [71]: 40*s(134)+80*s(136)+1 Such that:s(133) =< V aux(20) =< V3 s(136) =< aux(20) s(134) =< s(133) with precondition: [V>=0,V3>=1,Out>=1] * Chain [70]: 40*s(140)+1 Such that:s(139) =< V s(140) =< s(139) with precondition: [V>=1,V3>=0,Out>=1] * Chain [69]: 40*s(142)+40*s(144)+2 Such that:s(141) =< V s(143) =< V3 s(144) =< s(143) s(142) =< s(141) with precondition: [V>=1,V3>=1,Out>=0] #### Cost of chains of fun5(V,V3,Out): * Chain [78]: 120*s(146)+80*s(148)+2 Such that:aux(21) =< V aux(22) =< V3 s(148) =< aux(22) s(146) =< aux(21) with precondition: [Out=0,V>=0,V3>=0] * Chain [77]: 120*s(156)+80*s(158)+2 Such that:aux(23) =< V aux(24) =< V3 s(158) =< aux(24) s(156) =< aux(23) with precondition: [Out=1,V>=1,V3>=0] * Chain [76]: 1 with precondition: [Out=2,V>=0,V3>=0] * Chain [75]: 80*s(166)+160*s(168)+2 Such that:aux(25) =< V aux(26) =< V3 s(168) =< aux(26) s(166) =< aux(25) with precondition: [V>=0,V3>=1,Out>=0] * Chain [74]: 40*s(178)+1 Such that:s(177) =< V s(178) =< s(177) with precondition: [V>=1,V3>=0,Out>=2] #### Cost of chains of fun6(V,V3,Out): * Chain [84]: 120*s(180)+80*s(182)+2 Such that:aux(27) =< V aux(28) =< V3 s(182) =< aux(28) s(180) =< aux(27) with precondition: [Out=0,V>=0,V3>=0] * Chain [83]: 80*s(190)+80*s(192)+2 Such that:aux(29) =< V aux(30) =< V3 s(192) =< aux(30) s(190) =< aux(29) with precondition: [Out=1,V>=0,V3>=0] * Chain [82]: 1 with precondition: [Out=2,V>=0,V3>=0] * Chain [81]: 40*s(198)+80*s(200)+1 Such that:s(197) =< V aux(31) =< V3 s(200) =< aux(31) s(198) =< s(197) with precondition: [V>=0,V3>=1,Out>=2] * Chain [80]: 40*s(204)+1 Such that:s(203) =< V s(204) =< s(203) with precondition: [V>=1,V3>=0,Out>=2] * Chain [79]: 40*s(206)+40*s(208)+2 Such that:s(205) =< V s(207) =< V3 s(208) =< s(207) s(206) =< s(205) with precondition: [V>=1,V3>=1,Out>=0] #### Cost of chains of fun7(V,V3,Out): * Chain [91]: 160*s(210)+160*s(212)+4 Such that:aux(32) =< V aux(33) =< V3 s(212) =< aux(33) s(210) =< aux(32) with precondition: [Out=0,V>=0,V3>=0] * Chain [90]: 80*s(226)+80*s(228)+4 Such that:aux(34) =< V aux(35) =< V3 s(228) =< aux(35) s(226) =< aux(34) with precondition: [Out=1,V>=0,V3>=0] * Chain [89]: 40*s(234)+40*s(236)+3 Such that:s(233) =< V s(235) =< V3 s(234) =< s(233) s(236) =< s(235) with precondition: [Out=2,V>=0,V3>=0] * Chain [88]: 2 with precondition: [Out=3,V>=0,V3>=0] * Chain [87]: 160*s(238)+280*s(240)+3 Such that:aux(36) =< V aux(37) =< V3 s(240) =< aux(37) s(238) =< aux(36) with precondition: [V>=0,V3>=1,Out>=1] * Chain [86]: 120*s(260)+3 Such that:aux(38) =< V s(260) =< aux(38) with precondition: [V>=1,V3>=0,Out>=1] * Chain [85]: 40*s(266)+40*s(268)+4 Such that:s(265) =< V s(267) =< V3 s(268) =< s(267) s(266) =< s(265) with precondition: [V>=1,V3>=1,Out>=0] #### Cost of chains of start(V,V3,V13): * Chain [92]: 2520*s(270)+720*s(280)+2120*s(281)+4 Such that:aux(39) =< V aux(40) =< V3 aux(41) =< V13 s(270) =< aux(39) s(280) =< aux(41) s(281) =< aux(40) with precondition: [] Closed-form bounds of start(V,V3,V13): ------------------------------------- * Chain [92] with precondition: [] - Upper bound: nat(V)*2520+4+nat(V3)*2120+nat(V13)*720 - Complexity: n ### Maximum cost of start(V,V3,V13): nat(V)*2520+4+nat(V3)*2120+nat(V13)*720 Asymptotic class: n * Total analysis performed in 1452 ms. ---------------------------------------- (18) BOUNDS(1, n^1)