function b = is_loctest(S) % is the monoid S locally testable? % NOTE (IMPORTANT!!): use [S,STR]=dfsa2monoid_str(M,1) [n,n] = size(S); Id = find_idempotents(S); b = 1; for e = Id(:)' for s=1:n ese = prod3(S,e,s,e); if S(ese,ese)~=ese b = 0; return end for t=1:n ete = prod3(S,e,t,e); if S(ese,ete)~=S(ete,ese) b = 0; return end end end end return function Id = find_idempotents(S) Id = []; [n,n] = size(S); for i=2:n if S(i,i)==i Id(end+1) = i; end end return function p = prod3(S,a,b,c) % p = a*b*c in S p = S(S(a,b),c); return function Si = Sab(S,a) [n,n] = size(S); Si = []; for i=1:n for j=1:n Si(end+1) = S(S(i,a),j); end end return