Skip to content

Implement IsJoinIrreducible and IsMeetIrreducible#910

Draft
ThatOtherAndrew wants to merge 7 commits intodigraphs:mainfrom
ThatOtherAndrew:pr/joinmeetirreducible
Draft

Implement IsJoinIrreducible and IsMeetIrreducible#910
ThatOtherAndrew wants to merge 7 commits intodigraphs:mainfrom
ThatOtherAndrew:pr/joinmeetirreducible

Conversation

@ThatOtherAndrew
Copy link

Adds two new operations to section 10 (Operations for vertices) of oper.gi/oper.gd:

  • IsJoinIrreducible(D, v) — returns true if vertex v is not the join of any two distinct smaller nodes in D
  • IsMeetIrreducible(D, v) — returns true if vertex v is not the meet of any two distinct larger nodes in D

Both were originally implemented by building the full O(N²) join/meet table, but then optimised to use DigraphReflexiveTransitiveReduction, a function producing a Hasse diagram which allows for a computational shortcut (see SageMath docs below):

https://doc.sagemath.org/html/en/reference/combinat/sage/combinat/posets/hasse_diagram.html#sage.combinat.posets.hasse_diagram.HasseDiagram.find_nontrivial_congruence

Tests are merged into tst/standard/oper.tst, covering N5, a chain, B2, M3, and error handling (two test case sets written by myself and the rest with LLM assistance because I do not think my mathematical knowledge of the underlying concepts is strong enough to come up with reasonably comprehensive/diverse test cases).


Closes #400

@ThatOtherAndrew
Copy link
Author

Requesting a review from @james-d-mitchell please - how does this look? Is the PR description sufficiently detailed and mathematically accurate?

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement IsJoin/MeetIrreducible for vertices in lattice digraphs

1 participant