let reference_parameter_usage_term e = 
  debug "[reference_parameter_usage_term]" ;
  match by_pointer_reference_usage_term e with 
    | Ok(x,n) -> 
        debug "   %a used as ptr reference param of arity %d"
          !Ast_printer.d_logic_var x n ;
        add_ptr_reference_param (var_type_of_lvar x) n ; true
    | Ko(x,_) ->
        debug "   %a BADLY used as ptr reference param"
          !Ast_printer.d_logic_var x  ;
        remove_ptr_reference_param (var_type_of_lvar x) ; true
    | Any -> 
        (match by_array_reference_usage_term e with 
           | Ok(x,n) ->
               debug "   %a used as array reference param of arity %d"
                 !Ast_printer.d_logic_var x n ;
               add_array_reference_param (var_type_of_lvar x) n ; true
           | Ko(x,_) -> 
               debug "   %a BADLY used as array reference param"
                 !Ast_printer.d_logic_var x  ;
               remove_array_reference_param (var_type_of_lvar x) ; true
           | Any -> (); false)