Add exercise excluded middle

This commit is contained in:
engboris 2024-06-13 01:32:48 +02:00
parent 10b8221a6e
commit b9acdebbe9
1 changed files with 33 additions and 3 deletions

View File

@ -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));`. On utilise l'étoile `-a(X) -b(Y) c(va(X) vb(Y));`.
{{< /details >}} {{< /details >}}
## Portes logiques ## Circuits booléens
On veut simuler des formules booléennes par des constellations. Chaque question On veut simuler des formules booléennes (plus précisément des circuits) par des
utilise le résultat de la question précédente. 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 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` produise `1` en sortie lorsqu'ajoutée à l'étoile `@-not(0 X) X;` et `0`
@ -173,3 +173,33 @@ de l'équivalence logique sachant que `X <=> Y = (X => Y) /\ (X => Y)`.
@-eqq2(X Y R) table_eqq2(X Y R); @-eqq2(X Y R) table_eqq2(X Y R);
``` ```
{{< /details >}} {{< /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 >}}