Skip to content

Conversation

@tim-at-topos
Copy link
Contributor

@tim-at-topos tim-at-topos commented Aug 5, 2025

Implements a new logic of extended causal loop diagrams: causal loop diagrams labelled with differential degree and order of delay (both natural numbers).

This PR also adds a pre-processing function (catlog/src/stdlib/analyses/ecld/atomisations.rs) for future analyses, which is currently unused but included simply because it's already written (along with a simple test). If preferred, this could be moved to a separate PR :-)

To-do:

@tim-at-topos tim-at-topos added enhancement New feature or request core Rust core for categorical logic and general computation labels Aug 5, 2025
@github-actions
Copy link

github-actions bot commented Aug 5, 2025

@tim-at-topos
Copy link
Contributor Author

@jrb137 I think that catlog/src/stdlib/analyses/ecld/atomisations.rs is now ready for us read through and review, and then we can open this PR for proper review :-)

@tim-at-topos tim-at-topos force-pushed the ecld branch 3 times, most recently from dc7d32d to ac964c7 Compare August 26, 2025 04:09
jrb137 added 3 commits August 26, 2025 19:53
Morphism generator types changes from "deg" to "Degree", etc.
Previously all derivatives were named the same thing, resulting in an error.
@tim-at-topos tim-at-topos marked this pull request as ready for review September 7, 2025 06:12
\taxon{doctrine}
\import{macros}

\p{Degree-delay signed categories are categories graded in the monoid #{\mathbb{N} \times \mathbb{N} \times \mathbb{Z}_2}. The two copies of #{\mathbb{N}} label edges by the \em{differential degree} and \em{order of delay}. The order of the differential degree is meant to indicate which derivative of the target is affected (linearly) by the source. For example, an edge #{A \to B} with degree 2 indicates a contribution of the form #{\ddot{B} \mathrel{+}= kA} for some #{k \in \mathbb{R}}. The \em{order of delay} only has meaning with the assumption that the delays are modelled stochastically by Erlang distributions with the same time-scale parameter (see, for example, [here](https://en.wikipedia.org/wiki/Erlang_distribution)). The labelling in #{\mathbb{Z}_2} indicates the "sign" of the influence, as described in \ref{dct-0002}.}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps worth explaining that the reason you're talking about the Erlang distribution is that it's a sum of i.i.d. Gammas, where the number of summands is the "order of delay" in the ECLD.

@@ -0,0 +1,4 @@
//! Utilities for analyses of ECLDs
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you planning to add more submodules here? If not, I'd suggest removing the extra directory level and having just stdlib/analyses/ecld.rs.

domains.insert(name("f"), 0);
domains.insert(name("g"), 2);
domains.insert(name("l"), 0);
domains
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto.

@tim-at-topos tim-at-topos marked this pull request as draft November 18, 2025 17:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core Rust core for categorical logic and general computation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants