term

completion

package completion

Provides functions needed for a completion procedure.

Such a procedure takes as input a set of equations E and a termination method and attempts to cunstruct a terminating and confluent, i.e. complete, term rewrite system R which has the same set of convertible terms as E.

Completion is implemented as an inference system. The rules of which operate on a triple (E,R,C) and return a new triple (E',R',C'). Here E is a set of equations, R a set of rewrite rules, and C a constraint term rewrite system used to allow other termination methods besides reduction orderings.

Visibility
  1. Public
  2. All

Type Members

  1. type TM = (TRS) ⇒ Boolean

    A termination method (TM) is a function which yields true if a given term rewrite system terminates and false otherwise.

    A termination method (TM) is a function which yields true if a given term rewrite system terminates and false otherwise.

    Definition Classes
    package

Value Members

  1. object Completion extends AnyRef

    Only added to generate scaladoc for completion correctly :(

  2. def collapse (is: List[Int], erc: ()): ()

    Returns (E',R',C) where all left-hand sides of rules from R with indices in is are reduced one step with respect to R without the collapsed rule itself and then moved to E.

    Returns (E',R',C) where all left-hand sides of rules from R with indices in is are reduced one step with respect to R without the collapsed rule itself and then moved to E.

    is

    a list of indices in R

    erc

    a triple (E,R,C) where E is an equational system, R is a term rewrite system, and C is a constraint term rewrite system

    Definition Classes
    package
  3. def collapseToNF (is: List[Int], erc: ()): ()

    Returns (E',R',C) where all left-hand sides of rules from R with indices in is are reduced to normal form with respect to R without the collapsed rule itself and then moved to E.

    Returns (E',R',C) where all left-hand sides of rules from R with indices in is are reduced to normal form with respect to R without the collapsed rule itself and then moved to E.

    is

    a list of indices in R

    erc

    a triple (E,R,C) where E is an equational system, R is a term rewrite system, and C is a constraint term rewrite system

    Definition Classes
    package
  4. def compose (is: List[Int], erc: ()): ()

    Returns (E,R',C) where all right-hand sides of rules from R with indices in is are reduced one step with respect to R without the reduced rule itself.

    Returns (E,R',C) where all right-hand sides of rules from R with indices in is are reduced one step with respect to R without the reduced rule itself.

    is

    a list of indices in R

    erc

    a triple (E,R,C) where E is an equational system, R is a term rewrite system, and C is a constraint term rewrite system

    Definition Classes
    package
  5. def composeToNF (is: List[Int], erc: ()): ()

    Returns (E,R',C) where all right-hand sides of rules from R with indices in is are reduced to normal form with respect to R without the reduced rule itself.

    Returns (E,R',C) where all right-hand sides of rules from R with indices in is are reduced to normal form with respect to R without the reduced rule itself.

    is

    a list of indices in R

    erc

    a triple (E,R,C) where E is an equational system, R is a term rewrite system, and C is a constraint term rewrite system

    Definition Classes
    package
  6. def deduce (is: List[Int], erc: ()): ()

    Returns (E',R,C) where all critical pairs between left-hand sides of rules from R with indices in is are added to E.

    Returns (E',R,C) where all critical pairs between left-hand sides of rules from R with indices in is are added to E.

    is

    a list of indices in R

    erc

    a triple (E,R,C) where E is an equational system, R is a term rewrite system, and C is a constraint term rewrite system

    Definition Classes
    package
  7. def deduceE (i: Int, erc: ()): ()

    Returns (E',R,C) where all critical pairs between the left-hand side of the rule from R with index i and all left-hand sides of rules in R are added to E.

    Returns (E',R,C) where all critical pairs between the left-hand side of the rule from R with index i and all left-hand sides of rules in R are added to E.

    i

    an index in R

    erc

    a triple (E,R,C) where E is an equational system, R is a term rewrite system, and C is a constraint term rewrite system

    Definition Classes
    package
  8. def deduceS (i: Int, erc: ()): ()

    Returns (E',R,C) where all critical pairs between the left-hand side of the rule from R with index i and all left-hand sides of rules in R are added to E.

    Returns (E',R,C) where all critical pairs between the left-hand side of the rule from R with index i and all left-hand sides of rules in R are added to E.

    i

    an index in R

    erc

    a triple (E,R,C) where E is an equational system, R is a term rewrite system, and C is a constraint term rewrite system

    Definition Classes
    package
  9. def delete (is: List[Int], erc: ()): ()

    Returns (E',R,C) where all trivial equations from E with indices in is are removed from E.

    Returns (E',R,C) where all trivial equations from E with indices in is are removed from E.

    A trivial equation is an equation where the left-hand side is the same as the right-hand side.

    is

    a list of indices in E

    erc

    a triple (E,R,C) where E is an equational system, R is a term rewrite system, and C is a constraint term rewrite system

    Definition Classes
    package
  10. def isComplete (es: ES, rs: TRS): Boolean

    Returns true if rs is complete and has the same conversion as es and false otherwise.

    Returns true if rs is complete and has the same conversion as es and false otherwise.

    Definition Classes
    package
  11. def orient (is: List[Int], erc: (), tm: TM): ()

    Returns the result from orientLR if it changed the triple (E,R,C) and the result from orientRL otherwise.

    Returns the result from orientLR if it changed the triple (E,R,C) and the result from orientRL otherwise.

    is

    a list of indices in E

    erc

    a triple (E,R,C) where E is an equational system, R is a term rewrite system, and C is a constraint term rewrite system

    tm

    the used termination method

    Definition Classes
    package
  12. def orientLR (is: List[Int], erc: (), tm: TM): ()

    Returns the triple (E',R',C') where equations in E with indices in is are oriented from left to right into rewrite rules and moved to R using the termination method tm and the unchanged triple (E,R,C) if not all equations with indices in is could be oriented from left to right using tm.

    Returns the triple (E',R',C') where equations in E with indices in is are oriented from left to right into rewrite rules and moved to R using the termination method tm and the unchanged triple (E,R,C) if not all equations with indices in is could be oriented from left to right using tm.

    is

    a list of indices in E

    erc

    a triple (E,R,C) where E is an equational system, R is a term rewrite system, and C is a constraint term rewrite system

    tm

    the used termination method

    Definition Classes
    package
  13. def orientRL (is: List[Int], erc: (), tm: TM): ()

    Returns the triple (E',R',C') where equations in E with indices in is are oriented from right to left into rewrite rules and moved to R using the termination method tm and the unchanged triple (E,R,C) if not all equations with indices in is could be oriented from right to left using tm.

    Returns the triple (E',R',C') where equations in E with indices in is are oriented from right to left into rewrite rules and moved to R using the termination method tm and the unchanged triple (E,R,C) if not all equations with indices in is could be oriented from right to left using tm.

    is

    a list of indices in E

    erc

    a triple (E,R,C) where E is an equational system, R is a term rewrite system, and C is a constraint term rewrite system

    tm

    the used termination method

    Definition Classes
    package
  14. def simplify (is: List[Int], erc: ()): ()

    Returns (E',R,C) where all left- and right-hand sides of equations from E with indices in is are reduced one step with respect to R.

    Returns (E',R,C) where all left- and right-hand sides of equations from E with indices in is are reduced one step with respect to R.

    is

    a list of indices in E

    erc

    a triple (E,R,C) where E is an equational system, R is a term rewrite system, and C is a constraint term rewrite system

    Definition Classes
    package
  15. def simplifyToNF (is: List[Int], erc: ()): ()

    Returns (E',R,C) where all left- and right-hand sides of equations from E with indices in is are reduced to normal form with respect to R.

    Returns (E',R,C) where all left- and right-hand sides of equations from E with indices in is are reduced to normal form with respect to R.

    is

    a list of indices in E

    erc

    a triple (E,R,C) where E is an equational system, R is a term rewrite system, and C is a constraint term rewrite system

    Definition Classes
    package