Alloy Community

User login

Translation Capacity

 
Posted on: Wed, 06/17/2009 - 13:40
rseater's picture
Joined: 2008-01-24
Points: 59
User is offline
Translation Capacity
Error message:

Translation capacity exceeded.
In this scope, universe contains 220 atoms
and relations of arity 4 cannot be represented.
Visit http://alloy.mit.edu/ for advice on refactoring.

So now what?  :)  I'm hard coding in a 32 step sequence of events, so in theory Alloy should be able to handle it (as a partial instance).  How do I make sure it does?

See discussion:  http://alloy.mit.edu/community/node/546#comment-809
 
Posted on: Wed, 06/17/2009 - 21:53    #1
Joined: 2008-05-15
Points: 334
User is offline
This is unfortunately a well-known issue that tuples in Kodkod are represented
as positive 32-bit integer, and so in this case, with a universe of 220 atoms,
220^4 > (2^31 - 1) and so we cannot have an expression of arity 4 in such a model.

(It doesn't matter if that expression happens to be a subset of X->X->X->X
where size of X is small; Kodkod and Alloy4 do not atomize the relations
and so every relation is defined over the universe)

It would not be very tractable anyway, so an alternative would be to
reaify it. For example, if you have a relation of type X->X->X->X,
so you can define a new sig "Quad":
sig Quad { a, b, c, d: X }
Then you can represent a set of (X,X,X,X) tuples using a set of Quad atoms.

(Another benefit of doing it this way is that you now have control
over the scope to set for this Quad sig)

Syndicate content  

The development of this site is supported by the National Science Foundation under Computing Research Infrastructure Grant No. 0707612.

Theme originally designed by Chris Herberte