Закон де моргана для 4 переменных

От моноидов к алгебрам де Моргана. Строим абстракции на Haskell

Закон де моргана для 4 переменных

  • операция образует моноид с нейтральным элементом $inline$0$inline$:

    операция образует моноид с нейтральным элементом :

    выполняется мультипликативное свойство нуля:
    свойство инволюции:
    дуальность нуля и единицы относительно инволюции:
    законы де Моргана:

    Строго говоря, умножение ещё должно быть дистрибутивно по отношению к сложению, но в некоторых случаях (например для электрических цепей) это может не выполняться. Зато если выполняется, то можно сложное выражение, состоящее из комбинации сложений и умножений привести к форме суммы одночленов, раскрыв все скобки, или, наоборот, упростить выражение, вынося за скобки общие множители.

    Иногда инволюция выполняет роль инверсии, то есть, порождает обратный элемент для операции умножения. Тогда выполняется следующее тождество:

    Это выполняется для булевой алгебры и алгебры сопротивлений, но неверно для таблиц.

    Абстракция алгебры де Моргана на Haskell

    Перед началом работы подключим несколько расширений:

    {-# LANGUAGE DeriveFunctor, FlexibleInstances, GeneralizedNewtypeDeriving #-}

    Определим для алгебр де Моргана класс типов:

    class DeMorgan a where {-# MINIMAL inv,(()|()),(zero|one) #-} inv :: a -> a zero :: a zero = inv one one :: a one = inv zero () :: a -> a -> a a b = inv (inv a inv b) () :: a -> a -> a a b = inv (inv a inv b)

    В этом определении мы уже используем законы де Моргана для того, чтобы упростить работу с классом. В описании экземпляра достаточно определить только одну из двух моноидальных операций, её нейтральный элемент и инволюцию.

    Создадим первый экземпляр класса DeMorgan для логических данных:

    instance DeMorgan Bool where zero = False inv = not () = (&&)

    Из соображений эффективности, конечно, стоит явно определить и оператор , но мы оставим это лаконичное определение, чтобы убедиться в том, что оно в полной мере задаёт алгебру для типа Bool:

    > True FalseTrue> one :: BoolTrue

    Булева алгебра, это хорошо, но уж больно просто. Давайте её обобщим, построив алгебру для нечёткой логики в духе Лотфи Заде. Для этого определим тип-обёртку Fuzzy и потребуем у компилятора вывести для него числовые свойства:

    newtype Fuzzy = Fuzzy { deFuzzify :: Double } deriving (Show, Num, Fractional, Ord, Eq) instance DeMorgan Fuzzy where zero = 0 inv x = fuzzify $ 1 — x a b = fuzzify $ max a b fuzzify x = 0 `max` x `min` 1
    > deFuzzify $ one1> deFuzzify $ 0.2 0.40.2 > deFuzzify $ 0.8 0.4 0.50.5> deFuzzify $ 0.3 0.4 0.50.4
    Определим простейшую алгебру де Моргана для таблиц, представленных вложенными списками:
    instance DeMorgan [[a]] where zero = [] () = (++) inv = transpose

    здесь мы использовали функцию transpose из библиотеки Data.List. Вот как работает эта алгебра:

    > inv [[1,2],[3,4]][[1,3],[2,4]]> [[1,2],[3,4]] [[5],[6]][[1,2,5],[3,4,6]]> [[1,2],[3,4]] [[5,6]][[1,2],[3,4],[5,6]]

    Давайте применим её для написания простенькой табулирующей функции table

    table :: (Show a, Show b) => (a -> a -> b) -> [a] -> [[String]]table f vals = ([[» «]] h) (inv h c) where h = [show vals] c = [show [ f x y | x DeMorgan (Frac a) where zero = 0 inv = (1/) () = (+)
    > getFrac $ 2 68.0> getFrac $ 2 61.5> getFrac $ 1 (2 (1 1))2.0

    В качестве примера, выразим эффективное сопротивление цепи, показанной на рисунке и вычислим силу тока при напряжении 12 V:

    > getFrac $ ((6 12) 4) (3 5)4.0> getFrac $ 12 / ((6 12) 4) (3 5)3.0

    Дуальная алгебра

    Для расчёта эффективной жёсткости сложной системы пружин, или ёмкости батареи конденсаторов, тоже годится тип Frac, но для этих расчётов нужно поменять местами операторы и , а также элементы zero и one.

    Математики с радостью узнают в этом преобразовании переход к дуальной алгебре. Звучит красиво, но не хотелось бы писать 2 3 имея в виду параллельное соединение пружин.

    Было бы хорошо сохранить семантику операторов, но изменить способ вычислений.

    Тут математика снова даёт нам возможность воспользоваться её плодами. Как и для любого моноида, для любой алгебры де Моргана определена дуальная ей алгебра, в которой «всё наоборот». Опишем это обстоятельство на языке Haskell. Создадим новый тип-обёртку Dual для дуальных алгебр и сообщим, что если алгебра a является алгеброй де Моргана, то и дуальная ей тоже будет алгеброй де Моргана.

    newtype Dual a = Dual {getDual :: a} deriving (Show, Num, Fractional, Eq, Ord, Functor) instance DeMorgan a => DeMorgan (Dual a) where zero = Dual one one = Dual zero inv x = inv x Dual a Dual b = Dual $ a b Dual a Dual b = Dual $ a b

    Теперь можно рассчитать эффективную жёсткость системы из трёх пружин, одна из которых последовательно соединяется с парой других, соединёных параллельно:

    > getFrac . getDual $ 600 (200 300)450.0

    Вывод типов позволяет указывать какую именно алгебру мы используем только «на выходе» из вычислений. Так мы можем явно и, в то же время, просто, изменять способ вычисления выражения.

    Свободная алгебра

    А что если мы захотим представлять и рассчитывать цепи, содержащие не только сопротивления, но и ключи, конденсаторы, катушки и т.д.? И не только рассчитывать, но и изображать их или сохранять в файл? Для этого нам понадобится свободная алгебра.

    Цепь будем представлять некоторой структурой данных, ничего не вычисляющей, но отражающей алгебраическую структуру цепи и образующей алгебру де Моргана:

    data Circuit a = Zero | One | Elem a | Inv (Circuit a) | Par (Circuit a) (Circuit a) | Seq (Circuit a) (Circuit a) deriving (Show, Functor) instance DeMorgan (Circuit a) where zero = Zero one = One () = Seq () = Par inv = Inv

    Инволюция или инверсия для элемента цепи не имеет определённого смысла, но для корректности и общности мы включили её в описание типа.

    Самый первый и естественный гомоморфизм — это преобразование типа Circuit в произвольный тип, для которого определена алгебра де Моргана:
    reduce :: DeMorgan a => Circuit a -> areduce circ = case circ of Zero -> zero One -> one Elem b -> b Inv a -> inv (reduce a) Par a b -> reduce a reduce b Seq a b -> reduce a reduce b

    Функция reduce подобна функции fold, которая сворачивает список моноидов в произвольный моноид. Таким же образом, как от функции fold для функторов можно произвести функцию foldMap, можно образовать функцию reduceMap:

    reduceMap :: DeMorgan b => (a -> b) -> Circuit a -> breduceMap = reduce . fmap f

    Эта функция позволяет явно указать какую именно алгебру де Моргана следует использовать при интерпретации цепи.

    Согласитесь, обнаружение такой красивой симметрии в определениях функций свёртки для моноидов и нашей алгебры доставляет эстетическое удовольствие!

    Различные задачи расчёта цепей

    Для построения цепей организуем предметно-ориентированный тип Lumped, который позволит нам кроме значений параметров элементов цепи Value a, явно представить короткое замыкание Short и разрыв цепи Break:

    data Lumped a = Short | Value a | Break deriving (Show, Functor) instance DeMorgan s => DeMorgan (Lumped s) where zero = Break Value r1 Value r2 = Value $ r1 r2 Short r = r r Short = r _ Break = Break Break _ = Break inv Short = Break inv Break = Short inv (Value r) = Value (inv r)

    Введём тип для элементов: сопротивлений, ёмкостей и индуктивностей, а также конструкторы элементов цепи:

    data Element = R Double | C Double | L Double deriving Show res = Elem . Rcap = Elem . Ccoil = Elem . Lkey True = Zerokey False = One

    Наконец, напишем простенькую цепь для опытов.

    s :: Bool -> Circuit Elements k = res 10 ((res 2 coil 5e-3 key k) cap 10e-9)

    Теперь мы готовы строить различные интерпретации нашей свободной алгебры.

    Функция connect определяет является ли цепь замкнутой, используя булеву алгебру:

    connected :: Circuit Element -> Boolconnected = reduceMap f where f el = case el of R _ -> True C _ -> False L _ -> True
    > connected (s True)True> connected (s False)False

    Функция resistance определяет эффективное сопротивление цепи для постоянного тока, используя алгебру для дробных чисел:

    resistance :: Circuit Element -> Lumped Doubleresistance = fmap getFrac . reduceMap (fmap Frac . f) where f el = case el of R r -> Value r C _ -> Break L _ -> Short

    Здесь вычислительная работа производится внутри типа Lumped, Который мы объявили функтором.

    > resistance (s True)Value 12> resistance (s False)Break

    Для расчёта импеданса цепи потребуетcя подключить модуль Data.Complex:

    impedance :: Double -> Circuit Element -> Lumped (Complex Double)impedance w = fmap getFrac . reduceMap (fmap Frac . f) where f el = Value $ case el of R r -> r :+ 0 C c -> 1 / (0 :+ w*c) L l -> 0 :+ w*l
    > impedance 1e3 (s False)Value (10.0 :+ (-99999.99999999997))> impedance 1e3 (s True)Value (12.00020001420084 :+ 5.0002100065000405)> impedance 1e6 (s False)Value (10.0 :+ (-100.0))> impedance 1e6 (s True)Value (10.000832986116954 :+ (-102.04081598653629))

    Если речь идёт о расчёте батареи конденсаторов, то нужно поменять алгебру на дуальную:

    capacity :: Circuit Element -> Lumped Doublecapacity = fmap (getFrac . getDual) . reduceMap (fmap (Dual . Frac) . f) where f el = case el of R _ -> Short C c -> Value c L _ -> Short

    Обратите внимание на то, как во всех этих интерпретациях мы указывали способ расчёта характеристик цепи, определяя лишь способ расчёта для отдельных элементов и выбирая подходящую алгебру для свёртки.

    А если нам нужно будет изобразить цепь, то можно воспользоваться великолепной библиотекой Diagrams для построения векторной графики. Она предоставляет два комбинатора для относительного расположения изображений: (|||) — рядом по горизонтали и (===) — рядом по вертикали.

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

    Кстати, если вы хотите увидеть филигранное и нетривиальное использование моноидов, обратите внимание на эту библиотеку и на статьи, с ней связанные.

    Заключение

    Мы не рассмотрели всех возможностей, которые даёт использование абстракции для алгебры де Моргана. Можно было привести пример расчёта теплоизоляции здания с окнами и сложным покрытием стен; или моделирование неньютоновских жидкостей цепями из элементов жёсткости и вязкости.

    Для моноидов и алгебры де Моргана выполняется ряд простых теорем, например, известно, что произведение типов-моноидов тоже образует моноид. Эвивалентное утверждение верно для алгебр де Моргана, оно даёт возможность за один проход по структуре вычислять сразу несколько характеристик.

    Более того, легко можно построить эпиморфизм для алгебры в моноид и вычислять не только алгебраические характеристики, но и любые моноидальные.

    Как самый простой пример: одновременно с расчётом сопротивлений можно вычислить суммарную мощность выделяемую цепью, которая будет описываться простым суммирующим моноидом.

    Свободная алгебра даёт ещё одну возможность, существенную, например, для задач нечёткой логики. Ещё не вычисленное выражение можно упростить, если воспользоваться дистрибутивностью алгебры.

    Эту процедуру можно выполнить во время выполнения программы, то есть с произвольными данными, но перед интенсивными вычислениями.

    На что способны свободные структуры показывает Wolfram Mathematica, в которой все выражения, по существу, представляют собой свободные алгебры.

    По сравнению с лошадью или с автомобилем, поезд имеет существенное ограничение — он может двигаться только по железной дороге. И у железной дороги есть существенное ограничение — по ней могут двигаться только поезда.

    Но эти ограничения дают новые возможности — можно существенно снизить трение, увеличить скорость и построить сложную и эффективную автоматическую систему управления движением сотен составов. На автомагистрали нельзя ездить на мопеде или на тракторе. Это ограничение.

    Но если мы гарантируем его, то можем рассчитывать на высокие скорости и высокую пропускную способность трассы.

    Функциональное программирование добавляет в повседневную практику программиста различные ограничения, и законы. Изменять состояние нельзя, композиция должна быть ассоциативной, аппликативные функторы и монады должны удовлетворять законам аппликативных функторов и монад и т.д.

    Это может раздражать, но вместе с этими ограничениями и законами приходят гарантии, что код будет работать именно так, а не иначе.

    А самое главное, именно неукоснительное следование этим законам, в принципе, и позволяет говорить в программе о функторах, монадах, ассоциативности и дистрибутивности, алгебрах и прочих категориях, а значит и пользоваться наработками многих поколений математиков и применять их в повседневной работе. Так что все эти сложные штуки — не костыли ФП, как может показаться, а ставшие доступными благодаря развитию аппаратной части компьютеров, новые возможности. Не стоит ими пренебрегать.

  • Источник: https://habr.com/post/323832/

    Закон де моргана для 4 переменных

    Закон де моргана для 4 переменных

    Ну что же, отрицаем столбец «пэ» – единицы превращаем в нули, а нули – в единицы: На втором шаге смотрим на столбцы и и применяем к ним операцию ИЛИ.

    Немного забегая вперёд, скажу, что дизъюнкция перестановочна ( и – это одно и то же), и поэтому столбцы можно анализировать в привычном порядке – слева направо.

    При выполнении логического сложения удобно использовать следующее прикладное рассуждение: «Если два нуля – ставим ноль, если хотя бы одна единица – единицу»: Таблица истинности построена. А теперь вспомним старую-добрую импликацию: …внимательно-внимательно… смотрим на итоговые колонки….

    Для «взрослой» же формулировки теоремы Пифагора истинны все 4 «направления».

    Закон силлогизма

    Тоже классика жанра: «Все дубы – деревья, все деревья – растения, следовательно, все дубы – растения».

    Ну и здесь опять хочется отметить формализм математической логики: если наш строгий Преподаватель думает, что некий Студент – есть дуб, то с формальной точки зрения данный Студент, безусловно, растение =) …хотя, если задуматься, то может быть и с неформальной тоже =)

    Давайте на этой веселой ноте проведём доказательство. В данную формулу входят уже элементарных высказывания , а значит, всего будет: различных комбинаций нулей и единиц (см. три левых столбца таблицы).

    А здесь удобно рассуждать так: «если в столбцах и две единицы, то ставим единицу, во всех остальных случаях – ноль».

    И, наконец, сверяемся с таблицей истинности эквиваленции .

    Основные равносильности алгебры высказываний

    С двумя из них мы только что познакомились, но ими дело, понятно, не огранивается. Тождеств довольно много и я перечислю самые важные и самые известные из них:

    Коммутативность конъюнкции и коммутативность дизъюнкции

    Коммутативность – это перестановочность:

    Знакомые с 1-го класса правила: «От перестановки множителей (слагаемых) произведение (сумма) не меняется».

    Левый операнд импликации называется посылкой, а правый – следствием. Из таблицы истинности импликации следует, что она истинна, когда истинно следствие, либо ложна посылка.

    Единственный случай, когда импликация ложна – это случай истинной посылки и ложного следствия. Таким образом, мы подошли к последнему закону алгебры логики, который бывает полезен при упрощении выражений.

    12) Закон преобразования импликации

    Необходимо ещё отметить, что в сложных логических выражениях у операций есть порядок приоритетов.

    3) Дизъюнкция, строгая дизъюнкция, эквивалентность

    Смотрите еще:

    • Закон оукена безработица внп Разрыв ввп (внп), закон Оукена Разрыв ВВП (ВНП) — это отклонение фактически достигнутого ВВП (ВНП) от потенциального (Y-Y*).

    Введем обозначения: АВ = Х;

    CD = Y, тогда

    Найдем и подставим в выражение (22):

    Таким образом:

    Рассмотрим выражение, представленное в конъюнктивной форме:

    (А + В)(С + D)

    Найдем его инверсию в виде

    Введем обозначения: А + В = X; С + D =Y,тогда

    Найдем и подставим их в выражение

    (23):

    Таким образом:

    При инвертировании сложных выражений можно пользоваться следующим правилом. Чтобы найти инверсию, необходимо знаки конъюнкции заменить знаками дизъюнкции, а знаки дизъюнкции — знаками конъюнкции и поставить инверсии над каждой переменной:

    Понятие булевой функции

    Вобщем случае функция (лат.

    Важно

    Отсюда находим:

    А = 0, В = 1, С = 0, D = 1, Е = 1, F = 1.

    Сколько всего существует наборов, если известно число п аргументов? Очевидно, столько же, сколько существует n-разрядных двоичных чисел, т. е. 2n

    Лекция 6

    Задание булевой функции

    Один способ мы уже знаем. Это аналитический, т. е. в виде математического выражения с использованием двоичных переменных и логических операций. Кроме него существуют и другие способы, важнейшим из которых является табличный.

    В таблице перечисляются все возможные наборы значений аргументов и для каждого набора указывается значение функции.

    И тут же несколько похожих тождеств:

    …мда, что-то я даже подзавис… так и доктором философии завтра можно проснуться =)

    Закон двойного отрицания

    Ну а здесь уже напрашивается пример с русским языком – все прекрасно знают, что две частицы «не» означают «да». А для того, чтобы усилить эмоциональную окраску отрицания нередко используют три «не»: – даже с крохотным доказательством получилось!

    Законы поглощения

    – «а был ли мальчик?» =)

    В правом тождестве скобки можно опустить.

    Законы де Моргана

    Предположим, что строгий Преподаватель (имя которого вам тоже известно:)) ставит экзамен, если – Студент ответил на 1-й вопрос и – Студент ответил на 2-й вопрос.

    Истинность этих и всех последующих законов легко можно установить, построив таблицу истинности для левого и правого логического выражения.

    Переходим к группе законов, которые практически аналогичны законам алгебры чисел.

    7) Законы коммутативности

    Здесь стоит сделать замечание, что помимо конъюнкции и дизъюнкции свойством коммутативности также обладают эквивалентность и строгая дизъюнкция. Импликация – единственная из изучаемых операций, которая имеет два операнда и не обладает свойством коммутативности.

    8) Законы ассоциативности

    (x & y) & z = x & (y & z),

    (x`vv`y) `vv` z = x `vv` (y `vv` z);

    9) Законы дистрибутивности

    Первый из законов дистрибутивности аналогичен закону дистрибутивности в алгебре чисел, если конъюнкцию считать умножением, а дизъюнкцию – сложением.

    Преобразования называются равносильными, если истинные значения исходной и полученной после преобразования логической функции совпадают при любых значениях входящих в них логических переменных.

    Для простоты записи приведем основные законы алгебры логики для двух логических переменных А и В. Эти законы распространяются и на другие логические переменные.

    1. Закон противоречия:

    2. Закон исключенного третьего:

    3. Закон двойного отрицания:

    4. Законы де Моргана:

    5.
    Законы повторения: A & A = A; A v A = A; В & В = В; В v В = В.

    6. Законы поглощения: A ? (A & B) = A; A & (A ? B) = A.

    7. Законы исключения констант: A ? 1 = 1; A ? 0 = A; A & 1 = A; A & 0 = 0; B ? 1 = 1; B ? 0 = B; B & 1 = B; B & 0 = 0.

    8.

    Закон де Моргана.

    —для дизъюнкции

    отрицание дизъюнкции логических переменных эквивалентно конъюнкции отрицаний этих переменных;

    —для конъюнкции

    отрицание конъюнкции переменных эквивалентно дизъюнкции отрицаний этих переменных.

    Справедливость законов отрицания (де Моргана) докажем с помощью таблиц истинности.

    Таблица. Закон отрицания (де Моргана) для дизъюнкции

    Таблица.Закон отрицания (де Моргана)дляконъюнкции

    Таблицы 1.5; 1.6 показывают, что на одинаковых наборах переменных значения функций совпадает. Законы де Моргана доказаны.

    5.

    Не пространство, не время, которые мы не можем заполнить, возвышает нас, а именно она, наша мысль. Будем же учиться хорошо мыслить”.

    Французский математик и философ XVII века Блез Паскаль.

    Завершаем тему “Основы логики”, сегодня вспомним основные логические операции, законы логики и правила преобразования, применим их на практике.

    Логика – наука о формах и способах мышления.

    1 часть урока: актуализация опорных знаний.

    Вспоминаем элементы алгебры логики.

    На экране высвечиваются вопросы, после ответов учеников правильные ответы:

    1. Перечислите логические операции в порядке старшинства:

    2.
    Какие законы логики имеют аналоги в обычной алгебре?

    3. В чем смысл закона двойного отрицания?

    Двойное отрицание исключает отрицание.

    4.

    Наше начальное выражение: x `vv` (x & y) . Выносим x за скобки и получаем следующее выражение:

    x &(1 `vv` y) .

    Внимание

    Используем закон поглощения переменной константой `1` и получаем следующее выражение: x & 1. И теперь используем закон поглощения константы и получаем просто x .

    В заключение, следует сказать несколько слов об операции импликации. Как уже отмечалось выше, импликация не обладает свойством коммутативности.
    Её операнды неравноправны, поэтому каждый из них имеет уникальное название.

    Переместительный закон (аналогично обычной алгебре):

    —для дизъюнкции

    —для конъюнкции

    От перемены мест логических слагаемых (сомножителей) их логическая сумма (логическое произведение) не меняется.

    2. Сочетательный закон (аналогично обычной алгебре):

    —для дизъюнкции

    —для конъюнкции

    Можно различным образом группировать логические переменные при выполнении операции конъюнкции (дизъюнкции) при этом значение булевой переключательной функции не изменяется.

    3. Распределительный закон

    Распределительный закон здесь также справедлив, как и в обычной алгебре.
    Специфика его в булевой алгебре проявляется в некоторых частных случаях.

    Логика»)

    исходное выражение истинно только тогда, когда и , то есть только при . (в таблице истинности одна единица, остальные – нули)

    выражение истинно, если хотя бы одна из переменных равна нулю, то есть, оно будет ложно только при (в таблице истинности один нуль, остальные – единицы)

    аналогично выражение ложно только при , а в остальных случаях – истинно

    выражение истинно только при , а в остальных случаях – ложно

    выражение истинно только при , а в остальных случаях – ложно

    объединяя все эти результаты в таблицу, получаем:

    Основные законы алгебры логики и правила преобразования логических выражений

    В алгебре логики имеются законы, которые записываются в виде соотношений. Логические законы позволяют производить равносильные (эквивалентные) преобразования логических выражений.

    Законы повторения

    — для дизъюнкции.

    —для конъюнкции

    Многократное логическое сложение (логическое умножение) одной переменной равно самой этой переменной.

    Законы повторения булевой алгебры существенно отличаются от законов повторения обычной алгебры.

    6. Закон двойного отрицания

    Двойное отрицание логической переменной равно самой логической перемененной.

    7. Соотношения с нулем и единицей

    8. Закон склеивания:

    Докажем законы склеивания эквивалентными преобразованиями

    9.

    Законы поглощения

    Доказательства законов поглощения

    10.

    Правило поглощения

    Правило поглощения для суммы двух элементарных произведений следует из распределительного закона первого рода и законов универсального множества: дизъюнкцию двух элементарных конъюнкций, из которых одна является составной частью другой, можно заменить конъюнкцией, имеющейменьшее количество операндов.

    Правило поглощения для произведения элементарных сумм следует из распределительного закона второго рода и законов нулевого множества: конъюнкцию двух элементарных дизъюнкций, из которых одна является составной частью другой, можно заменить элементарной дизъюнкцией, имеющей меньшее количество операндов.

    Правило развертывания

    Это правило определяет действие обратное склеиванию.

    Правило развертывания элементарного произведения в логическую сумму элементарных произведений большего ранга (в пределе до r = n, т.е.

    Скучно? Нет! – на самом деле очень красиво…. То же самое, кстати, относится к высшей алгебре и некоторым другим предметам.

    …но что бы вы прочитали эти строки, я всё-таки преподнёс материал, скорее в «школьном» стиле – с многочисленными содержательными примерами!

    Желаю успехов!

    Решения и ответы:

    Задание 1 Решение: составим таблицу истинности для формулы : (подробные инструкции по заполнению таблицы находятся после условия задачи) Полученный результат совпадает с эквиваленцией высказываний и , таким образом:

    Задание 2 Решение: доказательства проведём с помощью таблиц истинности:

    а) Дважды записываем все варианты истины и лжи высказывания и применяем к столбцам операцию ИЛИ: Результат совпадает с .

    Москва и МО С-Петербург и ЛО Бесплатный звонок по России

    Источник: https://sdaypdd.ru/zakon-de-morgana-dlya-4-peremennyh

    Элемент ИЛИ. Логическое сложение

    Закон де моргана для 4 переменных

    < Предыдущая СОДЕРЖАНИЕ Следующая >

    Перейти к загрузке файла

    Элемент ИЛИ реализует функцию логического сложения или дизъюнкции.Логическое сложение двух операндов x1 и x2, записывается следующим образом: ,Условное графическое обозначение элемента И (рис. 6):Рис.6 Условное графическое обозначение элемента ИЛИМатематическое описание в форме таблице истинности элемента ИЛИ:Таблица 3 — ТИ элемента ИЛИ

    X1X2y=
    000
    101
    011
    111

    Словесно описание работы элемента ИЛИ выглядит следующим образом: на выходе будет присутствовать логическая единица тогда, и только тогда, когда хотя бы на одном входе есть логическая единица. Проиллюстрируем работу элемента ИЛИ следующими рисунками

    Рис. 7 а, б, в, г. Иллюстрация работы элемента ИЛИ. Низкий уровень напряжения будет только в том случаи, когда на обоих входах присутствует низкий уровень напряжения а).

    Описанные выше три логические элемента НЕ, И, ИЛИ являются основными и функционально достаточными элементами булевой алгебры.

    В системе булевой алгебры (далее булева алгебра) применяются три операции — конъюнкция, дизъюнкция, и отрицание. Эти операции выполняют цифровые элементы описанные выше И, ИЛИ, НЕ соответственно. Также выделяются две константы — 0 и 1. Для того чтобы производить преобразования над логическими выражениями, булева алгебра предоставляет ряд законов, аксиом и свойств.

    Здесь не будут приводиться все аксиомы, свойства и законы булевой алгебры. Ограничимся рассмотрением трех законов — законов де Моргана и закона двойного отрицания. Свойства булевой алгебры, которые необходимо будет применить в следующих параграфах, будут оговариваться отдельно.

    Законы де Моргана включают в себя два закона, которые связывают логические операции при помощи инверсии. Запишем их для двух операндов:

    Т.е. при “разрыве” отрицания над логическим выражением меняется операция конъюнкция на дизъюнкцию (в первом законе) или дизъюнкции на конъюнкцию (во втором законе). Заметим, что отрицание, стоящее в правой части над всем выражением, исчезает в левой части, но остается в над каждым операндом по отдельности.

    Следует сделать ещё один вывод: операцию И можно реализовать с помощью элементов ИЛИ, и наоборот, операцию ИЛИ можно реализовать с помощью элементов И (что даёт создать полный базис, и значит реализовать любую логическую функцию, из операций И-НЕ или ИЛИ-НЕ, не используя систему из всех трёх основных операций И-ИЛИ-НЕ).

    Далее, говоря о применении закона де Моргана имеется в виду применение того закона из двух, которое ближе по смыслу.

    Для примера преобразуем с помощью законов де Моргана следующие выражения:

    1.

    2.

    Закон двойного отрицания или закон снятия двойного отрицания гласит: если неверно, что неверно утверждение x, то утверждение x верно. Или .

    Отметим, что если два раза проинвертировать некое выражение, например , то его верность не изменится .

    Пример:

    1. Преобразуем конъюнкцию операндов в дизъюнкцию:

    Проинвертирует выражение два раза (смысл выражение не изменится):

    Применим закон де Моргана:

    2. Преобразуем конъюнкцию операндов в дизъюнкцию:

    3. Преобразуем дизъюнкцию операндов в конъюнкцию:

    Таким образом, применяя описанные выше законы, можно проводить преобразования в логических выражениях.

    < Предыдущая СОДЕРЖАНИЕ Следующая >

    Перейти к загрузке файла

    Элемент И-НЕ или штрих Шеффера реализует функцию конъюнкцию (логическое умножение, И) с инверсией (логическое отрицание, НЕ).Штрих Шеффера двух операндов x1 и x2 записывается в виде . Соответственно исходя из своего определения .Условное графическое обозначения элемента Шеффера выглядит также как и у элемента И с добавлением знака инверсии на выходе элемента (рис. 8).Рис. 8. УГО элемента 2И-НЕ (штрих Шеффера) Запись вида 2И-НЕ означает, что у выбранного элемента И-НЕ имеется лишь два входа, далее по тексту будит применяться именно такой элемент. Важно отметить, что количество входов может быть больше двух, но для единообразия мы остановимся на двухвходовом элементе.Математическое описание элемента 2И-НЕ в форме таблицы истинности будет представлять собой описание элемента И с инверсией уровня на выходе (табл. 4).Таблица 4 — ТИ элемента 2И-НЕ

    X1X2Y =
    001
    101
    011
    110

    Соответственно таблицы истинности на выходе элемента 2И-НЕ будет присутствовать логический ноль тогда и только тогда, когда на обоих входах будут присутствовать логические единицы (рис. 9 а, б, в, г).

    Рис. 9 а, б, в, г. Иллюстрация работы элемента 2И-НЕ

    Как отмечалось в начале главы на элементе И-НЕ возможно построение любого из трёх элементов И, ИЛИ, НЕ, что даёт возможность синтезировать цифровое устройство используя в качестве базового элемента элемент И-НЕ.

    Для того чтобы убедится в вышесказанном, покажем функциональную полноту элемента И-НЕ.

    Реализация элемента НЕ с помощью элемента И-НЕ

    Подадим на оба входа одного элемента И-НЕ какое либо значение x (рис. 10 а.).

    Согласно логике работы элемента И-НЕ на выходе появится выходной сигнал y, являющийся логическим умножением с инверсией двух операндов xx:

    Преобразуем согласно закону де Моргана:

    Согласно одной из аксиом алгебры логики (аксиома идемпотентности), повторное действие над объектом не изменяет его , применим его:

    Таким образом, возможно используя элемент И-НЕ получить элемент выполняющие функцию инверсии (НЕ).

    Рис. 10 а, б. Элемент НЕ, реализованный на элементе И-НЕ

    Важно отметить, что у некоторых реальных логических элементов И-НЕ присутствует на входах технические единицы, что даёт возможность инвертировать сигнал, подавая его на любой один из входов. Это можно увидеть, если посмотреть на две последних строки ТИ для элемента И-НЕ (табл. 5). Таким образом реализуется свойство констант.

    В дальнейшем для инверсии будит использоваться обозначение, указанное на рис. 10 б. Хотя технически более правильно использовать обозначение, указанное на рис. 10 а.

    Таблица 5 — ТИ элемента 2И-НЕ

    X1X2Y =
    001
    101
    011
    110

    Page 3

    < Предыдущая СОДЕРЖАНИЕ Следующая >

    Перейти к загрузке файла

    Элемент ИЛИ-НЕ или стрелка Пирса реализует функцию дизъюнкции (логического сложения, ИЛИ) с инверсией (логическим отрицанием, НЕ).Стрелка Пирса двух операндов x1 и x2 записывается в виде . Для двух операндов можно записать .Условное графическое обозначения элемента Шеффера выглядит также как и у элемента ИЛИ с добавлением знака инверсии на выходе элемента (рис. 13).Рис. 13. УГО элемента 2ИЛИ-НЕСоставим математическое описание элемента 2ИЛИ-НЕ в форме таблицы истины (табл. 6)Таблица 6 — ТИ элемента 2ИЛИ-НЕ

    X1X2Y=
    001
    100
    010
    110

    Анализируя таблицу истинности, на выходе элемента 2ИЛИ-НЕ будет присутствовать логическая единица тогда в том случаи, когда на обоих входах будут присутствовать логические нули (рис. 14 а, б, в, г).

    Рис. 14. Логика работы элемента 2ИЛИ-НЕ

    Покажем функциональную полноту логического элемента ИЛИ-НЕ.

    Реализация элемента НЕ с помощью элемента ИЛИ-НЕ

    Подадим на оба входа одного элемента ИЛИ-НЕ какое либо значение x (рис. 15 а.).

    Согласно логике работы элемента ИЛИ-НЕ на выходе появится выходной сигнал y, являющийся логическим сложением с инверсией двух операндов xx:

    Преобразуем согласно закону де Моргана:

    Согласно одной из аксиом алгебры логики (аксиома идемпотентности), повторное действие над объектом не изменяет его , применим его:

    Таким образом, возможно используя элемент И-НЕ получить элемент выполняющие функцию инверсии (НЕ).

    Рис. 15 а, б. Элемент НЕ, реализованный на элементе И-НЕ

    Как в случаи элемента штрих Шеффера чтобы получить инверсию необязательно подавать исходный операнд на все входы элемента ИЛИ-НЕ, достаточно подать входной логический сигнал лишь на один из входов (рис. 15 б.). На остальных не задействованных входах будет присутствовать логическая константа ноль, в правильности можно убедится посмотрев таблицу 7.

    Таблица 7 — ТИ элемента 2ИЛИ-НЕ

    X1X2Y
    001
    100
    010
    110

    Источник: https://studwood.ru/1624790/tehnika/element_logicheskoe_slozhenie

    Логические формулы де Моргана

    Закон де моргана для 4 переменных

    Логика – это наука о разуме, известная с самых древнейших времен. Ей пользуются все люди независимо от места рождения, когда они размышляют и делают выводы относительно чего-либо.

    Логическое мышление является одним из тех немногочисленных факторов, которые отличают человека от животного. Но просто делать выводы недостаточно. Иногда необходимо знать определенные правила.

    Формула де Моргана является одним из таких законов.

    Краткая историческая справка

    Огастес, или же Август де Морган жил в середине XIX века в Шотландии. Он был первым президентом Лондонского математического общества, но прославился в основном благодаря своим работам в сфере логики.

    Ему принадлежит множество научных трудов. Среди них работы по теме пропозиционной логики и логики классов. А также, разумеется, формулирование всемирно известной формулы де Моргана, названной в его честь. В дополнение ко всему этому Август де Морган написал множество статей и книг, в том числе «Логика – это ничто», которую, к сожалению, так и не перевели на русский язык.

    Суть логической науки

    В самом начале необходимо разобраться в том, как построены и на чем основаны логические формулы. Лишь потом можно переходить к изучению одного из самых известных постулатов. В наиболее простых формулах существует две переменные, а между ними ряд знаков.

    В отличие от того, что знакомо и привычно для среднестатистического человека по математическим и физическим задачам, в логике переменные чаще всего имеют буквенное, а не численное обозначение и представляют собой какое-либо событие.

    Например, переменная «a» может означать «завтра грянет гром» или «девушка говорит неправду», а под переменной «b» будут иметь в виду, что «завтра будет солнечно» или «парень говорит правду».

    В пример можно привести одну из самых простых логических формул. Переменная «a» означает то, что «девушка говорит неправду», а под переменной «b» имеется в виду, что «парень говорит правду».

    А вот и сама формула: a = b. Она означает, что тот факт, что девушка говорит неправду равносилен тому, что парень говорит правду. Можно сказать, что она говорит неправду только в том случае, если он говорит правду.

    Суть формул де Моргана

    На самом деле все довольно очевидно. Формула закона де Моргана записывается вот так:

    Не (а и b) = (не а) или (не b)

    Если переводить эту формулу на слова, то отсутствие и «a», и «b» означает либо отсутствие «a», либо отсутствие «b». Если говорить на более простом языке, то если нет и «a», и «b», значит нет «a» или нет «b».

    Вторая формула выглядит уже несколько по-другому, хотя суть в общих чертах остается такой же.

    (Не а) или (не b) = Не (а и b)

    Отрицание конъюнкции равно дизъюнкции отрицаний.

    Конъюнкция – это операция, которую в сфере логики связывают с союзом «и».

    Дизъюнкция – это операция, которую в сфере логики связывают с союзом «или». Например, «или одно, или второе, или оба сразу».

    Простейшие примеры из жизни

    В качестве примера можно привести вот какую ситуацию: нельзя сказать, что изучение математики и бессмысленно, и глупо только в том случае, если изучение математики не является бессмысленным или оно не является глупым.

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

    Нельзя сказать, что учащийся знаком с физикой и химией в том случае, если он не знает физики или не знает химии.

    Нельзя заявить, что мужчина говорит правду и женщина говорит ложь только в том случае, если мужчина не говорит правду или если женщина не говорит ложь.

    Зачем было искать доказательства и формулировать законы?

    Формула де Моргана в логике открыла новую эпоху. Стали возможны новые варианты вычисления логических задач.

    Без формулы де Моргана уже стало невозможно обойтись в таких областях науки, как физика или химия. Существует также вид техники, специализирующийся на работе с электричеством.

    Там также в некоторых случаях ученые используют законы де Моргана. И в информатике формулы де Моргана успели сыграть свою немаловажную роль.

    Область математики, которая отвечает за взаимосвязь с логическими науками и постулатами, также практически полностью основывается на этих законах.

    И напоследок

    Без логики невозможно представить себе человеческое общество. На ней основывается большинство современных технических наук. А формулы де Моргана неоспоримо являются неотъемлемой частью логики.

    Источник: https://News4Auto.ru/logicheskie-formyly-de-morgana/

    Поделиться:
    Нет комментариев

      Добавить комментарий

      Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.