let rec tau_of_logic_type = function
| Ctype c -> Tau.tau_of_logic_ctype c
| Linteger -> Integer
| Lreal -> Real
| Ltype( d , [] ) when d.lt_name = Utf8_logic.boolean -> Boolean
| Ltype( {lt_name="set"} , [t] ) -> Set (tau_of_logic_type t)
| Ltype( lt , ts) ->
let d = (ADTDecl.get_definition lt).d_name in
ADT (d,List.map tau_of_logic_type ts)
| Lvar _ -> Wp_parameters.not_yet_implemented "logic type variables"
| Larrow _ -> Wp_parameters.not_yet_implemented "type of logic function"