|
|
Line 1: |
Line 1: |
| In [[logic]], [[mathematics]], and [[computer science]], the '''arity''' {{IPAc-en|audio=en-us-arity.ogg|ˈ|æ|r|ɨ|t|i}} of a [[function (mathematics)|function]] or [[operation (mathematics)|operation]] is the number of [[argument of a function|arguments]] or [[operand]]s the function or operation accepts. The arity of a [[relation (mathematics)|relation]] (or [[predicate (mathematical logic)|predicate]]) is the dimension of the [[domain of a function|domain]] in the corresponding [[Cartesian product]]. (A function of arity ''n'' thus has arity ''n''+1 considered as a relation.) The term springs from words like unary, binary, ternary, etc. Unary functions or predicates may be also called "monadic"; similarly, binary functions may be called "dyadic".
| | My name is Melisa Cleland. I life in Limoges (France).<br><br>my site; [http://Innotomsk.ru/tag/service%20dog%20training%20las%20vegas/ hollywood dog training school] |
| | |
| In mathematics arity may also be named ''rank'',<ref name="Hazewinkel2001">{{cite book|author=[[Michiel Hazewinkel]]|title=Encyclopaedia of Mathematics, Supplement III|url=http://books.google.com/books?id=47YC2h295JUC&pg=PA3|year=2001|publisher=Springer|isbn=978-1-4020-0198-7|page=3}}</ref><ref name="Schechter1997">{{cite book|author=Eric Schechter|title=Handbook of Analysis and Its Foundations|url=http://books.google.com/books?id=eqUv3Bcd56EC&pg=PA356|year=1997|publisher=Academic Press|isbn=978-0-12-622760-4|page=356}}</ref> but this word can have many other meanings in mathematics. In logic and philosophy, arity is also called ''adicity'' and ''degree''.<ref name="DetlefsenBacon1999">{{cite book|author1=Michael Detlefsen|author2=David Charles McCarty|author3=John B. Bacon|title=Logic from A to Z|url=http://books.google.com/books?id=pc3E4Xdf2GgC&pg=PP17|year=1999|publisher=Routeledge|isbn=978-0-415-21375-2|page=7}}</ref><ref name="CocchiarellaFreund2008">{{cite book|author1=Nino B. Cocchiarella|author2=Max A. Freund|title=Modal Logic: An Introduction to its Syntax and Semantics|url=http://books.google.com/books?id=zLmxqytfLhgC&pg=PA121|year=2008|publisher=Oxford University Press|isbn=978-0-19-536658-7|page=121}}</ref> In [[linguistics]], arity is usually named ''[[valency (linguistics)|valency]]''.<ref name="Crystal2008">{{cite book|author=David Crystal|title=Dictionary of Linguistics and Phonetics|year=2008|publisher=John Wiley & Sons|isbn=978-1-405-15296-9|page=507|edition=6th}}</ref>
| |
| | |
| In [[computer programming]], there is often a [[Syntax (programming languages)|syntactical]] distinction between [[Operator (programming)|operators]] and [[Function (computer science)|functions]]; syntactical operators usually have arity 0, 1, or 2. Functions vary widely in the number of arguments, though large numbers can become unwieldy. Some programming languages also offer support for [[variadic functions]], i.e. functions syntactically accepting a variable number of arguments.
| |
| | |
| ==Examples==
| |
| {{Expand section|more math and logic examples|date=March 2012}}
| |
| The term "arity" is rarely employed in everyday usage. For example, rather than saying "the arity of the [[addition]] operation is 2" or "addition is an operation of arity 2" one usually says "addition is a binary operation".
| |
| In general, the naming of functions or operators with a given arity follows a convention similar to the one used for ''n''-based [[numeral system]]s such as [[Binary numeral system|binary]] and [[hexadecimal]]. One combines a [[Latin]] prefix with the -ary ending; for example:
| |
| * A nullary function takes no arguments.
| |
| * A [[unary operation|unary function]] takes one argument.
| |
| * A [[binary operation|binary function]] takes two arguments.
| |
| * A [[ternary operation|ternary function]] takes three arguments.
| |
| * An ''n''-ary function takes ''n'' arguments.
| |
| | |
| ===Nullary===
| |
| Sometimes it is useful to consider a [[constant (mathematics)|constant]] to be an operation of arity 0, and hence call it ''nullary''.
| |
| | |
| Also, in non-[[functional programming]], a function without arguments can be meaningful and not necessarily constant (due to [[side effect (computer science)|side effect]]s). Often, such functions have in fact some ''hidden input'' which might be [[global variable]]s, including the whole state of the system (time, free memory, ...). The latter are important examples which usually also exist in "purely" functional programming languages.
| |
| | |
| ===Unary===
| |
| Examples of [[unary operator]]s in mathematics and in programming include the unary minus and plus, the increment and decrement operators in [[C (programming language)|C]]-style languages (not in logical languages), and the [[factorial]], [[Multiplicative inverse|reciprocal]], [[floor function|floor]], [[ceiling function|ceiling]], [[fractional part]], [[sign (mathematics)|sign]], [[absolute value]], [[complex conjugate]], and [[Norm (mathematics)|norm]] functions in mathematics. The [[two's complement]], [[Reference (computer science)|address reference]] and the [[logical NOT]] operators are examples of unary operators in math and programming. According to [[Willard Van Orman Quine|Quine]], a more suitable term is "singulary".<ref>{{Citation
| |
| | last = Quine
| |
| | first = W. V. O.
| |
| | title = Mathematical logic
| |
| | year = 1940
| |
| | place = Cambridge, MA
| |
| | publisher = Harvard University Press
| |
| | page=13
| |
| }}</ref>
| |
| | |
| All functions in [[lambda calculus]] and in some [[functional programming language]]s (especially those descended from [[ML (programming language)|ML]]) are technically unary, but see [[#n-ary|n-ary]] below.
| |
| | |
| ===Binary===
| |
| Most operators encountered in programming are of the [[binary operation|binary]] form. For both programming and mathematics these can be the [[multiplication operator]], the addition operator, the division operator. Logical predicates such as ''OR'', ''[[exclusive or|XOR]]'', ''AND'', ''IMP'' are typically used as binary operators with two distinct operands.
| |
| | |
| ===Ternary===
| |
| From [[C (programming language)|C]], [[C++]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Perl]] and variants comes the [[ternary operator]] <code>[[?:]]</code>, which is a so-called [[conditional operator]], taking three parameters.
| |
| [[Forth (programming language)|Forth]] also contains a ternary operator, <code>*/</code>, which multiplies the first two (one-cell) numbers, dividing by the third, with the intermediate result being a double cell number. This is used when the intermediate result would overflow a single cell.
| |
| [[Python (programming language)|Python]] has a ternary conditional statement, <code>x if C else y</code>.
| |
| The [[dc (computer program)|dc calculator]] has several ternary operators, such as <tt>|</tt>, which will pop three values from the stack and efficiently compute <math>x^y \mod z</math> with arbitrary precision.
| |
| Additionally, many [[assembly language]] instructions are ternary or higher, such as <tt>MOV %AX, (%BX,%CX)</tt>, which will load (MOV) into register <tt>AX</tt> the contents of a calculated memory location that is the sum (parenthesis) of the registers <tt>BX</tt> and <tt>CX</tt>.
| |
| <!-- examples section needs complete rewrite, with links and subsection on math, logic and programming -->
| |
| | |
| ===''n''-ary===
| |
| From a mathematical point of view, a function of ''n'' arguments can always be considered as a function of one single argument which is an element of some [[product space]]. However, it may be convenient for notation to consider ''n''-ary functions, as for example [[multilinear map]]s (which are not linear maps on the product space, if ''n''≠1).
| |
| | |
| The same is true for programming languages, where functions taking several arguments could always be defined as functions taking a single argument of some [[object composition|composite type]] such as a [[tuple]], or in languages with [[higher-order function]]s, by [[currying]].
| |
| | |
| === Variable arity===
| |
| In computer science, a function accepting a variable number of arguments is called ''[[variadic function|variadic]]''. In logic and philosophy, predicates or relations accepting a variable number of arguments are called ''[[multigrade predicate|multigrade]]'', ''[[anadic predicate|anadic]]'', or ''[[variably polyadic predicate|variably polyadic]]''.<ref>{{Cite journal | doi = 10.1093/mind/113.452.609 | last1 = Oliver | first1 = Alex | year = 2004 | title = Multigrade Predicates | url = | journal = Mind | volume = 113 | issue = | pages = 609–681 }}</ref>
| |
| | |
| ==Other names==
| |
| * ''Nullary'' means 0-ary.
| |
| * ''[[Unary operation|Unary]]'' means 1-ary.
| |
| * ''[[Binary operation|Binary]]'' means 2-ary.
| |
| * ''[[Ternary operation|Ternary]]'' means 3-ary.
| |
| * ''Quaternary'' means 4-ary.
| |
| * ''Quinary'' means 5-ary.
| |
| * ''Senary'' means 6-ary.
| |
| * ''Septenary'' means 7-ary.
| |
| * ''Octary'' means 8-ary.
| |
| * ''Nonary'' means 9-ary.
| |
| * ''Polyadic'', ''multary'' and ''multiary'' mean 2 or more operands (or parameters).
| |
| * ''n''-''ary'' means ''n'' operands (or parameters), but is often used as a synonym of "polyadic".
| |
| | |
| An alternative nomenclature is derived in a similar fashion from the corresponding [[Greek language|Greek]] roots; for example, ''niladic'' (or ''medadic''), ''monadic'', ''dyadic'', ''triadic'', ''polyadic'', and so on. Thence derive the alternative terms ''adicity'' and ''adinity'' for the Latin-derived ''arity''.
| |
| | |
| These words are often used to describe anything related to that number (e.g., [[undenary chess]] is a chess variant with an 11×11 board, or the [[Millenary Petition]] of 1603).
| |
| | |
| ==See also==
| |
| {{Portal|Mathematics|Logic}}
| |
| <div style="column-count:2;-moz-column-count:2;-webkit-column-count:2">
| |
| *[[Logic of relatives]]
| |
| *[[Binary relation]]
| |
| *[[Triadic relation]]
| |
| *[[Theory of relations]]
| |
| *[[Signature (logic)]]
| |
| *[[Parameter]]
| |
| *[[Variadic]]
| |
| *[[Valency (linguistics)|Valency]]
| |
| *[[n-ary code|''n''-ary code]]
| |
| *[[n-ary group|''n''-ary group]]
| |
| </div>
| |
| | |
| ==References==
| |
| {{Reflist}}
| |
| | |
| ==External links==
| |
| A monograph available free online:
| |
| * Burris, Stanley N., and H.P. Sankappanavar, H. P., 1981. ''[http://www.thoralf.uwaterloo.ca/htdocs/ualg.html A Course in Universal Algebra.]'' Springer-Verlag. ISBN 3-540-90578-2. Especially pp. 22–24.
| |
| | |
| [[Category:Abstract algebra]]
| |
| [[Category:Universal algebra]]
| |
| | |
| [[cs:Operace (matematika)#Arita operace]]
| |