W zadaniu program ma realizować podane zależności logiczne, więc poprawność testu ocenia się przez porównanie wartości wyjść z tabeli z wartościami obliczonymi z równań.
Kluczowe są operacje algebry Boole’a i ich kolejność:
- NOT (negacja) zmienia 0 na 1 i 1 na 0.
- AND (koniunkcja) daje 1 tylko wtedy, gdy oba argumenty są równe 1.
- OR (alternatywa) daje 1, gdy przynajmniej jeden argument jest równy 1.
Dla wyjścia Y1 = NOT(S1 OR S3) AND S2 najpierw liczy się OR w nawiasie, potem wykonuje NOT, a na końcu AND z S2. Dla Y2 = S1 AND NOT S2 najpierw neguje się S2, a dopiero później wykonuje AND z S1.
W stanie 6 (S1=1, S2=0, S3=1):
- Y1: (S1 OR S3) = (1 OR 1) = 1, więc NOT(1)=0, a następnie 0 AND 0 = 0. Zatem Y1=0 i taki wynik w tabeli nie wskazuje błędu.
- Y2: NOT S2 = NOT 0 = 1, więc S1 AND NOT S2 = 1 AND 1 = 1. Jeśli tabela pokazuje Y2=0, to jest to sprzeczne z zależnością logiczną i oznacza błąd programu w tym stanie.
Dlaczego pozostałe wskazane stany nie muszą oznaczać błędu? Ponieważ sam fakt, że w wierszu pojawia się 0 lub 1, nie jest problemem — problemem jest dopiero niezgodność między wartością oczekiwaną a zapisaną w tabeli testów. W praktyce taka rozbieżność jest sygnałem do debugowania: sprawdza się implementację negacji, priorytety operatorów oraz mapowanie sygnałów wejściowych na zmienne programu.