Properties of Binary Functions
Haskell, 178 171 bytes

import Data.List
f x=[c,c&amp;&amp;and[(m%n)%o==m%(n%o)|m&lt;-b,n&lt;-b,o&lt;-b],x==t,all(elem b)[x,t],b==[i%i|i&lt;-b]]where c=all(l&gt;)(id=&lt;&lt;x);b=[0..l-1];a%b=x!!a!!b;l=length x;t=transpose x


Returns a list with five booleans, which are in order closure, associativity, commutativity, identity and idempotence.

Usage example: f [[1, 0, 0],[0, 1, 0],[0, 0, 1]] -> [True,False,True,False,False].

How it works:

f x=[
  c,                         -- closure (see below)
  c&amp;&amp;and[(m%n)%o==m%(n%o)|   -- assoc: make sure it's closed, then check the
          m&lt;-b,n&lt;-b,o&lt;-b],   --        assoc rule for all possible combinations
  x==t,                      -- comm: x must equal it's transposition
  all(elem b)[x,t],          -- identity: b must be a row and a column
  b==[i%i|i&lt;-b]              -- idemp: element at (i,i) must equal i
  ]
  where                      -- some helper functions
  c=all(l&gt;)(id=&lt;&lt;x);         -- closure: all elements of the input must be &lt; l 
  b=[0..l-1];                -- a list with the numbers from 0 to l-1
  a%b=x!!a!!b;               -- % is an access function for index (a,b)
  l=length x;                -- l is the number of rows of the input matrix
  t=transpose x


Edit @xnor found some bytes to save. Thanks!