Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Формулы



Формулы, используемые в качестве предусловий и постусловий предикатов, есть формулы типизированного исчисления предикатов высших порядков. Подформула, входящая в предусловие или постусловие, может быть определена отдельно в виде описания формулы.

ОПИСАНИЕ-ФОРМУЛЫ::=

formula ИМЯ-ФОРМУЛЫ ( ОПИСАНИЯ-АРГУМЕНТОВ [: ТИП-РЕЗУЛЬТАТА] ) =

ФОРМУЛА

ИМЯ-ФОРМУЛЫ::= ИДЕНТИФИКАТОР

ТИП-РЕЗУЛЬТАТА::= ИЗОБРАЖЕНИЕ-ТИПА

ОПИСАНИЕ-ФОРМУЛЫ вводит имя формулы для обозначения выражения, представленного ФОРМУЛОЙ. Переменные, входящие в ФОРМУЛУ, должны быть указаны в
ОПИСАНИЯХ-АРГУМЕНТОВ (см. разд. 6.3.1). Описание формулы помещается среди описаний модуля программы (см. разд. 4). ФОРМУЛА является выражением типа ТИП-РЕЗУЛЬТАТА. Если ТИП-РЕЗУЛЬТАТА не указан, то ФОРМУЛА имеет тип bool.

Использование формулы, определенной ОПИСАНИЕМ-ФОРМУЛЫ, в других формулах реализуется через вызов формулы.

ВЫЗОВ-ФОРМУЛЫ::= ИМЯ-ФОРМУЛЫ ( СПИСОК-ВЫРАЖЕНИЙ )

Описание формулы может быть рекурсивным: ФОРМУЛА в правой части описания может содержать рекурсивный вызов этой формулы. Не допускается взаимной рекурсии в описаниях двух разных формул. Другое требование: рекурсивный вызов должен находиться в позитивной позиции ФОРМУЛЫ. Понятия позитивной и негативной позиции определены ниже.

ФОРМУЛА::= ВЫРАЖЕНИЕ | ( ФОРМУЛА ) | ВЫЗОВ-ФОРМУЛЫ |

! ФОРМУЛА | ФОРМУЛА & ФОРМУЛА | ФОРМУЛА or ФОРМУЛА |

ФОРМУЛА => ФОРМУЛА | ФОРМУЛА <=> ФОРМУЛА |

КВАНТОРНАЯ-ЧАСТЬ ФОРМУЛА

Все альтернативы приведенного правила, кроме первых трех, определяют формулы типа bool, т. е. предикаты. Операции «!», «&» и «or» имеют тот же смысл, что и для логических выражений. Операция => обозначает импликацию, <=> - логическое тождество.

КВАНТОРНАЯ-ЧАСТЬ::=

КВАНТОР СПИСОК-ПОДКВАНТОРНЫХ-ПЕРЕМЕННЫХ. [КВАНТОРНАЯ-ЧАСТЬ]

КВАНТОР::= КВАНТОР-ВСЕОБЩНОСТИ | КВАНТОР-СУЩЕСТВОВАНИЯ

КВАНТОР-ВСЕОБЩНОСТИ::=! | forall

КВАНТОР-СУЩЕСТВОВАНИЯ::=? | exists

Использование forall вместо «!» предпочтительно при вхождении квантора внутри формулы, поскольку «!» ассоциируется также с отрицанием.

СПИСОК-ПОДКВАНТОРНЫХ-ПЕРЕМЕННЫХ::=

[ИЗОБРАЖЕНИЕ-ТИПА [:blank:]] ПОДКВАНТОРНАЯ-ПЕРЕМЕННАЯ

(, ПОДКВАНТОРНАЯ-ПЕРЕМЕННАЯ)*

ПОДКВАНТОРНАЯ-ПЕРЕМЕННАЯ::= ИДЕНТИФИКАТОР

Приоритеты логических связок в порядке убывания следующие:!, &, =>, <=>, кванторы!, forall,? и exists.

Определим понятие позиции, позитивной или негативной, для произвольного вхождения подформулы. Позиция ФОРМУЛЫ в качестве правой части ОПИСАНИЯ-ФОРМУЛЫ является позитивной. Допустим, формула X есть одна из следующих формул: A & B, A or B,!C, C => A,!y.A,?y.A. Для перечисленных случаев подформулы A и B имеют ту же позицию, что формула X, а подформула C меняет позицию на противоположную. Все остальные позиции подформул считаются неизвестными.





Дата публикования: 2014-11-18; Прочитано: 260 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...