Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Неправильное определение группы для Bool #97

Open
anton-k opened this issue Mar 19, 2020 · 2 comments
Open

Comments

@anton-k
Copy link
Owner

anton-k commented Mar 19, 2020

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

instance Group Bool where
e = True
(+) a b = and a b
inv a = not a

На самом деле приведённое выше определение экземпляра для Group не верно, хотя по типам оно подходит. Оно не верно как раз из-за нарушения свойств. Для группы необходимо, чтобы для любого a выполнялось:
inv a + a == e - почему необходимо, чтобы выполнялось это условие?

С наилучшими пожеланиями

через email

@ulysses4ever
Copy link

a + a == e

На самом деле, a + inv a = e, но это тоже не выполняется. Если в определении + заменить and на or, то вроде нормально. Другой вариант: заменить определение e на False. Вроде тоже можно.

@nponeccop
Copy link

Для группы необходимо, чтобы для любого a выполнялось:
inv a + a == e - почему необходимо, чтобы выполнялось это условие?

По определению группы, 3й пункт на скриншоте:

https://en.wikipedia.org/wiki/Group_(mathematics)

image

Но конечно не выполняется - для False нет обратного. False не обратный потому что False && False == False != True; True не обратный для False потому что True && False != True

Так что там только моноид.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants