Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/francy/notebooks/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 17.3.2023 mit Größe 13 kB image not shown  

Quelle  subgroup-lattice.ipynb   Sprache: unbekannt

 
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Subgroup Lattice"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This is a draft version of the Subgroup Lattice module, inspired by the XGAP version, and implements few features. At the moment is possible to explore the lattice by right clicking a node and explore its properties, and by generating all subgroups lattice."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 1,
     "metadata": {
      "text/plain": ""
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "LoadPackage(\"subgrouplattice\");"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Sym( [ 1 .. 5 ] )"
      ]
     },
     "execution_count": 2,
     "metadata": {
      "text/plain": ""
     },
     "output_type": "execute_result"
    },
    {
     "data": {
      "application/vnd.francy+json": "{\"canvas\" : {\"graph\" : {\"collapsed\" : true,\"id\" : \"F1DE6EE59E29D4239443125A0840082FE\",\"links\" : {\"F1F7052BBA04A4DDB242EF4F7C5A99598\" : {\"color\" : \"\",\"id\" : \"F1F7052BBA04A4DDB242EF4F7C5A99598\",\"invisible\" : false,\"length\" : 0,\"source\" : \"F5B16133ABEEF46241C15AE7D6D83A696\",\"target\" : \"F0D2A9C427BFE40F7ECBD19281EA20FDE\",\"weight\" : 0}},\"nodes\" : {\"F0D2A9C427BFE40F7ECBD19281EA20FDE\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F0D2A9C427BFE40F7ECBD19281EA20FDE\",\"layer\" : -4,\"menus\" : {\"F04D54A3D08084853E45C38A46FA50732\" : {\"callback\" : {\"func\" : \"unknown\",\"id\" : \"FEB68C370C1574A32DC9184024B615505\",\"knownArgs\" : [\"<object>\",\"SymmetricGroup( [ 1 .. 5 ] )\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"F04D54A3D08084853E45C38A46FA50732\",\"menus\" : {},\"title\" : \"Size\"},\"F304228F1438C48FC4CC53118A36DDEF3\" : {\"callback\" : {\"func\" : \"unknown\",\"id\" : \"F4F76BBA7ACE74701FCD9E22C791F50B3\",\"knownArgs\" : [\"<object>\",\"SymmetricGroup( [ 1 .. 5 ] )\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"F304228F1438C48FC4CC53118A36DDEF3\",\"menus\" : {},\"title\" : \"IsNilpotent\"},\"F4AD0EAE4B45C4A31843FFE7030D936EE\" : {\"callback\" : {\"func\" : \"unknown\",\"id\" : \"F27732E064B5448530CD62173D4467181\",\"knownArgs\" : [\"<object>\",\"SymmetricGroup( [ 1 .. 5 ] )\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"F4AD0EAE4B45C4A31843FFE7030D936EE\",\"menus\" : {},\"title\" : \"Isomorphism\"},\"F80E41C321F4D4F5F746D57B3243F58B7\" : {\"callback\" : {\"func\" : \"unknown\",\"id\" : \"FF4BBF21ABC0F4084AC4D3A5150300512\",\"knownArgs\" : [\"<object>\",\"SymmetricGroup( [ 1 .. 5 ] )\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"F80E41C321F4D4F5F746D57B3243F58B7\",\"menus\" : {},\"title\" : \"IsCyclic\"},\"FA1EBAA063681401F4487D7553543F84B\" : {\"callback\" : {\"func\" : \"unknown\",\"id\" : \"F72ABFFE24A1E42260C3AEC51DEBCCD8E\",\"knownArgs\" : [\"<object>\",\"SymmetricGroup( [ 1 .. 5 ] )\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"FA1EBAA063681401F4487D7553543F84B\",\"menus\" : {},\"title\" : \"IsAbelian\"},\"FB6633228A61F48F08CD2B33B7F3323F6\" : {\"callback\" : {\"func\" : \"unknown\",\"id\" : \"F3FB07835D2984E75DC752FAB5A002D2C\",\"knownArgs\" : [\"<object>\",\"SymmetricGroup( [ 1 .. 5 ] )\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"FB6633228A61F48F08CD2B33B7F3323F6\",\"menus\" : {},\"title\" : \"IsSimple\"},\"FD857D61C34924D2E9CC17C3B49594079\" : {\"callback\" : {\"func\" : \"unknown\",\"id\" : \"FE5E7FB703C864241C433D76189C2C321\",\"knownArgs\" : [\"<object>\",\"SymmetricGroup( [ 1 .. 5 ] )\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"FD857D61C34924D2E9CC17C3B49594079\",\"menus\" : {},\"title\" : \"IsPerfect\"},\"FEE7AD24B25224FBA0C2555D8DE5904B0\" : {\"callback\" : {\"func\" : \"unknown\",\"id\" : \"F1DA65586C50E412154E13098345A429B\",\"knownArgs\" : [\"<object>\",\"SymmetricGroup( [ 1 .. 5 ] )\",\"SymmetricGroup( [ 1 .. 5 ] )\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"FEE7AD24B25224FBA0C2555D8DE5904B0\",\"menus\" : {},\"title\" : \"IsNormal\"},\"FEFFC2981F62448D9DCB9D09C659B69CD\" : {\"callback\" : {\"func\" : \"unknown\",\"id\" : \"F87BFE1F1E35742B1144A057386232298\",\"knownArgs\" : [\"<object>\",\"SymmetricGroup( [ 1 .. 5 ] )\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"FEFFC2981F62448D9DCB9D09C659B69CD\",\"menus\" : {},\"title\" : \"IsSolvable\"}},\"messages\" : {},\"parent\" : \"\",\"selected\" : true,\"size\" : 10,\"title\" : \"G\",\"type\" : \"diamond\",\"x\" : 0,\"y\" : 0},\"F5B16133ABEEF46241C15AE7D6D83A696\" : {\"callbacks\" : {},\"color\" : \"\",\"id\" : \"F5B16133ABEEF46241C15AE7D6D83A696\",\"layer\" : 0,\"menus\" : {\"F1900EA2C8F0A4CC564164ED0EE880CFD\" : {\"callback\" : {\"func\" : \"unknown\",\"id\" : \"F2F1BDE291B81489B4C8E2DD54BECF24B\",\"knownArgs\" : [\"<object>\",\"Group( () )\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"F1900EA2C8F0A4CC564164ED0EE880CFD\",\"menus\" : {},\"title\" : \"IsNilpotent\"},\"F5E37177F9BB94B5B6CE1C1CCD8B16B14\" : {\"callback\" : {\"func\" : \"unknown\",\"id\" : \"FAE7BF8DF3F5649208C829AF42607CBC3\",\"knownArgs\" : [\"<object>\",\"Group( () )\",\"SymmetricGroup( [ 1 .. 5 ] )\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"F5E37177F9BB94B5B6CE1C1CCD8B16B14\",\"menus\" : {},\"title\" : \"IsNormal\"},\"F63B36EC6B96D4BCC6425763B5F0B9868\" : {\"callback\" : {\"func\" : \"unknown\",\"id\" : \"F33A6E50E97694B5A644BBAB813AC9ED1\",\"knownArgs\" : [\"<object>\",\"Group( () )\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"F63B36EC6B96D4BCC6425763B5F0B9868\",\"menus\" : {},\"title\" : \"IsPerfect\"},\"F9790D930D43840B17C812F71777B06D0\" : {\"callback\" : {\"func\" : \"unknown\",\"id\" : \"F9FB57AD84B2249063C8C0533AB949C62\",\"knownArgs\" : [\"<object>\",\"Group( () )\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"F9790D930D43840B17C812F71777B06D0\",\"menus\" : {},\"title\" : \"Isomorphism\"},\"FA9320E8E2C35439A0C55328CE67C913C\" : {\"callback\" : {\"func\" : \"unknown\",\"id\" : \"F78343F4BC93D48055471A718070FB046\",\"knownArgs\" : [\"<object>\",\"Group( () )\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"FA9320E8E2C35439A0C55328CE67C913C\",\"menus\" : {},\"title\" : \"IsCyclic\"},\"FB25AA35C021A46D48CC4B05A582E5255\" : {\"callback\" : {\"func\" : \"unknown\",\"id\" : \"F244DB4F274954973546F964DD996A8F4\",\"knownArgs\" : [\"<object>\",\"Group( () )\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"FB25AA35C021A46D48CC4B05A582E5255\",\"menus\" : {},\"title\" : \"IsAbelian\"},\"FBB556826C9BA439774237E2F06E02357\" : {\"callback\" : {\"func\" : \"unknown\",\"id\" : \"F0DBAB5F40B5D4EAD540DA4435782C4D8\",\"knownArgs\" : [\"<object>\",\"Group( () )\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"FBB556826C9BA439774237E2F06E02357\",\"menus\" : {},\"title\" : \"IsSolvable\"},\"FBCD0AC7B2AF24880A4BBD53AD677E6B0\" : {\"callback\" : {\"func\" : \"unknown\",\"id\" : \"FEBDBFA4C8B6140D8147B109BBB9ECCE9\",\"knownArgs\" : [\"<object>\",\"Group( () )\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"FBCD0AC7B2AF24880A4BBD53AD677E6B0\",\"menus\" : {},\"title\" : \"IsSimple\"},\"FF192A4AFE6364DA60C38E122189F8951\" : {\"callback\" : {\"func\" : \"unknown\",\"id\" : \"F15355F09EEDF4D223CBAB50D8BD86B76\",\"knownArgs\" : [\"<object>\",\"Group( () )\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"FF192A4AFE6364DA60C38E122189F8951\",\"menus\" : {},\"title\" : \"Size\"}},\"messages\" : {},\"parent\" : \"\",\"size\" : 10,\"title\" : \"1\",\"type\" : \"diamond\",\"x\" : 0,\"y\" : 0}},\"simulation\" : true,\"type\" : \"directed\"},\"height\" : 600,\"id\" : \"F6C78AAF6F91848E45432FDFD90DDE4F8\",\"latticeType\" : {\"canCompare\" : true,\"contextMenus\" : [\"rec( func := function ( poset, n ) local message; message := FrancyMessage( FrancyMessageType.INFO, \\\"Size\\\", String( Size( n ) ) ); Add( poset, message ); return Draw( poset ); end, group := false, name := \\\"Size\\\" )\",\"rec( func := function ( poset, n ) local message; message := FrancyMessage( FrancyMessageType.INFO, \\\"Is commutative?\\\", String( IsCommutative( n ) ) ); Add( poset, message ); return Draw( poset ); end, group := false, name := \\\"IsAbelian\\\" )\",\"rec( func := function ( poset, n ) local message; message := FrancyMessage( FrancyMessageType.INFO, \\\"Is cyclic?\\\", String( IsCyclic( n ) ) ); Add( poset, message ); return Draw( poset ); end, group := false, name := \\\"IsCyclic\\\" )\",\"rec( func := function ( poset, n ) local message; message := FrancyMessage( FrancyMessageType.INFO, \\\"Is NilpotentGroup?\\\", String( IsNilpotentGroup( n ) ) ); Add( poset, message ); return Draw( poset ); end, group := false, name := \\\"IsNilpotent\\\" )\",\"rec( func := function ( poset, n ) local message; message := FrancyMessage( FrancyMessageType.INFO, \\\"Is normal?\\\", String( IsNormal( n ) ) ); Add( poset, message ); return Draw( poset ); end, group := true, name := \\\"IsNormal\\\" )\",\"rec( func := function ( poset, n ) local message; message := FrancyMessage( FrancyMessageType.INFO, \\\"Is perfect group?\\\", String( IsPerfectGroup( n ) ) ); Add( poset, message ); return Draw( poset ); end, group := false, name := \\\"IsPerfect\\\" )\",\"rec( func := function ( poset, n ) local message; message := FrancyMessage( FrancyMessageType.INFO, \\\"Is simple group?\\\", String( IsSimpleGroup( n ) ) ); Add( poset, message ); return Draw( poset ); end, group := false, name := \\\"IsSimple\\\" )\",\"rec( func := function ( poset, n ) local message; message := FrancyMessage( FrancyMessageType.INFO, \\\"Is solvable group?\\\", String( IsSolvableGroup( n ) ) ); Add( poset, message ); return Draw( poset ); end, group := false, name := \\\"IsSolvable\\\" )\",\"rec( func := function ( poset, n ) local message; message := FrancyMessage( FrancyMessageType.INFO, \\\"Isomorphism\\\", String( IdGroup( n ) ) ); Add( poset, message ); return Draw( poset ); end, group := false, name := \\\"Isomorphism\\\" )\"],\"hasse\" : true,\"knowsLevels\" : true,\"menus\" : [\"rec( func := function ( poset, G ) local L, cls, len, sz, graphHasse, max, rep, z, t, i, j, k, nodes, last, knownArgs, m, cb; L := LatticeSubgroups( G ); cls := ConjugacyClassesSubgroups( L ); len := [  ]; sz := [  ]; for i in cls do Add( len, Size( i ) ); AddSet( sz, Size( Representative( i ) ) ); od; graphHasse := poset!.graph; graphHasse!.nodes := rec(  ); graphHasse!.links := rec(  ); nodes := [  ]; sz := Reversed( sz ); for i in [ 1 .. Length( cls ) ] do nodes[i] := [  ]; for j in [ 1 .. len[i] ] do if len[i] = 1 then nodes[i][j] := Shape( ShapeType.DIAMOND, String( i ) ); else nodes[i][j] := Shape( ShapeType.CIRCLE, String( i ) ); fi; SetLayer( nodes[i][j], - Size( Representative( cls[i] ) ) ); for m in poset!.latticeType.contextMenus do knownArgs := [ poset, Representative( cls[i] ) ]; if m.group = true then Add( knownArgs, G ); fi; cb := Callback( m.func, knownArgs ); Add( nodes[i][j], Menu( m.name, cb ) ); od; if i = Length( cls ) and j = len[i] then SetTitle( nodes[i][j], \\\"G\\\" ); fi; Add( graphHasse, nodes[i][j] ); od; od; last := rec( o := 0, n := 0 ); for i in [ 1 .. Length( cls ) ] do for j in [ 1 .. len[i] ] do if Layer( nodes[i][j] ) <> last.o then last.o := Layer( nodes[i][j] ); last.n := last.n - 2; fi; SetLayer( nodes[i][j], last.n ); od; od; max := MaximalSubgroupsLattice( L ); for i in [ 1 .. Length( cls ) ] do for j in max[i] do rep := ClassElementLattice( cls[i], 1 ); for k in [ 1 .. len[i] ] do if k = 1 then z := j[2]; else t := cls[i]!.normalizerTransversal[k]; z := ClassElementLattice( cls[j[1]], 1 ); z := cls[j[1]]!.normalizerTransversal[j[2]] * t; z := PositionCanonical( cls[j[1]]!.normalizerTransversal, z ); fi; Add( graphHasse, Link( nodes[j[1]][z], nodes[i][k] ) ); od; od; od; return Draw( poset ); end, group := true, multiple := false, name := \\\"All Subgroups\\\" )\"],\"trivial\" : true},\"menus\" : {\"FC6A9944CD86B443E7C342BF378CDD1C0\" : {\"callback\" : {},\"id\" : \"FC6A9944CD86B443E7C342BF378CDD1C0\",\"menus\" : {\"F04453510D96946ED4C05ABC611B6675E\" : {\"callback\" : {\"func\" : \"unknown\",\"id\" : \"FB3FEBDF7E7964C8624D124FF694D973A\",\"knownArgs\" : [\"<object>\",\"SymmetricGroup( [ 1 .. 5 ] )\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"F04453510D96946ED4C05ABC611B6675E\",\"menus\" : {},\"title\" : \"All Subgroups\"}},\"title\" : \"Subgroup Lattice\"}},\"messages\" : {\"F8F419FE8CFAC4BB2E4B26A36CFD237A4\" : {\"callback\" : {\"func\" : \"Remove\",\"id\" : \"FB06212CEB92941256CD0C925F3CC61FD\",\"knownArgs\" : [\"<object>\",\"<object>\"],\"requiredArgs\" : {},\"trigger\" : \"click\"},\"id\" : \"F8F419FE8CFAC4BB2E4B26A36CFD237A4\",\"text\" : \"There are 16 levels in this Group.\",\"title\" : \"\",\"type\" : \"default\"}},\"texTypesetting\" : true,\"title\" : \"GraphicSubgroupLattice\",\"width\" : 800,\"zoomToFit\" : true},\"mime\" : \"application\\/vnd.francy+json\",\"version\" : \"1.2.4\"}"
     },
     "execution_count": 3,
     "metadata": {
      "application/vnd.francy+json": {}
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "G := SymmetricGroup(5); #G := PSL(2, 7); #G := DihedralGroup(44);\n",
    "GraphicSubgroupLattice(G);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "GAP 4",
   "language": "gap",
   "name": "gap-4"
  },
  "language_info": {
   "codemirror_mode": "gap",
   "file_extension": ".g",
   "mimetype": "text/x-gap",
   "name": "GAP 4",
   "nbconvert_exporter": "",
   "pygments_lexer": "gap",
   "version": "4.13dev"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}

[ Dauer der Verarbeitung: 0.38 Sekunden  (vorverarbeitet)  ]