プログラミング言語Prolog。「論理を使ったプログラミング」を意味するフランス語「programmation en logique」に由来している、とウィキペディアにあります。
https://ja.wikipedia.org/wiki/Prolog
述語論理とか論理プログラムという言葉が出てきますが、関係性を記述して作られたグラフ構造を探索して、結果を表示したりできます。
LISP言語でもできると思いますが、述語論理というだけあってか、文章を書く感覚に近い気がします。
(以前どこかで同様の記事を書いた気がしますが・・)
下記サイトを参考に、音楽のコード進行のパターンを探索してみました。
http://bach.istc.kobe-u.ac.jp/prolog/intro/search.html
環境: Ubuntu 18.04
chord_progression.pl
[]はリストを表し、再帰でループしたり、このあたりLISP的です。
swipl chord_progression.pl
で起動。
探索結果が複数ある場合は、セミコロンで次のパターンを表示できます。
なくなったところで、falseが表示されます。
結構実用的な結果になりました。このコード進行使えますね。