opencog / ure

Unified Rule Engine. Graph rewriting system for the AtomSpace. Used as reasoning engine for OpenCog.
Other
54 stars 31 forks source link

Split out Unify into it's own git repo #127

Closed linas closed 1 year ago

linas commented 1 year ago

Unify is now in https://github.com/opencog/unify Make it into a proper dependency for the URE.

Splitting out Unify enables it to be developed on it's own.

General plan for Unify: Create a new Atomese UnifyLink

As far as I can tell, (Unify A B) is equivalent to (Get (Identical A B)) In greater detail,

(Unify
    (Inheritance  (Concept "A") (Variable "$Y"))
    (Inheritance (Variable "$X") (Concept "B")))

is equivalent to the more verbose

(Get
    (VariableList
       (Variable "$X") (Variable "$Y"))
    (Identical
         (Inheritance  (Concept "A") (Variable "$Y"))
         (Inheritance (Variable "$X") (Concept "B")))))

Both will return

(Set
    (List (Concept "A") (Concept "B")))

Differences are unclear, I'm hoping @ngeiswei will help clarify over time (back-burner project)

ngeiswei commented 1 year ago

Oh, I didn't know (Get (Indentical A B)) acted as a unifier. If so, all that unify code might just be redundant. There is a plethora of tests under tests/unify, maybe some important differences can be found.

linas commented 1 year ago

I now understand that the unifier, and IdenticalLink are similar, but not the same. The Unifier handles more difficult cases. This is reviewed in https://github.com/opencog/unify/issues/1