Expose ring-generator utilities and surface non-ergodic Markov generators#9
Expose ring-generator utilities and surface non-ergodic Markov generators#9beanapologist with Copilot wants to merge 14 commits into
Conversation
beanapologist
left a comment
There was a problem hiding this comment.
Further expose a stochastic systems invariant structure
beanapologist
left a comment
There was a problem hiding this comment.
Update pr
reduce_ringis not consistent with the acceptance rule used byring_generator`. In particular, it includes zero- and negative-rate channel keys in the GCD used for reduction, while the generator itself silently ignores those channels. That produces a mathematically incorrect sector count and core size for inputs that the API currently accepts without error. Because the function’s documentation promises an exact reduction and a zero-error spectral replication, this should be corrected before merge.
beanapologist
left a comment
There was a problem hiding this comment.
@copilot test
entropy production = current × affinity
Implemented in |
This change exposes ring-analysis helpers at the package boundary and makes
markov_generatorexplicitly report when stationary-quantity assumptions are violated. It addresses silent misuse by detecting multi-component generators and returning the component count with the generator output.Public API surface
ergodic_components,ring_generator, andreduce_ringfromjump_diffusion_engine.__init__.jump_diffusion_engine.Ergodicity diagnostics
ergodic_components(L, rtol=1e-9)to estimatedim ker(L)via singular-value thresholding.markov_generator(...)now computes component count and emits aRuntimeWarningwhen the generator is not single-component.Ring reduction utilities
ring_generator(N, channels)to build conservative column-generators onZ_N.reduce_ring(N, channels)to compute the coprime core (g,N_core,channels_core,L_core) with channel-rate aggregation under reduction.Markov generator return contract
markov_generator(...)now returns an additional key:n_components.