OK, I'll defer the conversation. Sooner or later, Amen will open another bug report once again titled "question: feature or bug?" and I guess we can deal with it then.
--linas On Thu, Oct 13, 2016 at 12:56 AM, 'Nil Geisweiller' via opencog < opencog@googlegroups.com> wrote: > On 10/13/2016 02:38 AM, Ben Goertzel wrote: > >> Wait ... we can have nested ScopeLinks, so that a variable embedded in >> two ScopeLInks can be bound by the outer one or the inner one... no? >> > > Yes, no problem, if a variable is scoped by both then the inner one will > cover the outer one. > > Anyway, I don't see a problem with having a C++ ImplicationLink class > inherit the ScopeLink class. The only think to take care of is to have no > variable extracted when there are 2 arguments, that is when using the non > sugar for of the ImplicationLink > > ImplicationLink > P > Q > > I think that is what the code does, but if it doesn't or its buggy it > should be fixed, I'm happy to fix it as soon as unit test fails because of > it. > > Nil > > > >> On Wed, Oct 12, 2016 at 4:08 PM, Linas Vepstas <linasveps...@gmail.com> >> wrote: >> >>> >>> >>> On Wed, Oct 12, 2016 at 12:53 PM, Nil Geisweiller < >>> ngeis...@googlemail.com> >>> wrote: >>> >>>> >>>> >>>> >>>> On 10/12/2016 06:55 PM, Linas Vepstas wrote: >>>> >>>>> >>>>> 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)? >>>>> >>>> >>>> >>>> X is supposed to be free in the ImplicationLink, >>>> >>> >>> >>> Really? The C++ code has ImplicationLink inheriting from ScopeLink, thus >>> making it bound. Perhaps ImplicationLink should not inherit from >>> ScopeLink? >>> >>> ? >>> >>> >>>> bound to the PutLink. Yes I am sure I want it free in the >>>> ImplicationLink. >>>> Having ImplicationLink inherit Scope should not prevent that. The syntax >>>> itself is ambiguity free, if there are ambiguities in the code it's a >>>> bug >>>> and it should be fixed. >>>> >>>> Again, I'm happy to fix anything related to that once the issue >>>> reappears. >>>> >>>> Nil >>>> >>>> >>>>> --linas >>>>> >>>>> >>>>> On Wed, Oct 12, 2016 at 10:39 AM, Nil Geisweiller >>>>> <ngeis...@googlemail.com <mailto: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> >>>>> <mailto: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>> >>>>> <mailto: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>> >>>>> <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/CAHrUA35RygO2MWjZJ >>> 2MfEA2TCvBC8kjvFDVvj2-CNmqP2e9PLQ%40mail.gmail.com. >>> >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> >> > -- > 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/ms > gid/opencog/57FF2210.9090304%40gmail.com. > > For more options, visit https://groups.google.com/d/optout. > -- 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/CAHrUA34iyZq3CBTSPh80GLdBMH2SFBHKpr4NyzqQ5_PGXXSQ5g%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.