Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  hasse.tst   Sprache: unbekannt

 
gap> START_TEST("omput.tst");

########################################################
## May also call `DrawHasse(diagram)` to produce html
########################################################
## Bruhat order on permutations
########################################################
# return {(i,j) | i < j and p(i) > p(j)}
gap> inv := function(p)
>       local n, i, j, res;

>       res := [];
>       n := Length(ListPerm(p));

>       for j in [1 .. n] do
>               for i in [1 .. j-1] do
>                       if i^p > j^p then
>                               Append(res, [[i,j]]);
>                       fi;
>               od;
>       od;
>       return res;
> end;
function( p ) ... end
gap> 
gap> le := function(p,t)
>       return IsSubset(inv(t), inv(p));
> end;
function( p, t ) ... end
gap> 
gap> s := SymmetricGroup(4);
Sym( [ 1 .. 4 ] )
gap> l := AsSet(s);
[ (), (3,4), (2,3), (2,3,4), (2,4,3), (2,4), (1,2), (1,2)(3,4), (1,2,3), 
  (1,2,3,4), (1,2,4,3), (1,2,4), (1,3,2), (1,3,4,2), (1,3), (1,3,4), 
  (1,3)(2,4), (1,3,2,4), (1,4,3,2), (1,4,2), (1,4,3), (1,4), (1,4,2,3), 
  (1,4)(2,3) ]
gap> h := CreateHasseDiagram(l,le);;
gap> OMPrint(h);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMBIND>
   <OMS cd="fns2" name="constant"/>
   <OMBVAR>
     <OMV name="()"/>
     <OMV name="(3,4)"/>
     <OMV name="(2,3)"/>
     <OMV name="(2,3,4)"/>
     <OMV name="(2,4,3)"/>
     <OMV name="(2,4)"/>
     <OMV name="(1,2)"/>
     <OMV name="(1,2)(3,4)"/>
     <OMV name="(1,2,3)"/>
     <OMV name="(1,2,3,4)"/>
     <OMV name="(1,2,4,3)"/>
     <OMV name="(1,2,4)"/>
     <OMV name="(1,3,2)"/>
     <OMV name="(1,3,4,2)"/>
     <OMV name="(1,3)"/>
     <OMV name="(1,3,4)"/>
     <OMV name="(1,3)(2,4)"/>
     <OMV name="(1,3,2,4)"/>
     <OMV name="(1,4,3,2)"/>
     <OMV name="(1,4,2)"/>
     <OMV name="(1,4,3)"/>
     <OMV name="(1,4)"/>
     <OMV name="(1,4,2,3)"/>
     <OMV name="(1,4)(2,3)"/>
   </OMBVAR>
   <OMA>
    <OMS cd="relation2" name="hasse_diagram"/>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="()"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(3,4)"/>
      <OMV name="(2,3)"/>
      <OMV name="(1,2)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(3,4)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(2,3,4)"/>
      <OMV name="(1,2)(3,4)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(2,3)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(2,4,3)"/>
      <OMV name="(1,2,3)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(2,3,4)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(2,4)"/>
      <OMV name="(1,2,3,4)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(2,4,3)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(2,4)"/>
      <OMV name="(1,2,4,3)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(2,4)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(1,2,4)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(1,2)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(1,2)(3,4)"/>
      <OMV name="(1,3,2)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(1,2)(3,4)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(1,3,4,2)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(1,2,3)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(1,2,4,3)"/>
      <OMV name="(1,3)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(1,2,3,4)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(1,2,4)"/>
      <OMV name="(1,3,4)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(1,2,4,3)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(1,3)(2,4)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(1,2,4)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(1,3,2,4)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(1,3,2)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(1,3)"/>
      <OMV name="(1,4,3,2)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(1,3,4,2)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(1,3,4)"/>
      <OMV name="(1,4,2)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(1,3)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(1,4,3)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(1,3,4)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(1,4)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(1,3)(2,4)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(1,3,2,4)"/>
      <OMV name="(1,4,2,3)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(1,3,2,4)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(1,4)(2,3)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(1,4,3,2)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(1,4,2)"/>
      <OMV name="(1,4,3)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(1,4,2)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(1,4)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(1,4,3)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(1,4,2,3)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(1,4)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(1,4)(2,3)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(1,4,2,3)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="(1,4)(2,3)"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="(1,4)(2,3)"/>
     <OMA>
      <OMS cd="list1" name="list"/>
     </OMA>
    </OMA>
   </OMA>
 </OMBIND>
