Home > Archive > Prolog > January 2006 > Using rules in abductive way
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
Using rules in abductive way
|
|
| seguso 2006-01-17, 7:04 pm |
| Hi,
Suppose I have a set of rules such as
rule( [push(S, C), chair(C)] , fall(C)).
which intuitively means "if C is a chair and someone S pushes it, C
falls".
I would like to program a
follows(+Facts, -Infs)
predicate which performs both deduction and abduction. Abduction, in
particular, must sometimes assume the existence of new (skolem)
individuals.
Example of deduction:
follows( [ push(jack, c1), chair(c1) ], [fall(c1)] ).
Example of abduction:
follows( [fall(c1)], [chair(c1), push(skolem1(c1), c1) ]).
How can I define such a predicate follows/2? I suppose I have to use
term_variables, but I am not sure how. I am using swi-prolog.
Thank you very much for any help,
Maurizio
| |
|
| seguso wrote:
> predicate which performs both deduction and abduction. Abduction, in
> particular, must sometimes assume the existence of new (skolem)
> individuals.
[...]
> How can I define such a predicate follows/2? I suppose I have to use
> term_variables, but I am not sure how. I am using swi-prolog.
No offence meant (this time :-) but abduction (and dealing with skolem
variables) is a serious business which transcends programming tricks.
If I remember well, at least three people in our research group have
made a PhD related to abduction:
Lode Missiaen, Kristof Van Belleghem and Marc Denecker.
If you are seriously interested in abduction get in contact with them.
Cheers
Bart Demoen
| |
| seguso 2006-01-18, 7:58 am |
| You scared the hell out of me. I did not imagine the question was so
difficult. :-) Thanks for the info.
| |
| Bart Demoen 2006-01-18, 7:58 am |
| seguso wrote:
> You scared the hell out of me. I did not imagine the question was so
> difficult. :-) Thanks for the info.
>
Don't stop at being scared :-)
There are many people who made phd's about tabling, and still, often
one can program some pragmatic but useful memoization.
Same for abduction.
Maybe you don't want the most general stuff, that works in recursive
programs, deals with negation, derives minimal sets of abduced literals,
with a minimal number of new skolem constants etc. In that case, you
might still do useful stuff.
So, how far did you intend to go ?
Cheers
Bart Demoen
| |
|
|
|
|
|