- let eliminate_non_Qxs = (fun truth_value ->
- fun (r, h) ->
- let truth_value' =
- if truth_value
- then let obj = List.nth h (r 'x') in q obj
- else false
- in (truth_value', r, h))
- in bind_set u (fun one_dpm -> unit_set (bind_dpm one_dpm eliminate_non_Qxs))
+ let eliminator : bool -> bool dpm =
+ fun truth_value ->
+ fun (r, h) ->
+ let truth_value' =
+ if truth_value
+ then let obj = List.nth h (r 'x') in q obj
+ else false
+ in (truth_value', r, h)
+ in set_bind u (fun one_dpm -> set_unit (dpm_bind one_dpm eliminator))