6.96/3.47 YES 6.96/3.48 proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar 6.96/3.48 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 6.96/3.48 6.96/3.48 6.96/3.48 termination of the given Bare JBC problem could be proven: 6.96/3.48 6.96/3.48 (0) Bare JBC problem 6.96/3.48 (1) BareJBCToJBCProof [EQUIVALENT, 120 ms] 6.96/3.48 (2) JBC problem 6.96/3.48 (3) JBCToGraph [EQUIVALENT, 382 ms] 6.96/3.48 (4) JBCTerminationGraph 6.96/3.48 (5) TerminationGraphToSCCProof [SOUND, 0 ms] 6.96/3.48 (6) JBCTerminationSCC 6.96/3.48 (7) SCCToIRSProof [SOUND, 237 ms] 6.96/3.48 (8) IRSwT 6.96/3.48 (9) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 6.96/3.48 (10) IRSwT 6.96/3.48 (11) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] 6.96/3.48 (12) IRSwT 6.96/3.48 (13) IntTRSCompressionProof [EQUIVALENT, 0 ms] 6.96/3.48 (14) IRSwT 6.96/3.48 (15) TempFilterProof [SOUND, 38 ms] 6.96/3.48 (16) IntTRS 6.96/3.48 (17) RankingReductionPairProof [EQUIVALENT, 26 ms] 6.96/3.48 (18) YES 6.96/3.48 6.96/3.48 6.96/3.48 ---------------------------------------- 6.96/3.48 6.96/3.48 (0) 6.96/3.48 Obligation: 6.96/3.48 need to prove termination of the following program: 6.96/3.48 /** 6.96/3.48 * Example taken from "A Term Rewriting Approach to the Automated Termination 6.96/3.48 * Analysis of Imperative Programs" (http://www.cs.unm.edu/~spf/papers/2009-02.pdf) 6.96/3.48 * and converted to Java. 6.96/3.48 */ 6.96/3.48 6.96/3.48 public class PastaC10 { 6.96/3.48 public static void main(String[] args) { 6.96/3.48 Random.args = args; 6.96/3.48 int i = Random.random(); 6.96/3.48 int j = Random.random(); 6.96/3.48 6.96/3.48 while (i - j >= 1) { 6.96/3.48 i = i - Random.random(); 6.96/3.48 int r = Random.random() + 1; 6.96/3.48 j = j + r; 6.96/3.48 } 6.96/3.48 } 6.96/3.48 } 6.96/3.48 6.96/3.48 6.96/3.48 public class Random { 6.96/3.48 static String[] args; 6.96/3.48 static int index = 0; 6.96/3.48 6.96/3.48 public static int random() { 6.96/3.48 String string = args[index]; 6.96/3.48 index++; 6.96/3.48 return string.length(); 6.96/3.48 } 6.96/3.48 } 6.96/3.48 6.96/3.48 6.96/3.48 6.96/3.48 ---------------------------------------- 6.96/3.48 6.96/3.48 (1) BareJBCToJBCProof (EQUIVALENT) 6.96/3.48 initialized classpath 6.96/3.48 ---------------------------------------- 6.96/3.48 6.96/3.48 (2) 6.96/3.48 Obligation: 6.96/3.48 need to prove termination of the following program: 6.96/3.48 /** 6.96/3.48 * Example taken from "A Term Rewriting Approach to the Automated Termination 6.96/3.48 * Analysis of Imperative Programs" (http://www.cs.unm.edu/~spf/papers/2009-02.pdf) 6.96/3.48 * and converted to Java. 6.96/3.48 */ 6.96/3.48 6.96/3.48 public class PastaC10 { 6.96/3.48 public static void main(String[] args) { 6.96/3.48 Random.args = args; 6.96/3.48 int i = Random.random(); 6.96/3.49 int j = Random.random(); 6.96/3.49 6.96/3.49 while (i - j >= 1) { 6.96/3.49 i = i - Random.random(); 6.96/3.49 int r = Random.random() + 1; 6.96/3.49 j = j + r; 6.96/3.49 } 6.96/3.49 } 6.96/3.49 } 6.96/3.49 6.96/3.49 6.96/3.49 public class Random { 6.96/3.49 static String[] args; 6.96/3.49 static int index = 0; 6.96/3.49 6.96/3.49 public static int random() { 6.96/3.49 String string = args[index]; 6.96/3.49 index++; 6.96/3.49 return string.length(); 6.96/3.49 } 6.96/3.49 } 6.96/3.49 6.96/3.49 6.96/3.49 6.96/3.49 ---------------------------------------- 6.96/3.49 6.96/3.49 (3) JBCToGraph (EQUIVALENT) 6.96/3.49 Constructed TerminationGraph. 6.96/3.49 ---------------------------------------- 6.96/3.49 6.96/3.49 (4) 6.96/3.49 Obligation: 6.96/3.49 Termination Graph based on JBC Program: 6.96/3.49 PastaC10.main([Ljava/lang/String;)V: Graph of 318 nodes with 1 SCC. 6.96/3.49 6.96/3.49 6.96/3.49 6.96/3.49 6.96/3.49 6.96/3.49 ---------------------------------------- 6.96/3.49 6.96/3.49 (5) TerminationGraphToSCCProof (SOUND) 6.96/3.49 Splitted TerminationGraph to 1 SCCs. 6.96/3.49 ---------------------------------------- 6.96/3.49 6.96/3.49 (6) 6.96/3.49 Obligation: 6.96/3.49 SCC of termination graph based on JBC Program. 6.96/3.49 SCC contains nodes from the following methods: PastaC10.main([Ljava/lang/String;)V 6.96/3.49 SCC calls the following helper methods: 6.96/3.49 Performed SCC analyses: 6.96/3.49 *Used field analysis yielded the following read fields: 6.96/3.49 *java.lang.String: [count] 6.96/3.49 *Marker field analysis yielded the following relations that could be markers: 6.96/3.49 6.96/3.49 ---------------------------------------- 6.96/3.49 6.96/3.49 (7) SCCToIRSProof (SOUND) 6.96/3.49 Transformed FIGraph SCCs to intTRSs. Log: 6.96/3.49 Generated rules. Obtained 56 IRulesP rules: 6.96/3.49 f846_0_main_Load(EOS(STATIC_846(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i149, i150, i149) -> f849_0_main_IntArithmetic(EOS(STATIC_849(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i149, i150, i149, i150) :|: TRUE 6.96/3.49 f849_0_main_IntArithmetic(EOS(STATIC_849(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i149, i150, i149, i150) -> f850_0_main_ConstantStackPush(EOS(STATIC_850(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i149, i150, i149 - i150) :|: i150 >= 0 6.96/3.49 f850_0_main_ConstantStackPush(EOS(STATIC_850(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i149, i150, i156) -> f851_0_main_LT(EOS(STATIC_851(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i149, i150, i156, 1) :|: TRUE 6.96/3.49 f851_0_main_LT(EOS(STATIC_851(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i149, i150, i159, matching1) -> f861_0_main_LT(EOS(STATIC_861(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i149, i150, i159, 1) :|: TRUE && matching1 = 1 6.96/3.49 f861_0_main_LT(EOS(STATIC_861(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i149, i150, i159, matching1) -> f882_0_main_Load(EOS(STATIC_882(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i149, i150) :|: i159 >= 1 && matching1 = 1 6.96/3.49 f882_0_main_Load(EOS(STATIC_882(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i149, i150) -> f886_0_main_InvokeMethod(EOS(STATIC_886(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149) :|: TRUE 6.96/3.49 f886_0_main_InvokeMethod(EOS(STATIC_886(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149) -> f888_0_random_FieldAccess(EOS(STATIC_888(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149) :|: TRUE 6.96/3.49 f888_0_random_FieldAccess(EOS(STATIC_888(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149) -> f892_0_random_FieldAccess(EOS(STATIC_892(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, java.lang.Object(ARRAY(i4))) :|: TRUE 6.96/3.49 f892_0_random_FieldAccess(EOS(STATIC_892(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, java.lang.Object(ARRAY(i4))) -> f899_0_random_ArrayAccess(EOS(STATIC_899(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, java.lang.Object(ARRAY(i4))) :|: TRUE 6.96/3.49 f899_0_random_ArrayAccess(EOS(STATIC_899(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, java.lang.Object(ARRAY(i4))) -> f901_0_random_ArrayAccess(EOS(STATIC_901(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, java.lang.Object(ARRAY(i4))) :|: TRUE 6.96/3.49 f901_0_random_ArrayAccess(EOS(STATIC_901(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, java.lang.Object(ARRAY(i4))) -> f906_0_random_Store(EOS(STATIC_906(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, o132) :|: TRUE 6.96/3.49 f906_0_random_Store(EOS(STATIC_906(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, o132) -> f911_0_random_FieldAccess(EOS(STATIC_911(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, o132) :|: TRUE 6.96/3.49 f911_0_random_FieldAccess(EOS(STATIC_911(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, o132) -> f912_0_random_ConstantStackPush(EOS(STATIC_912(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, o132) :|: TRUE 6.96/3.49 f912_0_random_ConstantStackPush(EOS(STATIC_912(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, o132) -> f920_0_random_IntArithmetic(EOS(STATIC_920(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, o132) :|: TRUE 6.96/3.49 f920_0_random_IntArithmetic(EOS(STATIC_920(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, o132) -> f926_0_random_FieldAccess(EOS(STATIC_926(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, o132) :|: TRUE 6.96/3.49 f926_0_random_FieldAccess(EOS(STATIC_926(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, o132) -> f930_0_random_Load(EOS(STATIC_930(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, o132) :|: TRUE 6.96/3.49 f930_0_random_Load(EOS(STATIC_930(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, o132) -> f938_0_random_InvokeMethod(EOS(STATIC_938(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, o132) :|: TRUE 6.96/3.49 f938_0_random_InvokeMethod(EOS(STATIC_938(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, java.lang.Object(o139sub)) -> f943_0_random_InvokeMethod(EOS(STATIC_943(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, java.lang.Object(o139sub)) :|: TRUE 6.96/3.49 f943_0_random_InvokeMethod(EOS(STATIC_943(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, java.lang.Object(o140sub)) -> f947_0_random_InvokeMethod(EOS(STATIC_947(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, java.lang.Object(o140sub)) :|: TRUE 6.96/3.49 f947_0_random_InvokeMethod(EOS(STATIC_947(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, java.lang.Object(o140sub)) -> f954_0_length_Load(EOS(STATIC_954(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, java.lang.Object(o140sub)) :|: TRUE 6.96/3.49 f954_0_length_Load(EOS(STATIC_954(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, java.lang.Object(o140sub)) -> f962_0_length_FieldAccess(EOS(STATIC_962(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, java.lang.Object(o140sub)) :|: TRUE 6.96/3.49 f962_0_length_FieldAccess(EOS(STATIC_962(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, java.lang.Object(java.lang.String(EOC, i193))) -> f965_0_length_FieldAccess(EOS(STATIC_965(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, java.lang.Object(java.lang.String(EOC, i193))) :|: i193 >= 0 6.96/3.49 f965_0_length_FieldAccess(EOS(STATIC_965(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, java.lang.Object(java.lang.String(EOC, i193))) -> f967_0_length_Return(EOS(STATIC_967(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, i193) :|: TRUE 6.96/3.49 f967_0_length_Return(EOS(STATIC_967(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, i193) -> f976_0_random_Return(EOS(STATIC_976(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, i193) :|: TRUE 6.96/3.49 f976_0_random_Return(EOS(STATIC_976(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, i193) -> f984_0_main_IntArithmetic(EOS(STATIC_984(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, i193) :|: TRUE 6.96/3.49 f984_0_main_IntArithmetic(EOS(STATIC_984(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149, i193) -> f989_0_main_Store(EOS(STATIC_989(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i149 - i193) :|: i193 >= 0 6.96/3.49 f989_0_main_Store(EOS(STATIC_989(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i150, i197) -> f1001_0_main_InvokeMethod(EOS(STATIC_1001(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150) :|: TRUE 6.96/3.49 f1001_0_main_InvokeMethod(EOS(STATIC_1001(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150) -> f1004_0_random_FieldAccess(EOS(STATIC_1004(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150) :|: TRUE 6.96/3.49 f1004_0_random_FieldAccess(EOS(STATIC_1004(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150) -> f1008_0_random_FieldAccess(EOS(STATIC_1008(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, java.lang.Object(ARRAY(i4))) :|: TRUE 6.96/3.49 f1008_0_random_FieldAccess(EOS(STATIC_1008(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, java.lang.Object(ARRAY(i4))) -> f1022_0_random_ArrayAccess(EOS(STATIC_1022(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, java.lang.Object(ARRAY(i4))) :|: TRUE 6.96/3.49 f1022_0_random_ArrayAccess(EOS(STATIC_1022(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, java.lang.Object(ARRAY(i4))) -> f1031_0_random_ArrayAccess(EOS(STATIC_1031(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, java.lang.Object(ARRAY(i4))) :|: TRUE 6.96/3.49 f1031_0_random_ArrayAccess(EOS(STATIC_1031(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, java.lang.Object(ARRAY(i4))) -> f1045_0_random_Store(EOS(STATIC_1045(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, o159) :|: TRUE 6.96/3.49 f1045_0_random_Store(EOS(STATIC_1045(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, o159) -> f1062_0_random_FieldAccess(EOS(STATIC_1062(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, o159) :|: TRUE 6.96/3.49 f1062_0_random_FieldAccess(EOS(STATIC_1062(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, o159) -> f1070_0_random_ConstantStackPush(EOS(STATIC_1070(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, o159) :|: TRUE 6.96/3.49 f1070_0_random_ConstantStackPush(EOS(STATIC_1070(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, o159) -> f1085_0_random_IntArithmetic(EOS(STATIC_1085(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, o159) :|: TRUE 6.96/3.49 f1085_0_random_IntArithmetic(EOS(STATIC_1085(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, o159) -> f1100_0_random_FieldAccess(EOS(STATIC_1100(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, o159) :|: TRUE 6.96/3.49 f1100_0_random_FieldAccess(EOS(STATIC_1100(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, o159) -> f1110_0_random_Load(EOS(STATIC_1110(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, o159) :|: TRUE 6.96/3.49 f1110_0_random_Load(EOS(STATIC_1110(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, o159) -> f1127_0_random_InvokeMethod(EOS(STATIC_1127(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, o159) :|: TRUE 6.96/3.49 f1127_0_random_InvokeMethod(EOS(STATIC_1127(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, java.lang.Object(o175sub)) -> f1134_0_random_InvokeMethod(EOS(STATIC_1134(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, java.lang.Object(o175sub)) :|: TRUE 6.96/3.49 f1134_0_random_InvokeMethod(EOS(STATIC_1134(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, java.lang.Object(o176sub)) -> f1141_0_random_InvokeMethod(EOS(STATIC_1141(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, java.lang.Object(o176sub)) :|: TRUE 6.96/3.49 f1141_0_random_InvokeMethod(EOS(STATIC_1141(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, java.lang.Object(o176sub)) -> f1150_0_length_Load(EOS(STATIC_1150(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, java.lang.Object(o176sub)) :|: TRUE 6.96/3.49 f1150_0_length_Load(EOS(STATIC_1150(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, java.lang.Object(o176sub)) -> f1173_0_length_FieldAccess(EOS(STATIC_1173(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, java.lang.Object(o176sub)) :|: TRUE 6.96/3.49 f1173_0_length_FieldAccess(EOS(STATIC_1173(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, java.lang.Object(java.lang.String(EOC, i251))) -> f1185_0_length_FieldAccess(EOS(STATIC_1185(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, java.lang.Object(java.lang.String(EOC, i251))) :|: i251 >= 0 6.96/3.49 f1185_0_length_FieldAccess(EOS(STATIC_1185(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, java.lang.Object(java.lang.String(EOC, i251))) -> f1187_0_length_Return(EOS(STATIC_1187(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, i251) :|: TRUE 6.96/3.49 f1187_0_length_Return(EOS(STATIC_1187(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, i251) -> f1189_0_random_Return(EOS(STATIC_1189(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, i251) :|: TRUE 6.96/3.49 f1189_0_random_Return(EOS(STATIC_1189(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, i251) -> f1197_0_main_ConstantStackPush(EOS(STATIC_1197(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, i251) :|: TRUE 6.96/3.49 f1197_0_main_ConstantStackPush(EOS(STATIC_1197(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, i251) -> f1206_0_main_IntArithmetic(EOS(STATIC_1206(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, i251, 1) :|: TRUE 6.96/3.49 f1206_0_main_IntArithmetic(EOS(STATIC_1206(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, i251, matching1) -> f1214_0_main_Store(EOS(STATIC_1214(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, i251 + 1) :|: i251 >= 0 && matching1 = 1 6.96/3.49 f1214_0_main_Store(EOS(STATIC_1214(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, i253) -> f1217_0_main_Load(EOS(STATIC_1217(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, i253) :|: TRUE 6.96/3.49 f1217_0_main_Load(EOS(STATIC_1217(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, i253) -> f1225_0_main_Load(EOS(STATIC_1225(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i253, i150) :|: TRUE 6.96/3.49 f1225_0_main_Load(EOS(STATIC_1225(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i253, i150) -> f1238_0_main_IntArithmetic(EOS(STATIC_1238(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, i253) :|: TRUE 6.96/3.49 f1238_0_main_IntArithmetic(EOS(STATIC_1238(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150, i253) -> f1249_0_main_Store(EOS(STATIC_1249(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i150 + i253) :|: i150 >= 0 && i253 > 0 6.96/3.49 f1249_0_main_Store(EOS(STATIC_1249(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i260) -> f1259_0_main_JMP(EOS(STATIC_1259(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i260) :|: TRUE 6.96/3.49 f1259_0_main_JMP(EOS(STATIC_1259(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i260) -> f1307_0_main_Load(EOS(STATIC_1307(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i260) :|: TRUE 6.96/3.49 f1307_0_main_Load(EOS(STATIC_1307(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i260) -> f835_0_main_Load(EOS(STATIC_835(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i197, i260) :|: TRUE 6.96/3.49 f835_0_main_Load(EOS(STATIC_835(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i149, i150) -> f846_0_main_Load(EOS(STATIC_846(java.lang.Object(ARRAY(i4)))), java.lang.Object(ARRAY(i4)), i149, i150, i149) :|: TRUE 6.96/3.49 Combined rules. Obtained 1 IRulesP rules: 6.96/3.49 f846_0_main_Load(EOS(STATIC_846(java.lang.Object(ARRAY(i4:0)))), java.lang.Object(ARRAY(i4:0)), i149:0, i150:0, i149:0) -> f846_0_main_Load(EOS(STATIC_846(java.lang.Object(ARRAY(i4:0)))), java.lang.Object(ARRAY(i4:0)), i149:0 - i193:0, i150:0 + (i251:0 + 1), i149:0 - i193:0) :|: i150:0 > -1 && i149:0 - i150:0 >= 1 && i193:0 > -1 && i251:0 > -1 6.96/3.49 Filtered duplicate arguments: 6.96/3.49 f846_0_main_Load(x1, x2, x3, x4, x5) -> f846_0_main_Load(x1, x2, x4, x5) 6.96/3.49 Filtered unneeded arguments: 6.96/3.49 f846_0_main_Load(x1, x2, x3, x4) -> f846_0_main_Load(x3, x4) 6.96/3.49 Finished conversion. Obtained 1 rules.P rules: 6.96/3.49 f846_0_main_Load(i150:0, i149:0) -> f846_0_main_Load(i150:0 + (i251:0 + 1), i149:0 - i193:0) :|: i149:0 - i150:0 >= 1 && i150:0 > -1 && i251:0 > -1 && i193:0 > -1 6.96/3.49 6.96/3.49 ---------------------------------------- 6.96/3.49 6.96/3.49 (8) 6.96/3.49 Obligation: 6.96/3.49 Rules: 6.96/3.49 f846_0_main_Load(i150:0, i149:0) -> f846_0_main_Load(i150:0 + (i251:0 + 1), i149:0 - i193:0) :|: i149:0 - i150:0 >= 1 && i150:0 > -1 && i251:0 > -1 && i193:0 > -1 6.96/3.49 6.96/3.49 ---------------------------------------- 6.96/3.49 6.96/3.49 (9) IRSFormatTransformerProof (EQUIVALENT) 6.96/3.49 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 6.96/3.49 ---------------------------------------- 6.96/3.49 6.96/3.49 (10) 6.96/3.49 Obligation: 6.96/3.49 Rules: 6.96/3.49 f846_0_main_Load(i150:0, i149:0) -> f846_0_main_Load(arith, arith1) :|: i149:0 - i150:0 >= 1 && i150:0 > -1 && i251:0 > -1 && i193:0 > -1 && arith = i150:0 + (i251:0 + 1) && arith1 = i149:0 - i193:0 6.96/3.49 6.96/3.49 ---------------------------------------- 6.96/3.49 6.96/3.49 (11) IRSwTTerminationDigraphProof (EQUIVALENT) 6.96/3.49 Constructed termination digraph! 6.96/3.49 Nodes: 6.96/3.49 (1) f846_0_main_Load(i150:0, i149:0) -> f846_0_main_Load(arith, arith1) :|: i149:0 - i150:0 >= 1 && i150:0 > -1 && i251:0 > -1 && i193:0 > -1 && arith = i150:0 + (i251:0 + 1) && arith1 = i149:0 - i193:0 6.96/3.49 6.96/3.49 Arcs: 6.96/3.49 (1) -> (1) 6.96/3.49 6.96/3.49 This digraph is fully evaluated! 6.96/3.49 ---------------------------------------- 6.96/3.49 6.96/3.49 (12) 6.96/3.49 Obligation: 6.96/3.49 6.96/3.49 Termination digraph: 6.96/3.49 Nodes: 6.96/3.49 (1) f846_0_main_Load(i150:0, i149:0) -> f846_0_main_Load(arith, arith1) :|: i149:0 - i150:0 >= 1 && i150:0 > -1 && i251:0 > -1 && i193:0 > -1 && arith = i150:0 + (i251:0 + 1) && arith1 = i149:0 - i193:0 6.96/3.49 6.96/3.49 Arcs: 6.96/3.49 (1) -> (1) 6.96/3.49 6.96/3.49 This digraph is fully evaluated! 6.96/3.49 6.96/3.49 ---------------------------------------- 6.96/3.49 6.96/3.49 (13) IntTRSCompressionProof (EQUIVALENT) 6.96/3.49 Compressed rules. 6.96/3.49 ---------------------------------------- 6.96/3.49 6.96/3.49 (14) 6.96/3.49 Obligation: 6.96/3.49 Rules: 6.96/3.49 f846_0_main_Load(i150:0:0, i149:0:0) -> f846_0_main_Load(i150:0:0 + (i251:0:0 + 1), i149:0:0 - i193:0:0) :|: i251:0:0 > -1 && i193:0:0 > -1 && i150:0:0 > -1 && i149:0:0 - i150:0:0 >= 1 6.96/3.49 6.96/3.49 ---------------------------------------- 6.96/3.49 6.96/3.49 (15) TempFilterProof (SOUND) 6.96/3.49 Used the following sort dictionary for filtering: 6.96/3.49 f846_0_main_Load(INTEGER, INTEGER) 6.96/3.49 Replaced non-predefined constructor symbols by 0. 6.96/3.49 ---------------------------------------- 6.96/3.49 6.96/3.49 (16) 6.96/3.49 Obligation: 6.96/3.49 Rules: 6.96/3.49 f846_0_main_Load(i150:0:0, i149:0:0) -> f846_0_main_Load(c, c1) :|: c1 = i149:0:0 - i193:0:0 && c = i150:0:0 + (i251:0:0 + 1) && (i251:0:0 > -1 && i193:0:0 > -1 && i150:0:0 > -1 && i149:0:0 - i150:0:0 >= 1) 6.96/3.49 6.96/3.49 ---------------------------------------- 6.96/3.49 6.96/3.49 (17) RankingReductionPairProof (EQUIVALENT) 6.96/3.49 Interpretation: 6.96/3.49 [ f846_0_main_Load ] = -1*f846_0_main_Load_1 + f846_0_main_Load_2 6.96/3.49 6.96/3.49 The following rules are decreasing: 6.96/3.49 f846_0_main_Load(i150:0:0, i149:0:0) -> f846_0_main_Load(c, c1) :|: c1 = i149:0:0 - i193:0:0 && c = i150:0:0 + (i251:0:0 + 1) && (i251:0:0 > -1 && i193:0:0 > -1 && i150:0:0 > -1 && i149:0:0 - i150:0:0 >= 1) 6.96/3.49 6.96/3.49 The following rules are bounded: 6.96/3.49 f846_0_main_Load(i150:0:0, i149:0:0) -> f846_0_main_Load(c, c1) :|: c1 = i149:0:0 - i193:0:0 && c = i150:0:0 + (i251:0:0 + 1) && (i251:0:0 > -1 && i193:0:0 > -1 && i150:0:0 > -1 && i149:0:0 - i150:0:0 >= 1) 6.96/3.49 6.96/3.49 6.96/3.49 ---------------------------------------- 6.96/3.49 6.96/3.49 (18) 6.96/3.49 YES 7.14/3.58 EOF