diff --git a/content/docs/playing/exercices.md b/content/docs/playing/exercices.md index 53aadc1..9ab216e 100644 --- a/content/docs/playing/exercices.md +++ b/content/docs/playing/exercices.md @@ -88,10 +88,10 @@ la sortie `+a(X)` vers `b` (en plus de l'affichage de `a`). Et on ajoute une On utilise l'étoile `-a(X) -b(Y) c(va(X) vb(Y));`. {{< /details >}} -## Portes logiques +## Circuits booléens -On veut simuler des formules booléennes par des constellations. Chaque question -utilise le résultat de la question précédente. +On veut simuler des formules booléennes (plus précisément des circuits) par des +constellations. Chaque question utilise le résultat de la question précédente. 1. Ecrire une constellation calculant la négation de telle sorte à ce qu'elle produise `1` en sortie lorsqu'ajoutée à l'étoile `@-not(0 X) X;` et `0` @@ -172,4 +172,34 @@ de l'équivalence logique sachant que `X <=> Y = (X => Y) /\ (X => Y)`. @-eqq(X Y R) table_eqq(X Y R); @-eqq2(X Y R) table_eqq2(X Y R); ``` +{{< /details >}} + +5. En utilisant l'étoile `+share(X X X);`, définir le circuit booléen pour +la formule du tiers exclu qui prend une unique entrée, la partage au travers de +deux sorties avec l'une qui passe par une porte NOT et pour rejoindre l'autre +sortie à travers une porte OR. Afficher la table de vérité correspondant à ce +circuit. + +{{< details title="Solution" open=false >}} +``` ++not(0 1); +not(1 0); ++and(0 0 0); +and(0 1 0); +and(1 0 0); +and(1 1 1); ++or(0 0 0); +or(0 1 1); +or(1 0 1); +or(1 1 1); + ++and2(0 X 0); +and2(1 X X); ++or2(0 X X); +or2(1 X 1); + +-not(X Y) -or(Y Z R) +impl(X Z R); +-not(X Y) -or2(Y Z R) +impl2(X Z R); + +-impl(X Y R1) -impl(Y X R2) -and(R1 R2 R) +eqq(X Y R); +-impl2(X Y R1) -impl2(Y X R2) -and2(R1 R2 R) +eqq2(X Y R); + ++share(X X X); + +'excluded middle +-share(X X1 X2) -not(X1 R1) -or(R1 X2 R2) +ex(R2); + +@-ex(X) table_ex(X); +``` {{< /details >}} \ No newline at end of file