george, честно говоря не уверен что правильно понял что Вы хотите сказать/сделать.
Давайте пока оставим в покое программизм (я, кстати, не поддерживаю идеи что сам полученный работающий код (ваша программа) должен быть центральным выводом из вашей работы) и попытаемся как-то математически определить что вы хотите сделать.
Итак что я понял:
1. Вы описываете некоторый язык, допускающий параллельное вычисление данных. Этот язык моделирует последовательное изменение значений массивов данных. Подозреваю что это получится контекстно-зависимый язык (в смысле что язык описывается контекстно-зависимой грамматикой). Результатом должно быть некое доказательство адекватности построенной модели (выведенного языка) реальным задачам и вычислениям.
2. Вы описываете допустимые правила вычислений для различных архитектур в виде других языков (как КЗ так и КС). Результатом опять же является доказательство правильности построенной модели.
3. Вы разрабатываете алгоритмы (и доказываете их) приведения языка из п.1 к любому языку из п.2 (или не любому, что означает то что ваш язык не исполним на данной архитектуре).
Я все правильно понял? (могу переписать те же пункты не в терминах формальных языков а в терминах детерминированных/не детерминированных автоматов если так вам удобнее)
Если да, то надо сосредоточиться на моделировании и доказательстве переходов (хотя опять же сомнения по новизне меня не отпускают), а не на программировании.