gsdlab / clafer

Clafer is a lightweight modeling language
http://clafer.org
MIT License
45 stars 13 forks source link

Allow navigation paths containing <: #85

Open mantkiew opened 8 years ago

mantkiew commented 8 years ago

For relational Clafer, we need to access relations not just sets. For example, for a model

abstract Person
   likes -> Person *
   [ some this.likes ]      // non-empty set     
   [ some this <: likes ]  // non-empty relation likes

Also, to access the relation globally, we'd like to be able to say

[ some Person <: likes ]

also, access the relation specialized to a subclafer:

abstract Student : Person

[ some Student <: likes ]

This will allow us to access relations and use them in relational expressions, such as inverse, transitive closure, etc.