code: def set_fun_prop(f, k, v):
      
      if not hasattr(f, _FUN_PROPS):
          setattr(f, _FUN_PROPS, {})
      if not isinstance(getattr(f, _FUN_PROPS), dict):
          raise InternalError("Invalid properties dictionary for %s" % str(f))
      getattr(f, _FUN_PROPS)[k] = v
docs: Set the value of property `k` to be `v` in function `f`.
  
      We define properties as annotations added to a function throughout
      the process of defining a function for verification, e.g. the
      argument types.  This sets function `f`'s property named `k` to be
      value `v`.
  
      Users should never access this function directly.