JavaECHO Home Page


JavaECHO is an implementation of ECHO, a system for computing explanatory coherence developed by Paul Thagard and explained in detail in his 1992 book Conceptual Revolutions.

How to Run JavaECHO

To run JavaECHO, go to the JavaECHO applet page. Your browser must be able to run Java for this to work!


Oct. 22, 2001: There are bugs in JavaECHO which prevent it from performing like the LISP-based simulations described in the various papers on ECHO. In particular, the parameter setting under options does not work. Click here to get the LISP code for ECHO and other coherence programs.

Features of JavaECHO

JavaECHO Details

JavaECHO is written as a Java applet, and so requires a browser that can run Java applets. Be patient when first loading JavaECHO --- it consists of a number of parts that must be downloaded and the assembled on your computer.

JavaECHO comes with a number of examples already loaded. If you want to create your own ECHO problem, the ECHO input window is editable.

JavaECHO might run slowly for you, and there are currently two reasons for poor performance:

Also, be careful with the brute force algorithm, which works by checking all 2n possibilities for an ECHO graph with n nodes. On any computer, trying to solve a coherence problem with more than about n=10 nodes using brute force is going to take a long time.

ECHO Solving Methods

JavaECHO comes with 3 different methods for solving an ECHO problem:

  1. Connectionist this methods treats the ECHO problem as a neural network that is settled into a stable state
  2. Greedy this is a heuristic method that first randomly accepts/rejects each node, and then moves into a different column the node that result in the greatest leap toward a solution
  3. Brute Force brute force simple checks all 2n possible configurations of an ECHO graph, and returns the best solution

Only the brute force algorithm guarantees to always find a best solution to an ECHO problem, however it is too slow a method for problems with more than about 10 nodes because it. The greedy method does not always find the best solution to an ECHO problem, and will sometimes return a less than ideal solution. Since the greedy method starts by randomly accepting/rejecting each node, different runs can result in different solutions. The connectionist method is generally the most convenient one to use on a regular basis, and with the default ECHO parameters almost always find the best solution. This is method is used exclusively in all of the ECHO programs in Paul Thagard's book Conceptual Revolutions.

Source Code

The source code for JavaECHO is freely available: Contact if you have any questions, comments, or problems.


Questions about ECHO can be emailed to Paul Thagard at Questions specific to JavaECHO should be directed to Toby Donaldson (the implementor of JavaECHO) at

Last modified: Thu Jul 24 16:19:37 1997