-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Provide Atomese wrapper #1
Comments
For the output, the "full form" would be
This seems terribly verbose. Nasty-ugly verbose. Unusable from the usability perspective. So, a better variant would be to make it rewrite, just like a rule would:
where
The above seems to match what conventional books on proof write for a typed rule ... @ngeiswei any comments or corrections? |
This is my first naive stab at doing what's described in issue #1
I do not understand the use-case for the unifier. I am guessing that it is this: There are two rules, written as
and similarly Now, (I am guessing) you want to see if these two rules can be joined together. The chainer(s) try to figure out if The corresponding Unifier then has the form
So that a new RuleLink is constructed, without |
FYI @ngeiswei the demo https://github.com/opencog/unify/blob/master/examples/unifier-tree.scm provides an example of chaining together two rules, using "pure Atomese" (no C++ or scheme code). Note the chaining direction is ambiguous: it can be read as going either "forwards" and "backwards" . |
Very cool work! |
Thank you! |
I mean, @ngeiswei you did all the hard work of making the unifier actually work. I did the easy part of slapping a coat of paint on the thing. |
Provide an Atomese wrapper for Unify.
So, here's the deal:
(Unify A B)
is more or less the same thing as(Meet (Identical A B))
. However... There are some conceptual differences. Unify allows the form:where
left-vars...
are the things to be taken as variables inleft-expr
. There's nothing like this forIdenticalLink
orMeetLink
. We can almost get the same thing by writingexcept that this can fail if
(Variable "$X")
appears inleft-vars
, and also appears inright-expr
, but not inright-vars
. There is no way to handle this case in any kind of easy or natural way usingMeetLink
. And that is how Unify is different from(Meet (Identical ..))
The proposal is then to provide two forms: either a simple form, with no vardecls
or the full form, with vardecls.
Maybe also provide
(VariableListAuto)
which means "yank them out for me".What about the output? (next post)
The text was updated successfully, but these errors were encountered: