Я разрабатываю доказательство теории групп. Сейчас меня интересует доказательство того, что если H и K — подгруппы, то H пересекает K — подгруппу. Я основываю свое доказательство на построении отношения (==H) такого, что
h (==H) g тогда и только тогда, когда hg^{-1} принадлежит H. Доказательство того, что это отношение эквивалентности (рефлексивное, симметричное, транзитивное), эквивалентно доказательству того, что H является подгруппой.
Я сделал следующий код, и когда я пытаюсь доказать, что H пересекает K, это подгруппа, я терплю неудачу. Я новичок в Прологе, поэтому, возможно, я ошибаюсь в чем-то основном. В математическом доказательстве не требуется указывать явный вид отношения эквивалентности, поэтому я его опустил.
В программе я обозначаю hg и kg как H и K. H пересекает K и равен hkg.
inside(X,H) :- equals(H,X,e).
equals(hkg,e,e).
equals(hkg,x,e).
equals(hkg,y,e).
equals(hkg,z,e).
equals(hkg,X,Y) :- equals(hg,X,Y),equals(kg,X,Y).
reflexive(H) :- forall(inside(X,H),equals(H,X,X)).
symmetric(H) :- forall(equals(H,X,Y),equals(H,Y,X)).
transitive(H) :- forall(equals(H,X,Y),equals(H,Y,Z),equals(H,X,Z)).
subgroup(H) :- reflexive(H),symmetric(H),transitive(H).
subgroup(hg).
subgroup(kg).
На данный момент он не проходит тест на рефлексивность (первый тест). Не могли бы вы показать мне, что не так с этой программой? Если вам нужны дополнительные разъяснения, не стесняйтесь спрашивать.
... :- equals(hg,X,Y),equals(kg,X,Y).
обречены на неудачу, поскольку не существует факта, «помеченного»hg
илиkg
. Я недостаточно понимаю ваши обозначения, чтобы предложить лучший подход, извините. - person CapelliC   schedule 06.04.2020