Как заменить импликацию в программе

Нет, в C# нет встроенного оператора импликации. Его можно реализовать с помощью стандартных операторов:
Импликация: !a || b ,
Обратная импликация: a || !b .
Дополнительно: операторы C# на msdn.

Отслеживать
ответ дан 22 авг 2019 в 7:27
744 4 4 серебряных знака 18 18 бронзовых знаков

  • c#
  • логика
  • информатика
  • логические-выражения
    Важное на Мете

Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник: ru.stackoverflow.com

Импликация (логическое следование) и Эквиваленция. [Алгебра логики] #3

Есть ли логический оператор импликации в python?

TTL согласен — но это не обязательно так легко увидеть в коде, хотя и проще, чем оригинал. Функция, т. implies(x, y) может помочь в передаче идеи больше, если такая конструкция встречается достаточно часто, чтобы оправдать имя.

user2246674 06 май 2013, в 19:39
Gareth Latty 06 май 2013, в 19:42
en.wikipedia.org/wiki/Material_nonimplication также эквивалентен p and not(q)
Sylvain 15 янв. 2019, в 10:36
Показать ещё 2 комментария

В вашем вопросе спрашивается, существует ли для Python один логический оператор, простой ответ — нет: Документы перечисляют логические операции, и Python просто не имеет ничего подобного.

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

Gareth Latty 06 май 2013, в 19:54
Поделиться
Пожалуйста, посмотрите на этот ответ. Похоже, не все можно найти в документах .
running.t 18 нояб. 2015, в 10:11
Gareth Latty 22 нояб.

Читайте также:
Как увеличить шрифт на компьютере с помощью клавиатуры в программе

2015, в 14:03

Просто потому, что это смешно: x = > y может быть bool(x)
Adam Sosnowski 07 окт. 2015, в 16:11
Поделиться

И это (наконец-то) убедительное доказательство того, что True должно быть -1 а False должно быть 0 для логических значений! (Вместо текущего соглашения Python True == 1 ) Потому что тогда мы будем иметь x => y совпадающее с y
Mark Dickinson 07 окт. 2015, в 18:44

Существует оператор обратной импликации:

if y ** x: do_sth()

Это гласит: если y подразумевается x.

David Zaragoza 17 нояб. 2015, в 23:40
Поделиться
running.t 18 нояб. 2015, в 10:08
Gareth Latty 22 нояб.

2015, в 14:02

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

Замена операции импликации || Как избавиться от импликации


#!/usr/bin/python # From http://code.activestate.com/recipes/384122/ (via http://stackoverflow.com/questions/932328/python-defining-my-own-operators) class Infix: def __init__(self, function): self.function = function def __ror__(self, other): return Infix(lambda x, self=self, other=other: self.function(other, x)) def __rlshift__(self, other): return Infix(lambda x, self=self, other=other: self.function(other, x)) def __or__(self, other): return self.function(other) def __rshift__(self, other): return self.function(other) def __call__(self, value1, value2): return self.function(value1, value2) from itertools import product booleans = [False,True] # http://stackoverflow.com/questions/16405892/is-there-an-implication-logical-operator-in-python # http://jacob.jkrall.net/lost-operator/ operators=[ (Infix(lambda p,q: False), «F»), (Infix(lambda p,q: True), «T»), (Infix(lambda p,q: p and q), «), (Infix(lambda p,q: p or q) , «V»), (Infix(lambda p,q: p != q) , «^»), (Infix(lambda p,q: ((not p) or not q)), «nad»), (Infix(lambda p,q: ((not p) and not q)), «nor»), (Infix(lambda p,q: ((not p) or q)), «=>»), ] for op,sym in operators: print «nTruth tables for %s» % sym print «nptqtp %s qtq %s p» % (sym,sym) for p,q in product(booleans,repeat=2): print «%dt%dt%dt%d» % (p,q,p |op| q,q |op| p) print «nptqtrtp %s qtq %s rt(p %s q) %s rtp %s (q %s r)tp %s q %s r» % (sym,sym,sym,sym,sym,sym,sym,sym) for p,q,r in product(booleans,repeat=3): print «%dt%dt%dt%dt%dt%dtt%dtt%d» % (p,q,r,p |op| q,q |op| r, (p |op| q) |op| r, p |op| (q |op| r), p |op| q |op| r) assert( (p |op| q) |op| r == p |op| q |op| r)

Читайте также:
Программа изучения китайского языка самостоятельно

Источник: overcoder.net

Свойства. Импликация.

Свойства определяют отношение между логическими выражениями и последовательностями. Фактически, свойства описывают то, как будет проверяться выполнение последовательности или логического выражения:

  • синхронно или асинхронно;
  • не осуществлять проверку при наличии запрещающего сигнала (например, при активном сигнале сброса);
  • осуществлять проверку только по условию (импликация).

В коде программы свойства описываются ключевыми словами property, endproperty:

Импликация (Implication)

Импликация очень часто применяется при построении утверждений. Это некое подобие оператора if. То, что слева оператора импликации, это условие. В качестве условия может быть булево выражение или последовательность. Если условие принимает значение истина, то начинает проверяться условие справа от значка импликации.
В SystemVerilog используется два вида импликации:

Рис. 15. а) Свойство с использованием перекрывающейся импликации; б) Свойство с использованием неперекрывающейся импликации

Рис. 15. а) Свойство с использованием перекрывающейся импликации; б) Свойство с использованием неперекрывающейся импликации

Если сравнить диаграммы на рис. 5 и рис. 15, то можно сделать вывод, что операторы «|->» и «|=>» эквивалентны задержкам в ##0 и ##1 тактов соответственно, но это не совсем так. Если в свойствах на рис.

15 заменить оператор «|->» на «##0», а оператор «|=>» на «##1», то в каждом такте будет проверяться, чтобы «a» было истинным. В этом случае для диаграмм, изображенных на рис. 15, свойства 1 и 2 при проверке на 2-4 тактах будут выдавать ошибки. Здесь целесообразно использовать импликацию, т.к. нам не нужно в каждом такте проверять истинность условия «a», нас интересует, чтобы условие «b» следовало за условием «a» только если «a» возникнет (станет истинным).
Справа от оператора импликации может использоваться конструкция «if/else». Предположим, у схемы, изображенной на рис. 1, есть режим «MODE1», в котором сигнал CMD_ACCEPT должен приходить только на следующем такте после появления на шине CMD команды. Во всех остальных режимах сигнал CMD_ACCEPT должен появляться в течение последующих трех тактов. С помощью конструкции «if/else» можно используя одно свойство осуществлять проверку генерации CMD_ACCEPT в режиме «MODE1» и в остальных режимах:

Читайте также:
Одним из результатов федеральной программ старшее поколение является

Свойства, как и последовательности, можно объединять с помощью логических операторов and и or. Помимо этого, в свойствах можно использовать логический оператор отрицания not:

Это свойство на каждом такте проверяет, чтобы не выполнялась последовательность seq1.

Источник: systemverilog.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru