Значение логического выражения задается следующим рекурсивным определением. Для любого состояния выполнения S:
E1 = E2(S) = (E1(S) = E2(S))
E1 <> E2(S) = (E1(S) ¹ E2(S))
E1 < E2(S) = (E1(S) < E2(S))
E1 <= E2(S) = (E1(S) ≤ E2(S))
E1 > E2(S) = (E1(S) > E2(S))
E1 >= E2(S) = (E1(S) ≥ E2(S))
E1 OR E2(S) = (E1(S) OR E2(S))
NOT E (S) = NOT E (S)
(E) (S) = E (S)
Операторы в левой части – те, что встречаются в Паскаль-программах. Те, которые в правой части – математические операции. Это определение дает значение каждого ператора по отдельности, но не указывает как будет вычисляться выражение с несколькими операторами. Ассоциативность и приоритет операторов в выражении определяется синтаксическими правилами Паскаля. Программное исчисление требут чтобы все операторы были определены, в противном случае математические свойства такие как коммутативность, (которую мы сипользуем чаще, чем предполагаем) нарушаются.
14.2.3. Ввод-вывод логических значений.
Логичесике переменные не могут появляться в операторах READ, но логические выражения могут появляться в операторах WRITE. Логические значения преобразуются в символы и выравниваются по правой стороне строки, длина которой зависит от реализации Паскаль-машины (например, 10 символов).
Последовательность операторов:
Condition := TRUE;
WRITE(Condition);
Добавляет строку † TRUE† в OUTPUT.