Kamal Aboul-Hosn

Learn More
In a purely-functional language, reasoning about program equivalence is rather straightforward. However, the inclusion of states and references can complicate such reasoning. The problem is that expressions have the ability to alter the state, and therefore depend on the state for their values. Consequently, we must resort to a notion of contextual(More)
Mathematics is an area of research that is forever growing. Definitions, theorems, axioms, and proofs are integral part of every area of mathematics. The relationships between these elements bring to light the elegant abstractions that bind even the most intricate aspects of math and science. As the body of mathematics becomes larger and its relationships(More)
The relationship between theorems and lemmas in mathematical reasoning is often vague. No system exists that formalizes the structure of theorems in a mathematical library. Nevertheless, the decisions we make in creating lemmas provide an inherent hierarchical structure to the statements we prove. In this paper, we develop a formal system that organizes(More)
Tactics and tacticals, programs that represent and execute several steps of deduction, are fundamental to theorem provers providing automated tools for creating proofs quickly and easily. The language used for tactics is usually a full-scale programming language, separate from the language used to represent proofs. Consequently, there is also a separation(More)