Well, yes, but Nil,, look at the core issue: the variable X in the Implication link is bound, but the unit test is pretending that its free. My question is: are you *sure* you really want the implicationLink to inherit from Scope Link (and thus, always bind it's variables)?
--linas On Wed, Oct 12, 2016 at 10:39 AM, Nil Geisweiller <ngeis...@googlemail.com> wrote: > OK, when they fail again I guess you might feel free to push to the > master, as we're apparently using as a dev branch, and then I'll fix that. > > Nil > > On 10/12/2016 06:17 PM, Linas Vepstas wrote: > >> No, actually, I worked around that. >> >> The only reason that PutLinkUTest currently passes is because PutLink >> fails to treat ScopeLinks correctly. When that gets fixed, the unit >> test will fail ... the issue remains the same. >> >> --linas >> >> On Tue, Oct 11, 2016 at 11:57 PM, Nil Geisweiller >> <ngeis...@googlemail.com <mailto:ngeis...@googlemail.com>> wrote: >> >> Are these unit tests still failing? >> >> Nil >> >> >> On 10/11/2016 08:36 PM, Linas Vepstas wrote: >> >> 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 <mailto:ngeis...@googlemail.com> >> <mailto:ngeis...@googlemail.com >> >> <mailto: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 >> <http://wiki.opencog.org/w/ImplicationLink> >> <http://wiki.opencog.org/w/ImplicationLink >> <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/CAHrUA35w5rCVqPgSYr8EcmJHGRKT-g8P5%2BtoFfh2Fg2Hu06FnA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.