SharedExpression
Symbolica documentation for getting started, symbolic expressions, numerical evaluation, pattern matching, and APIs in Python and Rust.
SharedExpression
class SharedExpressionA complete expression with transparent common-subexpression bindings.
Examples
from symbolica import S
from symbolica.community.hepkit import oneloop
m2 = S("oneloop_shared_mass_squared")
shared = oneloop.get_expression(oneloop.A0(m2, 1), coefficient=-1, shared=True)
assert isinstance(shared, oneloop.SharedExpression)Attributes
| Name | Description |
|---|---|
byte_size |
Native byte size of the root and retained definitions. |
definitions |
Alias expressions paired with their complete defining expressions. |
num_definitions |
Number of retained common-subexpression definitions. |
root |
Root expression, referring to any retained aliases. |
byte_size
SharedExpression.byte_size: intNative byte size of the root and retained definitions.
Examples
assert shared.byte_size > 0definitions
SharedExpression.definitions: list[tuple[Expression, Expression]]Alias expressions paired with their complete defining expressions.
Examples
assert shared.definitions == []num_definitions
SharedExpression.num_definitions: intNumber of retained common-subexpression definitions.
Examples
assert shared.num_definitions == 0root
SharedExpression.root: ExpressionRoot expression, referring to any retained aliases.
Examples
assert shared.root == m2Methods
| Name | Description |
|---|---|
__repr__ |
Describe the root, retained definitions and native byte size. |
to_expression |
Substitute every binding, subject to explicit expansion limits. |
__repr__
SharedExpression.__repr__() -> strDescribe the root, retained definitions and native byte size.
Examples
assert repr(shared).startswith("SharedExpression(")to_expression
SharedExpression.to_expression(*, max_nodes: int = 100000000, max_depth: int = 4096) -> ExpressionSubstitute every binding, subject to explicit expansion limits.
Examples
assert shared.to_expression() == m2Parameters
max_nodes(int, optional) Materialization budget; default 100_000_000.max_depth(int, optional) Expansion nesting limit; default 4096.