Re: syntax question

[email protected]
Newsgroups gmane.comp.ai.powerloom
Message-ID <[email protected]>
>>>>> "TR" == Thomas Russ <[email protected]> writes:

    TR> On Feb 13, 2006, at 3:03 PM, [email protected] wrote:

    >> 
    >> Is there a convenient way of defining a concept as a PROPER
    >> sub-concept of another?  IIUC, defconcept with super-concepts makes no
    >> assumptions about the new concept being a proper sub-concept of its
    >> parent.  However, for a lot of modeling applications, this is the
    >> standard case.  It would be nice if there was a handy syntactic form
    >> for this.  Ordinarily, I would simply define a Lisp macro to generate
    >> an expansion that was what I wanted, but the combination of Stella +
    >> macros is a daunting one...

    TR> There is generally no need for this.

    TR> While it is true that PowerLoom doesn't make any particular
    TR> assumptions about whether any subconcept is, in fact, a proper
    TR> subconcept or an equivalent concept, any of the normal means
    TR> of defining a subconcept will give you what is operationally
    TR> the effect you want.

[...snip...]

    TR> If you really want to deny the equivalence, this is possible
    TR> by adding a particular rule that denies the subset-of relation:

    TR> (defconcept a)
    TR> |c|A
    TR> ? (defconcept b (?x a)
    TR>    :axioms (not (subset-of a b)))
    TR> |c|B
    TR> ? (defconcept c (?x b)
    TR>    :axioms (not (subset-of b c)))
    TR> |c|C
    TR> ? (retrieve all (proper-subrelation a ?x))
    TR> There are 2 solutions:
    TR>    #1: ?X=B
    TR>    #2: ?X=C
    TR> ? (retrieve all (proper-subrelation b ?x))
    TR> There is 1 solution:
    TR>    #1: ?X=C
    TR> ? (ask (not (subset-of a c)))
    TR> TRUE

Thank you very much.  I wasn't sure exactly how to do this, and you've
answered my question handily.

Now, if I were just writing common-lisp, I would do something like

(defmacro my-concept (conc-name supers &rest args)
  `(defconcept ',conc-name ',supers
     ,@args
     :axioms ,(loop for x in supers
                 collect `(not (subset-of ',conc-name ',x)))))

[I know that's not quite right, but you get the idea.]

Related to this, have you found a nice idiom for capturing disjoint
subclassing?  

I see that DISJOINT, COVERING, and DISJOINT-COVERING provide the raw
materials for this.  I was just wondering if you've found a
particularly convenient syntactic sugar for this, to make it easy to
develop an axiomatization.  Perhaps it's not necessary, and I just
need to accustom myself to the notation as is.

thanks,
Robert
     
-- 
Robert P. Goldman
Senior Scientist
Smart Information Flow Technologies (d/b/a SIFT, LLC)

211 N. First St., Suite 300
Minneapolis, MN 55401

Voice:	(612) 384-3454
Email:    [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.