Programmation logique

Les constellations sont des sortes de programmes logiques comme dans Prolog. C'est la matière élémentaire à tout faire.

En programmation logique, on voit les rayons comme des prédicats, des propriétés ou des relations :

'a is the child of b
childOf(a b).

Les rayons positifs sont des sorties/conclusions et les rayons négatifs sont des entrées/hypothèses. Avec les rayons, on peut créer des faits (vérités d'une base de connaissance) :

'knowledge base
+childOf(a b).
+childOf(a c).
+childOf(c d).

mais aussi des règles d'inférence :

-childOf(X Y) -childOf(Y Z) +grandParentOf(Z X).

Les faits et règles d'inférence vont former des étoiles d'actions qui vont interagir avec une étoile de requête qui permet de poser des questions comme on ferait une requête à une base de donnée :

-childOf(X b) res(X).

On renvoie un résultat qui nous dira qui sont les enfants de b.

Contrairement à des langages dédiés à ce genre d'opération comme Prolog, dans Stellogen, il faudra organiser et déclencher des interactions :

knowledge =
  +childOf(a b);
  +childOf(a c);
  +childOf(c d);
  -childOf(X Y) -childOf(Y Z) +grandParentOf(Z X).

query = -childOf(X b) res(X).

show-exec #knowledge @#query.