Может кто-нибудь сказать мне (формально), почемуПропозициональное логика: почему "не А или (не А и В) = не А"
not A or (not A and B)
является
not A?
Может кто-нибудь сказать мне (формально), почемуПропозициональное логика: почему "не А или (не А и В) = не А"
not A or (not A and B)
является
not A?
A or (A and B) == A
всегда тавтология (где А здесь можно заменить на «не» или любое другое булево выражение, аналогично для B).
Вам не нужно рассматривать всю таблицу истинности, как другие сделали, просто рассмотрят значение самого A (то есть, только два случая) и применить правила булевой логики для упрощения:
true or (true and B)
, что тривиально верно (по определению или - true or X
всегда true
).false or (false and B) == (false and B) == false
(по определению или (false or X == X
) и (false and X == false
)).В зависимости от вашего личного вкуса, было бы более интуитивным напомнить об этом или иметь отношение к СОЮЗу в теории множеств, а «и» относится к ИНТЕРСЕКЦИИ. В этом случае, очевидно. UNION (A INTERSECTION B) равен A, так как (A INTERSECTION B) является строгим подмножеством A.
okay. второй момент - это именно то, что я хотел знать. THX, все за то, что помогли мне! – MBD
!A || (!A && B) means :
if(A = true and B = true) => false (!A)
if(A = True and B = false) => false (!A)
if(A = false and B = True) => True (!A)
if(A = false and B = false) => True (!A)
в все случаи вашего выражения! A Это называется таблицей истинности входов выражения.
Если у вас большой набор входов и логических операций, этот метод не просто проверить ваше выражение.
что вы можете сделать в этом случае:
доказательство !A = !A || (!A && B)
же, как доказав A = !(!A || (!A && B))
!(!A || (!A && B)) = A && !(!A && B) = A && (A || !B) = A
Это недействительный способ сделать это. В этом случае у вас есть только небольшое выражение с 4 различными выходами. Иногда выражения могут достигать 100 (!) И 100 (&&). –
Вот почему это называется таблицей истинности выражения! когда он ограничен небольшим количеством входов; – Ayyoub
ОП спросил: «Кто-нибудь может сказать мне (* formal *), ** why **». ОП уже знал, что они одинаковы, поэтому ваш ответ не добавляет к этому знанию; вы не объясняете ** почему **. Честно говоря, я не думаю, что это вопрос программирования, и ОП должен задавать это на стороне математики. Но это не отвечает на вопрос. –
Потому что, если вы НЕ с обеих сторон, вы получаете: –
@mazenelzoor OP правильный, вы нет. '(¬A ∨ (¬A ∧ B))' имеет ту же таблицу истинности, что и '¬A', ее легко проверить –
Потому что, если вы НЕ с обеих сторон получаете: ** ** ** ** ** & ** a ** or! b –