Как указать математическое выражение, используя спецификацию Z?

Как я могу указать математическое выражение, используя Z обозначения? Я думаю, что свободные типы подходят для этой ситуации, потому что выражения имеют рекурсивный характер. пожалуйста, учтите, что в нашем выражении могут быть скобки и переменные. и только ( +, -, /, *) разрешено. например: A + 2 * ( 3 - B) / 4

Помогите мне, пожалуйста...

1 ответ

Вам нужно использовать аксиоматическое определение: определение объекта ограничено условиями.

Для этого в zet указана схема. Который

| Declaration
------------------------------
| Predicate
|
|

Приведен рекурсивный пример:

[ИМЯ ПОЛЬЗОВАТЕЛЯ] - уже определенный тип.

Для данного имени пользователя и последовательности имен пользователей (N1 -> USERNAME) возвращается число, в котором указанное имя пользователя появляется в последовательности.

|-occurs- USERNAME X seq USERNAME → N //here you define the input and what is returned.
---------------------------------------
|∀ u: USERNAME, s: seq USERNAME then
|s = < > => occurs(u,s) = 0
|s ≠ < > and head(s) = u => occurs(u,s) = 1+occurs(u,tail(s))
|s ≠ < > and head(s) ≠ u => occurs(u,s) = occurs(u,tail(s))
Другие вопросы по тегам