-* So GS&V's information states, which they notate using `s`, are set-monads, whose elements in turn are discourse possibilities, which they notate using `i`, which are state monads that keep track of which entities have been introduced as objects of discourse, and which variables are bound to them, in a given discourse possibility. In GS&V's system, possibilities are triples of an assignment function, `r`, a store `g`, and a world `w`. We're leaving the worlds out. Also, instead of just working with pairs `(r, g)`, we're working with state monads for which those pairs constitute the states we update.
+ let bind_dpm (u : 'a dpm) (f : 'a -> 'b dpm) : 'b dpm =
+ fun (r, h) ->
+ let (a, r', h') = u (r, h)
+ in let u' = f a
+ in u' (r', h')