I’m authoring the Automaton Standard Code for Information Interchange Data Types, which defines contiguous map and associative array types and I was checking my definitions of Associative Array on Wikipedia to be precise in my language and I noticed that the definition was murdered. An Abstract data type by definition is a data type that is defined by set theory. The Wiki read/currently reads after a revision undo volley that an Associative Array is a Collection of Key-value tuples such that each key appears only once, and the article refers to the mappings between the keys and values as “bindings”; which is no good because a Collection isn’t an Abstract data type nor is it part of Set theory. The Wiki article also states that an associative array is a map, which is like saying that all shapes are circles; all Dictnoaries are maps but not all maps are dictionaries; this confusion comes from C++ naming their dictionary map. An ASCII map is used to for instance to map a TCP port number to a socket and also to create hash table. Either my definition is wrong or the Wiki is completely wrong. This is problematic for the Computer Science community because the article makes no mention of a set, an operation on a set, and the result of the operations, which are requirements of abstract data types defined by set theory. “It’s defined as set theory, only we don’t mention a set” sounds REALLY bad!

The proposed definition I’m asking the community if it’s correct is that an Associative Array is a Surjective Abstract Data Type that maps a set of Unique strings in the domain, commonly called Keys and sometimes called Symbols, to instances of objects or the empty set in the codomain. The association between the key and value is called a Key-value Tuple. The association between a Key and a Value is defined by set theory as a “mapping”, and where a mapping may also refer to the action of modifying an existing mapping called remapping, and where the action of remapping a Key to the empty set is called Unmapping. The mappings are Surjective because each member of the codomain maps to at least one member of the domain.

The above definition defines the Abstract data type with set theory. I left out 3 words though: should have “The mappings are Surjective because each member of the codomain maps to at least one member of the domain read such that X->Y”, which is the Surjective definition; I implied it when I shouldn’t have. I can’t just engage in a revision undo war else I’ll be banned. We need a Computer Scientist with high credentials on Wikipedia to update the Wiki and fill in the gaps. Is my definition correct? Do you know of a definition with a Wiki-approved citation that is easier for those unknowledgeable of set theory to digest?