SM.Producertype 'a symex := 'a ttype subst := Value.Expr.Subst.tval vanish : unit -> 'a tval apply_subst :
((Value.Expr.t -> 'a Value.t) -> 'syn -> 'sem) ->
'syn ->
'sem tval produce_pure : Value.Expr.t -> unit tmodule Syntax : sig ... end