| 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]