<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Source</code>( <var class="Arg">map</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Range</code>( <var class="Arg">map</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SourceHom</code>( <var class="Arg">map</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ RangeHom</code>( <var class="Arg">map</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Morphisms of <em>2-dimensional groups</em> are implemented as <em>2-dimensional mappings</em>. These have a pair of 2-dimensional groups as source and range, together with two group homomorphisms mapping between corresponding source and range groups. These functions return <code class="code">fail</code> when invalid data is supplied.</p>
<p>Here <span class="SimpleMath">σ</span> is the <code class="func">SourceHom</code> (<a href="chap3.html#X7FFD094F7FFB1F17"><span class="RefLink">3.1-1</span></a>) and <span class="SimpleMath">ρ</span> is the <code class="func">RangeHom</code> (<a href="chap3.html#X7FFD094F7FFB1F17"><span class="RefLink">3.1-1</span></a>) of the morphism. When <span class="SimpleMath">calX_1 = calX_2</span> and <span class="SimpleMath">σ, ρ</span> are automorphisms then <span class="SimpleMath">(σ, ρ)</span> is an automorphism of <span class="SimpleMath">calX_1</span>. The group of automorphisms is denoted by <span class="SimpleMath">Aut(calX_1 )</span>.</p>
<p>In the following example we construct a simple automorphism of the crossed module <code class="code">X5</code> constructed in the previous chapter.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsomorphismPerm2DimensionalGroup</code>( <var class="Arg">obj</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsomorphismPc2DimensionalGroup</code>( <var class="Arg">obj</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsomorphismByIsomorphisms</code>( <var class="Arg">D</var>, <var class="Arg">list</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>When <span class="SimpleMath">calD</span> is a <span class="SimpleMath">2</span>-dimensional domain with source <span class="SimpleMath">S</span> and range <span class="SimpleMath">R</span> and <span class="SimpleMath">σ : S -> S',~ ρ : R -> R'</span> are isomorphisms, then <code class="code">IsomorphismByIsomorphisms(D,[sigma,rho])</code> returns an isomorphism <span class="SimpleMath">(σ,ρ) : calD -> calD' where calD'</span> has source <span class="SimpleMath">S' and rangeR'</span>. Be sure to test <code class="code">IsBijective</code> for the two functions <span class="SimpleMath">σ,ρ</span> before applying this operation.</p>
<p>Using <code class="func">IsomorphismByIsomorphisms</code> with a pair of isomorphisms obtained using <code class="code">IsomorphismPermGroup</code> or <code class="code">IsomorphismPcGroup</code>, we may construct a crossed module or a cat<span class="SimpleMath">^1</span>-group of permutation groups or pc-groups.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MorphismOfPullback</code>( <var class="Arg">xmod</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Let <span class="SimpleMath">calX_1 = (λ : L -> N)</span> be the pullback crossed module obtained from a crossed module <span class="SimpleMath">calX_0 = (μ : M -> P)</span> and a group homomorphism <spanclass="SimpleMath">ν : N -> P</span>. Then the associated crossed module morphism is <span class="SimpleMath">(κ,ν) : calX_1 -> calX_0</span> where <span class="SimpleMath">κ</span> is the projection from <span class="SimpleMath">L</span> to <span class="SimpleMath">M</span>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Cat1GroupMorphismOfXModMorphism</code>( <var class="Arg">IsXModMorphism</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ XModMorphismOfCat1GroupMorphism</code>( <var class="Arg">IsCat1GroupMorphism</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>If <span class="SimpleMath">(σ,ρ) : calX_1 -> calX_2</span> and <span class="SimpleMath">calC_1,calC_2</span> are the cat<span class="SimpleMath">^1</span>-groups accociated to <span class="SimpleMath">calX_1, calX_2</span>, then the associated morphism of cat<span class="SimpleMath">^1</span>-groups is <span class="SimpleMath">(γ,ρ)</span> where <span class="SimpleMath">γ(r_1,s_1) = (ρ r_1, σ s_1)</span>.</p>
<p>Similarly, given a morphism <span class="SimpleMath">(γ,ρ) : calC_1 -> calC_2</span> of cat<span class="SimpleMath">^1</span>-groups, the associated morphism of crossed modules is <span class="SimpleMath">(σ,ρ) : calX_1 -> calX_2</span> where <span class="SimpleMath">σ s_1 = γ(1,s_1)</span>. .</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsomorphismPermObject</code>( <var class="Arg">obj</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsomorphismPerm2DimensionalGroup</code>( <var class="Arg">2DimensionalGroup</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsomorphismFp2DimensionalGroup</code>( <var class="Arg">2DimensionalGroup</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsomorphismPc2DimensionalGroup</code>( <var class="Arg">2DimensionalGroup</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ RegularActionHomomorphism2DimensionalGroup</code>( <var class="Arg">2DimensionalGroup</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>The global function <code class="code">IsomorphismPermObject</code> calls <code class="code">IsomorphismPerm2DimensionalGroup</code>, which constructs a morphism whose <code class="func">SourceHom</code> (<a href="chap3.html#X7FFD094F7FFB1F17"><span class="RefLink">3.1-1</span></a>) and <code class="func">RangeHom</code> (<a href="chap3.html#X7FFD094F7FFB1F17"><span class="RefLink">3.1-1</span></a>) are calculated using <code class="code">IsomorphismPermGroup</code> on the source and range.</p>
<p>The global function <code class="code">RegularActionHomomorphism2DimensionalGroup</code> is similar, but uses <code class="code">RegularActionHomomorphism</code> in place of <code class="code">IsomorphismPermGroup</code>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SmallerDegreePermutationRepresentation2DimensionalGroup</code>( <var class="Arg">Perm2DimensionalGroup</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>The attribute <code class="code">SmallerDegreePermutationRepresentation2DimensionalGroup</code> is obtained by calling <code class="code">SmallerDegreePermutationRepresentation</code> on the source and range to obtain the an isomorphism for the pre-xmod or pre-cat<span class="SimpleMath">^1</span>-group.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CompositionMorphism</code>( <var class="Arg">map2</var>, <var class="Arg">map1</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Composition of morphisms (written <code class="code">(<map1> * <map2>)</code> when maps act on the right) calls the <code class="func">CompositionMorphism</code> function for maps (acting on the left), applied to the appropriate type of 2d-mapping.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Kernel</code>( <var class="Arg">map</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Kernel2DimensionalMapping</code>( <var class="Arg">map</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>The kernel of a morphism of crossed modules is a normal subcrossed module whose groups are the kernels of the source and target homomorphisms. The inclusion of the kernel is a standard example of a crossed square, but these have not yet been implemented.</p>
<p>A morphism of crossed modules <span class="SimpleMath">ϕ : calX = (∂ : S -> R) -> calX' = (∂' : S' -> R')</span> induces homomorphisms <span class="SimpleMath">π_1(ϕ) : π_1(∂) -> π_1(∂') and π_2(ϕ) : π_2(∂) -> π_2(∂')</span>. A morphism <span class="SimpleMath">ϕ</span> is a <em>quasi-isomorphism</em> if both <span class="SimpleMath">π_1(ϕ)</span> and <span class="SimpleMath">π_2(ϕ)</span> are isomorphisms. Two crossed modules <span class="SimpleMath">calX,calX' are quasi-isomorphic is there exists a sequence of quasi-isomorphisms
<p>of length <span class="SimpleMath">ℓ-1</span>. Here <span class="SimpleMath">calX_i ↔ calX_j</span> means that <em>either</em> <span class="SimpleMath">calX_i -> calX_j</span> <em>or</em> <span class="SimpleMath">calX_j -> calX_i</span>. When <span class="SimpleMath">calX,calX' are quasi-isomorphic we write calX ≃ calX'</span>. Clearly <span class="SimpleMath">≃</span> is an equivalence relation. Mac\ Lane and Whitehead in <a href="chapBib.html#biBMW">[MLW50]</a> showed that there is a one-to-one correspondence between homotopy <span class="SimpleMath">2</span>-types and quasi-isomorphism classes. We say that <span class="SimpleMath">calX</span> represents a <em>trivial</em> quasi-isomorphism class if <span class="SimpleMath">∂=0</span>.</p>
<p>Two cat<span class="SimpleMath">^1</span>-groups are quasi-isomorphic if their corresponding crossed modules are. The procedure for constructing a representative for the quasi-isomorphism class of a cat<span class="SimpleMath">^1</span>-group <span class="SimpleMath">calC</span>, as described by Ellis and Le in <a href="chapBib.html#biBEL">[EL14]</a>, is as follows. The <em>quotient process</em> consists of finding all normal sub-crossed modules <span class="SimpleMath">calN</span> of the crossed module <span class="SimpleMath">calX</span> associated to <span class="SimpleMath">calC</span>; constructing the quotient crossed module morphisms <span class="SimpleMath">ν : calX -> calX/calN</span>; and converting these <span class="SimpleMath">ν</span> to morphisms from <span class="SimpleMath">calC</span>.</p>
<p>The <em>sub-crossed module process</em> consists of finding all sub-crossed modules <span class="SimpleMath">calS</span> of <span class="SimpleMath">calX</span> such that the inclusion <span class="SimpleMath">ι : calS -> calX</span> is a quasi-isomorphism; then converting <span class="SimpleMath">ι</span> to a morphism to <span class="SimpleMath">calC</span>.</p>
<p>The procedure for finding all quasi-isomorphism reductions consists of repeating the quotient process, followed by the sub-crossed module process, until no further reductions are possible.</p>
<p>It may happen that <span class="SimpleMath">calC_1 ≃ calC_2</span> without either having a quasi-isomorphism reduction. In this case it is necessary to find a suitable <span class="SimpleMath">calC_3</span> with reductions <span class="SimpleMath">calC_3 -> calC_1</span> and <span class="SimpleMath">calC_3 -> calC_2</span>. No such automated process is available in <strong class="pkg">XMod</strong>.</p>
<p>Functions for these computations were first implemented in the package <strong class="pkg">HAP</strong> and are available as <code class="code">QuotientQuasiIsomorph</code>, <code class="code">SubQuasiIsomorph</code> and <code class="code">QuasiIsomorph</code>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ QuotientQuasiIsomorphism</code>( <var class="Arg">cat1</var>, <var class="Arg">bool</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>This function implements the quotient process. The second parameter is a boolean which, when true, causes the results of some intermediate calculations to be printed. The output shows the identity of the reduced cat<span class="SimpleMath">^1</span>-group, if there is one.</p>
<p>The logs above show that <code class="code">C18a</code> has just one normal sub-crossed module <span class="SimpleMath">calN</span> leading to a reduction, and that there are three sub-crossed modules <span class="SimpleMath">calS</span> all giving the same reduction. The conclusion is that <code class="code">C18a</code> is quasi-isomorphic to the identity cat<span class="SimpleMath">^1</span>-group on the cyclic group of order <span class="SimpleMath">2</span>.</p>
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.