55 lines
1.2 KiB
Markdown
55 lines
1.2 KiB
Markdown
---
|
|
title: "Conditions"
|
|
weight: 20
|
|
---
|
|
|
|
# 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);
|
|
``` |