# Logic Program with Annotated Disjunction ### Definition A Logic Program with Annotated Disjunction (LPAD) consists of a set of rules of the following form: == h_1 : a_1 ; ... ; h_n : a_n :- b_1, ..., b_m. == where =h_i= are atoms, =b_i= are literals and =a_i= are real numbers between 0 and 1 such that the sum of all =a_i= is 1. The set of elements =|h_i : a_i|= compose the head of a rule, while the set =b_i= is the body. Disjunction in the head is represented with a semicolon and atoms in the head are separated from probabilities by a colon. If the head of a rule contains only one element =|h : 1|=, we can simpy write this element as =h=, i.e. the clause takes the form of a normal prolog clause. Therefore == h : 1 :- b_1, ..., b_m. == is equivalent to == h :- b_1, ..., b_m. == If the clause has an empty body, it can be represented like this: == h_1 : a_1 ; ... ; h_n : a_n. == If the sum of all the =a_i= is smaller than 1, an extra disjunct _null_ is assumed with probability _|1 - sum(a_i)|_. Therefore == h_1 : 0.5 ; h_2 : 0.2 :- b_1, ..., b_m. == is equivalent to == null : 0.3 ; h_1 : 0.5 ; h_2 : 0.2 :- b_1, ..., b_2. == -- - Reference: J. Vennekens, S. Verbaeten, and M. Bruynooghe. _Logic programs with annotated disjunctionsi_. In International Conference on Logic Programming, volume 3131 of LNCS, pages 195-209. Springer, 2004.
-- [Back to Tutorial](tutorial/tutorial.swinb)