Skip to content

Composition without epsilon self-loops#550

Open
koniksedy wants to merge 69 commits intodevelfrom
composition-wip
Open

Composition without epsilon self-loops#550
koniksedy wants to merge 69 commits intodevelfrom
composition-wip

Conversation

@koniksedy
Copy link
Collaborator

@koniksedy koniksedy commented Jul 8, 2025

This PR introduces:

  • a new, more efficient way of computing the composition of two NFTs that does not use jump transitions,
  • a third JumpModeJumpMode::NoJump,
  • an auxiliary function for creating a transition of length N,
  • a fix for a bug in Nft::unify_nondet_with that did not update levels correctly,
  • adds a dispatch function for composition that distinguishes between two composition modes (General and FastNoJump), and
  • modifies calls to compose and apply within replace_reluctant and noodlify by passing JumpMode::NoJump as the jump_mode, because I believe that in these places the NFTs never contain jump transitions.

The new implementation of the composition works only on NFTs without jump transitions (with JumpMode::NoJump). Therefore, it does not need to unwind transitions or create local copies, unlike the general version of the composition. It also does not construct the “waiting loops” on zero-level states, which in the general version are used when the NFT cannot synchronize on epsilon and therefore has to wait.

@Adda0
Copy link
Collaborator

Adda0 commented Aug 6, 2025

@koniksedy Hey, what is the status of this PR? We might potentially want to base our next research on what “shapes” of transducers are created by this composition approach. Are there any missing features left to implement in this PR?

@koniksedy
Copy link
Collaborator Author

koniksedy commented Aug 6, 2025

There’s still a bug that needs to be fixed before it can be used. I haven’t had much time to work on it (I was also on vacation), but I can take a look at it. Hopefully, it should be done by the middle of next week.

But if you need a somewhat working version, you can use the commit 1282c59.

@koniksedy koniksedy requested a review from jurajsic January 9, 2026 13:20
@koniksedy koniksedy marked this pull request as ready for review January 9, 2026 13:29
@koniksedy koniksedy requested a review from Adda0 as a code owner January 9, 2026 13:29
@koniksedy koniksedy linked an issue Jan 9, 2026 that may be closed by this pull request
koniksedy and others added 2 commits January 14, 2026 14:31
Co-authored-by: David Chocholatý <chocholaty.david@protonmail.com>
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.

UB causing segfaults in nft::is_in_lang()

2 participants