Modified main to compare sq1/2 for knots with equal Kh.
This commit is contained in:
parent
8dfa237fc4
commit
80a531db68
@ -1828,6 +1828,8 @@ mod_map<R>::display_self () const
|
|||||||
{
|
{
|
||||||
printf (" %d ", i);
|
printf (" %d ", i);
|
||||||
impl->from->show_generator (i);
|
impl->from->show_generator (i);
|
||||||
|
printf (" ");
|
||||||
|
show (impl->from->generator_grading (i));
|
||||||
printf (": ");
|
printf (": ");
|
||||||
show (column (i));
|
show (column (i));
|
||||||
newline ();
|
newline ();
|
||||||
|
75
main.cpp
75
main.cpp
@ -124,9 +124,43 @@ rank_lte (multivariate_laurentpoly<Z> p,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
triple<multivariate_laurentpoly<Z>,
|
||||||
|
multivariate_laurentpoly<Z>,
|
||||||
|
multivariate_laurentpoly<Z> >
|
||||||
|
square (knot_diagram &kd)
|
||||||
|
{
|
||||||
|
cube<Z2> c (kd);
|
||||||
|
mod_map<Z2> d = c.compute_d (1, 0, 0, 0, 0);
|
||||||
|
|
||||||
|
chain_complex_simplifier<Z2> s (c.khC, d, 1);
|
||||||
|
|
||||||
|
steenrod_square sq (c, d, s);
|
||||||
|
mod_map<Z2> sq1 = sq.sq1 ();
|
||||||
|
// display ("sq1:\n", sq1);
|
||||||
|
|
||||||
|
mod_map<Z2> sq2 = sq.sq2 ();
|
||||||
|
// display ("sq2:\n", sq2);
|
||||||
|
|
||||||
|
assert (sq1.compose (sq1) == 0);
|
||||||
|
assert (sq2.compose (sq2) + sq1.compose (sq2).compose (sq1) == 0);
|
||||||
|
|
||||||
|
multivariate_laurentpoly<Z> P = s.new_C->free_poincare_polynomial ();
|
||||||
|
|
||||||
|
ptr<const free_submodule<Z2> > sq1_im = sq1.image ();
|
||||||
|
multivariate_laurentpoly<Z> sq1_P = sq1_im->free_poincare_polynomial ();
|
||||||
|
|
||||||
|
ptr<const free_submodule<Z2> > sq2_im = sq2.image ();
|
||||||
|
multivariate_laurentpoly<Z> sq2_P = sq2_im->free_poincare_polynomial ();
|
||||||
|
|
||||||
|
return triple<multivariate_laurentpoly<Z>,
|
||||||
|
multivariate_laurentpoly<Z>,
|
||||||
|
multivariate_laurentpoly<Z> > (P, sq1_P, sq2_P);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main ()
|
main ()
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
for (int a = 1; a >= 0; a --)
|
for (int a = 1; a >= 0; a --)
|
||||||
for (unsigned i = 1; i <= 9; i ++)
|
for (unsigned i = 1; i <= 9; i ++)
|
||||||
for (unsigned j = 1; j <= htw_knots (i, a); j ++)
|
for (unsigned j = 1; j <= htw_knots (i, a); j ++)
|
||||||
@ -172,7 +206,7 @@ main ()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 1
|
#if 0
|
||||||
map<multivariate_laurentpoly<Z>,
|
map<multivariate_laurentpoly<Z>,
|
||||||
set<triple<unsigned, int, unsigned> > > kh_knot_map;
|
set<triple<unsigned, int, unsigned> > > kh_knot_map;
|
||||||
|
|
||||||
@ -199,7 +233,7 @@ main ()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
#if 1
|
||||||
reader r ("kh_knot_map.dat");
|
reader r ("kh_knot_map.dat");
|
||||||
map<multivariate_laurentpoly<Z>,
|
map<multivariate_laurentpoly<Z>,
|
||||||
set<triple<unsigned, int, unsigned> > > kh_knot_map (r);
|
set<triple<unsigned, int, unsigned> > > kh_knot_map (r);
|
||||||
@ -207,15 +241,44 @@ main ()
|
|||||||
for (map<multivariate_laurentpoly<Z>,
|
for (map<multivariate_laurentpoly<Z>,
|
||||||
set<triple<unsigned, int, unsigned> > >::const_iter i = kh_knot_map; i; i ++)
|
set<triple<unsigned, int, unsigned> > >::const_iter i = kh_knot_map; i; i ++)
|
||||||
{
|
{
|
||||||
printf ("P = "); display (i.key ());
|
if (i.val ().card () == 1)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
printf ("group\n");
|
||||||
|
bool first = 1;
|
||||||
|
multivariate_laurentpoly<Z> P, sq1_P, sq2_P;
|
||||||
|
|
||||||
for (set_const_iter<triple<unsigned, int, unsigned> > j = i.val (); j; j ++)
|
for (set_const_iter<triple<unsigned, int, unsigned> > j = i.val (); j; j ++)
|
||||||
{
|
{
|
||||||
knot_diagram kd (htw_knot (j.val ().first,
|
knot_diagram kd (htw_knot (j.val ().first,
|
||||||
j.val ().second,
|
j.val ().second,
|
||||||
j.val ().third));
|
j.val ().third));
|
||||||
printf (" ");
|
printf (" "); show (kd); newline ();
|
||||||
show (kd);
|
|
||||||
newline ();
|
triple<multivariate_laurentpoly<Z>,
|
||||||
|
multivariate_laurentpoly<Z>,
|
||||||
|
multivariate_laurentpoly<Z> > t = square (kd);
|
||||||
|
#if 0
|
||||||
|
display ("t.first = ", t.first);
|
||||||
|
display ("i.key () = ", i.key ());
|
||||||
|
assert (t.first == i.key ());
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (first)
|
||||||
|
{
|
||||||
|
P = t.first;
|
||||||
|
sq1_P = t.second;
|
||||||
|
sq2_P = t.third;
|
||||||
|
first = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
assert (P == t.first);
|
||||||
|
if (sq1_P != t.second)
|
||||||
|
printf (" prev sq1_P != sq1_P\n");
|
||||||
|
if (sq2_P != t.third)
|
||||||
|
printf (" prev sq2_P != sq2_P\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user