Consequences of a language that hides his lower level rappresentations
There's plenty of precedent for this in real programming languages. One obvious example is pointers/references, which are internally just an address (probably). The language/runtime must know this, but in managed languages you don't have access to that.

One of my favourite examples of "useful information that must be there but is hidden" is in C++. You can allocate an array of objects using the new[] operator and deallocate them with delete[]:

Object* objs = new Object[25];
// do stuff to objs
delete[] objs;


C++ does not provide a way to obtain the number of elements in array. However, the delete[] operator must have access to this information, because it needs to execute the destructors of those elements.