 
  
 
  
   
      | 
     
      
         
            | 
            | 
            | 
            | 
         
         
            | 
          
            | 
            | 
         
         
            | 
            A versatile concept for the analysis of loops
   | 
            | 
         
        
            | 
          
            | 
            | 
         
         
            | 
           
   | 
            | 
         
        
            | 
          
            | 
            | 
         
         
            | 
           
 | The Journal of Logic and Algebraic Programming |  
   | 
            | 
         
        
            | 
          
            | 
            | 
         
         
            | 
            Ever since their introduction by Hoare in 1969, invariant assertions have, justifiably, played a key role in the analysis of while loops. In this paper, we discuss a distinct but related concept, viz. invariant relations, and showhowthese can be used to answer many questions pertaining to the analysis of loops, including: how to compute the function of the loop; how to compute an invariant assertion of the loop; howto compute aweakest precondition of the loop; howtocompute a strongest postcondition of the loop; howtocompute the termination condition of a loop; howto verify whether the loop computes a given function; howto verify whether the loop is correctwith respect to a given specification; and finally howto compute an invariant function for the loop. Using a tool we have developed at the University of Tunis to derive invariant relations, we show how all these tasks can be automated by means of a computer algebra system, viz. Mathematica (©Wolfram Research). Whenever applicable, we compare the performance of our tool against the performance of others.
   | 
            | 
         
        
            | 
          
            | 
            | 
         
         
            | 
           
   | 
            | 
         
        
            | 
          
            | 
            | 
         
         
            | 
            Invariant relation, Invariant assertion, Invariant function, Weakest precondition, Strongest postcondition, While loop, Termination condition, Loop functions, Loop semantics
   | 
            | 
         
       
     | 
      | 
   
   
      | 
      | 
      | 
   
 
 |  |   |  |    |  |  
  |