Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integrate ACSets.NautyInterface #860

Open
kris-brown opened this issue Oct 11, 2023 · 0 comments · May be fixed by #893
Open

Integrate ACSets.NautyInterface #860

kris-brown opened this issue Oct 11, 2023 · 0 comments · May be fixed by #893

Comments

@kris-brown
Copy link
Contributor

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:

colim = pushout(α, β)
@test src(ob(colim)) == [1,1]
@test tgt(ob(colim)) == [2,1]
@test subpart(ob(colim), :vlabel) == [:u, :v]
@test subpart(ob(colim), :elabel) == [:e, :f]

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants