For Programmers: Free Programming Magazines  


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

bmd

2006-01-17, 7:04 pm

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
Marco Gavanelli

2006-01-19, 8:01 am

seguso wrote:
> You scared the hell out of me. I did not imagine the question was so
> difficult. :-) Thanks for the info.


The good news is that there are various abductive proof-procedures you
can download from the web. Some examples (the list is far from being
exhaustive):

http://lia.deis.unibo.it/research/sciff/

http://www.cs.kuleuven.ac.be/~bertv...em/asystem.html

http://www.doc.ic.ac.uk/~ue/ciff/

Cheers,
Marco

--
http://www.ing.unife.it/docenti/MarcoGavanelli/
Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com