Download
language Essence 1.3
$ prob003: quasigroup existence QG6
$ http://www.csplib.org/Problems/prob003

given n : int(1..100)
letting g be domain int (0..n-1)

find quasigroup : function(total) tuple(g,g) --> g

such that
  $ Latin square-ness
  forAll v : g . injective(restrict(quasigroup,`tuple(int(v),g)`)),
  forAll v : g . injective(restrict(quasigroup,`tuple(g,int(v))`)),

  $ qg6 (a*b)*b = a*(a*b)
  forAll a,b : g . quasigroup((quasigroup((a,b)),b)) = quasigroup((a,quasigroup((a,b))))