Research software documentation
Idenso
Symbolic tensor identities for Spenso and Symbolica
Overview
Idenso is the symbolic identity and simplification layer for tensors encoded in the form that Spenso can parse from Symbolica expressions. It provides representation symbols, index tooling, reversible “cooking” of subexpressions, selective expansion, and identities for Dirac, metric, epsilon, and color algebra.
Idenso rewrites abstract tensor expressions. Functions such as
expand_mink distribute factorized terms that carry selected index families; they do not turn every tensor into a dense array of components. Concrete tensor storage and network execution belong to Spenso.Choose a task
- To install Symbolica and simplify one metric contraction with its bundled community modules, follow the Python guide.
- To apply the same identity through the native API, use the Rust guide.
- To verify the rewrite as a controlled, observable pass, follow the controlled identity tutorial and the Python function reference.
- To isolate dummy-index namespaces or cook a large expression, use the algebra guide with the exact
IndexToolingandCookableRustdoc. - To audit a sign or normalization in a Dirac/color pass, use the source-backed shipped color and Dirac convention reference.
A controlled rewrite pipeline
There is no universally correct “simplify everything” order. A robust workflow makes each phase explicit:
- initialize the standard representations and tensor symbols;
- inspect dangling indices and normalize or wrap dummy-index namespaces when combining expressions;
- expand only the sectors needed by the next identity pass;
- simplify gamma, metric, or color structures as appropriate;
- canonicalize and compare results using the conventions of the consuming calculation.
Expansion can grow an expression quickly, so perform it as late and selectively as possible. Wrapping indices is especially important before multiplying independently constructed expressions: equal printed index names can otherwise acquire an unintended contraction.
Representations and cooking
The representation layer defines spin-fundamental, color-fundamental, color-sextet, bispinor, and color-adjoint types together with their duality. Importing the published Idenso community module registers the related Symbolica symbols and Spenso tags before expressions are built.
The Cookable API can replace selected function-like subexpressions or index payloads with compact symbols and later reverse the operation. Use reversible settings when the original expression must be recovered. A cooked symbol is an intermediate encoding, not a portable serialized physics result unless the associated mapping and settings are retained.
Idenso is consumed by GammaLoop and its tensor conventions are shared with Spenso. Continue to the interface guide, native Rustdoc, and generated Python reference for supported functions, signatures, and feature gates.
Contributors changing representation syntax, symbolic-network parsing, index ownership, or rewrite order should also read the source-audited Idenso implementation architecture.