Magma计算器:有限展示群中如何将字转为对应群元素?
在Magma中如何将有限展示群的字转换为对应群元素?
问题描述
我一直在使用Magma计算器,现在遇到如下技术问题:给定有限展示群中的一个字u,如何将其声明为该群中对应的群元素g?
背景说明
我可通过有限展示定义群,示例代码如下:
G<a,b,c> := Group< a,b,c | a^2=b^2, b^2=c^2, c=a*b >;
执行Order(G);返回正确结果8,说明计算器已识别群G。但判断群元素相等时出现问题:a、b、c及G.1、G.2、G.3表示由a、b、c生成的自由群元素,其乘积(及逆)代表自由群中的字。因此a*a^-1 eq a^-1*a;返回true(自由群中成立),但a^2 eq c^2;返回false,而这在群G中实际成立。
根据Magma手册相关章节说明:u eq v仅在字u、v自由约简后完全相同时返回true,若G非自由群,返回false不代表它们在G中对应同一元素。Magma支持群元素的相等判断(如g eq h;),因此需了解如何将有限展示群中的字u转为对应的群元素g。
尝试操作及报错
我尝试过以下代码,出现报错:
G<a,b,c> := Group< a,b,c | a^2=b^2, b^2=c^2, c=a*b >; u := a^2; v := c^2; g := ElementToSequence(G, u); h := ElementToSequence(G, v); g eq h;
报错信息:
>> g := ElementToSequence(G, u); ^ Runtime error in 'ElementToSequence': Bad argument types Argument types given: GrpFP, GrpFPElt >> h := ElementToSequence(G, v); ^ Runtime error in 'ElementToSequence': Bad argument types Argument types given: GrpFP, GrpFPElt >> g eq h; ^ User error: Identifier 'g' has not been declared or assigned
解决方案
正确的做法是使用**G!u**的强制转换语法,将自由群的字u映射为有限展示群G的元素。Magma会自动应用群的展示关系,将字归约为群G中的等价类元素。
示例代码
G<a,b,c> := Group< a,b,c | a^2=b^2, b^2=c^2, c=a*b >; u := a^2; v := c^2; // 将自由群字转换为群G的元素 g := G!u; h := G!v; // 此时判断相等会返回true,符合群G中的关系 g eq h;
也可以直接在定义时完成转换:
G<a,b,c> := Group< a,b,c | a^2=b^2, b^2=c^2, c=a*b >; g := G!(a^2); h := G!(c^2); g eq h; // 返回true
原理说明
G!x操作符会将自由群元素x映射到有限展示群G的商群元素,自动应用所有展示关系进行归约。此时的相等判断是基于群G中的等价类,而非自由群字的字面匹配,因此能正确反映群中的元素相等关系。
内容的提问来源于stack exchange,提问作者tkf
相关产品推荐
相关产品推荐

