52 virtual unsigned int row_size(
unsigned int row)
const=0;
53 virtual unsigned int column_size(
unsigned int col)
const;
54 virtual void add_box(
unsigned int row)=0;
57 virtual void clear()=0;
62 unsigned long hook_length(
unsigned int row,
unsigned int col)
const;
70 virtual unsigned int row_size(
unsigned int row)
const;
71 virtual void add_box(
unsigned int row);
90 virtual unsigned int row_size(
unsigned int row)
const;
91 virtual void add_box(
unsigned int row);
93 std::pair<int, int>
find(
const T&)
const;
98 T&
operator()(
unsigned int row,
unsigned int col);
99 const T&
operator()(
unsigned int row,
unsigned int col)
const;
100 const T&
operator[](
unsigned int boxnum)
const;
101 void add_box(
unsigned int rownum, T val);
112 template<
class StrictWeakOrdering>
void sort_columns(StrictWeakOrdering comp);
113 template<
class StrictWeakOrdering>
void canonicalise(StrictWeakOrdering comp,
bool only_col_ex=
false);
335 template<
class OutputIterator>
336 OutputIterator
Garnir_set(OutputIterator,
unsigned int,
unsigned int)
const;
346 yngint_t total_dimension(
unsigned int dim);
347 void remove_nullifying_traces();
350 bool standard_form();
351 void add_tableau(
const T&);
352 void symmetrise(
const T& tabsym);
362 bool legal_box(
const std::vector<std::pair<int,int> >& prev,
363 const std::vector<std::pair<int,int> >& ths,
364 int colpos,
int trypos);
378 typename tableau_container_t::iterator it=storage.begin();
379 while(it!=storage.end()) {
380 if(it->has_nullifying_trace())
381 it=storage.erase(it);
460 for(
unsigned int ir=0; ir<
rows.size(); ++ir) {
461 for(
unsigned int ic=0; ic<
rows[ir].size(); ++ic) {
462 if(
rows[ir][ic]==obj)
463 return std::pair<int,int>(ir, ic);
466 return std::pair<int,int>(-1,-1);
491 template<
class StrictWeakOrdering>
496 for(
unsigned int c=0; c<
row_size(0); ++c) {
503 template<
class StrictWeakOrdering>
506 for(
unsigned int c1=0; c1<
row_size(0); ++c1) {
507 for(
unsigned int c2=c1; c2<
row_size(0); ++c2) {
509 if(comp((*
this)(0,c2), (*
this)(0,c1)))
517 template<
class StrictWeakOrdering>
559 return (*tab)(row_number + n, column_number);
565 return (*tab)(row_number,column_number);
571 return &((*tab)(row_number,column_number));
657 return !((*this)==other);
665 : tab(t), column_number(c), row_number(r)
671 : tab(other.tab), column_number(other.column_number), row_number(other.row_number)
700 return (*tab)(row_number, column_number);
706 return &((*tab)(row_number, column_number));
764 if (row_number <= other.
row_number)
return true;
771 if (row_number >= other.
row_number)
return true;
778 if (row_number < other.
row_number)
return true;
785 if (row_number > other.
row_number)
return true;
792 return !((*this) == other);
801 : tab(t), column_number(c), row_number(r)
830 return (*tab)(row_number, column_number);
836 return &((*tab)(row_number, column_number));
922 return !((*this) == other);
930 : tab(t), column_number(c), row_number(r)
936 : tab(other.tab), column_number(other.column_number), row_number(other.row_number)
966 return (*tab)(row_number, column_number);
972 return &((*tab)(row_number, column_number));
1058 return !((*this) == other);
1068 : tab(t), column_number(c), row_number(r)
1097 return (*tab)(row_number,column_number);
1103 return &((*tab)(row_number,column_number));
1109 if(++column_number==tab->rows[row_number].size()) {
1120 if(++column_number==tab->rows[row_number]) {
1132 if(column_number==0) {
1134 column_number=tab->rows[row_number].size()-1;
1136 else --column_number;
1144 if(column_number==0) {
1146 column_number=tab->rows[row_number].size()-1;
1148 else --column_number;
1157 if(++column_number==tab->rows[row_number]) {
1170 if(column_number==0) {
1172 column_number=tab->rows[row_number].size()-1;
1174 else --column_number;
1205 return !((*this)==other);
1215 : tab(t), column_number(c), row_number(r)
1221 : tab(other.tab), column_number(other.column_number), row_number(other.row_number)
1250 return (*tab)(row_number, column_number);
1256 return &((*tab)(row_number, column_number));
1262 if (++column_number == tab->rows[row_number].size()) {
1273 if (++column_number == tab->rows[row_number]) {
1285 if (column_number == 0) {
1287 column_number = tab->rows[row_number].size() - 1;
1289 else --column_number;
1297 if (column_number == 0) {
1299 column_number = tab->rows[row_number].size() - 1;
1301 else --column_number;
1309 while (this->n > 0) {
1310 if (++column_number == tab->rows[row_number]) {
1323 if (column_number == 0) {
1325 column_number = tab->rows[row_number].size() - 1;
1327 else --column_number;
1344 if (row_number < other.
row_number)
return true;
1351 if (row_number > other.
row_number)
return true;
1358 return !((*this) == other);
1368 return iterator(0, 0,
this);
1374 return iterator(
rows.size(), 0,
this);
1381 return const_iterator(0,0,
this);
1387 return const_iterator(
rows.size(), 0,
this);
1461 return in_row_iterator{ row, 0,
this };
1467 return in_row_iterator{ row,
row_size(row),
this };
1473 return in_row_const_iterator{ row, 0,
this };
1479 return in_row_const_iterator{ row,
row_size(row),
this };
1498 template<
class OutputIterator>
1502 unsigned int r=row, c=col;
1529 for(
unsigned int c=0; c<
row_size(r)-1; ++c) {
1530 if((*
this)(r,c) > (*
this)(r,c+1) )
1531 return std::pair<int, int>(r,c);
1535 return std::pair<int,int>(-1,-1);
1541 bool already_standard=
true;
1543 typename tableau_container_t::iterator thetab=storage.begin();
1544 while(thetab!=storage.end()) {
1545 (*thetab).sort_within_columns();
1546 std::pair<int,int> where=(*thetab).nonstandard_loc();
1547 if(where.first!=-1) {
1548 already_standard=
false;
1550 for(
unsigned int i1=where.first; i1<(*thetab).column_size(where.second); ++i1)
1551 com.
original.push_back((*thetab)(i1,where.second));
1552 for(
unsigned int i1=0; i1<=(
unsigned int)(where.first); ++i1)
1553 com.
original.push_back((*thetab)(i1,where.second+1));
1554 com.
sublengths.push_back((*thetab).column_size(where.second)-where.first);
1557 for(
unsigned int tabi=1; tabi<com.
size(); ++tabi) {
1559 unsigned int offset=0;
1560 for(
unsigned int i1=where.first; i1<(*thetab).column_size(where.second); ++i1, ++offset)
1561 ntab(i1,where.second)=com[tabi][offset];
1562 for(
unsigned int i1=0; i1<=(
unsigned int)(where.first); ++i1, ++offset)
1563 ntab(i1,where.second+1)=com[tabi][offset];
1564 ntab.multiplicity*=-1*com.
ordersign(tabi);
1567 thetab=storage.erase(thetab);
1571 return already_standard;
1577 typename tableau_container_t::iterator it=storage.begin();
1578 while(it!=storage.end()) {
1579 if((*it).compare_without_multiplicity(ntab)) {
1580 (*it).multiplicity+=ntab.multiplicity;
1581 if((*it).multiplicity==0)
1587 storage.push_back(ntab);
1603 for(
unsigned int c=0; c<
row_size(r); ++c)
1606 unsigned int offset=0;
1613 for(
unsigned int c=0; c<
row_size(r); ++c)
1619 if(modulo_monoterm) {
1621 for(
unsigned int c=0; c<
row_size(0); ++c)
1623 for(
unsigned int i=0; i<sym.
size(); ++i)
1628 for(
unsigned int c=0; c<
row_size(0); ++c) {
1647 for(
unsigned int c=0; c<
row_size(r); ++c)
1650 unsigned int offset=0;
1657 for(
unsigned int c=0; c<
row_size(r); ++c)
1663 for(
unsigned int c=0; c<
row_size(0); ++c) {
1731 typename tableau_container_t::const_iterator it=storage.begin();
1732 while(it!=storage.end()) {
1733 totdim+=(*it).dimension(dim);
1739 template<
class T,
class OutputIterator>
1741 OutputIterator out,
bool alltabs=
false)
1744 while(it!=tabs1.
storage.end()) {
1745 LR_tensor((*it), tab2, maxrows, out, alltabs);
1750 template<
class T1,
class T2>
1752 const T2& tab2,
unsigned int row2,
unsigned int col2)
1754 tab1.add_box(row1, tab2(row2,col2));
1759 const tableau&,
unsigned int,
unsigned int)
1766 template<
class Tab,
class OutputIterator>
1768 unsigned int currow2,
unsigned int curcol2,
unsigned int startrow,
1769 unsigned int maxrows,
1770 OutputIterator outit,
1775 if((++curcol2)==tab2.row_size(currow2)) {
1777 if((++currow2)==tab2.number_of_rows()) {
1786 for(
unsigned int rowpos=startrow; rowpos<std::min(newtab.number_of_rows()+1,maxrows); ++rowpos) {
1788 if(rowpos>0 && rowpos<newtab.number_of_rows())
1789 if(newtab.row_size(rowpos-1)==newtab.row_size(rowpos))
1793 unsigned int colpos=(rowpos==newtab.number_of_rows())?0:newtab.row_size(rowpos);
1796 for(
unsigned int rr=0; rr<rowpos; ++rr)
1797 if(Ycurrent(rr,colpos).first==(
int)(currow2))
1802 for(
unsigned int cc=0; cc<colpos; ++cc)
1803 if(Ycurrent(rowpos,cc).second==(
int)(curcol2))
1807 if(!alltabs && currow2>0) {
1808 int numi=0, numimin1=0;
1810 for(
unsigned int sr=0; sr<rowpos; ++sr)
1811 for(
unsigned int sc=0; sc<Ycurrent.
row_size(sr); ++sc) {
1813 if(Ycurrent(sr,sc).first==(int)(currow2)) ++numi;
1814 if(Ycurrent(sr,sc).first==(int)(currow2)-1) ++numimin1;
1823 for(
int sc=Ycurrent.
row_size(sr)-1; sc>=0; --sc) {
1824 if(Ycurrent(sr,sc).first==(int)(currow2)) ++numi;
1825 if(Ycurrent(sr,sc).first==(int)(currow2)-1) ++numimin1;
1833 Ycurrent.
add_box(rowpos, std::pair<int,int>(currow2, curcol2));
1834 add_box(newtab, rowpos, tab2, currow2, curcol2);
1835 LR_add_box(tab2, newtab, currow2, curcol2, alltabs?0:rowpos, maxrows,
1836 outit, Ycurrent, alltabs);
1839 newtab.remove_box(rowpos);
1847 template<
class Tab,
class OutputIterator>
1848 void LR_tensor(
const Tab& tab1,
const Tab& tab2,
unsigned int maxrows,
1849 OutputIterator outit,
bool alltabs=
false)
1862 while(yi!=Ycurrent.
end()) {
1863 (*yi)=std::pair<int,int>(-2,-2);
1867 LR_add_box(tab2, newtab, 0, -1, 0, maxrows, outit, Ycurrent, alltabs);
1870 template<
class T,
class OutputIterator>
1878 std::ostream&
operator<<(std::ostream&,
const tableau& );
1881 std::ostream& operator<<(std::ostream&, const tableaux<T>& );
1884 std::ostream& operator<<(std::ostream&, const filled_tableau<T>& );
1895 assert(num<
rows.size());
1896 return rows[num].size();
1902 assert(row<
rows.size());
1903 assert(col<
rows[row].size());
1904 return rows[row][col];
1910 assert(row<
rows.size());
1911 assert(col<
rows[row].size());
1912 return rows[row][col];
1918 unsigned int row = 0;
1925 return rows[row][boxnum];
1936 if(rownum>=
rows.size())
1937 rows.resize(rownum+1);
1938 assert(rownum<
rows.size());
1939 rows[rownum].push_back(T());
1945 if(rownum>=
rows.size())
1946 rows.resize(rownum+1);
1947 assert(rownum<
rows.size());
1948 rows[rownum].push_back(val);
1957 T tmp=(*this)(r,c1);
1958 (*this)(r,c1)=(*
this)(r,c2);
1966 assert(rownum<
rows.size());
1967 assert(
rows[rownum].size()>0);
1968 rows[rownum].pop_back();
1969 if(
rows[rownum].size()==0)
1981 std::ostream& operator<<(std::ostream& str, const tableaux<T>& tabs)
1984 while(it!=tabs.
storage.end()) {
1985 str << (*it) << std::endl << std::endl;
1992 std::ostream& operator<<(std::ostream& str, const filled_tableau<T>& tab)
1994 for(
unsigned int i=0; i<tab.number_of_rows(); ++i) {
1995 for(
unsigned int j=0; j<tab.row_size(i); ++j) {
2000 str <<
" " << tab.dimension(10);
2001 if(tab.has_nullifying_trace()) str <<
" null";
2003 if(i!=tab.number_of_rows()-1)
2006 str <<
" (" << tab.multiplicity <<
")" << std::endl;
in_row_iterator & operator++()
Definition: YoungTab.hh:840
mpz_class yngint_t
Definition: YoungTab.hh:38
in_column_const_iterator cend_column(unsigned int column_number) const
Definition: YoungTab.hh:1434
in_column_iterator(unsigned int r, unsigned int c, filled_tableau< T > *)
Definition: YoungTab.hh:529
std::vector< int > rows
Definition: YoungTab.hh:77
bool operator>=(const in_column_iterator &other) const
Definition: YoungTab.hh:634
An iterator over all boxes of a tableau, left to right, top to bottom.
Definition: YoungTab.hh:263
const_iterator & operator++()
Definition: YoungTab.hh:1260
in_row_const_iterator & operator++()
Definition: YoungTab.hh:976
bool operator>(const in_column_const_iterator &other) const
Definition: YoungTab.hh:783
bool operator==(const in_row_iterator &) const
Definition: YoungTab.hh:884
range_vector_t sublengths_scattered
Definition: Combinatorics.hh:167
bool operator<=(const in_column_iterator &other) const
Definition: YoungTab.hh:627
in_row_const_iterator operator+(unsigned int)
Definition: YoungTab.hh:942
bool operator>=(const in_row_const_iterator &other) const
Definition: YoungTab.hh:1035
virtual unsigned int column_size(unsigned int col) const
Definition: YoungTab.cc:61
const_iterator & operator--()
Definition: YoungTab.hh:1283
unsigned int column_number
Definition: YoungTab.hh:173
std::vector< T > box_row
Definition: YoungTab.hh:338
unsigned int row_number
Definition: YoungTab.hh:173
std::list< T > tableau_container_t
Definition: YoungTab.hh:354
bool operator<(const in_column_iterator &other) const
Definition: YoungTab.hh:641
bool operator<(const in_row_iterator &other) const
Definition: YoungTab.hh:906
in_column_iterator & operator++()
Definition: YoungTab.hh:575
std::random_access_iterator_tag iterator_category
Definition: YoungTab.hh:137
in_column_const_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:717
An iterator which stays inside a given column of a tableau.
Definition: YoungTab.hh:147
const filled_tableau< T > * tab
Definition: YoungTab.hh:258
bool operator>=(const in_column_const_iterator &other) const
Definition: YoungTab.hh:769
ptrdiff_t difference_type
Definition: YoungTab.hh:126
T & operator()(unsigned int row, unsigned int col)
Definition: YoungTab.hh:1900
in_column_iterator & operator--()
Definition: YoungTab.hh:589
const_iterator operator-(unsigned int)
Definition: YoungTab.hh:1234
Definition: Combinatorics.hh:125
virtual void add_box(unsigned int row)=0
virtual unsigned int row_size(unsigned int row) const
Definition: YoungTab.cc:115
Definition: YoungTab.hh:81
in_row_const_iterator operator-(unsigned int)
Definition: YoungTab.hh:950
in_row_const_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:1013
unsigned int column_number
Definition: YoungTab.hh:259
bool operator<=(const in_row_iterator &other) const
Definition: YoungTab.hh:892
bool operator!=(const iterator &) const
Definition: YoungTab.hh:1203
bool operator<(const iterator &other) const
Definition: YoungTab.hh:1189
in_row_iterator & operator--()
Definition: YoungTab.hh:854
int permutation_sign
Definition: Combinatorics.hh:163
void copy_shape(const tableau &)
Definition: YoungTab.hh:412
void sort_columns()
Definition: YoungTab.hh:477
bool operator>(const iterator &other) const
Definition: YoungTab.hh:1196
bool legal_box(const std::vector< std::pair< int, int > > &prev, const std::vector< std::pair< int, int > > &ths, int colpos, int trypos)
in_column_const_iterator operator-(unsigned int)
Definition: YoungTab.hh:684
yngint_t total_dimension(unsigned int dim)
Definition: YoungTab.hh:1728
bool operator<=(const in_column_const_iterator &other) const
Definition: YoungTab.hh:762
iterator begin()
Definition: YoungTab.hh:1366
bool operator>(const in_column_iterator &other) const
Definition: YoungTab.hh:648
virtual void clear()
Definition: YoungTab.hh:1974
virtual void add_box(unsigned int row)
Definition: YoungTab.hh:1934
unsigned long factorial(unsigned int x)
Definition: Combinatorics.cc:23
const_iterator cbegin() const
Definition: YoungTab.hh:1379
T & operator*() const
Definition: YoungTab.hh:828
const T * operator->() const
Definition: YoungTab.hh:704
in_row_const_iterator cend_row(unsigned int row_number) const
Definition: YoungTab.hh:1477
std::pair< int, int > nonstandard_loc() const
Definition: YoungTab.hh:1523
virtual void add_row(unsigned int row_size)
Definition: YoungTab.cc:39
in_column_const_iterator operator+(unsigned int)
Definition: YoungTab.hh:676
unsigned long hook_length(unsigned int row, unsigned int col) const
Definition: YoungTab.cc:72
virtual unsigned int row_size(unsigned int row) const
Definition: YoungTab.hh:1893
bool operator==(const in_column_iterator &) const
Definition: YoungTab.hh:619
unsigned int block_length
Definition: Combinatorics.hh:160
const_iterator operator+(unsigned int)
Definition: YoungTab.hh:1226
T value_type
Definition: YoungTab.hh:132
unsigned int row_number
Definition: YoungTab.hh:286
Definition: YoungTab.hh:234
int ordersign(unsigned int) const
Definition: Combinatorics.hh:458
const_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:1320
in_column_const_iterator cbegin_column(unsigned int column_number) const
Definition: YoungTab.hh:1425
iterator & operator--()
Definition: YoungTab.hh:1130
tableau_base()
Definition: YoungTab.cc:26
std::vector< unsigned int > permute_blocks
Definition: Combinatorics.hh:161
virtual void add_box(unsigned int row)
Definition: YoungTab.cc:91
const T & operator[](unsigned int boxnum) const
Definition: YoungTab.hh:1916
bool standard_form()
Put the set of tableaux into standard form by using Garnir symmetries.
Definition: YoungTab.hh:1539
tableau_container_t storage
Definition: YoungTab.hh:355
virtual unsigned int row_size(unsigned int row) const =0
T value_type
Definition: YoungTab.hh:122
bool operator!=(const in_row_iterator &) const
Definition: YoungTab.hh:920
void permute(long start=-1, long end=-1)
Definition: Combinatorics.hh:351
const_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:1270
filled_tableau< T > * tab
Definition: YoungTab.hh:172
std::ostream & operator<<(std::ostream &str, const tableau &tab)
Definition: YoungTab.cc:132
in_row_iterator(unsigned int r, unsigned int c, filled_tableau< T > *)
Definition: YoungTab.hh:800
in_row_iterator operator-(unsigned int)
Definition: YoungTab.hh:814
int selfdual_column
Definition: YoungTab.hh:60
in_row_iterator begin_row(unsigned int row_number)
Definition: YoungTab.hh:1459
std::pair< int, int > find(const T &) const
Definition: YoungTab.hh:458
const T * operator->() const
Definition: YoungTab.hh:970
bool operator!=(const const_iterator &) const
Definition: YoungTab.hh:1356
bool operator<(const in_row_const_iterator &other) const
Definition: YoungTab.hh:1042
T * operator->() const
Definition: YoungTab.hh:569
iterator operator+(unsigned int)
Definition: YoungTab.hh:1073
unsigned int column_number
Definition: YoungTab.hh:312
in_column_iterator operator-(unsigned int)
Definition: YoungTab.hh:543
bool operator>=(const in_row_iterator &other) const
Definition: YoungTab.hh:899
void symmetrise(const T &tabsym)
Definition: YoungTab.hh:387
iterator & operator++()
Definition: YoungTab.hh:1107
std::vector< T > value_permute
Definition: Combinatorics.hh:162
Definition: YoungTab.hh:66
bool operator!=(const in_row_const_iterator &) const
Definition: YoungTab.hh:1056
unsigned int column_number
Definition: YoungTab.hh:231
unsigned int row_number
Definition: YoungTab.hh:231
unsigned int column_number
Definition: YoungTab.hh:286
bool operator>(const in_row_iterator &other) const
Definition: YoungTab.hh:913
bool operator!=(const in_column_iterator &) const
Definition: YoungTab.hh:655
Generic Young tableaux routines.
Definition: YoungTab.cc:24
std::vector< unsigned int > sublengths
Definition: Combinatorics.hh:74
virtual unsigned int number_of_rows() const
Definition: YoungTab.cc:110
bool operator==(const iterator &) const
Definition: YoungTab.hh:1181
void remove_nullifying_traces()
Definition: YoungTab.hh:376
iterator end()
Definition: YoungTab.hh:1372
iterator operator-(unsigned int)
Definition: YoungTab.hh:1081
Definition: YoungTab.hh:84
T & operator*() const
Definition: YoungTab.hh:563
Definition: YoungTab.hh:120
virtual void clear()
Definition: YoungTab.cc:121
bool compare_without_multiplicity(const filled_tableau< T > &other) const
Definition: YoungTab.hh:422
T * pointer
Definition: YoungTab.hh:123
void sort_within_columns()
Definition: YoungTab.hh:470
A const iterator which stays inside a given column of a tableau.
Definition: YoungTab.hh:177
in_column_const_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:747
std::vector< T > original
Definition: Combinatorics.hh:159
row_stack rows
Definition: YoungTab.hh:340
in_row_iterator operator+(unsigned int)
Definition: YoungTab.hh:806
virtual ~tableau()
Definition: YoungTab.cc:35
in_column_const_iterator & operator--()
Definition: YoungTab.hh:724
bool operator!=(const in_column_const_iterator &) const
Definition: YoungTab.hh:790
const T & operator*() const
Definition: YoungTab.hh:964
const filled_tableau< T > * tab
Definition: YoungTab.hh:311
iterator & operator-=(unsigned int)
Definition: YoungTab.hh:1167
in_column_const_iterator(unsigned int r, unsigned int c, const filled_tableau< T > *)
Definition: YoungTab.hh:664
in_column_const_iterator & operator++()
Definition: YoungTab.hh:710
virtual void remove_box(unsigned int row)
Definition: YoungTab.cc:102
tableau & operator=(const tableau &)
Definition: YoungTab.cc:126
T & reference
Definition: YoungTab.hh:124
in_column_iterator operator+(unsigned int)
Definition: YoungTab.hh:535
const_iterator cend() const
Definition: YoungTab.hh:1385
unsigned int row_number
Definition: YoungTab.hh:259
yngint_t hook_length_prod() const
Definition: YoungTab.cc:82
filled_tableau< T > & operator=(const filled_tableau< T > &)
Definition: YoungTab.hh:1720
An iterator which stays inside a given row of a tableau.
Definition: YoungTab.hh:206
in_column_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:612
virtual unsigned int number_of_rows() const =0
const T & operator*() const
Definition: YoungTab.hh:698
bool has_nullifying_trace() const
Definition: YoungTab.hh:428
const T * operator->() const
Definition: YoungTab.hh:1254
T * operator->() const
Definition: YoungTab.hh:834
bool operator==(const const_iterator &) const
Definition: YoungTab.hh:1334
T * operator->() const
Definition: YoungTab.hh:1101
in_row_iterator end_row(unsigned int row_number)
Definition: YoungTab.hh:1465
mpq_class yngrat_t
Definition: YoungTab.hh:39
Definition: YoungTab.hh:130
std::vector< box_row > row_stack
Definition: YoungTab.hh:339
virtual unsigned int number_of_rows() const
Definition: YoungTab.hh:1887
ptrdiff_t difference_type
Definition: YoungTab.hh:136
const filled_tableau< T > * tab
Definition: YoungTab.hh:201
void apply_symmetry(long start=-1, long end=-1)
Definition: Combinatorics.hh:695
in_row_const_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:983
in_column_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:582
bool operator<=(const in_row_const_iterator &other) const
Definition: YoungTab.hh:1028
const T * pointer
Definition: YoungTab.hh:133
in_row_const_iterator & operator--()
Definition: YoungTab.hh:990
std::vector< T > original
Definition: Combinatorics.hh:76
std::random_access_iterator_tag iterator_category
Definition: YoungTab.hh:127
unsigned int row_number
Definition: YoungTab.hh:312
virtual ~filled_tableau()
Definition: YoungTab.hh:1929
in_row_const_iterator cbegin_row(unsigned int row_number) const
Definition: YoungTab.hh:1471
Definition: YoungTab.hh:289
void swap_columns(unsigned int c1, unsigned int c2)
Definition: YoungTab.hh:1952
bool operator<(const in_column_const_iterator &other) const
Definition: YoungTab.hh:776
T & operator*() const
Definition: YoungTab.hh:1095
const_iterator(unsigned int r, unsigned int c, const filled_tableau< T > *)
Definition: YoungTab.hh:1214
Definition: YoungTab.hh:47
bool operator>(const in_row_const_iterator &other) const
Definition: YoungTab.hh:1049
void set_multiplicity(unsigned int pos, int val)
Definition: Combinatorics.hh:1003
void projector(combin::symmetriser< T > &, bool modulo_monoterm=false) const
Definition: YoungTab.hh:1600
bool operator<(const const_iterator &other) const
Definition: YoungTab.hh:1342
yngrat_t multiplicity
Definition: YoungTab.hh:59
unsigned int column_number
Definition: YoungTab.hh:202
OutputIterator Garnir_set(OutputIterator, unsigned int, unsigned int) const
Definition: YoungTab.hh:1499
size_t size_type
Definition: YoungTab.hh:125
Definition: Combinatorics.hh:101
yngrat_t projector_normalisation() const
Definition: YoungTab.hh:1592
std::vector< range_t > range_vector_t
Definition: Combinatorics.hh:40
void canonicalise()
Sort equal-length columns and sort within columns.
Definition: YoungTab.hh:484
void add_tableau(const T &)
Definition: YoungTab.hh:1575
size_t size_type
Definition: YoungTab.hh:135
back_insert_iterator get_back_insert_iterator()
Definition: YoungTab.hh:370
virtual void remove_box(unsigned int row)
Definition: YoungTab.hh:1964
T & operator[](int n) const
Definition: YoungTab.hh:557
virtual ~tableau_base()
Definition: YoungTab.cc:31
unsigned int size() const
Definition: Combinatorics.hh:429
unsigned int size() const
Definition: Combinatorics.hh:906
in_column_iterator begin_column(unsigned int column_number)
Definition: YoungTab.hh:1403
yngint_t dimension(unsigned int) const
Definition: YoungTab.cc:47
bool operator>(const const_iterator &other) const
Definition: YoungTab.hh:1349
const T & reference
Definition: YoungTab.hh:134
in_row_const_iterator(unsigned int r, unsigned int c, const filled_tableau< T > *)
Definition: YoungTab.hh:929
filled_tableau< T > * tab
Definition: YoungTab.hh:285
bool operator==(const in_row_const_iterator &) const
Definition: YoungTab.hh:1020
in_row_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:877
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:1767
int signature(unsigned int) const
Definition: Combinatorics.hh:996
std::back_insert_iterator< tableau_container_t > back_insert_iterator
Definition: YoungTab.hh:357
iterator(unsigned int r, unsigned int c, filled_tableau< T > *)
Definition: YoungTab.hh:1067
void LR_tensor(const tableaux< T > &tabs1, const T &tab2, unsigned int maxrows, OutputIterator out, bool alltabs=false)
Definition: YoungTab.hh:1740
int ordersign(iterator1 b1, iterator1 e1, iterator2 b2, iterator2 e2, int stepsize=1)
Definition: Combinatorics.hh:224
in_column_iterator end_column(unsigned int column_number)
Definition: YoungTab.hh:1412
filled_tableau< T > * tab
Definition: YoungTab.hh:230
T value_type
Definition: YoungTab.hh:86
in_row_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:847
const T & operator*() const
Definition: YoungTab.hh:1248
iterator & operator+=(unsigned int)
Definition: YoungTab.hh:1117
bool operator==(const in_column_const_iterator &) const
Definition: YoungTab.hh:754
unsigned int row_number
Definition: YoungTab.hh:202
filled_tableau< std::pair< int, int > > keeptrack_tab_t
Definition: YoungTab.hh:1764
range_vector_t input_asym
Definition: Combinatorics.hh:166
virtual void remove_box(unsigned int row)=0