:- type busy_beaver_states ---> a ; b ; c ; halt. :- type busy_beaver_symbols ---> '0' ; '1'. :- func busy_beaver_config = config(busy_beaver_states, busy_beaver_symbols). busy_beaver_config = config(a, % initial state set([halt]), % set of terminating states '0'). % blank symbol :- pred busy_beaver(busy_beaver_states::in, busy_beaver_symbols::in, busy_beaver_symbols::out, action::out, busy_beaver_states::out) is semidet. busy_beaver(a, '0', '1', right, b). busy_beaver(a, '1', '1', left, c). busy_beaver(b, '0', '1', left, a). busy_beaver(b, '1', '1', right, b). busy_beaver(c, '0', '1', left, b). busy_beaver(c, '1', '1', stay, halt). TapeOut = turing(busy_beaver_config, busy_beaver, []).