https://github.com/algebraicjulia/catlab.jl

A framework for applied category theory in the Julia language

https://github.com/algebraicjulia/catlab.jl

Science Score: 49.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
  • Committers with academic emails
    10 of 42 committers (23.8%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.9%) to scientific vocabulary

Keywords

applied-category-theory category-theory compositionality julia string-diagrams wiring-diagrams

Keywords from Contributors

epidemiology chemistry surrogate symbolic-computation petri matrix-exponential neural-sde pde ode numerical
Last synced: 6 months ago · JSON representation

Repository

A framework for applied category theory in the Julia language

Basic Info
Statistics
  • Stars: 670
  • Watchers: 21
  • Forks: 58
  • Open Issues: 163
  • Releases: 102
Topics
applied-category-theory category-theory compositionality julia string-diagrams wiring-diagrams
Created almost 9 years ago · Last pushed 7 months ago
Metadata Files
Readme Contributing License

README.md

Catlab.jl Catlab.jl

Stable Docs Dev Docs Julia CI/CD Code Coverage DOI

Catlab.jl is a framework for applied and computational category theory, written in the Julia language. Catlab provides a programming library and interactive interface for applications of category theory to scientific and engineering fields. It emphasizes monoidal categories due to their wide applicability but can support any categorical structure that is formalizable as a generalized algebraic theory.

Getting started

The documentation contains several example notebooks, as well as partial API docs. However, we readily acknowledge that the documentation is not as well developed as it should be. Feel free to ask questions! Besides the GitHub issues, we have a #catlab.jl stream on the Julia Zulip (preferred) and also a #catlab channel on the Julia Slack (less preferred).

Contributing

Applied category theory is a young and growing field, and Catlab is too the subject of ongoing research and development. This means that there are lots of opportunities to do new and interesting things!

We welcome contributions to Catlab, regardless of your experience level with category theory or the Julia language. For more information, see the CONTRIBUTING file.

What is Catlab?

Catlab is, or will eventually be, the following things.

Programming library: First and foremost, Catlab provides data structures, algorithms, and serialization for applied category theory. Macros offer a convenient syntax for specifying categorical doctrines and type-safe symbolic manipulation systems. Wiring diagrams (aka string diagrams) are supported through specialized data structures and can be serialized to and from GraphML (an XML-based format) and JSON.

Interactive computing environment: Catlab can also be used interactively in Jupyter notebooks. Symbolic expressions are displayed using LaTeX and wiring diagrams are visualized using Compose.jl, Graphviz, or TikZ.

Computer algebra system: Catlab will serve as a computer algebra system for categorical algebra. Unlike most computer algebra systems, all expressions are typed using fragment of dependent type theory called generalized algebraic theories. We will implement core algorithms for solving word problems and reducing expressions to normal form with respect to several important doctrines, such as those of categories and of symmetric monoidal categories. For the computer algebra of classical abstract algebra, see AbstractAlgebra.jl and Nemo.jl.

What is Catlab not?

Catlab is not currently any of the following things, although we do not rule out that it could eventually evolve in these directions.

Automated theorem prover: Although there is some overlap between computer algebra and automated theorem proving, Catlab cannot be considered a theorem prover because it does not produce formal certificates of correctness (aka proofs).

Proof assistant: Likewise, Catlab is not a proof assistant because it does not produce formally verifiable proofs. Formal verification is not within scope of the project.

Graphical user interface: Catlab does not provide a wiring diagram editor or other graphical user interface. It is primarily a programming library, not a user-facing application. However, there is another project in the AlgebraicJulia ecosystem, Semagrams.jl which does provide graphical user interfaces for interacting with wiring diagrams, Petri nets, and the like.

Owner

  • Name: AlgebraicJulia
  • Login: AlgebraicJulia
  • Kind: organization

GitHub Events

Total
  • Create event: 21
  • Release event: 3
  • Issues event: 10
  • Watch event: 57
  • Delete event: 10
  • Member event: 1
  • Issue comment event: 36
  • Push event: 83
  • Pull request review event: 17
  • Pull request review comment event: 9
  • Pull request event: 31
  • Fork event: 3
