How Many Syllogisms are There?

Kazimir Majorinc
November 26th, 2013.

1. Introduction

A syllogism or logical appeal is a kind of logical argument, developed by Aristotle, in which one proposition (the conclusion) is inferred from two others (the premises) of a certain form. The simplest and the most popular syllogisms are categorical syllogisms, like this one:

Some cats have no tails. (premise)
All cats are mammals. (premise)
Some mammals have no tails.   (conclusion)

Both premises and conclusions of the syllogism are called propositions. There are four "types"of propositions:

All S are P(universal affirmative)
Some S are P(particular affirmative)
Some S aren't P    (particular negative)
No S are P (universal negative)

Some syllogisms are valid, like one with cats and mammals. That means, as long as form is preserved, no matter of terms used instead of cats, tails and mammals - if premises are true, then conclusion is also true. Not all syllogisms are valid. Discovering and describing all valid syllogisms is challenging logical problem and it seems it was the main activity of the logicians in period of more than two thousands years, until Göttlib Frege discovered predicate logic in late 19th century.

Surprisingly, it appears that there is no consensus about how many valid syllogisms exist. Some sources on Internet claim that there are 19 of them, others claim from 14 to 24. Newlisp program for construction and testing of syllogisms, i.e. discovering all valid syllogisms is described. The results of its work are given.  

2. The Program

The program might look like

(dolist (p1 all-possible-1st-premises)
  (dolist (p2 all-possible-2nd-premises)
    (dolist (c all-possible-conclusions)
      (check-validity-of-syllogism p1 p2 c))))

where all these parts are, unfortunately, nontrivial. Let us assume that we know how loops can be organized. How can program know that syllogism is valid? For instance, this is how schematically written silogism about cats and tails and mamals might look alike:

Some cats have no tails. (premise)      Some-arent M P
All cats are mammals. (premise) All-are M S
Some mammals have no tails.(conclusion) Some-arent S P

where M = cats, P = creatures with tails and S = mammals.

Humans easily understand that syllogism is valid. The algorithm that allows program to recognize the validity is simple but not trivial: it analyzes all possible worlds. If in all possible worlds, each time both premises of syllogism are true then conclusion is also true - we'll say that syllogism is valid. The phrase "all possible worlds" sounds scary; However, if irelevant details are omitted, it turns that there are not that many essentially different worlds.

More precisely, theworlds are completey determined with relations between terms S, M and P. In some possible worlds all cats have tails; in other possible worlds only some cats have tails, and others have not. In some worlds, no cats have tails at all. In some worlds, only cats and noone else have tails. In some worlds, cats are not only beings with tails. In some worlds all beings have tails, except cats.

For our purpose, two possible worlds differ if there is some combination of S or (not S), M and (not M), P and (not P), such that in one world there are the beings that satisfy particular combination, and in other world there are no such beings.

Every world can be depicted with Venn's diagram like a following one.

Venn
Fig. 1. Venn's diagram of one Aristotle's world

This particular diagram represents the world in which there are beings that satisfy S and (not M) and (not P), and there are the beings that satisfy (not S) and (not M) and P but there are no beings that satisfy any other combination of S or (not S), M and (not M), P and (not P).

We can start defining the list of all possible worlds. Let us note that all areas in the Venn's diagram are denoted with sublists of letters from list (S M P). We can even say that large area out of S, M and P is denoted - with empty list, where empty list is also sublist of (S M P). Let us first define the function sublist, that accept list as argument, and returns list of all sublists of taht list.

(set 'sublists
   (lambda(L)
     (if (= (length L) 0) '(())
         (let ((s (sublists (chop L))))
              (append s
                      (map (lambda(x)(append x (list (last L))))
                           s))))))

For those who use some other Lisps, last and chop in Newlisp are in the same relation as first and rest. Let us define the list Areas that contains all sublists of (S M P), i.e. (() (S) (M) (S M) (P) (S P) (M P) (S M P)).

(set 'Areas (sublists '(S M P)))

Each possible world is determined by existance of being  in these areas. For our purpose, two worlds are equivalent if and only if they have elements in exactly same areas. Hence, we can say that single world is completely determined by sublist of the areas, containing only areas with some elements in.

For instance, the world depicted with Venns diagram above is completely described with ((S) (P)). There are beings that satisfy the property S (but nothing else) and there are also beings that satisfy P, but nothing else. Let us define the list of all possible worlds:

