<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Book.ocl</title><link>https://sourceforge.net/p/alloymda/wiki/Book.ocl/</link><description>Recent changes to Book.ocl</description><atom:link href="https://sourceforge.net/p/alloymda/wiki/Book.ocl/feed" rel="self"/><language>en</language><lastBuildDate>Sun, 25 Mar 2012 20:09:38 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/alloymda/wiki/Book.ocl/feed" rel="self" type="application/rss+xml"/><item><title>WikiPage Book.ocl modified by Alcino Cunha</title><link>https://sourceforge.net/p/alloymda/wiki/Book.ocl/</link><description>~~~~~
package AddressBook
   context Book
      inv: Name.allInstances()-&gt;forAll(v0 | (Target.allInstances()-&gt;exists(v1 | self.addr[v0]-&gt;includes(v1)) implies self.names-&gt;includes(v0)))
   context Book
      inv: Name.allInstances()-&gt;forAll(v6 | (Name.allInstances()-&gt;exists(v7 | self.addr[v7]-&gt;includes(v6)) implies self.names-&gt;includes(v6)))
   context Book
      inv: Name.allInstances()-&gt;forAll(n | (self.names-&gt;includes(n) implies (self.addr[n]-&gt;size() &gt;= 1)))
   context Book
      inv: Name.allInstances()-&gt;select(n | n.oclAsType(Target)-&gt;closure(v20 | Target.allInstances()-&gt;select(v21 | (v20.oclIsKindOf(Name) and self.addr[v20.oclAsType(Name)]-&gt;includes(v21))))-&gt;includes(n))-&gt;isEmpty()
   context Book
      inv: Name.allInstances()-&gt;forAll(n | (n.type-&gt;includes(Type::Alias) implies (self.addr[n]-&gt;size() &lt;= 1)))
   context Book
      inv: Name.allInstances()-&gt;forAll(n | (Addr.allInstances()-&gt;select(v29 | (self.addr[n]-&gt;includes(v29) and v29.email))-&gt;size() &lt;= 1))
   context Book::add(n:Name,a:Target)
      pre: self.names-&gt;includes(n)
      pre: (not self.addr[n]-&gt;includes(a))
      post: Name.allInstances()-&gt;forAll(v40 | Target.allInstances()-&gt;forAll(v41 | (self.addr[v40]-&gt;includes(v41) implies (self.addr@pre[v40]-&gt;includes(v41) or ((v40 = n) and (v41 = a))))))
      post: (Name.allInstances()-&gt;forAll(v46 | (self.names-&gt;includes(v46) implies self.names@pre-&gt;includes(v46))) and Name.allInstances()-&gt;forAll(v51 | (self.names@pre-&gt;includes(v51) implies self.names-&gt;includes(v51))))
   context Book::lookup(n:Name):Set(Addr)
      body: n.oclAsType(Target)-&gt;closure(v58 | Target.allInstances()-&gt;select(v59 | (v58.oclIsKindOf(Name) and self.addr[v58.oclAsType(Name)]-&gt;includes(v59))))
endpackage
~~~~~~</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alcino Cunha</dc:creator><pubDate>Sun, 25 Mar 2012 20:09:38 -0000</pubDate><guid>https://sourceforge.net87cb8bfcfad37f509dcbe4463fb927a2a4e2658a</guid></item></channel></rss>