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

Termination and confluence checking #18

Open
taktoa opened this issue Jun 20, 2018 · 0 comments
Open

Termination and confluence checking #18

taktoa opened this issue Jun 20, 2018 · 0 comments
Assignees
Labels
enhancement New feature or request

Comments

@taktoa
Copy link
Owner

taktoa commented Jun 20, 2018

Ideally, we could warn the user if the rewriting system they give is known not to be terminating and confluent. There is a sizable amount of research in this direction:

  • TTT2 uses a wide range of techniques for proving and disproving the termination of term-rewriting systems: approximated dependency graph, argument filtering, bounds, dependency pair method, Knuth-Bendix order, lexicographic path order, loop detection, matrix interpretation, polynomial interpretation, predictive labeling, recursive SCC, root labeling, semantic labeling, simple projection and subterm criterion, uncurrying, usable rules. It is written in OCaml.
  • ConCon is a confluence checker for conditional term rewriting systems. It is written in Scala. ConCon works by first trying to simplify rules, removing infeasible rules from the input system, and then employing the following three confluence criteria:
    1. A quasi-decreasing strongly deterministic 3-CTRS is confluent if all its critical pairs are joinable.
    2. An almost orthogonal extended properly oriented right-stable 3-CTRS is confluent.
    3. A deterministic 3-CTRS R is confluent if its unraveling U(R) is left-linear and confluent.
  • CSI is a confluence checker for first-order term rewriting systems. CSI^ho is an extension of CSI for higher-order pattern rewriting systems. Both are written in OCaml.
  • CaT analyzes a term-rewriting system to figure out its computational complexity. It is written in OCaml.
@taktoa taktoa added the enhancement New feature or request label Jun 20, 2018
@taktoa taktoa self-assigned this Jun 20, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant