```
Meaning of the annotations for the proof of each method:
- local_polyh: uses a local linear ranking function for the binary unfolding with polyhedra
- local_mono: uses a local linear ranking function for the binary unfolding with monotonicity constraints
- global_affrnkfn: uses a global affine ranking function with polyhedra
- numerical: the ranking function uses numerical variables or fields
- structural: the ranking function uses reference variables or fields
- loop: the method seems to be part of a loop or recursion

All calls to these methods terminate:
[loop,numerical,structural,local_polyh,local_mono]private static Rational.eratosthene(boolean[]):void
private static Rational.min(int,int):int
[loop,numerical,structural,local_mono]       public Rational.simplify():void
[loop,numerical,structural,local_polyh]      private EquationSystem.permute(int,int):void
public static EquationSystem.main(java.lang.String[]):void
[loop,numerical,structural,local_polyh]      private EquationSystem.divide(int,Rational):void
public Rational.(int,int):void
public Rational.times(Rational):Rational
[loop,numerical,structural,local_polyh]      private EquationSystem.searchRow(int):int
[loop,numerical,structural,local_mono]       public EquationSystem.diagonalize():boolean
[loop,numerical,local_mono]                  public EquationSystem.(Rational[][],Rational[]):void
public Rational.divideBy(Rational):void
public Rational.(Rational):void
public Rational.minus(Rational):void
[loop,numerical,structural,local_polyh]      private EquationSystem.substract(int,int):void
public Rational.isZero():boolean
private static Rational.abs(int):int

Some calls to these methods might not terminate:
none
There are no warnings
```