Skip to content

Latest commit

 

History

History
42 lines (38 loc) · 1.57 KB

notes.org

File metadata and controls

42 lines (38 loc) · 1.57 KB

Open questions

Semantics of import modes

“use” and “include” were clear in the absence of overloading. They are not any more. In the current implementation they are equivalent.

The current rules:

Sorts

Subsort declarations must involve at least one sort that is not imported in restricted mode.

Operators

The signatures of an operator imported in restricted mode may only be supplemented by signatures that differ in at least one domain kind.

Rules

No rules may be added that match operator signatures imported in restricted mode.

Special sort “Any”

This causes lots of special cases. Perhaps it should not be exposed (reserved for builtin modules) and handled with less generality and less checking.

Sorts in equations

In Maude, left and right hand side must be of the same kind. In OBJ3, the right-hand side must be of lower sort. This is the currently implemented behavior.

Illustration (legal in Maude, but not in OBJ3)

fmod ABCD is sorts A B C D . subsort A C < B . subsort C < D . op a : -> A . op b : -> B . op c : -> C . op d : -> D . op foo : A -> A . eq a = b . eq b = c . eq c = d . endfm

reduce in ABCD : foo(a) . rewrites: 3 result [D,B]: foo(d)

Details to be defined at some point

Which symbols are legal identifiers?

  • currently ‘quote’, ‘unquote’, and ‘unquote-splicing’ cannot be used as identifiers because of the Lisp-liks syntax for quoted symbols and unquotes

How is the module hashcode computed?

To-do list

Implement strict-checking for rules

In non-strict mode, extraneous variable declarations should be allowed.