Biblio : TSANG C.P., AITKEN M., « Harmonizing Music as a Discipline of Constraint Logic Programming », Proc. ICMC 91, Montréal, 1991, pp. 61-64.
Les quatre voix du choral sont représentées par un tableau de 4 lignes et n colonnes, contenant les variables xij (codes midi). On note D1, D2, D3, D4 respectivement les domaines des variables xi1, xi2, xi3, xi4. La ligne du haut xi4 est instanciée (c'est la mélodie à harmoniser). Le problème est d'instancier les 3 autres lignes en respectant les contraintes ci-après. Les "notes de passage" peuvent ne pas être harmonisées (colonnes i = 2, 6 et 10).
| xi4 = | 67 | 69 | 71 | 71 | 72 | 71 | 69 | 69 | 74 | 72 | 71 | 67 | 66 | 67 |
| xi3 = | 62 | 62 | 62 | 64 | 64 | 64 | 64 | 69 | 67 | 67 | 67 | 64 | 62 | 62 |
| xi2 = | 59 | 57 | 55 | 59 | 57 | 59 | 60 | 62 | 59 | 60 | 62 | 60 | 57 | 59 |
| xi1 = | 43 | 42 | 43 | 43 | 45 | 43 | 45 | 54 | 55 | 52 | 55 | 48 | 50 | 55 |
| Airi = | I | Vb | I | VIb | II | VIb | II | Vb | I | IVb | I | IV | V | I |
On introduit deux séries de variables supplémentaires :
Une contrainte générale sur (Ai, ri) est de se limiter aux couples suivants : I, Ib, Ic, II, IIb, IV, IVb, IVc, V, Vb, VI, VIb, ou VIIb.
L'instanciation des variables doit respecter les 2 ensembles de contraintes suivants :
Pas d'enchainements II-I, VIIb-IV, V-IV, VIb-V
Pas de renversement c sauf à une cadence
*** S'il y a le choix entre les renversements vide et b, choisir b
La sensible doit monter à la tonique
***La sus-tonique doit descendre à la tonique si possible