malikpiara / logicola

LogiCola helps you learn logic. This is a web version of the original software built by the late Professor Harry Gensler.
https://logicola.org
MIT License
43 stars 1 forks source link

2 identical answers #49

Open mnba opened 1 month ago

mnba commented 1 month ago

Set C Propositional Logic
Question 4/10 – it has 2 identical correct answers to question, one normal and one is the same but with one extra pair of parentheses outside of propositional expressio. they look like "~ ... V N" and "(~ ... V N)". Here ellipsis is for Propositional variable whose name I don't remember.

mnba commented 1 month ago

More details on this: Lines 300-308 in logicola/contentOld.tsx https://github.com/malikpiara/logicola/blob/47cce3f32a574f23ce3630ef0834b3f2999a1cc2/contentOld.tsx#L300-L308

        id: '6.25',
        prompt: 'Either not C or N',
        options: [
          { id: 0, label: '$ \\sim C \\vee N $' },
          { id: 1, label: '$ \\sim(C \\vee N) $' },
          { id: 2, label: '$ (\\sim C \\vee \\sim N) $' },
          { id: 3, label: '$ (\\sim C \\vee N) $' },
        ],
        correctId: [3],

Here options id=0 and id=3 are identical (lines 303 and 306), while as correct answer accepted only one with parentheses.

malikpiara commented 1 month ago

I believe this is the same issue raised in #46 by @cwgreene

Someone else mentioned it in hacker news, along with the explanation: https://news.ycombinator.com/item?id=40319634

Found some information on the actual notation for the book. The extra () fit the notation of the system from Gensler's book apparently. There doesn't appear to be a precedence order for the connectives, except that unary not (~) doesn't need the parens, ~P and P can both standalone. The language he uses requires the extra parentheses whenever using any of v, ^, ->, or == (and, or, implication, equivalence/iff). This is probably a reasonable thing in context because it means the expressions can be cleanly combined as written and probably avoids confusion for students. They don't have to learn a precedence order.

So if a student ever arrives at these pair of statements:

(P v Q) R And they use and introduction they'll get: ((P v Q) ^ R) No ambiguity, just combine the two as written and wrap in parens. So I'll retract my previous feedback.

I understand this can be confusing and misleading. Especially without the original context.

How would you go about addressing this? I'm open to suggestions!

mnba commented 1 month ago

this can be confusing and misleading. Especially without the original context.

Exactly, it is confusing and misleading. I as a follower of a different school in Logic, probably one may call it the school of Mendelson, because of our lecturers took their notation from that textbook "Introduction to Mathematical Logic" by Elliott Mendelson, and as far as I remember it, there is no such "parehtheses complication" there. Meanwhile I believe this webapp can be useful for followers and students of all logic schools, since language of mathematics is universal. One need just not complicate the things in very special way, requiring some special notations. But achieve consistency (in notation) and keep it. I recall logic textbooks from mid-20th century tend to invent each their own special extensions of universal notation -- to service niche and complicated topics. And this is a very simple topic compared to those.

How would you go about addressing this? I'm open to suggestions!

Since you are inviting, I will suggest.

In any case it is worth to keep only one thing instead of two identical options within the all options of the answer. And I believe this point is absolutely must. It will eliminate most part of student confusion.

So based on that, we here have 2 options to choose from: keep the version without parentheses or keep the version with parentheses.

The reason backing the necessity of parentheses, as I see it, reading the text of comment you provided is: "once the student wants to combine this existing expression into some other bigger expression in future, she surpassingly could get confused because of possible change in operator priorities".

I believe the student should know operator precedence in any case and use of parenthesys anyway, and if not he/she should learn that in first place. Maybe learn that within this same app, maybe in other place.

But in these short expressions of quiz answers it does not arise the need to combine expressions into the bigger ones. It is not said anywhere explicitly that we need afterwards insert them into something other. It is expected implicitly. I would choose to keep the simpler expression, i.e. without parentheses.

"Explicit is better than implicit. Simple is better than complex." says The Zen of Python

Here arises next question. We had 4 options and after eliminating the identical copy it remains only 3 options. Should we add new item instead of dropped item, or just keep the remaining 3 and that's it?

I think both options are viable. One may erase the duplicates at first. And later insert the absent options to complement their count to 4 items. For task of inventing the new options some ChatGPT-type can be handy for use :)

malikpiara commented 1 month ago

@mnba I read your answer and I'm taking time to think it through before I come back here to reply properly. Thank you again for investing your energy and mental space here!

rabuf commented 1 month ago

Logicola itself reminds the learner what constitutes a well-formed formula for the question if they get it wrong. That'd be a good place to start with addressing this. Instead of just marking the answer as incorrect (red), display hint text similar to Logicola including the definition of a wff for propositional logic.

malikpiara commented 4 weeks ago

@rabuf @mnba It took me a while but here's my suggestion to address part of the issue: #66

mnba commented 3 weeks ago

here's my suggestion to address part of the issue: #66

Well, any solution is better than absence of it at all. Go forward and show us some solution. It is not so good to leave the users confused and let them go away just because of small incompleteness