Last Year
  • Create event: 21
  • Release event: 3
  • Issues event: 10
  • Watch event: 57
  • Delete event: 10
  • Member event: 1
  • Issue comment event: 36
  • Push event: 83
  • Pull request review event: 17
  • Pull request review comment event: 9
  • Pull request event: 31
  • Fork event: 3

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 2,601
  • Total Committers: 42
  • Avg Commits per committer: 61.929
  • Development Distribution Score (DDS): 0.281
Past Year
  • Commits: 100
  • Committers: 11
  • Avg Commits per committer: 9.091
  • Development Distribution Score (DDS): 0.46
Top Committers
Name Email Commits
Evan Patterson e****n@e****g 1,870
Owen Lynch r****t@o****g 135
Micah Halter m****r@g****u 112
Kris Brown k****s@t****e 98
James Fairbanks f****j@u****u 69
Christian Scaff c****f@u****u 54
Kris k****b@s****u 51
Kevin Arlin k****n@t****e 50
bosonbaas b****s@g****m 34
Kevin Arlin a****d@g****m 30
Sophie Libkind 4****d 14
slwu89 1****9 14
Angeline Aguinaldo a****l@c****u 10
Samuel Steakley s****y@g****m 6
Chris de Graaf me@c****v 5
cbw124 c****1@u****u 5
Matt Cuffaro c****t@g****m 5
github-actions[bot] 4****] 3
Xiaoyan Li x****i@g****m 3
AlgebraicJulia Bot 1****t 3
CompatHelper Julia c****y@j****g 2
Felix Cremer f****r@u****e 2
Luke Morris l****s@g****m 2
Michael Lambert m****t@g****m 2
Pietro Monticone 3****e 2
Spencer Breiner s****r@g****m 2
Thomas Purdy 6****t 2
Tyler Hanks t****s@g****m 2
bartvpelt 1****t 1
Sam Cohen 1****1 1
and 12 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 122
  • Total pull requests: 190
  • Average time to close issues: 4 months
  • Average time to close pull requests: about 2 months
  • Total issue authors: 26
  • Total pull request authors: 24
  • Average comments per issue: 1.81
  • Average comments per pull request: 1.08
  • Merged pull requests: 142
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 12
  • Pull requests: 33
  • Average time to close issues: 10 days
  • Average time to close pull requests: 6 days
  • Issue authors: 7
  • Pull request authors: 12
  • Average comments per issue: 1.17
  • Average comments per pull request: 0.7
  • Merged pull requests: 18
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • kris-brown (21)
  • epatters (18)
  • jpfairbanks (16)
  • slwu89 (13)
  • KevinArlin (7)
  • olynch (7)
  • anandijain (4)
  • samuelsonric (4)
  • p-stokes (3)
  • aaguinal (3)
  • lukem12345 (3)
  • mehalter (2)
  • quffaro (2)
  • mhlr (2)
  • neonWhiteout (2)
Pull Request Authors
  • kris-brown (63)
  • epatters (35)
  • KevinArlin (20)
  • algebraicjuliabot (17)
  • mehalter (15)
  • quffaro (12)
  • slwu89 (12)
  • KevinDCarlson (12)
  • olynch (11)
  • jpfairbanks (9)
  • lukem12345 (4)
  • neonWhiteout (3)
  • samuelsonric (2)
  • sjbreiner (2)
  • aaguinal (2)
Top Labels
Issue Labels
acsets (51) enhancement (36) bug (20) cleanup (17) good first issue (10) question (8) graphics (8) docs (7) wiring diagrams (6) graphs (5) GATs (4) performance (4) integration (3) infrastructure (1)
Pull Request Labels
acsets (92) enhancement (76) bug (48) cleanup (34) graphics (17) graphs (12) docs (7) infrastructure (7) wiring diagrams (7) performance (6) GATs (5) code-quality (2)

Dependencies

.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/benchmarks.yml actions
  • actions/checkout v3 composite
  • julia-actions/setup-julia latest composite
.github/workflows/downstream.yml actions
  • actions/checkout v3 composite
  • julia-actions/julia-buildpkg latest composite
  • julia-actions/setup-julia v1 composite
.github/workflows/experiments.yml actions
  • actions/checkout v3 composite
  • julia-actions/setup-julia latest composite
.github/workflows/integration-issues.yml actions
  • actions/add-to-project 4756e6330fe1e0a736690d3cfd9f11c9399c2ed4 composite
.github/workflows/julia_ci.yml actions
.github/workflows/reviewchecklist.yml actions
  • actions/github-script v6 composite