On 08/06/2017 11:41 PM, Linas Vepstas wrote:
Search becomes a problem. Say I want to find (using the pattern matcher) all sets that contain, as members, A B C. With set notation, I have to search for (Set X A B C) where X==(VariableNode "X") for 4-elelemnt sets, and then (Set X Y A B C) for 5-element sets, and so on. To search all N-element sets, I can use the GlobeNode G and search for (Set G A B C) ... and I believe this works correctly today. However...


However, there's a problem. Sets are UnorderedLinks, and so performing the search for all six-element sets (Set X Y Z A B C) requires searching 6!=120 permutations. Well, since A B C are fixed, only 6!/3!= 20 permutations have to be searched. Of the 20, many are duplicates, since (Set X Y Z A B C) == (Set Y C X B Z A) and so on. The returned results will include all possible matchups of X Y Z to the other three members -- 3! in all -- so of the 20 permutations, only 3!=6 are actually different.

For the GlobNode, it would be similar, Now consider a set with 20 elements -- this requires 20! permutations and 20!=2.4e18 which would be months or years of CPU time. Which is absurd.. well, we could stop after finding exactly one permutation, because that is all we really want... (not sure if the current glob code does this -- probably not. Man Hin is reworking the glob code now.).

This is in contrast to the much easier problem of finding all values of X for which (Member A X) AND (Member B X) AND (Member C X) which can be done easily and quickly, without requiring permutation exploration.

I understand. In the first case, you ask to produce all assignments to complete the set(s), which grows exponentially. While in the second case you only asks sets containing A, B and C.

But these are 2 different queries.

Anyway, I see your point, I suppose we want to have both representations

Set .... A B C

and

Member
  A
  ...
Member
  B
  ...
...

and use which ever one fits best. Converting from one to another should be easy using PLN.

Regarding other set-like operators, And, Or, etc, I think I agree with your proposal to be able to break them up. So for instance we may turn

And A B C

into

AndMember
  A
  And A B C
AndMember
  B
  And A B C
...

However I don't think the more "atomic" representation should replace the more "holistic" one, both should be allowed in parallel, right? Would that be for backward compatibility at least. Then if it becomes obvious that the atomic form is superior we can deprecate the holistic form.

    EquivalenceScope (stv 1 1)
       <vardecl>
       P
       Q

    is merely sugar syntax for

    Equivalence (stv 1 1)
       Lambda <vardecl> P
       Lambda <vardecl> Q

    This sugar syntax is mostly useful for humans, because <vardecl> is
    not duplicated in the AtomSpace anyway.


Well, but that's not true! (Scope X P(X)==Q(X)) is not the same as (Scope X P(X)) == (Scope X Q(X)) because the latter can be alpha-rewritten as (Scope X P(X)) == (Scope Y Q(Y)) which is something completely different!

Agreed, they're not the same in the logic that you describe, but in PLN they are, because the former

(Scope X   P(X)==Q(X))

is just *syntactic sugar* for the latter,

(Scope X  P(X)) == (Scope X  Q(X))

which is what really matters in a probabilistic interpretation.

I recall that the probabilistic interpretation of

Equivalence (stv 1 1) A B

is

P(A inter B|A union B)

It is explained here but unfortunately the wiki can't render it

http://wiki.opencog.org/w/ExtensionalSimilarityLink

Nil

-------
But whatever. All I am saying is that we should allow the following form:

EquivalenceScope (stv 1 1)
   <empty vardecl>
   P
   Q

  That's all, nothing more.

