Vorstellung(*Thema11 *Tonart1) Vorstellung(*Thema21 *Tonart2) Vorstellung(*Thema3 *Tonart3) .
Reprise(*Thema1 *Thema2 *Tonart) -> <(Tonika *Tonart *Tonika)> Vorstellung(*Thema1 *Tonika) Vorstellung(*Thema2 *Tonika) .
Vorstellung(*Thema *Tonart) -> [(t *Tonart) | *Thema] .
Nach der Definition der Prädikate "Tonika", "Dominante", "Variation", "Kombi-nation" und "Modulation", die in einer trivialen Form so aussehen könnten:
(Tonika *Tonart *Tonart) . (Dominante *Tonart *Dominante) <- (sum *Tonart 7 *Dominante) . (Variation *Thema *Thema) . (Kombination *Thema1 *Thema2 *Thema3) <- (append *Thema1 *Thema2 *Thema3) . (Modulation *Tonart *Tonart) .
ist dieses Programm in der Lage, eine Struktur zu erzeugen, die zumindest prinzipiell einem Sonatenhauptsatz genügt. Bei normalen DCG's ergibt sich das Problem, daß der Suchraum in genau einer Weise aufgezählt wird und ein exemplarischer Überblick über die generierbaren Strukturen damit nicht gelingt.
Die folgende DCG
S -> [a] . S -> [a] S . S -> [b] . S -> [b] S .
kann zwar im Prinzip beliebige Folgen der Form
a aa aaa aaaa ... und
b bb bbb bbbb ... |