A, B, C ... в представленном вами примере кажутся множествами ,
не предложения. можно рассуждать
об этих типах утверждений, но не как
насколько я вижу, логика высказываний.
семантически сравнивая эти утверждения, вот что
Вы хотите здесь, потребуется более сложная логика,
но более простой способ, возможно, будет переписать
все заявления в форме, сопоставимой через простой текст
сравнение. То есть игнорируя коммутативность, это
Заявление
(A ⋃ B) ⋂ C
будет таким же, как это утверждение
C ⋂ (B ⋃ A)
, хотя это не идеальная настройка, поскольку
быть эквивалентными заявлениями, которые не признаются,
Процесс выяснения этого с использованием логической эквивалентности будет
быть намного сложнее использование логики переписывания делает более или менее
что вы хотите с очень небольшим усилием. в основном все вы
необходимо указать, какие из бинарных операторов
коммутативной. несколько уравнений, которые переписывают эквивалент
Заявления также добавляются, возможно, вам придется добавить больше ...
я написал что-то на Мод http://maude.cs.uiuc.edu/
mod VennDiagram is
--- sorts
sort Set .
sort Statement .
subsort Set < Statement .
--- propositional formulas
op a : -> Set .
op b : -> Set .
op c : -> Set .
op d : -> Set .
op e : -> Set .
op f : -> Set .
op g : -> Set .
op h : -> Set .
op i : -> Set .
op j : -> Set .
--- and so on ....
--- connectives
op ¬_ : Statement -> Statement .
op _∁ : Statement -> Statement . --- complement
op _∨_ : Statement Statement -> Statement [ comm ] .
op _∧_ : Statement Statement -> Statement [ comm ] .
op _↔_ : Statement Statement -> Statement [ comm ] .
op _→_ : Statement Statement -> Statement .
op _⋂_ : Statement Statement -> Statement [ comm ] .
op _⋃_ : Statement Statement -> Statement [ comm ] .
op _←_ : Statement Statement -> Statement .
vars S1 S2 S3 S4 : Statement . --- variables
--- simplify statemens through equivalence
eq S1 → S2 = ¬ S1 ∨ S2 .
eq S1 ↔ S2 = (S1 → S2) ∧ (S2 → S1) .
eq ¬ ¬ S1 = S1 .
eq S1 ← S2 = S2 → S1 .
eq ¬ ( S1 ∧ S2 ) = (¬ S1) ∨ (¬ S2) .
--- possibly other equivalences as well..
endm
--- check equality
reduce a ↔ b == (b → a) ∧ (a → b) .
reduce ¬ a ↔ ( a ∨ b ) == ¬ a ↔ ( b ∨ a ) .
reduce (a ⋃ b) ⋂ c == c ⋂ (b ⋃ a) .
--- what you need to do is to compare the right answer
--- with a student answer through a simple comparison..
--- reduce StudentAnswer == RightAnswer