'/*'          Comment.Multiline
'\nMixture of two Gaussians. A biased coin is thrown, if it lands heads X in mix(X)\nis sampled from a Gaussian with mean 0 and variance 1. if it lands tails X is\nsampled from a Gaussian with mean 5 and variance 2.\nThe example illustrates the use of continuous random variables and\nthe use of sampling, including\nrejection sampling and Metropolis' Comment.Multiline
'/'           Comment.Multiline
'Hastings. Moreover the example\nillustrates the use of the predicate histogram' Comment.Multiline
'/'           Comment.Multiline
'3 for graphing the\nprobability density function of continuous random variables.\n' Comment.Multiline

'*/'          Comment.Multiline
'\n'          Text

':-'          Operator
' '           Text
'use_module'  Name.Function
'('           Punctuation
'library'     Name.Function
'('           Punctuation
'mcintyre'    Literal.String.Atom
')'           Punctuation
')'           Punctuation
'.'           Punctuation
'\n\n'        Text

':-'          Operator
' '           Text
'if'          Name.Function
'('           Punctuation
'current_predicate' Name.Function
'('           Punctuation
'use_rendering' Literal.String.Atom
'/'           Operator
'1'           Literal.Number.Integer
')'           Punctuation
')'           Punctuation
'.'           Punctuation
'\n'          Text

':-'          Operator
' '           Text
'use_rendering' Name.Function
'('           Punctuation
'c3'          Literal.String.Atom
')'           Punctuation
'.'           Punctuation
'\n'          Text

':-'          Operator
' '           Text
'endif'       Literal.String.Atom
'.'           Punctuation
'\n'          Text

':-'          Operator
' '           Text
'mc'          Literal.String.Atom
'.'           Punctuation
'\n'          Text

':-'          Operator
' '           Text
'begin_lpad'  Literal.String.Atom
'.'           Punctuation
'\n\n'        Text

'heads'       Literal.String.Atom
':'           Punctuation
'0.6'         Literal.Number.Float
';'           Punctuation
'tails'       Literal.String.Atom
':'           Punctuation
'0.4'         Literal.Number.Float
'.'           Punctuation
' \n'         Text

'% a coin is thrown. The coin is biased: with probability 0.6 it lands heads,' Comment.Single
'\n'          Text

'% with probability 0.4 it lands tails' Comment.Single
'\n\n'        Text

'g'           Name.Function
'('           Punctuation
'X'           Name.Variable
')'           Punctuation
':'           Operator
' '           Text
'gaussian'    Name.Builtin
'('           Punctuation
'X'           Name.Variable
','           Punctuation
'0'           Literal.Number.Integer
','           Punctuation
' '           Text
'1'           Literal.Number.Integer
')'           Punctuation
'.'           Punctuation
'\n'          Text

'% X in g(X)  follows a Gaussian distribution with mean 0 and variance 1' Comment.Single
'\n'          Text

'h'           Name.Function
'('           Punctuation
'X'           Name.Variable
')'           Punctuation
':'           Operator
' '           Text
'gaussian'    Name.Builtin
'('           Punctuation
'X'           Name.Variable
','           Punctuation
'5'           Literal.Number.Integer
','           Punctuation
' '           Text
'2'           Literal.Number.Integer
')'           Punctuation
'.'           Punctuation
'\n'          Text

'% X in h(X)  follows a Gaussian distribution with mean 5 and variance 2' Comment.Single
'\n\n'        Text

'mix'         Name.Function
'('           Punctuation
'X'           Name.Variable
')'           Punctuation
' '           Text
':-'          Operator
' '           Text
'heads'       Literal.String.Atom
','           Punctuation
' '           Text
'g'           Name.Function
'('           Punctuation
'X'           Name.Variable
')'           Punctuation
'.'           Punctuation
'\n'          Text

'% if the coin lands heads, X in mix(X) is given by g(X)' Comment.Single
'\n'          Text

'mix'         Name.Function
'('           Punctuation
'X'           Name.Variable
')'           Punctuation
' '           Text
':-'          Operator
' '           Text
'tails'       Literal.String.Atom
','           Punctuation
' '           Text
'h'           Name.Function
'('           Punctuation
'X'           Name.Variable
')'           Punctuation
'.'           Punctuation
'\n'          Text

'% if the coin lands tails, X in mix(X) is given by h(X)' Comment.Single
'\n\n'        Text

':-'          Operator
' '           Text
'end_lpad'    Literal.String.Atom
'.'           Punctuation
'\n\n'        Text

