Принятые обозначения
В дальнейшем изложении будет считаться, что данные и программы, во-первых, различимы, как это обычно и бывает в компьютерных системах, а во-вторых, могут быть закодированы натуральными числами. Поскольку и данные и программы всегда имеют ограниченный размер и ограниченный алфавит для их представления, принципиальная возможность взаимно однозначного кодирования натуральными числами сомнений не вызывает.
Исходя из сказанного, состояние некой вычислительной системы с точки зрения выполняющейся программы, может быть описано как набор доступных программе данных и других программ, что может быть выражено как наборы или последовательности натуральных чисел. Действие любой программы заключается в том, чтобы из одного набора данных и программ получить другой набор данных и программ.
Ниже везде неявно подразумевается описанная интерпретация вычислительной системы.
- Обозначим S - множество всех конечных последовательностей натуральных чисел, . Таким образом элемент S может обозначать либо набор файлов данных, либо набор файлов программ, закодированных при помощи натуральных чисел.
- Обозначим e - вычислимую инъективную функцию из S?S на с вычислимой обратной функцией, . По тому же принципу, что и программы и данные, натуральными числами могут кодироваться и состояния системы. Функция e взаимно однозначно ставит в соответствие набору данных и программ натуральное число. Иными словами e - однозначная нумерация состояний системы.
-
Нотация
предназначена для обозначения состояния системы и фактически является кодом этого состояния, представленным натуральным числом. - Для всех частичных функций Любая программа переводит систему из одного состояния в другое, учитывая, что состояния кодируются натуральными числами, можно считать любую программу функцией из в .
- Для всех частичных функций примем обозначение f(n) тттк f(n) определена
- Для всех частичных функций примем обозначение f(n) тттк f(n) не определена
- f(s,t) и g(s,t), либо
- f(s,t) и g(s,t) и f(s,t) = g(s,t)
Определение служит для уточнения понятия тождественности программ, представленных в виде частичных функций.
Определение 2.27. для всех частичных функций : тттк:
- z=z', и
- p=p', и
- , и
- либо
- q=q', либо
- h(qi) и h(qi)=q'i
Если раньше для обозначения действия программы на систему использовались коды состояний, то в этом определении используется детализированное описание состояния и по сути вводится отношение между чистым и зараженным состоянием системы. Зараженное состояние характеризуется тем, что при прочих равных в нем некоторые программы изменены вирусом (функция h).
Определение 2.28. Для всех частичных функций , тттк , и
В этом определении уточняется введенное ранее отношение для состояний, получаемых в результате действия двух функций. Результатом действия функции f на состояние системы является натуральное число, которое можно однозначно интерпретировать как новое состояние . Точно так же . Соответственно, запись обозначает, что обе программы завершают свою работу при запуске из состояния и результат их выполнения будет отличаться фактом заражения некоторых программ: .
Определение 2.29. Для всех частичных функций , тттк или
Введенное обозначение призвано отразить тот факт, что зараженная программа не всегда выполняет заражение - в некоторых состояниях зараженная программа может выполнять ровно те же действия, что и незараженная, т. е. результат ее действия при некоторых состояниях системы будут точно таким же как и у незараженной программы.
Определение 2.30. Для всех геделевских нумераций частичных рекурсивных функций , общерекурсивная функция v будет вирусом по отношению к тттк выполняется либо:
- Повреждение:
- Заражение или имитация:
В данном определении выбор переменных d и p в явном виде указывает на их природу - данные (информация не подверженная заражению) и программы (информация подверженная заражению).
Здесь необходимы комментарии:
- Повреждение. Из определения следует, что результат действия зараженной программы при определенном состоянии системы определяется только типом вируса и состоянием системы, независимо от того, какая программа была заражена.На самом деле, выполняемое вирусом действие может и не быть деструктивным, важно то, что оригинальная программа не выполняется вовсе, т. е. выполняется функция прописанная в самом вирусе.
- Заражение или имитация. Здесь, согласно определению, ситуация прямо противоположная. Результат действия зараженной программы либо вовсе не отличается от результата действия исходной, либо отличается появлением в системе новых зараженных программ. Различное поведение определяется различиями в исходном состоянии системы.