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

Use Union Find algorithm in subst #23

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

laurenthuberdeau
Copy link
Contributor

Benchmarks don't show any improvement but it's worth investigating using union find to shorten the substitution paths in subst.

(Var v, _) -> putRT rt {env = Map.insert v ts' env}
(_, Var v) -> putRT rt {env = Map.insert v ts env}
(Var v, _) -> putRT rt {env = Partition.joinElems (Var v) ts' env}
(_, Var v) -> putRT rt {env = Partition.joinElems (Var v) ts env}
_ -> empty -- ts /= ts', both are values

-- | Apply the current substitution on the given 'Term'. This function does path compression: if it
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This function does path compression: if it finds a variable, it recurs.

This statement is half true, it does recur, but it does not update the environment to compress the path. This PR tries to address that using the union find algorithm.

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.

1 participant