Кажется, вам нужен дизъюнкт:
my_correction(Word) :-
(
correction1(Word, Result)
;
correction2(Word, Result)
;
correction3(Word, Result)
),
% do stuff with Result.
Или, может быть, я неправильно понял вашу проблему ...
Возможно, вы захотите обернуть это в структуру if для случая, когда коррекция не требуется:
my_correction(Word) :-
( \+ (correction1(Word, Result);correction2(Word, Result);correction3(Word, Result))
-> Result = Word
; true),
% do stuff with Result.
(это говорит о том, что если коррекция не требуется, Result = Word, иначе Result уже содержит корректирующее слово, поэтому просто верните true).