A, B, C... in the example you present seem to be sets,
not propositions. it's possible to reason
about these types of statements as well, but not as
propositional logic, as far as I can see.
comparing these statements semantically, which is what
you want here, would require a more complex logic,
but an easier way would perhaps be to rewrite
all statements to a form comparable through a plain text
comparison. I.e. by ignoring commutativity, this
statement
(A ⋃ B) ⋂ C
would be the same as this statement
C ⋂ (B ⋃ A)
even though this is not a perfect setup, since there might
be equivalent statements which are not recognized, the
process of figuring this out using logical equivalence would
be much harder. using rewriting logic does more or less
what you want with very little effort. basically all you
need is to specify which of the binary operators which are
commutative. a few equations which rewrite equivalent
statements are also added, you may have to add more...
i've written up something in Maude 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