let integer_of_data k d : F.integer =
    match d with
    | Data d ->
        begin
          match k with
            | Kint | Kcint _ -> F.unwrap d
            | k -> WpLog.fatal ~current:true "not an integer (%a : %a)" 
                F.pp_term d pp_kind k
        end
    | Value v -> integer_of_value v
    | _ -> WpLog.fatal ~current:true "not an integer (%a)" pp_data d