/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, 654 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 65 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 36 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 22 ms] (17) IntTRS (18) RankingReductionPairProof [EQUIVALENT, 0 ms] (19) YES (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 68 ms] (22) IRSwT (23) IRSFormatTransformerProof [EQUIVALENT, 1 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 8 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) TempFilterProof [SOUND, 368 ms] (30) IRSwT (31) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (32) IRSwT (33) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (34) IRSwT (35) IRSwTOrderProof [EQUIVALENT, 0 ms] (36) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class Convert{ // adapted from [Giesl, 95] // converts a number to decimal notation public static void main(String[] args) { Random.args = args; IntList l = IntList.createIntList(); int b = Random.random(); int res = 0; while (l != null) { if (l.value <= 0) { l = l.next; if (l != null) res = res * b; } else { l.value--; res++; } } } } class IntList { int value; IntList next; public IntList(int value, IntList next) { this.value = value; this.next = next; } public static IntList createIntList() { int i = Random.random(); IntList l = null; while (i > 0) { l = new IntList(Random.random(), l); i--; } return l; } } public class Random { static String[] args; static int index = 0; public static int random() { 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 Convert{ // adapted from [Giesl, 95] // converts a number to decimal notation public static void main(String[] args) { Random.args = args; IntList l = IntList.createIntList(); int b = Random.random(); int res = 0; while (l != null) { if (l.value <= 0) { l = l.next; if (l != null) res = res * b; } else { l.value--; res++; } } } } class IntList { int value; IntList next; public IntList(int value, IntList next) { this.value = value; this.next = next; } public static IntList createIntList() { int i = Random.random(); IntList l = null; while (i > 0) { l = new IntList(Random.random(), l); i--; } return l; } } public class Random { static String[] args; static int index = 0; public static int random() { String string = args[index]; index++; return string.length(); } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: Convert.main([Ljava/lang/String;)V: Graph of 136 nodes with 1 SCC. IntList.createIntList()LIntList;: Graph of 277 nodes with 1 SCC. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 2 SCCss. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: IntList.createIntList()LIntList; 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: ---------------------------------------- (8) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 39 IRulesP rules: f2669_0_createIntList_LE(EOS(STATIC_2669(java.lang.Object(ARRAY(i6)))), i463, i463) -> f2695_0_createIntList_LE(EOS(STATIC_2695(java.lang.Object(ARRAY(i6)))), i463, i463) :|: TRUE f2695_0_createIntList_LE(EOS(STATIC_2695(java.lang.Object(ARRAY(i6)))), i463, i463) -> f2707_0_createIntList_New(EOS(STATIC_2707(java.lang.Object(ARRAY(i6)))), i463) :|: i463 > 0 f2707_0_createIntList_New(EOS(STATIC_2707(java.lang.Object(ARRAY(i6)))), i463) -> f2720_0_createIntList_Duplicate(EOS(STATIC_2720(java.lang.Object(ARRAY(i6)))), i463) :|: TRUE f2720_0_createIntList_Duplicate(EOS(STATIC_2720(java.lang.Object(ARRAY(i6)))), i463) -> f2734_0_createIntList_InvokeMethod(EOS(STATIC_2734(java.lang.Object(ARRAY(i6)))), i463) :|: TRUE f2734_0_createIntList_InvokeMethod(EOS(STATIC_2734(java.lang.Object(ARRAY(i6)))), i463) -> f2760_0_random_FieldAccess(EOS(STATIC_2760(java.lang.Object(ARRAY(i6)))), i463) :|: TRUE f2760_0_random_FieldAccess(EOS(STATIC_2760(java.lang.Object(ARRAY(i6)))), i463) -> f2823_0_random_FieldAccess(EOS(STATIC_2823(java.lang.Object(ARRAY(i6)))), i463, java.lang.Object(ARRAY(i6))) :|: TRUE f2823_0_random_FieldAccess(EOS(STATIC_2823(java.lang.Object(ARRAY(i6)))), i463, java.lang.Object(ARRAY(i6))) -> f2825_0_random_ArrayAccess(EOS(STATIC_2825(java.lang.Object(ARRAY(i6)))), i463, java.lang.Object(ARRAY(i6))) :|: TRUE f2825_0_random_ArrayAccess(EOS(STATIC_2825(java.lang.Object(ARRAY(i6)))), i463, java.lang.Object(ARRAY(i6))) -> f2830_0_random_ArrayAccess(EOS(STATIC_2830(java.lang.Object(ARRAY(i6)))), i463, java.lang.Object(ARRAY(i6))) :|: TRUE f2830_0_random_ArrayAccess(EOS(STATIC_2830(java.lang.Object(ARRAY(i6)))), i463, java.lang.Object(ARRAY(i6))) -> f2839_0_random_Store(EOS(STATIC_2839(java.lang.Object(ARRAY(i6)))), i463, o334) :|: TRUE f2839_0_random_Store(EOS(STATIC_2839(java.lang.Object(ARRAY(i6)))), i463, o334) -> f2848_0_random_FieldAccess(EOS(STATIC_2848(java.lang.Object(ARRAY(i6)))), i463, o334) :|: TRUE f2848_0_random_FieldAccess(EOS(STATIC_2848(java.lang.Object(ARRAY(i6)))), i463, o334) -> f2854_0_random_ConstantStackPush(EOS(STATIC_2854(java.lang.Object(ARRAY(i6)))), i463, o334) :|: TRUE f2854_0_random_ConstantStackPush(EOS(STATIC_2854(java.lang.Object(ARRAY(i6)))), i463, o334) -> f2864_0_random_IntArithmetic(EOS(STATIC_2864(java.lang.Object(ARRAY(i6)))), i463, o334) :|: TRUE f2864_0_random_IntArithmetic(EOS(STATIC_2864(java.lang.Object(ARRAY(i6)))), i463, o334) -> f2875_0_random_FieldAccess(EOS(STATIC_2875(java.lang.Object(ARRAY(i6)))), i463, o334) :|: TRUE f2875_0_random_FieldAccess(EOS(STATIC_2875(java.lang.Object(ARRAY(i6)))), i463, o334) -> f2885_0_random_Load(EOS(STATIC_2885(java.lang.Object(ARRAY(i6)))), i463, o334) :|: TRUE f2885_0_random_Load(EOS(STATIC_2885(java.lang.Object(ARRAY(i6)))), i463, o334) -> f2904_0_random_InvokeMethod(EOS(STATIC_2904(java.lang.Object(ARRAY(i6)))), i463, o334) :|: TRUE f2904_0_random_InvokeMethod(EOS(STATIC_2904(java.lang.Object(ARRAY(i6)))), i463, java.lang.Object(o347sub)) -> f2958_0_random_InvokeMethod(EOS(STATIC_2958(java.lang.Object(ARRAY(i6)))), i463, java.lang.Object(o347sub)) :|: TRUE f2958_0_random_InvokeMethod(EOS(STATIC_2958(java.lang.Object(ARRAY(i6)))), i463, java.lang.Object(o348sub)) -> f2970_0_random_InvokeMethod(EOS(STATIC_2970(java.lang.Object(ARRAY(i6)))), i463, java.lang.Object(o348sub)) :|: TRUE f2970_0_random_InvokeMethod(EOS(STATIC_2970(java.lang.Object(ARRAY(i6)))), i463, java.lang.Object(o348sub)) -> f2990_0_length_Load(EOS(STATIC_2990(java.lang.Object(ARRAY(i6)))), i463, java.lang.Object(o348sub)) :|: TRUE f2990_0_length_Load(EOS(STATIC_2990(java.lang.Object(ARRAY(i6)))), i463, java.lang.Object(o348sub)) -> f3028_0_length_FieldAccess(EOS(STATIC_3028(java.lang.Object(ARRAY(i6)))), i463, java.lang.Object(o348sub)) :|: TRUE f3028_0_length_FieldAccess(EOS(STATIC_3028(java.lang.Object(ARRAY(i6)))), i463, java.lang.Object(java.lang.String(EOC, i540))) -> f3050_0_length_FieldAccess(EOS(STATIC_3050(java.lang.Object(ARRAY(i6)))), i463, java.lang.Object(java.lang.String(EOC, i540))) :|: TRUE f3050_0_length_FieldAccess(EOS(STATIC_3050(java.lang.Object(ARRAY(i6)))), i463, java.lang.Object(java.lang.String(EOC, i540))) -> f3222_0_length_Return(EOS(STATIC_3222(java.lang.Object(ARRAY(i6)))), i463) :|: TRUE f3222_0_length_Return(EOS(STATIC_3222(java.lang.Object(ARRAY(i6)))), i463) -> f3227_0_random_Return(EOS(STATIC_3227(java.lang.Object(ARRAY(i6)))), i463) :|: TRUE f3227_0_random_Return(EOS(STATIC_3227(java.lang.Object(ARRAY(i6)))), i463) -> f3232_0_createIntList_Load(EOS(STATIC_3232(java.lang.Object(ARRAY(i6)))), i463) :|: TRUE f3232_0_createIntList_Load(EOS(STATIC_3232(java.lang.Object(ARRAY(i6)))), i463) -> f3236_0_createIntList_InvokeMethod(EOS(STATIC_3236(java.lang.Object(ARRAY(i6)))), i463) :|: TRUE f3236_0_createIntList_InvokeMethod(EOS(STATIC_3236(java.lang.Object(ARRAY(i6)))), i463) -> f3250_0__init__Load(EOS(STATIC_3250(java.lang.Object(ARRAY(i6)))), i463) :|: TRUE f3250_0__init__Load(EOS(STATIC_3250(java.lang.Object(ARRAY(i6)))), i463) -> f3256_0__init__InvokeMethod(EOS(STATIC_3256(java.lang.Object(ARRAY(i6)))), i463) :|: TRUE f3256_0__init__InvokeMethod(EOS(STATIC_3256(java.lang.Object(ARRAY(i6)))), i463) -> f3297_0__init__Load(EOS(STATIC_3297(java.lang.Object(ARRAY(i6)))), i463) :|: TRUE f3297_0__init__Load(EOS(STATIC_3297(java.lang.Object(ARRAY(i6)))), i463) -> f3384_0__init__Load(EOS(STATIC_3384(java.lang.Object(ARRAY(i6)))), i463) :|: TRUE f3384_0__init__Load(EOS(STATIC_3384(java.lang.Object(ARRAY(i6)))), i463) -> f3439_0__init__FieldAccess(EOS(STATIC_3439(java.lang.Object(ARRAY(i6)))), i463) :|: TRUE f3439_0__init__FieldAccess(EOS(STATIC_3439(java.lang.Object(ARRAY(i6)))), i463) -> f3456_0__init__Load(EOS(STATIC_3456(java.lang.Object(ARRAY(i6)))), i463) :|: TRUE f3456_0__init__Load(EOS(STATIC_3456(java.lang.Object(ARRAY(i6)))), i463) -> f3475_0__init__Load(EOS(STATIC_3475(java.lang.Object(ARRAY(i6)))), i463) :|: TRUE f3475_0__init__Load(EOS(STATIC_3475(java.lang.Object(ARRAY(i6)))), i463) -> f3480_0__init__FieldAccess(EOS(STATIC_3480(java.lang.Object(ARRAY(i6)))), i463) :|: TRUE f3480_0__init__FieldAccess(EOS(STATIC_3480(java.lang.Object(ARRAY(i6)))), i463) -> f3486_0__init__Return(EOS(STATIC_3486(java.lang.Object(ARRAY(i6)))), i463) :|: TRUE f3486_0__init__Return(EOS(STATIC_3486(java.lang.Object(ARRAY(i6)))), i463) -> f3492_0_createIntList_Store(EOS(STATIC_3492(java.lang.Object(ARRAY(i6)))), i463) :|: TRUE f3492_0_createIntList_Store(EOS(STATIC_3492(java.lang.Object(ARRAY(i6)))), i463) -> f3555_0_createIntList_Inc(EOS(STATIC_3555(java.lang.Object(ARRAY(i6)))), i463) :|: TRUE f3555_0_createIntList_Inc(EOS(STATIC_3555(java.lang.Object(ARRAY(i6)))), i463) -> f3821_0_createIntList_JMP(EOS(STATIC_3821(java.lang.Object(ARRAY(i6)))), i463 + -1) :|: TRUE f3821_0_createIntList_JMP(EOS(STATIC_3821(java.lang.Object(ARRAY(i6)))), i654) -> f3828_0_createIntList_Load(EOS(STATIC_3828(java.lang.Object(ARRAY(i6)))), i654) :|: TRUE f3828_0_createIntList_Load(EOS(STATIC_3828(java.lang.Object(ARRAY(i6)))), i654) -> f2604_0_createIntList_Load(EOS(STATIC_2604(java.lang.Object(ARRAY(i6)))), i654) :|: TRUE f2604_0_createIntList_Load(EOS(STATIC_2604(java.lang.Object(ARRAY(i6)))), i430) -> f2669_0_createIntList_LE(EOS(STATIC_2669(java.lang.Object(ARRAY(i6)))), i430, i430) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f2669_0_createIntList_LE(EOS(STATIC_2669(java.lang.Object(ARRAY(i6:0)))), i463:0, i463:0) -> f2669_0_createIntList_LE(EOS(STATIC_2669(java.lang.Object(ARRAY(i6:0)))), i463:0 - 1, i463:0 - 1) :|: i463:0 > 0 Filtered duplicate arguments: f2669_0_createIntList_LE(x1, x2, x3) -> f2669_0_createIntList_LE(x1, x3) Filtered unneeded arguments: f2669_0_createIntList_LE(x1, x2) -> f2669_0_createIntList_LE(x2) Finished conversion. Obtained 1 rules.P rules: f2669_0_createIntList_LE(i463:0) -> f2669_0_createIntList_LE(i463:0 - 1) :|: i463:0 > 0 ---------------------------------------- (9) Obligation: Rules: f2669_0_createIntList_LE(i463:0) -> f2669_0_createIntList_LE(i463:0 - 1) :|: i463:0 > 0 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f2669_0_createIntList_LE(i463:0) -> f2669_0_createIntList_LE(arith) :|: i463:0 > 0 && arith = i463:0 - 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2669_0_createIntList_LE(i463:0) -> f2669_0_createIntList_LE(arith) :|: i463:0 > 0 && arith = i463:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f2669_0_createIntList_LE(i463:0) -> f2669_0_createIntList_LE(arith) :|: i463:0 > 0 && arith = i463:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f2669_0_createIntList_LE(i463:0:0) -> f2669_0_createIntList_LE(i463:0:0 - 1) :|: i463:0:0 > 0 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2669_0_createIntList_LE(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f2669_0_createIntList_LE(i463:0:0) -> f2669_0_createIntList_LE(c) :|: c = i463:0:0 - 1 && i463:0:0 > 0 ---------------------------------------- (18) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f2669_0_createIntList_LE ] = f2669_0_createIntList_LE_1 The following rules are decreasing: f2669_0_createIntList_LE(i463:0:0) -> f2669_0_createIntList_LE(c) :|: c = i463:0:0 - 1 && i463:0:0 > 0 The following rules are bounded: f2669_0_createIntList_LE(i463:0:0) -> f2669_0_createIntList_LE(c) :|: c = i463:0:0 - 1 && i463:0:0 > 0 ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Convert.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *IntList: [value, next] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (21) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 31 IRulesP rules: f3823_0_main_NULL(EOS(STATIC_3823), java.lang.Object(o412sub), java.lang.Object(o412sub)) -> f3846_0_main_NULL(EOS(STATIC_3846), java.lang.Object(o412sub), java.lang.Object(o412sub)) :|: TRUE f3846_0_main_NULL(EOS(STATIC_3846), java.lang.Object(o412sub), java.lang.Object(o412sub)) -> f3849_0_main_Load(EOS(STATIC_3849), java.lang.Object(o412sub)) :|: TRUE f3849_0_main_Load(EOS(STATIC_3849), java.lang.Object(o412sub)) -> f3852_0_main_FieldAccess(EOS(STATIC_3852), java.lang.Object(o412sub), java.lang.Object(o412sub)) :|: TRUE f3852_0_main_FieldAccess(EOS(STATIC_3852), java.lang.Object(IntList(EOC, i678, o418)), java.lang.Object(IntList(EOC, i678, o418))) -> f3902_0_main_FieldAccess(EOS(STATIC_3902), java.lang.Object(IntList(EOC, i678, o418)), java.lang.Object(IntList(EOC, i678, o418))) :|: TRUE f3902_0_main_FieldAccess(EOS(STATIC_3902), java.lang.Object(IntList(EOC, i678, o418)), java.lang.Object(IntList(EOC, i678, o418))) -> f3908_0_main_GT(EOS(STATIC_3908), java.lang.Object(IntList(EOC, i678, o418)), i678) :|: TRUE f3908_0_main_GT(EOS(STATIC_3908), java.lang.Object(IntList(EOC, i684, o418)), i684) -> f3909_0_main_GT(EOS(STATIC_3909), java.lang.Object(IntList(EOC, i684, o418)), i684) :|: TRUE f3908_0_main_GT(EOS(STATIC_3908), java.lang.Object(IntList(EOC, i685, o418)), i685) -> f3910_0_main_GT(EOS(STATIC_3910), java.lang.Object(IntList(EOC, i685, o418)), i685) :|: TRUE f3909_0_main_GT(EOS(STATIC_3909), java.lang.Object(IntList(EOC, i684, o418)), i684) -> f3913_0_main_Load(EOS(STATIC_3913), java.lang.Object(IntList(EOC, i684, o418))) :|: i684 <= 0 f3913_0_main_Load(EOS(STATIC_3913), java.lang.Object(IntList(EOC, i684, o418))) -> f3915_0_main_FieldAccess(EOS(STATIC_3915), java.lang.Object(IntList(EOC, i684, o418))) :|: TRUE f3915_0_main_FieldAccess(EOS(STATIC_3915), java.lang.Object(IntList(EOC, i684, o418))) -> f3917_0_main_Store(EOS(STATIC_3917), o418) :|: TRUE f3917_0_main_Store(EOS(STATIC_3917), o418) -> f3919_0_main_Load(EOS(STATIC_3919), o418) :|: TRUE f3919_0_main_Load(EOS(STATIC_3919), o418) -> f3921_0_main_NULL(EOS(STATIC_3921), o418, o418) :|: TRUE f3921_0_main_NULL(EOS(STATIC_3921), java.lang.Object(o421sub), java.lang.Object(o421sub)) -> f3947_0_main_NULL(EOS(STATIC_3947), java.lang.Object(o421sub), java.lang.Object(o421sub)) :|: TRUE f3947_0_main_NULL(EOS(STATIC_3947), java.lang.Object(o421sub), java.lang.Object(o421sub)) -> f3950_0_main_Load(EOS(STATIC_3950), java.lang.Object(o421sub)) :|: TRUE f3950_0_main_Load(EOS(STATIC_3950), java.lang.Object(o421sub)) -> f3953_0_main_Load(EOS(STATIC_3953), java.lang.Object(o421sub)) :|: TRUE f3953_0_main_Load(EOS(STATIC_3953), java.lang.Object(o421sub)) -> f3956_0_main_IntArithmetic(EOS(STATIC_3956), java.lang.Object(o421sub)) :|: TRUE f3956_0_main_IntArithmetic(EOS(STATIC_3956), java.lang.Object(o421sub)) -> f3959_0_main_Store(EOS(STATIC_3959), java.lang.Object(o421sub)) :|: TRUE f3959_0_main_Store(EOS(STATIC_3959), java.lang.Object(o421sub)) -> f3960_0_main_JMP(EOS(STATIC_3960), java.lang.Object(o421sub)) :|: TRUE f3960_0_main_JMP(EOS(STATIC_3960), java.lang.Object(o421sub)) -> f3963_0_main_Load(EOS(STATIC_3963), java.lang.Object(o421sub)) :|: TRUE f3963_0_main_Load(EOS(STATIC_3963), java.lang.Object(o421sub)) -> f3820_0_main_Load(EOS(STATIC_3820), java.lang.Object(o421sub)) :|: TRUE f3820_0_main_Load(EOS(STATIC_3820), o393) -> f3823_0_main_NULL(EOS(STATIC_3823), o393, o393) :|: TRUE f3910_0_main_GT(EOS(STATIC_3910), java.lang.Object(IntList(EOC, i685, o418)), i685) -> f3914_0_main_Load(EOS(STATIC_3914), java.lang.Object(IntList(EOC, i685, o418))) :|: i685 > 0 f3914_0_main_Load(EOS(STATIC_3914), java.lang.Object(IntList(EOC, i685, o418))) -> f3916_0_main_Duplicate(EOS(STATIC_3916), java.lang.Object(IntList(EOC, i685, o418)), java.lang.Object(IntList(EOC, i685, o418))) :|: TRUE f3916_0_main_Duplicate(EOS(STATIC_3916), java.lang.Object(IntList(EOC, i685, o418)), java.lang.Object(IntList(EOC, i685, o418))) -> f3918_0_main_FieldAccess(EOS(STATIC_3918), java.lang.Object(IntList(EOC, i685, o418)), java.lang.Object(IntList(EOC, i685, o418)), java.lang.Object(IntList(EOC, i685, o418))) :|: TRUE f3918_0_main_FieldAccess(EOS(STATIC_3918), java.lang.Object(IntList(EOC, i685, o418)), java.lang.Object(IntList(EOC, i685, o418)), java.lang.Object(IntList(EOC, i685, o418))) -> f3920_0_main_ConstantStackPush(EOS(STATIC_3920), java.lang.Object(IntList(EOC, i685, o418)), java.lang.Object(IntList(EOC, i685, o418)), i685) :|: TRUE f3920_0_main_ConstantStackPush(EOS(STATIC_3920), java.lang.Object(IntList(EOC, i685, o418)), java.lang.Object(IntList(EOC, i685, o418)), i685) -> f3946_0_main_IntArithmetic(EOS(STATIC_3946), java.lang.Object(IntList(EOC, i685, o418)), java.lang.Object(IntList(EOC, i685, o418)), i685, 1) :|: TRUE f3946_0_main_IntArithmetic(EOS(STATIC_3946), java.lang.Object(IntList(EOC, i685, o418)), java.lang.Object(IntList(EOC, i685, o418)), i685, matching1) -> f3949_0_main_FieldAccess(EOS(STATIC_3949), java.lang.Object(IntList(EOC, i685, o418)), java.lang.Object(IntList(EOC, i685, o418)), i685 - 1) :|: i685 > 0 && matching1 = 1 f3949_0_main_FieldAccess(EOS(STATIC_3949), java.lang.Object(IntList(EOC, i685, o418)), java.lang.Object(IntList(EOC, i685, o418)), i694) -> f3952_0_main_Inc(EOS(STATIC_3952), java.lang.Object(IntList(EOC, i694, o418))) :|: TRUE f3952_0_main_Inc(EOS(STATIC_3952), java.lang.Object(IntList(EOC, i694, o418))) -> f3955_0_main_JMP(EOS(STATIC_3955), java.lang.Object(IntList(EOC, i694, o418))) :|: TRUE f3955_0_main_JMP(EOS(STATIC_3955), java.lang.Object(IntList(EOC, i694, o418))) -> f3958_0_main_Load(EOS(STATIC_3958), java.lang.Object(IntList(EOC, i694, o418))) :|: TRUE f3958_0_main_Load(EOS(STATIC_3958), java.lang.Object(IntList(EOC, i694, o418))) -> f3820_0_main_Load(EOS(STATIC_3820), java.lang.Object(IntList(EOC, i694, o418))) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f3823_0_main_NULL(EOS(STATIC_3823), java.lang.Object(IntList(EOC, i678:0, java.lang.Object(o421sub:0))), java.lang.Object(IntList(EOC, i678:0, java.lang.Object(o421sub:0)))) -> f3823_0_main_NULL(EOS(STATIC_3823), java.lang.Object(o421sub:0), java.lang.Object(o421sub:0)) :|: i678:0 < 1 f3823_0_main_NULL(EOS(STATIC_3823), java.lang.Object(IntList(EOC, i678:0, o418:0)), java.lang.Object(IntList(EOC, i678:0, o418:0))) -> f3823_0_main_NULL(EOS(STATIC_3823), java.lang.Object(IntList(EOC, i678:0 - 1, o418:0)), java.lang.Object(IntList(EOC, i678:0 - 1, o418:0))) :|: i678:0 > 0 Filtered constant ground arguments: f3823_0_main_NULL(x1, x2, x3) -> f3823_0_main_NULL(x2, x3) EOS(x1) -> EOS IntList(x1, x2, x3) -> IntList(x2, x3) Filtered duplicate arguments: f3823_0_main_NULL(x1, x2) -> f3823_0_main_NULL(x2) Finished conversion. Obtained 2 rules.P rules: f3823_0_main_NULL(java.lang.Object(IntList(i678:0, java.lang.Object(o421sub:0)))) -> f3823_0_main_NULL(java.lang.Object(o421sub:0)) :|: i678:0 < 1 f3823_0_main_NULL(java.lang.Object(IntList(i678:0, o418:0))) -> f3823_0_main_NULL(java.lang.Object(IntList(i678:0 - 1, o418:0))) :|: i678:0 > 0 ---------------------------------------- (22) Obligation: Rules: f3823_0_main_NULL(java.lang.Object(IntList(i678:0, java.lang.Object(o421sub:0)))) -> f3823_0_main_NULL(java.lang.Object(o421sub:0)) :|: i678:0 < 1 f3823_0_main_NULL(java.lang.Object(IntList(x, x1))) -> f3823_0_main_NULL(java.lang.Object(IntList(x - 1, x1))) :|: x > 0 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f3823_0_main_NULL(java.lang.Object(IntList(i678:0, java.lang.Object(o421sub:0)))) -> f3823_0_main_NULL(java.lang.Object(o421sub:0)) :|: i678:0 < 1 f3823_0_main_NULL(java.lang.Object(IntList(x, x1))) -> f3823_0_main_NULL(java.lang.Object(IntList(arith, x1))) :|: x > 0 && arith = x - 1 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f3823_0_main_NULL(java.lang.Object(IntList(i678:0, java.lang.Object(o421sub:0)))) -> f3823_0_main_NULL(java.lang.Object(o421sub:0)) :|: i678:0 < 1 (2) f3823_0_main_NULL(java.lang.Object(IntList(x, x1))) -> f3823_0_main_NULL(java.lang.Object(IntList(arith, x1))) :|: x > 0 && arith = x - 1 Arcs: (1) -> (1), (2) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f3823_0_main_NULL(java.lang.Object(IntList(i678:0, java.lang.Object(o421sub:0)))) -> f3823_0_main_NULL(java.lang.Object(o421sub:0)) :|: i678:0 < 1 (2) f3823_0_main_NULL(java.lang.Object(IntList(x, x1))) -> f3823_0_main_NULL(java.lang.Object(IntList(arith, x1))) :|: x > 0 && arith = x - 1 Arcs: (1) -> (1), (2) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f3823_0_main_NULL(java.lang.Object(IntList(x:0, x1:0))) -> f3823_0_main_NULL(java.lang.Object(IntList(x:0 - 1, x1:0))) :|: x:0 > 0 f3823_0_main_NULL(java.lang.Object(IntList(i678:0:0, java.lang.Object(o421sub:0:0)))) -> f3823_0_main_NULL(java.lang.Object(o421sub:0:0)) :|: i678:0:0 < 1 ---------------------------------------- (29) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f3823_0_main_NULL(VARIABLE) java.lang.Object(VARIABLE) IntList(INTEGER, VARIABLE) Removed predefined arithmetic.The following proof was generated: # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given IRSwT could not be shown: - IRSwT - IRSwTToQDPProof Rules: f3823_0_main_NULL(java.lang.Object(IntList(x1:0))) -> f3823_0_main_NULL(java.lang.Object(IntList(x1:0))) f3823_0_main_NULL(java.lang.Object(IntList(java.lang.Object(o421sub:0:0)))) -> f3823_0_main_NULL(java.lang.Object(o421sub:0:0)) Removed the integers and created a QDP-Problem. - IRSwT - IRSwTToQDPProof - QDP - MRRProof Q DP problem: The TRS P consists of the following rules: f3823_0_main_NULL(java.lang.Object(IntList(x1:0))) -> f3823_0_main_NULL(java.lang.Object(IntList(x1:0))) f3823_0_main_NULL(java.lang.Object(IntList(java.lang.Object(o421sub:0:0)))) -> f3823_0_main_NULL(java.lang.Object(o421sub:0:0)) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented. Strictly oriented dependency pairs: f3823_0_main_NULL(java.lang.Object(IntList(java.lang.Object(o421sub:0:0)))) -> f3823_0_main_NULL(java.lang.Object(o421sub:0:0)) Used ordering: Knuth-Bendix order [KBO] with precedence:IntList_1 > java.lang.Object_1 > f3823_0_main_NULL_1 and weight map: f3823_0_main_NULL_1=1 java.lang.Object_1=1 IntList_1=1 The variable weight is 1 - IRSwT - IRSwTToQDPProof - QDP - MRRProof - QDP Q DP problem: The TRS P consists of the following rules: f3823_0_main_NULL(java.lang.Object(IntList(x1:0))) -> f3823_0_main_NULL(java.lang.Object(IntList(x1:0))) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (30) Obligation: Rules: f3823_0_main_NULL(java.lang.Object(IntList(x:0, x1:0))) -> f3823_0_main_NULL(java.lang.Object(IntList(x:0 - 1, x1:0))) :|: x:0 > 0 ---------------------------------------- (31) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f3823_0_main_NULL(java.lang.Object(IntList(x:0, x1:0))) -> f3823_0_main_NULL(java.lang.Object(IntList(x:0 - 1, x1:0))) :|: x:0 > 0 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (32) Obligation: Termination digraph: Nodes: (1) f3823_0_main_NULL(java.lang.Object(IntList(x:0, x1:0))) -> f3823_0_main_NULL(java.lang.Object(IntList(x:0 - 1, x1:0))) :|: x:0 > 0 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (33) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: IntList(x1, x2) -> IntList(x1) ---------------------------------------- (34) Obligation: Rules: f3823_0_main_NULL(java.lang.Object(IntList(x:0))) -> f3823_0_main_NULL(java.lang.Object(IntList(x:0 - 1))) :|: x:0 > 0 ---------------------------------------- (35) IRSwTOrderProof (EQUIVALENT) [f3823_0_main_NULL(x)] = -9 + 1*x [java.lang.Object(x1)] = 0 + 3*x1 [IntList(x2)] = 0 + 3*x2 The following rules are decreasing: f3823_0_main_NULL(java.lang.Object(IntList(x:0))) -> f3823_0_main_NULL(java.lang.Object(IntList(x:0 - 1))) :|: x:0 > 0 The following rules are bounded: f3823_0_main_NULL(java.lang.Object(IntList(x:0))) -> f3823_0_main_NULL(java.lang.Object(IntList(x:0 - 1))) :|: x:0 > 0 ---------------------------------------- (36) YES