/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: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 1245 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 3 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 114 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 18 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, 54 ms] (24) IRSwT (25) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (26) IRSwT (27) IRSwTTerminationDigraphProof [EQUIVALENT, 21 ms] (28) IRSwT (29) IntTRSCompressionProof [EQUIVALENT, 0 ms] (30) IRSwT (31) TempFilterProof [SOUND, 49 ms] (32) IntTRS (33) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (34) AND (35) IntTRS (36) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (37) YES (38) IntTRS (39) PolynomialOrderProcessor [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: f4393_0_imprimer_Load(EOS(STATIC_4393), java.lang.Object(Carre(EOC, i31)), i488, i488) -> f4394_0_imprimer_FieldAccess(EOS(STATIC_4394), java.lang.Object(Carre(EOC, i31)), i488, i488, java.lang.Object(Carre(EOC, i31))) :|: TRUE f4394_0_imprimer_FieldAccess(EOS(STATIC_4394), java.lang.Object(Carre(EOC, i31)), i488, i488, java.lang.Object(Carre(EOC, i31))) -> f4395_0_imprimer_GE(EOS(STATIC_4395), java.lang.Object(Carre(EOC, i31)), i488, i488, i31) :|: TRUE f4395_0_imprimer_GE(EOS(STATIC_4395), java.lang.Object(Carre(EOC, i31)), i488, i488, i31) -> f4397_0_imprimer_GE(EOS(STATIC_4397), java.lang.Object(Carre(EOC, i31)), i488, i488, i31) :|: i488 < i31 f4397_0_imprimer_GE(EOS(STATIC_4397), java.lang.Object(Carre(EOC, i31)), i488, i488, i31) -> f4399_0_imprimer_ConstantStackPush(EOS(STATIC_4399), java.lang.Object(Carre(EOC, i31)), i488) :|: i488 < i31 f4399_0_imprimer_ConstantStackPush(EOS(STATIC_4399), java.lang.Object(Carre(EOC, i31)), i488) -> f4401_0_imprimer_Store(EOS(STATIC_4401), java.lang.Object(Carre(EOC, i31)), i488, 0) :|: TRUE f4401_0_imprimer_Store(EOS(STATIC_4401), java.lang.Object(Carre(EOC, i31)), i488, matching1) -> f4403_0_imprimer_Load(EOS(STATIC_4403), java.lang.Object(Carre(EOC, i31)), i488, 0) :|: TRUE && matching1 = 0 f4403_0_imprimer_Load(EOS(STATIC_4403), java.lang.Object(Carre(EOC, i31)), i488, matching1) -> f4410_0_imprimer_Load(EOS(STATIC_4410), java.lang.Object(Carre(EOC, i31)), i488, 0) :|: TRUE && matching1 = 0 f4410_0_imprimer_Load(EOS(STATIC_4410), java.lang.Object(Carre(EOC, i31)), i488, i490) -> f4417_0_imprimer_Load(EOS(STATIC_4417), java.lang.Object(Carre(EOC, i31)), i488, i490) :|: TRUE f4417_0_imprimer_Load(EOS(STATIC_4417), java.lang.Object(Carre(EOC, i31)), i488, i493) -> f4429_0_imprimer_Load(EOS(STATIC_4429), java.lang.Object(Carre(EOC, i31)), i488, i493) :|: TRUE f4429_0_imprimer_Load(EOS(STATIC_4429), java.lang.Object(Carre(EOC, i31)), i488, i498) -> f4430_0_imprimer_Load(EOS(STATIC_4430), java.lang.Object(Carre(EOC, i31)), i488, i498, i498) :|: TRUE f4430_0_imprimer_Load(EOS(STATIC_4430), java.lang.Object(Carre(EOC, i31)), i488, i498, i498) -> f4431_0_imprimer_FieldAccess(EOS(STATIC_4431), java.lang.Object(Carre(EOC, i31)), i488, i498, i498, java.lang.Object(Carre(EOC, i31))) :|: TRUE f4431_0_imprimer_FieldAccess(EOS(STATIC_4431), java.lang.Object(Carre(EOC, i31)), i488, i498, i498, java.lang.Object(Carre(EOC, i31))) -> f4432_0_imprimer_GE(EOS(STATIC_4432), java.lang.Object(Carre(EOC, i31)), i488, i498, i498, i31) :|: TRUE f4432_0_imprimer_GE(EOS(STATIC_4432), java.lang.Object(Carre(EOC, i31)), i488, i498, i498, i31) -> f4433_0_imprimer_GE(EOS(STATIC_4433), java.lang.Object(Carre(EOC, i31)), i488, i498, i498, i31) :|: i498 >= i31 f4432_0_imprimer_GE(EOS(STATIC_4432), java.lang.Object(Carre(EOC, i31)), i488, i498, i498, i31) -> f4434_0_imprimer_GE(EOS(STATIC_4434), java.lang.Object(Carre(EOC, i31)), i488, i498, i498, i31) :|: i498 < i31 f4433_0_imprimer_GE(EOS(STATIC_4433), java.lang.Object(Carre(EOC, i31)), i488, i498, i498, i31) -> f4435_0_imprimer_Inc(EOS(STATIC_4435), java.lang.Object(Carre(EOC, i31)), i488) :|: i498 >= i31 f4435_0_imprimer_Inc(EOS(STATIC_4435), java.lang.Object(Carre(EOC, i31)), i488) -> f4437_0_imprimer_JMP(EOS(STATIC_4437), java.lang.Object(Carre(EOC, i31)), i488 + 1) :|: TRUE f4437_0_imprimer_JMP(EOS(STATIC_4437), java.lang.Object(Carre(EOC, i31)), i500) -> f4439_0_imprimer_Load(EOS(STATIC_4439), java.lang.Object(Carre(EOC, i31)), i500) :|: TRUE f4439_0_imprimer_Load(EOS(STATIC_4439), java.lang.Object(Carre(EOC, i31)), i500) -> f4392_0_imprimer_Load(EOS(STATIC_4392), java.lang.Object(Carre(EOC, i31)), i500) :|: TRUE f4392_0_imprimer_Load(EOS(STATIC_4392), java.lang.Object(Carre(EOC, i31)), i488) -> f4393_0_imprimer_Load(EOS(STATIC_4393), java.lang.Object(Carre(EOC, i31)), i488, i488) :|: TRUE f4434_0_imprimer_GE(EOS(STATIC_4434), java.lang.Object(Carre(EOC, i31)), i488, i498, i498, i31) -> f4436_0_imprimer_Inc(EOS(STATIC_4436), java.lang.Object(Carre(EOC, i31)), i488, i498) :|: i498 < i31 f4436_0_imprimer_Inc(EOS(STATIC_4436), java.lang.Object(Carre(EOC, i31)), i488, i498) -> f4438_0_imprimer_JMP(EOS(STATIC_4438), java.lang.Object(Carre(EOC, i31)), i488, i498 + 1) :|: TRUE f4438_0_imprimer_JMP(EOS(STATIC_4438), java.lang.Object(Carre(EOC, i31)), i488, i501) -> f4440_0_imprimer_Load(EOS(STATIC_4440), java.lang.Object(Carre(EOC, i31)), i488, i501) :|: TRUE f4440_0_imprimer_Load(EOS(STATIC_4440), java.lang.Object(Carre(EOC, i31)), i488, i501) -> f4429_0_imprimer_Load(EOS(STATIC_4429), java.lang.Object(Carre(EOC, i31)), i488, i501) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f4432_0_imprimer_GE(EOS(STATIC_4432), java.lang.Object(Carre(EOC, i31:0)), i488:0, i498:0, i498:0, i31:0) -> f4432_0_imprimer_GE(EOS(STATIC_4432), java.lang.Object(Carre(EOC, i31:0)), i488:0 + 1, 0, 0, i31:0) :|: i488:0 + 1 < i31:0 && i498:0 >= i31:0 f4432_0_imprimer_GE(EOS(STATIC_4432), java.lang.Object(Carre(EOC, i31:0)), i488:0, i498:0, i498:0, i31:0) -> f4432_0_imprimer_GE(EOS(STATIC_4432), java.lang.Object(Carre(EOC, i31:0)), i488:0, i498:0 + 1, i498:0 + 1, i31:0) :|: i498:0 < i31:0 Filtered constant ground arguments: f4432_0_imprimer_GE(x1, x2, x3, x4, x5, x6) -> f4432_0_imprimer_GE(x2, x3, x4, x5, x6) EOS(x1) -> EOS Carre(x1, x2) -> Carre(x2) Filtered duplicate arguments: f4432_0_imprimer_GE(x1, x2, x3, x4, x5) -> f4432_0_imprimer_GE(x1, x2, x4, x5) Finished conversion. Obtained 2 rules.P rules: f4432_0_imprimer_GE(java.lang.Object(Carre(i31:0)), i488:0, i498:0, i31:0, i31:0) -> f4432_0_imprimer_GE(java.lang.Object(Carre(i31:0)), i488:0 + 1, 0, i31:0, i31:0) :|: i488:0 + 1 < i31:0 && i498:0 >= i31:0 f4432_0_imprimer_GE(java.lang.Object(Carre(i31:0)), i488:0, i498:0, i31:0, i31:0) -> f4432_0_imprimer_GE(java.lang.Object(Carre(i31:0)), i488:0, i498:0 + 1, i31:0, i31:0) :|: i498:0 < i31:0 ---------------------------------------- (9) Obligation: Rules: f4432_0_imprimer_GE(java.lang.Object(Carre(i31:0)), i488:0, i498:0, i31:0, i31:0) -> f4432_0_imprimer_GE(java.lang.Object(Carre(i31:0)), i488:0 + 1, 0, i31:0, i31:0) :|: i488:0 + 1 < i31:0 && i498:0 >= i31:0 f4432_0_imprimer_GE(java.lang.Object(Carre(x)), x1, x2, x, x) -> f4432_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: f4432_0_imprimer_GE(java.lang.Object(Carre(i31:0)), i488:0, i498:0, i31:0, i31:0) -> f4432_0_imprimer_GE(java.lang.Object(Carre(i31:0)), arith, 0, i31:0, i31:0) :|: i488:0 + 1 < i31:0 && i498:0 >= i31:0 && arith = i488:0 + 1 f4432_0_imprimer_GE(java.lang.Object(Carre(x3)), x4, x5, x3, x3) -> f4432_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) f4432_0_imprimer_GE(java.lang.Object(Carre(i31:0)), i488:0, i498:0, i31:0, i31:0) -> f4432_0_imprimer_GE(java.lang.Object(Carre(i31:0)), arith, 0, i31:0, i31:0) :|: i488:0 + 1 < i31:0 && i498:0 >= i31:0 && arith = i488:0 + 1 (2) f4432_0_imprimer_GE(java.lang.Object(Carre(x3)), x4, x5, x3, x3) -> f4432_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) f4432_0_imprimer_GE(java.lang.Object(Carre(i31:0)), i488:0, i498:0, i31:0, i31:0) -> f4432_0_imprimer_GE(java.lang.Object(Carre(i31:0)), arith, 0, i31:0, i31:0) :|: i488:0 + 1 < i31:0 && i498:0 >= i31:0 && arith = i488:0 + 1 (2) f4432_0_imprimer_GE(java.lang.Object(Carre(x3)), x4, x5, x3, x3) -> f4432_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: f4432_0_imprimer_GE(java.lang.Object(Carre(x3:0)), x4:0, x5:0, x3:0, x3:0) -> f4432_0_imprimer_GE(java.lang.Object(Carre(x3:0)), x4:0, x5:0 + 1, x3:0, x3:0) :|: x5:0 < x3:0 f4432_0_imprimer_GE(java.lang.Object(Carre(i31:0:0)), i488:0:0, i498:0:0, i31:0:0, i31:0:0) -> f4432_0_imprimer_GE(java.lang.Object(Carre(i31:0:0)), i488:0:0 + 1, 0, i31:0:0, i31:0:0) :|: i488:0:0 + 1 < i31:0:0 && i498:0:0 >= i31:0:0 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f4432_0_imprimer_GE(VARIABLE, VARIABLE, VARIABLE, INTEGER, INTEGER) java.lang.Object(VARIABLE) Carre(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f4432_0_imprimer_GE(c, x4:0, x5:0, x3:0, x3:0) -> f4432_0_imprimer_GE(c1, x4:0, c2, x3:0, x3:0) :|: c2 = x5:0 + 1 && (c1 = 0 && c = 0) && x5:0 < x3:0 f4432_0_imprimer_GE(c3, i488:0:0, i498:0:0, i31:0:0, i31:0:0) -> f4432_0_imprimer_GE(c4, c5, c6, i31:0:0, i31:0:0) :|: c6 = 0 && (c5 = i488:0:0 + 1 && (c4 = 0 && c3 = 0)) && (i488:0:0 + 1 < i31:0:0 && i498:0:0 >= i31:0:0) ---------------------------------------- (18) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f4432_0_imprimer_GE(x, x1, x2, x3, x4)] = -1 + c*x - x1 + x4 The following rules are decreasing: f4432_0_imprimer_GE(c3, i488:0:0, i498:0:0, i31:0:0, i31:0:0) -> f4432_0_imprimer_GE(c4, c5, c6, i31:0:0, i31:0:0) :|: c6 = 0 && (c5 = i488:0:0 + 1 && (c4 = 0 && c3 = 0)) && (i488:0:0 + 1 < i31:0:0 && i498:0:0 >= i31:0:0) The following rules are bounded: f4432_0_imprimer_GE(c3, i488:0:0, i498:0:0, i31:0:0, i31:0:0) -> f4432_0_imprimer_GE(c4, c5, c6, i31:0:0, i31:0:0) :|: c6 = 0 && (c5 = i488:0:0 + 1 && (c4 = 0 && c3 = 0)) && (i488:0:0 + 1 < i31:0:0 && i498:0:0 >= i31:0:0) ---------------------------------------- (19) Obligation: Rules: f4432_0_imprimer_GE(c, x4:0, x5:0, x3:0, x3:0) -> f4432_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: [ f4432_0_imprimer_GE ] = -1*f4432_0_imprimer_GE_3 + f4432_0_imprimer_GE_5 The following rules are decreasing: f4432_0_imprimer_GE(c, x4:0, x5:0, x3:0, x3:0) -> f4432_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: f4432_0_imprimer_GE(c, x4:0, x5:0, x3:0, x3:0) -> f4432_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: f3883_0_init_ConstantStackPush(EOS(STATIC_3883), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i354, i354) -> f3894_0_init_GE(EOS(STATIC_3894), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i354, i354, 3) :|: TRUE f3894_0_init_GE(EOS(STATIC_3894), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i369, matching1) -> f3898_0_init_GE(EOS(STATIC_3898), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i369, 3) :|: TRUE && matching1 = 3 f3898_0_init_GE(EOS(STATIC_3898), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i369, matching1) -> f3900_0_init_ConstantStackPush(EOS(STATIC_3900), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369) :|: i369 < 3 && matching1 = 3 f3900_0_init_ConstantStackPush(EOS(STATIC_3900), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369) -> f3902_0_init_Store(EOS(STATIC_3902), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, 0) :|: TRUE f3902_0_init_Store(EOS(STATIC_3902), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, matching1) -> f3904_0_init_Load(EOS(STATIC_3904), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, 0) :|: TRUE && matching1 = 0 f3904_0_init_Load(EOS(STATIC_3904), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, matching1) -> f4076_0_init_Load(EOS(STATIC_4076), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, 0) :|: TRUE && matching1 = 0 f4076_0_init_Load(EOS(STATIC_4076), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i387) -> f4179_0_init_Load(EOS(STATIC_4179), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i387) :|: TRUE f4179_0_init_Load(EOS(STATIC_4179), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i412) -> f4227_0_init_Load(EOS(STATIC_4227), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i412) :|: TRUE f4227_0_init_Load(EOS(STATIC_4227), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i438) -> f4230_0_init_ConstantStackPush(EOS(STATIC_4230), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i438, i438) :|: TRUE f4230_0_init_ConstantStackPush(EOS(STATIC_4230), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i438, i438) -> f4233_0_init_GE(EOS(STATIC_4233), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i438, i438, 3) :|: TRUE f4233_0_init_GE(EOS(STATIC_4233), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, i458, matching1) -> f4236_0_init_GE(EOS(STATIC_4236), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, i458, 3) :|: TRUE && matching1 = 3 f4233_0_init_GE(EOS(STATIC_4233), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i459, i459, matching1) -> f4237_0_init_GE(EOS(STATIC_4237), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i459, i459, 3) :|: TRUE && matching1 = 3 f4236_0_init_GE(EOS(STATIC_4236), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, i458, matching1) -> f4239_0_init_Load(EOS(STATIC_4239), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458) :|: i458 < 3 && matching1 = 3 f4239_0_init_Load(EOS(STATIC_4239), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458) -> f4242_0_init_FieldAccess(EOS(STATIC_4242), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31))))) :|: TRUE f4242_0_init_FieldAccess(EOS(STATIC_4242), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31))))) -> f4245_0_init_Load(EOS(STATIC_4245), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, java.lang.Object(ARRAY(i31))) :|: TRUE f4245_0_init_Load(EOS(STATIC_4245), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, java.lang.Object(ARRAY(i31))) -> f4248_0_init_ArrayAccess(EOS(STATIC_4248), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, java.lang.Object(ARRAY(i31)), i369) :|: TRUE f4248_0_init_ArrayAccess(EOS(STATIC_4248), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, java.lang.Object(ARRAY(i31)), i369) -> f4250_0_init_ArrayAccess(EOS(STATIC_4250), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, java.lang.Object(ARRAY(i31)), i369) :|: TRUE f4250_0_init_ArrayAccess(EOS(STATIC_4250), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, java.lang.Object(ARRAY(i31)), i369) -> f4253_0_init_Load(EOS(STATIC_4253), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, o1084) :|: i369 < i31 f4253_0_init_Load(EOS(STATIC_4253), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, o1084) -> f4256_0_init_ConstantStackPush(EOS(STATIC_4256), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, o1084, i458) :|: TRUE f4256_0_init_ConstantStackPush(EOS(STATIC_4256), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, o1084, i458) -> f4258_0_init_ArrayAccess(EOS(STATIC_4258), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, o1084, i458, 0) :|: TRUE f4258_0_init_ArrayAccess(EOS(STATIC_4258), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, java.lang.Object(o1090put), i458, matching1) -> f4261_0_init_ArrayAccess(EOS(STATIC_4261), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, java.lang.Object(o1090put), i458, 0) :|: TRUE && matching1 = 0 f4261_0_init_ArrayAccess(EOS(STATIC_4261), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, java.lang.Object(ARRAY(i469)), i458, matching1) -> f4265_0_init_ArrayAccess(EOS(STATIC_4265), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, java.lang.Object(ARRAY(i469)), i458, 0) :|: i469 >= 0 && matching1 = 0 f4265_0_init_ArrayAccess(EOS(STATIC_4265), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, java.lang.Object(ARRAY(i469)), i458, matching1) -> f4268_0_init_ArrayAccess(EOS(STATIC_4268), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, java.lang.Object(ARRAY(i469)), i458, 0) :|: TRUE && matching1 = 0 f4268_0_init_ArrayAccess(EOS(STATIC_4268), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458, java.lang.Object(ARRAY(i469)), i458, matching1) -> f4273_0_init_Inc(EOS(STATIC_4273), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458) :|: i458 < i469 && matching1 = 0 f4273_0_init_Inc(EOS(STATIC_4273), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458) -> f4278_0_init_JMP(EOS(STATIC_4278), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i458 + 1) :|: TRUE f4278_0_init_JMP(EOS(STATIC_4278), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i472) -> f4281_0_init_Load(EOS(STATIC_4281), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i472) :|: TRUE f4281_0_init_Load(EOS(STATIC_4281), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i472) -> f4227_0_init_Load(EOS(STATIC_4227), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i472) :|: TRUE f4237_0_init_GE(EOS(STATIC_4237), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369, i459, i459, matching1) -> f4240_0_init_Inc(EOS(STATIC_4240), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369) :|: i459 >= 3 && matching1 = 3 f4240_0_init_Inc(EOS(STATIC_4240), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369) -> f4243_0_init_JMP(EOS(STATIC_4243), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i369 + 1) :|: TRUE f4243_0_init_JMP(EOS(STATIC_4243), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i460) -> f4246_0_init_Load(EOS(STATIC_4246), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i460) :|: TRUE f4246_0_init_Load(EOS(STATIC_4246), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i460) -> f3879_0_init_Load(EOS(STATIC_3879), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i460) :|: TRUE f3879_0_init_Load(EOS(STATIC_3879), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i354) -> f3883_0_init_ConstantStackPush(EOS(STATIC_3883), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31)))), i354, i354) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f4233_0_init_GE(EOS(STATIC_4233), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31:0)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31:0)))), i369:0, i459:0, i459:0, 3) -> f4233_0_init_GE(EOS(STATIC_4233), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31:0)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31:0)))), i369:0 + 1, 0, 0, 3) :|: i459:0 > 2 && i369:0 < 2 f4233_0_init_GE(EOS(STATIC_4233), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31:0)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31:0)))), i369:0, i458:0, i458:0, 3) -> f4233_0_init_GE(EOS(STATIC_4233), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31:0)))), java.lang.Object(Carre(EOC, java.lang.Object(ARRAY(i31:0)))), i369:0, i458:0 + 1, i458:0 + 1, 3) :|: i458:0 < 3 && i369:0 < i31:0 && i469:0 > i458:0 && i469:0 > -1 Filtered constant ground arguments: f4233_0_init_GE(x1, x2, x3, x4, x5, x6, x7) -> f4233_0_init_GE(x2, x3, x4, x5, x6) EOS(x1) -> EOS Carre(x1, x2) -> Carre(x2) Filtered duplicate arguments: f4233_0_init_GE(x1, x2, x3, x4, x5) -> f4233_0_init_GE(x2, x3, x5) Finished conversion. Obtained 2 rules.P rules: f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i369:0, i459:0, i31:0) -> f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i369:0 + 1, 0, i31:0) :|: i459:0 > 2 && i369:0 < 2 f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i369:0, i458:0, i31:0) -> f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i369:0, i458:0 + 1, i31:0) :|: i369:0 < i31:0 && i458:0 < 3 && i469:0 > -1 && i469:0 > i458:0 ---------------------------------------- (24) Obligation: Rules: f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i369:0, i459:0, i31:0) -> f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i369:0 + 1, 0, i31:0) :|: i459:0 > 2 && i369:0 < 2 f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x)))), x1, x2, x) -> f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x)))), x1, x2 + 1, x) :|: x1 < x && x2 < 3 && x3 > -1 && x3 > x2 ---------------------------------------- (25) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (26) Obligation: Rules: f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i369:0, i459:0, i31:0) -> f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), arith, 0, i31:0) :|: i459:0 > 2 && i369:0 < 2 && arith = i369:0 + 1 f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x4)))), x5, x6, x4) -> f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x4)))), x5, x7, x4) :|: x5 < x4 && x6 < 3 && x8 > -1 && x8 > x6 && x7 = x6 + 1 ---------------------------------------- (27) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i369:0, i459:0, i31:0) -> f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), arith, 0, i31:0) :|: i459:0 > 2 && i369:0 < 2 && arith = i369:0 + 1 (2) f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x4)))), x5, x6, x4) -> f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x4)))), x5, x7, x4) :|: x5 < x4 && x6 < 3 && x8 > -1 && x8 > x6 && x7 = x6 + 1 Arcs: (1) -> (2) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (28) Obligation: Termination digraph: Nodes: (1) f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), i369:0, i459:0, i31:0) -> f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0)))), arith, 0, i31:0) :|: i459:0 > 2 && i369:0 < 2 && arith = i369:0 + 1 (2) f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x4)))), x5, x6, x4) -> f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x4)))), x5, x7, x4) :|: x5 < x4 && x6 < 3 && x8 > -1 && x8 > x6 && x7 = x6 + 1 Arcs: (1) -> (2) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (29) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (30) Obligation: Rules: f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0:0)))), i369:0:0, i459:0:0, i31:0:0) -> f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(i31:0:0)))), i369:0:0 + 1, 0, i31:0:0) :|: i459:0:0 > 2 && i369:0:0 < 2 f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x4:0)))), x5:0, x6:0, x4:0) -> f4233_0_init_GE(java.lang.Object(Carre(java.lang.Object(ARRAY(x4:0)))), x5:0, x6:0 + 1, x4:0) :|: x8:0 > -1 && x8:0 > x6:0 && x6:0 < 3 && x5:0 < x4:0 ---------------------------------------- (31) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f4233_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: f4233_0_init_GE(c, i369:0:0, i459:0:0, i31:0:0) -> f4233_0_init_GE(c1, c2, c3, i31:0:0) :|: c3 = 0 && (c2 = i369:0:0 + 1 && (c1 = 0 && c = 0)) && (i459:0:0 > 2 && i369:0:0 < 2) f4233_0_init_GE(c4, x5:0, x6:0, x4:0) -> f4233_0_init_GE(c5, x5:0, c6, x4:0) :|: c6 = x6:0 + 1 && (c5 = 0 && c4 = 0) && (x8:0 > -1 && x8:0 > x6:0 && x6:0 < 3 && x5:0 < x4:0) ---------------------------------------- (33) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f4233_0_init_GE(x, x1, x2, x3)] = c*x - x1 + x3 The following rules are decreasing: f4233_0_init_GE(c, i369:0:0, i459:0:0, i31:0:0) -> f4233_0_init_GE(c1, c2, c3, i31:0:0) :|: c3 = 0 && (c2 = i369:0:0 + 1 && (c1 = 0 && c = 0)) && (i459:0:0 > 2 && i369:0:0 < 2) The following rules are bounded: f4233_0_init_GE(c4, x5:0, x6:0, x4:0) -> f4233_0_init_GE(c5, x5:0, c6, x4:0) :|: c6 = x6:0 + 1 && (c5 = 0 && c4 = 0) && (x8:0 > -1 && x8:0 > x6:0 && x6:0 < 3 && x5:0 < x4:0) ---------------------------------------- (34) Complex Obligation (AND) ---------------------------------------- (35) Obligation: Rules: f4233_0_init_GE(c4, x5:0, x6:0, x4:0) -> f4233_0_init_GE(c5, x5:0, c6, x4:0) :|: c6 = x6:0 + 1 && (c5 = 0 && c4 = 0) && (x8:0 > -1 && x8:0 > x6:0 && x6:0 < 3 && x5:0 < x4:0) ---------------------------------------- (36) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f4233_0_init_GE(x, x1, x2, x3)] = 2 + c*x - x2 The following rules are decreasing: f4233_0_init_GE(c4, x5:0, x6:0, x4:0) -> f4233_0_init_GE(c5, x5:0, c6, x4:0) :|: c6 = x6:0 + 1 && (c5 = 0 && c4 = 0) && (x8:0 > -1 && x8:0 > x6:0 && x6:0 < 3 && x5:0 < x4:0) The following rules are bounded: f4233_0_init_GE(c4, x5:0, x6:0, x4:0) -> f4233_0_init_GE(c5, x5:0, c6, x4:0) :|: c6 = x6:0 + 1 && (c5 = 0 && c4 = 0) && (x8:0 > -1 && x8:0 > x6:0 && x6:0 < 3 && x5:0 < x4:0) ---------------------------------------- (37) YES ---------------------------------------- (38) Obligation: Rules: f4233_0_init_GE(c, i369:0:0, i459:0:0, i31:0:0) -> f4233_0_init_GE(c1, c2, c3, i31:0:0) :|: c3 = 0 && (c2 = i369:0:0 + 1 && (c1 = 0 && c = 0)) && (i459:0:0 > 2 && i369:0:0 < 2) ---------------------------------------- (39) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f4233_0_init_GE(x, x1, x2, x3)] = 1 + c*x - x1 The following rules are decreasing: f4233_0_init_GE(c, i369:0:0, i459:0:0, i31:0:0) -> f4233_0_init_GE(c1, c2, c3, i31:0:0) :|: c3 = 0 && (c2 = i369:0:0 + 1 && (c1 = 0 && c = 0)) && (i459:0:0 > 2 && i369:0:0 < 2) The following rules are bounded: f4233_0_init_GE(c, i369:0:0, i459:0:0, i31:0:0) -> f4233_0_init_GE(c1, c2, c3, i31:0:0) :|: c3 = 0 && (c2 = i369:0:0 + 1 && (c1 = 0 && c = 0)) && (i459:0:0 > 2 && i369:0:0 < 2) ---------------------------------------- (40) YES