Open kris-brown opened 1 month ago
This functionality describing the mappings in terms of the descriptive names used by the user (e.g., introduced in @acset_colim invocations) would be very helpful for elevating the transparency of the rewrite rules which are central to our application of AlgebraicABMs & AlgebraicRewriting in our health models. Creation of such models is a central focus of the ABM hackathon currently underway, and we will -- further -- be making a major investment in creating such models for my semester-long course on applying these tools to health modeling in Fall 2024.
Three cheers for better programmer quality of life and more declarative rules in the same feature request!
The
@acset_colim
macro is a beloved method of constructing individual ACSets. But, when people try to create rewrite rules, they need to specify a whole diagram of ACSets. After constructing the objects, they have lost the nice names they wrote down in the@acset_colim
macro. The solution seems to be to use the@migration
macro to directly specify the diagram. Something like:[^1]Here, the maps
left
andright
are uniquely determined by these particular generators. Ahomomorphisms
search with those values initialized would return exactly one morphism (for starters, anything else could throw an error).[^1]: Maybe this syntax isn't exactly compatible with
@migration
because it's defining the shape category at the same time. You could ignore the::(I=>L)
stuff and pretend we have a macro specific for the span diagram. It would be helpful, though for a syntax which lets you do the shape on the fly since we may have negative/positive application conditions as well as other sorts of morphisms showing up relevant to rewriting.