Probabilistic Reasoning for Biductive Computing

This assignment uses Prolog and the biductive computing paradigm to allow a user to engage in probabilistic reasoning to judge if a certain suspect committed a certain crime. Your code should mix probabilistic and non-probabilistic facts and rules using the ProbLog variant of Prolog.

Evidence of the case

(The “case” to be investigated by a probabilistic reasoning system may be developed interactively in class. The case should include a main suspect and possibly others with alibis. If it is a homicide case, a means of committing the act (e.g., a weapon) may be included as physical evidence, and the suspect’s access to the weapon stated as a probabilistic fact with some degree of confidence. Finally, a motive should be included and the suspect’s compatibility with that motive stated as a probabilistic fact.)

(What follows is one example case, developed in our class.)

Suppose Peter has been murdered in a park with a knife. There are three suspects: Lars, James, and Linda. According to witness testimony, Lars was most likely in the park at the time (90% confident), and James and Linda might have been in the park (30% each). Three knives were found during the investigation, and expert testimony states that knife1 is likely the murder weapon (80% confident), and knife2 and knife3 likely not (10% chance of being the murder weapon). Lars owns knife1, James owns knife2, and Linda owns knife3. Expert testimony also states the owner of each knife has an 80% chance of getting access to their own knife at the time of the murder but 10% chance some other person could access the same knife. Suppose each suspect has an uncertain motive to murder Peter (50% confident each individual suspect has a motive). Finally, with certainty (100%), detectives believe that the true murderer is the person with motive, access to the murder weapon, and present at the same time and place of the victim; and they believe there is a 10% chance the murderer is the person with motive but no apparent access to weapon, location, etc.

Biductive features

With proper representation of the case in ProbLog, we should be able to ask a variety of questions like, “what is the probability James is the murderer?” This is a deductive computation in which the probabilities of the various rules are multiplied and summed.

Next, we can perform abductive inference by supposing James is the murderer and the weapon was knife1, and then asking for the probability that James had access to knife1.

Finally, for the biductive case, we can suppose a given suspect has motive and then ask if the resulting probability that the same suspect is the murderer is above a given threshold, say 50%. This query exhibits biductive computing because it mixes some known and some unknown properties of the inputs and outputs. The query asks, “which person, if we assume that person had motive, is more likely than not the murderer?” A deductive rewording of this query may look like, “suppose person X had motive; what is the probability he or she is the murderer?”, while an abductive form may look like, “suppose person X was the murderer, what is the probability he or she had motive?” With a biductive language like Prolog, and the ProbLog variant, we are free to query the system in any way that satisfies our use case, rather than coding only specific pathways as would be necessary in a traditional procedural language.

Test cases

There are no automated test cases for this assignment. However, given the description of the case above (and the probabilities involved), the following queries should give their respective probabilities when computed by ProbLog:


Submit your file.

Grading rubric


The case may be elaborated to include more suspects, specific motives, and deeper relationships among the parties involved. “Expert” testimony may be somewhat doubtful, and rumors and hearsay may be included to further muddy the certainty of any conclusion and introduce complex dependencies in the certainty of testimony. The natural world may be modeled with greater fidelity by introducing more rules of certainty, e.g., laws about not being in two places at once and laws about sizes, weights, forces, etc. Finally, rather than developing a case in class, an actual case from recent news or historical archives may be adopted.