Modify state by undoing action

Because of this method, it is important that any action can be undone knowing only the post-state and the action.

Property definitions

ai $ BacktrackProblem :: backtrack
	# Modify `state` by undoing `action`
	# Because of this method, it is important that any action can be undone
	# knowing only the post-state and the action.
	fun backtrack(state: S, action: A) is abstract
lib/ai/backtrack.nit:64,2--67,47

ai $ QueenProblem :: backtrack
	# Just `free` the last occupied row.
	redef fun backtrack(rows, column)
	do
		rows.pop
	end
lib/ai/examples/queens.nit:91,2--95,4