UACalc: Command Line Examples

Varieties generated by finite algebras

Here we describe how to read in a bunch of algebras and test whether the varieties they generate have certain properties.

We have some files in the UACalc/Algebra directory called,,…, each one containing a finite idempotent algebra, and we want to check whether the varieties generated by these algebras are congruence distributive or congruence permutable. Freese and Valeriote [1] discovered polynomial time algorithms to test for these properties, and implemented them in the UACalc.

Here’s how one could use Jython to call the UACalc methods that perform these tests:

from org.uacalc.alg.Malcev import isCongruenceDistIdempotent
from org.uacalc.alg.Malcev import cpIdempotent
from import AlgebraIO

homedir = "/home/williamdemeo/git/UACalc/"

outfile1 = open(homedir+"isCD.txt", 'w')
outfile2 = open(homedir+"isCP.txt", 'w')

for k in range(1,10):
    algname = "Alg"+str(k)
    algfile = homedir+"Algebras/"+algname+".ua"
    A = AlgebraIO.readAlgebraFile(algfile)
    outfile1.write(algname+"   "+str(isCongruenceDistIdempotent(A, None))+"\n")
    outfile2.write(algname+"   "+str((cpIdempotent(A, None)==None))+"\n")

The output will be stored in the isCD.txt and isCP.txt files, and will look something like this:

Alg1    True
Alg2    True
Alg3    False
Alg4    True...

with True in the isCD.txt (resp, isCP.txt) file meaning the algebra generates a variety that is congruence distributive (resp, permutable).


[1] Ralph Freese and Matthew Valeriote, On the complexity of some Maltsev conditions, Intern. J. Algebra & Computation, 19(2009), 41-77.