Library for Probabilistic Functional Logic Programming
Author: Sandra Dylus, Jan Christiansen, Finn Teegen, Jan Tikovsky
Version: June 2018
enum
:: [a] > [Float] > Dist a
Creates a distribution based on a given list of events and another list providing the corresponding probabilities. 
uniform
:: [a] > Dist a
Creates a uniform distribution based on a given list of events. 
certainly
:: a > Dist a
Creates a singleeventdistribution with probability 1.0 .

(>>>=)
:: Dist a > (a > Dist b) > Dist b
Combines two (dependent) distributions. 
joinWith
:: (a > b > c) > Dist a > Dist b > Dist c
Combines two (independent) distributions with respect to a given function. 
(??)
:: (a > Bool) > Dist a > Float
Queries a distribution for the probabilitiy of events that satisfy a given predicate. 
pick
:: (() > a) > a
Triggers the evaluation of a runtime choice value (see type synonym RT ).

replicateDist
:: Int > (() > Dist a) > Dist [a]
Independently replicates a distribution a given number of times. 
Probabilities. Floating point numbers are used to model probabilities.
Type synonym: Probability = Float
Probability distributions.
Distributions are abstract and can only be created using the functions
provided by this library, e.g., enum
and uniform
. Internally, Curry's
builtin nondeterminism is used to model distributions with more than one
eventprobability pair.
Constructors:
Runtime choice values. Currently, the only way to construct a runtime
choice value is to explicitly use a lambda abstraction. The evaluation of
a runtime choice can be triggered by the function pick
.
Type synonym: RT a = () > a
Creates a distribution based on a given list of events and another list
providing the corresponding probabilities. This function also ensures that
the relevant probabilities add up to 
Creates a uniform distribution based on a given list of events. The list of events must be nonempty. 
Creates a singleeventdistribution with probability

Combines two (dependent) distributions.

Combines two (independent) distributions with respect to a given function. 
Queries a distribution for the probabilitiy of events that satisfy a given predicate.

Triggers the evaluation of a runtime choice value (see type synonym 
Independently replicates a distribution a given number of times. In order
to behave properly, the given distribution is required to be a runtime
choice value (see type synonym 