AlgebraicJulia / Catlab.jl

A framework for applied category theory in the Julia language
https://www.algebraicjulia.org
MIT License
599 stars 56 forks source link

README Spring Cleaning #454

Open olynch opened 2 years ago

olynch commented 2 years ago

It would be great to update the README with an overview of all of the stuff that we are doing these days! Catlab has changed a lot since the README was written.

Things to add:

Related to #453.

jpfairbanks commented 2 years ago

Yeah, we should cover the components of CategoricalAlgebra, Graphs, AlgebraicPetri, AlgebraicRelations, CombinatorialSpaces, and AlgebraicDynamics.

  1. CSets and ACSets
    • An inmemory relational database that comes equipped with a category of morphisms
    • An API generalizing the src,tgt,inneighbors,outneighbors api familiar from Graph Theory or LightGraphs.jl
    • Support for Attributes generalizing MetaGraphs.jl
    • Querying with CNF queries specified as UWDs
    • Limits and Colimits for building larger CSets out of smaller ones
      • Products give you a generalization of the cartesian product and generalize the direct product of graphs
      • Structured Cospans let you glue CSets together along boundaries for example composing circuits see AlgPetri
    • Homomorphisms, Logic, and Rewriting
      • Analysis of a CSet by looking at homomorphisms in to/out of it. Catlab can compute homormorphisms between CSets with backtracking search or CNF queries.
      • Reasoning about subobjects using a generalization of boolean logic (see Biheyting Algebra of Subobjects)
      • Implementing Rewriting systems with DPO rules as a model of computation.
  2. Operads and Operad Algebras.
    • DWDs: machine composition see AlgDynam, data analysis workflows see AlgRelations
    • UWDs: relational algebra queries see AlgRelations, resource sharers see AlgDynam, structured cospans see AlgPetri
  3. Data Migration: translations between different schemas allow you to specify certain algorithms declaratively.
    • Delta Migration
    • Sigma Migration

@olynch are there any other features we want to cover in the readme/docs homepage?