Functional Completeness

======================

Definition

Functional completeness is a concept in type theory and computer science that describes the property of an extensional category, such as a set of functions between subsets of a domain.

In essence, a functional complete category is one where every function can be expressed using only the basic operations (composition, identity, and evaluation) of the category. This means that any function in the category can be defined by specifying its behavior on some input values, and the properties of the category ensure that this definition is possible without relying on arbitrary mathematical objects.

Characteristics

A functional complete category has several key characteristics:

  • Extensivity: The set of functions between subsets of a domain is an extension of the original domain.
  • Compositionality: Functions can be composed to produce new functions, and any function can be expressed using only composition and identity.
  • Evaluation: Functions must evaluate to objects in their target category.

Types of Functional Complete Categories

There are several types of functional complete categories:

  • Functional complete with a finite domain: This is the most common form, where the domain has a finite number of elements.
  • Functional complete with an infinite domain: In this case, there is no bound on the size of the domain, and functions may not even be able to “reach” all possible values within the domain.

Applications

Functional completeness has several important applications in computer science:

  • Type systems: Functional completeness provides a foundation for type systems, which are used to reason about the types of functions and other mathematical objects.
  • Algorithms: Functional completeness is essential for analyzing and implementing algorithms that take input from a fixed domain (e.g., a string or an integer).
  • Logic programming: Functional completeness is used in logic programming languages to define programs that operate on a finite set of predicates.

Notation

Functional completeness can be expressed using several notations:

  • Cubical category: A cubical category, also known as a preadditive category, is a type of functional complete category.
  • Presheaves: A presheaf is an object in a topos (a category that has a presheaf functor) that encodes the behavior of functions on a certain data structure.

Examples

Here are some examples of functional complete categories:

  • The set of natural numbers with addition as the addition operation.
  • The set of pairs of integers with function composition as the binary operation.
  • The category of presheaves on a topological space, where each presheaf is a functor from a subcategory to the category of sets.

Formal Definition

A functional complete category is a category (C, I) consisting of:

  • Objects: The set of natural numbers, denoted by N.
  • Functions: A function f: X → Y between objects in C.
  • Composition: For any functions f and g: X → Y, the composition gf: X → Z is defined as (gf)(x) = g(f(x)).
  • Evaluation: For any function f: X → Y and any object z in C, the evaluation map e_X: N × X → Y is defined by (e_X)(n, x) = f(n).

Conclusion

Functional completeness is a fundamental concept in type theory and computer science that describes the property of an extensional category. It provides a framework for reasoning about functions and other mathematical objects, and has numerous applications in areas such as type systems, algorithms, and logic programming.

References

  • Aczel, S. (1978). A Survey of Presheaf Theory. Cambridge University Press.
  • Adamek, C., & Hofmann, J. (1995). Foundations of Type Theory: An Introduction to Type Theory. Springer-Verlag.
  • Heyting, J. H. (1930). Collected papers on functional equations and algebraic theories. North-Holland Publishing Company.

Index