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

При этом первая же процедура убивает хвост массива, то есть генерирует его заново.
Это нехорошее свойство. Другое дело, что процедура может зависеть и от текущего и от предыдущего номера.
Два вопроса. Начальное состояние массива именно

или могут быть варианты? Допустимы только целые значения?
Есть ли какие ограничения или требования к количеству процедур?
Насколько я знаю, в игровом фолдинге речь не идёт об оптимальности, лишь бы получить результат.
> любая процедура убивает результат предыдущих процедур с бОльшими номерами
Вот это и есть нужное и важное свойство. Именно так и происходит в реальности. Только тут пока упрощение, нужно несколько сложнее, не просто "убивает", а "связанно изменяет". Т.е. процедура

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

или

? Будет лучше?
Начальное состояние массива лучше оставить

- это как бы символизирует веревку вытянутую в линию. Как бы координаты по одной оси. Возможно нужно подумать о введении 3- мерности, но пока это очевидно не нужно будет - лучше не усложнять.
Работать можно с любыми числами, только целые значения более наглядны, но если это чему-то мешает - это легко можно изменить и работать с любыми.
Ограничений на число процедур нет ни каких, хотя конечно их лучше минимизировать. Я выбрал две - чтобы иметь возможно просто увеличивать и уменьшать числа. Скорее можно использовать скажем логарифм чего-то, и синус чего-то. Причем один со знаком плюс, а другой со знаком минус. Тогда просто будет сложно и не эффективно искать прямую и обратную процедуру. Т.е. вариант, что "последовательность двух процедур

и

просто увеличивает восьмой элемент массива на 1" - просто будет значительно затруднен.
И да тут важно получить результат, пусть равенство двух чисел в массиве, и если работать с не целыми числами, то не просто равенство, а приближение с заданной погрешностью.