/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.jar /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox/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, 97 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 931 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) JBCTerminationSCC (7) SCCToIRSProof [SOUND, 216 ms] (8) IRSwT (9) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (10) IRSwT (11) IRSwTTerminationDigraphProof [EQUIVALENT, 38 ms] (12) AND (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 25 ms] (17) IntTRS (18) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (19) YES (20) IRSwT (21) IntTRSCompressionProof [EQUIVALENT, 0 ms] (22) IRSwT (23) IRSwTChainingProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) TempFilterProof [SOUND, 15 ms] (30) IntTRS (31) RankingReductionPairProof [EQUIVALENT, 0 ms] (32) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class Et4 { public static void main(String[] args) { Random.args = args; int a = Random.random(); int b = Random.random(); int c = Random.random(); while ( (b - c >= 1) && (a == c)) { int r = Random.random(); b = 10; c = c + 1 + r; a = c; } } } public class Random { static String[] args; static int index = 0; public static int random() { if (index >= args.length) return 0; String string = args[index]; index++; return string.length(); } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: public class Et4 { public static void main(String[] args) { Random.args = args; int a = Random.random(); int b = Random.random(); int c = Random.random(); while ( (b - c >= 1) && (a == c)) { int r = Random.random(); b = 10; c = c + 1 + r; a = c; } } } public class Random { static String[] args; static int index = 0; public static int random() { if (index >= args.length) return 0; String string = args[index]; index++; return string.length(); } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: Et4.main([Ljava/lang/String;)V: Graph of 467 nodes with 1 SCC. ---------------------------------------- (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: Et4.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *java.lang.String: [count] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (7) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 64 IRulesP rules: f2851_0_main_Load(EOS(STATIC_2851(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1525, i1526) -> f2863_0_main_IntArithmetic(EOS(STATIC_2863(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1525, i1526, i1525) :|: TRUE f2863_0_main_IntArithmetic(EOS(STATIC_2863(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1525, i1526, i1525) -> f2875_0_main_ConstantStackPush(EOS(STATIC_2875(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1525, i1526 - i1525) :|: i1525 >= 0 f2875_0_main_ConstantStackPush(EOS(STATIC_2875(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1525, i1611) -> f2882_0_main_LT(EOS(STATIC_2882(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1525, i1611, 1) :|: TRUE f2882_0_main_LT(EOS(STATIC_2882(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1525, i1667, matching1) -> f2887_0_main_LT(EOS(STATIC_2887(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1525, i1667, 1) :|: TRUE && matching1 = 1 f2887_0_main_LT(EOS(STATIC_2887(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1525, i1667, matching1) -> f2904_0_main_Load(EOS(STATIC_2904(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1525) :|: i1667 >= 1 && matching1 = 1 f2904_0_main_Load(EOS(STATIC_2904(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1525) -> f2909_0_main_Load(EOS(STATIC_2909(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1525) :|: TRUE f2909_0_main_Load(EOS(STATIC_2909(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1525) -> f2917_0_main_NE(EOS(STATIC_2917(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1525, i1525) :|: TRUE f2917_0_main_NE(EOS(STATIC_2917(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1525, i1525) -> f2929_0_main_InvokeMethod(EOS(STATIC_2929(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525) :|: TRUE f2929_0_main_InvokeMethod(EOS(STATIC_2929(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525) -> f2931_0_random_FieldAccess(EOS(STATIC_2931(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525) :|: TRUE f2931_0_random_FieldAccess(EOS(STATIC_2931(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525) -> f2938_0_random_FieldAccess(EOS(STATIC_2938(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1524) :|: TRUE f2938_0_random_FieldAccess(EOS(STATIC_2938(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1524) -> f2941_0_random_ArrayLength(EOS(STATIC_2941(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1524, java.lang.Object(ARRAY(i1523))) :|: TRUE f2941_0_random_ArrayLength(EOS(STATIC_2941(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1524, java.lang.Object(ARRAY(i1523))) -> f2954_0_random_LT(EOS(STATIC_2954(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1524, i1523) :|: i1523 >= 0 f2954_0_random_LT(EOS(STATIC_2954(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1524, i1523) -> f2961_0_random_LT(EOS(STATIC_2961(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1524, i1523) :|: i1524 < i1523 f2954_0_random_LT(EOS(STATIC_2954(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1524, i1523) -> f2962_0_random_LT(EOS(STATIC_2962(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1524, i1523) :|: i1524 >= i1523 f2961_0_random_LT(EOS(STATIC_2961(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1524, i1523) -> f2963_0_random_FieldAccess(EOS(STATIC_2963(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525) :|: i1524 < i1523 f2963_0_random_FieldAccess(EOS(STATIC_2963(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525) -> f2975_0_random_FieldAccess(EOS(STATIC_2975(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, java.lang.Object(ARRAY(i1523))) :|: TRUE f2975_0_random_FieldAccess(EOS(STATIC_2975(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, java.lang.Object(ARRAY(i1523))) -> f2985_0_random_ArrayAccess(EOS(STATIC_2985(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, java.lang.Object(ARRAY(i1523)), i1524) :|: TRUE f2985_0_random_ArrayAccess(EOS(STATIC_2985(java.lang.Object(ARRAY(i1523)), i1813)), java.lang.Object(ARRAY(i1523)), i1525, java.lang.Object(ARRAY(i1523)), i1813) -> f2988_0_random_ArrayAccess(EOS(STATIC_2988(java.lang.Object(ARRAY(i1523)), i1813)), java.lang.Object(ARRAY(i1523)), i1525, java.lang.Object(ARRAY(i1523)), i1813) :|: TRUE f2988_0_random_ArrayAccess(EOS(STATIC_2988(java.lang.Object(ARRAY(i1523)), i1813)), java.lang.Object(ARRAY(i1523)), i1525, java.lang.Object(ARRAY(i1523)), i1813) -> f2995_0_random_ArrayAccess(EOS(STATIC_2995(java.lang.Object(ARRAY(i1523)), i1813)), java.lang.Object(ARRAY(i1523)), i1525, java.lang.Object(ARRAY(i1523)), i1813) :|: TRUE f2995_0_random_ArrayAccess(EOS(STATIC_2995(java.lang.Object(ARRAY(i1523)), i1813)), java.lang.Object(ARRAY(i1523)), i1525, java.lang.Object(ARRAY(i1523)), i1813) -> f3003_0_random_Store(EOS(STATIC_3003(java.lang.Object(ARRAY(i1523)), i1813)), java.lang.Object(ARRAY(i1523)), i1525, o228) :|: TRUE f3003_0_random_Store(EOS(STATIC_3003(java.lang.Object(ARRAY(i1523)), i1813)), java.lang.Object(ARRAY(i1523)), i1525, o228) -> f3018_0_random_FieldAccess(EOS(STATIC_3018(java.lang.Object(ARRAY(i1523)), i1813)), java.lang.Object(ARRAY(i1523)), i1525, o228) :|: TRUE f3018_0_random_FieldAccess(EOS(STATIC_3018(java.lang.Object(ARRAY(i1523)), i1813)), java.lang.Object(ARRAY(i1523)), i1525, o228) -> f3027_0_random_ConstantStackPush(EOS(STATIC_3027(java.lang.Object(ARRAY(i1523)), i1813)), java.lang.Object(ARRAY(i1523)), i1525, o228, i1813) :|: TRUE f3027_0_random_ConstantStackPush(EOS(STATIC_3027(java.lang.Object(ARRAY(i1523)), i1813)), java.lang.Object(ARRAY(i1523)), i1525, o228, i1813) -> f3037_0_random_IntArithmetic(EOS(STATIC_3037(java.lang.Object(ARRAY(i1523)), i1813)), java.lang.Object(ARRAY(i1523)), i1525, o228, i1813, 1) :|: TRUE f3037_0_random_IntArithmetic(EOS(STATIC_3037(java.lang.Object(ARRAY(i1523)), i1813)), java.lang.Object(ARRAY(i1523)), i1525, o228, i1813, matching1) -> f3045_0_random_FieldAccess(EOS(STATIC_3045(java.lang.Object(ARRAY(i1523)), i1813)), java.lang.Object(ARRAY(i1523)), i1525, o228, i1813 + 1) :|: i1813 >= 0 && matching1 = 1 f3045_0_random_FieldAccess(EOS(STATIC_3045(java.lang.Object(ARRAY(i1523)), i1813)), java.lang.Object(ARRAY(i1523)), i1525, o228, i1858) -> f3048_0_random_Load(EOS(STATIC_3048(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, o228) :|: TRUE f3048_0_random_Load(EOS(STATIC_3048(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, o228) -> f3065_0_random_InvokeMethod(EOS(STATIC_3065(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, o228) :|: TRUE f3065_0_random_InvokeMethod(EOS(STATIC_3065(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, java.lang.Object(o268sub)) -> f3078_0_random_InvokeMethod(EOS(STATIC_3078(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, java.lang.Object(o268sub)) :|: TRUE f3078_0_random_InvokeMethod(EOS(STATIC_3078(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, java.lang.Object(o269sub)) -> f3082_0_random_InvokeMethod(EOS(STATIC_3082(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, java.lang.Object(o269sub)) :|: TRUE f3082_0_random_InvokeMethod(EOS(STATIC_3082(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, java.lang.Object(o269sub)) -> f3086_0_length_Load(EOS(STATIC_3086(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, java.lang.Object(o269sub)) :|: TRUE f3086_0_length_Load(EOS(STATIC_3086(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, java.lang.Object(o269sub)) -> f3092_0_length_FieldAccess(EOS(STATIC_3092(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, java.lang.Object(o269sub)) :|: TRUE f3092_0_length_FieldAccess(EOS(STATIC_3092(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, java.lang.Object(java.lang.String(EOC, i1972))) -> f3095_0_length_FieldAccess(EOS(STATIC_3095(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, java.lang.Object(java.lang.String(EOC, i1972))) :|: i1972 >= 0 f3095_0_length_FieldAccess(EOS(STATIC_3095(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, java.lang.Object(java.lang.String(EOC, i1972))) -> f3098_0_length_Return(EOS(STATIC_3098(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, i1972) :|: TRUE f3098_0_length_Return(EOS(STATIC_3098(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, i1972) -> f3117_0_random_Return(EOS(STATIC_3117(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, i1972) :|: TRUE f3117_0_random_Return(EOS(STATIC_3117(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, i1972) -> f3138_0_main_Store(EOS(STATIC_3138(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, i1972) :|: TRUE f3138_0_main_Store(EOS(STATIC_3138(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, i1972) -> f3146_0_main_ConstantStackPush(EOS(STATIC_3146(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, i1972) :|: TRUE f3146_0_main_ConstantStackPush(EOS(STATIC_3146(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, i1972) -> f3169_0_main_Store(EOS(STATIC_3169(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, i1972, 10) :|: TRUE f3169_0_main_Store(EOS(STATIC_3169(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i1525, i1972, matching1) -> f3173_0_main_Load(EOS(STATIC_3173(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), 10, i1525, i1972) :|: TRUE && matching1 = 10 f3173_0_main_Load(EOS(STATIC_3173(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), matching1, i1525, i1972) -> f3189_0_main_ConstantStackPush(EOS(STATIC_3189(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), 10, i1972, i1525) :|: TRUE && matching1 = 10 f3189_0_main_ConstantStackPush(EOS(STATIC_3189(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), matching1, i1972, i1525) -> f3212_0_main_IntArithmetic(EOS(STATIC_3212(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), 10, i1972, i1525, 1) :|: TRUE && matching1 = 10 f3212_0_main_IntArithmetic(EOS(STATIC_3212(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), matching1, i1972, i1525, matching2) -> f3229_0_main_Load(EOS(STATIC_3229(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), 10, i1972, i1525 + 1) :|: i1525 >= 0 && matching1 = 10 && matching2 = 1 f3229_0_main_Load(EOS(STATIC_3229(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), matching1, i1972, i2218) -> f3246_0_main_IntArithmetic(EOS(STATIC_3246(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), 10, i2218, i1972) :|: TRUE && matching1 = 10 f3246_0_main_IntArithmetic(EOS(STATIC_3246(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), matching1, i2218, i1972) -> f3260_0_main_Store(EOS(STATIC_3260(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), 10, i2218 + i1972) :|: i2218 > 0 && i1972 >= 0 && matching1 = 10 f3260_0_main_Store(EOS(STATIC_3260(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), matching1, i2283) -> f3287_0_main_Load(EOS(STATIC_3287(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), 10, i2283) :|: TRUE && matching1 = 10 f3287_0_main_Load(EOS(STATIC_3287(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), matching1, i2283) -> f3291_0_main_Store(EOS(STATIC_3291(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), 10, i2283, i2283) :|: TRUE && matching1 = 10 f3291_0_main_Store(EOS(STATIC_3291(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), matching1, i2283, i2283) -> f3295_0_main_JMP(EOS(STATIC_3295(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i2283, 10, i2283) :|: TRUE && matching1 = 10 f3295_0_main_JMP(EOS(STATIC_3295(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i2283, matching1, i2283) -> f3302_0_main_Load(EOS(STATIC_3302(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i2283, 10, i2283) :|: TRUE && matching1 = 10 f3302_0_main_Load(EOS(STATIC_3302(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i2283, matching1, i2283) -> f2847_0_main_Load(EOS(STATIC_2847(java.lang.Object(ARRAY(i1523)), i1858)), java.lang.Object(ARRAY(i1523)), i2283, 10, i2283) :|: TRUE && matching1 = 10 f2847_0_main_Load(EOS(STATIC_2847(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1526, i1525) -> f2851_0_main_Load(EOS(STATIC_2851(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1525, i1526) :|: TRUE f2962_0_random_LT(EOS(STATIC_2962(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, i1524, i1523) -> f2971_0_random_ConstantStackPush(EOS(STATIC_2971(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525) :|: i1524 >= i1523 f2971_0_random_ConstantStackPush(EOS(STATIC_2971(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525) -> f2981_0_random_Return(EOS(STATIC_2981(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, 0) :|: TRUE f2981_0_random_Return(EOS(STATIC_2981(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, matching1) -> f2986_0_main_Store(EOS(STATIC_2986(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, 0) :|: TRUE && matching1 = 0 f2986_0_main_Store(EOS(STATIC_2986(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, matching1) -> f2989_0_main_ConstantStackPush(EOS(STATIC_2989(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, 0) :|: TRUE && matching1 = 0 f2989_0_main_ConstantStackPush(EOS(STATIC_2989(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, matching1) -> f2999_0_main_Store(EOS(STATIC_2999(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, 0, 10) :|: TRUE && matching1 = 0 f2999_0_main_Store(EOS(STATIC_2999(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1525, matching1, matching2) -> f3008_0_main_Load(EOS(STATIC_3008(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), 10, i1525, 0) :|: TRUE && matching1 = 0 && matching2 = 10 f3008_0_main_Load(EOS(STATIC_3008(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), matching1, i1525, matching2) -> f3021_0_main_ConstantStackPush(EOS(STATIC_3021(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), 10, 0, i1525) :|: TRUE && matching1 = 10 && matching2 = 0 f3021_0_main_ConstantStackPush(EOS(STATIC_3021(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), matching1, matching2, i1525) -> f3033_0_main_IntArithmetic(EOS(STATIC_3033(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), 10, 0, i1525, 1) :|: TRUE && matching1 = 10 && matching2 = 0 f3033_0_main_IntArithmetic(EOS(STATIC_3033(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), matching1, matching2, i1525, matching3) -> f3039_0_main_Load(EOS(STATIC_3039(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), 10, 0, i1525 + 1) :|: i1525 >= 0 && matching1 = 10 && matching2 = 0 && matching3 = 1 f3039_0_main_Load(EOS(STATIC_3039(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), matching1, matching2, i1852) -> f3046_0_main_IntArithmetic(EOS(STATIC_3046(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), 10, i1852, 0) :|: TRUE && matching1 = 10 && matching2 = 0 f3046_0_main_IntArithmetic(EOS(STATIC_3046(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), matching1, i1852, matching2) -> f3055_0_main_Store(EOS(STATIC_3055(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), 10, i1852 + 0) :|: i1852 > 0 && matching1 = 10 && matching2 = 0 f3055_0_main_Store(EOS(STATIC_3055(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), matching1, i1852) -> f3070_0_main_Load(EOS(STATIC_3070(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), 10, i1852) :|: TRUE && matching1 = 10 f3070_0_main_Load(EOS(STATIC_3070(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), matching1, i1852) -> f3080_0_main_Store(EOS(STATIC_3080(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), 10, i1852, i1852) :|: TRUE && matching1 = 10 f3080_0_main_Store(EOS(STATIC_3080(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), matching1, i1852, i1852) -> f3085_0_main_JMP(EOS(STATIC_3085(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1852, 10, i1852) :|: TRUE && matching1 = 10 f3085_0_main_JMP(EOS(STATIC_3085(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1852, matching1, i1852) -> f3088_0_main_Load(EOS(STATIC_3088(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1852, 10, i1852) :|: TRUE && matching1 = 10 f3088_0_main_Load(EOS(STATIC_3088(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1852, matching1, i1852) -> f2847_0_main_Load(EOS(STATIC_2847(java.lang.Object(ARRAY(i1523)), i1524)), java.lang.Object(ARRAY(i1523)), i1852, 10, i1852) :|: TRUE && matching1 = 10 Combined rules. Obtained 2 IRulesP rules: f2851_0_main_Load(EOS(STATIC_2851(java.lang.Object(ARRAY(i1523:0)), i1524:0)), java.lang.Object(ARRAY(i1523:0)), i1525:0, i1525:0, i1526:0) -> f2851_0_main_Load(EOS(STATIC_2851(java.lang.Object(ARRAY(i1523:0)), i1524:0 + 1)), java.lang.Object(ARRAY(i1523:0)), i1525:0 + 1 + i1972:0, i1525:0 + 1 + i1972:0, 10) :|: i1525:0 > -1 && i1526:0 - i1525:0 >= 1 && i1523:0 > -1 && i1524:0 < i1523:0 && i1524:0 > -1 && i1972:0 > -1 f2851_0_main_Load(EOS(STATIC_2851(java.lang.Object(ARRAY(i1523:0)), i1524:0)), java.lang.Object(ARRAY(i1523:0)), i1525:0, i1525:0, i1526:0) -> f2851_0_main_Load(EOS(STATIC_2851(java.lang.Object(ARRAY(i1523:0)), i1524:0)), java.lang.Object(ARRAY(i1523:0)), i1525:0 + 1, i1525:0 + 1, 10) :|: i1525:0 > -1 && i1526:0 - i1525:0 >= 1 && i1523:0 > -1 && i1524:0 >= i1523:0 Filtered duplicate arguments: f2851_0_main_Load(x1, x2, x3, x4, x5) -> f2851_0_main_Load(x1, x2, x4, x5) Finished conversion. Obtained 2 rules.P rules: f2851_0_main_Load(java.lang.Object(ARRAY(i1523:0)), i1525:0, i1526:0, i1523:0, i1524:0, i1523:0) -> f2851_0_main_Load(java.lang.Object(ARRAY(i1523:0)), i1525:0 + 1 + i1972:0, 10, i1523:0, i1524:0 + 1, i1523:0) :|: i1526:0 - i1525:0 >= 1 && i1525:0 > -1 && i1523:0 > -1 && i1524:0 < i1523:0 && i1972:0 > -1 && i1524:0 > -1 f2851_0_main_Load(java.lang.Object(ARRAY(i1523:0)), i1525:0, i1526:0, i1523:0, i1524:0, i1523:0) -> f2851_0_main_Load(java.lang.Object(ARRAY(i1523:0)), i1525:0 + 1, 10, i1523:0, i1524:0, i1523:0) :|: i1526:0 - i1525:0 >= 1 && i1525:0 > -1 && i1524:0 >= i1523:0 && i1523:0 > -1 ---------------------------------------- (8) Obligation: Rules: f2851_0_main_Load(java.lang.Object(ARRAY(i1523:0)), i1525:0, i1526:0, i1523:0, i1524:0, i1523:0) -> f2851_0_main_Load(java.lang.Object(ARRAY(i1523:0)), i1525:0 + 1 + i1972:0, 10, i1523:0, i1524:0 + 1, i1523:0) :|: i1526:0 - i1525:0 >= 1 && i1525:0 > -1 && i1523:0 > -1 && i1524:0 < i1523:0 && i1972:0 > -1 && i1524:0 > -1 f2851_0_main_Load(java.lang.Object(ARRAY(x)), x1, x2, x, x3, x) -> f2851_0_main_Load(java.lang.Object(ARRAY(x)), x1 + 1, 10, x, x3, x) :|: x2 - x1 >= 1 && x1 > -1 && x3 >= x && x > -1 ---------------------------------------- (9) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (10) Obligation: Rules: f2851_0_main_Load(java.lang.Object(ARRAY(i1523:0)), i1525:0, i1526:0, i1523:0, i1524:0, i1523:0) -> f2851_0_main_Load(java.lang.Object(ARRAY(i1523:0)), arith, 10, i1523:0, arith1, i1523:0) :|: i1526:0 - i1525:0 >= 1 && i1525:0 > -1 && i1523:0 > -1 && i1524:0 < i1523:0 && i1972:0 > -1 && i1524:0 > -1 && arith = i1525:0 + 1 + i1972:0 && arith1 = i1524:0 + 1 f2851_0_main_Load(java.lang.Object(ARRAY(x4)), x5, x6, x4, x7, x4) -> f2851_0_main_Load(java.lang.Object(ARRAY(x4)), x8, 10, x4, x7, x4) :|: x6 - x5 >= 1 && x5 > -1 && x7 >= x4 && x4 > -1 && x8 = x5 + 1 ---------------------------------------- (11) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2851_0_main_Load(java.lang.Object(ARRAY(i1523:0)), i1525:0, i1526:0, i1523:0, i1524:0, i1523:0) -> f2851_0_main_Load(java.lang.Object(ARRAY(i1523:0)), arith, 10, i1523:0, arith1, i1523:0) :|: i1526:0 - i1525:0 >= 1 && i1525:0 > -1 && i1523:0 > -1 && i1524:0 < i1523:0 && i1972:0 > -1 && i1524:0 > -1 && arith = i1525:0 + 1 + i1972:0 && arith1 = i1524:0 + 1 (2) f2851_0_main_Load(java.lang.Object(ARRAY(x4)), x5, x6, x4, x7, x4) -> f2851_0_main_Load(java.lang.Object(ARRAY(x4)), x8, 10, x4, x7, x4) :|: x6 - x5 >= 1 && x5 > -1 && x7 >= x4 && x4 > -1 && x8 = x5 + 1 Arcs: (1) -> (1), (2) (2) -> (2) This digraph is fully evaluated! ---------------------------------------- (12) Complex Obligation (AND) ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f2851_0_main_Load(java.lang.Object(ARRAY(i1523:0)), i1525:0, i1526:0, i1523:0, i1524:0, i1523:0) -> f2851_0_main_Load(java.lang.Object(ARRAY(i1523:0)), arith, 10, i1523:0, arith1, i1523:0) :|: i1526:0 - i1525:0 >= 1 && i1525:0 > -1 && i1523:0 > -1 && i1524:0 < i1523:0 && i1972:0 > -1 && i1524:0 > -1 && arith = i1525:0 + 1 + i1972:0 && arith1 = i1524:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f2851_0_main_Load(java.lang.Object(ARRAY(i1523:0:0)), i1525:0:0, i1526:0:0, i1523:0:0, i1524:0:0, i1523:0:0) -> f2851_0_main_Load(java.lang.Object(ARRAY(i1523:0:0)), i1525:0:0 + 1 + i1972:0:0, 10, i1523:0:0, i1524:0:0 + 1, i1523:0:0) :|: i1972:0:0 > -1 && i1524:0:0 > -1 && i1524:0:0 < i1523:0:0 && i1523:0:0 > -1 && i1525:0:0 > -1 && i1526:0:0 - i1525:0:0 >= 1 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2851_0_main_Load(VARIABLE, INTEGER, VARIABLE, INTEGER, INTEGER, INTEGER) java.lang.Object(VARIABLE) ARRAY(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f2851_0_main_Load(c, i1525:0:0, i1526:0:0, i1523:0:0, i1524:0:0, i1523:0:0) -> f2851_0_main_Load(c1, c2, c3, i1523:0:0, c4, i1523:0:0) :|: c4 = i1524:0:0 + 1 && (c3 = 10 && (c2 = i1525:0:0 + 1 + i1972:0:0 && (c1 = 0 && c = 0))) && (i1972:0:0 > -1 && i1524:0:0 > -1 && i1524:0:0 < i1523:0:0 && i1523:0:0 > -1 && i1525:0:0 > -1 && i1526:0:0 - i1525:0:0 >= 1) ---------------------------------------- (18) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f2851_0_main_Load(x, x1, x2, x3, x4, x5)] = c*x - x4 + x5 The following rules are decreasing: f2851_0_main_Load(c, i1525:0:0, i1526:0:0, i1523:0:0, i1524:0:0, i1523:0:0) -> f2851_0_main_Load(c1, c2, c3, i1523:0:0, c4, i1523:0:0) :|: c4 = i1524:0:0 + 1 && (c3 = 10 && (c2 = i1525:0:0 + 1 + i1972:0:0 && (c1 = 0 && c = 0))) && (i1972:0:0 > -1 && i1524:0:0 > -1 && i1524:0:0 < i1523:0:0 && i1523:0:0 > -1 && i1525:0:0 > -1 && i1526:0:0 - i1525:0:0 >= 1) The following rules are bounded: f2851_0_main_Load(c, i1525:0:0, i1526:0:0, i1523:0:0, i1524:0:0, i1523:0:0) -> f2851_0_main_Load(c1, c2, c3, i1523:0:0, c4, i1523:0:0) :|: c4 = i1524:0:0 + 1 && (c3 = 10 && (c2 = i1525:0:0 + 1 + i1972:0:0 && (c1 = 0 && c = 0))) && (i1972:0:0 > -1 && i1524:0:0 > -1 && i1524:0:0 < i1523:0:0 && i1523:0:0 > -1 && i1525:0:0 > -1 && i1526:0:0 - i1525:0:0 >= 1) ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: Termination digraph: Nodes: (1) f2851_0_main_Load(java.lang.Object(ARRAY(x4)), x5, x6, x4, x7, x4) -> f2851_0_main_Load(java.lang.Object(ARRAY(x4)), x8, 10, x4, x7, x4) :|: x6 - x5 >= 1 && x5 > -1 && x7 >= x4 && x4 > -1 && x8 = x5 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (21) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (22) Obligation: Rules: f2851_0_main_Load(java.lang.Object(ARRAY(x4:0)), x5:0, x6:0, x4:0, x7:0, x4:0) -> f2851_0_main_Load(java.lang.Object(ARRAY(x4:0)), x5:0 + 1, 10, x4:0, x7:0, x4:0) :|: x7:0 >= x4:0 && x4:0 > -1 && x5:0 > -1 && x6:0 - x5:0 >= 1 ---------------------------------------- (23) IRSwTChainingProof (EQUIVALENT) Chaining! ---------------------------------------- (24) Obligation: Rules: f2851_0_main_Load(java.lang.Object(ARRAY(x)), x1, x2, x, x3, x) -> f2851_0_main_Load(java.lang.Object(ARRAY(x)), x1 + 2, 10, x, x3, x) :|: TRUE && x3 + -1 * x >= 0 && x >= 0 && x1 >= 0 && x2 + -1 * x1 >= 1 && -1 * x1 >= -8 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2851_0_main_Load(java.lang.Object(ARRAY(x)), x1, x2, x, x3, x) -> f2851_0_main_Load(java.lang.Object(ARRAY(x)), x1 + 2, 10, x, x3, x) :|: TRUE && x3 + -1 * x >= 0 && x >= 0 && x1 >= 0 && x2 + -1 * x1 >= 1 && -1 * x1 >= -8 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f2851_0_main_Load(java.lang.Object(ARRAY(x)), x1, x2, x, x3, x) -> f2851_0_main_Load(java.lang.Object(ARRAY(x)), x1 + 2, 10, x, x3, x) :|: TRUE && x3 + -1 * x >= 0 && x >= 0 && x1 >= 0 && x2 + -1 * x1 >= 1 && -1 * x1 >= -8 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f2851_0_main_Load(java.lang.Object(ARRAY(x:0)), x1:0, x2:0, x:0, x3:0, x:0) -> f2851_0_main_Load(java.lang.Object(ARRAY(x:0)), x1:0 + 2, 10, x:0, x3:0, x:0) :|: x2:0 + -1 * x1:0 >= 1 && -8 <= -1 * x1:0 && x1:0 > -1 && x3:0 + -1 * x:0 >= 0 && x:0 > -1 ---------------------------------------- (29) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2851_0_main_Load(VARIABLE, INTEGER, VARIABLE, INTEGER, INTEGER, INTEGER) java.lang.Object(VARIABLE) ARRAY(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (30) Obligation: Rules: f2851_0_main_Load(c, x1:0, x2:0, x:0, x3:0, x:0) -> f2851_0_main_Load(c1, c2, c3, x:0, x3:0, x:0) :|: c3 = 10 && (c2 = x1:0 + 2 && (c1 = 0 && c = 0)) && (x2:0 + -1 * x1:0 >= 1 && -8 <= -1 * x1:0 && x1:0 > -1 && x3:0 + -1 * x:0 >= 0 && x:0 > -1) ---------------------------------------- (31) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f2851_0_main_Load ] = -1/2*f2851_0_main_Load_2 The following rules are decreasing: f2851_0_main_Load(c, x1:0, x2:0, x:0, x3:0, x:0) -> f2851_0_main_Load(c1, c2, c3, x:0, x3:0, x:0) :|: c3 = 10 && (c2 = x1:0 + 2 && (c1 = 0 && c = 0)) && (x2:0 + -1 * x1:0 >= 1 && -8 <= -1 * x1:0 && x1:0 > -1 && x3:0 + -1 * x:0 >= 0 && x:0 > -1) The following rules are bounded: f2851_0_main_Load(c, x1:0, x2:0, x:0, x3:0, x:0) -> f2851_0_main_Load(c1, c2, c3, x:0, x3:0, x:0) :|: c3 = 10 && (c2 = x1:0 + 2 && (c1 = 0 && c = 0)) && (x2:0 + -1 * x1:0 >= 1 && -8 <= -1 * x1:0 && x1:0 > -1 && x3:0 + -1 * x:0 >= 0 && x:0 > -1) ---------------------------------------- (32) YES