Вы можете использовать nth1 / 4 (я связался с nth0 / 4, так как документы для этой записи явные), заменив и строку и элемент в ней, аналогичнотак, как вы использовали в своей загрузке / 4.Рассмотрим этот пример
?- L=[a,b,c],I=3,N=x, nth1(I, L, Old, Temp), nth1(I, R, N, Temp).
L = [a, b, c],
I = 3,
N = x,
Old = c,
Temp = [a, b],
R = [a, b, x].
В R у нас третий (I = 3) элемент заменен на L.
Итак, все, что вам нужно, это 4 раза вызвать nth1 вправильный порядок .Сначала вы выбираете строку, которую нужно изменить, затем применяете подстановку элемента, а затем повторно вставляете строку в матрицу.
Полученный код является, например, довольно общим (примечание I, J - здесь оно называется U, V - не указано):
?- store([[1,2,3],[3,4,5],[7,8,9]],U,V,x,R).
U = V, V = 1,
R = [[x, 2, 3], [3, 4, 5], [7, 8, 9]] ;
U = 1,
V = 2,
R = [[1, x, 3], [3, 4, 5], [7, 8, 9]] ;
U = 1,
V = 3,
R = [[1, 2, x], [3, 4, 5], [7, 8, 9]] ;
...