The question
We usually test the theories of sentience that are most intuitive or most popular. That is like looking for a lost object only in the places where it is most likely to be. It is a good start, but at some point you have to search the house systematically.
This project searches the space of metaphysical hypotheses systematically, as a multidimensional search or a genetic algorithm, and judges theories by their coherence and by how useful they are for reducing suffering.
How the search works
- Each agent is a theory: a point on the A–I theory map plus numeric parameters.
- Its fitness combines internal coherence and agreement with what we observe in the real world. Defining this fitness function is the hardest part of the project.
- For example: 100 random theories are created. About half are discarded as absurd. The rest are scored from 0 to 100; at first none may score above 12. The survivors reproduce, mutate and are evaluated again, for thousands of cycles.
A toy world
A simple test world has four material particles (A, T, C and G) and one "experiential" particle that only binds to three A's in a row. This is an assumption of the model, not a claim that such particles exist. With these pieces, several theories can be built:
| Configuration | How it works |
|---|---|
| Emergentist monism | Experience appears when the AAA pattern forms; it may or may not affect matter. |
| Immersionist monism | Experiences exist already; an AAA pattern works like a radio receiver that tunes in to them. |
| Dualism | Two kinds of particle, material and experiential, that interact. |
Some configurations turn out to reconcile theories that seemed incompatible, which is one of the reasons to run the search.
Design in GaiaBasic
import gaiabasic as gb
search = gb.TheorySearch(
space=gb.theory.MAP_AXES, # axes A..I and their options
world=gb.presets.ParticleSoup("ATCG", experiential="psi", binds_to="AAA"),
population=100,
fitness=gb.fitness.coherence + gb.fitness.empirical_fit,
)
best = search.evolve(generations=10_000)
for theory in best[:5]:
print(theory.map_code(), theory.score)
Status
Concept and simulation design. Next step: implement the required GaiaBasic components and publish the code and results here.
Related: Short version in Examples · Concepts · Documentation.