我在 GAP 的环境中有以下输入:
我想检查我的自由组的某个元素是否在组中,所以我使用了代码:
> a in e;
并期望得到
[ true
但它没有用:
[ false
但是当我手动消除上图中的长绿色 [ 时,答案就很清楚了:
我可以请求帮助不要用手做吗?谢谢。
编辑:这是我为两个生成器的免费组所做的代码。看看最后的结果。
我在 GAP 的环境中有以下输入:
我想检查我的自由组的某个元素是否在组中,所以我使用了代码:
> a in e;
并期望得到
[ true
但它没有用:
[ false
但是当我手动消除上图中的长绿色 [ 时,答案就很清楚了:
我可以请求帮助不要用手做吗?谢谢。
编辑:这是我为两个生成器的免费组所做的代码。看看最后的结果。
实际上,GAP 在这里表现正确:a
是 的元素f
而不是w
. 如果您想访问新创建的有限呈现组的生成器,请使用GeneratorsOfGroup(w)
获取它们的列表。
一个基于原始问题的示例,同时也演示了如何使用ParseRelators
来简化输入:
gap> f:=FreeGroup("a","b");
<free group on the generators [ a, b ]>
gap> w:=f/ParseRelators(f,"a^2,b^3,(ab)^4");
<fp group on the generators [ a, b ]>
gap> Size(w);
24
gap> e:=Elements(w);
[ <identity ...>, a*b*a*b^-1*a*b, b, (a*b)^2, b*a*b^-1*a*b, a*b^-1*a*b*a,
b^-1*a*b^-1, a, b^-1, a*b^-1*a, a*b*a*b^-1, (a*b^-1)^2, a*b*a*b^-1*a,
b*a*b^-1, b^-1*a, b*a*b, b*a*b^-1*a, a*b^-1*a*b, b^-1*a*b*a, a*b^-1, b*a,
a*b, a*b*a, b^-1*a*b ]
gap> gens:=GeneratorsOfGroup(w);
[ a, b ]
gap> a:=gens[1];
a
gap> a in e;
true
现在相当技术细节:确实,a
来自f
和a
来自w
属于不同的家庭:
gap> FamilyObj(GeneratorsOfGroup(f)[1]) = FamilyObj(GeneratorsOfGroup(w)[1]);
false
这就是为什么你要false
进入你的例子。