--linas


    Nil


        --linas


             Nil


                 An alternate way of thinking about partitions is as
        "coloring".
                 Pick a set, pick N colors, and then insist that every
        member of
                 the set must be colored with one of the N colors.  Then
        coloring
                 is a lot like partitioning. e.g.

                 ColorLink
                         ColorNode "Red"
                         SomeAtom

                 or maybe

                 EvaluationLink
                        ColorNode "red"
                        SomeAtom


                 Color names could, of course, be anything: e.g. the
        names of the
                 partitions.

                 In one sense, colorings are identical to partitions; on the
                 other hand, they can feel "more general" because you
        can insist
                 or demand that certain properties of colorings hold,
        e.g. ramsey
                 theory and reverse mathematics.

                 You could *force* aka gaurantee uniqueness of color
        assignment
                 by using a StateLink:

                 StateLink
                        Some Atom
                        ColorNode "red"

                 The atomspace automatically gaurantees that one and
        only one
                 color can be assigned. (although it can be changed)  The
                 UniqueLink allows only one assignment, and it cannot be
                 changed.  These are nice, because they help avoid
        programmer
                 error. by offering automatic guarantees.

                 You don't have to use atoms for this, either. You could use
                 values.   Recall, values are almost just like atoms,
        except that
                 you can't put them into the atomspace, and you cannot
                 pattern-match or patttern-mine them.   But you can
        store color
                 or partition data in values, if you wanted to.  Note
        that values
                 *can* hold atoms!  There is a LinkValue that is like a
        link, but
                 it can hold atoms or values or a mixture of both.

                 --linas



                      This
                      semantics is implicit in PartitionNode, whereas if
        you just use
                      MemberLink you'd need to spell out this "partition"
                 semantics using a
                      bunch of AndLinks each time...

                      As a world-class advocate of the partition
        function I think
                 you may
                      like PartitionNode after you reflect on it
        infinitesimally
                 more...

                      -- ben

                      On Tue, Aug 1, 2017 at 5:54 AM, Linas Vepstas
                      <linasveps...@gmail.com
        <mailto:linasveps...@gmail.com> <mailto:linasveps...@gmail.com
        <mailto:linasveps...@gmail.com>>
                 <mailto:linasveps...@gmail.com
        <mailto:linasveps...@gmail.com> <mailto:linasveps...@gmail.com
        <mailto:linasveps...@gmail.com>>>>
                 wrote:
                       > Hi Ben, Mike,
                       >
                       > On Fri, Jul 21, 2017 at 9:41 PM, Ben Goertzel
                 <b...@goertzel.org <mailto:b...@goertzel.org>
        <mailto:b...@goertzel.org <mailto:b...@goertzel.org>>
                      <mailto:b...@goertzel.org <mailto:b...@goertzel.org>
        <mailto:b...@goertzel.org <mailto:b...@goertzel.org>>>> wrote:
                       >>
                       >> Some interesting representational issues have
        come up
                 in the context
                       >> of Atomspace representation of pathways, which
        appear
                 to have more
                       >> general implications…
                       >>
                       >> It seems the semantics we want for a
        biological pathway
                 is sort of
                       >> like “the pathway P is a set of relationships
        R1, R2,
                 …, R20” in
                      kinda
                       >> the same sense that “the human body is a set
        of organs:
                 brain,
                      heart,
                       >> lungs, legs, etc.”
                       >>
                       >> First of all it seems what we have here is a
        part of
                      relationship… maybe
                       >> we want
                       >>
                       >> PartLink
                       >>     ConceptNode “heart”
                       >>     ConceptNode “human-body”
                       >>
                       >> and
                       >>
                       >> PartLink
                       >>     >relationship<
                       >>     >pathway<
                       >>
                       >> PartLink and PartOfLink have come and gone in
                       >> OpenCog/Novamente/Webmind history...
                       >>
                       >> An argument that PartLink should have fundamental
                 status and a
                       >> well-defined fuzzy truth value is given in
        this paper:
                       >>
                       >>
        https://www.academia.edu/1016959/Fuzzy_mereology
        <https://www.academia.edu/1016959/Fuzzy_mereology>
                 <https://www.academia.edu/1016959/Fuzzy_mereology
        <https://www.academia.edu/1016959/Fuzzy_mereology>>
                      <https://www.academia.edu/1016959/Fuzzy_mereology
        <https://www.academia.edu/1016959/Fuzzy_mereology>
                 <https://www.academia.edu/1016959/Fuzzy_mereology
        <https://www.academia.edu/1016959/Fuzzy_mereology>>>
                       >>
                       >> However what we need for biological pathways
        and human
                 bodies seems
                       >> like a bit more.   We want to say that a human
        body
                 consists of a
                       >> certain set of parts... not just that each of
        them is a
                 part...     We're
                       >> doing a decomposition.
                       >>
                       >> One way to do this would be
                       >>
                       >> PartitionLink
                       >>    ConceptNode “human-body”
                       >>    ListLink
                       >>       ConceptNode “legs”
                       >>       ConceptNode “arms”
                       >>       ConceptNode “brain”
                       >>       etc.
                       >>
                       >> Relatedly, we could also have
                       >
                       >
                       > As mentioned earlier, there are several
        problems with this
                      format.  One is
                       > the "oops I forgot to mention xyz in the list"
        or "gosh
                 I should
                      have left
                       > out pqr" and this becomes a big problem:  you
        have to
                 delete the
                       > PartitionLink, delete the ListLink, create a
        new list and
                      partition.  In the
                       > meanwhile, some other subsystem might be holding a
                 handle to the old,
                       > now-wrong PartitionLink, and there is no
        effective way of
                      announcing "hey
                       > stop using that old thing, get my new thing now".
                       >
                       > A second problem is that the above doesn't have
        anywhere
                 to hang
                      addtional
                       > data: e.g. "legs are a big part of the human body,
                 having a mas
                      of nearly
                       > half of the body." You can't just slap that on as a
                 (truth)value,
                      cause
                       > there's no where  to put that value.
                       >
                       > Third problem is that large list-links are hard to
                 handle in the
                      pattern
                       > matcher. Its much much harder to write a query
        of the
                 form  "find
                      me all
                       > values of $X where
                       >
                       > PartitionLink
                       >    ConceptNode “human-body”
                       >    ListLink
                       >       ConceptNode “legs”
                       >       VariableNode  “$X”
                       >       ConceptNode “brain”
                       >
                       > because, ... well the ListLink is an ordrerd
        link, not an
                      unordered link. If
                       > you forget to include the pqr (added above)
        then the
                 search will
                      fail. You
                       > could try to use unordered links and globnodes, but
                 these lead to
                      other
                       > difficulties, including the n! possible
        permutations of an
                      unordered link
                       > become large n-factorial large when the
        unordered link has n
                      items in it.
                       > Recall that old factorial-70 trick used to make
                 calculators overflow.
                       >
                       > In general, any link with more than 3 or 4 or 5
        items in
                 it is
                      bad news.
                       > This is a generic statement about knowledge
                 representation in
                      opencog.
                       >
                       >
                       >> OverlappingPartitionLink
                       >>     C
                       >>     L
                       >>
                       >> if we want to encompass cases where the partition
                 elements in L can
                       >> overlap; or
                       >>
                       >> CoveringLink
                       >>     C
                       >>     L
                       >>
                       >> if we want to encompass cases where the partition
                 elements in L can
                       >> overlap, AND the elements in L may encompass
        some stuff
                 that’s
                      not in
                       >> C
                       >>
                       >> For the pathway case, we could then say
                       >>
                       >> PartitionLink
                       >>     ConceptNode “Krebs cycle”
                       >>     ListLink
                       >>         >relationship 1<
                       >>         >relationship 2<
                       >>         etc.
                       >>
                       >>
                       >> Now this solves the semantics problem but
        doesn’t solve the
                      problem of
                       >> having a long ListLink….  A biological pathway
        might
                 have 100s or
                       >> 1000s of relationships in it, and we don't
        usually want
                 to make
                      lists
                       >> that big in the Atomspace...
                       >>
                       >> To solve this we could do something like (for
        the human
                 body case)
                       >>
                       >> PartitionLink
                       >>    ConceptNode “human-body”
                       >>    PartitionNode “body-partition-1”
                       >>
                       >> PartitionElementLink
                       >>    PartitionNode “body-partition-1"
                       >>    ConceptNode “legs”
                       >>
                       >> PartitionElementLink
                       >>    PartitionNode “body-partition-1"
                       >>    ConceptNode “arms”
                       >>
                       >> etc.
                       >>
                       >> and similarly (for the biological pathway case)
                       >>
                       >> PartitionLink
                       >>     ConceptNode “Krebs cycle”
                       >>     PartitionNode “krebs-partition-1”
                       >>
                       >> PartitionElementLink
                       >>     PartitionNode “krebs-partition-1"
                       >>     >relationship 1<
                       >>
                       >> PartitionElementLink
                       >>     PartitionNode “krebs-partition-1”
                       >>     >relationship 2<
                       >
                       >
                       >
                       > Yeah, sure. Not sure why the existing
        MemberLink is not
                      sufficient for your
                       > purposes. The MemberLink has
        reasonably-well-defined
                 semantics,
                      there are
                       > already rules for handling it in PLN (or there
        will be
                 rules -- I
                      think its
                       > something Nil has thought about)   I'm not
        clear on why
                 you'd
                      want to invent
                       > something that is just like MemberLink but is
        different.
                       >
                       >>
                       >>
                       >> ...
                       >>
                       >> There could be some nice truth value math
        regarding
                 these, e.g. we
                       >> could introduce Ellerman's "logical entropy"
        which is
                 really a
                       >> partition entropy.   There are also
        connections with
                 some recent
                       >> theoretical work I've been doing on
        "graphtropy" (using
                 "distinction
                       >> graphs" that generalize partitions), which
        I'll post a
                 paper on
                       >> sometime in the next week or two....   But
        that will be
                 another
                      email
                       >> for another day...
                       >
                       >
                       > Yeah graphical-entropy is something that I keep
        trying
                 to work
                      on, except
                       > that every new urgent disaster of the day
        distracts me
                 from it.
                       >
                       > --linas
                       >>
                       >>
                       >> -- Ben
                       >>
                      > --
                      > 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
        <mailto:opencog%2bunsubscr...@googlegroups.com>
                 <mailto:opencog%2bunsubscr...@googlegroups.com
        <mailto:opencog%252bunsubscr...@googlegroups.com>>
                      <mailto:opencog%2bunsubscr...@googlegroups.com
        <mailto:opencog%252bunsubscr...@googlegroups.com>
                 <mailto:opencog%252bunsubscr...@googlegroups.com
        <mailto:opencog%25252bunsubscr...@googlegroups.com>>>.
                      > To post to this group, send email to
        opencog@googlegroups.com <mailto:opencog@googlegroups.com>
        <mailto:opencog@googlegroups.com <mailto:opencog@googlegroups.com>>
                 <mailto:opencog@googlegroups.com
        <mailto:opencog@googlegroups.com>
        <mailto:opencog@googlegroups.com
        <mailto:opencog@googlegroups.com>>>.

                      > Visit this group at
        https://groups.google.com/group/opencog
        <https://groups.google.com/group/opencog>
                 <https://groups.google.com/group/opencog
        <https://groups.google.com/group/opencog>>
                      <https://groups.google.com/group/opencog
        <https://groups.google.com/group/opencog>
                 <https://groups.google.com/group/opencog
        <https://groups.google.com/group/opencog>>>.
                      > To view this discussion on the web visit
                       >
        
https://groups.google.com/d/msgid/opencog/CAHrUA35kQx%3DyDcLTynrThvi%3DrAVa15D-1PSwZpK_37Q%3DjZhcfw%40mail.gmail.com
        
<https://groups.google.com/d/msgid/opencog/CAHrUA35kQx%3DyDcLTynrThvi%3DrAVa15D-1PSwZpK_37Q%3DjZhcfw%40mail.gmail.com>
<https://groups.google.com/d/msgid/opencog/CAHrUA35kQx%3DyDcLTynrThvi%3DrAVa15D-1PSwZpK_37Q%3DjZhcfw%40mail.gmail.com
        
<https://groups.google.com/d/msgid/opencog/CAHrUA35kQx%3DyDcLTynrThvi%3DrAVa15D-1PSwZpK_37Q%3DjZhcfw%40mail.gmail.com>>
<https://groups.google.com/d/msgid/opencog/CAHrUA35kQx%3DyDcLTynrThvi%3DrAVa15D-1PSwZpK_37Q%3DjZhcfw%40mail.gmail.com
        
<https://groups.google.com/d/msgid/opencog/CAHrUA35kQx%3DyDcLTynrThvi%3DrAVa15D-1PSwZpK_37Q%3DjZhcfw%40mail.gmail.com>
<https://groups.google.com/d/msgid/opencog/CAHrUA35kQx%3DyDcLTynrThvi%3DrAVa15D-1PSwZpK_37Q%3DjZhcfw%40mail.gmail.com
        
<https://groups.google.com/d/msgid/opencog/CAHrUA35kQx%3DyDcLTynrThvi%3DrAVa15D-1PSwZpK_37Q%3DjZhcfw%40mail.gmail.com>>>.
                      > For more options, visit
        https://groups.google.com/d/optout
        <https://groups.google.com/d/optout>
                 <https://groups.google.com/d/optout
        <https://groups.google.com/d/optout>>
                 <https://groups.google.com/d/optout
        <https://groups.google.com/d/optout>
                 <https://groups.google.com/d/optout
        <https://groups.google.com/d/optout>>>.



                      --
                      Ben Goertzel, PhD
        http://goertzel.org

                      "I am God! I am nothing, I'm play, I am freedom, I
        am life.
                 I am the
                      boundary, I am the peak." -- Alexander Scriabin

                      --
                      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
        <mailto:opencog%2bunsubscr...@googlegroups.com>
                 <mailto:opencog%2bunsubscr...@googlegroups.com
        <mailto:opencog%252bunsubscr...@googlegroups.com>>
                      <mailto:opencog%2bunsubscr...@googlegroups.com
        <mailto:opencog%252bunsubscr...@googlegroups.com>
                 <mailto:opencog%252bunsubscr...@googlegroups.com
        <mailto:opencog%25252bunsubscr...@googlegroups.com>>>.
                      To post to this group, send email to
        opencog@googlegroups.com <mailto:opencog@googlegroups.com>
        <mailto:opencog@googlegroups.com <mailto:opencog@googlegroups.com>>
                      <mailto:opencog@googlegroups.com
        <mailto:opencog@googlegroups.com>
                 <mailto:opencog@googlegroups.com
        <mailto:opencog@googlegroups.com>>>.
                      Visit this group at
        https://groups.google.com/group/opencog
        <https://groups.google.com/group/opencog>
                 <https://groups.google.com/group/opencog
        <https://groups.google.com/group/opencog>>
                      <https://groups.google.com/group/opencog
        <https://groups.google.com/group/opencog>
                 <https://groups.google.com/group/opencog
        <https://groups.google.com/group/opencog>>>.
                      To view this discussion on the web visit
        
https://groups.google.com/d/msgid/opencog/CACYTDBdm6M1y18G%3DQi%3D_rjJcdrEb5eAmx8ntxffKoRw_dG1OYw%40mail.gmail.com
        
<https://groups.google.com/d/msgid/opencog/CACYTDBdm6M1y18G%3DQi%3D_rjJcdrEb5eAmx8ntxffKoRw_dG1OYw%40mail.gmail.com>
<https://groups.google.com/d/msgid/opencog/CACYTDBdm6M1y18G%3DQi%3D_rjJcdrEb5eAmx8ntxffKoRw_dG1OYw%40mail.gmail.com
        
<https://groups.google.com/d/msgid/opencog/CACYTDBdm6M1y18G%3DQi%3D_rjJcdrEb5eAmx8ntxffKoRw_dG1OYw%40mail.gmail.com>>
<https://groups.google.com/d/msgid/opencog/CACYTDBdm6M1y18G%3DQi%3D_rjJcdrEb5eAmx8ntxffKoRw_dG1OYw%40mail.gmail.com
        
<https://groups.google.com/d/msgid/opencog/CACYTDBdm6M1y18G%3DQi%3D_rjJcdrEb5eAmx8ntxffKoRw_dG1OYw%40mail.gmail.com>
<https://groups.google.com/d/msgid/opencog/CACYTDBdm6M1y18G%3DQi%3D_rjJcdrEb5eAmx8ntxffKoRw_dG1OYw%40mail.gmail.com
        
<https://groups.google.com/d/msgid/opencog/CACYTDBdm6M1y18G%3DQi%3D_rjJcdrEb5eAmx8ntxffKoRw_dG1OYw%40mail.gmail.com>>>.
                      For more options, visit
        https://groups.google.com/d/optout
        <https://groups.google.com/d/optout>
                 <https://groups.google.com/d/optout
        <https://groups.google.com/d/optout>>
                      <https://groups.google.com/d/optout
        <https://groups.google.com/d/optout>
                 <https://groups.google.com/d/optout
        <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
        <mailto:opencog%2bunsubscr...@googlegroups.com>
                 <mailto:opencog%2bunsubscr...@googlegroups.com
        <mailto:opencog%252bunsubscr...@googlegroups.com>>
                 <mailto:opencog+unsubscr...@googlegroups.com
        <mailto:opencog%2bunsubscr...@googlegroups.com>
                 <mailto:opencog%2bunsubscr...@googlegroups.com
        <mailto:opencog%252bunsubscr...@googlegroups.com>>>.
                 To post to this group, send email to
        opencog@googlegroups.com <mailto:opencog@googlegroups.com>
                 <mailto:opencog@googlegroups.com
        <mailto:opencog@googlegroups.com>>
                 <mailto:opencog@googlegroups.com
        <mailto:opencog@googlegroups.com>
        <mailto:opencog@googlegroups.com
        <mailto:opencog@googlegroups.com>>>.
                 Visit this group at
        https://groups.google.com/group/opencog
        <https://groups.google.com/group/opencog>
                 <https://groups.google.com/group/opencog
        <https://groups.google.com/group/opencog>>.
                 To view this discussion on the web visit
        
https://groups.google.com/d/msgid/opencog/CAHrUA34XVDQHNeYjb4r9eFjmrZxN%3DfNmE6wDQTV%2B__cJpEF3qw%40mail.gmail.com
        
<https://groups.google.com/d/msgid/opencog/CAHrUA34XVDQHNeYjb4r9eFjmrZxN%3DfNmE6wDQTV%2B__cJpEF3qw%40mail.gmail.com>
<https://groups.google.com/d/msgid/opencog/CAHrUA34XVDQHNeYjb4r9eFjmrZxN%3DfNmE6wDQTV%2B__cJpEF3qw%40mail.gmail.com
        
<https://groups.google.com/d/msgid/opencog/CAHrUA34XVDQHNeYjb4r9eFjmrZxN%3DfNmE6wDQTV%2B__cJpEF3qw%40mail.gmail.com>>
<https://groups.google.com/d/msgid/opencog/CAHrUA34XVDQHNeYjb4r9eFjmrZxN%3DfNmE6wDQTV%2B__cJpEF3qw%40mail.gmail.com?utm_medium=email&utm_source=footer
        
<https://groups.google.com/d/msgid/opencog/CAHrUA34XVDQHNeYjb4r9eFjmrZxN%3DfNmE6wDQTV%2B__cJpEF3qw%40mail.gmail.com?utm_medium=email&utm_source=footer>
<https://groups.google.com/d/msgid/opencog/CAHrUA34XVDQHNeYjb4r9eFjmrZxN%3DfNmE6wDQTV%2B__cJpEF3qw%40mail.gmail.com?utm_medium=email&utm_source=footer
        
<https://groups.google.com/d/msgid/opencog/CAHrUA34XVDQHNeYjb4r9eFjmrZxN%3DfNmE6wDQTV%2B__cJpEF3qw%40mail.gmail.com?utm_medium=email&utm_source=footer>>>.
                 For more options, visit
        https://groups.google.com/d/optout
        <https://groups.google.com/d/optout>
                 <https://groups.google.com/d/optout
        <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/c7c8c997-7449-ffba-2e90-5ae2044d3c6d%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to