% % MESI - DMC Code % :-dynamic r/4. :-dynamic info/4. info(1,[p],4,[i,s,e,m]). r(init,p(s_s,I,S,E,M),{I>=0,S=0,E=0,M=0},1). r(p(s_s,I,S,E,M),p(s_s,I,S,E,M), {I>=0,S>=0,M>=0,E>=0, S+M+E>=1},2). r(p(s_s,I,S,E,M),p(s_s,I1,S1,E1,M1), {I>=1, S>=0,E>=0,M>=0, I1=I-1, S1=S+M+E+1, E1=0, M1=0},3). r(p(s_s,I,S,E,M),p(s_s,I,S,E,M), {M>=1,I>=0,E>=0,S>=0},4). r(p(s_s,I,S,E,M),p(s_s,I,S,E1,M1), {I>=0,S>=0,M>=0,E>=1, E1=E-1,M1=M+1},5). r(p(s_s,I,S,E,M),p(s_s,I1,S1,E1,M1), {I+S>=1, I>=0,S>=0,E>=0,M>=0, I1=I+S+E+M-1,S1=0,E1=1,M1=0},6). r(p(s_s,I,S,E,M),p(s_s,I1,S,E1,M), {I>=0,S>=0,M>=0,E>=1, E1=E-1,I1=I+1},7). r(p(s_s,I,S,E,M),p(s_s,I1,S1,E,M), {I>=0,S>=1,M>=0,E>=0, S1=S-1,I1=I+1},8). r(p(s_s,I,S,E,M),p(s_s,I1,S,E,M1), {I>=0,S>=0,M>=1,E>=0, M1=M-1,I1=I+1},9). prop(unsafe,p:s * (s>=1) * (m>=1)). %prop(unsafe,p:s * (m>=2)).