В Z3 3.x команда simplify
применяет только общие шаги локального упрощения. «Pull-nested-quantifiers» - это этап предварительной обработки. Это будет доступно как тактика / стратегия в будущих выпусках. У Z3 3.2 уже есть много встроенных стратегий / тактик в интерфейсе SMT 2.0. Следующий релиз будет иметь гораздо больший набор тактик. Они будут доступны также в API. Если вам нужна эта функция для какого-то проекта, просто отправьте мне письмо, и я сделаю неофициальный (бета) релиз для вас.
Наконец, у нас есть этот шаг предварительной обработки, потому что модуль MBQI создания экземпляров квантификатора на основе модели работает намного лучше, если универсальные квантификаторы не имеют вложенных (универсальных) квантификаторов. Ваш пример в порядке, так как Z3 устранит экзистенциальность и заменит x
новой константой.