ГОСТ Р 59791—2021
CGIF с реальным синтаксисом основного формата CGIF. Следовательно, они определены в терминах строк и
трансформирующих их функций.
Б.3.2 Действующий субъект
Определение: строка
ас,
которая должна содержать комментарий
cm,
ссылку
г,
называемую меткой типа,
последовательность дуг s1— входных дуг, последовательность дуг s2—
выходных дуг
и необязательный конечный
комментарий
ест.
Выходные дуги s2 не должны содержать маркера последовательности.
Перевод: концептуальный граф
д.
actor(?ac?) -> ?g?;
actor=[comment] ?cm?, ([“#”, “?”], CGname) ?r?,
arcSequence ?s1?,{arc} ?s27, [endComment] ?ecm?,
?z1?= frst(arcSequence(?s1?));
?z2?= frst(arcSequence(?s2?));
?sqn?= third(arcsequence(?s1?));
if (Iength(?s2?)=”0”)
?cr? =?cm?, ?r?, ?z1?, ?sqn?, ?ecm?, “;0-output actor”,
elif (Iength(?s2?)=”1”)
?cr? =?cm?, ?r?, ?z1?, ?sqn?, “|", ?z27, ?ecm?,
else ?cr? = “(“, ?cm?,
?r?,
7z17, ?sqn?, 7*|*/”, 7z27, ?ecm?,
end;
?g? = second(arcSequence(?s1?)), second(arcSequence(?s2?)), ?cr?;
end;
Если
s2
не имеет выходных дуг,
сг
должно быть обычным концептуальным отношением, как указано в Б.3.7,
но чтобы показать, что
сг
является производным от действующего субъекта, вставляется конечный комментарий
«О-output actor». Если
s2
имеет одну выходную дугу,
сг
должно быть действующим субъекта, но
сг
отличается от
ас,
потому что дуги переводятся в основной формат CGIF. Если
s2
имеет две или более выходных дуг,
сг
должно
быть обычным концептуальным отношением, но при этом для разделения входных и выходных дуг добавляется
комментарий «/*|7». Последнее правило перезаписи помещает
сг
после всех концептуальных графов, полученных
из последовательностей дуг.
Комментарий: например, при использовании правил трансформации с действующими субъектами, дугами,
последовательностями дуг и концептами следующий узел действующего субъекта:
(IntegerDivide [Integer: *х] [Integer: 7] | *u *v)
будет переведен в концептуальный граф с шестью узлами, состоящий из трех концептов и трех концепту
альных отношений:
[*х] (Integer ?х) (Integer 7) [*u] [*v]
(IntegerDivide ?x 7 /*|7 ?u ?v)
Комментарий «/*|7» не имеет семантического действия в основном формате CGIF и CL, но, если его сохра
нить, этот комментарий позволит выполнить обратное сопоставление с расширенным форматом CGIF для раз
граничения входных и выходных дуг. Если такое разграничение требуется в определенном приложении, можно
использовать аксиомы, чтобы установить функциональные зависимости выходных дуг от входных. Например, от
ношение CL, которое возникает в результате перевода действующего субъекта типа IntegerDivide, удовлетворяет
следующему ограничению, указанному в CLIF:
(exists (Quotient Remainder) (forall (х1 x2 хЗ x4)
(iff (IntegerDivide x1 x2 x3 x4)
(and (= x3 (Quotient x1 x2)) (= x4 (Remainder x1 x2))))))
Это высказывание утверждает, что существуют функции Quotient и Remainder, которые определяют значения
третьего и четвертого аргументов отношения IntegerDivide. Правила перевода не генерируют эту аксиому автома
тически, но ее можно выразить высказыванием CGIF, которое будет переведено в высказывание CLIF:
[‘Quotient] [‘ Remainder]
[[@every*x1] [@every*x2] [@every*x3] [@every*x4]
[Equiv:[Iff: (IntegerDivide 7x1 7x2 | 7x3 7x4)]
[Iff: (#?Quotient 7x1 7x2 | 7x3) (#?Remainder 7x1 7x2 | 7x4)]]]
Чтобы показать, что кванторы существования для [‘Quotient] и [‘ Remainder] имеют приоритет над квантифи
каторами всеобщности для четырех аргументов, узлы концептов заключаются в контекстные скобки с кванторами
всеобщности.
Б.3.3 Дуга
Определение: строка
аг,
которая должна содержать необязательный комментарий
cm
и ссылку г, определя
ющую метку с именем CG
п
или концепт с.
Перевод: Пара (х,д), состоящая из дуги х и концептуального графа
д.
43