Executable Philosophy

What is Executable Philosophy?

Executable Philosophy is a new philosophical methodology that encourages us to do philosophy in a programming language rather than a natural language (like English or German).

This methodology enables us to:

  1. compute philosophical facts,
  2. declare and enforce well-defined constraints on each type of philosophical theory,
  3. weigh philosophical theories according to such constraints,
  4. create well-defined representations of objects (including abstract, mental, virtual, and physical objects),
  5. programmatically uncover sets of inconsistent would-be "counterexamples" leveled at philosophical theories,
  6. remove human intuition from the chain of argument justification (though perhaps not theory justification),
  7. automatically detect various types of flaws in (programmatically-specified) philosophical arguments,
such as those below, and much more.

ExPhil Introductory Lectures

"What Is Executable Philosophy?" Part 1

Start here.



Intro to Executable Philosophy: Part 1

This video provides a high-level perspective on ExPhil and tries to make clear why we should find it so appealing, in addition to covering what is wrong with Analytic Philosophy.



Intro to Executable Philosophy: Part 2


ExPhil in Action

Example #1: descriptivism.py


descriptivism.py output

According to Descriptivism:

{'first_name': 'Santa', 'last_name': 'Claus', 'middle_name': None, 'nicknames': ('Santa', 'Saint Nick', 'Kris Kringle'), 'exists': False, 'joyous': True, 'overweight': True, 'fictional': True, 'clothing_colors': (<exphil.things.color.Color object at 0x7f4c470fb290>, <exphil.things.color.Color object at 0x7f4c470fb1d0>), 'birthday': None, 'hair_colors': (<exphil.things.color.Color object at 0x7f4c470fb1d0>, <exphil.things.color.Color object at 0x7f4c470fb210>), 'mustache': True}
    refers to
{'first_name': 'Santa', 'last_name': 'Claus', 'middle_name': None, 'nicknames': ('Santa', 'Saint Nick', 'Kris Kringle'), 'exists': False, 'joyous': True, 'overweight': True, 'fictional': True, 'clothing_colors': (<exphil.things.color.Color object at 0x7f4c470fb290>, <exphil.things.color.Color object at 0x7f4c470fb1d0>), 'birthday': None, 'hair_colors': (<exphil.things.color.Color object at 0x7f4c470fb1d0>, <exphil.things.color.Color object at 0x7f4c470fb210>), 'mustache': True}

{'king': True}
    refers to
{'king': True, 'first_name': None, 'last_name': None, 'middle_name': None, 'exists': False, 'fictional': False, 'king_of_country': 'France', 'rule_interval': None, 'birthday': None}

{'first_name': 'Santa'}
    refers to
{'first_name': 'Santa', 'last_name': 'Claus', 'middle_name': None, 'nicknames': ('Santa', 'Saint Nick', 'Kris Kringle'), 'exists': False, 'joyous': True, 'overweight': True, 'fictional': True, 'clothing_colors': (<exphil.things.color.Color object at 0x7f4c470fb290>, <exphil.things.color.Color object at 0x7f4c470fb1d0>), 'birthday': None, 'hair_colors': (<exphil.things.color.Color object at 0x7f4c470fb1d0>, <exphil.things.color.Color object at 0x7f4c470fb210>), 'mustache': True}

{'mustache': True, 'last_name': 'Nietzsche', 'philosopher': True, 'author_of': 'Thus Spake Zarathustra'}
    refers to
{'first_name': 'Friedrich', 'last_name': 'Nietzsche', 'middle_name': 'Wilhelm', 'author': True, 'author_of': ('Thus Spake Zarathustra', 'The Gay Science'), 'fictional': False, 'religion': None, 'birthday': datetime.date(1844, 10, 15), 'philosopher': True, 'deathday': datetime.date(1900, 8, 25), 'nationality': 'German', 'mustache': True}

Example #2: direct_reference.py


direct_reference.py output

According to DirectReference:

The ID 140110626311728
    refers to
{'first_name': 'Friedrich', 'last_name': 'Nietzsche', 'middle_name': 'Wilhelm', 'author': True, 'author_of': ('Thus Spake Zarathustra', 'The Gay Science'), 'fictional': False, 'religion': None, 'birthday': datetime.date(1844, 10, 15), 'philosopher': True, 'deathday': datetime.date(1900, 8, 25), 'nationality': 'German', 'mustache': True}

The ID 140110626311432
    refers to
{'king': True, 'first_name': None, 'last_name': None, 'middle_name': None, 'exists': False, 'fictional': False, 'king_of_country': 'France', 'rule_interval': None, 'birthday': None}

