here variables are only implicit
SELECT $city WHERE $city isa city & happens ( event: $conf, location: $city, ... ) & $conf isa conference
variables conceptually range over everything in the map
=> yes, SELECT sucks, but we already knew that
$conf
and $city
are existentially quantified
is down-translated into:
[[ [ $city isa city ] ]] . [[ [ happens ( ... $conf ... $city ... ) ] ]] . [[ [ $conf isa conference ] ]] . ( $city ) | $conf => [[ %_ ]] | $city => [[ %_ ]] # eliminating variable $conf = [[ %_ ]] . [[ [ $city isa city ] ]] . [[ [ happens ( ... $0 ... $city ... ) ] ]] . [[ [ $0 isa conference ] ]] . ( $city ) | $city => [[ %_ ]] # eliminating variable $city = [[ %_ ]] . ( $0, [[ %_ ]]) . [[ [ $0 isa city ] ]] . [[ [ happens ( ... $1 ... $0 ... ) ] ]] . [[ [ $1 isa conference ] ]] . ( $0 )