Programmation Logique

プログラミング言語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が表示されます。

結構実用的な結果になりました。このコード進行使えますね。