TLDR;What is the mathematics foundation for the namespace problem? Can I reduce namespace problem to set theory or other math concepts/objects (lambda calculus, category theory)?  I'm doing an essay on concepts like namespaces, packages and modules in programming languages. Among other topics, I'm studing how to avoid names collitions and in particular how programming languages solve the problem. For example:Given any programming language, suppose that we have following user defined functions (or other language specific object) named $a$ and $b$:function a () {  // do something} function b () {  // do something} And a function called $c$ that uses above functions:function c () {  a();  b();} If in the context above we defined another function called $a$, we would have a collision in function $c$ because it doesn't know what $a$-function implementation must use.So to avoid name collisions a programming languages can implement namespace/package/module systems and let the programmer doing something like the following: module alpha{  function a () {    // do something  }  function b () {    // do something  }} module beta{  function a () {    // do something  }} And then doing:function c () {  alpha.a();  alpha.b();}orfunction c () {  beta.a();  alpha.b();}Thanks.
Math foundation for namespace problem
reference request