--- title: "Conditions" weight: 2 --- # Conditions booléennes Selon les compatibilités entre les rayons, des choix sont faits. Par exemple, en vérifiant une valeur de vérité : ``` -true result(the condition is true); -false result(the condition is false); @+true; ``` On une étoile par clause de condition et l'entréé dans une condition (ou le choix d'une étoile) dépend de la compatibilité entre les rayons. C'est en fait le mécanisme de base de la résolution stellaire. # Conditions complexes Ce principe peut se généraliser à n'importe quel rayon. La constellation suivante : ``` +not(0 1); +not(1 0); +and(0 X 0); +and(1 X X); +or(0 X X); +or(1 X 1); -not(X Y) -or(Y Z R) +impl(X Z R); -cond(X Y) -impl(X Y 1) ok; @+cond(0 1); ``` peut-être lue comme "si X implique Y alors afficher ok". # Cas d'échec Il n'est pas (nativement) possible de représenter le `else` de la programmation. Il est donc nécessaire de capturer tous les cas manuellement lorsque l'on souhaite être exhaustif : ``` +not(0 1); +not(1 0); +and(0 X 0); +and(1 X X); +or(0 X X); +or(1 X 1); -not(X Y) -or(Y Z R) +impl(X Z R); -cond(X Y) -impl(X Y 1) ok; -cond(X Y) -impl(X Y 0) not_ok; @+cond(0 1); ```