---
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);
```