/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.jar /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 526 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) JBCTerminationSCC (7) SCCToIRSProof [SOUND, 107 ms] (8) IRSwT (9) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (10) IRSwT (11) IRSwTTerminationDigraphProof [EQUIVALENT, 93 ms] (12) IRSwT (13) IntTRSCompressionProof [EQUIVALENT, 0 ms] (14) IRSwT (15) TempFilterProof [SOUND, 73 ms] (16) IntTRS (17) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (18) IntTRS (19) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (20) IntTRS (21) RankingReductionPairProof [EQUIVALENT, 4 ms] (22) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class Test1 { public static void main(String[] args) { rec(args.length, args.length % 5, args.length % 4); } private static void rec(int x, int y, int z) { if (x + y + 3 * z < 0) return; else if (x > y) rec(x - 1, y, z); else if (y > z) rec (x, y - 2, z); else rec (x, y, z - 1); } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: public class Test1 { public static void main(String[] args) { rec(args.length, args.length % 5, args.length % 4); } private static void rec(int x, int y, int z) { if (x + y + 3 * z < 0) return; else if (x > y) rec(x - 1, y, z); else if (y > z) rec (x, y - 2, z); else rec (x, y, z - 1); } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: Test1.main([Ljava/lang/String;)V: Graph of 22 nodes with 0 SCCs. Test1.rec(III)V: Graph of 69 nodes with 0 SCCs. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 1 SCCs. ---------------------------------------- (6) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Test1.rec(III)V SCC calls the following helper methods: Test1.rec(III)V Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (7) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 48 IRulesP rules: f2832_0_rec_Load(EOS(STATIC_2832), i673, i718, i578, i673, i718, i578, i673) -> f2833_0_rec_IntArithmetic(EOS(STATIC_2833), i673, i718, i578, i673, i718, i578, i673, i718) :|: TRUE f2833_0_rec_IntArithmetic(EOS(STATIC_2833), i673, i718, i578, i673, i718, i578, i673, i718) -> f2838_0_rec_ConstantStackPush(EOS(STATIC_2838), i673, i718, i578, i673, i718, i578, i673 + i718) :|: TRUE f2838_0_rec_ConstantStackPush(EOS(STATIC_2838), i673, i718, i578, i673, i718, i578, i719) -> f2839_0_rec_Load(EOS(STATIC_2839), i673, i718, i578, i673, i718, i578, i719, 3) :|: TRUE f2839_0_rec_Load(EOS(STATIC_2839), i673, i718, i578, i673, i718, i578, i719, matching1) -> f2840_0_rec_IntArithmetic(EOS(STATIC_2840), i673, i718, i578, i673, i718, i578, i719, 3, i578) :|: TRUE && matching1 = 3 f2840_0_rec_IntArithmetic(EOS(STATIC_2840), i673, i718, i578, i673, i718, i578, i719, matching1, i578) -> f2842_0_rec_IntArithmetic(EOS(STATIC_2842), i673, i718, i578, i673, i718, i578, i719, 3 * i578) :|: TRUE && matching1 = 3 f2842_0_rec_IntArithmetic(EOS(STATIC_2842), i673, i718, i578, i673, i718, i578, i719, i720) -> f2844_0_rec_GE(EOS(STATIC_2844), i673, i718, i578, i673, i718, i578, i719 + i720) :|: TRUE f2844_0_rec_GE(EOS(STATIC_2844), i673, i718, i578, i673, i718, i578, i723) -> f2847_0_rec_GE(EOS(STATIC_2847), i673, i718, i578, i673, i718, i578, i723) :|: TRUE f2847_0_rec_GE(EOS(STATIC_2847), i673, i718, i578, i673, i718, i578, i723) -> f2849_0_rec_Load(EOS(STATIC_2849), i673, i718, i578, i673, i718, i578) :|: i723 >= 0 f2849_0_rec_Load(EOS(STATIC_2849), i673, i718, i578, i673, i718, i578) -> f2851_0_rec_Load(EOS(STATIC_2851), i673, i718, i578, i673, i718, i578, i673) :|: TRUE f2851_0_rec_Load(EOS(STATIC_2851), i673, i718, i578, i673, i718, i578, i673) -> f2858_0_rec_LE(EOS(STATIC_2858), i673, i718, i578, i673, i718, i578, i673, i718) :|: TRUE f2858_0_rec_LE(EOS(STATIC_2858), i673, i718, i578, i673, i718, i578, i673, i718) -> f2872_0_rec_LE(EOS(STATIC_2872), i673, i718, i578, i673, i718, i578, i673, i718) :|: i673 <= i718 f2858_0_rec_LE(EOS(STATIC_2858), i673, i718, i578, i673, i718, i578, i673, i718) -> f2873_0_rec_LE(EOS(STATIC_2873), i673, i718, i578, i673, i718, i578, i673, i718) :|: i673 > i718 f2872_0_rec_LE(EOS(STATIC_2872), i673, i718, i578, i673, i718, i578, i673, i718) -> f2878_0_rec_Load(EOS(STATIC_2878), i673, i718, i578, i673, i718, i578) :|: i673 <= i718 f2878_0_rec_Load(EOS(STATIC_2878), i673, i718, i578, i673, i718, i578) -> f2883_0_rec_Load(EOS(STATIC_2883), i673, i718, i578, i673, i718, i578, i718) :|: TRUE f2883_0_rec_Load(EOS(STATIC_2883), i673, i718, i578, i673, i718, i578, i718) -> f2885_0_rec_LE(EOS(STATIC_2885), i673, i718, i578, i673, i718, i578, i718, i578) :|: TRUE f2885_0_rec_LE(EOS(STATIC_2885), i673, i718, i578, i673, i718, i578, i718, i578) -> f2887_0_rec_LE(EOS(STATIC_2887), i673, i718, i578, i673, i718, i578, i718, i578) :|: i718 <= i578 f2885_0_rec_LE(EOS(STATIC_2885), i673, i718, i578, i673, i718, i578, i718, i578) -> f2888_0_rec_LE(EOS(STATIC_2888), i673, i718, i578, i673, i718, i578, i718, i578) :|: i718 > i578 f2887_0_rec_LE(EOS(STATIC_2887), i673, i718, i578, i673, i718, i578, i718, i578) -> f2892_0_rec_Load(EOS(STATIC_2892), i673, i718, i578, i673, i718, i578) :|: i718 <= i578 f2892_0_rec_Load(EOS(STATIC_2892), i673, i718, i578, i673, i718, i578) -> f2935_0_rec_Load(EOS(STATIC_2935), i673, i718, i578, i718, i578, i673) :|: TRUE f2935_0_rec_Load(EOS(STATIC_2935), i673, i718, i578, i718, i578, i673) -> f2954_0_rec_Load(EOS(STATIC_2954), i673, i718, i578, i578, i673, i718) :|: TRUE f2954_0_rec_Load(EOS(STATIC_2954), i673, i718, i578, i578, i673, i718) -> f2957_0_rec_ConstantStackPush(EOS(STATIC_2957), i673, i718, i578, i673, i718, i578) :|: TRUE f2957_0_rec_ConstantStackPush(EOS(STATIC_2957), i673, i718, i578, i673, i718, i578) -> f2961_0_rec_IntArithmetic(EOS(STATIC_2961), i673, i718, i578, i673, i718, i578, 1) :|: TRUE f2961_0_rec_IntArithmetic(EOS(STATIC_2961), i673, i718, i578, i673, i718, i578, matching1) -> f2966_0_rec_InvokeMethod(EOS(STATIC_2966), i673, i718, i578, i673, i718, i578 - 1) :|: TRUE && matching1 = 1 f2966_0_rec_InvokeMethod(EOS(STATIC_2966), i673, i718, i578, i673, i718, i772) -> f2969_0_rec_Load(EOS(STATIC_2969), i673, i718, i772, i673, i718, i772) :|: i673 <= i718 && i718 <= i578 && i772 < i578 f2966_0_rec_InvokeMethod(EOS(STATIC_2966), i673, i718, i578, i673, i718, i772) -> f2969_1_rec_Load(EOS(STATIC_2969), i673, i718, i578, i673, i718, i772) :|: i673 <= i718 && i718 <= i578 && i772 < i578 f2969_0_rec_Load(EOS(STATIC_2969), i673, i718, i772, i673, i718, i772) -> f2976_0_rec_Load(EOS(STATIC_2976), i673, i718, i772, i673, i718, i772) :|: TRUE f2976_0_rec_Load(EOS(STATIC_2976), i673, i718, i772, i673, i718, i772) -> f2830_0_rec_Load(EOS(STATIC_2830), i673, i718, i772, i673, i718, i772) :|: TRUE f2830_0_rec_Load(EOS(STATIC_2830), i673, i718, i578, i673, i718, i578) -> f2832_0_rec_Load(EOS(STATIC_2832), i673, i718, i578, i673, i718, i578, i673) :|: TRUE f2888_0_rec_LE(EOS(STATIC_2888), i673, i718, i578, i673, i718, i578, i718, i578) -> f2933_0_rec_Load(EOS(STATIC_2933), i673, i718, i578, i673, i718, i578) :|: i718 > i578 f2933_0_rec_Load(EOS(STATIC_2933), i673, i718, i578, i673, i718, i578) -> f2952_0_rec_Load(EOS(STATIC_2952), i673, i718, i578, i718, i578, i673) :|: TRUE f2952_0_rec_Load(EOS(STATIC_2952), i673, i718, i578, i718, i578, i673) -> f2955_0_rec_ConstantStackPush(EOS(STATIC_2955), i673, i718, i578, i578, i673, i718) :|: TRUE f2955_0_rec_ConstantStackPush(EOS(STATIC_2955), i673, i718, i578, i578, i673, i718) -> f2958_0_rec_IntArithmetic(EOS(STATIC_2958), i673, i718, i578, i578, i673, i718, 2) :|: TRUE f2958_0_rec_IntArithmetic(EOS(STATIC_2958), i673, i718, i578, i578, i673, i718, matching1) -> f2964_0_rec_Load(EOS(STATIC_2964), i673, i718, i578, i578, i673, i718 - 2) :|: TRUE && matching1 = 2 f2964_0_rec_Load(EOS(STATIC_2964), i673, i718, i578, i578, i673, i771) -> f2968_0_rec_InvokeMethod(EOS(STATIC_2968), i673, i718, i578, i673, i771, i578) :|: TRUE f2968_0_rec_InvokeMethod(EOS(STATIC_2968), i673, i718, i578, i673, i771, i578) -> f2970_0_rec_Load(EOS(STATIC_2970), i673, i771, i578, i673, i771, i578) :|: i673 <= i718 && i718 > i578 && i771 < i718 f2968_0_rec_InvokeMethod(EOS(STATIC_2968), i673, i718, i578, i673, i771, i578) -> f2970_1_rec_Load(EOS(STATIC_2970), i673, i718, i578, i673, i771, i578) :|: i673 <= i718 && i718 > i578 && i771 < i718 f2970_0_rec_Load(EOS(STATIC_2970), i673, i771, i578, i673, i771, i578) -> f2977_0_rec_Load(EOS(STATIC_2977), i673, i771, i578, i673, i771, i578) :|: TRUE f2977_0_rec_Load(EOS(STATIC_2977), i673, i771, i578, i673, i771, i578) -> f2830_0_rec_Load(EOS(STATIC_2830), i673, i771, i578, i673, i771, i578) :|: TRUE f2873_0_rec_LE(EOS(STATIC_2873), i673, i718, i578, i673, i718, i578, i673, i718) -> f2882_0_rec_Load(EOS(STATIC_2882), i673, i718, i578, i673, i718, i578) :|: i673 > i718 f2882_0_rec_Load(EOS(STATIC_2882), i673, i718, i578, i673, i718, i578) -> f2884_0_rec_ConstantStackPush(EOS(STATIC_2884), i673, i718, i578, i718, i578, i673) :|: TRUE f2884_0_rec_ConstantStackPush(EOS(STATIC_2884), i673, i718, i578, i718, i578, i673) -> f2886_0_rec_IntArithmetic(EOS(STATIC_2886), i673, i718, i578, i718, i578, i673, 1) :|: TRUE f2886_0_rec_IntArithmetic(EOS(STATIC_2886), i673, i718, i578, i718, i578, i673, matching1) -> f2889_0_rec_Load(EOS(STATIC_2889), i673, i718, i578, i718, i578, i673 - 1) :|: TRUE && matching1 = 1 f2889_0_rec_Load(EOS(STATIC_2889), i673, i718, i578, i718, i578, i748) -> f2934_0_rec_Load(EOS(STATIC_2934), i673, i718, i578, i578, i748, i718) :|: TRUE f2934_0_rec_Load(EOS(STATIC_2934), i673, i718, i578, i578, i748, i718) -> f2953_0_rec_InvokeMethod(EOS(STATIC_2953), i673, i718, i578, i748, i718, i578) :|: TRUE f2953_0_rec_InvokeMethod(EOS(STATIC_2953), i673, i718, i578, i748, i718, i578) -> f2956_0_rec_Load(EOS(STATIC_2956), i748, i718, i578, i748, i718, i578) :|: i673 > i718 && i748 < i673 && i748 >= i718 f2953_0_rec_InvokeMethod(EOS(STATIC_2953), i673, i718, i578, i748, i718, i578) -> f2956_1_rec_Load(EOS(STATIC_2956), i673, i718, i578, i748, i718, i578) :|: i673 > i718 && i748 < i673 && i748 >= i718 f2956_0_rec_Load(EOS(STATIC_2956), i748, i718, i578, i748, i718, i578) -> f2960_0_rec_Load(EOS(STATIC_2960), i748, i718, i578, i748, i718, i578) :|: TRUE f2960_0_rec_Load(EOS(STATIC_2960), i748, i718, i578, i748, i718, i578) -> f2830_0_rec_Load(EOS(STATIC_2830), i748, i718, i578, i748, i718, i578) :|: TRUE Combined rules. Obtained 6 IRulesP rules: f2832_0_rec_Load(EOS(STATIC_2832), i673:0, i718:0, i578:0, i673:0, i718:0, i578:0, i673:0) -> f2832_0_rec_Load(EOS(STATIC_2832), i673:0, i718:0 - 2, i578:0, i673:0, i718:0 - 2, i578:0, i673:0) :|: i673:0 + i718:0 + 3 * i578:0 >= 0 && i718:0 >= i673:0 && i718:0 > i578:0 && i718:0 - 2 < i718:0 f2832_0_rec_Load(EOS(STATIC_2832), i673:0, i718:0, i578:0, i673:0, i718:0, i578:0, i673:0) -> f2832_0_rec_Load(EOS(STATIC_2832), i673:0, i718:0, i578:0 - 1, i673:0, i718:0, i578:0 - 1, i673:0) :|: i673:0 + i718:0 + 3 * i578:0 >= 0 && i718:0 >= i673:0 && i718:0 <= i578:0 && i578:0 - 1 < i578:0 f2832_0_rec_Load(EOS(STATIC_2832), i673:0, i718:0, i578:0, i673:0, i718:0, i578:0, i673:0) -> f2832_0_rec_Load(EOS(STATIC_2832), i673:0 - 1, i718:0, i578:0, i673:0 - 1, i718:0, i578:0, i673:0 - 1) :|: i673:0 + i718:0 + 3 * i578:0 >= 0 && i718:0 < i673:0 && i673:0 - 1 < i673:0 && i718:0 <= i673:0 - 1 Removed following non-SCC rules: f2832_0_rec_Load(EOS(STATIC_2832), i673:0, i718:0, i578:0, i673:0, i718:0, i578:0, i673:0) -> f2956_1_rec_Load(EOS(STATIC_2956), i673:0, i718:0, i578:0, i673:0 - 1, i718:0, i578:0) :|: i673:0 + i718:0 + 3 * i578:0 >= 0 && i718:0 < i673:0 && i673:0 - 1 < i673:0 && i718:0 <= i673:0 - 1 f2832_0_rec_Load(EOS(STATIC_2832), i673:0, i718:0, i578:0, i673:0, i718:0, i578:0, i673:0) -> f2969_1_rec_Load(EOS(STATIC_2969), i673:0, i718:0, i578:0, i673:0, i718:0, i578:0 - 1) :|: i673:0 + i718:0 + 3 * i578:0 >= 0 && i718:0 >= i673:0 && i718:0 <= i578:0 && i578:0 - 1 < i578:0 f2832_0_rec_Load(EOS(STATIC_2832), i673:0, i718:0, i578:0, i673:0, i718:0, i578:0, i673:0) -> f2970_1_rec_Load(EOS(STATIC_2970), i673:0, i718:0, i578:0, i673:0, i718:0 - 2, i578:0) :|: i673:0 + i718:0 + 3 * i578:0 >= 0 && i718:0 >= i673:0 && i718:0 > i578:0 && i718:0 - 2 < i718:0 Filtered constant ground arguments: f2832_0_rec_Load(x1, x2, x3, x4, x5, x6, x7, x8) -> f2832_0_rec_Load(x2, x3, x4, x5, x6, x7, x8) EOS(x1) -> EOS Filtered duplicate arguments: f2832_0_rec_Load(x1, x2, x3, x4, x5, x6, x7) -> f2832_0_rec_Load(x5, x6, x7) Finished conversion. Obtained 3 rules.P rules: f2832_0_rec_Load(i718:0, i578:0, i673:0) -> f2832_0_rec_Load(i718:0 - 2, i578:0, i673:0) :|: i718:0 >= i673:0 && i673:0 + i718:0 + 3 * i578:0 >= 0 && i718:0 - 2 < i718:0 && i718:0 > i578:0 f2832_0_rec_Load(i718:0, i578:0, i673:0) -> f2832_0_rec_Load(i718:0, i578:0 - 1, i673:0) :|: i718:0 >= i673:0 && i673:0 + i718:0 + 3 * i578:0 >= 0 && i578:0 - 1 < i578:0 && i718:0 <= i578:0 f2832_0_rec_Load(i718:0, i578:0, i673:0) -> f2832_0_rec_Load(i718:0, i578:0, i673:0 - 1) :|: i718:0 < i673:0 && i673:0 + i718:0 + 3 * i578:0 >= 0 && i718:0 <= i673:0 - 1 && i673:0 - 1 < i673:0 ---------------------------------------- (8) Obligation: Rules: f2832_0_rec_Load(i718:0, i578:0, i673:0) -> f2832_0_rec_Load(i718:0 - 2, i578:0, i673:0) :|: i718:0 >= i673:0 && i673:0 + i718:0 + 3 * i578:0 >= 0 && i718:0 - 2 < i718:0 && i718:0 > i578:0 f2832_0_rec_Load(x, x1, x2) -> f2832_0_rec_Load(x, x1 - 1, x2) :|: x >= x2 && x2 + x + 3 * x1 >= 0 && x1 - 1 < x1 && x <= x1 f2832_0_rec_Load(x3, x4, x5) -> f2832_0_rec_Load(x3, x4, x5 - 1) :|: x3 < x5 && x5 + x3 + 3 * x4 >= 0 && x3 <= x5 - 1 && x5 - 1 < x5 ---------------------------------------- (9) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (10) Obligation: Rules: f2832_0_rec_Load(i718:0, i578:0, i673:0) -> f2832_0_rec_Load(arith, i578:0, i673:0) :|: i718:0 >= i673:0 && i673:0 + i718:0 + 3 * i578:0 >= 0 && i718:0 - 2 < i718:0 && i718:0 > i578:0 && arith = i718:0 - 2 f2832_0_rec_Load(x6, x7, x8) -> f2832_0_rec_Load(x6, x9, x8) :|: x6 >= x8 && x8 + x6 + 3 * x7 >= 0 && x7 - 1 < x7 && x6 <= x7 && x9 = x7 - 1 f2832_0_rec_Load(x10, x11, x12) -> f2832_0_rec_Load(x10, x11, x13) :|: x10 < x12 && x12 + x10 + 3 * x11 >= 0 && x10 <= x12 - 1 && x12 - 1 < x12 && x13 = x12 - 1 ---------------------------------------- (11) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2832_0_rec_Load(i718:0, i578:0, i673:0) -> f2832_0_rec_Load(arith, i578:0, i673:0) :|: i718:0 >= i673:0 && i673:0 + i718:0 + 3 * i578:0 >= 0 && i718:0 - 2 < i718:0 && i718:0 > i578:0 && arith = i718:0 - 2 (2) f2832_0_rec_Load(x6, x7, x8) -> f2832_0_rec_Load(x6, x9, x8) :|: x6 >= x8 && x8 + x6 + 3 * x7 >= 0 && x7 - 1 < x7 && x6 <= x7 && x9 = x7 - 1 (3) f2832_0_rec_Load(x10, x11, x12) -> f2832_0_rec_Load(x10, x11, x13) :|: x10 < x12 && x12 + x10 + 3 * x11 >= 0 && x10 <= x12 - 1 && x12 - 1 < x12 && x13 = x12 - 1 Arcs: (1) -> (1), (2), (3) (2) -> (1), (2) (3) -> (1), (2), (3) This digraph is fully evaluated! ---------------------------------------- (12) Obligation: Termination digraph: Nodes: (1) f2832_0_rec_Load(i718:0, i578:0, i673:0) -> f2832_0_rec_Load(arith, i578:0, i673:0) :|: i718:0 >= i673:0 && i673:0 + i718:0 + 3 * i578:0 >= 0 && i718:0 - 2 < i718:0 && i718:0 > i578:0 && arith = i718:0 - 2 (2) f2832_0_rec_Load(x6, x7, x8) -> f2832_0_rec_Load(x6, x9, x8) :|: x6 >= x8 && x8 + x6 + 3 * x7 >= 0 && x7 - 1 < x7 && x6 <= x7 && x9 = x7 - 1 (3) f2832_0_rec_Load(x10, x11, x12) -> f2832_0_rec_Load(x10, x11, x13) :|: x10 < x12 && x12 + x10 + 3 * x11 >= 0 && x10 <= x12 - 1 && x12 - 1 < x12 && x13 = x12 - 1 Arcs: (1) -> (1), (2), (3) (2) -> (1), (2) (3) -> (1), (2), (3) This digraph is fully evaluated! ---------------------------------------- (13) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (14) Obligation: Rules: f2832_0_rec_Load(x6:0, x7:0, x8:0) -> f2832_0_rec_Load(x6:0, x7:0 - 1, x8:0) :|: x7:0 - 1 < x7:0 && x7:0 >= x6:0 && x8:0 + x6:0 + 3 * x7:0 >= 0 && x8:0 <= x6:0 f2832_0_rec_Load(i718:0:0, i578:0:0, i673:0:0) -> f2832_0_rec_Load(i718:0:0 - 2, i578:0:0, i673:0:0) :|: i718:0:0 - 2 < i718:0:0 && i718:0:0 > i578:0:0 && i673:0:0 + i718:0:0 + 3 * i578:0:0 >= 0 && i718:0:0 >= i673:0:0 f2832_0_rec_Load(x10:0, x11:0, x12:0) -> f2832_0_rec_Load(x10:0, x11:0, x12:0 - 1) :|: x12:0 - 1 >= x10:0 && x12:0 - 1 < x12:0 && x12:0 + x10:0 + 3 * x11:0 >= 0 && x12:0 > x10:0 ---------------------------------------- (15) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2832_0_rec_Load(INTEGER, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (16) Obligation: Rules: f2832_0_rec_Load(x6:0, x7:0, x8:0) -> f2832_0_rec_Load(x6:0, c, x8:0) :|: c = x7:0 - 1 && (x7:0 - 1 < x7:0 && x7:0 >= x6:0 && x8:0 + x6:0 + 3 * x7:0 >= 0 && x8:0 <= x6:0) f2832_0_rec_Load(i718:0:0, i578:0:0, i673:0:0) -> f2832_0_rec_Load(c1, i578:0:0, i673:0:0) :|: c1 = i718:0:0 - 2 && (i718:0:0 - 2 < i718:0:0 && i718:0:0 > i578:0:0 && i673:0:0 + i718:0:0 + 3 * i578:0:0 >= 0 && i718:0:0 >= i673:0:0) f2832_0_rec_Load(x10:0, x11:0, x12:0) -> f2832_0_rec_Load(x10:0, x11:0, c2) :|: c2 = x12:0 - 1 && (x12:0 - 1 >= x10:0 && x12:0 - 1 < x12:0 && x12:0 + x10:0 + 3 * x11:0 >= 0 && x12:0 > x10:0) ---------------------------------------- (17) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f2832_0_rec_Load(x, x1, x2)] = x + 3*x1 + x2 The following rules are decreasing: f2832_0_rec_Load(x6:0, x7:0, x8:0) -> f2832_0_rec_Load(x6:0, c, x8:0) :|: c = x7:0 - 1 && (x7:0 - 1 < x7:0 && x7:0 >= x6:0 && x8:0 + x6:0 + 3 * x7:0 >= 0 && x8:0 <= x6:0) f2832_0_rec_Load(i718:0:0, i578:0:0, i673:0:0) -> f2832_0_rec_Load(c1, i578:0:0, i673:0:0) :|: c1 = i718:0:0 - 2 && (i718:0:0 - 2 < i718:0:0 && i718:0:0 > i578:0:0 && i673:0:0 + i718:0:0 + 3 * i578:0:0 >= 0 && i718:0:0 >= i673:0:0) f2832_0_rec_Load(x10:0, x11:0, x12:0) -> f2832_0_rec_Load(x10:0, x11:0, c2) :|: c2 = x12:0 - 1 && (x12:0 - 1 >= x10:0 && x12:0 - 1 < x12:0 && x12:0 + x10:0 + 3 * x11:0 >= 0 && x12:0 > x10:0) The following rules are bounded: f2832_0_rec_Load(x10:0, x11:0, x12:0) -> f2832_0_rec_Load(x10:0, x11:0, c2) :|: c2 = x12:0 - 1 && (x12:0 - 1 >= x10:0 && x12:0 - 1 < x12:0 && x12:0 + x10:0 + 3 * x11:0 >= 0 && x12:0 > x10:0) ---------------------------------------- (18) Obligation: Rules: f2832_0_rec_Load(x6:0, x7:0, x8:0) -> f2832_0_rec_Load(x6:0, c, x8:0) :|: c = x7:0 - 1 && (x7:0 - 1 < x7:0 && x7:0 >= x6:0 && x8:0 + x6:0 + 3 * x7:0 >= 0 && x8:0 <= x6:0) f2832_0_rec_Load(i718:0:0, i578:0:0, i673:0:0) -> f2832_0_rec_Load(c1, i578:0:0, i673:0:0) :|: c1 = i718:0:0 - 2 && (i718:0:0 - 2 < i718:0:0 && i718:0:0 > i578:0:0 && i673:0:0 + i718:0:0 + 3 * i578:0:0 >= 0 && i718:0:0 >= i673:0:0) ---------------------------------------- (19) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f2832_0_rec_Load(x, x1, x2)] = x - x2 The following rules are decreasing: f2832_0_rec_Load(i718:0:0, i578:0:0, i673:0:0) -> f2832_0_rec_Load(c1, i578:0:0, i673:0:0) :|: c1 = i718:0:0 - 2 && (i718:0:0 - 2 < i718:0:0 && i718:0:0 > i578:0:0 && i673:0:0 + i718:0:0 + 3 * i578:0:0 >= 0 && i718:0:0 >= i673:0:0) The following rules are bounded: f2832_0_rec_Load(x6:0, x7:0, x8:0) -> f2832_0_rec_Load(x6:0, c, x8:0) :|: c = x7:0 - 1 && (x7:0 - 1 < x7:0 && x7:0 >= x6:0 && x8:0 + x6:0 + 3 * x7:0 >= 0 && x8:0 <= x6:0) f2832_0_rec_Load(i718:0:0, i578:0:0, i673:0:0) -> f2832_0_rec_Load(c1, i578:0:0, i673:0:0) :|: c1 = i718:0:0 - 2 && (i718:0:0 - 2 < i718:0:0 && i718:0:0 > i578:0:0 && i673:0:0 + i718:0:0 + 3 * i578:0:0 >= 0 && i718:0:0 >= i673:0:0) ---------------------------------------- (20) Obligation: Rules: f2832_0_rec_Load(x6:0, x7:0, x8:0) -> f2832_0_rec_Load(x6:0, c, x8:0) :|: c = x7:0 - 1 && (x7:0 - 1 < x7:0 && x7:0 >= x6:0 && x8:0 + x6:0 + 3 * x7:0 >= 0 && x8:0 <= x6:0) ---------------------------------------- (21) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f2832_0_rec_Load ] = f2832_0_rec_Load_2 + -1*f2832_0_rec_Load_1 The following rules are decreasing: f2832_0_rec_Load(x6:0, x7:0, x8:0) -> f2832_0_rec_Load(x6:0, c, x8:0) :|: c = x7:0 - 1 && (x7:0 - 1 < x7:0 && x7:0 >= x6:0 && x8:0 + x6:0 + 3 * x7:0 >= 0 && x8:0 <= x6:0) The following rules are bounded: f2832_0_rec_Load(x6:0, x7:0, x8:0) -> f2832_0_rec_Load(x6:0, c, x8:0) :|: c = x7:0 - 1 && (x7:0 - 1 < x7:0 && x7:0 >= x6:0 && x8:0 + x6:0 + 3 * x7:0 >= 0 && x8:0 <= x6:0) ---------------------------------------- (22) YES