'hist_uncond' Name.Function
'('           Punctuation
'Samples'     Name.Variable
','           Punctuation
'NBins'       Name.Variable
','           Punctuation
'Chart'       Name.Variable
')'           Punctuation
':-'          Operator
'\n  '        Text
'mc_sample_arg' Name.Function
'('           Punctuation
'mix'         Name.Function
'('           Punctuation
'X'           Name.Variable
')'           Punctuation
','           Punctuation
'Samples'     Name.Variable
','           Punctuation
'X'           Name.Variable
','           Punctuation
'L0'          Name.Variable
')'           Punctuation
','           Punctuation
'\n  '        Text
'histogram'   Name.Function
'('           Punctuation
'L0'          Name.Variable
','           Punctuation
'Chart'       Name.Variable
','           Punctuation
'['           Punctuation
'nbins'       Name.Function
'('           Punctuation
'NBins'       Name.Variable
')'           Punctuation
']'           Punctuation
')'           Punctuation
'.'           Punctuation
'\n'          Text

'% take SAmples samples of X in mix(X) and draw a histogram with NBins bins representing ' Comment.Single
'\n'          Text

'% the probability density of X ' Comment.Single
'\n\n'        Text

'hist_rej_heads' Name.Function
'('           Punctuation
'Samples'     Name.Variable
','           Punctuation
'NBins'       Name.Variable
','           Punctuation
'Chart'       Name.Variable
')'           Punctuation
':-'          Operator
'\n  '        Text
'mc_rejection_sample_arg' Name.Function
'('           Punctuation
'mix'         Name.Function
'('           Punctuation
'X'           Name.Variable
')'           Punctuation
','           Punctuation
'heads'       Literal.String.Atom
','           Punctuation
'Samples'     Name.Variable
','           Punctuation
'X'           Name.Variable
','           Punctuation
'L0'          Name.Variable
')'           Punctuation
','           Punctuation
'\n  '        Text
'histogram'   Name.Function
'('           Punctuation
'L0'          Name.Variable
','           Punctuation
'Chart'       Name.Variable
','           Punctuation
'['           Punctuation
'nbins'       Name.Function
'('           Punctuation
'NBins'       Name.Variable
')'           Punctuation
']'           Punctuation
')'           Punctuation
'.'           Punctuation
'\n'          Text

'% take Samples samples of X in mix(X) given that heads was true using ' Comment.Single
'\n'          Text

'% rejection sampling and draw an' Comment.Single
'\n'          Text

'% histogram with NBins bins representing the probability density of X' Comment.Single
'\n\n'        Text

'hist_mh_heads' Name.Function
'('           Punctuation
'Samples'     Name.Variable
','           Punctuation
'Lag'         Name.Variable
','           Punctuation
'NBins'       Name.Variable
','           Punctuation
'Chart'       Name.Variable
')'           Punctuation
':-'          Operator
'\n  '        Text
'mc_mh_sample_arg' Name.Function
'('           Punctuation
'mix'         Name.Function
'('           Punctuation
'X'           Name.Variable
')'           Punctuation
','           Punctuation
'heads'       Literal.String.Atom
','           Punctuation
'Samples'     Name.Variable
','           Punctuation
'X'           Name.Variable
','           Punctuation
'L0'          Name.Variable
','           Punctuation
'['           Punctuation
'lag'         Name.Function
'('           Punctuation
'Lag'         Name.Variable
')'           Punctuation
']'           Punctuation
')'           Punctuation
','           Punctuation
'\n  '        Text
'histogram'   Name.Function
'('           Punctuation
'L0'          Name.Variable
','           Punctuation
'Chart'       Name.Variable
','           Punctuation
'['           Punctuation
'nbins'       Name.Function
'('           Punctuation
'NBins'       Name.Variable
')'           Punctuation
']'           Punctuation
')'           Punctuation
'.'           Punctuation
'\n'          Text

'% take Samples samples of X in mix(X) given that heads was true using ' Comment.Single
'\n'          Text

'% Metropolis-Hastings and draw an' Comment.Single
'\n'          Text

'% histogram with NBins bins representing the probability density of X' Comment.Single
'\n\n'        Text

