$PrePrint = ScreenDollarIndices causes error in ?LieD

31 views
Skip to first unread message

Juan Margalef

unread,
Aug 22, 2024, 12:02:10 PMAug 22
to xAct Tensor Computer Algebra
I have found an error in the following simple code:

    << xAct`xTensor`
    ?LieD
    $PrePrint = ScreenDollarIndices
    ?LieD

The first ?LieD provides the correct information while the second throws the errors:

    UpSet::write: Tag None in xAct`xTensor`Private`NoDollar[None] is Protected.
    VBundleOfIndex::unknown: Unknown index None.
    DummyIn::unknown: Unknown vector bundle Null.
    Throw::nocatch: Uncaught Throw[Null] returned to top level.

This is actually the same error thrown if one writes:

    LieD[V, PD][W[b]]  

instead of including the appropriate index in the vector V:

    LieD[V[a], PD][W[b]] 
 
The error doesn't seem too important and LieD seems to work fine, but I was wondering if there might be additional problems.

Jose

unread,
Sep 7, 2024, 11:41:29 PMSep 7
to xAct Tensor Computer Algebra
Hi Juan,

Thanks for reporting this.

This is a bug in the typesetting process, some bad interaction between ScreenDollarIndices and the internals of InformationData. It does not affect computation, so I consider it harmless, though I understand it is annoying when one wants to check the collection of properties of some object. I'm aware that xAct's typesetting code is not very robust. I'm afraid that for the moment one needs to eliminate ScreenDollarIndices temporarily, say with

$PrePrint =.
Information[LieD]
$PrePrint = ScreenDollarIndices

Cheers,
Jose.

Thomas Bäckdahl

unread,
Sep 8, 2024, 6:15:12 AMSep 8
to xa...@googlegroups.com
Hi!

I agree that the interaction between ScreenDollarIndices and InformationData is too fragile.

This appears not only in LieD, but in many other places too. It is actually not InformationData in itself that is the main problem.

In this case I traced the problem to the following line in xTensor section 12.1.
LieD[vector_, covd_][expr_] := ExpandLieD[ReplaceDummies[vector], covd, False, Identity1][expr];
This does not have some checks on what it is acting on.
For instance, if you write
LieD[vector, covd][expr]
which in the right hand side of the line above, you get several errors.

With $PrePrint =.;
HoldPattern[ LieD[vector_, covd_][Scalar[expr_]] :> Scalar[LieD[vector, covd][expr]]]
does not produce any errors.
However, with $PrePrint = ScreenDollarIndices;
HoldPattern[ LieD[vector_, covd_][Scalar[expr_]] :> Scalar[LieD[vector, covd][expr]]]
will produce errors.
The reason is that ScreenDollarIndices is trying to evaluate the right hand side as it stands.
This is often a bad idea.

One possible solution that I have not explored in great detail is to stop ScreenDollarIndices to do anything on HoldPattern expressions.
Unfortunately, I have not yet found the right way to do that without causing more problems.

Regards
Thomas
--
You received this message because you are subscribed to the Google Groups "xAct Tensor Computer Algebra" group.
To unsubscribe from this group and stop receiving emails from it, send an email to xact+uns...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/xact/79af416e-75e5-415a-ba17-9ae464650427n%40googlegroups.com.

Reply all
Reply to author
Forward
0 new messages