Extended Array Notation

Extended Array Notation (BEANhttp://allergrootste.com/big/Source/Sbiis/HyperEnotationGG.html) is a multidimensional version of Array notation, created by Jonathan Bowers.
== Rules ==
These rules will be dropped to Main Rules and Array-Building Rules for conveniences.
=== Notes ===
* Comma indicates \((0)\) separator.
* \((x)\) indicates that the rest of array goes to x-th dimension.
* \((n_1)(n_2) \cdots (n_x)\) indicates arbitrary number of separators such that \(n_1 \geq n_2 \geq n_3 \cdots \geq n_{x-1} \geq n_x\).
* \(\&\) means "array of" operator.
* \(\#\) indicates any rest of array.
=== Main Rules ===
Rule M1. Condition: only 2 entries.
\(\lbrace a,b \rbrace = a^b\)
Rule M2. Condition: 2nd entry is 1.
\(\lbrace a,1 \# \rbrace = a\)
Rule M3. Condition: \(n<m\).
\(\lbrace \# (n) 1 (m) \# \rbrace = \lbrace \# (m) \# \rbrace\)
\(\lbrace \# (n) 1 \rbrace = \lbrace \# \rbrace\)
Rule M4. Condition: batch of separators before non-1 entry.
\(\lbrace a,b (n_1)(n_2) \cdots (n_x) c \# \rbrace = \lbrace b^{n_1} \& a (n_1) b^{n_2} \& a (n_2) \cdots b^{n_x} \& a (n_x) c-1 \# \rbrace\)
Rule M5. Condition: string of 1's between batch of separators and non-1 entry.
\(\lbrace a,b (n_1)(n_2) \cdots (n_x) 1,\cdots,1,c \# \rbrace = \lbrace b^{n_1} \& a (n_1) b^{n_2} \& a (n_2) \cdots b^m \& a (m) a,\cdots,\lbrace a,b-1 (n_1)(n_2) \cdots (n_x) 1,\cdots,1,c \# \rbrace,c-1 \#\rbrace\)
Rule M6. String of 1's in the main row.
\(\lbrace a,b,1,\cdots,1,c \#\rbrace = \lbrace a,a,a,\cdots,\lbrace a,b-1,1,\cdots,1,c \# \rbrace,c-1 \#\rbrace\)
Rule M7. Rules M1-M6 doesn't apply.
\(\lbrace a,b,c \#\rbrace = \lbrace a,\lbrace a,b-1,c \# \rbrace,c-1 \#\rbrace\)
=== Array-Building Rules ===
Rule A1. \(n = 0\).
\(b^0 \& a = a\)
Rule A2. Otherwise.
\(b^n \& a = \lbrace {(b-1)}^n \& a (n-1) b^{n-1} \& a \rbrace\)
== Sources ==
== See also ==
ja:拡張配列表記
Category:BEAF
Category:Jonathan Bowers
Category:Notations
Category:Functions
Category:Array Notations