// **************************************************************************
//
//    eses                   eses
//   eses                     eses
//  eses    eseses  esesese    eses   Embedded Systems Group
//  ese    ese  ese ese         ese
//  ese    eseseses eseseses    ese   Department of Computer Science
//  eses   eses          ese   eses
//   eses   eseses  eseseses  eses    University of Kaiserslautern
//    eses                   eses
//
// **************************************************************************

package MagicSquare;

macro size = 3;
macro SUM = (sum(i=1 .. (size()*size())) i) / size();

module CheckColSum(
    [size][size()]nat{size()*size()} a,
    nat{size} ?i,
    event !wrong_sum
) {
    if(SUM!=sum(j=0..(size()-1)) a[j][i])
        emit (wrong_sum);
}