A Declarative Approach to Procedural Generation of Virtual Worlds