Increasingly more sophisticated software are developed for Naval systems. Developing such software increasingly relies on programming the application logic on top of existing components built as libraries. This leads to a dilemma, from two conflicting realities: On the one hand, a myriad of software libraries have come into existence and grown rapidly in the past 10--15 years---from the prominent NumPy, SciPy, Panda, etc. for scientific computation, data analysis, etc. in the drastically growing user community of the Python language, to all kinds of libraries for all kinds of other languages. They are available as open source for so many important applications and used by everyday programmers in all these application domains, especially for Python due to its ease of use. On the other hand, developing efficient programs correctly depends critically on knowledge and smart use of these libraries, while sufficient such knowledge is possessed only by the true experts who fully understand relevant functions in relevant libraries and their proper use in the context of the application logic. Even experts cannot keep up due to the growth of such libraries, which are also constantly upgraded for different underlying software versions and hardware architectures. Improper uses can easily lead to drastic slowdowns in the application software. Solving this dilemma requires learning deep knowledge about programming and programs, and using the knowledge to reason about correct and efficient use of libraries. However, the state of the art is extremely limited. While such knowledge could be programmed in a program optimizer, as is done currently, this approach is impractical and does not scale for maintaining the optimizer with the rapidly growing library knowledge to be captured. A knowledge base about programming and programs is necessary to capture this knowledge declaratively.