Hey hey,
Some more stuff to share on the MeTTa language that's at the core of
the Hyperon design (
https://wiki.opencog.org/w/Hyperon )
I made a brief summary of key MeTTa features
https://docs.google.com/document/d/1iSbZtooDj4HuJayj0nhm_KRqqdCJBJ9P5LfjKzJBEnA/edit#
(Consistent with Alexey's prior MeTTa spec document,
https://wiki.opencog.org/w/File:MeTTa_Specification.pdf )
And also a rough sketch of how one would implement MeTTa as a
collection of metagraph rewrite rules
https://docs.google.com/document/d/13EPXlddLJAFBXfgmxduwxkMHAXdeCCf5i3VKr0XYy-I/edit
(I will make a more rigorous version of this at time permits)
I also note that this paper from Wolfram's group
https://arxiv.org/pdf/2111.03460.pdf
while written in a different context, seems to be applicable to what
we're doing. Extending their hypergraph results to metagraphs seems
straightforward.
A "multiway metagraph" in (a generalization to metagraphs of) their
terminology would basically be an execution trace of a MeTTa program
on a metagraph... which of course can also be expressed as a
metagraph. Given nondeterminism of execution, a given program can
lead to a number of multiway metagraphs.
Metagraph homomorphisms between execution traces, are then the
homotopies btw derivations referenced in HoTT ... so one naturally
builds up to the n-groupoid and as the limit the infinity-groupoid ...
One gets a different infinity-groupoid for each MeTTa program , so the
space one gets from execution traces of the full scope of MeTTa
programs is an infinity-category of infinity-groupoids, aka the
(infinity,1)-topos
So all this basically follows if one represents MeTTa programs as
collections of metagraph rewrite rules.
The Verigraph work
https://link.springer.com/chapter/10.1007%2F978-3-319-75396-6_9
https://github.com/Verites/verigraph
shows that pattern-matching search heuristics can be elegantly
expressed in terms of the categorial rewrite rule formalism (they work
w/ graph rewrite rules but it should also work for metagraphs). It
seems a sound approach for the MeTTa interpreter implementation will
likely be to implement the simplest PM heuristic in Rust, with a
pluggable search policy ... and then express the pluggable search
policies in MeTTa using appropriate abstractions that are based on
modeling MeTTa in MeTTa as a collection of metagraph rewrite rules.
These pluggable search policies will end the end need to use ML for PM
search guidance
All "high class plumbing" (from an AGI perspective) but fun stuff
nevertheless! ;)
All this uber plumbing, when it's done, should make experimentation w/
synergetic use of logic systems, program learning systems and neural
systems a lot more concise and efficient !
ben
--
Ben Goertzel, PhD
b...@goertzel.org
"My humanity is a constant self-overcoming" -- Friedrich Nietzsche