@@ -7,13 +7,20 @@ type 'a expr = 'a Semi_symbolic.expr
77let const = Semi_symbolic. const
88let add (a , b ) = Semi_symbolic. add a b
99let ( +~ ) = Semi_symbolic. add
10+ let subtract (a , b ) =
11+ Semi_symbolic. add a (Semi_symbolic. mul (Semi_symbolic. const (- 1. )) b)
12+ let ( -~ ) = (fun a b -> subtract (a, b))
1013let mult (a , b ) = Semi_symbolic. mul a b
1114let ( *~ ) = Semi_symbolic. mul
15+ let div (a , b ) = Semi_symbolic. div a b
16+ let ( /~ ) = Semi_symbolic. div
17+ let expp = Semi_symbolic. exp
1218let pair (a , b ) = Semi_symbolic. pair a b
1319let array = Semi_symbolic. array
1420let matrix = Semi_symbolic. matrix
1521let lst = Semi_symbolic. lst
1622let ite = Semi_symbolic. ite
23+ let lt (a , b ) = Semi_symbolic. lt a b
1724
1825let mat_add (a , b ) = Semi_symbolic. mat_add a b
1926let ( +@~ ) = Semi_symbolic. mat_add
@@ -36,6 +43,15 @@ let gaussian (mu, var) = Semi_symbolic.gaussian mu (Semi_symbolic.const var)
3643let beta (a , b ) =
3744 Semi_symbolic. beta (Semi_symbolic. const a) (Semi_symbolic. const b)
3845let bernoulli p = Semi_symbolic. bernoulli p
46+ let binomial (n , p ) = Semi_symbolic. binomial (Semi_symbolic. const n) p
47+ let beta_binomial (n , a , b ) =
48+ Semi_symbolic. beta_binomial (Semi_symbolic. const n) a b
49+ let negative_binomial (n , p ) = Semi_symbolic. negative_binomial (Semi_symbolic. const n) p
50+ let exponential lambda = Semi_symbolic. exponential lambda
51+ let gamma (a , b ) = Semi_symbolic. gamma a b
52+ let poisson lambda = Semi_symbolic. poisson lambda
53+ let student_t (mu , tau2 , nu ) = Semi_symbolic. student_t mu tau2 nu
54+ let uniform_int (a , b ) = Semi_symbolic. categorical ~lower: a ~upper: b (fun _ -> 1. /. (float_of_int (b- a+ 1 )))
3955let mv_gaussian (mu , var ) = Semi_symbolic. mv_gaussian mu (Semi_symbolic. const var)
4056let mv_gaussian_curried var mu = mv_gaussian (mu, var)
4157
@@ -85,7 +101,10 @@ module Convert_fn_distr : Semi_symbolic.Conversion_fn with type 'a t = 'a Types.
85101 let const v = Dist_support [v, 1. ]
86102 let add d1 d2 = Dist_add (d1, d2)
87103 let mul d1 d2 = Dist_mult (d1, d2)
104+ let div _ _ = assert false
105+ let exp _ = assert false
88106 let eq _ _ = assert false (* TODO: what to do here? *)
107+ let lt _ _ = assert false (* TODO: what to do here? *)
89108 let pair d1 d2 = Dist_pair (d1, d2)
90109 let array d = Dist_array d
91110 let lst l = Dist_list l
@@ -103,8 +122,16 @@ module Convert_fn_distr : Semi_symbolic.Conversion_fn with type 'a t = 'a Types.
103122 let gaussian mu var = Dist_gaussian (mu, var)
104123 let beta a b = Dist_beta (a, b)
105124 let bernoulli p = Dist_bernoulli p
125+ let binomial n p = Dist_binomial (n, p)
126+ let beta_binomial n a b = Dist_beta_binomial (n, a, b)
127+ let negative_binomial n p = Dist_negative_binomial (n, p)
128+ let exponential lambda = Dist_exponential lambda
129+ let gamma a b = Dist_gamma (a, b)
130+ let poisson lambda = Dist_poisson lambda
131+ let student_t mu tau2 nu = Dist_student_t (mu, tau2, nu)
106132 let delta x = Distribution. dirac x
107133 let mv_gaussian mu var = Dist_mv_gaussian (mu, var, None )
134+ let mixture l = Dist_mixture l
108135 let sampler draw score = Dist_sampler (draw, score)
109136 let categorical ~lower ~upper _ =
110137 ignore (lower, upper);
0 commit comments