TLA + устранение неисправностей элемента - PullRequest
0 голосов
/ 22 октября 2018

В настоящее время изучаю TLA + и застрял на этом простом методе удаления человека из реестра.Кажется, проблема связана с состоянием разрешений из того, что я вижу.

Моя функция TLA + выглядит следующим образом и удаляет человека из реестра вместе с разрешениями.

DeRegister(p) == 
/\ p \in register
/\ register' = register \ {p}
/\ permission' = [x \in DOMAIN permission \ {p} |-> permission[x]]
/\ UNCHANGED <<location>>

Мой типок, с которым я проверяю, имеет следующие ограничения

TypeOk 
    /\ register \subseteq PERSON
    /\ permission \in [register -> SUBSET BUILDING]
    /\ location \in [register -> (BUILDING \union {OUTSIDE})]

Я получаю ошибку модели, что typeOK нарушен.В трассировке стека ошибка выглядит так*

1 Ответ

0 голосов
/ 22 октября 2018

location \in [register -> SUBSET BUILDING] означает (среди прочего), что DOMAIN location = register.Однако после DeRegister у вас есть DOMAIN location = {"pq"} /\ register = {}, что нарушает ваш инвариант.

...