  Although computational complexity is a fundamental aspect of program
behavior, it is often at odds with common type theoretic principles such as
function extensionality, which identifies all functions with the same
$\textit{input-output}$ behavior. We present a computational type theory called
$\mathbf{CATT}$ that has a primitive notion of cost (the number of evaluation
steps). We introduce a new dependent function type "funtime" whose semantics
can be viewed as a cost-aware version of function extensionality. We prove a
collection of lemmas for $\mathbf{CATT}$, including a novel introduction rule
for the new funtime type. $\mathbf{CATT}$ can be simultaneously viewed as a
framework for analyzing computational complexity of programs and as the
beginnings of a semantic foundation for characterizing feasible mathematical
proofs.
