52 virtual unsigned int row_size(
unsigned int row)
const=0;
53 virtual unsigned int column_size(
unsigned int col)
const;
62 unsigned long hook_length(
unsigned int row,
unsigned int col)
const;
73 virtual unsigned int row_size(
unsigned int row)
const;
74 virtual void add_box(
unsigned int row);
96 virtual unsigned int row_size(
unsigned int row)
const;
99 std::pair<int, int>
find(
const T&)
const;
105 const T&
operator()(
unsigned int row,
unsigned int col)
const;
118 template<
class StrictWeakOrdering>
void sort_columns(StrictWeakOrdering comp);
119 template<
class StrictWeakOrdering>
void canonicalise(StrictWeakOrdering comp,
bool only_col_ex=
false);
197 bool operator<(
const in_column_const_iterator& other)
const;
198 bool operator>(
const in_column_const_iterator& other)
const;
199 bool operator<=(
const in_column_const_iterator& other)
const;
200 bool operator>=(
const in_column_const_iterator& other)
const;
201 ptrdiff_t
operator-(
const in_column_const_iterator&)
const;
254 bool operator<(
const in_row_const_iterator& other)
const;
255 bool operator>(
const in_row_const_iterator& other)
const;
258 ptrdiff_t
operator-(
const in_row_const_iterator&)
const;
337 const_iterator
end()
const;
341 template<
class OutputIterator>
342 OutputIterator
Garnir_set(OutputIterator,
unsigned int,
unsigned int)
const;
352 yngint_t total_dimension(
unsigned int dim);
353 void remove_nullifying_traces();
356 bool standard_form();
357 void add_tableau(
const T&);
358 void symmetrise(
const T& tabsym);
368 bool legal_box(
const std::vector<std::pair<int,int> >& prev,
369 const std::vector<std::pair<int,int> >& ths,
370 int colpos,
int trypos);
384 typename tableau_container_t::iterator it=storage.begin();
385 while(it!=storage.end()) {
386 if(it->has_nullifying_trace())
387 it=storage.erase(it);
466 for(
unsigned int ir=0; ir<
rows.size(); ++ir) {
467 for(
unsigned int ic=0; ic<
rows[ir].size(); ++ic) {
468 if(
rows[ir][ic]==obj)
469 return std::pair<int,int>(ir, ic);
472 return std::pair<int,int>(-1,-1);
497 template<
class StrictWeakOrdering>
502 for(
unsigned int c=0; c<
row_size(0); ++c) {
509 template<
class StrictWeakOrdering>
512 for(
unsigned int c1=0; c1<
row_size(0); ++c1) {
513 for(
unsigned int c2=c1; c2<
row_size(0); ++c2) {
515 if(comp((*
this)(0,c2), (*
this)(0,c1)))
523 template<
class StrictWeakOrdering>
565 return (*tab)(row_number + n, column_number);
571 return (*tab)(row_number,column_number);
577 return &((*tab)(row_number,column_number));
663 return !((*this)==other);
671 : tab(t), column_number(c), row_number(r)
677 : tab(other.tab), column_number(other.column_number), row_number(other.row_number)
706 return (*tab)(row_number, column_number);
712 return &((*tab)(row_number, column_number));
770 if (row_number <= other.
row_number)
return true;
777 if (row_number >= other.
row_number)
return true;
784 if (row_number < other.
row_number)
return true;
791 if (row_number > other.
row_number)
return true;
798 return !((*this) == other);
807 : tab(t), column_number(c), row_number(r)
836 return (*tab)(row_number, column_number);
842 return &((*tab)(row_number, column_number));
928 return !((*this) == other);
936 : tab(t), column_number(c), row_number(r)
942 : tab(other.tab), column_number(other.column_number), row_number(other.row_number)
972 return (*tab)(row_number, column_number);
978 return &((*tab)(row_number, column_number));
1064 return !((*this) == other);
1074 : tab(t), column_number(c), row_number(r)
1103 return (*tab)(row_number,column_number);
1109 return &((*tab)(row_number,column_number));
1115 if(++column_number==tab->rows[row_number].size()) {
1126 if(++column_number==tab->rows[row_number]) {
1138 if(column_number==0) {
1140 column_number=tab->rows[row_number].size()-1;
1142 else --column_number;
1150 if(column_number==0) {
1152 column_number=tab->rows[row_number].size()-1;
1154 else --column_number;
1163 if(++column_number==tab->rows[row_number]) {
1176 if(column_number==0) {
1178 column_number=tab->rows[row_number].size()-1;
1180 else --column_number;
1211 return !((*this)==other);
1221 : tab(t), column_number(c), row_number(r)
1227 : tab(other.tab), column_number(other.column_number), row_number(other.row_number)
1256 return (*tab)(row_number, column_number);
1262 return &((*tab)(row_number, column_number));
1268 if (++column_number == tab->rows[row_number].size()) {
1279 if (++column_number == tab->rows[row_number]) {
1291 if (column_number == 0) {
1293 column_number = tab->rows[row_number].size() - 1;
1295 else --column_number;
1303 if (column_number == 0) {
1305 column_number = tab->rows[row_number].size() - 1;
1307 else --column_number;
1315 while (this->n > 0) {
1316 if (++column_number == tab->rows[row_number]) {
1329 if (column_number == 0) {
1331 column_number = tab->rows[row_number].size() - 1;
1333 else --column_number;
1350 if (row_number < other.
row_number)
return true;
1357 if (row_number > other.
row_number)
return true;
1364 return !((*this) == other);
1504 template<
class OutputIterator>
1508 unsigned int r=row, c=col;
1535 for(
unsigned int c=0; c<
row_size(r)-1; ++c) {
1536 if((*
this)(r,c) > (*
this)(r,c+1) )
1537 return std::pair<int, int>(r,c);
1541 return std::pair<int,int>(-1,-1);
1547 bool already_standard=
true;
1549 typename tableau_container_t::iterator thetab=storage.begin();
1550 while(thetab!=storage.end()) {
1551 (*thetab).sort_within_columns();
1552 std::pair<int,int> where=(*thetab).nonstandard_loc();
1553 if(where.first!=-1) {
1554 already_standard=
false;
1556 for(
unsigned int i1=where.first; i1<(*thetab).column_size(where.second); ++i1)
1557 com.
original.push_back((*thetab)(i1,where.second));
1558 for(
unsigned int i1=0; i1<=(
unsigned int)(where.first); ++i1)
1559 com.
original.push_back((*thetab)(i1,where.second+1));
1560 com.
sublengths.push_back((*thetab).column_size(where.second)-where.first);
1563 for(
unsigned int tabi=1; tabi<com.
size(); ++tabi) {
1565 unsigned int offset=0;
1566 for(
unsigned int i1=where.first; i1<(*thetab).column_size(where.second); ++i1, ++offset)
1567 ntab(i1,where.second)=com[tabi][offset];
1568 for(
unsigned int i1=0; i1<=(
unsigned int)(where.first); ++i1, ++offset)
1569 ntab(i1,where.second+1)=com[tabi][offset];
1570 ntab.multiplicity*=-1*com.
ordersign(tabi);
1573 thetab=storage.erase(thetab);
1577 return already_standard;
1583 typename tableau_container_t::iterator it=storage.begin();
1584 while(it!=storage.end()) {
1585 if((*it).compare_without_multiplicity(ntab)) {
1586 (*it).multiplicity+=ntab.multiplicity;
1587 if((*it).multiplicity==0)
1593 storage.push_back(ntab);
1609 for(
unsigned int c=0; c<
row_size(r); ++c)
1612 unsigned int offset=0;
1619 for(
unsigned int c=0; c<
row_size(r); ++c)
1625 if(modulo_monoterm) {
1627 for(
unsigned int c=0; c<
row_size(0); ++c)
1629 for(
unsigned int i=0; i<sym.
size(); ++i)
1634 for(
unsigned int c=0; c<
row_size(0); ++c) {
1653 for(
unsigned int c=0; c<
row_size(r); ++c)
1656 unsigned int offset=0;
1663 for(
unsigned int c=0; c<
row_size(r); ++c)
1669 for(
unsigned int c=0; c<
row_size(0); ++c) {
1733 :
tableau(other), rows(other.rows)
1749 typename tableau_container_t::const_iterator it=storage.begin();
1750 while(it!=storage.end()) {
1751 totdim+=(*it).dimension(dim);
1757 template<
class T,
class OutputIterator>
1759 OutputIterator out,
bool alltabs=
false)
1762 while(it!=tabs1.
storage.end()) {
1763 LR_tensor((*it), tab2, maxrows, out, alltabs);
1768 template<
class T1,
class T2>
1770 const T2& tab2,
unsigned int row2,
unsigned int col2)
1772 tab1.add_box(row1, tab2(row2,col2));
1777 const tableau&,
unsigned int,
unsigned int)
1784 template<
class Tab,
class OutputIterator>
1786 unsigned int currow2,
unsigned int curcol2,
unsigned int startrow,
1787 unsigned int maxrows,
1788 OutputIterator outit,
1793 if((++curcol2)==tab2.row_size(currow2)) {
1795 if((++currow2)==tab2.number_of_rows()) {
1804 for(
unsigned int rowpos=startrow; rowpos<std::min(newtab.number_of_rows()+1,maxrows); ++rowpos) {
1806 if(rowpos>0 && rowpos<newtab.number_of_rows())
1807 if(newtab.row_size(rowpos-1)==newtab.row_size(rowpos))
1811 unsigned int colpos=(rowpos==newtab.number_of_rows())?0:newtab.row_size(rowpos);
1814 for(
unsigned int rr=0; rr<rowpos; ++rr)
1815 if(Ycurrent(rr,colpos).first==(int)(currow2))
1820 for(
unsigned int cc=0; cc<colpos; ++cc)
1821 if(Ycurrent(rowpos,cc).second==(int)(curcol2))
1825 if(!alltabs && currow2>0) {
1826 int numi=0, numimin1=0;
1828 for(
unsigned int sr=0; sr<rowpos; ++sr)
1829 for(
unsigned int sc=0; sc<Ycurrent.
row_size(sr); ++sc) {
1831 if(Ycurrent(sr,sc).first==(int)(currow2)) ++numi;
1832 if(Ycurrent(sr,sc).first==(int)(currow2)-1) ++numimin1;
1841 for(
int sc=Ycurrent.
row_size(sr)-1; sc>=0; --sc) {
1842 if(Ycurrent(sr,sc).first==(int)(currow2)) ++numi;
1843 if(Ycurrent(sr,sc).first==(int)(currow2)-1) ++numimin1;
1851 Ycurrent.
add_box(rowpos, std::pair<int,int>(currow2, curcol2));
1852 add_box(newtab, rowpos, tab2, currow2, curcol2);
1853 LR_add_box(tab2, newtab, currow2, curcol2, alltabs?0:rowpos, maxrows,
1854 outit, Ycurrent, alltabs);
1857 newtab.remove_box(rowpos);
1865 template<
class Tab,
class OutputIterator>
1866 void LR_tensor(
const Tab& tab1,
const Tab& tab2,
unsigned int maxrows,
1867 OutputIterator outit,
bool alltabs=
false)
1880 while(yi!=Ycurrent.
end()) {
1881 (*yi)=std::pair<int,int>(-2,-2);
1885 LR_add_box(tab2, newtab, 0, -1, 0, maxrows, outit, Ycurrent, alltabs);
1888 template<
class T,
class OutputIterator>
1896 std::ostream&
operator<<(std::ostream&,
const tableau& );
1899 std::ostream&
operator<<(std::ostream&,
const tableaux<T>& );
1902 std::ostream&
operator<<(std::ostream&,
const filled_tableau<T>& );
1913 assert(num<rows.size());
1914 return rows[num].size();
1920 assert(row<rows.size());
1921 assert(col<rows[row].size());
1922 return rows[row][col];
1928 assert(row<rows.size());
1929 assert(col<rows[row].size());
1930 return rows[row][col];
1936 unsigned int row = 0;
1938 if (boxnum < row_size(row))
1940 boxnum -= row_size(row);
1943 return rows[row][boxnum];
1954 if(rownum>=rows.size())
1955 rows.resize(rownum+1);
1956 assert(rownum<rows.size());
1957 rows[rownum].push_back(T());
1963 if(rownum>=rows.size())
1964 rows.resize(rownum+1);
1965 assert(rownum<rows.size());
1966 rows[rownum].push_back(val);
1972 assert(c1<row_size(0) && c2<row_size(0));
1973 assert(column_size(c1)==column_size(c2));
1974 for(
unsigned int r=0; r<column_size(c1); ++r) {
1975 T tmp=(*this)(r,c1);
1976 (*this)(r,c1)=(*
this)(r,c2);
1984 assert(rownum<rows.size());
1985 assert(rows[rownum].size()>0);
1986 rows[rownum].pop_back();
1987 if(rows[rownum].size()==0)
2002 while(it!=tabs.
storage.end()) {
2003 str << (*it) << std::endl << std::endl;
2013 for(
unsigned int j=0; j<tab.
row_size(i); ++j) {
mpq_class yngrat_t
Definition: YoungTab.hh:39
mpz_class yngint_t
Definition: YoungTab.hh:38
std::vector< unsigned int > sublengths
Definition: Combinatorics.hh:74
std::vector< T > original
Definition: Combinatorics.hh:76
void permute(long start=-1, long end=-1)
Definition: Combinatorics.hh:351
Definition: Combinatorics.hh:101
int ordersign(unsigned int) const
Definition: Combinatorics.hh:458
unsigned int size() const
Definition: Combinatorics.hh:429
Definition: Combinatorics.hh:154
unsigned int size() const
Definition: Combinatorics.hh:906
void apply_symmetry(long start=-1, long end=-1)
Definition: Combinatorics.hh:695
int permutation_sign
Definition: Combinatorics.hh:163
range_vector_t sublengths_scattered
Definition: Combinatorics.hh:167
std::vector< unsigned int > permute_blocks
Definition: Combinatorics.hh:161
std::vector< T > original
Definition: Combinatorics.hh:159
range_vector_t input_asym
Definition: Combinatorics.hh:166
std::vector< T > value_permute
Definition: Combinatorics.hh:162
void set_multiplicity(unsigned int pos, int val)
Definition: Combinatorics.hh:1003
unsigned int block_length
Definition: Combinatorics.hh:160
int signature(unsigned int) const
Definition: Combinatorics.hh:996
Definition: YoungTab.hh:136
size_t size_type
Definition: YoungTab.hh:141
T value_type
Definition: YoungTab.hh:138
const T * pointer
Definition: YoungTab.hh:139
const T & reference
Definition: YoungTab.hh:140
ptrdiff_t difference_type
Definition: YoungTab.hh:142
std::random_access_iterator_tag iterator_category
Definition: YoungTab.hh:143
Definition: YoungTab.hh:295
const T & operator*() const
Definition: YoungTab.hh:1254
bool operator==(const const_iterator &) const
Definition: YoungTab.hh:1340
bool operator<(const const_iterator &other) const
Definition: YoungTab.hh:1348
bool operator!=(const const_iterator &) const
Definition: YoungTab.hh:1362
const_iterator & operator++()
Definition: YoungTab.hh:1266
const_iterator(unsigned int r, unsigned int c, const filled_tableau< T > *)
Definition: YoungTab.hh:1220
const T * operator->() const
Definition: YoungTab.hh:1260
const_iterator(const iterator &other)
bool operator>(const const_iterator &other) const
Definition: YoungTab.hh:1355
const_iterator operator+(unsigned int) const
Definition: YoungTab.hh:1232
const_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:1276
const_iterator operator-(unsigned int) const
Definition: YoungTab.hh:1240
unsigned int column_number
Definition: YoungTab.hh:318
unsigned int row_number
Definition: YoungTab.hh:318
const_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:1326
const filled_tableau< T > * tab
Definition: YoungTab.hh:317
const_iterator & operator--()
Definition: YoungTab.hh:1289
A const iterator which stays inside a given column of a tableau.
Definition: YoungTab.hh:183
in_column_const_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:723
bool operator<(const in_column_const_iterator &other) const
Definition: YoungTab.hh:782
const T * operator->() const
Definition: YoungTab.hh:710
in_column_const_iterator(unsigned int r, unsigned int c, const filled_tableau< T > *)
Definition: YoungTab.hh:670
in_column_const_iterator operator+(unsigned int) const
Definition: YoungTab.hh:682
in_column_const_iterator & operator--()
Definition: YoungTab.hh:730
in_column_const_iterator operator-(unsigned int) const
Definition: YoungTab.hh:690
unsigned int column_number
Definition: YoungTab.hh:208
bool operator<=(const in_column_const_iterator &other) const
Definition: YoungTab.hh:768
in_column_const_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:753
bool operator>(const in_column_const_iterator &other) const
Definition: YoungTab.hh:789
bool operator!=(const in_column_const_iterator &) const
Definition: YoungTab.hh:796
unsigned int row_number
Definition: YoungTab.hh:208
const filled_tableau< T > * tab
Definition: YoungTab.hh:207
const T & operator*() const
Definition: YoungTab.hh:704
bool operator>=(const in_column_const_iterator &other) const
Definition: YoungTab.hh:775
in_column_const_iterator(const in_column_iterator &other)
bool operator==(const in_column_const_iterator &) const
Definition: YoungTab.hh:760
in_column_const_iterator & operator++()
Definition: YoungTab.hh:716
An iterator which stays inside a given column of a tableau.
Definition: YoungTab.hh:153
T * operator->() const
Definition: YoungTab.hh:575
in_column_iterator operator+(unsigned int) const
Definition: YoungTab.hh:541
filled_tableau< T > * tab
Definition: YoungTab.hh:178
in_column_iterator & operator--()
Definition: YoungTab.hh:595
bool operator>(const in_column_iterator &other) const
Definition: YoungTab.hh:654
bool operator>=(const in_column_iterator &other) const
Definition: YoungTab.hh:640
T & operator*() const
Definition: YoungTab.hh:569
unsigned int row_number
Definition: YoungTab.hh:179
bool operator==(const in_column_iterator &) const
Definition: YoungTab.hh:625
bool operator<(const in_column_iterator &other) const
Definition: YoungTab.hh:647
T & operator[](int n) const
Definition: YoungTab.hh:563
in_column_iterator operator-(unsigned int) const
Definition: YoungTab.hh:549
in_column_iterator & operator++()
Definition: YoungTab.hh:581
bool operator!=(const in_column_iterator &) const
Definition: YoungTab.hh:661
in_column_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:618
in_column_iterator(unsigned int r, unsigned int c, filled_tableau< T > *)
Definition: YoungTab.hh:535
unsigned int column_number
Definition: YoungTab.hh:179
in_column_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:588
bool operator<=(const in_column_iterator &other) const
Definition: YoungTab.hh:633
Definition: YoungTab.hh:240
bool operator<(const in_row_const_iterator &other) const
Definition: YoungTab.hh:1048
bool operator<=(const in_row_const_iterator &other) const
Definition: YoungTab.hh:1034
in_row_const_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:989
bool operator>=(const in_row_const_iterator &other) const
Definition: YoungTab.hh:1041
in_row_const_iterator(unsigned int r, unsigned int c, const filled_tableau< T > *)
Definition: YoungTab.hh:935
bool operator==(const in_row_const_iterator &) const
Definition: YoungTab.hh:1026
in_row_const_iterator & operator--()
Definition: YoungTab.hh:996
const T & operator*() const
Definition: YoungTab.hh:970
unsigned int column_number
Definition: YoungTab.hh:265
in_row_const_iterator operator+(unsigned int) const
Definition: YoungTab.hh:948
const T * operator->() const
Definition: YoungTab.hh:976
bool operator>(const in_row_const_iterator &other) const
Definition: YoungTab.hh:1055
in_row_const_iterator & operator++()
Definition: YoungTab.hh:982
in_row_const_iterator(const in_row_iterator &other)
bool operator!=(const in_row_const_iterator &) const
Definition: YoungTab.hh:1062
in_row_const_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:1019
const filled_tableau< T > * tab
Definition: YoungTab.hh:264
unsigned int row_number
Definition: YoungTab.hh:265
in_row_const_iterator operator-(unsigned int) const
Definition: YoungTab.hh:956
An iterator which stays inside a given row of a tableau.
Definition: YoungTab.hh:212
in_row_iterator operator+(unsigned int) const
Definition: YoungTab.hh:812
bool operator==(const in_row_iterator &) const
Definition: YoungTab.hh:890
T * operator->() const
Definition: YoungTab.hh:840
T & operator*() const
Definition: YoungTab.hh:834
bool operator>(const in_row_iterator &other) const
Definition: YoungTab.hh:919
in_row_iterator(unsigned int r, unsigned int c, filled_tableau< T > *)
Definition: YoungTab.hh:806
bool operator<=(const in_row_iterator &other) const
Definition: YoungTab.hh:898
bool operator>=(const in_row_iterator &other) const
Definition: YoungTab.hh:905
bool operator<(const in_row_iterator &other) const
Definition: YoungTab.hh:912
in_row_iterator operator-(unsigned int) const
Definition: YoungTab.hh:820
unsigned int column_number
Definition: YoungTab.hh:237
in_row_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:853
unsigned int row_number
Definition: YoungTab.hh:237
filled_tableau< T > * tab
Definition: YoungTab.hh:236
in_row_iterator & operator++()
Definition: YoungTab.hh:846
in_row_iterator & operator--()
Definition: YoungTab.hh:860
bool operator!=(const in_row_iterator &) const
Definition: YoungTab.hh:926
in_row_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:883
Definition: YoungTab.hh:126
ptrdiff_t difference_type
Definition: YoungTab.hh:132
T & reference
Definition: YoungTab.hh:130
T * pointer
Definition: YoungTab.hh:129
size_t size_type
Definition: YoungTab.hh:131
std::random_access_iterator_tag iterator_category
Definition: YoungTab.hh:133
T value_type
Definition: YoungTab.hh:128
An iterator over all boxes of a tableau, left to right, top to bottom.
Definition: YoungTab.hh:269
iterator operator-(unsigned int) const
Definition: YoungTab.hh:1087
filled_tableau< T > * tab
Definition: YoungTab.hh:291
unsigned int column_number
Definition: YoungTab.hh:292
T * operator->() const
Definition: YoungTab.hh:1107
iterator & operator--()
Definition: YoungTab.hh:1136
bool operator>(const iterator &other) const
Definition: YoungTab.hh:1202
iterator operator+(unsigned int) const
Definition: YoungTab.hh:1079
iterator & operator+=(unsigned int)
Definition: YoungTab.hh:1123
bool operator<(const iterator &other) const
Definition: YoungTab.hh:1195
iterator & operator-=(unsigned int)
Definition: YoungTab.hh:1173
iterator(unsigned int r, unsigned int c, filled_tableau< T > *)
Definition: YoungTab.hh:1073
iterator & operator++()
Definition: YoungTab.hh:1113
unsigned int row_number
Definition: YoungTab.hh:292
T & operator*() const
Definition: YoungTab.hh:1101
bool operator==(const iterator &) const
Definition: YoungTab.hh:1187
bool operator!=(const iterator &) const
Definition: YoungTab.hh:1209
Definition: YoungTab.hh:87
const T & operator()(unsigned int row, unsigned int col) const
Definition: YoungTab.hh:1926
virtual ~filled_tableau()
Definition: YoungTab.hh:1947
void projector(combin::symmetriser< T > &, combin::range_vector_t &) const
Definition: YoungTab.hh:1649
void canonicalise(StrictWeakOrdering comp, bool only_col_ex=false)
Definition: YoungTab.hh:524
T value_type
Definition: YoungTab.hh:89
in_row_iterator end_row(unsigned int row_number)
Definition: YoungTab.hh:1471
std::vector< T > box_row
Definition: YoungTab.hh:344
const_iterator begin() const
Definition: YoungTab.hh:1397
void sort_columns()
Definition: YoungTab.hh:483
void add_box(unsigned int rownum, T val)
Definition: YoungTab.hh:1961
in_column_const_iterator begin_column(unsigned int column_number) const
Definition: YoungTab.hh:1453
in_row_const_iterator cbegin_row(unsigned int row_number) const
Definition: YoungTab.hh:1477
const_iterator cbegin() const
Definition: YoungTab.hh:1385
void projector(combin::symmetriser< T > &, bool modulo_monoterm=false) const
Definition: YoungTab.hh:1606
in_column_const_iterator cbegin_column(unsigned int column_number) const
Definition: YoungTab.hh:1431
virtual unsigned int number_of_rows() const
Definition: YoungTab.hh:1905
const_iterator cend() const
Definition: YoungTab.hh:1391
void sort_within_columns(StrictWeakOrdering comp)
Definition: YoungTab.hh:498
bool compare_without_multiplicity(const filled_tableau< T > &other) const
Definition: YoungTab.hh:428
filled_tableau< T > & operator=(const filled_tableau< T > &)
Definition: YoungTab.hh:1738
in_column_iterator begin_column(unsigned int column_number)
Definition: YoungTab.hh:1409
void sort_within_columns()
Definition: YoungTab.hh:476
iterator end()
Definition: YoungTab.hh:1378
in_row_const_iterator cend_row(unsigned int row_number) const
Definition: YoungTab.hh:1483
void canonicalise()
Sort equal-length columns and sort within columns.
Definition: YoungTab.hh:490
void copy_shape(const tableau &)
Definition: YoungTab.hh:418
std::pair< int, int > find(const T &) const
Definition: YoungTab.hh:464
std::vector< box_row > row_stack
Definition: YoungTab.hh:345
in_row_iterator begin_row(unsigned int row_number)
Definition: YoungTab.hh:1465
void sort_columns(StrictWeakOrdering comp)
Definition: YoungTab.hh:510
row_stack rows
Definition: YoungTab.hh:346
T & operator()(unsigned int row, unsigned int col)
Definition: YoungTab.hh:1918
const T & operator[](unsigned int boxnum) const
Definition: YoungTab.hh:1934
yngrat_t projector_normalisation() const
Definition: YoungTab.hh:1598
OutputIterator Garnir_set(OutputIterator, unsigned int, unsigned int) const
Definition: YoungTab.hh:1505
filled_tableau()
Definition: YoungTab.hh:1726
in_column_iterator end_column(unsigned int column_number)
Definition: YoungTab.hh:1418
in_row_const_iterator end_row(unsigned int row_number) const
Definition: YoungTab.hh:1495
iterator begin()
Definition: YoungTab.hh:1372
bool has_nullifying_trace() const
Definition: YoungTab.hh:434
void swap_columns(unsigned int c1, unsigned int c2)
Definition: YoungTab.hh:1970
std::pair< int, int > nonstandard_loc() const
Definition: YoungTab.hh:1529
in_column_const_iterator end_column(unsigned int column_number) const
Definition: YoungTab.hh:1459
in_column_const_iterator cend_column(unsigned int column_number) const
Definition: YoungTab.hh:1440
virtual unsigned int row_size(unsigned int row) const
Definition: YoungTab.hh:1911
virtual void clear()
Definition: YoungTab.hh:1992
filled_tableau(const filled_tableau< T > &)
Definition: YoungTab.hh:1732
virtual void add_box(unsigned int row)
Definition: YoungTab.hh:1952
const_iterator end() const
Definition: YoungTab.hh:1403
virtual void remove_box(unsigned int row)
Definition: YoungTab.hh:1982
in_row_const_iterator begin_row(unsigned int row_number) const
Definition: YoungTab.hh:1489
Definition: YoungTab.hh:47
unsigned long hook_length(unsigned int row, unsigned int col) const
Definition: YoungTab.cc:82
yngint_t hook_length_prod() const
Definition: YoungTab.cc:92
virtual ~tableau_base()
Definition: YoungTab.cc:31
virtual unsigned int number_of_rows() const =0
yngint_t dimension(unsigned int) const
Definition: YoungTab.cc:57
tableau_base()
Definition: YoungTab.cc:26
virtual unsigned int row_size(unsigned int row) const =0
virtual void add_row(unsigned int row_size)
Definition: YoungTab.cc:49
yngrat_t multiplicity
Definition: YoungTab.hh:59
virtual void add_box(unsigned int row)=0
int selfdual_column
Definition: YoungTab.hh:60
virtual unsigned int column_size(unsigned int col) const
Definition: YoungTab.cc:71
virtual void remove_box(unsigned int row)=0
Definition: YoungTab.hh:66
virtual unsigned int number_of_rows() const
Definition: YoungTab.cc:120
tableau & operator=(const tableau &)
Definition: YoungTab.cc:136
virtual unsigned int row_size(unsigned int row) const
Definition: YoungTab.cc:125
virtual void add_box(unsigned int row)
Definition: YoungTab.cc:101
virtual void clear()
Definition: YoungTab.cc:131
virtual void remove_box(unsigned int row)
Definition: YoungTab.cc:112
std::vector< int > rows
Definition: YoungTab.hh:80
virtual ~tableau()
Definition: YoungTab.cc:35
tableau()
Definition: YoungTab.cc:39
Definition: YoungTab.hh:350
std::list< T > tableau_container_t
Definition: YoungTab.hh:360
tableau_container_t storage
Definition: YoungTab.hh:361
void add_tableau(const T &)
Definition: YoungTab.hh:1581
bool standard_form()
Put the set of tableaux into standard form by using Garnir symmetries.
Definition: YoungTab.hh:1545
void symmetrise(const T &tabsym)
Definition: YoungTab.hh:393
std::back_insert_iterator< tableau_container_t > back_insert_iterator
Definition: YoungTab.hh:363
void remove_nullifying_traces()
Definition: YoungTab.hh:382
back_insert_iterator get_back_insert_iterator()
Definition: YoungTab.hh:376
yngint_t total_dimension(unsigned int dim)
Definition: YoungTab.hh:1746
std::vector< range_t > range_vector_t
Definition: Combinatorics.hh:40
unsigned long factorial(unsigned int x)
Definition: Combinatorics.cc:23
int ordersign(iterator1 b1, iterator1 e1, iterator2 b2, iterator2 e2, int stepsize=1)
Definition: Combinatorics.hh:224
Generic Young tableaux routines.
Definition: YoungTab.cc:24
void add_box(tableau &tab1, unsigned int row1, const tableau &, unsigned int, unsigned int)
Definition: YoungTab.cc:182
std::ostream & operator<<(std::ostream &str, const tableau &tab)
Definition: YoungTab.cc:142
bool legal_box(const std::vector< std::pair< int, int > > &prev, const std::vector< std::pair< int, int > > &ths, int colpos, int trypos)
filled_tableau< std::pair< int, int > > keeptrack_tab_t
Definition: YoungTab.hh:1782
void LR_tensor(const tableaux< T > &tabs1, const T &tab2, unsigned int maxrows, OutputIterator out, bool alltabs=false)
Definition: YoungTab.hh:1758
void LR_add_box(const Tab &tab2, Tab &newtab, unsigned int currow2, unsigned int curcol2, unsigned int startrow, unsigned int maxrows, OutputIterator outit, keeptrack_tab_t &Ycurrent, bool alltabs)
Definition: YoungTab.hh:1785