Computational Scientific Discovery ("CSD") is a small but growing field concerned with developing algorithms and software to help practicing scientists build scientific models. It borrows from (but is distinct from) the fields of:
From Science it borrows:
From the Philosophy of Science it borrows:
From Computer Science (especially Artificial Intelligence) it borrows:
CSD differs from other domains that use knowledge representation and reasoning in that it has a well-developed language for describing change. Of course, describing change has been important in Artificial Intelligence since Blocks World planners, but CSD has developed the notion of processes.
Processes are also inherently compositional in two respects.
d2height/dt2 = -constant;It can be applied to several concrete equations including:
height(t) = height(0) - 0.5 * (9.8 meters/second2) * (t seconds)2
height(t) = height(0) - 0.5 * (1.6 meters/second2) * (t seconds)2
d2height/dt2 = constant;with one for velocity-dependent resistance of an object obj through a fluid fluid:
mass(obj) * d2height/dt2 = dragCoefficient(obj) * density(fluid) * (dheight/dt)2 * crossArea(obj) / 2to form an equation that can model falling in a gravitational field with terminal-velocity wind-resistance:
gravitationalForce(obj) - dragForce(obj) = 0 gravitationalForce(obj) = dragForce(obj) (9.8 meters/second2)*mass(obj) = dragCoefficient(obj)*density(fluid)*(dheight/dt)2*crossArea(obj)/2 dheight/dt = sqrt(2*(9.8 meters/second2)*mass(obj)) / (dragCoefficient(obj)*density(fluid)*crossArea(obj))
Just as CSD has extended the "classical artificial intelligence" with a richer notion of process-modeled change, so my research extends "classical" computational discovery with more knowledge. Specifically I am interested in adding cultural knowledge and explanatory awareness to CSD.
Some of the cultural knowledge that I represent include:
Having this extra knowledge can serve several purposes:
Explanatory awareness is the second way in which my research extends "classical" Computational Scientific Discovery. One of the jobs of scientists is to build a self-consistent web of mutually-supportive (and even redundant) explanations. Oftentimes several different explanations for phenomena are possible. Some of these explanations agree, while others may contradict.
My research supports scientists in this regard by representing:
Over the course of my research I have developed a series of increasingly more powerful programs for CSD. They are collectively and unrepentedly named Scienceomatic.
Here is a brief history of the Scienceomatic Research Campaign. Please note: The name of the computer programs is "Scienceomatic". However, since the Scienceomatic V I have distinguished the name of the computer programming environment from that of the language that that computer program implements. The name of the language is "Scirep" (or "SciRep") for Science Representation.
| Version | Description | ||||||||
| Scienceomatic I (1997) |
An inferior frame-based system that was all representation and little reasoning. It was never implemented. | ||||||||
| Scienceomatic II (1998?) |
I've forgotten its details. They must not have been too impressive because soon I moved on to the Scienceomatic III. | ||||||||
| Scienceomatic III (1998-2000) |
Basically a system with a language of "things" and with an information-theoretical inspired model preference algorithm built in.
Its language described things with a combination of equations (for numeric knowledge), decision trees (for symbolic knowledge) and frame The system was written in C++ and used CGI-scripting to implement a web-based interface. All Scienceomatics since Scienceomatic III have been written to be full environments in the sense that they may be used to do either prediction or knowledge discovery. I used the Scienceomatic III to do data-mining knowledge re-discovery in a seismological database; and got my Ph.D. thesis with it. |
||||||||
| Scienceomatic IV (2000-2001) |
An early attempt to get around the limitations of the Scienceomatic III that I identified in my thesis. While the Scienceomatic III dealt with data and theory, the Scienceomatic IV added an "in-between" layer of laws (later renamed generalizations). Soon I appreciated the usefulness of a theory/expectation component, as well as a mathematics one (later renamed analytical). I also decided to build around Prolog. These revisions happened so quickly that the Scienceomatic IV was never implemented. Instead effort went into the design and manufacture of the Scienceomatic V. |
||||||||
| Scienceomatic V (2002-2007) |
A Prolog-inspired language of "things", processes and cultural knowledge. Cultural and domain knowledge was supported by divvying the knowledge base up into five "components":
|
||||||||
| Scienceomatic 6 (2007-2008) |
The Scienceomatic 6 built upon the Scienceomatic V's Prolog infrastructure to add justification traces, an early form of explanatory awareness. It also improved the Scienceomatic V's notation for differential equations. I spent several months designing it, but never implemented it because I realized Lisp might be a better language for representing explanatory traces and constructed programs than Prolog. This naturally led to the Scienceomatic 7A. |
||||||||
| Scienceomatic 7A (2008) |
The Scienceomatic 7A broke from the Prolog tradition present since 2001-2002 in the Scienceomatic IV/Scienceomatic V. Instead, it was designed to use Lisp's ability for programs to define their own Lisp functions on-the-fly to represent stochastic justification traces. Another advantage of freeing its notation from the sentence-oriented notation of Prolog is that a more natural Java-like class/object notation was developed. Otherwise it built upon the process and cultural knowledge principles pioneered in the Scienceomatic V and Scienceomatic 6 I started implementing the Scienceomatic 7A but abandoned it when I realized I should abandon C++ as the main implementation language. |
||||||||
| Scienceomatic 7B (2008-2009Mar) |
In the interest of universality I finally broke with C++ as the computational engine implementation language used from the Scienceomatic III all the way through to the Scienceomatic 7A. The "computational engine" of the Scienceomatic 7B is written in Lisp, and the Lisp interpreter is/will-be implemented Java. Relying of the Java Virtual Machine will give the Scienceomatic 7B both:
The Scienceomatic 7B further extends explanatory awareness by also supporting justification stories in addition to justification traces. |
||||||||
| Scienceomatic 7C and 7D (2009Mar-2009Dec) |
The Lisp-Java combination of SOM 7B made sharing some objects unnatural. Also, Lisp programming can be a pain-in-the-ass if one wants relatively simple data-structures, like red-black self-balancing binary trees. Versions 7C and 7D were to be written in Java exclusively. |
||||||||
| Scienceomatic 8A (2010Jan-) |
Two important breakthroughs occurred in Jan/Feb of 2010:
Both of these ideas are being incorporated into the Scienceomatic 8A. |
Last revised 2010 Dec 22
Copyright (c) 2008-2010 Joseph Phillips. All rights reserved.