<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.nars2000.org/index.php?action=history&amp;feed=atom&amp;title=Array_Predicates</id>
	<title>Array Predicates - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.nars2000.org/index.php?action=history&amp;feed=atom&amp;title=Array_Predicates"/>
	<link rel="alternate" type="text/html" href="https://wiki.nars2000.org/index.php?title=Array_Predicates&amp;action=history"/>
	<updated>2026-06-20T12:42:41Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.nars2000.org/index.php?title=Array_Predicates&amp;diff=735&amp;oldid=prev</id>
		<title>WikiSysop at 01:16, 20 February 2011</title>
		<link rel="alternate" type="text/html" href="https://wiki.nars2000.org/index.php?title=Array_Predicates&amp;diff=735&amp;oldid=prev"/>
		<updated>2011-02-20T01:16:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:16, 19 February 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This clever idea of Bob Bernecky&amp;#039;s [http://www.snakeisland.com/predicat.pdf] provides a performance improvement for certain expressions by marking certain arrays with special properties.  For example, the property of being a Permutation Vector [http://mathworld.wolfram.com/Permutation.html] is invariant (is still a Permutation Vector, albeit a different one) under various APL primitives such as rotate/reversal (&amp;lt;apll&amp;gt;L⌽PV&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⌽PV&amp;lt;/apll&amp;gt;) and grade up/down (&amp;lt;apll&amp;gt;⍋PV&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⍒PV&amp;lt;/apll&amp;gt;).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This clever idea of Bob Bernecky&amp;#039;s [http://www.snakeisland.com/predicat.pdf] provides a performance improvement for certain expressions by marking certain arrays with special properties.  For example, the property of being a Permutation Vector [http://mathworld.wolfram.com/Permutation.html] is invariant (is still a Permutation Vector, albeit a different one) under various APL primitives such as rotate/reversal (&amp;lt;apll&amp;gt;L⌽PV&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⌽PV&amp;lt;/apll&amp;gt;) and grade up/down (&amp;lt;apll&amp;gt;⍋PV&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⍒PV&amp;lt;/apll&amp;gt;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Bernecky has defined several array predicate properties, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;one &lt;/del&gt;of which &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;has &lt;/del&gt;been implemented in &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;NARS &lt;/del&gt;so far.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Bernecky has defined several array predicate properties, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;two &lt;/ins&gt;of which &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;have &lt;/ins&gt;been implemented in &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;NARS2000 &lt;/ins&gt;so far.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Permutation Vectors ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Permutation Vectors ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l18&quot;&gt;Line 18:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 18:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;In the common expression &amp;lt;apll&amp;gt;⍋⍋R&amp;lt;/apll&amp;gt;, the right hand grade sets the bit and the left hand grade reads it and uses a linear algorithm to produce the result.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;In the common expression &amp;lt;apll&amp;gt;⍋⍋R&amp;lt;/apll&amp;gt;, the right hand grade sets the bit and the left hand grade reads it and uses a linear algorithm to produce the result.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== All 2s ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;Mostly for the Representation primitive (&amp;lt;apll&amp;gt;L⊤R&amp;lt;/apll&amp;gt;), if the left argument is all 2s and the right argument is integer, the result can be represented as Boolean.&amp;lt;/p&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://wiki.nars2000.org/index.php?title=Array_Predicates&amp;diff=590&amp;oldid=prev</id>
		<title>WikiSysop at 20:41, 21 September 2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.nars2000.org/index.php?title=Array_Predicates&amp;diff=590&amp;oldid=prev"/>
		<updated>2010-09-21T20:41:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:41, 21 September 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Permutation Vectors ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Permutation Vectors ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;In this case, index generator (&amp;lt;apll&amp;gt;⍳S&amp;lt;/apll&amp;gt;) produces a Permutation Vector, as do the grade primitives (&amp;lt;apll&amp;gt;⍋V&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⍒V&amp;lt;/apll&amp;gt;), as well as deal (&amp;lt;apll&amp;gt;L?R&amp;lt;/apll&amp;gt;) when the left and right arguments are the same &amp;amp;mdash; the results of these primitives are marked internally as Permutation Vectors.  Subsequent use of such arrays maintains that property when operated on by rotate/reversal (&amp;lt;apll&amp;gt;L⌽PV&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⌽PV&amp;lt;/apll&amp;gt;) &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and grade up/down&lt;/del&gt;.  Moreover, the two grade (&amp;lt;apll&amp;gt;⍋PV&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⍒PV&amp;lt;/apll&amp;gt;) and the index of (&amp;lt;apll&amp;gt;PV⍳R&amp;lt;/apll&amp;gt;) and membership (&amp;lt;apll&amp;gt;L∊PV&amp;lt;/apll&amp;gt;) primitives use a much faster (linear) algorithm than they would normally, given that the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;appropriate &lt;/del&gt;argument is a Permutation Vector.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;In this case, index generator (&amp;lt;apll&amp;gt;⍳S&amp;lt;/apll&amp;gt;) produces a Permutation Vector, as do the grade primitives (&amp;lt;apll&amp;gt;⍋V&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⍒V&amp;lt;/apll&amp;gt;), as well as deal (&amp;lt;apll&amp;gt;L?R&amp;lt;/apll&amp;gt;) when the left and right arguments are the same &amp;amp;mdash; the results of these primitives are marked internally as Permutation Vectors.  Subsequent use of such arrays maintains that property when operated on by rotate/reversal (&amp;lt;apll&amp;gt;L⌽PV&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⌽PV&amp;lt;/apll&amp;gt;).  Moreover, the two grade (&amp;lt;apll&amp;gt;⍋PV&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⍒PV&amp;lt;/apll&amp;gt;) and the index of (&amp;lt;apll&amp;gt;PV⍳R&amp;lt;/apll&amp;gt;) and membership (&amp;lt;apll&amp;gt;L∊PV&amp;lt;/apll&amp;gt;) primitives use a much faster (linear) algorithm than they would normally, given that the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;lookup &lt;/ins&gt;argument is a Permutation Vector.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;In summary,&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;In summary,&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Set &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The &lt;/del&gt;bit:  &amp;lt;apll&amp;gt;⍳S&amp;lt;/apll&amp;gt;, &amp;lt;apll&amp;gt;⍋V&amp;lt;/apll&amp;gt;, &amp;lt;apll&amp;gt;⍒V&amp;lt;/apll&amp;gt;, and &amp;lt;apll&amp;gt;R?R&amp;lt;/apll&amp;gt;.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Set &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the &lt;/ins&gt;bit &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;in the result&lt;/ins&gt;:  &amp;lt;apll&amp;gt;⍳S&amp;lt;/apll&amp;gt;, &amp;lt;apll&amp;gt;⍋V&amp;lt;/apll&amp;gt;, &amp;lt;apll&amp;gt;⍒V&amp;lt;/apll&amp;gt;, and &amp;lt;apll&amp;gt;R?R&amp;lt;/apll&amp;gt;.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Pass on the bit:  &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;apll&amp;gt;⍋V&amp;lt;/apll&amp;gt;, &amp;lt;apll&amp;gt;⍒V&amp;lt;/apll&amp;gt;, &lt;/del&gt;&amp;lt;apll&amp;gt;L⌽PV&amp;lt;/apll&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;and &amp;lt;apll&amp;gt;⌽PV&amp;lt;/apll&amp;gt;.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Pass on the bit:  &amp;lt;apll&amp;gt;L⌽PV&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⌽PV&amp;lt;/apll&amp;gt;.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Read and take advantage of the bit:  &amp;lt;apll&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;⍋V&lt;/del&gt;&amp;lt;/apll&amp;gt;, &amp;lt;apll&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;⍒V&lt;/del&gt;&amp;lt;/apll&amp;gt;, &amp;lt;apll&amp;gt;PV⍳R&amp;lt;/apll&amp;gt;, and &amp;lt;apll&amp;gt;L∊PV&amp;lt;/apll&amp;gt;.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p&amp;gt;Read and take advantage of the bit:  &amp;lt;apll&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;⍋PV&lt;/ins&gt;&amp;lt;/apll&amp;gt;, &amp;lt;apll&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;⍒PV&lt;/ins&gt;&amp;lt;/apll&amp;gt;, &amp;lt;apll&amp;gt;PV⍳R&amp;lt;/apll&amp;gt;, and &amp;lt;apll&amp;gt;L∊PV&amp;lt;/apll&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.&amp;lt;/p&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Example ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;In the common expression &amp;lt;apll&amp;gt;⍋⍋R&amp;lt;/apll&amp;gt;, the right hand grade sets the bit and the left hand grade reads it and uses a linear algorithm to produce the result&lt;/ins&gt;.&amp;lt;/p&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://wiki.nars2000.org/index.php?title=Array_Predicates&amp;diff=589&amp;oldid=prev</id>
		<title>WikiSysop: /* Permutation Vectors */</title>
		<link rel="alternate" type="text/html" href="https://wiki.nars2000.org/index.php?title=Array_Predicates&amp;diff=589&amp;oldid=prev"/>
		<updated>2010-09-21T18:46:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Permutation Vectors&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:46, 21 September 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Permutation Vectors ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Permutation Vectors ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In this case, index generator (&amp;lt;apll&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;⍳R&lt;/del&gt;&amp;lt;/apll&amp;gt;) produces a Permutation Vector, as do the grade primitives (&amp;lt;apll&amp;gt;⍋V&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⍒V&amp;lt;/apll&amp;gt;), as well as deal (&amp;lt;apll&amp;gt;L?R&amp;lt;/apll&amp;gt;) when the left and right arguments are the same &amp;amp;mdash; the results of these primitives are marked internally as Permutation Vectors.  Subsequent use of such arrays maintains that property when operated on by rotate/reversal and grade up/down.  Moreover, the two grade (&amp;lt;apll&amp;gt;⍋PV&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⍒PV&amp;lt;/apll&amp;gt;) and the index of (&amp;lt;apll&amp;gt;PV⍳R&amp;lt;/apll&amp;gt;) and membership (&amp;lt;apll&amp;gt;L∊PV&amp;lt;/apll&amp;gt;) primitives use a much faster (linear) algorithm than they would normally, given that the appropriate argument is a Permutation Vector.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;&lt;/ins&gt;In this case, index generator (&amp;lt;apll&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;⍳S&lt;/ins&gt;&amp;lt;/apll&amp;gt;) produces a Permutation Vector, as do the grade primitives (&amp;lt;apll&amp;gt;⍋V&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⍒V&amp;lt;/apll&amp;gt;), as well as deal (&amp;lt;apll&amp;gt;L?R&amp;lt;/apll&amp;gt;) when the left and right arguments are the same &amp;amp;mdash; the results of these primitives are marked internally as Permutation Vectors.  Subsequent use of such arrays maintains that property when operated on by rotate/reversal &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(&amp;lt;apll&amp;gt;L⌽PV&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⌽PV&amp;lt;/apll&amp;gt;) &lt;/ins&gt;and grade up/down.  Moreover, the two grade (&amp;lt;apll&amp;gt;⍋PV&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⍒PV&amp;lt;/apll&amp;gt;) and the index of (&amp;lt;apll&amp;gt;PV⍳R&amp;lt;/apll&amp;gt;) and membership (&amp;lt;apll&amp;gt;L∊PV&amp;lt;/apll&amp;gt;) primitives use a much faster (linear) algorithm than they would normally, given that the appropriate argument is a Permutation Vector.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/p&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;In summary,&amp;lt;/p&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;Set The bit:  &amp;lt;apll&amp;gt;⍳S&amp;lt;/apll&amp;gt;, &amp;lt;apll&amp;gt;⍋V&amp;lt;/apll&amp;gt;, &amp;lt;apll&amp;gt;⍒V&amp;lt;/apll&amp;gt;, and &amp;lt;apll&amp;gt;R?R&amp;lt;/apll&amp;gt;.&amp;lt;/p&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;Pass on the bit:  &amp;lt;apll&amp;gt;⍋V&amp;lt;/apll&amp;gt;, &amp;lt;apll&amp;gt;⍒V&amp;lt;/apll&amp;gt;, &amp;lt;apll&amp;gt;L⌽PV&amp;lt;/apll&amp;gt;, and &amp;lt;apll&amp;gt;⌽PV&amp;lt;/apll&amp;gt;.&amp;lt;/p&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;p&amp;gt;Read and take advantage of the bit:  &amp;lt;apll&amp;gt;⍋V&amp;lt;/apll&amp;gt;, &amp;lt;apll&amp;gt;⍒V&amp;lt;/apll&amp;gt;, &amp;lt;apll&amp;gt;PV⍳R&amp;lt;/apll&amp;gt;, and &amp;lt;apll&amp;gt;L∊PV&amp;lt;/apll&amp;gt;.&amp;lt;/p&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://wiki.nars2000.org/index.php?title=Array_Predicates&amp;diff=481&amp;oldid=prev</id>
		<title>WikiSysop: /* Permutation Vectors */</title>
		<link rel="alternate" type="text/html" href="https://wiki.nars2000.org/index.php?title=Array_Predicates&amp;diff=481&amp;oldid=prev"/>
		<updated>2009-05-26T15:48:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Permutation Vectors&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:48, 26 May 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Permutation Vectors ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Permutation Vectors ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In this case, index generator (&amp;lt;apll&amp;gt;⍳R&amp;lt;/apll&amp;gt;) produces a Permutation Vector, as &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;does &lt;/del&gt;deal (&amp;lt;apll&amp;gt;L?R&amp;lt;/apll&amp;gt;) when the left and right arguments are the same &amp;amp;mdash; the results of these primitives are marked internally as Permutation Vectors.  Subsequent use of such arrays maintains that property when operated on by rotate/reversal and grade up/down.  Moreover, the two grade (&amp;lt;apll&amp;gt;⍋PV&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⍒PV&amp;lt;/apll&amp;gt;) and the index of (&amp;lt;apll&amp;gt;PV⍳R&amp;lt;/apll&amp;gt;) and membership (&amp;lt;apll&amp;gt;L∊PV&amp;lt;/apll&amp;gt;) primitives use a much faster (linear) algorithm than they would normally, given that the appropriate argument is a Permutation Vector.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In this case, index generator (&amp;lt;apll&amp;gt;⍳R&amp;lt;/apll&amp;gt;) produces a Permutation Vector, as &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;do the grade primitives (&amp;lt;apll&amp;gt;⍋V&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⍒V&amp;lt;/apll&amp;gt;), as well as &lt;/ins&gt;deal (&amp;lt;apll&amp;gt;L?R&amp;lt;/apll&amp;gt;) when the left and right arguments are the same &amp;amp;mdash; the results of these primitives are marked internally as Permutation Vectors.  Subsequent use of such arrays maintains that property when operated on by rotate/reversal and grade up/down.  Moreover, the two grade (&amp;lt;apll&amp;gt;⍋PV&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⍒PV&amp;lt;/apll&amp;gt;) and the index of (&amp;lt;apll&amp;gt;PV⍳R&amp;lt;/apll&amp;gt;) and membership (&amp;lt;apll&amp;gt;L∊PV&amp;lt;/apll&amp;gt;) primitives use a much faster (linear) algorithm than they would normally, given that the appropriate argument is a Permutation Vector.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
	<entry>
		<id>https://wiki.nars2000.org/index.php?title=Array_Predicates&amp;diff=386&amp;oldid=prev</id>
		<title>Sudleyplace: /* Permutation Vectors */</title>
		<link rel="alternate" type="text/html" href="https://wiki.nars2000.org/index.php?title=Array_Predicates&amp;diff=386&amp;oldid=prev"/>
		<updated>2008-11-22T19:09:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Permutation Vectors&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:09, 22 November 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Permutation Vectors ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Permutation Vectors ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In this case, index generator (&amp;lt;apll&amp;gt;⍳R&amp;lt;/apll&amp;gt;) produces a Permutation Vector, as does deal (&amp;lt;apll&amp;gt;L?R&amp;lt;/apll&amp;gt;) when the left and right arguments are the same &amp;amp;mdash; the results of these primitives are marked internally as Permutation Vectors.  Subsequent use of such arrays maintains that property when operated on by rotate/reversal and grade up/down.  Moreover, the two grade (&amp;lt;apll&amp;gt;⍋PV&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⍒PV&amp;lt;/apll&amp;gt;) and the index of (&amp;lt;apll&amp;gt;PV⍳R&amp;lt;/apll&amp;gt;) primitives use a much faster (linear) algorithm than they would normally, given that the appropriate argument is a Permutation Vector.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In this case, index generator (&amp;lt;apll&amp;gt;⍳R&amp;lt;/apll&amp;gt;) produces a Permutation Vector, as does deal (&amp;lt;apll&amp;gt;L?R&amp;lt;/apll&amp;gt;) when the left and right arguments are the same &amp;amp;mdash; the results of these primitives are marked internally as Permutation Vectors.  Subsequent use of such arrays maintains that property when operated on by rotate/reversal and grade up/down.  Moreover, the two grade (&amp;lt;apll&amp;gt;⍋PV&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⍒PV&amp;lt;/apll&amp;gt;) and the index of (&amp;lt;apll&amp;gt;PV⍳R&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/apll&amp;gt;) and membership (&amp;lt;apll&amp;gt;L∊PV&lt;/ins&gt;&amp;lt;/apll&amp;gt;) primitives use a much faster (linear) algorithm than they would normally, given that the appropriate argument is a Permutation Vector.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Sudleyplace</name></author>
	</entry>
	<entry>
		<id>https://wiki.nars2000.org/index.php?title=Array_Predicates&amp;diff=333&amp;oldid=prev</id>
		<title>Sudleyplace at 19:51, 18 August 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.nars2000.org/index.php?title=Array_Predicates&amp;diff=333&amp;oldid=prev"/>
		<updated>2008-08-18T19:51:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:51, 18 August 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This clever idea of Bob Bernecky&#039;s [http://www.snakeisland.com/predicat.pdf] provides a performance improvement for certain expressions by marking certain arrays with special properties.  For example, a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;permutation vector &lt;/del&gt;[http://mathworld.wolfram.com/Permutation.html] &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;has the property that it &lt;/del&gt;is invariant under various APL primitives such as rotate/reversal (&amp;lt;apll&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;L⌽R&lt;/del&gt;&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;⌽R&lt;/del&gt;&amp;lt;/apll&amp;gt;) and grade up/down (&amp;lt;apll&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;⍋R&lt;/del&gt;&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;⍒R&lt;/del&gt;&amp;lt;/apll&amp;gt;).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This clever idea of Bob Bernecky&#039;s [http://www.snakeisland.com/predicat.pdf] provides a performance improvement for certain expressions by marking certain arrays with special properties.  For example, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the property of being &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Permutation Vector &lt;/ins&gt;[http://mathworld.wolfram.com/Permutation.html] is invariant &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(is still a Permutation Vector, albeit a different one) &lt;/ins&gt;under various APL primitives such as rotate/reversal (&amp;lt;apll&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;L⌽PV&lt;/ins&gt;&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;⌽PV&lt;/ins&gt;&amp;lt;/apll&amp;gt;) and grade up/down (&amp;lt;apll&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;⍋PV&lt;/ins&gt;&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;⍒PV&lt;/ins&gt;&amp;lt;/apll&amp;gt;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Bernecky has defined several array predicate properties, one of which has been implemented in NARS so far.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Bernecky has defined several array predicate properties, one of which has been implemented in NARS so far.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Permutation Vectors ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Permutation Vectors ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In this case, index generator (&amp;lt;apll&amp;gt;⍳R&amp;lt;/apll&amp;gt;) produces a Permutation Vector, as does deal (&amp;lt;apll&amp;gt;L?R&amp;lt;/apll&amp;gt;) when the left and right arguments are the same &amp;amp;mdash; the results of these primitives are marked internally as Permutation Vectors.  Subsequent use of such arrays maintains that property when operated on by rotate/reversal and grade up/down.  Moreover, the two grade (&amp;lt;apll&amp;gt;⍋PV&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⍒PV&amp;lt;/apll&amp;gt;) and the index of (&amp;lt;apll&amp;gt;PV⍳R&amp;lt;/apll&amp;gt;) primitives use a much faster (linear) algorithm than they would normally &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;use when &lt;/del&gt;the appropriate argument is a Permutation Vector.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In this case, index generator (&amp;lt;apll&amp;gt;⍳R&amp;lt;/apll&amp;gt;) produces a Permutation Vector, as does deal (&amp;lt;apll&amp;gt;L?R&amp;lt;/apll&amp;gt;) when the left and right arguments are the same &amp;amp;mdash; the results of these primitives are marked internally as Permutation Vectors.  Subsequent use of such arrays maintains that property when operated on by rotate/reversal and grade up/down.  Moreover, the two grade (&amp;lt;apll&amp;gt;⍋PV&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⍒PV&amp;lt;/apll&amp;gt;) and the index of (&amp;lt;apll&amp;gt;PV⍳R&amp;lt;/apll&amp;gt;) primitives use a much faster (linear) algorithm than they would normally&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, given that &lt;/ins&gt;the appropriate argument is a Permutation Vector.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Sudleyplace</name></author>
	</entry>
	<entry>
		<id>https://wiki.nars2000.org/index.php?title=Array_Predicates&amp;diff=332&amp;oldid=prev</id>
		<title>Sudleyplace: /* Permutation Vectors */</title>
		<link rel="alternate" type="text/html" href="https://wiki.nars2000.org/index.php?title=Array_Predicates&amp;diff=332&amp;oldid=prev"/>
		<updated>2008-08-18T19:43:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Permutation Vectors&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:43, 18 August 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Permutation Vectors ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Permutation Vectors ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In this case, index generator (&amp;lt;apll&amp;gt;⍳R&amp;lt;/apll&amp;gt;) produces a Permutation Vector, as does deal (&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;L&lt;/del&gt;&amp;lt;apll&amp;gt;?&amp;lt;/apll&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;R&lt;/del&gt;) when the left and right arguments are the same &amp;amp;mdash; the results of these primitives are marked internally as Permutation Vectors.  &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Further &lt;/del&gt;use of such arrays maintains that property when operated on by rotate/reversal and grade up/down.  Moreover, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;both &lt;/del&gt;the grade and index of (&amp;lt;apll&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;L⍳R&lt;/del&gt;&amp;lt;/apll&amp;gt;) primitives use a much faster (linear) algorithm than they would normally use.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In this case, index generator (&amp;lt;apll&amp;gt;⍳R&amp;lt;/apll&amp;gt;) produces a Permutation Vector, as does deal (&amp;lt;apll&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;L&lt;/ins&gt;?&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;R&lt;/ins&gt;&amp;lt;/apll&amp;gt;) when the left and right arguments are the same &amp;amp;mdash; the results of these primitives are marked internally as Permutation Vectors.  &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Subsequent &lt;/ins&gt;use of such arrays maintains that property when operated on by rotate/reversal and grade up/down.  Moreover, the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;two &lt;/ins&gt;grade &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(&amp;lt;apll&amp;gt;⍋PV&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⍒PV&amp;lt;/apll&amp;gt;) &lt;/ins&gt;and &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the &lt;/ins&gt;index of (&amp;lt;apll&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;PV⍳R&lt;/ins&gt;&amp;lt;/apll&amp;gt;) primitives use a much faster (linear) algorithm than they would normally use &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;when the appropriate argument is a Permutation Vector&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Sudleyplace</name></author>
	</entry>
	<entry>
		<id>https://wiki.nars2000.org/index.php?title=Array_Predicates&amp;diff=331&amp;oldid=prev</id>
		<title>Sudleyplace at 04:59, 18 August 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.nars2000.org/index.php?title=Array_Predicates&amp;diff=331&amp;oldid=prev"/>
		<updated>2008-08-18T04:59:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:59, 18 August 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This clever idea of Bob Bernecky&#039;s [http://www.snakeisland.com/predicat.pdf] provides a performance improvement for certain expressions by marking certain arrays with special properties.  For example, a permutation vector [http://mathworld.wolfram.com/Permutation.html] has the property that it is invariant under various APL primitives such as rotate/reversal (&amp;lt;apll&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;⌽&lt;/del&gt;&amp;lt;/apll&amp;gt;) and grade up/down (&amp;lt;apll&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;⍋ ⍒&lt;/del&gt;&amp;lt;/apll&amp;gt;).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This clever idea of Bob Bernecky&#039;s [http://www.snakeisland.com/predicat.pdf] provides a performance improvement for certain expressions by marking certain arrays with special properties.  For example, a permutation vector [http://mathworld.wolfram.com/Permutation.html] has the property that it is invariant under various APL primitives such as rotate/reversal (&amp;lt;apll&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;L⌽R&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⌽R&lt;/ins&gt;&amp;lt;/apll&amp;gt;) and grade up/down (&amp;lt;apll&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;⍋R&amp;lt;/apll&amp;gt; and &amp;lt;apll&amp;gt;⍒R&lt;/ins&gt;&amp;lt;/apll&amp;gt;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Bernecky has defined several array predicate properties, one of which has been implemented in NARS so far&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:  permutation vectors&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Bernecky has defined several array predicate properties, one of which has been implemented in NARS so far.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In this case, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;monadic iota &lt;/del&gt;(&amp;lt;apll&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{iota}&lt;/del&gt;&amp;lt;/apll&amp;gt;) produces a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;permutation vector&lt;/del&gt;, as does deal (&amp;lt;apll&amp;gt;?&amp;lt;/apll&amp;gt;) when the left and right arguments are the same&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, and &lt;/del&gt;are marked internally as &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;such&lt;/del&gt;.  Further use of such arrays &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;maintain &lt;/del&gt;that property when operated on by rotate/reversal and grade up/down.  Moreover, the grade &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;primitive uses &lt;/del&gt;a much faster (linear) algorithm than &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;it &lt;/del&gt;would normally use.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Permutation Vectors ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In this case, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;index generator &lt;/ins&gt;(&amp;lt;apll&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;⍳R&lt;/ins&gt;&amp;lt;/apll&amp;gt;) produces a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Permutation Vector&lt;/ins&gt;, as does deal (&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;L&lt;/ins&gt;&amp;lt;apll&amp;gt;?&amp;lt;/apll&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;R&lt;/ins&gt;) when the left and right arguments are the same &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;mdash; the results of these primitives &lt;/ins&gt;are marked internally as &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Permutation Vectors&lt;/ins&gt;.  Further use of such arrays &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;maintains &lt;/ins&gt;that property when operated on by rotate/reversal and grade up/down.  Moreover, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;both &lt;/ins&gt;the grade &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and index of (&amp;lt;apll&amp;gt;L⍳R&amp;lt;/apll&amp;gt;) primitives use &lt;/ins&gt;a much faster (linear) algorithm than &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;they &lt;/ins&gt;would normally use.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Sudleyplace</name></author>
	</entry>
	<entry>
		<id>https://wiki.nars2000.org/index.php?title=Array_Predicates&amp;diff=330&amp;oldid=prev</id>
		<title>Sudleyplace: New page: This clever idea of Bob Bernecky&#039;s [http://www.snakeisland.com/predicat.pdf] provides a performance improvement for certain expressions by marking certain arrays with special properties.  ...</title>
		<link rel="alternate" type="text/html" href="https://wiki.nars2000.org/index.php?title=Array_Predicates&amp;diff=330&amp;oldid=prev"/>
		<updated>2008-08-17T16:57:27Z</updated>

		<summary type="html">&lt;p&gt;New page: This clever idea of Bob Bernecky&amp;#039;s [http://www.snakeisland.com/predicat.pdf] provides a performance improvement for certain expressions by marking certain arrays with special properties.  ...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This clever idea of Bob Bernecky&amp;#039;s [http://www.snakeisland.com/predicat.pdf] provides a performance improvement for certain expressions by marking certain arrays with special properties.  For example, a permutation vector [http://mathworld.wolfram.com/Permutation.html] has the property that it is invariant under various APL primitives such as rotate/reversal (&amp;lt;apll&amp;gt;⌽&amp;lt;/apll&amp;gt;) and grade up/down (&amp;lt;apll&amp;gt;⍋ ⍒&amp;lt;/apll&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Bernecky has defined several array predicate properties, one of which has been implemented in NARS so far:  permutation vectors.&lt;br /&gt;
&lt;br /&gt;
In this case, monadic iota (&amp;lt;apll&amp;gt;{iota}&amp;lt;/apll&amp;gt;) produces a permutation vector, as does deal (&amp;lt;apll&amp;gt;?&amp;lt;/apll&amp;gt;) when the left and right arguments are the same, and are marked internally as such.  Further use of such arrays maintain that property when operated on by rotate/reversal and grade up/down.  Moreover, the grade primitive uses a much faster (linear) algorithm than it would normally use.&lt;/div&gt;</summary>
		<author><name>Sudleyplace</name></author>
	</entry>
</feed>