如何处理Mathematica中的“Tag Arrow is Protected”消息?

时间:2011-12-24 10:39:01

标签: wolfram-mathematica

背景:为了支持我对伽罗瓦理论的研究,我想从多项式中计算伽罗瓦群。这个功能在Mma中并不容易获得,所以我询问并建议在Mma(或其他Sage / Pari)中使用galois包。 galois包可以从这个位置下载。 http://library.wolfram.com/infocenter/Articles/2872/(Galois包是在Mma 3时代写的。)

加载包galois.m时,Mma显示以下消息:

<<galois.m
SetDelayed::write: Tag Arrow in Arrow[Color_,{{x1_,y1_},{x2_,y2_}}] is Protected. >>
SetDelayed::write: Tag Norm in Norm[Poly_,a_Symbol] is Protected. >>
SetDelayed::write: Tag Norm in Norm[Poly_,{a__Symbol}] is Protected. >>
General::stop: Further output of SetDelayed::write will be suppressed during this calculation. >>

问题: Arrow(等等)的简单取消保护是否足以解决此问题? (我还没有尝试过。我想在修改任何标准软件包之前先等待专家建议。)

修改: 重构为Arrow1(或ArrowFnc)后仍然存在问题。这已在

上进行了测试
 CircleGraph[{a, b, c, d, -a, -b, -c, -d}, F];

(来自随附笔记本中的示例。) 没有生成图表。

 CircleGraph[{a, b, c, d, -a, -b, -c, -d}, F]

(没有;)生成一个带有附加文本的图形,如FontForm [Symbol,18]。箭头应仅包含变量a,b,c等文本。

进一步的调查显示,FontForm已被最终弃用,这是Mma 未检测到。见http://reference.wolfram.com/mathematica/ref/FontForm.html

1 个答案:

答案 0 :(得分:5)

您只需要将Arrow的匹配项替换为ArrowFcn,并将Norm的匹配项替换为NormFcn

在写入galois包之后,必须将

ArrowNorm添加到内置函数中,因此需要在包中使用替代名称。