</OMOBJ>
gap> 

########################################################
## Divisor lattice of a natural number
########################################################
# try these numbers N := 102, 2618, 282387;
# the number lattice is basically boring, just a concatenation of cubes...
gap> leq := function(x,y) return y mod x = 0; end;
function( x, y ) ... end
gap> N := 102;
102
gap> h := CreateHasseDiagram(Filtered([1..N],i->N mod i = 0), leq);;
gap> OMPrint(h);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMBIND>
   <OMS cd="fns2" name="constant"/>
   <OMBVAR>
     <OMV name="1"/>
     <OMV name="2"/>
     <OMV name="3"/>
     <OMV name="6"/>
     <OMV name="17"/>
     <OMV name="34"/>
     <OMV name="51"/>
     <OMV name="102"/>
   </OMBVAR>
   <OMA>
    <OMS cd="relation2" name="hasse_diagram"/>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="1"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="2"/>
      <OMV name="3"/>
      <OMV name="17"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="2"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="6"/>
      <OMV name="34"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="3"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="6"/>
      <OMV name="51"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="6"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="102"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="17"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="34"/>
      <OMV name="51"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="34"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="102"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="51"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="102"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="102"/>
     <OMA>
      <OMS cd="list1" name="list"/>
     </OMA>
    </OMA>
   </OMA>
 </OMBIND>
</OMOBJ>
gap> 

