/alasc

Computational Group Theory in Scala. It's Scala permuted!

Primary LanguageScala

AlaSc, it's Scala permuted!

Join the chat at https://gitter.im/denisrosset-alasc/Lobby

AlaSc is a Computational Group Theory library aiming to implement permutation group algorithms in Scala. The library implements the deterministic and randomized Schreier-Sims algorithms using explicit transversals, along with a few helpers.

It also provides a Grp class which can be used to explore any finite group provided a faithful action is provided.

The library is by no means complete, and the API is unstable for now.

Similar projects include:

This software is licensed under the terms of the GNU Public License version 3.

YourKit is kindly supporting AlaSc open source project with its full-featured Java Profiler. YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications. Take a look at YourKit's leading software products:

Welcome to Scala version 2.11.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_45).
Type in expressions to have them evaluated.
Type :help for more information.

scala> import net.alasc.finite._; import net.alasc.perms._; import net.alasc.perms.default._; import net.alasc.syntax.all._; import net.alasc.std.any._; import spire.implicits._

scala> val M11 = Grp(Perm(1,2,3,4,5,6,7,8,9,10,11), Perm(3,7,11,8)(4,10,5,6))
M11: net.alasc.math.Grp[net.alasc.math.Perm] = Grp(Perm(1,2,3,4,5,6,7,8,9,10,11), Perm(3,7,11,8)(4,10,5,6))

scala> M11.setwiseStabilizer(2,9)
res0: net.alasc.math.Grp[net.alasc.math.Perm] = Grp(Perm(1,8)(2,9)(3,4)(5,10), Perm(1,10)(3,4)(5,8)(7,11), Perm(1,6,3,7)(4,5,8,10), Perm(1,7,3,6)(4,10,8,5), Perm(1,10,3,5)(4,6,8,7)) of order 144