The ID 140110626311136
    refers to
{'first_name': 'Santa', 'last_name': 'Claus', 'middle_name': None, 'nicknames': ('Santa', 'Saint Nick', 'Kris Kringle'), 'exists': False, 'joyous': True, 'overweight': True, 'fictional': True, 'clothing_colors': (<exphil.things.color.Color object at 0x7f6e0a7311d0>, <exphil.things.color.Color object at 0x7f6e0a731110>), 'birthday': None, 'hair_colors': (<exphil.things.color.Color object at 0x7f6e0a731110>, <exphil.things.color.Color object at 0x7f6e0a731150>), 'mustache': True}

The ID None
    refers to
None

Example #3: voting.py


voting.py output

Votes: (('A', 'B', 'C'), ('A', 'B', 'C'), ('A', 'B', 'C'))

borda - A
condorcet - A
approval_2 - frozenset(['A', 'B'])
approval_3 - frozenset(['A', 'C', 'B'])
majority - A
metatheory_simple - A


Votes: (('A', 'B', 'C'), ('B', 'A', 'C'), ('C', 'A', 'B'))

borda - A
condorcet - A
approval_2 - A
approval_3 - frozenset(['A', 'C', 'B'])
majority - frozenset(['A', 'C', 'B'])
metatheory_simple - A


