  Categories and categorical structures are increasingly recognized as useful
abstractions for modeling in science and engineering. To uniformly implement
category-theoretic mathematical models in software, we introduce GATlab, a
domain-specific language for algebraic specification embedded in a technical
programming language. GATlab is based on generalized algebraic theories (GATs),
a logical system extending algebraic theories with dependent types so as to
encompass category theory. Using GATlab, the programmer can specify generalized
algebraic theories and their models, including both free models, based on
symbolic expressions, and computational models, defined by arbitrary code in
the host language. Moreover, the programmer can define maps between theories
and use them to declaratively migrate models of one theory to models of
another. In short, GATlab aims to provide a unified environment for both
computer algebra and software interface design with generalized algebraic
theories. In this paper, we describe the design, implementation, and
applications of GATlab.