'hist_rej_dis' Name.Function
'('           Punctuation
'Samples'     Name.Variable
','           Punctuation
'NBins'       Name.Variable
','           Punctuation
'Chart'       Name.Variable
')'           Punctuation
':-'          Operator
'\n  '        Text
'mc_rejection_sample_arg' Name.Function
'('           Punctuation
'mix'         Name.Function
'('           Punctuation
'X'           Name.Variable
')'           Punctuation
','           Punctuation
'('           Punctuation
'mix'         Name.Function
'('           Punctuation
'Y'           Name.Variable
')'           Punctuation
','           Punctuation
'Y'           Name.Variable
'>'           Operator
'2'           Literal.Number.Integer
')'           Punctuation
','           Punctuation
'Samples'     Name.Variable
','           Punctuation
'X'           Name.Variable
','           Punctuation
'L0'          Name.Variable
')'           Punctuation
','           Punctuation
'\n  '        Text
'histogram'   Name.Function
'('           Punctuation
'L0'          Name.Variable
','           Punctuation
'Chart'       Name.Variable
','           Punctuation
'['           Punctuation
'nbins'       Name.Function
'('           Punctuation
'NBins'       Name.Variable
')'           Punctuation
']'           Punctuation
')'           Punctuation
'.'           Punctuation
'\n'          Text

'% take Samples samples of X in mix(X) given that X>2 was true using ' Comment.Single
'\n'          Text

'% rejection sampling and draw an' Comment.Single
'\n'          Text

'% histogram with NBins bins representing the probability density of X' Comment.Single
'\n\n'        Text

'hist_mh_dis' Name.Function
'('           Punctuation
'Samples'     Name.Variable
','           Punctuation
'Lag'         Name.Variable
','           Punctuation
'NBins'       Name.Variable
','           Punctuation
'Chart'       Name.Variable
')'           Punctuation
':-'          Operator
'\n  '        Text
'mc_mh_sample_arg' Name.Function
'('           Punctuation
'mix'         Name.Function
'('           Punctuation
'X'           Name.Variable
')'           Punctuation
','           Punctuation
'('           Punctuation
'mix'         Name.Function
'('           Punctuation
'Y'           Name.Variable
')'           Punctuation
','           Punctuation
'Y'           Name.Variable
'>'           Operator
'2'           Literal.Number.Integer
')'           Punctuation
','           Punctuation
'Samples'     Name.Variable
','           Punctuation
'X'           Name.Variable
','           Punctuation
'L0'          Name.Variable
','           Punctuation
'['           Punctuation
'lag'         Name.Function
'('           Punctuation
'Lag'         Name.Variable
')'           Punctuation
']'           Punctuation
')'           Punctuation
','           Punctuation
'\n  '        Text
'histogram'   Name.Function
'('           Punctuation
'L0'          Name.Variable
','           Punctuation
'Chart'       Name.Variable
','           Punctuation
'['           Punctuation
'nbins'       Name.Function
'('           Punctuation
'NBins'       Name.Variable
')'           Punctuation
']'           Punctuation
')'           Punctuation
'.'           Punctuation
'\n'          Text

'% take Samples samples of X in mix(X) given that X>2 was true using ' Comment.Single
'\n'          Text

'% Metropolis-Hastings and draw an' Comment.Single
'\n'          Text

'% histogram with NBins bins representing the probability density of X' Comment.Single
'\n\n\n'      Text

'/*'          Comment.Multiline
'*'           Comment.Multiline
' <examples>\n?- hist_uncond(1000,40,G).\n% take 1000 samples of X in mix(X) and draw a histogram with 40 bins representing \n% the probability density of X \n?- mc_sample_arg(mix(X),1000,X,L),histogram(L,Chart,[nbins(40)]).\n% take 1000 samples of X in mix(X) and draw a histogram with 40 bins representing \n% the probability density of X\n?- mc_expectation(mix(X),1000,X,E).\n% E=2.017964749114414\n?- hist_rej_heads(1000,40,G).\n% take 1000 samples of X in mix(X) given that heads was true using \n% rejection sampling and draw an\n% histogram with 40 bins representing the probability density of X\n?- hist_mh_heads(1000,2,40,G).\n% take 1000 samples of X in mix(X) given that heads was true using \n% Metropolis-Hastings and draw an\n% histogram with 40 bins representing the probability density of X\n?- mc_mh_expectation(mix(X),heads,1000,X,E,[lag(2)]).\n% E=-0.018433307290594284\n?- hist_rej_dis(1000,40,G).\n% take 1000 samples of X in mix(X) given that X>2 was true using \n% rejection sampling and draw an\n% histogram with 40 bins representing the probability density of X\n?- hist_mh_dis(1000,2,40,G).\n% take 1000 samples of X in mix(X) given that X>2 was true using \n% Metropolis-Hastings and draw an\n% histogram with 40 bins representing the probability density of X\n?- mc_mh_expectation(mix(X),(mix(Y),Y>2),1000,X,E,[lag(2)]).\n\n' Comment.Multiline

'*/'          Comment.Multiline
'\n \n'       Text
