[Revised 2010-08-27]
In 1981, I read the special issue of Byte Magazine on the Smalltalk 80 programming language. Wow. Many very cool ideas there.
Object-oriented programming!
Overlapping windows!
Mice!
"Don't mode me in!"
Keyword syntax!
Transparent persistency!
(orthogonal persistency, orthogonal persistence, transparent persistence)
Only, it turned out that the Smalltalk implementation described in Byte wasn't really transparently persistent in the way that I would like. You could save your image, but there was no finer transaction.
Eventually I learned about the GemStone database management system. GemStone implements "Smalltalk on a disk". It's almost transparent. However, you have to delimit your transactions explicitly.
The transactions for a transparently persistent system should be its interactions with the outside world.
I determined to search for a programming language suitable for transparent persistency.
Although I have thought of starting a development path toward using a pure functional language without logical variables, I have decided for the time being to concentrate on a variant that would have logical variables. Since binding a variable to a value has sort of an "imperative" flavor, the language can exhibit such a flavor while nevertheless having a declarative (even equational) explanation. To reflect this imperative flavor in a purely declarative language, I have reached for a name containing the same root as "imperative", and come up with "Imperatrix Mundi" from the name of the poem "Fortuna Imperatrix Mundi" from among the Carmina Burana .