```    1/*
2This program is inspired by the morphological characteristics of the Stromboli
3Italian island.
4The Stromboli island is located at the intersection of two geological faults,
5one in the southwest-northeast direction, the other in the east-west direction,
6and contains one of the three volcanoes that are active in Italy.
7This program models the possibility that an eruption or an earthquake occurs at Stromboli.
8
9From
10Elena Bellodi and Fabrizio Riguzzi. Structure learning of probabilistic logic
11programs by searching the clause space. Theory and Practice of Logic
12Programming, FirstView Articles, 2014
13*/
14:- use_module(library(viterbi)).   15
16:- if(current_predicate(use_rendering/1)).   17:- use_rendering(c3).   18:- endif.   19
20:- viterbi.   21
24eruption : 0.6 ; earthquake : 0.3 :-
25  sudden_energy_release,
26  fault_rupture(_).
27% If there is a sudden energy release under the island and there is a fault
28% rupture, then there can be an eruption of the volcano on the island with
29% probability 0.6 or an earthquake in the area with probability 0.3
30
31sudden_energy_release : 0.7.
32% The energy release occurs with probability 0.7
33
34fault_rupture(southwest_northeast) : 0.6.
35fault_rupture(east_west) : 0.55.
36
?- `viterbi(eruption,P,E)`. P = 0.252, E = [`rule(0, eruption, [eruption:0.6, earthquake:0.3, '':0.10000000000000003], [sudden_energy_release, fault_rupture(southwest_northeast)])`, `rule(1, sudden_energy_release, [sudden_energy_release:0.7, '':0.30000000000000004], [])`, `rule(2, fault_rupture(southwest_northeast), [fault_rupture(southwest_northeast):0.6, '':0.4], [])`].