I have in front of me an Alloy model composed of different modules (files). The main module (the one containing the command) does not contain any signature declaration, only a command and some facts.
This model enforces that only one instance can possibly be satisfiable but after analysis, several satisfiable instances are found. I investigated the differences between the generated instances to discover that a Univ signature appeared magically (in addition to the built-in univ signature). The difference between each instance generated come from the number of atoms belonging to that mysterious addition.
After adding a signature to the main module, the Univ signature disappeared. It seems that the Alloy analyzer adds this signature by itself when no signature declarations are found in the module containing the command executed. Is this behavior generally desired ? If so, why ?
The simplest way to reproduce this behavior is to have a module containing only: run {}