aidevnn/FastGoat

TC algorithm operations are right-coset

Opened this issue · 0 comments

public IEnumerable<char> Rewrite(IEnumerable<char> w)
{
if (!w.Select(char.ToLower).All(generators.Contains))
throw new GroupException(GroupExceptionType.GroupDef);
var symbol = w.Reverse().Select(c => new Generator(c)).Aggregate(Symbol.One, (i, g) => opsTable[new OpKey(i, g)]);
return elementsTable[symbol];
}

In the algorithm, all operations are right coset, (1).a = (2), where (1) and (2) are classes, H.a = K. In every other part, operations are from left x.H = K, this is why a word is reversed before being rewrited.

public interface ILeftCoset<out T> where T : struct, IElt<T>
{
T X { get; }
IEnumerable<T> xH { get; }
}

Fixing this issue will need to rewrite all the namespace ToddCoxeter.