#########################################################################
## Some semigroups examples #############################################
#########################################################################
gap> s1 := Transformation([1,1,3,4]);
Transformation( [ 1, 1 ] )
gap> s2 := Transformation([1,2,2,4]);
Transformation( [ 1, 2, 2 ] )
gap> s3 := Transformation([1,2,3,3]);
Transformation( [ 1, 2, 3, 3 ] )
gap> t1 := Transformation([2,2,3,4]);
Transformation( [ 2, 2 ] )
gap> t2 := Transformation([1,3,3,4]);
Transformation( [ 1, 3, 3 ] )
gap> t3 := Transformation([1,2,4,4]);
Transformation( [ 1, 2, 4, 4 ] )
gap> o4 := Semigroup([s1,s2,s3,t1,t2,t3]);
<transformation semigroup of degree 4 with 6 generators>
gap> rcl := GreensRClasses( o4 );                                
[ <Green's R-class: Transformation( [ 1, 1, 1, 1 ] )>, 
  <Green's R-class: Transformation( [ 1, 1, 1, 2 ] )>, 
  <Green's R-class: Transformation( [ 1, 1, 2, 2 ] )>, 
  <Green's R-class: Transformation( [ 1, 1, 2, 3 ] )>, 
  <Green's R-class: Transformation( [ 1, 2, 2, 2 ] )>, 
  <Green's R-class: Transformation( [ 1, 2, 2, 3 ] )>, 
  <Green's R-class: Transformation( [ 1, 2, 3, 3 ] )> ]
gap> h := CreateHasseDiagram(rcl, IsGreensLessThanOrEqual);;
gap> OMPrint(h);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMBIND>
   <OMS cd="fns2" name="constant"/>
   <OMBVAR>
     <OMV name="<object>"/>
     <OMV name="<object>"/>
     <OMV name="<object>"/>
     <OMV name="<object>"/>
     <OMV name="<object>"/>
     <OMV name="<object>"/>
     <OMV name="<object>"/>
   </OMBVAR>
   <OMA>
    <OMS cd="relation2" name="hasse_diagram"/>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="<object>"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="<object>"/>
      <OMV name="<object>"/>
      <OMV name="<object>"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="<object>"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="<object>"/>
      <OMV name="<object>"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="<object>"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="<object>"/>
      <OMV name="<object>"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="<object>"/>
     <OMA>
      <OMS cd="list1" name="list"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="<object>"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="<object>"/>
      <OMV name="<object>"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="<object>"/>
     <OMA>
      <OMS cd="list1" name="list"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="<object>"/>
     <OMA>
      <OMS cd="list1" name="list"/>
     </OMA>
    </OMA>
   </OMA>
 </OMBIND>
</OMOBJ>
gap> 

###################################################################
## Some basic Hasse Diagrams - for when everything else is broken
###################################################################
gap> d := Domain(["0","a","b","c","1"]);;
gap> Elements(d);
[ "0", "1", "a", "b", "c" ]
gap> Size(d);
5
gap> r := BinaryRelationByElements(d,
> [ DirectProductElement(["0","a"]),
> DirectProductElement(["0","b"]),
> DirectProductElement(["0","c"]),
> DirectProductElement(["a","1"]),
> DirectProductElement(["b","1"]),
> DirectProductElement(["c","1"])]);;
gap> SetIsHasseDiagram(r, true);
gap> OMPrint(r);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMBIND>
   <OMS cd="fns2" name="constant"/>
   <OMBVAR>
     <OMV name="0"/>
     <OMV name="a"/>
     <OMV name="b"/>
     <OMV name="c"/>
     <OMV name="1"/>
   </OMBVAR>
   <OMA>
    <OMS cd="relation2" name="hasse_diagram"/>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="0"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="a"/>
      <OMV name="b"/>
      <OMV name="c"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="a"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="1"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="b"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="1"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="c"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="1"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="1"/>
     <OMA>
      <OMS cd="list1" name="list"/>
     </OMA>
    </OMA>
   </OMA>
 </OMBIND>
</OMOBJ>
gap> 

########################################################
## Partitions of a Natural Number
##
## problematic? - writing matrices?
########################################################

# this identifies the holes where the spacers go
gap> sumrep := function(p)
>       return List([1 .. Length(p)], i->Sum([1 .. i], j->p[j]));
> end;
function( p ) ... end

# a refines b iff sumrep(b) is a subset of sumrep(a)
gap> refines := function(a,b)
>       return IsSubset(sumrep(a), sumrep(b));
> end;
function( a, b ) ... end
gap> 
gap> p := Partitions(5);
[ [ 1, 1, 1, 1, 1 ], [ 2, 1, 1, 1 ], [ 2, 2, 1 ], [ 3, 1, 1 ], [ 3, 2 ], 
  [ 4, 1 ], [ 5 ] ]
gap> h := CreateHasseDiagram(p, refines);;
gap> OMPrint(h);
<OMOBJ xmlns="http://www.openmath.org/OpenMath" version="2.0">
 <OMBIND>
   <OMS cd="fns2" name="constant"/>
   <OMBVAR>
     <OMV name="[ 1, 1, 1, 1, 1 ]"/>
     <OMV name="[ 2, 1, 1, 1 ]"/>
     <OMV name="[ 2, 2, 1 ]"/>
     <OMV name="[ 3, 1, 1 ]"/>
     <OMV name="[ 3, 2 ]"/>
     <OMV name="[ 4, 1 ]"/>
     <OMV name="[ 5 ]"/>
   </OMBVAR>
   <OMA>
    <OMS cd="relation2" name="hasse_diagram"/>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="[ 1, 1, 1, 1, 1 ]"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="[ 2, 1, 1, 1 ]"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="[ 2, 1, 1, 1 ]"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="[ 2, 2, 1 ]"/>
      <OMV name="[ 3, 1, 1 ]"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="[ 2, 2, 1 ]"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="[ 4, 1 ]"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="[ 3, 1, 1 ]"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="[ 3, 2 ]"/>
      <OMV name="[ 4, 1 ]"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="[ 3, 2 ]"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="[ 5 ]"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="[ 4, 1 ]"/>
     <OMA>
      <OMS cd="list1" name="list"/>
      <OMV name="[ 5 ]"/>
     </OMA>
    </OMA>
    <OMA>
     <OMS cd="list1" name="list"/>
     <OMV name="[ 5 ]"/>
     <OMA>
      <OMS cd="list1" name="list"/>
     </OMA>
    </OMA>
   </OMA>
 </OMBIND>
</OMOBJ>

#
gap> STOP_TEST("omput.tst");

[ Dauer der Verarbeitung: 0.41 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge