opencog / pln

Probabilistic Logic Network (PLN) implemented on top of the Unified Rule Engine (URE). https://wiki.opencog.org/w/Probabilistic_logic_networks
Other
15 stars 19 forks source link

Introduce arbitrary union atom type #21

Open ngeiswei opened 4 years ago

ngeiswei commented 4 years ago

Proposal

It would be convenient to have a link for the following

https://en.wikipedia.org/wiki/Union_(set_theory)#Arbitrary_unions

I suggest to call it

UnionLink

I like the compactness of it, however it could be mistaken for an OrLink, so maybe another name such as

ArbitraryUnionLink
ConceptUnionLink
ClassUnionLink
SetUnionLink
CountableUnionLink
FlattenLink
FlattenUnionLink

would be better (@bgoertzel, @linas or others let me know what you think).

The other alternative is to not introduce anything and instead formulate such union with a SatisfyingSetScopeLink, but I think it's rather cumbersome.

Motivation

Intensional reasoning relies on an ontology of concepts and their subset relationships. However sometimes concepts themselves have properties, i.e. be members of other classes, and we need a way to bring these meta-properties to the mesa-level.

For instance given an ontology of concepts C1, ..., Cn, and some meta-property M, such that some Ci, ..., Ck are a members of M

(Member Ci M)
...
(Member Ck M)

We'd like to bring the meta-property M into the ontology as a pattern to consider for intensional reasoning. One way to do that is to flatten M, with the following

(UnionLink M)

then we can write

(Subset C1 (UnionLink M))

Remark

It is expected such flattening would be especially useful if the meta-property is Soggy https://wiki.opencog.org/w/Soggy_Predicates as otherwise it might lose information when transferred to the mesa-level. Think for instance of a meta-property such as "even cardinality" which could encompass the whole mesa-universe and thus lose all information once flattened.

PS Remark

This issue is making me wonder whether the notion of membership is desirable at all. Maybe one can substitute membership for atomic inheritance, i.e. a concept that can no longer be divided. That's consistent with the definition of a probability measure.

linas commented 4 years ago

Currently commented out in the atomspace types file is this:

// Measure-theoretic (probabilistic) versions of AND_LINK, OR_LINK
// These use probabilistic formulas to compute truth values.
// UNION_LINK <- OR_LINK
// INTERSECTION_LINK <- AND_LINK

Its commented out because no one actually wanted them before.

The inheritance hierarchy follows from work by Kolmogorov and others on probability and boolean algebra: First, that measure theory is exactly the same thing as probability theory, the only difference is notation, so we can use sets for anything we measure or integrate. Second, from Stone's representation theorem, we know that boolean and/or/not can always be represented as set-intersection/union/complement.

But you are not asking for this, you are asking specifically for "arbitrary union", and so yes, a better name would be ArbitraryUnion or FlattenUnion I like "flatten" because its "obvious" to programmers, vs "arbitrary" is "huh? wtf? study wikipedia for a while" which makes it a bad name.

linas commented 4 years ago

p.s. I did not understand the "motivation" section, probably because I did not think very hard about it. Why can't you just write (Subset C1 M) why do you need (Subset C1 (UnionLink M)) ? I mean, M is already a set (since it has members) even if its not a SetLink ...

I mean M has to be a set-of-sets, if it is to be flattened. Is M a set-of-sets?

ngeiswei commented 4 years ago

Yes, M is a set of set.

That's because it is produced from turning an n-ary relationship over concepts into properties, like

(Evaluation
  P
  (Link C1 C2))

|-

(Member
  C1
  (SatisfyingSetScope
    X
    (Evaluation
      P
      (Link
        X
        C2)))

That is C1 belongs the class of concepts that relate to C2 via P.

So cool we have a property over C1, but what we want for defining the intensional links (inheritance, similarity, etc) is to have subset relationships, not memberships (Why? Cause that's how it's defined in the PLN book, there might be other ways, even though the current one feels natural).

ngeiswei commented 4 years ago

ArbitraryUnion or FlattenUnion sounds good to me.

ngeiswei commented 4 years ago

Obviously another option is to avoid meta-properties to begin with... In the context of the bio-atomspace it would mean turning GO-plus relationships like "regulate" to work over genes rather than GO categories (only one side of the relationship needs to be flattened actually).

Anyway, it's clearer and clearer to me that the notion of membership is only used here as atomic concept. We could probably simplify the notations by assuming that from the get go.

linas commented 4 years ago

Well, don't forget about https://wiki.opencog.org/w/EquivalenceLink so you can say

(Equivalence (Concept "S") (SatisfyingSet ...))

that wiki page has detailed worked examples.

I still don't understand how C1 C2 and M relate. In your example, the SatsifyingSet seems to be an ordinary set, not a set-of-sets ...

ngeiswei commented 4 years ago

Well, don't forget about https://wiki.opencog.org/w/EquivalenceLink so you can say

(Equivalence (Concept "S") (SatisfyingSet ...))

Actually, to be consistent with PLN semantics it would be

(Similarity (Concept "S") (SatisfyingSet ...))

Equivalence is for predicates while Similarity is for concepts.

But I was more thinking of replacing SatisfyingSetScope with higher order constructs like currying, etc, for instance the following

  (SatisfyingSet
    (2ndCurryEvaluation
      P
      C2))

would be equivalent to

  (SatisfyingSetScope
    X
    (Evaluation
      P
      (Link
        X
        C2))

where 2ndCurryEvaluation would take P, partially evaluate it with C1 as second argument, and return the partially evaluated unary predicate.

I still don't understand how C1 C2 and M relate. In your example, the SatisfyingSet seems to be an ordinary set, not a set-of-sets ...

It is a set-of-sets because C1 and C2 are sets (since they are concepts).