By Sophie Libkind and James Fairbanks on January 25, 2021
In the previous post, we defined a general approach for composing dynamical systems based on the mathematics of operads and operad algebras. In this post, we explore an undirected composition syntax in which dynamical systems compose by sharing resources. We also get a taste of hierarchical composition, i.e. composing systems which are themselves composites. Read more
By Sophie Libkind and James Fairbanks on January 4, 2021
Informally, many models are specified as compositions of primitive dynamical systems. In this series of posts, we make this modular specification formal by introducing a computing framework from composing open dynamical systems. In this first post of the series, we examine directed theories for composition. Read more
By Evan Patterson on December 28, 2020
Not just useful for graphs, C-sets are a general-purpose tool for data analysis offering the functionality of an in-memory relational database. In this post, we illustrate Catlab's new capabilities for querying C-sets and we explain the categorical underpinnings of conjunctive queries. Read more
By Micah Halter and Evan Patterson on November 23, 2020
Following up the original post, we explain how modeling is simplified by a shift in perspective from composing structured cospans in categorical style to composing structured multicospans in operadic style. Read more
By Andrew Baas on November 2, 2020
We present an approach to scientific data management that utilizes category theory to seamlessly integrate workflow creation, database generation, and database querying. We use Catlab as a backend to provide this more continuous and consistent database experience. Read more
By Micah Halter and Evan Patterson on October 17, 2020
Structured cospans are a categorical method for turning closed systems into open ones. We show how structured cospans of Petri nets can be used to construct complex epidemiological models in a compositional way. Read more
By Owen Lynch on October 5, 2020
In this post we unveil the category of attributed C-sets. It is an upgrade to the category of C-sets that makes each element of a component set (e.g. each vertex or edge in a graph) have attributes, which may be elements of arbitrary sets/Julia types. In order to formalize attributed C-sets, we also take a tour of double category theory and profunctors. Read more
By Evan Patterson on September 28, 2020
Graphs are made up of vertices and edges, but an important variation on this concept is based on "half-edges" or "darts." We explain how half-edge graphs are implemented as C-sets in Catlab.jl and how they are used in topological graph theory to represent embeddings of graphs in surfaces. Read more
By James Fairbanks on September 14, 2020
What is a scientific model? This post considers how mathematical logic and category theory can help us understand scientific models, and how AlgebraicJulia aims to build modeling frameworks based on this understanding. Read more
By Owen Lynch on September 7, 2020
The idea of a C-set was introduced in an earlier post. In this post, we explain how C-sets are implemented as a data structure in the Julia programming language. Read more
By Evan Patterson on September 1, 2020
Through the course of this blog we will encounter a diverse cast of algebraic structures generalizing the concept of a graph. In this post we start at the very beginning, with how category theorists understand graphs, how graphs are an example of a general class of structures called "C-sets," and how C-sets can be used as data structures in Julia through Catlab.jl. Read more