(set 'Worlds (sublists Areas))

Total, there are 256 worlds. In the next step, the number of the considered worlds is reduced. In Aristotle's logic - just like in everyday speech, empty terms are ignored. If someone says that all yetis are tall - one will say that there are no yetis, and he'll avoid any direct answer "it is true" or "it is false." That's why, for example, in Aristotle's logic,

All S are P implies Some S are P.

In some areas of reasoning, particularly mathematics, it is not assumed that terms are non-empty. For instance, the world ((S)) is not Aristotle's world, because neither one area in the world ((S)) contains P or M. On the other side, (() (S M) (P)) is Aristotle's world.

(set 'Aristotles-worlds
     (filter (lambda(x)(= (length (unique (flat x))) 3))
             Worlds))

There are 218 elements in Aristotles-worlds. In the next step, the function true-in-world will be defined. When we say something like "there is only one truth", we can say it because we think on only one world - our phisical world. If we consider more than one world, or even all possible worlds, we must speak about truth in particular world.

The function true-in-world accepts proposition (defined with pair of quantifier and copula (like all-are, some-are etc.) two terms) and one world, and returns true if proposition is true in that world, and nil otherwise.

For instance, we want that (true-in-world all-are 'S 'P '((S P) (P))) returns true, because for each "area" in ((S P) (P)) if S is in area, then P is in area as well.

(set 'true-in-world
   (lambda(qc term1 term2 w) ; qc = quantifier and copula
      (not
         (not
            (case qc
                  (all-are
                     (for-all (lambda (area)
                                      (if (find term1 area)
                                          (find term2 area)
                                          true))
                              w))
                  (some-are
                     (exists (lambda (area)
                                     (and (find term1 area)
                                          (find term2 area)))
                             w))
                  (some-arent
                     (exists (lambda (area)
                                     (and (find term1 area)
                                          (not (find term2
                                                     area))))
                             w))
                  (no-are
                     (for-all (lambda (area)
                                      (if (find term1 area)
                                          (not (find term2
                                                     area))
                                          true))
                              w)))))))

The function proposition-to-string is only to format the output to be more readable.

(define (proposition-to-string qc t1 t2)
  (letn((sqc (string qc))
        (fsqc (find "-" sqc)))
     (append (slice sqc 0 fsqc) " " (string t1) " "
             (slice sqc (+ fsqc 1) (- (length sqc) fsqc 1))
             " " (string t2))))

The loops should be organized for testing all possible syllogisms. Traditionally, syllogisms are systematized in Figures.

                  FIGURE 1    FIGURE 2    FIGURE 3    FIGURE 4
Premise major     - M - P     - P - M     - M - P     - P - M
Premise minor     - S - M     - S - M     - M - S     - M - S
                  ---------   --------    --------    ---------
Conclusion        - S - P     - S - P     - S - P     - S - P

Each figure determines subject and predicate in both premises. In all conclusions, subject is S and predicate is P. Theoretically, the figures like

FIGURE 1A
- M - P
- S - M
---------
- P - S

could be considered, but, if symbols S and P are replaced, the resulting figure

- M - S
- P - M
--------
- S - P

is the same as Figure 4, with one irrelevant change - replaced order of propositions.

(for (figure 1 4)
   (if (or (= figure 1) (= figure 3)) (set 'major1 'M 'major2 'P)
                                      (set 'major1 'P 'major2 'M))
   (if (or (= figure 1) (= figure 2)) (set 'minor1 'S 'minor2 'M)
                                      (set 'minor1 'M 'minor2 'S))

   (println "\n\nFigure " figure ": ")
   (println "=========")
   (println "Premise major: " major1 " - " major2)
   (println "Premise minor: " minor1 " - " minor2)
   (println "Conclusion:    S - P")

   (dolist (major-qc '(all-are some-are some-arent no-are))
      (dolist (minor-qc '(all-are some-are some-arent no-are))

        (set 'worlds-satisfying-both-premises
              (filter (lambda(m)(and (true-in-world major-qc
                                                    major1
                                                    major2
                                                    m)
                                     (true-in-world minor-qc
                                                    minor1
                                                    minor2
                                                    m)))
                       Aristotles-worlds))

        (dolist (conclusion-qc '(all-are some-are some-arent no-are))

           (when (for-all (lambda(m)
                             (true-in-world conclusion-qc 'S 'P m))
                          worlds-satisfying-both-premises)

              (println "\n----- " (inc syllogism) ". syllogism:\n")
              (println "  Premise major: "
                       (proposition-to-string major-qc major1 major2))
              (println "  Premise minor: "
                       (proposition-to-string minor-qc minor1 minor2))
              (println "  Conclusion:    "
                       (proposition-to-string conclusion-qc 'S 'P)  
                       " ("
                       (length worlds-satisfying-both-premises)
                       " worlds.)"))))))

(exit)

3. The Results

The output of the program is the list of all valid syllogisms.

Figure 1:
=========
Premise major: M - P
Premise minor: S - M
Conclusion:    S - P

----- 1. syllogism:

  Premise major: all M are P
  Premise minor: all S are M
  Conclusion:    all S are P (8 worlds.)

----- 2. syllogism:

  Premise major: all M are P
  Premise minor: all S are M
  Conclusion:    some S are P (8 worlds.)

----- 3. syllogism:

  Premise major: all M are P
  Premise minor: some S are M
  Conclusion:    some S are P (32 worlds.)

----- 4. syllogism:

  Premise major: no M are P
  Premise minor: all S are M
  Conclusion:    some S arent P (4 worlds.)

----- 5. syllogism:

  Premise major: no M are P
  Premise minor: all S are M
  Conclusion:    no S are P (4 worlds.)

----- 6. syllogism:

  Premise major: no M are P
  Premise minor: some S are M
  Conclusion:    some S arent P (24 worlds.)

Figure 2:
=========
Premise major: P - M
Premise minor: S - M
Conclusion:    S - P

----- 7. syllogism:

  Premise major: all P are M
  Premise minor: some S arent M
  Conclusion:    some S arent P (24 worlds.)

----- 8. syllogism:

  Premise major: all P are M
  Premise minor: no S are M
  Conclusion:    some S arent P (4 worlds.)

----- 9. syllogism:

  Premise major: all P are M
  Premise minor: no S are M
  Conclusion:    no S are P (4 worlds.)

----- 10. syllogism:

  Premise major: no P are M
  Premise minor: all S are M
  Conclusion:    some S arent P (4 worlds.)

----- 11. syllogism:

  Premise major: no P are M
  Premise minor: all S are M
  Conclusion:    no S are P (4 worlds.)

----- 12. syllogism:

  Premise major: no P are M
  Premise minor: some S are M
  Conclusion:    some S arent P (24 worlds.)

Figure 3:
=========
Premise major: M - P
Premise minor: M - S
Conclusion:    S - P

----- 13. syllogism:

  Premise major: all M are P
  Premise minor: all M are S
  Conclusion:    some S are P (16 worlds.)

----- 14. syllogism:

  Premise major: all M are P
  Premise minor: some M are S
  Conclusion:    some S are P (32 worlds.)

----- 15. syllogism:

  Premise major: some M are P
  Premise minor: all M are S
  Conclusion:    some S are P (32 worlds.)

----- 16. syllogism:

  Premise major: some M arent P
  Premise minor: all M are S
  Conclusion:    some S arent P (28 worlds.)

----- 17. syllogism:

  Premise major: no M are P
  Premise minor: all M are S
  Conclusion:    some S arent P (12 worlds.)

----- 18. syllogism:

  Premise major: no M are P
  Premise minor: some M are S
  Conclusion:    some S arent P (24 worlds.)


Figure 4:
=========
Premise major: P - M
Premise minor: M - S
Conclusion:    S - P

----- 19. syllogism:

  Premise major: all P are M
  Premise minor: all M are S
  Conclusion:    some S are P (8 worlds.)

----- 20. syllogism:

  Premise major: all P are M
  Premise minor: no M are S
  Conclusion:    some S arent P (4 worlds.)

----- 21. syllogism:

  Premise major: all P are M
  Premise minor: no M are S
  Conclusion:    no S are P (4 worlds.)

----- 22. syllogism:

  Premise major: some P are M
  Premise minor: all M are S
  Conclusion:    some S are P (32 worlds.)

----- 23. syllogism:

  Premise major: no P are M
  Premise minor: all M are S
  Conclusion:    some S arent P (12 worlds.)

----- 24. syllogism:

  Premise major: no P are M
  Premise minor: some M are S
  Conclusion:    some S arent P (24 worlds.)