ACSets now has integration with nauty.c - allowing for very fast (if you're not on Windows) computation of representatives of the isomorphism class for an ACSet.
Catlab should extend this functionality to have canonical representatives for other derivative data structures, e.g. ACSetTransformations, Diagrams, Slices. It might also be the case that this is faster at computing isomorphisms between two ACSets than backtracking search.
This would be a big algorithmic speedup in algorithms like maximum common subacset and enumerating subobjects. Another place to use this is in the tests. E.g. right now we have:
This is a bit evil because the pushout is defined only up to isomorphism. Rather the resulting Span of the pushout should be compared (up to isomorphism) with some expected Span.
ACSets now has integration with
nauty.c
- allowing for very fast (if you're not on Windows) computation of representatives of the isomorphism class for an ACSet.Catlab should extend this functionality to have canonical representatives for other derivative data structures, e.g. ACSetTransformations, Diagrams, Slices. It might also be the case that this is faster at computing isomorphisms between two ACSets than backtracking search.
This would be a big algorithmic speedup in algorithms like maximum common subacset and enumerating subobjects. Another place to use this is in the tests. E.g. right now we have:
This is a bit evil because the pushout is defined only up to isomorphism. Rather the resulting
Span
of the pushout should be compared (up to isomorphism) with some expectedSpan
.