Skip to content

SharedExpression

Symbolica documentation for getting started, symbolic expressions, numerical evaluation, pattern matching, and APIs in Python and Rust.

SharedExpression

class SharedExpression

A 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: int

Native byte size of the root and retained definitions.

Examples

assert shared.byte_size > 0

definitions

SharedExpression.definitions: list[tuple[Expression, Expression]]

Alias expressions paired with their complete defining expressions.

Examples

assert shared.definitions == []

num_definitions

SharedExpression.num_definitions: int

Number of retained common-subexpression definitions.

Examples

assert shared.num_definitions == 0

root

SharedExpression.root: Expression

Root expression, referring to any retained aliases.

Examples

assert shared.root == m2

Methods

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__() -> str

Describe 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) -> Expression

Substitute every binding, subject to explicit expansion limits.

Examples

assert shared.to_expression() == m2

Parameters

  • max_nodes (int, optional) Materialization budget; default 100_000_000.
  • max_depth (int, optional) Expansion nesting limit; default 4096.