56 Глава 4. Окрестностный анализ
данных d процесс p d
∗
⇒ res может иметь различные пути (истории) своего разви-
тия. В главе 3 введено понятие дерева процесса. Различные пути этого дерева (в общем
случае—бесконечного) представляют различные истории развития процесса p d
∗
⇒ res
при различных данных d∈D. Развилки этого дерева соответствуют вариантам ветвле-
ний в программе p. Каждое конкретное данное d выбирает в данном дереве один путь,
соответствующий конкретной истории развития процесса p d
∗
⇒ res. Трасса процес-
са в разделе 1.3 определена для TSG как список результатов—True или False—всех
проверок, выполненных в процессе вычисления p d. Таким образом, тра сса содержит
информацию, которая из всех возможных путей развития вычисления p позволяла бы
выбрать тот самый путь, что был выбран данными d.
Таким образом, в неформаль ном определении (4.1) множества o(p,d) условие “про-
цесс p d’
∗
⇒ res точно такой же, как процесс p d
∗
⇒ res” можно формализовать,
используя понятие трассы:
tr(p,d) = tr(p,d’) & p d = p d’
После чего множество o(p,d) , описывающее, ка кая информация о тексте d была исполь-
зована, а какая—нет, в процессе p d
∗
⇒ res обработ ки текста d, получает формальное
определение:
o(p,d) = { d’ | tr(p,d) = tr(p,d’), p d = p d’ } (4.2)
Чтобы предъявлять множеств о o(p,d) для дальнейшего использования, оно до лжно
быть представлено в виде конструктивного объекта. В главе 2 выбраны средства пред-
ставления множеств данных в виде классов. При этом было известно, что найдутся
множества данных, непредставимые данным способом—см. сноску 4 на странице 10. То
есть, предстоит убедиться, что для любой программы p и данных d множество o(p,d)
представимо в в иде класса. Это будет сделано в разделе 4.3, где предъявлен алгоритм
nan—окрестностный анализатор,—вычисляющий L-класс O, представляющий множе-
ство o(p,d).
Помимо окрестностного анализатора в инструментарий окрестностного анализа
входит набор операций над окрестностями—пересечение окрестностей, декомпозиция
окрестности и т.п. Поэтому в разделе 4.4 будут конструктивно (в виде алгоритмов)
определены и о бс уждены различные операции над классами и окрестностями.
4.2 Окрестности
Определение 28
Пусть O=(ces,rs)—L-класс, d∈<O>⊆[EVal]. Тогда будем называть O окрестностью
d.
Таким образом, L-класс O является окрестностью для любого элемента из < O>.
Все свойства L-классов справедливы и для окрестностей. Единственное отличие между
L-классами и окрестностями: наличие выделенного элемента d—центра окрестности.
Когда это будет удобным, будем записыват ь центр окрестности d в позиции верхнего
индекса у обозначения окрестности: O
d
. По определению, окрестность не может быть
пустой: d∈<O
d
>.