Note that a suspension is not a standard Prolog data structure and can only be manipulated in a restricted way. In particular, a suspension is not a term with functor 'GOAL' or 'WOKEN GOAL' although it is printed this way by default. The only way to create a suspension is with make_suspension/2 or by copying an existing suspension.
[eclipse 1]: make_suspension(writeln(hello), 1, S), delayed_goals(G). S = 'GOAL'(writeln(hello), eclipse) G = [writeln(hello)] Delayed goals: writeln(hello) yes. [eclipse 2]: make_suspension(true, 3, S), atomic(S), type_of(S,T). S = 'GOAL'(true, eclipse) % although printed like a structure, T = goal % a suspension has atomic type 'goal' Delayed goals: true yes.