MODULE main DEFINE N := 128; M1 := 16; M2 := 32; M3 := 64; VAR fork : array 1..N of boolean; -- from 1 to 64 P[1] : process MP(fork[1],fork[2]); P[2] : process MP(fork[2],fork[3]); P[3] : process MP(fork[3],fork[4]); P[4] : process MP(fork[4],fork[5]); P[5] : process MP(fork[5],fork[6]); P[6] : process MP(fork[6],fork[7]); P[7] : process MP(fork[7],fork[8]); P[8] : process MP(fork[8],fork[9]); P[9] : process MP(fork[9],fork[10]); P[10] : process MP(fork[10],fork[11]); P[11] : process MP(fork[11],fork[12]); P[12] : process MP(fork[12],fork[13]); P[13] : process MP(fork[13],fork[14]); P[14] : process MP(fork[14],fork[15]); P[15] : process MP(fork[15],fork[16]); P[16] : process MP(fork[16],fork[17]); P[M1+1] : process MP(fork[M1+1],fork[M1+2]); P[M1+2] : process MP(fork[M1+2],fork[M1+3]); P[M1+3] : process MP(fork[M1+3],fork[M1+4]); P[M1+4] : process MP(fork[M1+4],fork[M1+5]); P[M1+5] : process MP(fork[M1+5],fork[M1+6]); P[M1+6] : process MP(fork[M1+6],fork[M1+7]); P[M1+7] : process MP(fork[M1+7],fork[M1+8]); P[M1+8] : process MP(fork[M1+8],fork[M1+9]); P[M1+9] : process MP(fork[M1+9],fork[M1+10]); P[M1+10] : process MP(fork[M1+10],fork[M1+11]); P[M1+11] : process MP(fork[M1+11],fork[M1+12]); P[M1+12] : process MP(fork[M1+12],fork[M1+13]); P[M1+13] : process MP(fork[M1+13],fork[M1+14]); P[M1+14] : process MP(fork[M1+14],fork[M1+15]); P[M1+15] : process MP(fork[M1+15],fork[M1+16]); P[M1+16] : process MP(fork[M1+16],fork[M1+17]); P[M2+1] : process MP(fork[M2+1],fork[M2+2]); P[M2+2] : process MP(fork[M2+2],fork[M2+3]); P[M2+3] : process MP(fork[M2+3],fork[M2+4]); P[M2+4] : process MP(fork[M2+4],fork[M2+5]); P[M2+5] : process MP(fork[M2+5],fork[M2+6]); P[M2+6] : process MP(fork[M2+6],fork[M2+7]); P[M2+7] : process MP(fork[M2+7],fork[M2+8]); P[M2+8] : process MP(fork[M2+8],fork[M2+9]); P[M2+9] : process MP(fork[M2+9],fork[M2+10]); P[M2+10] : process MP(fork[M2+10],fork[M2+11]); P[M2+11] : process MP(fork[M2+11],fork[M2+12]); P[M2+12] : process MP(fork[M2+12],fork[M2+13]); P[M2+13] : process MP(fork[M2+13],fork[M2+14]); P[M2+14] : process MP(fork[M2+14],fork[M2+15]); P[M2+15] : process MP(fork[M2+15],fork[M2+16]); P[M2+16] : process MP(fork[M2+16],fork[M2+17]); P[M1+M2+1] : process MP(fork[M1+M2+1],fork[M1+M2+2]); P[M1+M2+2] : process MP(fork[M1+M2+2],fork[M1+M2+3]); P[M1+M2+3] : process MP(fork[M1+M2+3],fork[M1+M2+4]); P[M1+M2+4] : process MP(fork[M1+M2+4],fork[M1+M2+5]); P[M1+M2+5] : process MP(fork[M1+M2+5],fork[M1+M2+6]); P[M1+M2+6] : process MP(fork[M1+M2+6],fork[M1+M2+7]); P[M1+M2+7] : process MP(fork[M1+M2+7],fork[M1+M2+8]); P[M1+M2+8] : process MP(fork[M1+M2+8],fork[M1+M2+9]); P[M1+M2+9] : process MP(fork[M1+M2+9],fork[M1+M2+10]); P[M1+M2+10] : process MP(fork[M1+M2+10],fork[M1+M2+11]); P[M1+M2+11] : process MP(fork[M1+M2+11],fork[M1+M2+12]); P[M1+M2+12] : process MP(fork[M1+M2+12],fork[M1+M2+13]); P[M1+M2+13] : process MP(fork[M1+M2+13],fork[M1+M2+14]); P[M1+M2+14] : process MP(fork[M1+M2+14],fork[M1+M2+15]); P[M1+M2+15] : process MP(fork[M1+M2+15],fork[M1+M2+16]); P[M1+M2+16] : process MP(fork[M1+M2+16],fork[M1+M2+17]); -- from 65 to 128 P[M3+1] : process MP(fork[M3+1],fork[M3+2]); P[M3+2] : process MP(fork[M3+2],fork[M3+3]); P[M3+3] : process MP(fork[M3+3],fork[M3+4]); P[M3+4] : process MP(fork[M3+4],fork[M3+5]); P[M3+5] : process MP(fork[M3+5],fork[M3+6]); P[M3+6] : process MP(fork[M3+6],fork[M3+7]); P[M3+7] : process MP(fork[M3+7],fork[M3+8]); P[M3+8] : process MP(fork[M3+8],fork[M3+9]); P[M3+9] : process MP(fork[M3+9],fork[M3+10]); P[M3+10] : process MP(fork[M3+10],fork[M3+11]); P[M3+11] : process MP(fork[M3+11],fork[M3+12]); P[M3+12] : process MP(fork[M3+12],fork[M3+13]); P[M3+13] : process MP(fork[M3+13],fork[M3+14]); P[M3+14] : process MP(fork[M3+14],fork[M3+15]); P[M3+15] : process MP(fork[M3+15],fork[M3+16]); P[M3+16] : process MP(fork[M3+16],fork[M3+17]); P[M3+M1+1] : process MP(fork[M3+M1+1],fork[M3+M1+2]); P[M3+M1+2] : process MP(fork[M3+M1+2],fork[M3+M1+3]); P[M3+M1+3] : process MP(fork[M3+M1+3],fork[M3+M1+4]); P[M3+M1+4] : process MP(fork[M3+M1+4],fork[M3+M1+5]); P[M3+M1+5] : process MP(fork[M3+M1+5],fork[M3+M1+6]); P[M3+M1+6] : process MP(fork[M3+M1+6],fork[M3+M1+7]); P[M3+M1+7] : process MP(fork[M3+M1+7],fork[M3+M1+8]); P[M3+M1+8] : process MP(fork[M3+M1+8],fork[M3+M1+9]); P[M3+M1+9] : process MP(fork[M3+M1+9],fork[M3+M1+10]); P[M3+M1+10] : process MP(fork[M3+M1+10],fork[M3+M1+11]); P[M3+M1+11] : process MP(fork[M3+M1+11],fork[M3+M1+12]); P[M3+M1+12] : process MP(fork[M3+M1+12],fork[M3+M1+13]); P[M3+M1+13] : process MP(fork[M3+M1+13],fork[M3+M1+14]); P[M3+M1+14] : process MP(fork[M3+M1+14],fork[M3+M1+15]); P[M3+M1+15] : process MP(fork[M3+M1+15],fork[M3+M1+16]); P[M3+M1+16] : process MP(fork[M3+M1+16],fork[M3+M1+17]); P[M3+M2+1] : process MP(fork[M3+M2+1],fork[M3+M2+2]); P[M3+M2+2] : process MP(fork[M3+M2+2],fork[M3+M2+3]); P[M3+M2+3] : process MP(fork[M3+M2+3],fork[M3+M2+4]); P[M3+M2+4] : process MP(fork[M3+M2+4],fork[M3+M2+5]); P[M3+M2+5] : process MP(fork[M3+M2+5],fork[M3+M2+6]); P[M3+M2+6] : process MP(fork[M3+M2+6],fork[M3+M2+7]); P[M3+M2+7] : process MP(fork[M3+M2+7],fork[M3+M2+8]); P[M3+M2+8] : process MP(fork[M3+M2+8],fork[M3+M2+9]); P[M3+M2+9] : process MP(fork[M3+M2+9],fork[M3+M2+10]); P[M3+M2+10] : process MP(fork[M3+M2+10],fork[M3+M2+11]); P[M3+M2+11] : process MP(fork[M3+M2+11],fork[M3+M2+12]); P[M3+M2+12] : process MP(fork[M3+M2+12],fork[M3+M2+13]); P[M3+M2+13] : process MP(fork[M3+M2+13],fork[M3+M2+14]); P[M3+M2+14] : process MP(fork[M3+M2+14],fork[M3+M2+15]); P[M3+M2+15] : process MP(fork[M3+M2+15],fork[M3+M2+16]); P[M3+M2+16] : process MP(fork[M3+M2+16],fork[M3+M2+17]); P[M3+M1+M2+1] : process MP(fork[M3+M1+M2+1],fork[M3+M1+M2+2]); P[M3+M1+M2+2] : process MP(fork[M3+M1+M2+2],fork[M3+M1+M2+3]); P[M3+M1+M2+3] : process MP(fork[M3+M1+M2+3],fork[M3+M1+M2+4]); P[M3+M1+M2+4] : process MP(fork[M3+M1+M2+4],fork[M3+M1+M2+5]); P[M3+M1+M2+5] : process MP(fork[M3+M1+M2+5],fork[M3+M1+M2+6]); P[M3+M1+M2+6] : process MP(fork[M3+M1+M2+6],fork[M3+M1+M2+7]); P[M3+M1+M2+7] : process MP(fork[M3+M1+M2+7],fork[M3+M1+M2+8]); P[M3+M1+M2+8] : process MP(fork[M3+M1+M2+8],fork[M3+M1+M2+9]); P[M3+M1+M2+9] : process MP(fork[M3+M1+M2+9],fork[M3+M1+M2+10]); P[M3+M1+M2+10] : process MP(fork[M3+M1+M2+10],fork[M3+M1+M2+11]); P[M3+M1+M2+11] : process MP(fork[M3+M1+M2+11],fork[M3+M1+M2+12]); P[M3+M1+M2+12] : process MP(fork[M3+M1+M2+12],fork[M3+M1+M2+13]); P[M3+M1+M2+13] : process MP(fork[M3+M1+M2+13],fork[M3+M1+M2+14]); P[M3+M1+M2+14] : process MP(fork[M3+M1+M2+14],fork[M3+M1+M2+15]); P[M3+M1+M2+15] : process MP(fork[M3+M1+M2+15],fork[M3+M1+M2+16]); P[M3+M1+M2+16] : process MP(fork[1],fork[M3+M1+M2+16]); MODULE MP(left,right) VAR loc : 0..3; nvr1 : boolean; nvr2 : boolean;