Multivariate RMT and exact brackets#

The justified sunset series and reusable formal bracket compiler are separate layers. Read Multivariate Ramanujan series for the D=2 sunset for the derivation and strict domains.

Exact Schwinger/Method-of-Brackets algebra, without convergence claims.

This module produces candidate Gamma series. A nonsingular bracket basis is an algebraic condition only: selecting and summing the correct families needs an independent analytic justification, as in ramanujan_qft.sunset_rmt.

class ramanujan_qft.brackets.BracketSystem(matrix: object, offsets: object, indices: tuple, coefficients: tuple, kinetic_columns: tuple, mass_columns: tuple, u_columns: tuple, u_exponents: tuple, gamma_denominator: object, normalization: object)[source]#

Bases: object

Exact system matrix * indices + offsets = 0.

Columns first describe the kinetic polynomial F-U*sum(m_i^2*x_i), then the mass exponentials, then the monomials of U. The last bracket row comes from the multinomial expansion of U**(-D/2-sum(kinetic indices)).

solve(bound_columns)[source]#

Solve a square bracket basis over exact SymPy arithmetic.

Rejects duplicate, missing, out-of-range and singular column choices. No rows are dropped and no floating-point rank threshold is used.

class ramanujan_qft.brackets.BracketSolution(bound_columns: tuple, free_columns: tuple, determinant: object, values: tuple, term: object)[source]#

Bases: object

One exact bracket basis and its formal Gamma-function summand.

values contains every index, with bound indices solved in terms of the free ones. term includes free factorial indicators, coefficient powers, Gamma factors from the bound indices, and the graph normalization. It is not automatically a convergent representation of the integral.

ramanujan_qft.brackets.schwinger_brackets(graph, D=2, *, propagator_shifts=None, max_forests=100000)[source]#

Compile graph polynomials into a formal exact Schwinger bracket system.

D and propagator_shifts may be SymPy expressions; symbolic shifts are useful for exposing coalescing poles. They are formal regulators, not an epsilon expansion implementation. Numeric input conversion uses SymPy. Graph construction itself enforces positive masses and powers.

Convergent multivariate Gamma/Ramanujan series for the D=2 massive sunset.

Two analytically justified charts are implemented: p_E > m1+m2+m3 and M > m_a+m_b+p_E. Coalescing Gamma poles are resolved symbolically into harmonic numbers and logarithms. Evaluation uses no quadrature, QMC, numerical regulator, or analytic-continuation fallback. See docs/user_guide/sunset_rmt.md.

class ramanujan_qft.sunset_rmt.SunsetRMTSeries(graph: object, bracket_system: object, families: tuple, gamma_terms: tuple, summation_indices: tuple, regulator: object, chart: str, scale: object, ratios: tuple, mass_order: tuple, rho_upper: object, domain_digits: int, coefficient_expression: object)[source]#

Bases: object

Graph-compiled sunset chart, exact bracket families, and finite pole limit.

bracket_system and families expose the formal regulated Gamma expressions. gamma_terms uses common summation_indices and the symbolic regulator eta. coefficient_expression is their finite, coalesced D=2 limit. The numerical evaluator uses that limit directly, avoiding subtraction of divergent poles.

coefficient(indices, *, dps=30)[source]#

One finite summand, including the overall normalization 4/scale.

evaluate(*, dps=30, max_shells=128, max_terms=250000, max_dps=None)[source]#

Sum complete total-degree shells with an analytic tail bound.

Working precision is raised against cancellation. Acceptance requires agreement at two working precisions and an error estimate below 10^-dps relative to the result. All budgets are per summation/precision pass. The result is rounded to dps decimal digits; no quadrature is used.

class ramanujan_qft.sunset_rmt.RMTSeriesResult(value: object, error_estimate: object, truncation_bound: object, terms: int, shells: int, working_dps: int, chart: str, convergence_ratio: object, converged: bool = True, method: str = 'multivariate RMT / coalesced Gamma series')[source]#

Bases: object

An arbitrary-precision series value and convergence diagnostics.

truncation_bound bounds the mathematical series tail (evaluated at working precision). error_estimate also includes estimated arithmetic error, agreement between two precisions, and final rounding. It is not an interval arithmetic certificate. terms/shells refer to the final summation, not the cumulative cost of precision checks.

exception ramanujan_qft.sunset_rmt.RMTDomainError[source]#

Bases: ValueError

No implemented series chart has a certified convergence domain here.

exception ramanujan_qft.sunset_rmt.RMTSeriesConvergenceError(message, result=None)[source]#

Bases: ArithmeticError

A valid chart exceeded its work/precision budget; result may be partial.

ramanujan_qft.sunset_rmt.compile_sunset_rmt(graph, D=2, *, chart='auto')[source]#

Compile a unit-power, massive D=2 sunset into a justified Gamma series.

chart='momentum' requires p_E > m1+m2+m3. chart='mass' requires the largest mass M > the other two masses + p_E. auto selects a valid chart. Boundaries and the intervening domain are explicitly refused. In particular, the equal-mass vacuum point is outside these charts.

ramanujan_qft.sunset_rmt.integrate_graph_rmt(graph, D=2, *, chart='auto', dps=30, max_shells=128, max_terms=250000, max_dps=None)[source]#

Compile and evaluate the supported sunset RMT chart; no numerical fallback.

Returns RMTSeriesResult. For inspection or repeated precision requests, use compile_sunset_rmt() and its evaluate method instead.