/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, 98 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 1838 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 126 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 104 ms] (13) AND (14) IRSwT (15) IntTRSCompressionProof [EQUIVALENT, 0 ms] (16) IRSwT (17) TempFilterProof [SOUND, 14 ms] (18) IntTRS (19) RankingReductionPairProof [EQUIVALENT, 0 ms] (20) YES (21) IRSwT (22) IntTRSCompressionProof [EQUIVALENT, 0 ms] (23) IRSwT (24) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (25) IRSwT (26) TempFilterProof [SOUND, 9 ms] (27) IntTRS (28) RankingReductionPairProof [EQUIVALENT, 0 ms] (29) YES (30) JBCTerminationSCC (31) SCCToIRSProof [SOUND, 86 ms] (32) IRSwT (33) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (34) IRSwT (35) IRSwTTerminationDigraphProof [EQUIVALENT, 82 ms] (36) IRSwT (37) IntTRSCompressionProof [EQUIVALENT, 0 ms] (38) IRSwT (39) TempFilterProof [SOUND, 70 ms] (40) IntTRS (41) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (42) AND (43) IntTRS (44) RankingReductionPairProof [EQUIVALENT, 0 ms] (45) YES (46) IntTRS (47) RankingReductionPairProof [EQUIVALENT, 0 ms] (48) IntTRS (49) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (50) YES (51) JBCTerminationSCC (52) SCCToIRSProof [SOUND, 131 ms] (53) IRSwT (54) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (55) IRSwT (56) IRSwTTerminationDigraphProof [EQUIVALENT, 104 ms] (57) IRSwT (58) IntTRSCompressionProof [EQUIVALENT, 0 ms] (59) IRSwT (60) TempFilterProof [SOUND, 95 ms] (61) IntTRS (62) RankingReductionPairProof [EQUIVALENT, 5 ms] (63) IntTRS (64) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (65) IntTRS (66) RankingReductionPairProof [EQUIVALENT, 0 ms] (67) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: class Queen { static int n; static int [] queen; // position (i,queen[i]) static int nbsol; static void displayChessboard() { int i,j; //System.out.println(""); for(i=0;i=n) { displayChessboard(); nbsol++; } else { int j=0; while(!result && j=n) { displayChessboard(); nbsol++; } else { int j=0; while(!result && j f5633_0_safeMove_GE(EOS(STATIC_5633(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1465, i1466, i1466, i1464) :|: TRUE f5633_0_safeMove_GE(EOS(STATIC_5633(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1465, i1466, i1466, i1464) -> f5636_0_safeMove_GE(EOS(STATIC_5636(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1465, i1466, i1466, i1464) :|: i1466 < i1464 f5636_0_safeMove_GE(EOS(STATIC_5636(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1465, i1466, i1466, i1464) -> f5640_0_safeMove_Load(EOS(STATIC_5640(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1465, i1466) :|: i1466 < i1464 f5640_0_safeMove_Load(EOS(STATIC_5640(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1465, i1466) -> f5644_0_safeMove_EQ(EOS(STATIC_5644(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1465) :|: TRUE f5644_0_safeMove_EQ(EOS(STATIC_5644(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1492) -> f5648_0_safeMove_EQ(EOS(STATIC_5648(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1492) :|: TRUE f5644_0_safeMove_EQ(EOS(STATIC_5644(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, matching1) -> f5649_0_safeMove_EQ(EOS(STATIC_5649(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, 0) :|: TRUE && matching1 = 0 f5648_0_safeMove_EQ(EOS(STATIC_5648(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1492) -> f5651_0_safeMove_Load(EOS(STATIC_5651(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466) :|: i1492 > 0 f5651_0_safeMove_Load(EOS(STATIC_5651(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466) -> f5657_0_safeMove_Load(EOS(STATIC_5657(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1464) :|: TRUE f5657_0_safeMove_Load(EOS(STATIC_5657(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1464) -> f5662_0_safeMove_Load(EOS(STATIC_5662(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1464, i1368) :|: TRUE f5662_0_safeMove_Load(EOS(STATIC_5662(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1464, i1368) -> f5668_0_safeMove_FieldAccess(EOS(STATIC_5668(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1464, i1368, i1466) :|: TRUE f5668_0_safeMove_FieldAccess(EOS(STATIC_5668(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1464, i1368, i1466) -> f5674_0_safeMove_Load(EOS(STATIC_5674(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1464, i1368, i1466, java.lang.Object(ARRAY(i1365))) :|: TRUE f5674_0_safeMove_Load(EOS(STATIC_5674(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1464, i1368, i1466, java.lang.Object(ARRAY(i1365))) -> f5680_0_safeMove_ArrayAccess(EOS(STATIC_5680(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1464, i1368, i1466, java.lang.Object(ARRAY(i1365)), i1466) :|: TRUE f5680_0_safeMove_ArrayAccess(EOS(STATIC_5680(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1464, i1368, i1466, java.lang.Object(ARRAY(i1365)), i1466) -> f5687_0_safeMove_ArrayAccess(EOS(STATIC_5687(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1464, i1368, i1466, java.lang.Object(ARRAY(i1365)), i1466) :|: TRUE f5687_0_safeMove_ArrayAccess(EOS(STATIC_5687(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1464, i1368, i1466, java.lang.Object(ARRAY(i1365)), i1466) -> f5693_0_safeMove_InvokeMethod(EOS(STATIC_5693(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1464, i1368, i1466, i1536) :|: i1466 < i1365 f5693_0_safeMove_InvokeMethod(EOS(STATIC_5693(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1464, i1368, i1466, i1536) -> f5698_0_wrongPos_Load(EOS(STATIC_5698(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1466, i1536, i1464, i1368, i1466, i1536) :|: i1464 >= 1 && i1365 >= 1 && i1365 > i1464 && i1365 > i1368 && i1365 > i1466 && i1466 < i1464 f5693_0_safeMove_InvokeMethod(EOS(STATIC_5693(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1464, i1368, i1466, i1536) -> f5698_1_wrongPos_Load(EOS(STATIC_5698(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, i1464, i1368, i1466, i1536) :|: i1464 >= 1 && i1365 >= 1 && i1365 > i1464 && i1365 > i1368 && i1365 > i1466 && i1466 < i1464 f5698_0_wrongPos_Load(EOS(STATIC_5698(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1466, i1536, i1464, i1368, i1466, i1536) -> f6161_0_wrongPos_Load(EOS(STATIC_6161(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1466, i1536, i1464, i1368, i1466, i1536) :|: TRUE f5723_0_wrongPos_Return(EOS(STATIC_5723(java.lang.Object(ARRAY(i1567)))), i1574, i1572, i1574, i1572, i1576, matching1) -> f5726_0_wrongPos_Return(EOS(STATIC_5726(java.lang.Object(ARRAY(i1567)))), i1574, i1572, i1574, i1572, i1576, 1) :|: TRUE && matching1 = 1 f5726_0_wrongPos_Return(EOS(STATIC_5726(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, i1627, i1624) -> f5731_0_safeMove_NE(EOS(STATIC_5731(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, i1627, i1624) :|: TRUE f5731_0_safeMove_NE(EOS(STATIC_5731(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, i1627, matching1) -> f5735_0_safeMove_NE(EOS(STATIC_5735(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, i1627, 1) :|: TRUE && matching1 = 1 f5731_0_safeMove_NE(EOS(STATIC_5731(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, i1627, matching1) -> f5736_0_safeMove_NE(EOS(STATIC_5736(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, i1627, 0) :|: TRUE && matching1 = 0 f5735_0_safeMove_NE(EOS(STATIC_5735(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, i1627, matching1) -> f5742_0_safeMove_ConstantStackPush(EOS(STATIC_5742(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, i1627) :|: 1 > 0 && matching1 = 1 f5742_0_safeMove_ConstantStackPush(EOS(STATIC_5742(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, i1627) -> f5652_0_safeMove_ConstantStackPush(EOS(STATIC_5652(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, i1627) :|: TRUE f5652_0_safeMove_ConstantStackPush(EOS(STATIC_5652(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466) -> f5658_0_safeMove_Store(EOS(STATIC_5658(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, 0) :|: TRUE f5658_0_safeMove_Store(EOS(STATIC_5658(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, matching1) -> f5663_0_safeMove_Inc(EOS(STATIC_5663(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, 0, i1466) :|: TRUE && matching1 = 0 f5663_0_safeMove_Inc(EOS(STATIC_5663(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, matching1, i1466) -> f5669_0_safeMove_JMP(EOS(STATIC_5669(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, 0, i1466 + 1) :|: TRUE && matching1 = 0 f5669_0_safeMove_JMP(EOS(STATIC_5669(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, matching1, i1515) -> f5675_0_safeMove_Load(EOS(STATIC_5675(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, 0, i1515) :|: TRUE && matching1 = 0 f5675_0_safeMove_Load(EOS(STATIC_5675(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, matching1, i1515) -> f5625_0_safeMove_Load(EOS(STATIC_5625(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, 0, i1515) :|: TRUE && matching1 = 0 f5625_0_safeMove_Load(EOS(STATIC_5625(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1465, i1466) -> f5629_0_safeMove_Load(EOS(STATIC_5629(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1465, i1466, i1466) :|: TRUE f5736_0_safeMove_NE(EOS(STATIC_5736(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, i1627, matching1) -> f5743_0_safeMove_ConstantStackPush(EOS(STATIC_5743(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, i1627) :|: TRUE && matching1 = 0 f5743_0_safeMove_ConstantStackPush(EOS(STATIC_5743(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, i1627) -> f5747_0_safeMove_JMP(EOS(STATIC_5747(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, i1627, 1) :|: TRUE f5747_0_safeMove_JMP(EOS(STATIC_5747(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, i1627, matching1) -> f5750_0_safeMove_Store(EOS(STATIC_5750(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, i1627, 1) :|: TRUE && matching1 = 1 f5750_0_safeMove_Store(EOS(STATIC_5750(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, i1627, matching1) -> f5753_0_safeMove_Inc(EOS(STATIC_5753(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, 1, i1627) :|: TRUE && matching1 = 1 f5753_0_safeMove_Inc(EOS(STATIC_5753(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, matching1, i1627) -> f5757_0_safeMove_JMP(EOS(STATIC_5757(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, 1, i1627 + 1) :|: TRUE && matching1 = 1 f5757_0_safeMove_JMP(EOS(STATIC_5757(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, matching1, i1685) -> f5761_0_safeMove_Load(EOS(STATIC_5761(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, 1, i1685) :|: TRUE && matching1 = 1 f5761_0_safeMove_Load(EOS(STATIC_5761(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, matching1, i1685) -> f5625_0_safeMove_Load(EOS(STATIC_5625(java.lang.Object(ARRAY(i1622)))), i1625, i1626, i1625, i1626, 1, i1685) :|: TRUE && matching1 = 1 f5724_0_wrongPos_Return(EOS(STATIC_5724(java.lang.Object(ARRAY(i1584)))), i1590, i1588, i1590, i1588, i1592, matching1) -> f5723_0_wrongPos_Return(EOS(STATIC_5723(java.lang.Object(ARRAY(i1584)))), i1590, i1588, i1590, i1588, i1592, 1) :|: TRUE && matching1 = 1 f5725_0_wrongPos_Return(EOS(STATIC_5725(java.lang.Object(ARRAY(i1602)))), i1608, i1606, i1608, i1606, i1610, matching1) -> f5726_0_wrongPos_Return(EOS(STATIC_5726(java.lang.Object(ARRAY(i1602)))), i1608, i1606, i1608, i1606, i1610, 0) :|: TRUE && matching1 = 0 f5649_0_safeMove_EQ(EOS(STATIC_5649(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466, matching1) -> f5652_0_safeMove_ConstantStackPush(EOS(STATIC_5652(java.lang.Object(ARRAY(i1365)))), i1464, i1368, i1464, i1368, i1466) :|: TRUE && matching1 = 0 f5698_1_wrongPos_Load(EOS(STATIC_5698(java.lang.Object(ARRAY(i1567)))), i1574, i1572, i1574, i1572, i1576, i1574, i1572, i1576, i1572) -> f5723_0_wrongPos_Return(EOS(STATIC_5723(java.lang.Object(ARRAY(i1567)))), i1574, i1572, i1574, i1572, i1576, 1) :|: TRUE f5698_1_wrongPos_Load(EOS(STATIC_5698(java.lang.Object(ARRAY(i1584)))), i1590, i1588, i1590, i1588, i1592, i1590, i1588, i1592, i1536) -> f5724_0_wrongPos_Return(EOS(STATIC_5724(java.lang.Object(ARRAY(i1584)))), i1590, i1588, i1590, i1588, i1592, 1) :|: TRUE f5698_1_wrongPos_Load(EOS(STATIC_5698(java.lang.Object(ARRAY(i1602)))), i1608, i1606, i1608, i1606, i1610, i1608, i1606, i1610, i1536) -> f5725_0_wrongPos_Return(EOS(STATIC_5725(java.lang.Object(ARRAY(i1602)))), i1608, i1606, i1608, i1606, i1610, 0) :|: TRUE Combined rules. Obtained 6 IRulesP rules: f5629_0_safeMove_Load(EOS(STATIC_5629(java.lang.Object(ARRAY(i1365:0)))), i1464:0, i1368:0, i1464:0, i1368:0, 0, i1466:0, i1466:0) -> f5629_0_safeMove_Load(EOS(STATIC_5629(java.lang.Object(ARRAY(i1365:0)))), i1464:0, i1368:0, i1464:0, i1368:0, 0, i1466:0 + 1, i1466:0 + 1) :|: i1466:0 < i1464:0 f5629_0_safeMove_Load(EOS(STATIC_5629(java.lang.Object(ARRAY(i1365:0)))), i1464:0, i1368:0, i1464:0, i1368:0, i1465:0, i1466:0, i1466:0) -> f5731_0_safeMove_NE(EOS(STATIC_5731(java.lang.Object(ARRAY(i1365:0)))), i1464:0, i1368:0, i1464:0, i1368:0, i1466:0, 1) :|: i1466:0 < i1464:0 && i1465:0 > 0 && i1365:0 > 0 && i1464:0 > 0 && i1464:0 < i1365:0 && i1368:0 < i1365:0 && i1466:0 < i1365:0 f5731_0_safeMove_NE(EOS(STATIC_5731(java.lang.Object(ARRAY(i1622:0)))), i1625:0, i1626:0, i1625:0, i1626:0, i1627:0, 0) -> f5629_0_safeMove_Load(EOS(STATIC_5629(java.lang.Object(ARRAY(i1622:0)))), i1625:0, i1626:0, i1625:0, i1626:0, 1, i1627:0 + 1, i1627:0 + 1) :|: TRUE f5629_0_safeMove_Load(EOS(STATIC_5629(java.lang.Object(ARRAY(i1365:0)))), i1464:0, i1368:0, i1464:0, i1368:0, i1465:0, i1466:0, i1466:0) -> f5731_0_safeMove_NE(EOS(STATIC_5731(java.lang.Object(ARRAY(i1365:0)))), i1464:0, i1368:0, i1464:0, i1368:0, i1466:0, 0) :|: i1466:0 < i1464:0 && i1465:0 > 0 && i1365:0 > 0 && i1464:0 > 0 && i1464:0 < i1365:0 && i1368:0 < i1365:0 && i1466:0 < i1365:0 f5731_0_safeMove_NE(EOS(STATIC_5731(java.lang.Object(ARRAY(i1622:0)))), i1625:0, i1626:0, i1625:0, i1626:0, i1627:0, 1) -> f5629_0_safeMove_Load(EOS(STATIC_5629(java.lang.Object(ARRAY(i1622:0)))), i1625:0, i1626:0, i1625:0, i1626:0, 0, i1627:0 + 1, i1627:0 + 1) :|: TRUE Removed following non-SCC rules: f5629_0_safeMove_Load(EOS(STATIC_5629(java.lang.Object(ARRAY(i1365:0)))), i1464:0, i1368:0, i1464:0, i1368:0, i1465:0, i1466:0, i1466:0) -> f6161_0_wrongPos_Load(EOS(STATIC_6161(java.lang.Object(ARRAY(i1365:0)))), i1464:0, i1368:0, i1466:0, i1536:0, i1464:0, i1368:0, i1466:0, i1536:0) :|: i1466:0 < i1464:0 && i1465:0 > 0 && i1365:0 > 0 && i1464:0 > 0 && i1464:0 < i1365:0 && i1368:0 < i1365:0 && i1466:0 < i1365:0 Filtered duplicate arguments: f5629_0_safeMove_Load(x1, x2, x3, x4, x5, x6, x7, x8) -> f5629_0_safeMove_Load(x1, x4, x5, x6, x8) f5731_0_safeMove_NE(x1, x2, x3, x4, x5, x6, x7) -> f5731_0_safeMove_NE(x1, x4, x5, x6, x7) Finished conversion. Obtained 5 rules.P rules: f5629_0_safeMove_Load(i1464:0, i1368:0, cons_0, i1466:0, i1365:0) -> f5629_0_safeMove_Load(i1464:0, i1368:0, 0, i1466:0 + 1, i1365:0) :|: i1466:0 < i1464:0 && cons_0 = 0 f5629_0_safeMove_Load(i1464:0, i1368:0, i1465:0, i1466:0, i1365:0) -> f5731_0_safeMove_NE(i1464:0, i1368:0, i1466:0, 1, i1365:0) :|: i1465:0 > 0 && i1466:0 < i1464:0 && i1365:0 > 0 && i1464:0 > 0 && i1464:0 < i1365:0 && i1466:0 < i1365:0 && i1368:0 < i1365:0 f5731_0_safeMove_NE(i1625:0, i1626:0, i1627:0, cons_0, i1622:0) -> f5629_0_safeMove_Load(i1625:0, i1626:0, 1, i1627:0 + 1, i1622:0) :|: TRUE && cons_0 = 0 f5629_0_safeMove_Load(i1464:0, i1368:0, i1465:0, i1466:0, i1365:0) -> f5731_0_safeMove_NE(i1464:0, i1368:0, i1466:0, 0, i1365:0) :|: i1465:0 > 0 && i1466:0 < i1464:0 && i1365:0 > 0 && i1464:0 > 0 && i1464:0 < i1365:0 && i1466:0 < i1365:0 && i1368:0 < i1365:0 f5731_0_safeMove_NE(i1625:0, i1626:0, i1627:0, cons_1, i1622:0) -> f5629_0_safeMove_Load(i1625:0, i1626:0, 0, i1627:0 + 1, i1622:0) :|: TRUE && cons_1 = 1 ---------------------------------------- (9) Obligation: Rules: f5629_0_safeMove_Load(i1464:0, i1368:0, cons_0, i1466:0, i1365:0) -> f5629_0_safeMove_Load(i1464:0, i1368:0, 0, i1466:0 + 1, i1365:0) :|: i1466:0 < i1464:0 && cons_0 = 0 f5629_0_safeMove_Load(x, x1, x2, x3, x4) -> f5731_0_safeMove_NE(x, x1, x3, 1, x4) :|: x2 > 0 && x3 < x && x4 > 0 && x > 0 && x < x4 && x3 < x4 && x1 < x4 f5731_0_safeMove_NE(x5, x6, x7, x8, x9) -> f5629_0_safeMove_Load(x5, x6, 1, x7 + 1, x9) :|: TRUE && x8 = 0 f5629_0_safeMove_Load(x10, x11, x12, x13, x14) -> f5731_0_safeMove_NE(x10, x11, x13, 0, x14) :|: x12 > 0 && x13 < x10 && x14 > 0 && x10 > 0 && x10 < x14 && x13 < x14 && x11 < x14 f5731_0_safeMove_NE(i1625:0, i1626:0, i1627:0, cons_1, i1622:0) -> f5629_0_safeMove_Load(i1625:0, i1626:0, 0, i1627:0 + 1, i1622:0) :|: TRUE && cons_1 = 1 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f5629_0_safeMove_Load(i1464:0, i1368:0, cons_0, i1466:0, i1365:0) -> f5629_0_safeMove_Load(i1464:0, i1368:0, 0, arith, i1365:0) :|: i1466:0 < i1464:0 && cons_0 = 0 && arith = i1466:0 + 1 f5629_0_safeMove_Load(x, x1, x2, x3, x4) -> f5731_0_safeMove_NE(x, x1, x3, 1, x4) :|: x2 > 0 && x3 < x && x4 > 0 && x > 0 && x < x4 && x3 < x4 && x1 < x4 f5731_0_safeMove_NE(x15, x16, x17, x18, x19) -> f5629_0_safeMove_Load(x15, x16, 1, x20, x19) :|: TRUE && x18 = 0 && x20 = x17 + 1 f5629_0_safeMove_Load(x10, x11, x12, x13, x14) -> f5731_0_safeMove_NE(x10, x11, x13, 0, x14) :|: x12 > 0 && x13 < x10 && x14 > 0 && x10 > 0 && x10 < x14 && x13 < x14 && x11 < x14 f5731_0_safeMove_NE(x21, x22, x23, x24, x25) -> f5629_0_safeMove_Load(x21, x22, 0, x26, x25) :|: TRUE && x24 = 1 && x26 = x23 + 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f5629_0_safeMove_Load(i1464:0, i1368:0, cons_0, i1466:0, i1365:0) -> f5629_0_safeMove_Load(i1464:0, i1368:0, 0, arith, i1365:0) :|: i1466:0 < i1464:0 && cons_0 = 0 && arith = i1466:0 + 1 (2) f5629_0_safeMove_Load(x, x1, x2, x3, x4) -> f5731_0_safeMove_NE(x, x1, x3, 1, x4) :|: x2 > 0 && x3 < x && x4 > 0 && x > 0 && x < x4 && x3 < x4 && x1 < x4 (3) f5731_0_safeMove_NE(x15, x16, x17, x18, x19) -> f5629_0_safeMove_Load(x15, x16, 1, x20, x19) :|: TRUE && x18 = 0 && x20 = x17 + 1 (4) f5629_0_safeMove_Load(x10, x11, x12, x13, x14) -> f5731_0_safeMove_NE(x10, x11, x13, 0, x14) :|: x12 > 0 && x13 < x10 && x14 > 0 && x10 > 0 && x10 < x14 && x13 < x14 && x11 < x14 (5) f5731_0_safeMove_NE(x21, x22, x23, x24, x25) -> f5629_0_safeMove_Load(x21, x22, 0, x26, x25) :|: TRUE && x24 = 1 && x26 = x23 + 1 Arcs: (1) -> (1) (2) -> (5) (3) -> (2), (4) (4) -> (3) (5) -> (1) This digraph is fully evaluated! ---------------------------------------- (13) Complex Obligation (AND) ---------------------------------------- (14) Obligation: Termination digraph: Nodes: (1) f5731_0_safeMove_NE(x15, x16, x17, x18, x19) -> f5629_0_safeMove_Load(x15, x16, 1, x20, x19) :|: TRUE && x18 = 0 && x20 = x17 + 1 (2) f5629_0_safeMove_Load(x10, x11, x12, x13, x14) -> f5731_0_safeMove_NE(x10, x11, x13, 0, x14) :|: x12 > 0 && x13 < x10 && x14 > 0 && x10 > 0 && x10 < x14 && x13 < x14 && x11 < x14 Arcs: (1) -> (2) (2) -> (1) This digraph is fully evaluated! ---------------------------------------- (15) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (16) Obligation: Rules: f5731_0_safeMove_NE(x15:0, x16:0, x17:0, cons_0, x19:0) -> f5731_0_safeMove_NE(x15:0, x16:0, x17:0 + 1, 0, x19:0) :|: x19:0 > x17:0 + 1 && x19:0 > x16:0 && x19:0 > x15:0 && x15:0 > 0 && x17:0 + 1 < x15:0 && x19:0 > 0 && cons_0 = 0 ---------------------------------------- (17) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f5731_0_safeMove_NE(INTEGER, INTEGER, INTEGER, VARIABLE, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (18) Obligation: Rules: f5731_0_safeMove_NE(x15:0, x16:0, x17:0, c, x19:0) -> f5731_0_safeMove_NE(x15:0, x16:0, c1, c2, x19:0) :|: c2 = 0 && (c1 = x17:0 + 1 && c = 0) && (x19:0 > x17:0 + 1 && x19:0 > x16:0 && x19:0 > x15:0 && x15:0 > 0 && x17:0 + 1 < x15:0 && x19:0 > 0 && cons_0 = 0) ---------------------------------------- (19) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f5731_0_safeMove_NE ] = f5731_0_safeMove_NE_5 + -1*f5731_0_safeMove_NE_3 The following rules are decreasing: f5731_0_safeMove_NE(x15:0, x16:0, x17:0, c, x19:0) -> f5731_0_safeMove_NE(x15:0, x16:0, c1, c2, x19:0) :|: c2 = 0 && (c1 = x17:0 + 1 && c = 0) && (x19:0 > x17:0 + 1 && x19:0 > x16:0 && x19:0 > x15:0 && x15:0 > 0 && x17:0 + 1 < x15:0 && x19:0 > 0 && cons_0 = 0) The following rules are bounded: f5731_0_safeMove_NE(x15:0, x16:0, x17:0, c, x19:0) -> f5731_0_safeMove_NE(x15:0, x16:0, c1, c2, x19:0) :|: c2 = 0 && (c1 = x17:0 + 1 && c = 0) && (x19:0 > x17:0 + 1 && x19:0 > x16:0 && x19:0 > x15:0 && x15:0 > 0 && x17:0 + 1 < x15:0 && x19:0 > 0 && cons_0 = 0) ---------------------------------------- (20) YES ---------------------------------------- (21) Obligation: Termination digraph: Nodes: (1) f5629_0_safeMove_Load(i1464:0, i1368:0, cons_0, i1466:0, i1365:0) -> f5629_0_safeMove_Load(i1464:0, i1368:0, 0, arith, i1365:0) :|: i1466:0 < i1464:0 && cons_0 = 0 && arith = i1466:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (22) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (23) Obligation: Rules: f5629_0_safeMove_Load(i1464:0:0, i1368:0:0, cons_0, i1466:0:0, i1365:0:0) -> f5629_0_safeMove_Load(i1464:0:0, i1368:0:0, 0, i1466:0:0 + 1, i1365:0:0) :|: i1466:0:0 < i1464:0:0 && cons_0 = 0 ---------------------------------------- (24) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f5629_0_safeMove_Load(x1, x2, x3, x4, x5) -> f5629_0_safeMove_Load(x1, x3, x4) ---------------------------------------- (25) Obligation: Rules: f5629_0_safeMove_Load(i1464:0:0, cons_0, i1466:0:0) -> f5629_0_safeMove_Load(i1464:0:0, 0, i1466:0:0 + 1) :|: i1466:0:0 < i1464:0:0 && cons_0 = 0 ---------------------------------------- (26) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f5629_0_safeMove_Load(INTEGER, VARIABLE, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (27) Obligation: Rules: f5629_0_safeMove_Load(i1464:0:0, c, i1466:0:0) -> f5629_0_safeMove_Load(i1464:0:0, c1, c2) :|: c2 = i1466:0:0 + 1 && (c1 = 0 && c = 0) && (i1466:0:0 < i1464:0:0 && cons_0 = 0) ---------------------------------------- (28) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f5629_0_safeMove_Load ] = -1*f5629_0_safeMove_Load_3 + f5629_0_safeMove_Load_1 The following rules are decreasing: f5629_0_safeMove_Load(i1464:0:0, c, i1466:0:0) -> f5629_0_safeMove_Load(i1464:0:0, c1, c2) :|: c2 = i1466:0:0 + 1 && (c1 = 0 && c = 0) && (i1466:0:0 < i1464:0:0 && cons_0 = 0) The following rules are bounded: f5629_0_safeMove_Load(i1464:0:0, c, i1466:0:0) -> f5629_0_safeMove_Load(i1464:0:0, c1, c2) :|: c2 = i1466:0:0 + 1 && (c1 = 0 && c = 0) && (i1466:0:0 < i1464:0:0 && cons_0 = 0) ---------------------------------------- (29) YES ---------------------------------------- (30) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Queen.displayChessboard()V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (31) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 31 IRulesP rules: f5844_0_displayChessboard_FieldAccess(EOS(STATIC_5844(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1773) -> f5848_0_displayChessboard_GE(EOS(STATIC_5848(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1773, i1772) :|: TRUE f5848_0_displayChessboard_GE(EOS(STATIC_5848(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1773, i1772) -> f5853_0_displayChessboard_GE(EOS(STATIC_5853(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1773, i1772) :|: i1773 < i1772 f5853_0_displayChessboard_GE(EOS(STATIC_5853(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1773, i1772) -> f5857_0_displayChessboard_ConstantStackPush(EOS(STATIC_5857(i1772, java.lang.Object(ARRAY(i1772)))), i1773) :|: i1773 < i1772 f5857_0_displayChessboard_ConstantStackPush(EOS(STATIC_5857(i1772, java.lang.Object(ARRAY(i1772)))), i1773) -> f5861_0_displayChessboard_Store(EOS(STATIC_5861(i1772, java.lang.Object(ARRAY(i1772)))), i1773, 0) :|: TRUE f5861_0_displayChessboard_Store(EOS(STATIC_5861(i1772, java.lang.Object(ARRAY(i1772)))), i1773, matching1) -> f5865_0_displayChessboard_Load(EOS(STATIC_5865(i1772, java.lang.Object(ARRAY(i1772)))), i1773, 0) :|: TRUE && matching1 = 0 f5865_0_displayChessboard_Load(EOS(STATIC_5865(i1772, java.lang.Object(ARRAY(i1772)))), i1773, matching1) -> f5914_0_displayChessboard_Load(EOS(STATIC_5914(i1772, java.lang.Object(ARRAY(i1772)))), i1773, 0) :|: TRUE && matching1 = 0 f5914_0_displayChessboard_Load(EOS(STATIC_5914(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1840) -> f5957_0_displayChessboard_Load(EOS(STATIC_5957(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1840) :|: TRUE f5957_0_displayChessboard_Load(EOS(STATIC_5957(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1883) -> f6008_0_displayChessboard_Load(EOS(STATIC_6008(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1883) :|: TRUE f6008_0_displayChessboard_Load(EOS(STATIC_6008(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947) -> f6012_0_displayChessboard_FieldAccess(EOS(STATIC_6012(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, i1947) :|: TRUE f6012_0_displayChessboard_FieldAccess(EOS(STATIC_6012(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, i1947) -> f6015_0_displayChessboard_GE(EOS(STATIC_6015(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, i1947, i1772) :|: TRUE f6015_0_displayChessboard_GE(EOS(STATIC_6015(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, i1947, i1772) -> f6018_0_displayChessboard_GE(EOS(STATIC_6018(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, i1947, i1772) :|: i1947 >= i1772 f6015_0_displayChessboard_GE(EOS(STATIC_6015(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, i1947, i1772) -> f6019_0_displayChessboard_GE(EOS(STATIC_6019(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, i1947, i1772) :|: i1947 < i1772 f6018_0_displayChessboard_GE(EOS(STATIC_6018(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, i1947, i1772) -> f6023_0_displayChessboard_Inc(EOS(STATIC_6023(i1772, java.lang.Object(ARRAY(i1772)))), i1773) :|: i1947 >= i1772 f6023_0_displayChessboard_Inc(EOS(STATIC_6023(i1772, java.lang.Object(ARRAY(i1772)))), i1773) -> f6026_0_displayChessboard_JMP(EOS(STATIC_6026(i1772, java.lang.Object(ARRAY(i1772)))), i1773 + 1) :|: TRUE f6026_0_displayChessboard_JMP(EOS(STATIC_6026(i1772, java.lang.Object(ARRAY(i1772)))), i1950) -> f6029_0_displayChessboard_Load(EOS(STATIC_6029(i1772, java.lang.Object(ARRAY(i1772)))), i1950) :|: TRUE f6029_0_displayChessboard_Load(EOS(STATIC_6029(i1772, java.lang.Object(ARRAY(i1772)))), i1950) -> f5841_0_displayChessboard_Load(EOS(STATIC_5841(i1772, java.lang.Object(ARRAY(i1772)))), i1950) :|: TRUE f5841_0_displayChessboard_Load(EOS(STATIC_5841(i1772, java.lang.Object(ARRAY(i1772)))), i1773) -> f5844_0_displayChessboard_FieldAccess(EOS(STATIC_5844(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1773) :|: TRUE f6019_0_displayChessboard_GE(EOS(STATIC_6019(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, i1947, i1772) -> f6024_0_displayChessboard_FieldAccess(EOS(STATIC_6024(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947) :|: i1947 < i1772 f6024_0_displayChessboard_FieldAccess(EOS(STATIC_6024(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947) -> f6027_0_displayChessboard_Load(EOS(STATIC_6027(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, java.lang.Object(ARRAY(i1772))) :|: TRUE f6027_0_displayChessboard_Load(EOS(STATIC_6027(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, java.lang.Object(ARRAY(i1772))) -> f6030_0_displayChessboard_ArrayAccess(EOS(STATIC_6030(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, java.lang.Object(ARRAY(i1772)), i1773) :|: TRUE f6030_0_displayChessboard_ArrayAccess(EOS(STATIC_6030(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, java.lang.Object(ARRAY(i1772)), i1773) -> f6033_0_displayChessboard_ArrayAccess(EOS(STATIC_6033(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, java.lang.Object(ARRAY(i1772)), i1773) :|: TRUE f6033_0_displayChessboard_ArrayAccess(EOS(STATIC_6033(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, java.lang.Object(ARRAY(i1772)), i1773) -> f6038_0_displayChessboard_Load(EOS(STATIC_6038(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, i1976) :|: i1773 < i1772 f6038_0_displayChessboard_Load(EOS(STATIC_6038(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, i1976) -> f6043_0_displayChessboard_EQ(EOS(STATIC_6043(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, i1976, i1947) :|: TRUE f6043_0_displayChessboard_EQ(EOS(STATIC_6043(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, i1947, i1947) -> f6048_0_displayChessboard_EQ(EOS(STATIC_6048(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, i1947, i1947) :|: i1976 = i1947 f6043_0_displayChessboard_EQ(EOS(STATIC_6043(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, i1976, i1947) -> f6049_0_displayChessboard_EQ(EOS(STATIC_6049(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, i1976, i1947) :|: !(i1976 = i1947) f6048_0_displayChessboard_EQ(EOS(STATIC_6048(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, i1947, i1947) -> f6053_0_displayChessboard_Inc(EOS(STATIC_6053(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947) :|: TRUE f6053_0_displayChessboard_Inc(EOS(STATIC_6053(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947) -> f6061_0_displayChessboard_JMP(EOS(STATIC_6061(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947 + 1) :|: TRUE f6061_0_displayChessboard_JMP(EOS(STATIC_6061(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i2008) -> f6066_0_displayChessboard_Load(EOS(STATIC_6066(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i2008) :|: TRUE f6066_0_displayChessboard_Load(EOS(STATIC_6066(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i2008) -> f6008_0_displayChessboard_Load(EOS(STATIC_6008(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i2008) :|: TRUE f6049_0_displayChessboard_EQ(EOS(STATIC_6049(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947, i1976, i1947) -> f6054_0_displayChessboard_Inc(EOS(STATIC_6054(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947) :|: !(i1976 = i1947) f6054_0_displayChessboard_Inc(EOS(STATIC_6054(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947) -> f6053_0_displayChessboard_Inc(EOS(STATIC_6053(i1772, java.lang.Object(ARRAY(i1772)))), i1773, i1947) :|: TRUE Combined rules. Obtained 4 IRulesP rules: f6015_0_displayChessboard_GE(EOS(STATIC_6015(i1772:0, java.lang.Object(ARRAY(i1772:0)))), i1773:0, i1947:0, i1947:0, i1772:0) -> f6015_0_displayChessboard_GE(EOS(STATIC_6015(i1772:0, java.lang.Object(ARRAY(i1772:0)))), i1773:0, i1947:0 + 1, i1947:0 + 1, i1772:0) :|: i1947:0 < i1772:0 && i1773:0 < i1772:0 f6015_0_displayChessboard_GE(EOS(STATIC_6015(i1772:0, java.lang.Object(ARRAY(i1772:0)))), i1773:0, i1947:0, i1947:0, i1772:0) -> f6015_0_displayChessboard_GE(EOS(STATIC_6015(i1772:0, java.lang.Object(ARRAY(i1772:0)))), i1773:0 + 1, 0, 0, i1772:0) :|: i1773:0 + 1 < i1772:0 && i1947:0 >= i1772:0 f6015_0_displayChessboard_GE(EOS(STATIC_6015(i1772:0, java.lang.Object(ARRAY(i1772:0)))), i1773:0, i1947:0, i1947:0, i1772:0) -> f6015_0_displayChessboard_GE(EOS(STATIC_6015(i1772:0, java.lang.Object(ARRAY(i1772:0)))), i1773:0, i1947:0 + 1, i1947:0 + 1, i1772:0) :|: i1947:0 < i1772:0 && i1773:0 < i1772:0 && i1976:0 < i1947:0 f6015_0_displayChessboard_GE(EOS(STATIC_6015(i1772:0, java.lang.Object(ARRAY(i1772:0)))), i1773:0, i1947:0, i1947:0, i1772:0) -> f6015_0_displayChessboard_GE(EOS(STATIC_6015(i1772:0, java.lang.Object(ARRAY(i1772:0)))), i1773:0, i1947:0 + 1, i1947:0 + 1, i1772:0) :|: i1947:0 < i1772:0 && i1773:0 < i1772:0 && i1976:0 > i1947:0 Filtered duplicate arguments: f6015_0_displayChessboard_GE(x1, x2, x3, x4, x5) -> f6015_0_displayChessboard_GE(x1, x2, x4, x5) Finished conversion. Obtained 4 rules.P rules: f6015_0_displayChessboard_GE(i1773:0, i1947:0, i1772:0, i1772:0, i1772:0) -> f6015_0_displayChessboard_GE(i1773:0, i1947:0 + 1, i1772:0, i1772:0, i1772:0) :|: i1947:0 < i1772:0 && i1773:0 < i1772:0 f6015_0_displayChessboard_GE(i1773:0, i1947:0, i1772:0, i1772:0, i1772:0) -> f6015_0_displayChessboard_GE(i1773:0 + 1, 0, i1772:0, i1772:0, i1772:0) :|: i1773:0 + 1 < i1772:0 && i1947:0 >= i1772:0 f6015_0_displayChessboard_GE(i1773:0, i1947:0, i1772:0, i1772:0, i1772:0) -> f6015_0_displayChessboard_GE(i1773:0, i1947:0 + 1, i1772:0, i1772:0, i1772:0) :|: i1773:0 < i1772:0 && i1976:0 < i1947:0 && i1947:0 < i1772:0 f6015_0_displayChessboard_GE(i1773:0, i1947:0, i1772:0, i1772:0, i1772:0) -> f6015_0_displayChessboard_GE(i1773:0, i1947:0 + 1, i1772:0, i1772:0, i1772:0) :|: i1773:0 < i1772:0 && i1976:0 > i1947:0 && i1947:0 < i1772:0 ---------------------------------------- (32) Obligation: Rules: f6015_0_displayChessboard_GE(i1773:0, i1947:0, i1772:0, i1772:0, i1772:0) -> f6015_0_displayChessboard_GE(i1773:0, i1947:0 + 1, i1772:0, i1772:0, i1772:0) :|: i1947:0 < i1772:0 && i1773:0 < i1772:0 f6015_0_displayChessboard_GE(x, x1, x2, x2, x2) -> f6015_0_displayChessboard_GE(x + 1, 0, x2, x2, x2) :|: x + 1 < x2 && x1 >= x2 f6015_0_displayChessboard_GE(x3, x4, x5, x5, x5) -> f6015_0_displayChessboard_GE(x3, x4 + 1, x5, x5, x5) :|: x3 < x5 && x6 < x4 && x4 < x5 f6015_0_displayChessboard_GE(x7, x8, x9, x9, x9) -> f6015_0_displayChessboard_GE(x7, x8 + 1, x9, x9, x9) :|: x7 < x9 && x10 > x8 && x8 < x9 ---------------------------------------- (33) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (34) Obligation: Rules: f6015_0_displayChessboard_GE(i1773:0, i1947:0, i1772:0, i1772:0, i1772:0) -> f6015_0_displayChessboard_GE(i1773:0, arith, i1772:0, i1772:0, i1772:0) :|: i1947:0 < i1772:0 && i1773:0 < i1772:0 && arith = i1947:0 + 1 f6015_0_displayChessboard_GE(x11, x12, x13, x13, x13) -> f6015_0_displayChessboard_GE(x14, 0, x13, x13, x13) :|: x11 + 1 < x13 && x12 >= x13 && x14 = x11 + 1 f6015_0_displayChessboard_GE(x15, x16, x17, x17, x17) -> f6015_0_displayChessboard_GE(x15, x18, x17, x17, x17) :|: x15 < x17 && x19 < x16 && x16 < x17 && x18 = x16 + 1 f6015_0_displayChessboard_GE(x20, x21, x22, x22, x22) -> f6015_0_displayChessboard_GE(x20, x23, x22, x22, x22) :|: x20 < x22 && x24 > x21 && x21 < x22 && x23 = x21 + 1 ---------------------------------------- (35) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f6015_0_displayChessboard_GE(i1773:0, i1947:0, i1772:0, i1772:0, i1772:0) -> f6015_0_displayChessboard_GE(i1773:0, arith, i1772:0, i1772:0, i1772:0) :|: i1947:0 < i1772:0 && i1773:0 < i1772:0 && arith = i1947:0 + 1 (2) f6015_0_displayChessboard_GE(x11, x12, x13, x13, x13) -> f6015_0_displayChessboard_GE(x14, 0, x13, x13, x13) :|: x11 + 1 < x13 && x12 >= x13 && x14 = x11 + 1 (3) f6015_0_displayChessboard_GE(x15, x16, x17, x17, x17) -> f6015_0_displayChessboard_GE(x15, x18, x17, x17, x17) :|: x15 < x17 && x19 < x16 && x16 < x17 && x18 = x16 + 1 (4) f6015_0_displayChessboard_GE(x20, x21, x22, x22, x22) -> f6015_0_displayChessboard_GE(x20, x23, x22, x22, x22) :|: x20 < x22 && x24 > x21 && x21 < x22 && x23 = x21 + 1 Arcs: (1) -> (1), (2), (3), (4) (2) -> (1), (2), (3), (4) (3) -> (1), (2), (3), (4) (4) -> (1), (2), (3), (4) This digraph is fully evaluated! ---------------------------------------- (36) Obligation: Termination digraph: Nodes: (1) f6015_0_displayChessboard_GE(i1773:0, i1947:0, i1772:0, i1772:0, i1772:0) -> f6015_0_displayChessboard_GE(i1773:0, arith, i1772:0, i1772:0, i1772:0) :|: i1947:0 < i1772:0 && i1773:0 < i1772:0 && arith = i1947:0 + 1 (2) f6015_0_displayChessboard_GE(x11, x12, x13, x13, x13) -> f6015_0_displayChessboard_GE(x14, 0, x13, x13, x13) :|: x11 + 1 < x13 && x12 >= x13 && x14 = x11 + 1 (3) f6015_0_displayChessboard_GE(x15, x16, x17, x17, x17) -> f6015_0_displayChessboard_GE(x15, x18, x17, x17, x17) :|: x15 < x17 && x19 < x16 && x16 < x17 && x18 = x16 + 1 (4) f6015_0_displayChessboard_GE(x20, x21, x22, x22, x22) -> f6015_0_displayChessboard_GE(x20, x23, x22, x22, x22) :|: x20 < x22 && x24 > x21 && x21 < x22 && x23 = x21 + 1 Arcs: (1) -> (1), (2), (3), (4) (2) -> (1), (2), (3), (4) (3) -> (1), (2), (3), (4) (4) -> (1), (2), (3), (4) This digraph is fully evaluated! ---------------------------------------- (37) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (38) Obligation: Rules: f6015_0_displayChessboard_GE(x20:0, x21:0, x22:0, x22:0, x22:0) -> f6015_0_displayChessboard_GE(x20:0, x21:0 + 1, x22:0, x22:0, x22:0) :|: x22:0 > x20:0 && x24:0 > x21:0 && x22:0 > x21:0 f6015_0_displayChessboard_GE(x15:0, x16:0, x17:0, x17:0, x17:0) -> f6015_0_displayChessboard_GE(x15:0, x16:0 + 1, x17:0, x17:0, x17:0) :|: x17:0 > x15:0 && x19:0 < x16:0 && x17:0 > x16:0 f6015_0_displayChessboard_GE(i1773:0:0, i1947:0:0, i1772:0:0, i1772:0:0, i1772:0:0) -> f6015_0_displayChessboard_GE(i1773:0:0, i1947:0:0 + 1, i1772:0:0, i1772:0:0, i1772:0:0) :|: i1947:0:0 < i1772:0:0 && i1773:0:0 < i1772:0:0 f6015_0_displayChessboard_GE(x11:0, x12:0, x13:0, x13:0, x13:0) -> f6015_0_displayChessboard_GE(x11:0 + 1, 0, x13:0, x13:0, x13:0) :|: x13:0 > x11:0 + 1 && x13:0 <= x12:0 ---------------------------------------- (39) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f6015_0_displayChessboard_GE(INTEGER, VARIABLE, INTEGER, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (40) Obligation: Rules: f6015_0_displayChessboard_GE(x20:0, x21:0, x22:0, x22:0, x22:0) -> f6015_0_displayChessboard_GE(x20:0, c, x22:0, x22:0, x22:0) :|: c = x21:0 + 1 && (x22:0 > x20:0 && x24:0 > x21:0 && x22:0 > x21:0) f6015_0_displayChessboard_GE(x15:0, x16:0, x17:0, x17:0, x17:0) -> f6015_0_displayChessboard_GE(x15:0, c1, x17:0, x17:0, x17:0) :|: c1 = x16:0 + 1 && (x17:0 > x15:0 && x19:0 < x16:0 && x17:0 > x16:0) f6015_0_displayChessboard_GE(i1773:0:0, i1947:0:0, i1772:0:0, i1772:0:0, i1772:0:0) -> f6015_0_displayChessboard_GE(i1773:0:0, c2, i1772:0:0, i1772:0:0, i1772:0:0) :|: c2 = i1947:0:0 + 1 && (i1947:0:0 < i1772:0:0 && i1773:0:0 < i1772:0:0) f6015_0_displayChessboard_GE(x11:0, x12:0, x13:0, x13:0, x13:0) -> f6015_0_displayChessboard_GE(c3, c4, x13:0, x13:0, x13:0) :|: c4 = 0 && c3 = x11:0 + 1 && (x13:0 > x11:0 + 1 && x13:0 <= x12:0) ---------------------------------------- (41) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f6015_0_displayChessboard_GE(x, x1, x2, x3, x4)] = -1 - x + x3 The following rules are decreasing: f6015_0_displayChessboard_GE(x11:0, x12:0, x13:0, x13:0, x13:0) -> f6015_0_displayChessboard_GE(c3, c4, x13:0, x13:0, x13:0) :|: c4 = 0 && c3 = x11:0 + 1 && (x13:0 > x11:0 + 1 && x13:0 <= x12:0) The following rules are bounded: f6015_0_displayChessboard_GE(i1773:0:0, i1947:0:0, i1772:0:0, i1772:0:0, i1772:0:0) -> f6015_0_displayChessboard_GE(i1773:0:0, c2, i1772:0:0, i1772:0:0, i1772:0:0) :|: c2 = i1947:0:0 + 1 && (i1947:0:0 < i1772:0:0 && i1773:0:0 < i1772:0:0) ---------------------------------------- (42) Complex Obligation (AND) ---------------------------------------- (43) Obligation: Rules: f6015_0_displayChessboard_GE(x20:0, x21:0, x22:0, x22:0, x22:0) -> f6015_0_displayChessboard_GE(x20:0, c, x22:0, x22:0, x22:0) :|: c = x21:0 + 1 && (x22:0 > x20:0 && x24:0 > x21:0 && x22:0 > x21:0) f6015_0_displayChessboard_GE(x15:0, x16:0, x17:0, x17:0, x17:0) -> f6015_0_displayChessboard_GE(x15:0, c1, x17:0, x17:0, x17:0) :|: c1 = x16:0 + 1 && (x17:0 > x15:0 && x19:0 < x16:0 && x17:0 > x16:0) f6015_0_displayChessboard_GE(i1773:0:0, i1947:0:0, i1772:0:0, i1772:0:0, i1772:0:0) -> f6015_0_displayChessboard_GE(i1773:0:0, c2, i1772:0:0, i1772:0:0, i1772:0:0) :|: c2 = i1947:0:0 + 1 && (i1947:0:0 < i1772:0:0 && i1773:0:0 < i1772:0:0) ---------------------------------------- (44) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f6015_0_displayChessboard_GE ] = f6015_0_displayChessboard_GE_5 + -1*f6015_0_displayChessboard_GE_2 The following rules are decreasing: f6015_0_displayChessboard_GE(x20:0, x21:0, x22:0, x22:0, x22:0) -> f6015_0_displayChessboard_GE(x20:0, c, x22:0, x22:0, x22:0) :|: c = x21:0 + 1 && (x22:0 > x20:0 && x24:0 > x21:0 && x22:0 > x21:0) f6015_0_displayChessboard_GE(x15:0, x16:0, x17:0, x17:0, x17:0) -> f6015_0_displayChessboard_GE(x15:0, c1, x17:0, x17:0, x17:0) :|: c1 = x16:0 + 1 && (x17:0 > x15:0 && x19:0 < x16:0 && x17:0 > x16:0) f6015_0_displayChessboard_GE(i1773:0:0, i1947:0:0, i1772:0:0, i1772:0:0, i1772:0:0) -> f6015_0_displayChessboard_GE(i1773:0:0, c2, i1772:0:0, i1772:0:0, i1772:0:0) :|: c2 = i1947:0:0 + 1 && (i1947:0:0 < i1772:0:0 && i1773:0:0 < i1772:0:0) The following rules are bounded: f6015_0_displayChessboard_GE(x20:0, x21:0, x22:0, x22:0, x22:0) -> f6015_0_displayChessboard_GE(x20:0, c, x22:0, x22:0, x22:0) :|: c = x21:0 + 1 && (x22:0 > x20:0 && x24:0 > x21:0 && x22:0 > x21:0) f6015_0_displayChessboard_GE(x15:0, x16:0, x17:0, x17:0, x17:0) -> f6015_0_displayChessboard_GE(x15:0, c1, x17:0, x17:0, x17:0) :|: c1 = x16:0 + 1 && (x17:0 > x15:0 && x19:0 < x16:0 && x17:0 > x16:0) f6015_0_displayChessboard_GE(i1773:0:0, i1947:0:0, i1772:0:0, i1772:0:0, i1772:0:0) -> f6015_0_displayChessboard_GE(i1773:0:0, c2, i1772:0:0, i1772:0:0, i1772:0:0) :|: c2 = i1947:0:0 + 1 && (i1947:0:0 < i1772:0:0 && i1773:0:0 < i1772:0:0) ---------------------------------------- (45) YES ---------------------------------------- (46) Obligation: Rules: f6015_0_displayChessboard_GE(x20:0, x21:0, x22:0, x22:0, x22:0) -> f6015_0_displayChessboard_GE(x20:0, c, x22:0, x22:0, x22:0) :|: c = x21:0 + 1 && (x22:0 > x20:0 && x24:0 > x21:0 && x22:0 > x21:0) f6015_0_displayChessboard_GE(x15:0, x16:0, x17:0, x17:0, x17:0) -> f6015_0_displayChessboard_GE(x15:0, c1, x17:0, x17:0, x17:0) :|: c1 = x16:0 + 1 && (x17:0 > x15:0 && x19:0 < x16:0 && x17:0 > x16:0) f6015_0_displayChessboard_GE(x11:0, x12:0, x13:0, x13:0, x13:0) -> f6015_0_displayChessboard_GE(c3, c4, x13:0, x13:0, x13:0) :|: c4 = 0 && c3 = x11:0 + 1 && (x13:0 > x11:0 + 1 && x13:0 <= x12:0) ---------------------------------------- (47) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f6015_0_displayChessboard_GE ] = f6015_0_displayChessboard_GE_5 + -1*f6015_0_displayChessboard_GE_1 The following rules are decreasing: f6015_0_displayChessboard_GE(x11:0, x12:0, x13:0, x13:0, x13:0) -> f6015_0_displayChessboard_GE(c3, c4, x13:0, x13:0, x13:0) :|: c4 = 0 && c3 = x11:0 + 1 && (x13:0 > x11:0 + 1 && x13:0 <= x12:0) The following rules are bounded: f6015_0_displayChessboard_GE(x20:0, x21:0, x22:0, x22:0, x22:0) -> f6015_0_displayChessboard_GE(x20:0, c, x22:0, x22:0, x22:0) :|: c = x21:0 + 1 && (x22:0 > x20:0 && x24:0 > x21:0 && x22:0 > x21:0) f6015_0_displayChessboard_GE(x15:0, x16:0, x17:0, x17:0, x17:0) -> f6015_0_displayChessboard_GE(x15:0, c1, x17:0, x17:0, x17:0) :|: c1 = x16:0 + 1 && (x17:0 > x15:0 && x19:0 < x16:0 && x17:0 > x16:0) f6015_0_displayChessboard_GE(x11:0, x12:0, x13:0, x13:0, x13:0) -> f6015_0_displayChessboard_GE(c3, c4, x13:0, x13:0, x13:0) :|: c4 = 0 && c3 = x11:0 + 1 && (x13:0 > x11:0 + 1 && x13:0 <= x12:0) ---------------------------------------- (48) Obligation: Rules: f6015_0_displayChessboard_GE(x20:0, x21:0, x22:0, x22:0, x22:0) -> f6015_0_displayChessboard_GE(x20:0, c, x22:0, x22:0, x22:0) :|: c = x21:0 + 1 && (x22:0 > x20:0 && x24:0 > x21:0 && x22:0 > x21:0) f6015_0_displayChessboard_GE(x15:0, x16:0, x17:0, x17:0, x17:0) -> f6015_0_displayChessboard_GE(x15:0, c1, x17:0, x17:0, x17:0) :|: c1 = x16:0 + 1 && (x17:0 > x15:0 && x19:0 < x16:0 && x17:0 > x16:0) ---------------------------------------- (49) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f6015_0_displayChessboard_GE(x, x1, x2, x3, x4)] = -x1 + x3 The following rules are decreasing: f6015_0_displayChessboard_GE(x20:0, x21:0, x22:0, x22:0, x22:0) -> f6015_0_displayChessboard_GE(x20:0, c, x22:0, x22:0, x22:0) :|: c = x21:0 + 1 && (x22:0 > x20:0 && x24:0 > x21:0 && x22:0 > x21:0) f6015_0_displayChessboard_GE(x15:0, x16:0, x17:0, x17:0, x17:0) -> f6015_0_displayChessboard_GE(x15:0, c1, x17:0, x17:0, x17:0) :|: c1 = x16:0 + 1 && (x17:0 > x15:0 && x19:0 < x16:0 && x17:0 > x16:0) The following rules are bounded: f6015_0_displayChessboard_GE(x20:0, x21:0, x22:0, x22:0, x22:0) -> f6015_0_displayChessboard_GE(x20:0, c, x22:0, x22:0, x22:0) :|: c = x21:0 + 1 && (x22:0 > x20:0 && x24:0 > x21:0 && x22:0 > x21:0) f6015_0_displayChessboard_GE(x15:0, x16:0, x17:0, x17:0, x17:0) -> f6015_0_displayChessboard_GE(x15:0, c1, x17:0, x17:0, x17:0) :|: c1 = x16:0 + 1 && (x17:0 > x15:0 && x19:0 < x16:0 && x17:0 > x16:0) ---------------------------------------- (50) YES ---------------------------------------- (51) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Queen.search(I)Z SCC calls the following helper methods: Queen.safeMove(II)Z, Queen.search(I)Z, Queen.wrongPos(IIII)Z, Queen.displayChessboard()V Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (52) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 51 IRulesP rules: f5430_0_search_Store(EOS(STATIC_5430(i1330, java.lang.Object(ARRAY(i1330)))), i1332, i1333, matching1) -> f5434_0_search_Load(EOS(STATIC_5434(i1330, java.lang.Object(ARRAY(i1330)))), i1332, i1333, 0) :|: TRUE && matching1 = 0 f5434_0_search_Load(EOS(STATIC_5434(i1330, java.lang.Object(ARRAY(i1330)))), i1332, i1333, matching1) -> f5440_0_search_FieldAccess(EOS(STATIC_5440(i1330, java.lang.Object(ARRAY(i1330)))), i1332, i1333, 0, i1333) :|: TRUE && matching1 = 0 f5440_0_search_FieldAccess(EOS(STATIC_5440(i1330, java.lang.Object(ARRAY(i1330)))), i1332, i1333, matching1, i1333) -> f5446_0_search_LT(EOS(STATIC_5446(i1330, java.lang.Object(ARRAY(i1330)))), i1332, i1333, 0, i1333, i1330) :|: TRUE && matching1 = 0 f5446_0_search_LT(EOS(STATIC_5446(i1330, java.lang.Object(ARRAY(i1330)))), i1332, i1333, matching1, i1333, i1330) -> f5450_0_search_LT(EOS(STATIC_5450(i1330, java.lang.Object(ARRAY(i1330)))), i1332, i1333, 0, i1333, i1330) :|: i1333 < i1330 && matching1 = 0 f5450_0_search_LT(EOS(STATIC_5450(i1330, java.lang.Object(ARRAY(i1330)))), i1332, i1333, matching1, i1333, i1330) -> f5456_0_search_ConstantStackPush(EOS(STATIC_5456(i1330, java.lang.Object(ARRAY(i1330)))), i1332, i1333, 0) :|: i1333 < i1330 && matching1 = 0 f5456_0_search_ConstantStackPush(EOS(STATIC_5456(i1330, java.lang.Object(ARRAY(i1330)))), i1332, i1333, matching1) -> f5460_0_search_Store(EOS(STATIC_5460(i1330, java.lang.Object(ARRAY(i1330)))), i1332, i1333, 0, 0) :|: TRUE && matching1 = 0 f5460_0_search_Store(EOS(STATIC_5460(i1330, java.lang.Object(ARRAY(i1330)))), i1332, i1333, matching1, matching2) -> f5465_0_search_Load(EOS(STATIC_5465(i1330, java.lang.Object(ARRAY(i1330)))), i1332, i1333, 0, 0) :|: TRUE && matching1 = 0 && matching2 = 0 f5465_0_search_Load(EOS(STATIC_5465(i1330, java.lang.Object(ARRAY(i1330)))), i1332, i1333, matching1, matching2) -> f5575_0_search_Load(EOS(STATIC_5575(i1330, java.lang.Object(ARRAY(i1330)))), i1332, i1333, 0, 0) :|: TRUE && matching1 = 0 && matching2 = 0 f5575_0_search_Load(EOS(STATIC_5575(i1436, java.lang.Object(ARRAY(i1436)))), i1332, i1438, matching1, i1439) -> f5686_0_search_Load(EOS(STATIC_5686(i1436, java.lang.Object(ARRAY(i1436)))), i1332, i1438, 0, i1439) :|: TRUE && matching1 = 0 f5686_0_search_Load(EOS(STATIC_5686(i1524, java.lang.Object(ARRAY(i1524)))), i1332, i1526, matching1, i1527) -> f5781_0_search_Load(EOS(STATIC_5781(i1524, java.lang.Object(ARRAY(i1524)))), i1332, i1526, 0, i1527) :|: TRUE && matching1 = 0 f5781_0_search_Load(EOS(STATIC_5781(i1709, java.lang.Object(ARRAY(i1709)))), i1332, i1711, matching1, i1712) -> f5920_0_search_Load(EOS(STATIC_5920(i1709, java.lang.Object(ARRAY(i1709)))), i1332, i1711, 0, i1712) :|: TRUE && matching1 = 0 f5920_0_search_Load(EOS(STATIC_5920(i1865, java.lang.Object(ARRAY(i1865)))), i1332, i1867, matching1, i1868) -> f5923_0_search_NE(EOS(STATIC_5923(i1865, java.lang.Object(ARRAY(i1865)))), i1332, i1867, 0, i1868, 0) :|: TRUE && matching1 = 0 f5923_0_search_NE(EOS(STATIC_5923(i1865, java.lang.Object(ARRAY(i1865)))), i1332, i1867, matching1, i1868, matching2) -> f5927_0_search_Load(EOS(STATIC_5927(i1865, java.lang.Object(ARRAY(i1865)))), i1332, i1867, 0, i1868) :|: TRUE && matching1 = 0 && matching2 = 0 f5927_0_search_Load(EOS(STATIC_5927(i1865, java.lang.Object(ARRAY(i1865)))), i1332, i1867, matching1, i1868) -> f5930_0_search_FieldAccess(EOS(STATIC_5930(i1865, java.lang.Object(ARRAY(i1865)))), i1332, i1867, 0, i1868, i1868) :|: TRUE && matching1 = 0 f5930_0_search_FieldAccess(EOS(STATIC_5930(i1865, java.lang.Object(ARRAY(i1865)))), i1332, i1867, matching1, i1868, i1868) -> f5933_0_search_GE(EOS(STATIC_5933(i1865, java.lang.Object(ARRAY(i1865)))), i1332, i1867, 0, i1868, i1868, i1865) :|: TRUE && matching1 = 0 f5933_0_search_GE(EOS(STATIC_5933(i1865, java.lang.Object(ARRAY(i1865)))), i1332, i1867, matching1, i1868, i1868, i1865) -> f5937_0_search_GE(EOS(STATIC_5937(i1865, java.lang.Object(ARRAY(i1865)))), i1332, i1867, 0, i1868, i1868, i1865) :|: i1868 < i1865 && matching1 = 0 f5937_0_search_GE(EOS(STATIC_5937(i1865, java.lang.Object(ARRAY(i1865)))), i1332, i1867, matching1, i1868, i1868, i1865) -> f5941_0_search_Load(EOS(STATIC_5941(i1865, java.lang.Object(ARRAY(i1865)))), i1332, i1867, 0, i1868) :|: i1868 < i1865 && matching1 = 0 f5941_0_search_Load(EOS(STATIC_5941(i1865, java.lang.Object(ARRAY(i1865)))), i1332, i1867, matching1, i1868) -> f5944_0_search_Load(EOS(STATIC_5944(i1865, java.lang.Object(ARRAY(i1865)))), i1332, i1867, 0, i1868, i1867) :|: TRUE && matching1 = 0 f5944_0_search_Load(EOS(STATIC_5944(i1865, java.lang.Object(ARRAY(i1865)))), i1332, i1867, matching1, i1868, i1867) -> f5946_0_search_InvokeMethod(EOS(STATIC_5946(i1865, java.lang.Object(ARRAY(i1865)))), i1332, i1867, 0, i1868, i1867, i1868) :|: TRUE && matching1 = 0 f5946_0_search_InvokeMethod(EOS(STATIC_5946(i1865, java.lang.Object(ARRAY(i1865)))), i1332, i1867, matching1, i1868, i1867, i1868) -> f5950_0_safeMove_ConstantStackPush(EOS(STATIC_5950(i1865, java.lang.Object(ARRAY(i1865)))), i1867, i1868, i1867, i1868) :|: i1865 >= 1 && i1865 >= i1332 && i1867 < i1865 && i1868 < i1865 && matching1 = 0 f5946_0_search_InvokeMethod(EOS(STATIC_5946(i1865, java.lang.Object(ARRAY(i1865)))), i1332, i1867, matching1, i1868, i1867, i1868) -> f5950_1_safeMove_ConstantStackPush(EOS(STATIC_5950(i1865, java.lang.Object(ARRAY(i1865)))), i1332, i1867, 0, i1868, i1867, i1868) :|: i1865 >= 1 && i1865 >= i1332 && i1867 < i1865 && i1868 < i1865 && matching1 = 0 f5950_0_safeMove_ConstantStackPush(EOS(STATIC_5950(i1865, java.lang.Object(ARRAY(i1865)))), i1867, i1868, i1867, i1868) -> f6403_0_safeMove_ConstantStackPush(EOS(STATIC_6403(i1865, java.lang.Object(ARRAY(i1865)))), i1867, i1868, i1867, i1868) :|: TRUE f5960_0_safeMove_Return(EOS(STATIC_5960(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, matching1, i1905, i1895) -> f5964_0_search_EQ(EOS(STATIC_5964(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, 0, i1905, i1895) :|: TRUE && matching1 = 0 f5964_0_search_EQ(EOS(STATIC_5964(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, matching1, i1905, i1919) -> f5968_0_search_EQ(EOS(STATIC_5968(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, 0, i1905, i1919) :|: TRUE && matching1 = 0 f5964_0_search_EQ(EOS(STATIC_5964(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, matching1, i1905, matching2) -> f5969_0_search_EQ(EOS(STATIC_5969(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, 0, i1905, 0) :|: TRUE && matching1 = 0 && matching2 = 0 f5968_0_search_EQ(EOS(STATIC_5968(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, matching1, i1905, i1919) -> f5973_0_search_FieldAccess(EOS(STATIC_5973(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, i1905) :|: i1919 > 0 && matching1 = 0 f5973_0_search_FieldAccess(EOS(STATIC_5973(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, i1905) -> f5977_0_search_Load(EOS(STATIC_5977(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, i1905, java.lang.Object(ARRAY(i1899))) :|: TRUE f5977_0_search_Load(EOS(STATIC_5977(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, i1905, java.lang.Object(ARRAY(i1899))) -> f5983_0_search_Load(EOS(STATIC_5983(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, i1905, java.lang.Object(ARRAY(i1899)), i1903) :|: TRUE f5983_0_search_Load(EOS(STATIC_5983(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, i1905, java.lang.Object(ARRAY(i1899)), i1903) -> f5988_0_search_ArrayAccess(EOS(STATIC_5988(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, i1905, java.lang.Object(ARRAY(i1899)), i1903, i1905) :|: TRUE f5988_0_search_ArrayAccess(EOS(STATIC_5988(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1945, i1905, java.lang.Object(ARRAY(i1899)), i1945, i1905) -> f5992_0_search_ArrayAccess(EOS(STATIC_5992(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1945, i1905, java.lang.Object(ARRAY(i1899)), i1945, i1905) :|: TRUE f5992_0_search_ArrayAccess(EOS(STATIC_5992(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1945, i1905, java.lang.Object(ARRAY(i1899)), i1945, i1905) -> f5997_0_search_ArrayAccess(EOS(STATIC_5997(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1945, i1905, java.lang.Object(ARRAY(i1899)), i1945, i1905) :|: TRUE f5997_0_search_ArrayAccess(EOS(STATIC_5997(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1945, i1905, java.lang.Object(ARRAY(i1899)), i1945, i1905) -> f6002_0_search_Load(EOS(STATIC_6002(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1945, i1905) :|: i1945 < i1899 f6002_0_search_Load(EOS(STATIC_6002(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1945, i1905) -> f6006_0_search_ConstantStackPush(EOS(STATIC_6006(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1945, i1905, i1945) :|: TRUE f6006_0_search_ConstantStackPush(EOS(STATIC_6006(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1945, i1905, i1945) -> f6010_0_search_IntArithmetic(EOS(STATIC_6010(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1945, i1905, i1945, 1) :|: TRUE f6010_0_search_IntArithmetic(EOS(STATIC_6010(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1945, i1905, i1945, matching1) -> f6013_0_search_InvokeMethod(EOS(STATIC_6013(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1945, i1905, i1945 + 1) :|: i1945 >= 0 && matching1 = 1 f6013_0_search_InvokeMethod(EOS(STATIC_6013(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1945, i1905, i1949) -> f6017_0_search_ConstantStackPush(EOS(STATIC_6017(i1899, java.lang.Object(ARRAY(i1899)))), i1949, i1949) :|: i1949 >= 1 && i1899 >= 1 && i1899 >= i1332 && i1945 < i1899 && i1905 < i1899 && i1949 > i1945 && i1949 <= i1899 f6013_0_search_InvokeMethod(EOS(STATIC_6013(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1945, i1905, i1949) -> f6017_1_search_ConstantStackPush(EOS(STATIC_6017(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1945, i1905, i1949) :|: i1949 >= 1 && i1899 >= 1 && i1899 >= i1332 && i1945 < i1899 && i1905 < i1899 && i1949 > i1945 && i1949 <= i1899 f6017_0_search_ConstantStackPush(EOS(STATIC_6017(i1899, java.lang.Object(ARRAY(i1899)))), i1949, i1949) -> f6021_0_search_ConstantStackPush(EOS(STATIC_6021(i1899, java.lang.Object(ARRAY(i1899)))), i1949, i1949) :|: TRUE f6021_0_search_ConstantStackPush(EOS(STATIC_6021(i1899, java.lang.Object(ARRAY(i1899)))), i1949, i1949) -> f5426_0_search_ConstantStackPush(EOS(STATIC_5426(i1899, java.lang.Object(ARRAY(i1899)))), i1949, i1949) :|: TRUE f5426_0_search_ConstantStackPush(EOS(STATIC_5426(i1330, java.lang.Object(ARRAY(i1330)))), i1332, i1333) -> f5430_0_search_Store(EOS(STATIC_5430(i1330, java.lang.Object(ARRAY(i1330)))), i1332, i1333, 0) :|: TRUE f6035_0_search_Return(EOS(STATIC_6035(i1964, java.lang.Object(ARRAY(i1964)))), i1332, i1945, i1905, matching1) -> f6041_0_search_Store(EOS(STATIC_6041(i1964, java.lang.Object(ARRAY(i1964)))), i1332, i1945, i1905, 0) :|: TRUE && matching1 = 0 f6041_0_search_Store(EOS(STATIC_6041(i1964, java.lang.Object(ARRAY(i1964)))), i1332, i1945, i1905, matching1) -> f6045_0_search_Inc(EOS(STATIC_6045(i1964, java.lang.Object(ARRAY(i1964)))), i1332, i1945, 0, i1905) :|: TRUE && matching1 = 0 f6045_0_search_Inc(EOS(STATIC_6045(i1964, java.lang.Object(ARRAY(i1964)))), i1332, i1945, matching1, i1905) -> f6051_0_search_JMP(EOS(STATIC_6051(i1964, java.lang.Object(ARRAY(i1964)))), i1332, i1945, 0, i1905 + 1) :|: TRUE && matching1 = 0 f6051_0_search_JMP(EOS(STATIC_6051(i1964, java.lang.Object(ARRAY(i1964)))), i1332, i1945, matching1, i1979) -> f6057_0_search_Load(EOS(STATIC_6057(i1964, java.lang.Object(ARRAY(i1964)))), i1332, i1945, 0, i1979) :|: TRUE && matching1 = 0 f6057_0_search_Load(EOS(STATIC_6057(i1964, java.lang.Object(ARRAY(i1964)))), i1332, i1945, matching1, i1979) -> f5920_0_search_Load(EOS(STATIC_5920(i1964, java.lang.Object(ARRAY(i1964)))), i1332, i1945, 0, i1979) :|: TRUE && matching1 = 0 f5969_0_search_EQ(EOS(STATIC_5969(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, matching1, i1905, matching2) -> f5974_0_search_Inc(EOS(STATIC_5974(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, 0, i1905) :|: TRUE && matching1 = 0 && matching2 = 0 f5974_0_search_Inc(EOS(STATIC_5974(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, matching1, i1905) -> f5978_0_search_JMP(EOS(STATIC_5978(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, 0, i1905 + 1) :|: TRUE && matching1 = 0 f5978_0_search_JMP(EOS(STATIC_5978(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, matching1, i1930) -> f5984_0_search_Load(EOS(STATIC_5984(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, 0, i1930) :|: TRUE && matching1 = 0 f5984_0_search_Load(EOS(STATIC_5984(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, matching1, i1930) -> f5920_0_search_Load(EOS(STATIC_5920(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, 0, i1930) :|: TRUE && matching1 = 0 f5950_1_safeMove_ConstantStackPush(EOS(STATIC_5950(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, matching1, i1905, i1903, i1905) -> f5960_0_safeMove_Return(EOS(STATIC_5960(i1899, java.lang.Object(ARRAY(i1899)))), i1332, i1903, 0, i1905, i1895) :|: TRUE && matching1 = 0 f6017_1_search_ConstantStackPush(EOS(STATIC_6017(i1964, java.lang.Object(ARRAY(i1964)))), i1332, i1945, i1905, i1949) -> f6035_0_search_Return(EOS(STATIC_6035(i1964, java.lang.Object(ARRAY(i1964)))), i1332, i1945, i1905, 0) :|: TRUE Combined rules. Obtained 4 IRulesP rules: f5946_0_search_InvokeMethod(EOS(STATIC_5946(i1865:0, java.lang.Object(ARRAY(i1865:0)))), i1332:0, i1867:0, 0, i1868:0, i1867:0, i1868:0) -> f5946_0_search_InvokeMethod(EOS(STATIC_5946(i1865:0, java.lang.Object(ARRAY(i1865:0)))), i1867:0 + 1, i1867:0 + 1, 0, 0, i1867:0 + 1, 0) :|: i1867:0 + 1 < i1865:0 && i1895:0 > 0 && i1865:0 > 0 && i1867:0 > -1 && i1865:0 >= i1332:0 && i1868:0 < i1865:0 && i1867:0 + 1 > i1867:0 f5946_0_search_InvokeMethod(EOS(STATIC_5946(i1865:0, java.lang.Object(ARRAY(i1865:0)))), i1332:0, i1867:0, 0, i1868:0, i1867:0, i1868:0) -> f5946_0_search_InvokeMethod(EOS(STATIC_5946(i1865:0, java.lang.Object(ARRAY(i1865:0)))), i1332:0, i1867:0, 0, i1868:0 + 1, i1867:0, i1868:0 + 1) :|: i1868:0 + 1 < i1865:0 && i1895:0 > 0 && i1865:0 > 0 && i1867:0 > -1 && i1865:0 >= i1332:0 && i1867:0 < i1865:0 && i1867:0 + 1 > i1867:0 && i1867:0 + 1 <= i1865:0 f5946_0_search_InvokeMethod(EOS(STATIC_5946(i1865:0, java.lang.Object(ARRAY(i1865:0)))), i1332:0, i1867:0, 0, i1868:0, i1867:0, i1868:0) -> f5946_0_search_InvokeMethod(EOS(STATIC_5946(i1865:0, java.lang.Object(ARRAY(i1865:0)))), i1332:0, i1867:0, 0, i1868:0 + 1, i1867:0, i1868:0 + 1) :|: i1868:0 + 1 < i1865:0 && i1865:0 >= i1332:0 && i1867:0 < i1865:0 && i1865:0 > 0 Removed following non-SCC rules: f5946_0_search_InvokeMethod(EOS(STATIC_5946(i1865:0, java.lang.Object(ARRAY(i1865:0)))), i1332:0, i1867:0, 0, i1868:0, i1867:0, i1868:0) -> f6403_0_safeMove_ConstantStackPush(EOS(STATIC_6403(i1865:0, java.lang.Object(ARRAY(i1865:0)))), i1867:0, i1868:0, i1867:0, i1868:0) :|: i1865:0 >= i1332:0 && i1865:0 > 0 && i1868:0 < i1865:0 && i1867:0 < i1865:0 Filtered constant ground arguments: f5946_0_search_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) -> f5946_0_search_InvokeMethod(x1, x2, x3, x5, x6, x7) Filtered duplicate arguments: f5946_0_search_InvokeMethod(x1, x2, x3, x4, x5, x6) -> f5946_0_search_InvokeMethod(x1, x2, x5, x6) Finished conversion. Obtained 3 rules.P rules: f5946_0_search_InvokeMethod(i1332:0, i1867:0, i1868:0, i1865:0, i1865:0) -> f5946_0_search_InvokeMethod(i1867:0 + 1, i1867:0 + 1, 0, i1865:0, i1865:0) :|: i1895:0 > 0 && i1867:0 + 1 < i1865:0 && i1865:0 > 0 && i1867:0 > -1 && i1865:0 >= i1332:0 && i1867:0 + 1 > i1867:0 && i1868:0 < i1865:0 f5946_0_search_InvokeMethod(i1332:0, i1867:0, i1868:0, i1865:0, i1865:0) -> f5946_0_search_InvokeMethod(i1332:0, i1867:0, i1868:0 + 1, i1865:0, i1865:0) :|: i1895:0 > 0 && i1868:0 + 1 < i1865:0 && i1865:0 > 0 && i1867:0 > -1 && i1865:0 >= i1332:0 && i1867:0 < i1865:0 && i1867:0 + 1 <= i1865:0 && i1867:0 + 1 > i1867:0 f5946_0_search_InvokeMethod(i1332:0, i1867:0, i1868:0, i1865:0, i1865:0) -> f5946_0_search_InvokeMethod(i1332:0, i1867:0, i1868:0 + 1, i1865:0, i1865:0) :|: i1865:0 >= i1332:0 && i1868:0 + 1 < i1865:0 && i1865:0 > 0 && i1867:0 < i1865:0 ---------------------------------------- (53) Obligation: Rules: f5946_0_search_InvokeMethod(i1332:0, i1867:0, i1868:0, i1865:0, i1865:0) -> f5946_0_search_InvokeMethod(i1867:0 + 1, i1867:0 + 1, 0, i1865:0, i1865:0) :|: i1895:0 > 0 && i1867:0 + 1 < i1865:0 && i1865:0 > 0 && i1867:0 > -1 && i1865:0 >= i1332:0 && i1867:0 + 1 > i1867:0 && i1868:0 < i1865:0 f5946_0_search_InvokeMethod(x, x1, x2, x3, x3) -> f5946_0_search_InvokeMethod(x, x1, x2 + 1, x3, x3) :|: x4 > 0 && x2 + 1 < x3 && x3 > 0 && x1 > -1 && x3 >= x && x1 < x3 && x1 + 1 <= x3 && x1 + 1 > x1 f5946_0_search_InvokeMethod(x5, x6, x7, x8, x8) -> f5946_0_search_InvokeMethod(x5, x6, x7 + 1, x8, x8) :|: x8 >= x5 && x7 + 1 < x8 && x8 > 0 && x6 < x8 ---------------------------------------- (54) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (55) Obligation: Rules: f5946_0_search_InvokeMethod(i1332:0, i1867:0, i1868:0, i1865:0, i1865:0) -> f5946_0_search_InvokeMethod(arith, arith, 0, i1865:0, i1865:0) :|: i1895:0 > 0 && i1867:0 + 1 < i1865:0 && i1865:0 > 0 && i1867:0 > -1 && i1865:0 >= i1332:0 && i1867:0 + 1 > i1867:0 && i1868:0 < i1865:0 && arith = i1867:0 + 1 && arith = i1867:0 + 1 f5946_0_search_InvokeMethod(x9, x10, x11, x12, x12) -> f5946_0_search_InvokeMethod(x9, x10, x13, x12, x12) :|: x14 > 0 && x11 + 1 < x12 && x12 > 0 && x10 > -1 && x12 >= x9 && x10 < x12 && x10 + 1 <= x12 && x10 + 1 > x10 && x13 = x11 + 1 f5946_0_search_InvokeMethod(x15, x16, x17, x18, x18) -> f5946_0_search_InvokeMethod(x15, x16, x19, x18, x18) :|: x18 >= x15 && x17 + 1 < x18 && x18 > 0 && x16 < x18 && x19 = x17 + 1 ---------------------------------------- (56) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f5946_0_search_InvokeMethod(i1332:0, i1867:0, i1868:0, i1865:0, i1865:0) -> f5946_0_search_InvokeMethod(arith, arith, 0, i1865:0, i1865:0) :|: i1895:0 > 0 && i1867:0 + 1 < i1865:0 && i1865:0 > 0 && i1867:0 > -1 && i1865:0 >= i1332:0 && i1867:0 + 1 > i1867:0 && i1868:0 < i1865:0 && arith = i1867:0 + 1 && arith = i1867:0 + 1 (2) f5946_0_search_InvokeMethod(x9, x10, x11, x12, x12) -> f5946_0_search_InvokeMethod(x9, x10, x13, x12, x12) :|: x14 > 0 && x11 + 1 < x12 && x12 > 0 && x10 > -1 && x12 >= x9 && x10 < x12 && x10 + 1 <= x12 && x10 + 1 > x10 && x13 = x11 + 1 (3) f5946_0_search_InvokeMethod(x15, x16, x17, x18, x18) -> f5946_0_search_InvokeMethod(x15, x16, x19, x18, x18) :|: x18 >= x15 && x17 + 1 < x18 && x18 > 0 && x16 < x18 && x19 = x17 + 1 Arcs: (1) -> (1), (2), (3) (2) -> (1), (2), (3) (3) -> (1), (2), (3) This digraph is fully evaluated! ---------------------------------------- (57) Obligation: Termination digraph: Nodes: (1) f5946_0_search_InvokeMethod(i1332:0, i1867:0, i1868:0, i1865:0, i1865:0) -> f5946_0_search_InvokeMethod(arith, arith, 0, i1865:0, i1865:0) :|: i1895:0 > 0 && i1867:0 + 1 < i1865:0 && i1865:0 > 0 && i1867:0 > -1 && i1865:0 >= i1332:0 && i1867:0 + 1 > i1867:0 && i1868:0 < i1865:0 && arith = i1867:0 + 1 && arith = i1867:0 + 1 (2) f5946_0_search_InvokeMethod(x9, x10, x11, x12, x12) -> f5946_0_search_InvokeMethod(x9, x10, x13, x12, x12) :|: x14 > 0 && x11 + 1 < x12 && x12 > 0 && x10 > -1 && x12 >= x9 && x10 < x12 && x10 + 1 <= x12 && x10 + 1 > x10 && x13 = x11 + 1 (3) f5946_0_search_InvokeMethod(x15, x16, x17, x18, x18) -> f5946_0_search_InvokeMethod(x15, x16, x19, x18, x18) :|: x18 >= x15 && x17 + 1 < x18 && x18 > 0 && x16 < x18 && x19 = x17 + 1 Arcs: (1) -> (1), (2), (3) (2) -> (1), (2), (3) (3) -> (1), (2), (3) This digraph is fully evaluated! ---------------------------------------- (58) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (59) Obligation: Rules: f5946_0_search_InvokeMethod(x9:0, x10:0, x11:0, x12:0, x12:0) -> f5946_0_search_InvokeMethod(x9:0, x10:0, x11:0 + 1, x12:0, x12:0) :|: x12:0 >= x10:0 + 1 && x10:0 + 1 > x10:0 && x12:0 > x10:0 && x9:0 <= x12:0 && x10:0 > -1 && x12:0 > 0 && x12:0 > x11:0 + 1 && x14:0 > 0 f5946_0_search_InvokeMethod(i1332:0:0, i1867:0:0, i1868:0:0, i1865:0:0, i1865:0:0) -> f5946_0_search_InvokeMethod(i1867:0:0 + 1, i1867:0:0 + 1, 0, i1865:0:0, i1865:0:0) :|: i1867:0:0 + 1 > i1867:0:0 && i1868:0:0 < i1865:0:0 && i1865:0:0 >= i1332:0:0 && i1867:0:0 > -1 && i1865:0:0 > 0 && i1867:0:0 + 1 < i1865:0:0 && i1895:0:0 > 0 f5946_0_search_InvokeMethod(x15:0, x16:0, x17:0, x18:0, x18:0) -> f5946_0_search_InvokeMethod(x15:0, x16:0, x17:0 + 1, x18:0, x18:0) :|: x18:0 > 0 && x18:0 > x16:0 && x18:0 > x17:0 + 1 && x18:0 >= x15:0 ---------------------------------------- (60) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f5946_0_search_InvokeMethod(INTEGER, INTEGER, VARIABLE, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (61) Obligation: Rules: f5946_0_search_InvokeMethod(x9:0, x10:0, x11:0, x12:0, x12:0) -> f5946_0_search_InvokeMethod(x9:0, x10:0, c, x12:0, x12:0) :|: c = x11:0 + 1 && (x12:0 >= x10:0 + 1 && x10:0 + 1 > x10:0 && x12:0 > x10:0 && x9:0 <= x12:0 && x10:0 > -1 && x12:0 > 0 && x12:0 > x11:0 + 1 && x14:0 > 0) f5946_0_search_InvokeMethod(i1332:0:0, i1867:0:0, i1868:0:0, i1865:0:0, i1865:0:0) -> f5946_0_search_InvokeMethod(c1, c2, c3, i1865:0:0, i1865:0:0) :|: c3 = 0 && (c2 = i1867:0:0 + 1 && c1 = i1867:0:0 + 1) && (i1867:0:0 + 1 > i1867:0:0 && i1868:0:0 < i1865:0:0 && i1865:0:0 >= i1332:0:0 && i1867:0:0 > -1 && i1865:0:0 > 0 && i1867:0:0 + 1 < i1865:0:0 && i1895:0:0 > 0) f5946_0_search_InvokeMethod(x15:0, x16:0, x17:0, x18:0, x18:0) -> f5946_0_search_InvokeMethod(x15:0, x16:0, c4, x18:0, x18:0) :|: c4 = x17:0 + 1 && (x18:0 > 0 && x18:0 > x16:0 && x18:0 > x17:0 + 1 && x18:0 >= x15:0) ---------------------------------------- (62) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f5946_0_search_InvokeMethod ] = f5946_0_search_InvokeMethod_5 + -1*f5946_0_search_InvokeMethod_2 The following rules are decreasing: f5946_0_search_InvokeMethod(i1332:0:0, i1867:0:0, i1868:0:0, i1865:0:0, i1865:0:0) -> f5946_0_search_InvokeMethod(c1, c2, c3, i1865:0:0, i1865:0:0) :|: c3 = 0 && (c2 = i1867:0:0 + 1 && c1 = i1867:0:0 + 1) && (i1867:0:0 + 1 > i1867:0:0 && i1868:0:0 < i1865:0:0 && i1865:0:0 >= i1332:0:0 && i1867:0:0 > -1 && i1865:0:0 > 0 && i1867:0:0 + 1 < i1865:0:0 && i1895:0:0 > 0) The following rules are bounded: f5946_0_search_InvokeMethod(x9:0, x10:0, x11:0, x12:0, x12:0) -> f5946_0_search_InvokeMethod(x9:0, x10:0, c, x12:0, x12:0) :|: c = x11:0 + 1 && (x12:0 >= x10:0 + 1 && x10:0 + 1 > x10:0 && x12:0 > x10:0 && x9:0 <= x12:0 && x10:0 > -1 && x12:0 > 0 && x12:0 > x11:0 + 1 && x14:0 > 0) f5946_0_search_InvokeMethod(i1332:0:0, i1867:0:0, i1868:0:0, i1865:0:0, i1865:0:0) -> f5946_0_search_InvokeMethod(c1, c2, c3, i1865:0:0, i1865:0:0) :|: c3 = 0 && (c2 = i1867:0:0 + 1 && c1 = i1867:0:0 + 1) && (i1867:0:0 + 1 > i1867:0:0 && i1868:0:0 < i1865:0:0 && i1865:0:0 >= i1332:0:0 && i1867:0:0 > -1 && i1865:0:0 > 0 && i1867:0:0 + 1 < i1865:0:0 && i1895:0:0 > 0) f5946_0_search_InvokeMethod(x15:0, x16:0, x17:0, x18:0, x18:0) -> f5946_0_search_InvokeMethod(x15:0, x16:0, c4, x18:0, x18:0) :|: c4 = x17:0 + 1 && (x18:0 > 0 && x18:0 > x16:0 && x18:0 > x17:0 + 1 && x18:0 >= x15:0) ---------------------------------------- (63) Obligation: Rules: f5946_0_search_InvokeMethod(x9:0, x10:0, x11:0, x12:0, x12:0) -> f5946_0_search_InvokeMethod(x9:0, x10:0, c, x12:0, x12:0) :|: c = x11:0 + 1 && (x12:0 >= x10:0 + 1 && x10:0 + 1 > x10:0 && x12:0 > x10:0 && x9:0 <= x12:0 && x10:0 > -1 && x12:0 > 0 && x12:0 > x11:0 + 1 && x14:0 > 0) f5946_0_search_InvokeMethod(x15:0, x16:0, x17:0, x18:0, x18:0) -> f5946_0_search_InvokeMethod(x15:0, x16:0, c4, x18:0, x18:0) :|: c4 = x17:0 + 1 && (x18:0 > 0 && x18:0 > x16:0 && x18:0 > x17:0 + 1 && x18:0 >= x15:0) ---------------------------------------- (64) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f5946_0_search_InvokeMethod(x, x1, x2, x3, x4)] = -4 - x - 2*x2 + 3*x4 The following rules are decreasing: f5946_0_search_InvokeMethod(x9:0, x10:0, x11:0, x12:0, x12:0) -> f5946_0_search_InvokeMethod(x9:0, x10:0, c, x12:0, x12:0) :|: c = x11:0 + 1 && (x12:0 >= x10:0 + 1 && x10:0 + 1 > x10:0 && x12:0 > x10:0 && x9:0 <= x12:0 && x10:0 > -1 && x12:0 > 0 && x12:0 > x11:0 + 1 && x14:0 > 0) f5946_0_search_InvokeMethod(x15:0, x16:0, x17:0, x18:0, x18:0) -> f5946_0_search_InvokeMethod(x15:0, x16:0, c4, x18:0, x18:0) :|: c4 = x17:0 + 1 && (x18:0 > 0 && x18:0 > x16:0 && x18:0 > x17:0 + 1 && x18:0 >= x15:0) The following rules are bounded: f5946_0_search_InvokeMethod(x15:0, x16:0, x17:0, x18:0, x18:0) -> f5946_0_search_InvokeMethod(x15:0, x16:0, c4, x18:0, x18:0) :|: c4 = x17:0 + 1 && (x18:0 > 0 && x18:0 > x16:0 && x18:0 > x17:0 + 1 && x18:0 >= x15:0) ---------------------------------------- (65) Obligation: Rules: f5946_0_search_InvokeMethod(x9:0, x10:0, x11:0, x12:0, x12:0) -> f5946_0_search_InvokeMethod(x9:0, x10:0, c, x12:0, x12:0) :|: c = x11:0 + 1 && (x12:0 >= x10:0 + 1 && x10:0 + 1 > x10:0 && x12:0 > x10:0 && x9:0 <= x12:0 && x10:0 > -1 && x12:0 > 0 && x12:0 > x11:0 + 1 && x14:0 > 0) ---------------------------------------- (66) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f5946_0_search_InvokeMethod ] = f5946_0_search_InvokeMethod_5 + -1*f5946_0_search_InvokeMethod_3 The following rules are decreasing: f5946_0_search_InvokeMethod(x9:0, x10:0, x11:0, x12:0, x12:0) -> f5946_0_search_InvokeMethod(x9:0, x10:0, c, x12:0, x12:0) :|: c = x11:0 + 1 && (x12:0 >= x10:0 + 1 && x10:0 + 1 > x10:0 && x12:0 > x10:0 && x9:0 <= x12:0 && x10:0 > -1 && x12:0 > 0 && x12:0 > x11:0 + 1 && x14:0 > 0) The following rules are bounded: f5946_0_search_InvokeMethod(x9:0, x10:0, x11:0, x12:0, x12:0) -> f5946_0_search_InvokeMethod(x9:0, x10:0, c, x12:0, x12:0) :|: c = x11:0 + 1 && (x12:0 >= x10:0 + 1 && x10:0 + 1 > x10:0 && x12:0 > x10:0 && x9:0 <= x12:0 && x10:0 > -1 && x12:0 > 0 && x12:0 > x11:0 + 1 && x14:0 > 0) ---------------------------------------- (67) YES