Ответ 1
Возможно с помощью MPTC и функциональной зависимости идентифицировать Skolem, когда это единственная переменная, используя ограничение, параметризованное по ограничению. Трюк, который я использовал для этого, не работает, когда есть два.
С точки зрения кода, написанного вне этого модуля, переменные Skolemized. Они фактически являются "новым" конструктором типа.
Но учитывая, что вы не можете явно ссылаться на эти типы вне модуля, так как они не экспортируются, любой экземпляр, который охватывает эти Skolems, должен быть универсально определен.
Вот как я перехожу от экзистенциального к универсальному. "Сигнальный флип" происходит из-за их невозбужденного характера, а не с технической точки зрения от роли Сколема.