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);
334 template<
class OutputIterator>
335 OutputIterator
Garnir_set(OutputIterator,
unsigned int,
unsigned int)
const;
345 yngint_t total_dimension(
unsigned int dim);
346 void remove_nullifying_traces();
349 bool standard_form();
350 void add_tableau(
const T&);
351 void symmetrise(
const T& tabsym);
361 bool legal_box(
const std::vector<std::pair<int,int> >& prev,
362 const std::vector<std::pair<int,int> >& ths,
363 int colpos,
int trypos);
377 typename tableau_container_t::iterator it=storage.begin();
378 while(it!=storage.end()) {
379 if(it->has_nullifying_trace())
380 it=storage.erase(it);
459 for(
unsigned int ir=0; ir<
rows.size(); ++ir) {
460 for(
unsigned int ic=0; ic<
rows[ir].size(); ++ic) {
461 if(
rows[ir][ic]==obj)
462 return std::pair<int,int>(ir, ic);
465 return std::pair<int,int>(-1,-1);
490 template<
class StrictWeakOrdering>
495 for(
unsigned int c=0; c<
row_size(0); ++c) {
502 template<
class StrictWeakOrdering>
505 for(
unsigned int c1=0; c1<
row_size(0); ++c1) {
506 for(
unsigned int c2=c1; c2<
row_size(0); ++c2) {
508 if(comp((*
this)(0,c2), (*
this)(0,c1)))
516 template<
class StrictWeakOrdering>
558 return (*tab)(row_number,column_number);
564 return &((*tab)(row_number,column_number));
650 return !((*this)==other);
658 : tab(t), column_number(c), row_number(r)
664 : tab(other.tab), column_number(other.column_number), row_number(other.row_number)
693 return (*tab)(row_number, column_number);
699 return &((*tab)(row_number, column_number));
757 if (row_number <= other.
row_number)
return true;
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 return !((*this) == other);
794 : tab(t), column_number(c), row_number(r)
823 return (*tab)(row_number, column_number);
829 return &((*tab)(row_number, column_number));
915 return !((*this) == other);
923 : tab(t), column_number(c), row_number(r)
929 : tab(other.tab), column_number(other.column_number), row_number(other.row_number)
959 return (*tab)(row_number, column_number);
965 return &((*tab)(row_number, column_number));
1051 return !((*this) == other);
1061 : tab(t), column_number(c), row_number(r)
1090 return (*tab)(row_number,column_number);
1096 return &((*tab)(row_number,column_number));
1102 if(++column_number==tab->rows[row_number].size()) {
1113 if(++column_number==tab->rows[row_number]) {
1125 if(column_number==0) {
1127 column_number=tab->rows[row_number].size()-1;
1129 else --column_number;
1137 if(column_number==0) {
1139 column_number=tab->rows[row_number].size()-1;
1141 else --column_number;
1150 if(++column_number==tab->rows[row_number]) {
1163 if(column_number==0) {
1165 column_number=tab->rows[row_number].size()-1;
1167 else --column_number;
1198 return !((*this)==other);
1208 : tab(t), column_number(c), row_number(r)
1214 : tab(other.tab), column_number(other.column_number), row_number(other.row_number)
1243 return (*tab)(row_number, column_number);
1249 return &((*tab)(row_number, column_number));
1255 if (++column_number == tab->rows[row_number].size()) {
1266 if (++column_number == tab->rows[row_number]) {
1278 if (column_number == 0) {
1280 column_number = tab->rows[row_number].size() - 1;
1282 else --column_number;
1290 if (column_number == 0) {
1292 column_number = tab->rows[row_number].size() - 1;
1294 else --column_number;
1302 while (this->n > 0) {
1303 if (++column_number == tab->rows[row_number]) {
1316 if (column_number == 0) {
1318 column_number = tab->rows[row_number].size() - 1;
1320 else --column_number;
1337 if (row_number < other.
row_number)
return true;
1344 if (row_number > other.
row_number)
return true;
1351 return !((*this) == other);
1361 return iterator(0, 0,
this);
1367 return iterator(
rows.size(), 0,
this);
1374 return const_iterator(0,0,
this);
1380 return const_iterator(
rows.size(), 0,
this);
1454 return in_row_iterator{ row, 0,
this };
1460 return in_row_iterator{ row,
row_size(row),
this };
1466 return in_row_const_iterator{ row, 0,
this };
1472 return in_row_const_iterator{ row,
row_size(row),
this };
1491 template<
class OutputIterator>
1495 unsigned int r=row, c=col;
1522 for(
unsigned int c=0; c<
row_size(r)-1; ++c) {
1523 if((*
this)(r,c) > (*
this)(r,c+1) )
1524 return std::pair<int, int>(r,c);
1528 return std::pair<int,int>(-1,-1);
1534 bool already_standard=
true;
1536 typename tableau_container_t::iterator thetab=storage.begin();
1537 while(thetab!=storage.end()) {
1538 (*thetab).sort_within_columns();
1539 std::pair<int,int> where=(*thetab).nonstandard_loc();
1540 if(where.first!=-1) {
1541 already_standard=
false;
1543 for(
unsigned int i1=where.first; i1<(*thetab).column_size(where.second); ++i1)
1544 com.
original.push_back((*thetab)(i1,where.second));
1545 for(
unsigned int i1=0; i1<=(
unsigned int)(where.first); ++i1)
1546 com.
original.push_back((*thetab)(i1,where.second+1));
1547 com.
sublengths.push_back((*thetab).column_size(where.second)-where.first);
1550 for(
unsigned int tabi=1; tabi<com.
size(); ++tabi) {
1552 unsigned int offset=0;
1553 for(
unsigned int i1=where.first; i1<(*thetab).column_size(where.second); ++i1, ++offset)
1554 ntab(i1,where.second)=com[tabi][offset];
1555 for(
unsigned int i1=0; i1<=(
unsigned int)(where.first); ++i1, ++offset)
1556 ntab(i1,where.second+1)=com[tabi][offset];
1557 ntab.multiplicity*=-1*com.
ordersign(tabi);
1560 thetab=storage.erase(thetab);
1564 return already_standard;
1570 typename tableau_container_t::iterator it=storage.begin();
1571 while(it!=storage.end()) {
1572 if((*it).compare_without_multiplicity(ntab)) {
1573 (*it).multiplicity+=ntab.multiplicity;
1574 if((*it).multiplicity==0)
1580 storage.push_back(ntab);
1596 for(
unsigned int c=0; c<
row_size(r); ++c)
1599 unsigned int offset=0;
1606 for(
unsigned int c=0; c<
row_size(r); ++c)
1612 if(modulo_monoterm) {
1614 for(
unsigned int c=0; c<
row_size(0); ++c)
1616 for(
unsigned int i=0; i<sym.
size(); ++i)
1621 for(
unsigned int c=0; c<
row_size(0); ++c) {
1640 for(
unsigned int c=0; c<
row_size(r); ++c)
1643 unsigned int offset=0;
1650 for(
unsigned int c=0; c<
row_size(r); ++c)
1656 for(
unsigned int c=0; c<
row_size(0); ++c) {
1724 typename tableau_container_t::const_iterator it=storage.begin();
1725 while(it!=storage.end()) {
1726 totdim+=(*it).dimension(dim);
1732 template<
class T,
class OutputIterator>
1734 OutputIterator out,
bool alltabs=
false)
1737 while(it!=tabs1.
storage.end()) {
1738 LR_tensor((*it), tab2, maxrows, out, alltabs);
1743 template<
class T1,
class T2>
1745 const T2& tab2,
unsigned int row2,
unsigned int col2)
1747 tab1.add_box(row1, tab2(row2,col2));
1752 const tableau&,
unsigned int,
unsigned int)
1759 template<
class Tab,
class OutputIterator>
1761 unsigned int currow2,
unsigned int curcol2,
unsigned int startrow,
1762 unsigned int maxrows,
1763 OutputIterator outit,
1768 if((++curcol2)==tab2.row_size(currow2)) {
1770 if((++currow2)==tab2.number_of_rows()) {
1779 for(
unsigned int rowpos=startrow; rowpos<std::min(newtab.number_of_rows()+1,maxrows); ++rowpos) {
1781 if(rowpos>0 && rowpos<newtab.number_of_rows())
1782 if(newtab.row_size(rowpos-1)==newtab.row_size(rowpos))
1786 unsigned int colpos=(rowpos==newtab.number_of_rows())?0:newtab.row_size(rowpos);
1789 for(
unsigned int rr=0; rr<rowpos; ++rr)
1790 if(Ycurrent(rr,colpos).first==(
int)(currow2))
1795 for(
unsigned int cc=0; cc<colpos; ++cc)
1796 if(Ycurrent(rowpos,cc).second==(
int)(curcol2))
1800 if(!alltabs && currow2>0) {
1801 int numi=0, numimin1=0;
1803 for(
unsigned int sr=0; sr<rowpos; ++sr)
1804 for(
unsigned int sc=0; sc<Ycurrent.
row_size(sr); ++sc) {
1806 if(Ycurrent(sr,sc).first==(int)(currow2)) ++numi;
1807 if(Ycurrent(sr,sc).first==(int)(currow2)-1) ++numimin1;
1816 for(
int sc=Ycurrent.
row_size(sr)-1; sc>=0; --sc) {
1817 if(Ycurrent(sr,sc).first==(int)(currow2)) ++numi;
1818 if(Ycurrent(sr,sc).first==(int)(currow2)-1) ++numimin1;
1826 Ycurrent.
add_box(rowpos, std::pair<int,int>(currow2, curcol2));
1827 add_box(newtab, rowpos, tab2, currow2, curcol2);
1828 LR_add_box(tab2, newtab, currow2, curcol2, alltabs?0:rowpos, maxrows,
1829 outit, Ycurrent, alltabs);
1832 newtab.remove_box(rowpos);
1840 template<
class Tab,
class OutputIterator>
1841 void LR_tensor(
const Tab& tab1,
const Tab& tab2,
unsigned int maxrows,
1842 OutputIterator outit,
bool alltabs=
false)
1855 while(yi!=Ycurrent.
end()) {
1856 (*yi)=std::pair<int,int>(-2,-2);
1860 LR_add_box(tab2, newtab, 0, -1, 0, maxrows, outit, Ycurrent, alltabs);
1863 template<
class T,
class OutputIterator>
1871 std::ostream&
operator<<(std::ostream&,
const tableau& );
1874 std::ostream& operator<<(std::ostream&, const tableaux<T>& );
1877 std::ostream& operator<<(std::ostream&, const filled_tableau<T>& );
1888 assert(num<
rows.size());
1889 return rows[num].size();
1895 assert(row<
rows.size());
1896 assert(col<
rows[row].size());
1897 return rows[row][col];
1903 assert(row<
rows.size());
1904 assert(col<
rows[row].size());
1905 return rows[row][col];
1911 unsigned int row = 0;
1918 return rows[row][boxnum];
1929 if(rownum>=
rows.size())
1930 rows.resize(rownum+1);
1931 assert(rownum<
rows.size());
1932 rows[rownum].push_back(T());
1938 if(rownum>=
rows.size())
1939 rows.resize(rownum+1);
1940 assert(rownum<
rows.size());
1941 rows[rownum].push_back(val);
1950 T tmp=(*this)(r,c1);
1951 (*this)(r,c1)=(*
this)(r,c2);
1959 assert(rownum<
rows.size());
1960 assert(
rows[rownum].size()>0);
1961 rows[rownum].pop_back();
1962 if(
rows[rownum].size()==0)
1974 std::ostream& operator<<(std::ostream& str, const tableaux<T>& tabs)
1977 while(it!=tabs.
storage.end()) {
1978 str << (*it) << std::endl << std::endl;
1985 std::ostream& operator<<(std::ostream& str, const filled_tableau<T>& tab)
1987 for(
unsigned int i=0; i<tab.number_of_rows(); ++i) {
1988 for(
unsigned int j=0; j<tab.row_size(i); ++j) {
1993 str <<
" " << tab.dimension(10);
1994 if(tab.has_nullifying_trace()) str <<
" null";
1996 if(i!=tab.number_of_rows()-1)
1999 str <<
" (" << tab.multiplicity <<
")" << std::endl;
in_row_iterator & operator++()
Definition: YoungTab.hh:833
in_column_const_iterator cend_column(unsigned int column_number) const
Definition: YoungTab.hh:1427
in_column_iterator(unsigned int r, unsigned int c, filled_tableau< T > *)
Definition: YoungTab.hh:528
std::vector< int > rows
Definition: YoungTab.hh:77
bool operator>=(const in_column_iterator &other) const
Definition: YoungTab.hh:627
An iterator over all boxes of a tableau, left to right, top to bottom.
Definition: YoungTab.hh:262
const_iterator & operator++()
Definition: YoungTab.hh:1253
in_row_const_iterator & operator++()
Definition: YoungTab.hh:969
bool operator>(const in_column_const_iterator &other) const
Definition: YoungTab.hh:776
bool operator==(const in_row_iterator &) const
Definition: YoungTab.hh:877
range_vector_t sublengths_scattered
Definition: Combinatorics.hh:167
bool operator<=(const in_column_iterator &other) const
Definition: YoungTab.hh:620
in_row_const_iterator operator+(unsigned int)
Definition: YoungTab.hh:935
bool operator>=(const in_row_const_iterator &other) const
Definition: YoungTab.hh:1028
virtual unsigned int column_size(unsigned int col) const
Definition: YoungTab.cc:61
const_iterator & operator--()
Definition: YoungTab.hh:1276
unsigned int column_number
Definition: YoungTab.hh:172
std::vector< T > box_row
Definition: YoungTab.hh:337
unsigned int row_number
Definition: YoungTab.hh:172
std::list< T > tableau_container_t
Definition: YoungTab.hh:353
bool operator<(const in_column_iterator &other) const
Definition: YoungTab.hh:634
bool operator<(const in_row_iterator &other) const
Definition: YoungTab.hh:899
in_column_iterator & operator++()
Definition: YoungTab.hh:568
std::random_access_iterator_tag iterator_category
Definition: YoungTab.hh:137
mpq_class yngrat_t
Definition: YoungTab.hh:39
in_column_const_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:710
An iterator which stays inside a given column of a tableau.
Definition: YoungTab.hh:147
const filled_tableau< T > * tab
Definition: YoungTab.hh:257
bool operator>=(const in_column_const_iterator &other) const
Definition: YoungTab.hh:762
ptrdiff_t difference_type
Definition: YoungTab.hh:126
T & operator()(unsigned int row, unsigned int col)
Definition: YoungTab.hh:1893
in_column_iterator & operator--()
Definition: YoungTab.hh:582
const_iterator operator-(unsigned int)
Definition: YoungTab.hh:1227
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:943
in_row_const_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:1006
unsigned int column_number
Definition: YoungTab.hh:258
bool operator<=(const in_row_iterator &other) const
Definition: YoungTab.hh:885
bool operator!=(const iterator &) const
Definition: YoungTab.hh:1196
bool operator<(const iterator &other) const
Definition: YoungTab.hh:1182
in_row_iterator & operator--()
Definition: YoungTab.hh:847
int permutation_sign
Definition: Combinatorics.hh:163
void copy_shape(const tableau &)
Definition: YoungTab.hh:411
void sort_columns()
Definition: YoungTab.hh:476
bool operator>(const iterator &other) const
Definition: YoungTab.hh:1189
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:677
yngint_t total_dimension(unsigned int dim)
Definition: YoungTab.hh:1721
bool operator<=(const in_column_const_iterator &other) const
Definition: YoungTab.hh:755
iterator begin()
Definition: YoungTab.hh:1359
bool operator>(const in_column_iterator &other) const
Definition: YoungTab.hh:641
virtual void clear()
Definition: YoungTab.hh:1967
virtual void add_box(unsigned int row)
Definition: YoungTab.hh:1927
unsigned long factorial(unsigned int x)
Definition: Combinatorics.cc:23
const_iterator cbegin() const
Definition: YoungTab.hh:1372
T & operator*() const
Definition: YoungTab.hh:821
const T * operator->() const
Definition: YoungTab.hh:697
in_row_const_iterator cend_row(unsigned int row_number) const
Definition: YoungTab.hh:1470
std::pair< int, int > nonstandard_loc() const
Definition: YoungTab.hh:1516
virtual void add_row(unsigned int row_size)
Definition: YoungTab.cc:39
in_column_const_iterator operator+(unsigned int)
Definition: YoungTab.hh:669
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:1886
bool operator==(const in_column_iterator &) const
Definition: YoungTab.hh:612
unsigned int block_length
Definition: Combinatorics.hh:160
const_iterator operator+(unsigned int)
Definition: YoungTab.hh:1219
T value_type
Definition: YoungTab.hh:132
unsigned int row_number
Definition: YoungTab.hh:285
Definition: YoungTab.hh:233
int ordersign(unsigned int) const
Definition: Combinatorics.hh:458
const_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:1313
in_column_const_iterator cbegin_column(unsigned int column_number) const
Definition: YoungTab.hh:1418
iterator & operator--()
Definition: YoungTab.hh:1123
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:1909
bool standard_form()
Put the set of tableaux into standard form by using Garnir symmetries.
Definition: YoungTab.hh:1532
tableau_container_t storage
Definition: YoungTab.hh:354
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:913
void permute(long start=-1, long end=-1)
Definition: Combinatorics.hh:351
const_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:1263
filled_tableau< T > * tab
Definition: YoungTab.hh:171
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:793
in_row_iterator operator-(unsigned int)
Definition: YoungTab.hh:807
int selfdual_column
Definition: YoungTab.hh:60
in_row_iterator begin_row(unsigned int row_number)
Definition: YoungTab.hh:1452
std::pair< int, int > find(const T &) const
Definition: YoungTab.hh:457
const T * operator->() const
Definition: YoungTab.hh:963
bool operator!=(const const_iterator &) const
Definition: YoungTab.hh:1349
bool operator<(const in_row_const_iterator &other) const
Definition: YoungTab.hh:1035
T * operator->() const
Definition: YoungTab.hh:562
iterator operator+(unsigned int)
Definition: YoungTab.hh:1066
unsigned int column_number
Definition: YoungTab.hh:311
in_column_iterator operator-(unsigned int)
Definition: YoungTab.hh:542
bool operator>=(const in_row_iterator &other) const
Definition: YoungTab.hh:892
void symmetrise(const T &tabsym)
Definition: YoungTab.hh:386
iterator & operator++()
Definition: YoungTab.hh:1100
std::vector< T > value_permute
Definition: Combinatorics.hh:162
Definition: YoungTab.hh:66
bool operator!=(const in_row_const_iterator &) const
Definition: YoungTab.hh:1049
unsigned int column_number
Definition: YoungTab.hh:230
unsigned int row_number
Definition: YoungTab.hh:230
unsigned int column_number
Definition: YoungTab.hh:285
bool operator>(const in_row_iterator &other) const
Definition: YoungTab.hh:906
bool operator!=(const in_column_iterator &) const
Definition: YoungTab.hh:648
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:1174
void remove_nullifying_traces()
Definition: YoungTab.hh:375
iterator end()
Definition: YoungTab.hh:1365
iterator operator-(unsigned int)
Definition: YoungTab.hh:1074
Definition: YoungTab.hh:84
T & operator*() const
Definition: YoungTab.hh:556
Definition: YoungTab.hh:120
virtual void clear()
Definition: YoungTab.cc:121
bool compare_without_multiplicity(const filled_tableau< T > &other) const
Definition: YoungTab.hh:421
T * pointer
Definition: YoungTab.hh:123
void sort_within_columns()
Definition: YoungTab.hh:469
A const iterator which stays inside a given column of a tableau.
Definition: YoungTab.hh:176
in_column_const_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:740
std::vector< T > original
Definition: Combinatorics.hh:159
row_stack rows
Definition: YoungTab.hh:339
in_row_iterator operator+(unsigned int)
Definition: YoungTab.hh:799
virtual ~tableau()
Definition: YoungTab.cc:35
in_column_const_iterator & operator--()
Definition: YoungTab.hh:717
bool operator!=(const in_column_const_iterator &) const
Definition: YoungTab.hh:783
const T & operator*() const
Definition: YoungTab.hh:957
const filled_tableau< T > * tab
Definition: YoungTab.hh:310
iterator & operator-=(unsigned int)
Definition: YoungTab.hh:1160
in_column_const_iterator(unsigned int r, unsigned int c, const filled_tableau< T > *)
Definition: YoungTab.hh:657
in_column_const_iterator & operator++()
Definition: YoungTab.hh:703
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:534
const_iterator cend() const
Definition: YoungTab.hh:1378
unsigned int row_number
Definition: YoungTab.hh:258
yngint_t hook_length_prod() const
Definition: YoungTab.cc:82
filled_tableau< T > & operator=(const filled_tableau< T > &)
Definition: YoungTab.hh:1713
An iterator which stays inside a given row of a tableau.
Definition: YoungTab.hh:205
in_column_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:605
virtual unsigned int number_of_rows() const =0
mpz_class yngint_t
Definition: YoungTab.hh:38
const T & operator*() const
Definition: YoungTab.hh:691
bool has_nullifying_trace() const
Definition: YoungTab.hh:427
const T * operator->() const
Definition: YoungTab.hh:1247
T * operator->() const
Definition: YoungTab.hh:827
bool operator==(const const_iterator &) const
Definition: YoungTab.hh:1327
T * operator->() const
Definition: YoungTab.hh:1094
in_row_iterator end_row(unsigned int row_number)
Definition: YoungTab.hh:1458
Definition: YoungTab.hh:130
std::vector< box_row > row_stack
Definition: YoungTab.hh:338
virtual unsigned int number_of_rows() const
Definition: YoungTab.hh:1880
ptrdiff_t difference_type
Definition: YoungTab.hh:136
const filled_tableau< T > * tab
Definition: YoungTab.hh:200
void apply_symmetry(long start=-1, long end=-1)
Definition: Combinatorics.hh:695
in_row_const_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:976
in_column_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:575
bool operator<=(const in_row_const_iterator &other) const
Definition: YoungTab.hh:1021
const T * pointer
Definition: YoungTab.hh:133
in_row_const_iterator & operator--()
Definition: YoungTab.hh:983
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:311
virtual ~filled_tableau()
Definition: YoungTab.hh:1922
in_row_const_iterator cbegin_row(unsigned int row_number) const
Definition: YoungTab.hh:1464
Definition: YoungTab.hh:288
void swap_columns(unsigned int c1, unsigned int c2)
Definition: YoungTab.hh:1945
bool operator<(const in_column_const_iterator &other) const
Definition: YoungTab.hh:769
T & operator*() const
Definition: YoungTab.hh:1088
const_iterator(unsigned int r, unsigned int c, const filled_tableau< T > *)
Definition: YoungTab.hh:1207
Definition: YoungTab.hh:47
bool operator>(const in_row_const_iterator &other) const
Definition: YoungTab.hh:1042
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:1593
bool operator<(const const_iterator &other) const
Definition: YoungTab.hh:1335
yngrat_t multiplicity
Definition: YoungTab.hh:59
unsigned int column_number
Definition: YoungTab.hh:201
OutputIterator Garnir_set(OutputIterator, unsigned int, unsigned int) const
Definition: YoungTab.hh:1492
size_t size_type
Definition: YoungTab.hh:125
Definition: Combinatorics.hh:101
yngrat_t projector_normalisation() const
Definition: YoungTab.hh:1585
std::vector< range_t > range_vector_t
Definition: Combinatorics.hh:40
void canonicalise()
Sort equal-length columns and sort within columns.
Definition: YoungTab.hh:483
void add_tableau(const T &)
Definition: YoungTab.hh:1568
size_t size_type
Definition: YoungTab.hh:135
back_insert_iterator get_back_insert_iterator()
Definition: YoungTab.hh:369
virtual void remove_box(unsigned int row)
Definition: YoungTab.hh:1957
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:1396
yngint_t dimension(unsigned int) const
Definition: YoungTab.cc:47
bool operator>(const const_iterator &other) const
Definition: YoungTab.hh:1342
const T & reference
Definition: YoungTab.hh:134
in_row_const_iterator(unsigned int r, unsigned int c, const filled_tableau< T > *)
Definition: YoungTab.hh:922
filled_tableau< T > * tab
Definition: YoungTab.hh:284
bool operator==(const in_row_const_iterator &) const
Definition: YoungTab.hh:1013
in_row_iterator & operator-=(unsigned int)
Definition: YoungTab.hh:870
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:1760
int signature(unsigned int) const
Definition: Combinatorics.hh:996
std::back_insert_iterator< tableau_container_t > back_insert_iterator
Definition: YoungTab.hh:356
iterator(unsigned int r, unsigned int c, filled_tableau< T > *)
Definition: YoungTab.hh:1060
void LR_tensor(const tableaux< T > &tabs1, const T &tab2, unsigned int maxrows, OutputIterator out, bool alltabs=false)
Definition: YoungTab.hh:1733
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:1405
filled_tableau< T > * tab
Definition: YoungTab.hh:229
T value_type
Definition: YoungTab.hh:86
in_row_iterator & operator+=(unsigned int)
Definition: YoungTab.hh:840
const T & operator*() const
Definition: YoungTab.hh:1241
iterator & operator+=(unsigned int)
Definition: YoungTab.hh:1110
bool operator==(const in_column_const_iterator &) const
Definition: YoungTab.hh:747
unsigned int row_number
Definition: YoungTab.hh:201
filled_tableau< std::pair< int, int > > keeptrack_tab_t
Definition: YoungTab.hh:1757
range_vector_t input_asym
Definition: Combinatorics.hh:166
virtual void remove_box(unsigned int row)=0