File: group.rules

package info (click to toggle)
polymake 3.0r2-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 19,752 kB
  • ctags: 30,928
  • sloc: cpp: 151,785; perl: 32,510; ansic: 3,597; java: 2,654; python: 278; makefile: 181; xml: 103; sh: 79
file content (64 lines) | stat: -rw-r--r-- 2,021 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#  Copyright (c) 1997-2015
#  Ewgenij Gawrilow, Michael Joswig (Technische Universitaet Berlin, Germany)
#  http://www.polymake.org
#
#  This program is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License as published by the
#  Free Software Foundation; either version 2, or (at your option) any
#  later version: http://www.gnu.org/licenses/gpl.txt.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#-------------------------------------------------------------------------------

object Group {

rule DEGREE : GENERATORS {
    $this->DEGREE=$this->GENERATORS->[0]->size;
}

#counts the number of elements in each transversal that are not null
rule TRANSVERSAL_SIZES : TRANSVERSALS{
    my $trans_sizes=new Array<Int>($this->TRANSVERSALS->size);
    for(my $i=0;$i<$this->TRANSVERSALS->size;$i++){
        my $trans_size=1;
        my $single_trans=$this->TRANSVERSALS->[$i];
        for(my $j=0;$j<$single_trans->size;$j++){
            if($single_trans->[$j]>=0){
                $trans_size++;
            }
        }
        $trans_sizes->[$i]=$trans_size;
    }
    $this->TRANSVERSAL_SIZES=$trans_sizes;
}

rule ORDER : TRANSVERSAL_SIZES {
    my $order = new Integer(1);
    foreach (@{$this->TRANSVERSAL_SIZES}) {
        $order *= $_;
    }
    $this->ORDER = $order;
}

rule CONJUGACY_CLASSES : GENERATORS, CONJUGACY_CLASS_REPRESENTATIVES {
    $this->CONJUGACY_CLASSES = conjugacy_classes($this->GENERATORS, $this->CONJUGACY_CLASS_REPRESENTATIVES);
}

rule CONJUGACY_CLASS_SIZES : CONJUGACY_CLASSES {
    my @sizes = ();
    foreach (@{$this->CONJUGACY_CLASSES}) {
        push @sizes, $_->size;
    }
    $this->CONJUGACY_CLASS_SIZES = new Array<Int>(\@sizes);
}

}

# Local Variables:
# mode: perl
# cperl-indent-level:3
# indent-tabs-mode:nil
# End: