Evidence.Obs
Observations.
This module provides a type to describe observations. Essentially an observation is an arbitrary OCaml type and its decomposition into variables which we represent by a variable product.
Using a variable product rather than a list of exisentials allows to construct observations from its variables. If for some reason you can't do that use Var.Prod.absurd
, note that by doing so functions that need to construct observations like Dataset.Var.update
will raise Invalid_argument
.
val v : ?doc:string -> ('o, 'o) Var.Prod.t -> 'o t
v ?doc vars
are observations described by the variables product vars
. doc
is a documentation string.
val empty : unit -> 'o t
empty ()
observes the void.
val doc : 'o t -> string
doc obs
is the documentation string of obs
.
val prod : 'o t -> ('o, 'o) Var.Prod.t
prod obs
is the product of variables describing obs
.
val compare : 'o t -> 'o -> 'o -> int
compare obs
is Var.order (vars obs)
, orders observations in the lexicographic order of their variables.
set obs var v o
sets variable var
to v
in o
. Raises Invalid_argument
if the product is absurd and has no effect if var
is not part of prod obs
.