SYLCAT.BA by Paul Globman
Copyright (c) 1990
A categorical syllogism consists of three sentences, two of which are premises,
and the third being the conclusion inferred by the premises.
All sentences in the syllogism must be of form A,E,I, or O type sentences.
A:all S is P E:no S is P
I:some S is P O:some S is not P
You must first provide two premises. If the premises are properly formed then
you will be prompted for a conclusion. If the conclusion is valid (based upon
the premises), the program will confirm the validity.
OPERATION
---------
The prompt for a premise is... P->
A premise is a simple sentence in the form shown above.
is .
If the sentence is not in that form, you will hear a BEEP and be prompted
again. If the sentence does not begin with the word "all", "some", or "no"
then the word "all" will be assumed and inserted. So the sentence...
"whales are mammals" will become "all whales are mammals".
If the predicate noun phrase begins with the word "not", the quantifier will be
modified when possible. For example...
"men are not gods" will become "no men are gods"
"no whales are not mammals" will become "all whales are mammals"
"some mammals are not whales" will remain "some mammals are not whales"
After entering two premises, they are analyzed and if they are found to lack
the qualities that will lead to a conclusion, then a BEEP will sound and an
appropriate error message is displayed.
Such errors might be ...
A) two negative premises...
No students are wage earners
Some wage earners are not voters
B) lack of a "middle term"...
All wild horses are free spirits
Some spirits are not tangible objects
(spirits <> free spirits)
C) failure to distribute the "middle term"....
All bananas are yellow fruit
Some yellow fruit are poisonous fruit
CONCLUSION
----------
If the two premises are acceptable then you are prompted for a conclusion...
C->
The conclusion is examined, converted in form (if necessary), and checked for
validity. Some errors may be...
D) negative conclusion required or unsupported.
E) a "term" is distributed in the conclusion without having been distributed in
the premise.
F) a "term" in conclusion was not referenced in premise.
If there are no errors in logic, and the conclusion is valid, then the program
announces "Valid conclusion!"
LOGIC
-----
I did not use any of the esoteric logic operatives that BASIC makes available.
The testing is done thru brute force by looking at all possibilities.
SUGGESTIONS
-----------
Language can often be quite cumbersome so I recommend the use of mnemonics for
noun phrases.
"All bananas are yellow fruit" can be entered as "All B are YF"
The program allows upper or lower case input, but it is converted to lower case
for evaluation. The verb "is" can be used instead of "are".
COMMENTS
--------
This program was written to simulate the results offered by Venn diagrams. The
syllogism to be considered must be in the form of a "categorical" syllogism.
The "hypothetical" syllogism is not considered. This instruction file is not
a logic course replacement and discussion of "middle term", "subject term",
"predicate term", "quantifiers", and "distribution" is left to reference books
on the topic of LOGIC.
1 REM SYLCAT.BA by Paul Globman
2 REM Copyright (c) 1990
5 CLEAR 512
6 PRINT "-----------------------------"
10 GOSUB 500:GOSUB 600:X1$=X$
15 Q1$=Q$:S1$=S$:C1$=C$:P1$=P$:T1=T
20 GOSUB 500:GOSUB 600:X2$=X$
25 Q2$=Q$:S2$=S$:C2$=C$:P2$=P$:T2=T
30 PRINT:PRINT "P->"X1$:PRINT "P->"X2$
35 GOSUB 100:GOSUB 200
40 GOSUB 510:GOSUB 600:X3$=X$:PRINT
45 Q3$=Q$:S3$=S$:C3$=C$:P3$=P$:T3=T
50 GOSUB 450:GOSUB 300:GOSUB 400
99 PRINT"Valid conclusion!":RUN
100 REM ----------- middle term test
105 IF (S1$=S2$) AND (P1$<>P2$) THEN 135
110 IF (S1$=P2$) AND (P1$<>S2$) THEN 140
115 IF (P1$=S2$) AND (S1$<>P2$) THEN 145
120 IF (P1$=P2$) AND (S1$<>S2$) THEN 150
125 PRINT "no valid middle term"
130 GOTO 480
135 IF T1<3 OR T2<3 THEN RETURN ELSE 155
140 IF T1<3 OR T2 MOD 2=0 THEN RETURN ELSE 155
145 IF T1 MOD 2=0 OR T2<3 THEN RETURN ELSE 155
150 IF T1 MOD 2=0 OR T2 MOD 2=0 THEN RETURN
155 PRINT "middle term not distributed
160 GOTO 480
200 REM --------- double negative test
210 IF T1 MOD 2=1 THEN RETURN
220 IF T2 MOD 2=1 THEN RETURN
230 PRINT "two negative premises"
240 GOTO 480
300 REM ----- negative conclusion test
310 IF (T1+T2+T3) MOD 2=1 THEN RETURN
320 PRINT:PRINT "negative conclusion ";
330 IF (T1+T2) MOD 2=0 THEN 350
340 PRINT "required":GOTO 360
350 PRINT "unsupported"
360 GOTO 480
400 REM ------------ distribution test
405 IF T3=3 THEN RETURN
410 IF T3=1 THEN 425
412 IF T3=2 THEN GOSUB 415:GOTO 425
415 IF P3$=S1$ AND T1<3 THEN RETURN
417 IF P3$=S2$ AND T2<3 THEN RETURN
420 IF P3$=P1$ AND T1 MOD 2=0 THEN RETURN
422 IF P3$=P2$ AND T2 MOD 2=0 THEN RETURN
423 GOTO 445
425 IF S3$=S1$ AND T1<3 THEN RETURN
427 IF S3$=S2$ AND T2<3 THEN RETURN
430 IF S3$=P1$ AND T1 MOD 2=0 THEN RETURN
432 IF S3$=P2$ AND T2 MOD 2=0 THEN RETURN
445 PRINT "no prior distribution"
446 GOTO 480
450 REM ----------- verify final terms
455 IF (S3$<>S1$) AND (S3$<>P1$) AND (S3$<>S2$) AND (S3$<>P2$) THEN 470
460 IF (P3$<>S1$) AND (P3$<>P1$) AND (P3$<>S2$) AND (P3$<>P2$) THEN 470
465 RETURN
470 PRINT "term in conclusion was not"
475 PRINT " referenced in premise"
480 BEEP:RUN
500 REM --------------- get input
505 LINE INPUT "P->";X$:RETURN
510 LINE INPUT "C->";X$:RETURN
515 LINE INPUT "-->";X$:RETURN
600 REM -------- Parse the sentence X$
605 X=INSTR(1,X$," ")
607 GOSUB 800
610 Q$=LEFT$(X$,X):IF Q$="all " THEN 625
615 IF Q$="some " OR Q$="no " THEN 625
620 X$="all "+X$:GOTO 605
625 X$=RIGHT$(X$,LEN(X$)-LEN(Q$))
630 C$=" is ":X=INSTR(1,X$,C$)
635 IF X>0 THEN 650
640 C$=" are ":X=INSTR(1,X$,C$)
645 IF X=0 THEN BEEP:GOSUB 515:GOTO 600
650 S$=LEFT$(X$,X-1)
655 P$=RIGHT$(X$,LEN(X$)-LEN(S$+C$))
660 IF LEFT$(P$,4)<>"not " THEN 685
665 P$=RIGHT$(P$,LEN(P$)-4)
670 IF Q$="all " THEN Q$="no ":GOTO 685
675 IF Q$="no " THEN Q$="all ":GOTO 685
680 C$=C$+"not "
685 X$=Q$+S$+C$+P$
690 IF Q$="all " THEN T=1:RETURN
695 IF Q$="no " THEN T=2:RETURN
700 IF LEN(C$)>5 THEN T=4:RETURN
705 T=3:RETURN
800 REM ------------ U/L CASE SENSITIVE
805 FOR I = 1 TO LEN(X$)
810 L$=MID$(X$,I,1)
820 IF L$=" " OR L$=>"a" THEN 840
830 L$=CHR$(32+ASC(L$)):MID$(X$,I)=L$
840 NEXT:RETURN