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

(например, "соединить две вершины", "удалить вершину", "породить вершину под управлением графа

"). Есть граф (семантическая сеть)

. Есть управляющий граф

, который задает разрешенные операции над

: при редактировании графа

каждый раз доступны только часть операций, которые могут применяться к определенным частям графа.
Далее, есть две истории редактирования от двух пользователей:

-- первого пользователя,

-- второго пользователя. Мне нужно построить последовательность

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

и

, то допустимы истории

, или

, или

, но не

). Другими словами мне нужно доказать конфлюэнтность слияния историй: в каком бы порядке истории не сливались, всегд получится одинаковый результат.
Это решаемо: доказываем нётеровость графа возможных операций, доказываем локальную конфлюэнтность, после чего следует, что вся система конфлюэнтна. Но тут возникает проблема разрешения конфликтов: например, в первой истории первый пользователь удаляет вершину, а во второй истории пользователь соединяет её с другой вершиной. Конфликт! Слить истории невозможно. Пример посложнее: под управлением упр.графа

можно порождать упорядоченные последовательности вершин. Если оба пользователя создадут две последовательности, то как их потом сливать? Тоже конфликт.
Вопрос: как отыскать наборы операций, которые приводят к конфликту?Если бы набор операций был фиксированный, то можно было бы сделать вручную: перебрать все их сочетания, найти конфликтные. Тогда остальные сочетания были бы разрешенными.
Поэтому конечный мой вопрос такой:
есть ли какой-то алгоритм, который на входе получает набор операций, а на выходе дает наборы конфликтных ситуаций?Я начал искать автоматизированные системы в области систем переписывания (rewriting systems), нашел пока только Maude (
https://en.wikipedia.org/wiki/Maude_system). Подскажите другие подходы и программные системы!
<br/>
Вдогонку: намекните хотя бы, куда рыть? По каким ключевым словам искать математический аппарат?