Votes: (('A', 'B', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'))

borda - frozenset(['A', 'C', 'B'])
condorcet - frozenset(['A', 'C', 'B'])
approval_2 - frozenset(['A', 'C', 'B'])
approval_3 - frozenset(['A', 'C', 'B'])
majority - frozenset(['A', 'C', 'B'])
metatheory_simple - frozenset(['A', 'C', 'B'])


Votes: (('A', 'D', 'B', 'C'), ('B', 'C', 'A', 'D'), ('C', 'A', 'D', 'B'))

borda - A
condorcet - frozenset(['A', 'C', 'B', 'D'])
approval_2 - frozenset(['A', 'C'])
approval_3 - A
majority - frozenset(['A', 'C', 'B'])
metatheory_simple - A


Votes: (('A', 'B', 'C', 'D'), ('A', 'B', 'C', 'D'), ('B', 'C', 'D', 'A'), ('D', 'B', 'C', 'A'), ('C', 'D', 'B', 'A'))

borda - B
condorcet - B
approval_2 - B
approval_3 - frozenset(['C', 'B'])
majority - A
metatheory_simple - B


Example #4: names_runner.py


names_runner.py output


According to the `References do not exist` theory of reference  {'is_skeptical': True, 'is_descriptivist': False, 'is_singular': True, 'is_rigid_designating': False, 'is_intensional': False}:

  Female author of "Thus Spake Zarathustra"                                  refers to  None

  Discoverer of the incompleteness theorem (in Kripke's thought experiment)  refers to  None

  Santa                                                                      refers to  None


According to the `Direct reference` theory of reference  {'is_skeptical': False, 'is_descriptivist': False, 'is_singular': True, 'is_rigid_designating': True, 'is_intensional': False}:

  Female author of "Thus Spake Zarathustra"                                  refers to  {'first_name': 'Friedrich', 'last_name': 'Nietzsche', 'middle_name': 'Wilhelm', 'author': True, 'author_of': ('Thus Spake Zarathustra', 'The Gay Science'), 'fictional': False, 'sex': 'male', 'religion': None, 'birthday': datetime.date(1844, 10, 15), 'philosopher': True, 'deathday': datetime.date(1900, 8, 25), 'nationality': 'German', 'mustache': True}

  Discoverer of the incompleteness theorem (in Kripke's thought experiment)  refers to  {'first_name': 'Kurt', 'last_name': 'Godel', 'middle_name': 'Friedrich', 'mathematician': True, 'fictional': False, 'sex': 'male', 'discovered': None, 'religion': 'Christianity', 'logician': True, 'birthday': datetime.date(1906, 4, 28), 'philosopher': True, 'deathday': datetime.date(1978, 1, 14)}

  Santa                                                                      refers to  {'first_name': 'Santa', 'last_name': 'Claus', 'middle_name': None, 'nicknames': ('Santa', 'Saint Nick', 'Kris Kringle'), 'exists': False, 'joyous': True, 'overweight': True, 'fictional': True, 'sex': 'male', 'clothing_colors': (<exphil.things.color.Color object at 0x7f9d7a7cd750>, <exphil.things.color.Color object at 0x7f9d7a7cd690>), 'birthday': None, 'hair_colors': (<exphil.things.color.Color object at 0x7f9d7a7cd690>, <exphil.things.color.Color object at 0x7f9d7a7cd6d0>), 'mustache': True}


According to the `Nothing refers` theory of reference  {'is_skeptical': True, 'is_descriptivist': False, 'is_singular': True, 'is_rigid_designating': False, 'is_intensional': False}:

  Female author of "Thus Spake Zarathustra"                                  refers to  None

  Discoverer of the incompleteness theorem (in Kripke's thought experiment)  refers to  None

  Santa                                                                      refers to  None


According to the `Descriptivist` theory of reference  {'is_skeptical': False, 'is_descriptivist': True, 'is_singular': True, 'is_rigid_designating': False, 'is_intensional': False}:

  Female author of "Thus Spake Zarathustra"                                  refers to  None

  Discoverer of the incompleteness theorem (in Kripke's thought experiment)  refers to  {'discovered': ('The Incompleteness Theorem', 'The Completeness Theorem'), 'birthday': None, 'first_name': None, 'last_name': 'Schmidt', 'middle_name': None, 'mathematician': True, 'fictional': False}

  Santa                                                                      refers to  {'first_name': 'Santa', 'last_name': 'Claus', 'middle_name': None, 'nicknames': ('Santa', 'Saint Nick', 'Kris Kringle'), 'exists': False, 'joyous': True, 'overweight': True, 'fictional': True, 'sex': 'male', 'clothing_colors': (<exphil.things.color.Color object at 0x7f9d7a7cd750>, <exphil.things.color.Color object at 0x7f9d7a7cd690>), 'birthday': None, 'hair_colors': (<exphil.things.color.Color object at 0x7f9d7a7cd690>, <exphil.things.color.Color object at 0x7f9d7a7cd6d0>), 'mustache': True}


According to the `Intensional` theory of reference  {'is_skeptical': False, 'is_descriptivist': False, 'is_singular': False, 'is_rigid_designating': False, 'is_intensional': True}:

  Female author of "Thus Spake Zarathustra"                                  refers to  {'first_name': 'Friedrich', 'last_name': 'Nietzsche', 'middle_name': 'Wilhelm', 'author': True, 'author_of': ('Thus Spake Zarathustra', 'The Gay Science'), 'fictional': False, 'sex': 'male', 'religion': None, 'birthday': datetime.date(1844, 10, 15), 'philosopher': True, 'deathday': datetime.date(1900, 8, 25), 'nationality': 'German', 'mustache': True}

  Discoverer of the incompleteness theorem (in Kripke's thought experiment)  refers to  {'first_name': 'Kurt', 'last_name': 'Godel', 'middle_name': 'Friedrich', 'mathematician': True, 'fictional': False, 'sex': 'male', 'discovered': None, 'religion': 'Christianity', 'logician': True, 'birthday': datetime.date(1906, 4, 28), 'philosopher': True, 'deathday': datetime.date(1978, 1, 14)}

  Santa                                                                      refers to  {'first_name': 'Santa', 'last_name': 'Claus', 'middle_name': None, 'nicknames': ('Santa', 'Saint Nick', 'Kris Kringle'), 'exists': False, 'joyous': True, 'overweight': True, 'fictional': True, 'sex': 'male', 'clothing_colors': (<exphil.things.color.Color object at 0x7f9d7a7cd750>, <exphil.things.color.Color object at 0x7f9d7a7cd690>), 'birthday': None, 'hair_colors': (<exphil.things.color.Color object at 0x7f9d7a7cd690>, <exphil.things.color.Color object at 0x7f9d7a7cd6d0>), 'mustache': True}

Example #5: ethics_runner.py


ethics_runner.py output

According to the Kantian ethical theory  {'is_skeptical': False, 'is_consequentialist': False, 'is_kantian': True, 'is_infinitely_strict': False, 'is_infinitely_lenient': False}:
  accidental manslaughter  is  moral
  organ harvesting         is  immoral
  walking                  is  moral
  murder                   is  immoral

According to the Skepticism ethical theory  {'is_skeptical': True, 'is_consequentialist': False, 'is_kantian': False, 'is_infinitely_strict': False, 'is_infinitely_lenient': False}:
  There are no moral facts
  There are no moral facts
  There are no moral facts
  There are no moral facts

According to the Everything is moral ethical theory  {'is_skeptical': False, 'is_consequentialist': False, 'is_kantian': False, 'is_infinitely_strict': False, 'is_infinitely_lenient': True}:
  accidental manslaughter  is  moral
  organ harvesting         is  moral
  walking                  is  moral
  murder                   is  moral

According to the Consequentialism ethical theory  {'is_skeptical': False, 'is_consequentialist': True, 'is_kantian': False, 'is_infinitely_strict': False, 'is_infinitely_lenient': False}:
  accidental manslaughter  is  immoral
  organ harvesting         is  moral
  walking                  is  moral
  murder                   is  immoral

According to the Everything is immoral ethical theory  {'is_skeptical': False, 'is_consequentialist': False, 'is_kantian': False, 'is_infinitely_strict': True, 'is_infinitely_lenient': False}:
  accidental manslaughter  is  immoral
  organ harvesting         is  immoral
  walking                  is  immoral
  murder                   is  immoral

More Code

You can check out much of the existing ExPhil code at code.executablephilosophy.org.

Join the Discussion

Come ask questions about ExPhil or discuss it further via the new Google Group.

Contact

Feel free to email me, Steven Phillips (creator of ExPhil), at steve@tryingtobeawesome.com.