Создать И выражение с ИЛИ и НЕ - PullRequest
1 голос
/ 13 января 2020

Для назначения я должен написать булеву формулу, эквивалентную:

X = (A > 10) & (A < 20)

Я не могу использовать оператор &. Дается подсказка: используйте OR и NOT. Я просто не могу разобраться с проблемой и думаю, что это невозможно.

X = not(A<10) or not(A>20) 

не сработает, потому что это всегда будет правдой. Я попробовал несколько других вариантов, но ни один из них не даст тот же результат, что и первая формула. Так это возможно?

Ответы [ 2 ]

0 голосов
/ 13 января 2020

Следующие эквивалентности имеют место в классических логиках c:

¬¬P      ≡ P         (Double Negation)
¬(P ∧ Q) ≡ ¬P ∨ ¬Q   (De Morgan's Law 1)
¬(P ∨ Q) ≡ ¬P ∧ ¬Q   (De Morgan's Law 2)

Отсюда следует:

  P ∧ Q
≡ ¬¬(P ∧ Q)    (Double Negation Introduction)
≡ ¬(¬P ∨ ¬Q)   (De Morgan's Law 1)

В вашем случае имеем:

  (N > 10) ∧ (N < 20)
≡ ¬¬((N > 10) ∧ (N < 20))    (Double Negation Introduction)
≡ ¬(¬(N > 10) ∨ ¬(N < 20))   (De Morgan's Law 1)
≡ ¬(N ≤ 10 ∨ N ≥ 20)         (Trichotomy)
0 голосов
/ 13 января 2020

Спасибо Окасе, действительно закон Моргана;

нет (не (а> 10) или нет (а <20)) </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...