/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, 97 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 1185 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 4 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 38 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 59 ms] (17) IntTRS (18) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (19) IntTRS (20) RankingReductionPairProof [EQUIVALENT, 0 ms] (21) YES (22) JBCTerminationSCC (23) SCCToIRSProof [SOUND, 0 ms] (24) IRSwT (25) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (26) IRSwT (27) IRSwTTerminationDigraphProof [EQUIVALENT, 54 ms] (28) IRSwT (29) IntTRSCompressionProof [EQUIVALENT, 0 ms] (30) IRSwT (31) TempFilterProof [SOUND, 47 ms] (32) IntTRS (33) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (34) AND (35) IntTRS (36) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (37) YES (38) IntTRS (39) RankingReductionPairProof [EQUIVALENT, 0 ms] (40) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: class Curseur{ private int X=0, Y=0, maxX, maxY; private boolean torique=false; public Curseur(int maxX, int maxY, boolean espaceTorique){ super(); this.maxX=maxX; this.maxY=maxY; this.torique=espaceTorique; } public void centrer(){ int cX=maxX/2; int cY=maxY/2; X=cX; Y=cY; } public void haut(){ Y--; if(torique&&Y<0) Y=maxY-1; } public void bas(){ Y++; if(torique&&Y==maxY) Y=0; } public void droite(){ X++; if(torique&&X==maxX) X=0; } public void gauche(){ X--; if(torique&&X<0) X=maxX-1; } public int getX(){ return X; } public int getY(){ return Y; } public void imprimer(){ //System.out.println("Curseur@["+getX()+","+getY()+"]"); } } public class Carre { private Curseur curseur=null; private int cote=0; public Carre(int cote){ if(cote>1&cote%2==1){ this.cote=cote; }else{ //System.out.println("Cette classe ne genere pas les carres magiques d\'ordre pair."); //System.exit(0); } this.curseur=new Curseur(cote,cote,true); } private int [][] carre=null; public void init(){ carre=new int[cote][cote]; int n=0; for(int x=0;x<3;x++) for(int y=0;y<3;y++) carre[x][y]=0; curseur.centrer(); } public void peupler(){ curseur.bas(); int nbre=1; int cpteur=1; while(cpteur<3){ if(!ajouter(nbre,curseur.getX(),curseur.getY())){ curseur.bas(); curseur.gauche(); cpteur++; }else{ cpteur=1; curseur.bas(); curseur.droite(); nbre++; } } } public Curseur curseur(){ return curseur; } public int cote(){ return cote; } public boolean ajouter(int nombre, int X, int Y){ if(carre[X][Y]!=0) return false; carre[X][Y]=nombre; return true; } public void imprimer(){ for(int j=0;j= args.length) return 0; String string = args[index]; index++; return string.length(); } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: class Curseur{ private int X=0, Y=0, maxX, maxY; private boolean torique=false; public Curseur(int maxX, int maxY, boolean espaceTorique){ super(); this.maxX=maxX; this.maxY=maxY; this.torique=espaceTorique; } public void centrer(){ int cX=maxX/2; int cY=maxY/2; X=cX; Y=cY; } public void haut(){ Y--; if(torique&&Y<0) Y=maxY-1; } public void bas(){ Y++; if(torique&&Y==maxY) Y=0; } public void droite(){ X++; if(torique&&X==maxX) X=0; } public void gauche(){ X--; if(torique&&X<0) X=maxX-1; } public int getX(){ return X; } public int getY(){ return Y; } public void imprimer(){ //System.out.println("Curseur@["+getX()+","+getY()+"]"); } } public class Carre { private Curseur curseur=null; private int cote=0; public Carre(int cote){ if(cote>1&cote%2==1){ this.cote=cote; }else{ //System.out.println("Cette classe ne genere pas les carres magiques d\'ordre pair."); //System.exit(0); } this.curseur=new Curseur(cote,cote,true); } private int [][] carre=null; public void init(){ carre=new int[cote][cote]; int n=0; for(int x=0;x<3;x++) for(int y=0;y<3;y++) carre[x][y]=0; curseur.centrer(); } public void peupler(){ curseur.bas(); int nbre=1; int cpteur=1; while(cpteur<3){ if(!ajouter(nbre,curseur.getX(),curseur.getY())){ curseur.bas(); curseur.gauche(); cpteur++; }else{ cpteur=1; curseur.bas(); curseur.droite(); nbre++; } } } public Curseur curseur(){ return curseur; } public int cote(){ return cote; } public boolean ajouter(int nombre, int X, int Y){ if(carre[X][Y]!=0) return false; carre[X][Y]=nombre; return true; } public void imprimer(){ for(int j=0;j= args.length) return 0; String string = args[index]; index++; return string.length(); } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: Carre.main([Ljava/lang/String;)V: Graph of 630 nodes with 2 SCCs. ---------------------------------------- (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: Carre.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *Carre: [cote] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (8) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 23 IRulesP rules: f4609_0_imprimer_Load(EOS(STATIC_4609), java.lang.Object(Carre(EOC, i31)), i497, i497) -> f4610_0_imprimer_FieldAccess(EOS(STATIC_4610), java.lang.Object(Carre(EOC, i31)), i497, i497, java.lang.Object(Carre(EOC, i31))) :|: TRUE f4610_0_imprimer_FieldAccess(EOS(STATIC_4610), java.lang.Object(Carre(EOC, i31)), i497, i497, java.lang.Object(Carre(EOC, i31))) -> f4611_0_imprimer_GE(EOS(STATIC_4611), java.lang.Object(Carre(EOC, i31)), i497, i497, i31) :|: TRUE f4611_0_imprimer_GE(EOS(STATIC_4611), java.lang.Object(Carre(EOC, i31)), i497, i497, i31) -> f4613_0_imprimer_GE(EOS(STATIC_4613), java.lang.Object(Carre(EOC, i31)), i497, i497, i31) :|: i497 < i31 f4613_0_imprimer_GE(EOS(STATIC_4613), java.lang.Object(Carre(EOC, i31)), i497, i497, i31) -> f4615_0_imprimer_ConstantStackPush(EOS(STATIC_4615), java.lang.Object(Carre(EOC, i31)), i497) :|: i497 < i31 f4615_0_imprimer_ConstantStackPush(EOS(STATIC_4615), java.lang.Object(Carre(EOC, i31)), i497) -> f4617_0_imprimer_Store(EOS(STATIC_4617), java.lang.Object(Carre(EOC, i31)), i497, 0) :|: TRUE f4617_0_imprimer_Store(EOS(STATIC_4617), java.lang.Object(Carre(EOC, i31)), i497, matching1) -> f4619_0_imprimer_Load(EOS(STATIC_4619), java.lang.Object(Carre(EOC, i31)), i497, 0) :|: TRUE && matching1 = 0 f4619_0_imprimer_Load(EOS(STATIC_4619), java.lang.Object(Carre(EOC, i31)), i497, matching1) -> f4626_0_imprimer_Load(EOS(STATIC_4626), java.lang.Object(Carre(EOC, i31)), i497, 0) :|: TRUE && matching1 = 0 f4626_0_imprimer_Load(EOS(STATIC_4626), java.lang.Object(Carre(EOC, i31)), i497, i499) -> f4633_0_imprimer_Load(EOS(STATIC_4633), java.lang.Object(Carre(EOC, i31)), i497, i499) :|: TRUE f4633_0_imprimer_Load(EOS(STATIC_4633), java.lang.Object(Carre(EOC, i31)), i497, i502) -> f4645_0_imprimer_Load(EOS(STATIC_4645), java.lang.Object(Carre(EOC, i31)), i497, i502) :|: TRUE f4645_0_imprimer_Load(EOS(STATIC_4645), java.lang.Object(Carre(EOC, i31)), i497, i507) -> f4646_0_imprimer_Load(EOS(STATIC_4646), java.lang.Object(Carre(EOC, i31)), i497, i507, i507) :|: TRUE f4646_0_imprimer_Load(EOS(STATIC_4646), java.lang.Object(Carre(EOC, i31)), i497, i507, i507) -> f4647_0_imprimer_FieldAccess(EOS(STATIC_4647), java.lang.Object(Carre(EOC, i31)), i497, i507, i507, java.lang.Object(Carre(EOC, i31))) :|: TRUE f4647_0_imprimer_FieldAccess(EOS(STATIC_4647), java.lang.Object(Carre(EOC, i31)), i497, i507, i507, java.lang.Object(Carre(EOC, i31))) -> f4648_0_imprimer_GE(EOS(STATIC_4648), java.lang.Object(Carre(EOC, i31)), i497, i507, i507, i31) :|: TRUE f4648_0_imprimer_GE(EOS(STATIC_4648), java.lang.Object(Carre(EOC, i31)), i497, i507, i507, i31) -> f4649_0_imprimer_GE(EOS(STATIC_4649), java.lang.Object(Carre(EOC, i31)), i497, i507, i507, i31) :|: i507 >= i31 f4648_0_imprimer_GE(EOS(STATIC_4648), java.lang.Object(Carre(EOC, i31)), i497, i507, i507, i31) -> f4650_0_imprimer_GE(EOS(STATIC_4650), java.lang.Object(Carre(EOC, i31)), i497, i507, i507, i31) :|: i507 < i31 f4649_0_imprimer_GE(EOS(STATIC_4649), java.lang.Object(Carre(EOC, i31)), i497, i507, i507, i31) -> f4651_0_imprimer_Inc(EOS(STATIC_4651), java.lang.Object(Carre(EOC, i31)), i497) :|: i507 >= i31 f4651_0_imprimer_Inc(EOS(STATIC_4651), java.lang.Object(Carre(EOC, i31)), i497) -> f4653_0_imprimer_JMP(EOS(STATIC_4653), java.lang.Object(Carre(EOC, i31)), i497 + 1) :|: TRUE f4653_0_imprimer_JMP(EOS(STATIC_4653), java.lang.Object(Carre(EOC, i31)), i509) -> f4655_0_imprimer_Load(EOS(STATIC_4655), java.lang.Object(Carre(EOC, i31)), i509) :|: TRUE f4655_0_imprimer_Load(EOS(STATIC_4655), java.lang.Object(Carre(EOC, i31)), i509) -> f4608_0_imprimer_Load(EOS(STATIC_4608), java.lang.Object(Carre(EOC, i31)), i509) :|: TRUE f4608_0_imprimer_Load(EOS(STATIC_4608), java.lang.Object(Carre(EOC, i31)), i497) -> f4609_0_imprimer_Load(EOS(STATIC_4609), java.lang.Object(Carre(EOC, i31)), i497, i497) :|: TRUE f4650_0_imprimer_GE(EOS(STATIC_4650), java.lang.Object(Carre(EOC, i31)), i497, i507, i507, i31) -> f4652_0_imprimer_Inc(EOS(STATIC_4652), java.lang.Object(Carre(EOC, i31)), i497, i507) :|: i507 < i31 f4652_0_imprimer_Inc(EOS(STATIC_4652), java.lang.Object(Carre(EOC, i31)), i497, i507) -> f4654_0_imprimer_JMP(EOS(STATIC_4654), java.lang.Object(Carre(EOC, i31)), i497, i507 + 1) :|: TRUE f4654_0_imprimer_JMP(EOS(STATIC_4654), java.lang.Object(Carre(EOC, i31)), i497, i510) -> f4656_0_imprimer_Load(EOS(STATIC_4656), java.lang.Object(Carre(EOC, i31)), i497, i510) :|: TRUE f4656_0_imprimer_Load(EOS(STATIC_4656), java.lang.Object(Carre(EOC, i31)), i497, i510) -> f4645_0_imprimer_Load(EOS(STATIC_4645), java.lang.Object(Carre(EOC, i31)), i497, i510) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f4648_0_imprimer_GE(EOS(STATIC_4648), java.lang.Object(Carre(EOC, i31:0)), i497:0, i507:0, i507:0, i31:0) -> f4648_0_imprimer_GE(EOS(STATIC_4648), java.lang.Object(Carre(EOC, i31:0)), i497:0 + 1, 0, 0, i31:0) :|: i497:0 + 1 < i31:0 && i507:0 >= i31:0 f4648_0_imprimer_GE(EOS(STATIC_4648), java.lang.Object(Carre(EOC, i31:0)), i497:0, i507:0, i507:0, i31:0) -> f4648_0_imprimer_GE(EOS(STATIC_4648), java.lang.Object(Carre(EOC, i31:0)), i497:0, i507:0 + 1, i507:0 + 1, i31:0) :|: i507:0 < i31:0 Filtered constant ground arguments: f4648_0_imprimer_GE(x1, x2, x3, x4, x5, x6) -> f4648_0_imprimer_GE(x2, x3, x4, x5, x6) EOS(x1) -> EOS Carre(x1, x2) -> Carre(x2) Filtered duplicate arguments: f4648_0_imprimer_GE(x1, x2, x3, x4, x5) -> f4648_0_imprimer_GE(x1, x2, x4, x5) Finished conversion. Obtained 2 rules.P rules: f4648_0_imprimer_GE(java.lang.Object(Carre(i31:0)), i497:0, i507:0, i31:0, i31:0) -> f4648_0_imprimer_GE(java.lang.Object(Carre(i31:0)), i497:0 + 1, 0, i31:0, i31:0) :|: i497:0 + 1 < i31:0 && i507:0 >= i31:0 f4648_0_imprimer_GE(java.lang.Object(Carre(i31:0)), i497:0, i507:0, i31:0, i31:0) -> f4648_0_imprimer_GE(java.lang.Object(Carre(i31:0)), i497:0, i507:0 + 1, i31:0, i31:0) :|: i507:0 < i31:0 ---------------------------------------- (9) Obligation: Rules: f4648_0_imprimer_GE(java.lang.Object(Carre(i31:0)), i497:0, i507:0, i31:0, i31:0) -> f4648_0_imprimer_GE(java.lang.Object(Carre(i31:0)), i497:0 + 1, 0, i31:0, i31:0) :|: i497:0 + 1 < i31:0 && i507:0 >= i31:0 f4648_0_imprimer_GE(java.lang.Object(Carre(x)), x1, x2, x, x) -> f4648_0_imprimer_GE(java.lang.Object(Carre(x)), x1, x2 + 1, x, x) :|: x2 < x ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f4648_0_imprimer_GE(java.lang.Object(Carre(i31:0)), i497:0, i507:0, i31:0, i31:0) -> f4648_0_imprimer_GE(java.lang.Object(Carre(i31:0)), arith, 0, i31:0, i31:0) :|: i497:0 + 1 < i31:0 && i507:0 >= i31:0 && arith = i497:0 + 1 f4648_0_imprimer_GE(java.lang.Object(Carre(x3)), x4, x5, x3, x3) -> f4648_0_imprimer_GE(java.lang.Object(Carre(x3)), x4, x6, x3, x3) :|: x5 < x3 && x6 = x5 + 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f4648_0_imprimer_GE(java.lang.Object(Carre(i31:0)), i497:0, i507:0, i31:0, i31:0) -> f4648_0_imprimer_GE(java.lang.Object(Carre(i31:0)), arith, 0, i31:0, i31:0) :|: i497:0 + 1 < i31:0 && i507:0 >= i31:0 && arith = i497:0 + 1 (2) f4648_0_imprimer_GE(java.lang.Object(Carre(x3)), x4, x5, x3, x3) -> f4648_0_imprimer_GE(java.lang.Object(Carre(x3)), x4, x6, x3, x3) :|: x5 < x3 && x6 = x5 + 1 Arcs: (1) -> (1), (2) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f4648_0_imprimer_GE(java.lang.Object(Carre(i31:0)), i497:0, i507:0, i31:0, i31:0) -> f4648_0_imprimer_GE(java.lang.Object(Carre(i31:0)), arith, 0, i31:0, i31:0) :|: i497:0 + 1 < i31:0 && i507:0 >= i31:0 && arith = i497:0 + 1 (2) f4648_0_imprimer_GE(java.lang.Object(Carre(x3)), x4, x5, x3, x3) -> f4648_0_imprimer_GE(java.lang.Object(Carre(x3)), x4, x6, x3, x3) :|: x5 < x3 && x6 = x5 + 1 Arcs: (1) -> (1), (2) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f4648_0_imprimer_GE(java.lang.Object(Carre(x3:0)), x4:0, x5:0, x3:0, x3:0) -> f4648_0_imprimer_GE(java.lang.Object(Carre(x3:0)), x4:0, x5:0 + 1, x3:0, x3:0) :|: x5:0 < x3:0 f4648_0_imprimer_GE(java.lang.Object(Carre(i31:0:0)), i497:0:0, i507:0:0, i31:0:0, i31:0:0) -> f4648_0_imprimer_GE(java.lang.Object(Carre(i31:0:0)), i497:0:0 + 1, 0, i31:0:0, i31:0:0) :|: i497:0:0 + 1 < i31:0:0 && i507:0:0 >= i31:0:0 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f4648_0_imprimer_GE(VARIABLE, VARIABLE, VARIABLE, INTEGER, INTEGER) java.lang.Object(VARIABLE) Carre(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f4648_0_imprimer_GE(c, x4:0, x5:0, x3:0, x3:0) -> f4648_0_imprimer_GE(c1, x4:0, c2, x3:0, x3:0) :|: c2 = x5:0 + 1 && (c1 = 0 && c = 0) && x5:0 < x3:0 f4648_0_imprimer_GE(c3, i497:0:0, i507:0:0, i31:0:0, i31:0:0) -> f4648_0_imprimer_GE(c4, c5, c6, i31:0:0, i31:0:0) :|: c6 = 0 && (c5 = i497:0:0 + 1 && (c4 = 0 && c3 = 0)) && (i497:0:0 + 1 < i31:0:0 && i507:0:0 >= i31:0:0) ---------------------------------------- (18) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f4648_0_imprimer_GE(x, x1, x2, x3, x4)] = -1 + c*x - x1 + x4 The following rules are decreasing: f4648_0_imprimer_GE(c3, i497:0:0, i507:0:0, i31:0:0, i31:0:0) -> f4648_0_imprimer_GE(c4, c5, c6, i31:0:0, i31:0:0) :|: c6 = 0 && (c5 = i497:0:0 + 1 && (c4 = 0 && c3 = 0)) && (i497:0:0 + 1 < i31:0:0 && i507:0:0 >= i31:0:0) The following rules are bounded: f4648_0_imprimer_GE(c3, i497:0:0, i507:0:0, i31:0:0, i31:0:0) -> f4648_0_imprimer_GE(c4, c5, c6, i31:0:0, i31:0:0) :|: c6 = 0 && (c5 = i497:0:0 + 1 && (c4 = 0 && c3 = 0)) && (i497:0:0 + 1 < i31:0:0 && i507:0:0 >= i31:0:0) ---------------------------------------- (19) Obligation: Rules: f4648_0_imprimer_GE(c, x4:0, x5:0, x3:0, x3:0) -> f4648_0_imprimer_GE(c1, x4:0, c2, x3:0, x3:0) :|: c2 = x5:0 + 1 && (c1 = 0 && c = 0) && x5:0 < x3:0 ---------------------------------------- (20) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f4648_0_imprimer_GE ] = -1*f4648_0_imprimer_GE_3 + f4648_0_imprimer_GE_5 The following rules are decreasing: f4648_0_imprimer_GE(c, x4:0, x5:0, x3:0, x3:0) -> f4648_0_imprimer_GE(c1, x4:0, c2, x3:0, x3:0) :|: c2 = x5:0 + 1 && (c1 = 0 && c = 0) && x5:0 < x3:0 The following rules are bounded: f4648_0_imprimer_GE(c, x4:0, x5:0, x3:0, x3:0) -> f4648_0_imprimer_GE(c1, x4:0, c2, x3:0, x3:0) :|: c2 = x5:0 + 1 && (c1 = 0 && c = 0) && x5:0 < x3:0 ---------------------------------------- (21) YES ---------------------------------------- (22) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Carre.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *Carre: [carre] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (23) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 32 IRulesP rules: f4050_0_init_ConstantStackPush(EOS(STATIC_4050), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i348, i348) -> f4065_0_init_GE(EOS(STATIC_4065), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i348, i348, 3) :|: TRUE f4065_0_init_GE(EOS(STATIC_4065), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i371, matching1) -> f4070_0_init_GE(EOS(STATIC_4070), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i371, 3) :|: TRUE && matching1 = 3 f4070_0_init_GE(EOS(STATIC_4070), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i371, matching1) -> f4073_0_init_ConstantStackPush(EOS(STATIC_4073), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371) :|: i371 < 3 && matching1 = 3 f4073_0_init_ConstantStackPush(EOS(STATIC_4073), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371) -> f4087_0_init_Store(EOS(STATIC_4087), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, 0) :|: TRUE f4087_0_init_Store(EOS(STATIC_4087), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, matching1) -> f4091_0_init_Load(EOS(STATIC_4091), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, 0) :|: TRUE && matching1 = 0 f4091_0_init_Load(EOS(STATIC_4091), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, matching1) -> f4351_0_init_Load(EOS(STATIC_4351), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, 0) :|: TRUE && matching1 = 0 f4351_0_init_Load(EOS(STATIC_4351), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i398) -> f4395_0_init_Load(EOS(STATIC_4395), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i398) :|: TRUE f4395_0_init_Load(EOS(STATIC_4395), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i422) -> f4443_0_init_Load(EOS(STATIC_4443), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i422) :|: TRUE f4443_0_init_Load(EOS(STATIC_4443), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i451) -> f4446_0_init_ConstantStackPush(EOS(STATIC_4446), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i451, i451) :|: TRUE f4446_0_init_ConstantStackPush(EOS(STATIC_4446), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i451, i451) -> f4449_0_init_GE(EOS(STATIC_4449), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i451, i451, 3) :|: TRUE f4449_0_init_GE(EOS(STATIC_4449), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, i465, matching1) -> f4452_0_init_GE(EOS(STATIC_4452), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, i465, 3) :|: TRUE && matching1 = 3 f4449_0_init_GE(EOS(STATIC_4449), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i466, i466, matching1) -> f4453_0_init_GE(EOS(STATIC_4453), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i466, i466, 3) :|: TRUE && matching1 = 3 f4452_0_init_GE(EOS(STATIC_4452), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, i465, matching1) -> f4455_0_init_Load(EOS(STATIC_4455), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465) :|: i465 < 3 && matching1 = 3 f4455_0_init_Load(EOS(STATIC_4455), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465) -> f4458_0_init_FieldAccess(EOS(STATIC_4458), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31))))) :|: TRUE f4458_0_init_FieldAccess(EOS(STATIC_4458), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31))))) -> f4461_0_init_Load(EOS(STATIC_4461), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, java.lang.Object(ARRAY(i31))) :|: TRUE f4461_0_init_Load(EOS(STATIC_4461), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, java.lang.Object(ARRAY(i31))) -> f4464_0_init_ArrayAccess(EOS(STATIC_4464), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, java.lang.Object(ARRAY(i31)), i371) :|: TRUE f4464_0_init_ArrayAccess(EOS(STATIC_4464), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, java.lang.Object(ARRAY(i31)), i371) -> f4466_0_init_ArrayAccess(EOS(STATIC_4466), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, java.lang.Object(ARRAY(i31)), i371) :|: TRUE f4466_0_init_ArrayAccess(EOS(STATIC_4466), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, java.lang.Object(ARRAY(i31)), i371) -> f4469_0_init_Load(EOS(STATIC_4469), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, o1103) :|: i371 < i31 f4469_0_init_Load(EOS(STATIC_4469), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, o1103) -> f4472_0_init_ConstantStackPush(EOS(STATIC_4472), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, o1103, i465) :|: TRUE f4472_0_init_ConstantStackPush(EOS(STATIC_4472), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, o1103, i465) -> f4474_0_init_ArrayAccess(EOS(STATIC_4474), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, o1103, i465, 0) :|: TRUE f4474_0_init_ArrayAccess(EOS(STATIC_4474), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, java.lang.Object(o1109put), i465, matching1) -> f4477_0_init_ArrayAccess(EOS(STATIC_4477), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, java.lang.Object(o1109put), i465, 0) :|: TRUE && matching1 = 0 f4477_0_init_ArrayAccess(EOS(STATIC_4477), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, java.lang.Object(ARRAY(i477)), i465, matching1) -> f4481_0_init_ArrayAccess(EOS(STATIC_4481), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, java.lang.Object(ARRAY(i477)), i465, 0) :|: i477 >= 0 && matching1 = 0 f4481_0_init_ArrayAccess(EOS(STATIC_4481), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, java.lang.Object(ARRAY(i477)), i465, matching1) -> f4484_0_init_ArrayAccess(EOS(STATIC_4484), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, java.lang.Object(ARRAY(i477)), i465, 0) :|: TRUE && matching1 = 0 f4484_0_init_ArrayAccess(EOS(STATIC_4484), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465, java.lang.Object(ARRAY(i477)), i465, matching1) -> f4489_0_init_Inc(EOS(STATIC_4489), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465) :|: i465 < i477 && matching1 = 0 f4489_0_init_Inc(EOS(STATIC_4489), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465) -> f4494_0_init_JMP(EOS(STATIC_4494), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i465 + 1) :|: TRUE f4494_0_init_JMP(EOS(STATIC_4494), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i480) -> f4497_0_init_Load(EOS(STATIC_4497), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i480) :|: TRUE f4497_0_init_Load(EOS(STATIC_4497), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i480) -> f4443_0_init_Load(EOS(STATIC_4443), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i480) :|: TRUE f4453_0_init_GE(EOS(STATIC_4453), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371, i466, i466, matching1) -> f4456_0_init_Inc(EOS(STATIC_4456), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371) :|: i466 >= 3 && matching1 = 3 f4456_0_init_Inc(EOS(STATIC_4456), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371) -> f4459_0_init_JMP(EOS(STATIC_4459), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i371 + 1) :|: TRUE f4459_0_init_JMP(EOS(STATIC_4459), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i467) -> f4462_0_init_Load(EOS(STATIC_4462), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i467) :|: TRUE f4462_0_init_Load(EOS(STATIC_4462), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i467) -> f4045_0_init_Load(EOS(STATIC_4045), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i467) :|: TRUE f4045_0_init_Load(EOS(STATIC_4045), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i348) -> f4050_0_init_ConstantStackPush(EOS(STATIC_4050), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i348, i348) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f4449_0_init_GE(EOS(STATIC_4449), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31:0)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31:0)))), i371:0, i465:0, i465:0, 3) -> f4449_0_init_GE(EOS(STATIC_4449), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31:0)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31:0)))), i371:0, i465:0 + 1, i465:0 + 1, 3) :|: i465:0 < 3 && i371:0 < i31:0 && i477:0 > i465:0 && i477:0 > -1 f4449_0_init_GE(EOS(STATIC_4449), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31:0)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31:0)))), i371:0, i466:0, i466:0, 3) -> f4449_0_init_GE(EOS(STATIC_4449), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31:0)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31:0)))), i371:0 + 1, 0, 0, 3) :|: i466:0 > 2 && i371:0 < 2 Filtered constant ground arguments: f4449_0_init_GE(x1, x2, x3, x4, x5, x6, x7) -> f4449_0_init_GE(x2, x3, x4, x5, x6) EOS(x1) -> EOS Carre(x1, x2) -> Carre(x2) Filtered duplicate arguments: f4449_0_init_GE(x1, x2, x3, x4, x5) -> f4449_0_init_GE(x2, x3, x5) Finished conversion. Obtained 2 rules.P rules: f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i371:0, i465:0, i31:0) -> f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i371:0, i465:0 + 1, i31:0) :|: i371:0 < i31:0 && i465:0 < 3 && i477:0 > -1 && i477:0 > i465:0 f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i371:0, i466:0, i31:0) -> f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i371:0 + 1, 0, i31:0) :|: i466:0 > 2 && i371:0 < 2 ---------------------------------------- (24) Obligation: Rules: f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i371:0, i465:0, i31:0) -> f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i371:0, i465:0 + 1, i31:0) :|: i371:0 < i31:0 && i465:0 < 3 && i477:0 > -1 && i477:0 > i465:0 f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x)))), x1, x2, x) -> f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x)))), x1 + 1, 0, x) :|: x2 > 2 && x1 < 2 ---------------------------------------- (25) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (26) Obligation: Rules: f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i371:0, i465:0, i31:0) -> f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i371:0, arith, i31:0) :|: i371:0 < i31:0 && i465:0 < 3 && i477:0 > -1 && i477:0 > i465:0 && arith = i465:0 + 1 f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x3)))), x4, x5, x3) -> f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x3)))), x6, 0, x3) :|: x5 > 2 && x4 < 2 && x6 = x4 + 1 ---------------------------------------- (27) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i371:0, i465:0, i31:0) -> f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i371:0, arith, i31:0) :|: i371:0 < i31:0 && i465:0 < 3 && i477:0 > -1 && i477:0 > i465:0 && arith = i465:0 + 1 (2) f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x3)))), x4, x5, x3) -> f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x3)))), x6, 0, x3) :|: x5 > 2 && x4 < 2 && x6 = x4 + 1 Arcs: (1) -> (1), (2) (2) -> (1) This digraph is fully evaluated! ---------------------------------------- (28) Obligation: Termination digraph: Nodes: (1) f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i371:0, i465:0, i31:0) -> f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i371:0, arith, i31:0) :|: i371:0 < i31:0 && i465:0 < 3 && i477:0 > -1 && i477:0 > i465:0 && arith = i465:0 + 1 (2) f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x3)))), x4, x5, x3) -> f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x3)))), x6, 0, x3) :|: x5 > 2 && x4 < 2 && x6 = x4 + 1 Arcs: (1) -> (1), (2) (2) -> (1) This digraph is fully evaluated! ---------------------------------------- (29) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (30) Obligation: Rules: f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x3:0)))), x4:0, x5:0, x3:0) -> f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x3:0)))), x4:0 + 1, 0, x3:0) :|: x5:0 > 2 && x4:0 < 2 f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0:0)))), i371:0:0, i465:0:0, i31:0:0) -> f4449_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0:0)))), i371:0:0, i465:0:0 + 1, i31:0:0) :|: i477:0:0 > -1 && i477:0:0 > i465:0:0 && i465:0:0 < 3 && i371:0:0 < i31:0:0 ---------------------------------------- (31) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f4449_0_init_GE(VARIABLE, INTEGER, VARIABLE, VARIABLE) java.lang.Object(VARIABLE) Carre(VARIABLE) ARRAY(VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (32) Obligation: Rules: f4449_0_init_GE(c, x4:0, x5:0, x3:0) -> f4449_0_init_GE(c1, c2, c3, x3:0) :|: c3 = 0 && (c2 = x4:0 + 1 && (c1 = 0 && c = 0)) && (x5:0 > 2 && x4:0 < 2) f4449_0_init_GE(c4, i371:0:0, i465:0:0, i31:0:0) -> f4449_0_init_GE(c5, i371:0:0, c6, i31:0:0) :|: c6 = i465:0:0 + 1 && (c5 = 0 && c4 = 0) && (i477:0:0 > -1 && i477:0:0 > i465:0:0 && i465:0:0 < 3 && i371:0:0 < i31:0:0) ---------------------------------------- (33) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f4449_0_init_GE(x, x1, x2, x3)] = c*x - x1 + x3 The following rules are decreasing: f4449_0_init_GE(c, x4:0, x5:0, x3:0) -> f4449_0_init_GE(c1, c2, c3, x3:0) :|: c3 = 0 && (c2 = x4:0 + 1 && (c1 = 0 && c = 0)) && (x5:0 > 2 && x4:0 < 2) The following rules are bounded: f4449_0_init_GE(c4, i371:0:0, i465:0:0, i31:0:0) -> f4449_0_init_GE(c5, i371:0:0, c6, i31:0:0) :|: c6 = i465:0:0 + 1 && (c5 = 0 && c4 = 0) && (i477:0:0 > -1 && i477:0:0 > i465:0:0 && i465:0:0 < 3 && i371:0:0 < i31:0:0) ---------------------------------------- (34) Complex Obligation (AND) ---------------------------------------- (35) Obligation: Rules: f4449_0_init_GE(c4, i371:0:0, i465:0:0, i31:0:0) -> f4449_0_init_GE(c5, i371:0:0, c6, i31:0:0) :|: c6 = i465:0:0 + 1 && (c5 = 0 && c4 = 0) && (i477:0:0 > -1 && i477:0:0 > i465:0:0 && i465:0:0 < 3 && i371:0:0 < i31:0:0) ---------------------------------------- (36) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f4449_0_init_GE(x, x1, x2, x3)] = 2 + c*x - x2 The following rules are decreasing: f4449_0_init_GE(c4, i371:0:0, i465:0:0, i31:0:0) -> f4449_0_init_GE(c5, i371:0:0, c6, i31:0:0) :|: c6 = i465:0:0 + 1 && (c5 = 0 && c4 = 0) && (i477:0:0 > -1 && i477:0:0 > i465:0:0 && i465:0:0 < 3 && i371:0:0 < i31:0:0) The following rules are bounded: f4449_0_init_GE(c4, i371:0:0, i465:0:0, i31:0:0) -> f4449_0_init_GE(c5, i371:0:0, c6, i31:0:0) :|: c6 = i465:0:0 + 1 && (c5 = 0 && c4 = 0) && (i477:0:0 > -1 && i477:0:0 > i465:0:0 && i465:0:0 < 3 && i371:0:0 < i31:0:0) ---------------------------------------- (37) YES ---------------------------------------- (38) Obligation: Rules: f4449_0_init_GE(c, x4:0, x5:0, x3:0) -> f4449_0_init_GE(c1, c2, c3, x3:0) :|: c3 = 0 && (c2 = x4:0 + 1 && (c1 = 0 && c = 0)) && (x5:0 > 2 && x4:0 < 2) ---------------------------------------- (39) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f4449_0_init_GE ] = 1/3*f4449_0_init_GE_3 The following rules are decreasing: f4449_0_init_GE(c, x4:0, x5:0, x3:0) -> f4449_0_init_GE(c1, c2, c3, x3:0) :|: c3 = 0 && (c2 = x4:0 + 1 && (c1 = 0 && c = 0)) && (x5:0 > 2 && x4:0 < 2) The following rules are bounded: f4449_0_init_GE(c, x4:0, x5:0, x3:0) -> f4449_0_init_GE(c1, c2, c3, x3:0) :|: c3 = 0 && (c2 = x4:0 + 1 && (c1 = 0 && c = 0)) && (x5:0 > 2 && x4:0 < 2) ---------------------------------------- (40) YES