Category theory formalizes mathematical structure and its concepts in terms of a labeled directed graph called a "category", whose nodes are called "objects", and whose labelled directed edges are called "arrows" (or morphisms). A category has two basic properties: the ability to compose the arrows associatively, and the existence of an identity arrow for each object. The language of category theory has been used to formalize concepts of other high-level abstractions such as sets, rings, and groups. Informally, category theory is a general theory of functions.