Skip to content
A proof-assistant-using neural network formed using a genetic algorithm
Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore
LICENSE
README.md
examine.py
formula.py
genetics.py
neural.py
prooftest.py
prover.py
simpletest.py
singletest.py
test.py
verysimpletest.py

README.md

noogenesis

A proof-assistant-using neural network formed using a genetic algorithm

Goals

The primary goal is to train a network to use MINLOG. More achievable subgoals are:

  • Recognise trivial implications (those of the form P => P).
  • Use a python-implemented implicational logic prover, supporting only the use and assume commands of MINLOG.
  • As above, but interacting directly with MINLOG.

Formulae into neural networks

We need to be able to enter formulae into a neural network. Since formulae have a tree-like structure, and have arbitrary size, we do this using a second neural network for encoding formulae as vectors.

Fix some number n, at least as large as the number of atomic formulae we want to use. The kth atomic formula is then the vector e_k in R^n. We also fix a number m, equal to the number of logical operations, and similarly the kth logical operation is e_k in R^m. Now form a neural network from R^(m+2n) to R^n, and recursively feed formula trees into this network to obtain a corresponding vector in R^n.

If atoms are encoded as above by a function A, and operations by a function L, and the neural network is N, then the recursive definition for the function E which encodes arbitrary formulae is

E(Atom p) = A(p)
E(x op y) = N(L(op) | E(x) | E(y)).

Now any neural network operating on formulae can operate on R^n using this encoding. An appropriate encoding network will be learned at the same time as the main network.

Learning

Gradient descent does not seem appropriate for the goals above. Instead, a genetic algorithm will be used to learn a proof strategy.

You can’t perform that action at this time.