47 unit tests fail ... I'm not sure if they all fail for the same reason, though.
For example PutLink (PutLink (LambdaLink (VariableList (TypedVariableLink (VariableNode "$X") (TypeNode "PredicateNode") ) (TypedVariableLink (VariableNode "$Y") (TypeNode "PredicateNode") ) ) (AndLink (EvaluationLink (PredicateNode "acquainted") (ListLink (VariableNode "$X") (VariableNode "$Y") ) ) (ImplicationLink (VariableNode "$X") ; this is alpha-converted to $foo1233 (PredicateNode "is-human") ) (ImplicationLink (VariableNode "$X") ; this is alpha-converted to $bar456 (PredicateNode "is-human") ) ) ) (ListLink (PredicateNode "is-Self") (PredicateNode "is-Bob") ) ) So, because the implication link is scoped, the result of the variable substitution is (AndLink (ImplicationLink (VariableNode "$foo123") (PredicateNode "is-human") ) (ImplicationLink (VariableNode "$bar456") (PredicateNode "is-human") ) (EvaluationLink (PredicateNode "acquainted") (ListLink (PredicateNode "is-Self") (PredicateNode "is-Bob") ) ) ) which is not what the unit test expects. The problem with using either ScopeLink or LambdaLink is that it becomes impossible to have a stable variable name -- it can be alpha-converted to anything, so any algo that depends on having a fixed, well-known variable name will fail. In this case -- I am not sure -- if you want ImplicationLink to be scoped, then the unit test is wrong. But is the unit test is right, then implication link must not be scoped. I cannot tell which one is wanted. --linas On Tue, Oct 11, 2016 at 12:12 PM, Nil Geisweiller <ngeis...@googlemail.com> wrote: > Linas, > > I don't have time to get into that right now. If you can point to where > exactly it breaks (like a unit test on your branch) it would help. In any > case I look carefully into that and reply tomorrow. > > Nil > > > On 10/11/2016 06:55 PM, Linas Vepstas wrote: > >> You made it inherit from ScopeLink, thus making the variables in it >> implicitly scoped. Then you added the file ImplicationLink.cc, and have >> notes in there, complaining about how variables are implcitly scoped. >> The wiki page for it, http://wiki.opencog.org/w/ImplicationLink still >> says things that are wrong (re alpha conversion -- each lambda gets >> alpha converted, so the "sugar syntax" section cannot possibly be right). >> >> I'm asking, because I'm trying to fix #910 by doing the alpha conversion >> correctly, and the result of the fix is that unit tests with implication >> links in them now fail. The whole thing smells bad. >> >> Either ImplicationLinks do inherit from ScopeLink, in which case, there >> should be no complaints about how the ScopeLink works: it does the right >> thing. If you don't like what the scopeLink does, then ImplicationLinks >> should NOT inherit from it ... >> >> In either case, the wiki page needs fixing, because the alpha conversion >> conversation we had recently renders that page incoherent. >> >> I don't really care, one way or the other, but I do need to understand >> the intended design well enough to be able to fix bugs, and right now, I >> don't understand what ImplicationLink is, or how its supposed to work. >> >> --linas >> >> >> -- You received this message because you are subscribed to the Google Groups "opencog" group. To unsubscribe from this group and stop receiving emails from it, send an email to opencog+unsubscr...@googlegroups.com. To post to this group, send email to opencog@googlegroups.com. Visit this group at https://groups.google.com/group/opencog. To view this discussion on the web visit https://groups.google.com/d/msgid/opencog/CAHrUA36HhOi4gQMqGiTx0xb74c0S2RZZNdzV0VTTn-BeoC6kXA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.