Script started on XXX XXX XX 11:48:19 XXXX > cat g1.p snt --> det(F), adjs(F), noun. det(F) --> [a], { F = consonant } ; [an], { F = vowel }. adjs(F) --> adj(F); adj(F), adjs(_). adj(F) --> [spotted], { F = consonant } ; [endangered], { F = vowel } ; [poison_arrow], { F = consonant }. noun --> [frog] ; [owl]. > pl Welcome to SWI-Prolog (Multi-threaded, Version 5.6.24) Copyright (c) 1990-2006 University of Amsterdam. SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Please visit http://www.swi-prolog.org for details. For help, use ?- help(Topic). or ?- apropos(Word). ?- ['g1.p']. % g1.p compiled 0.01 sec, 3,152 bytes Yes ?- snt(X,[]). X = [a, spotted, frog] ; X = [a, spotted, owl] ; X = [a, poison_arrow, frog] ; X = [a, poison_arrow, owl] ; X = [a, spotted, spotted, frog] ; X = [a, spotted, spotted, owl] ; X = [a, spotted, endangered, frog] ; X = [a, spotted, endangered, owl] ; X = [a, spotted, poison_arrow, frog] ; X = [a, spotted, poison_arrow, owl] Yes ?- snt([an|X], []). X = [endangered, frog] ; X = [endangered, owl] ; X = [endangered, spotted, frog] ; X = [endangered, spotted, owl] ; X = [endangered, endangered, frog] ; X = [endangered, endangered, owl] ; X = [endangered, poison_arrow, frog] ; X = [endangered, poison_arrow, owl] ; X = [endangered, spotted, spotted, frog] ; X = [endangered, spotted, spotted, owl] ; X = [endangered, spotted, endangered, frog] Yes ?- Det = an, snt([Det | Rest], []), X = [Det|Rest]. Det = an Rest = [endangered, frog] X = [an, endangered, frog] ; Det = an Rest = [endangered, owl] X = [an, endangered, owl] ; Det = an Rest = [endangered, spotted, frog] X = [an, endangered, spotted, frog] ; Det = an Rest = [endangered, spotted, owl] X = [an, endangered, spotted, owl] ; Det = an Rest = [endangered, endangered, frog] X = [an, endangered, endangered, frog] ; Det = an Rest = [endangered, endangered, owl] X = [an, endangered, endangered, owl] ; Det = an Rest = [endangered, poison_arrow, frog] X = [an, endangered, poison_arrow, frog] ; Det = an Rest = [endangered, poison_arrow, owl] X = [an, endangered, poison_arrow, owl] ; Det = an Rest = [endangered, spotted, spotted, frog] X = [an, endangered, spotted, spotted, frog] ; Det = an Rest = [endangered, spotted, spotted, owl] X = [an, endangered, spotted, spotted, owl] ; Det = an Rest = [endangered, spotted, endangered, frog] X = [an, endangered, spotted, endangered, frog] ; Det = an Rest = [endangered, spotted, endangered, owl] X = [an, endangered, spotted, endangered, owl] Yes ?- halt. > exit > script done on XXX XXX XX 11:51:40 XXXX