Некоторое время я пытался выполнить довольно простое требование: я объявил новый тип данных
(declare-datatypes () ((A (mk_A (key Int) (var1 Int) (var2 Int)))))
где key
должен действовать как первичный ключ в базе данных, т. е. каждый отдельный экземпляр A
должен иметь другое значение key
. Контейнер различных экземпляров (функций) выглядит следующим образом:
(declare-const A_instances (Array Int A))
Все идет нормально. Я попытался создать утверждение, чтобы все экземпляры в A_instances
имели другое поле key
. Таким образом, для каждого индекса i
в A_instances (key (select A_instances i))
должны быть разными. Однако он возвращает unknown
.
У кого-нибудь есть предложения?