# Copyright (c) 1997-2006 # Ewgenij Gawrilow, Michael Joswig (Technische Universitaet Berlin, Germany) # http://www.math.tu-berlin.de/polymake, mailto:polymake@math.tu-berlin.de # # 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. #----------------------------------------------------------------------------- # $Project: polymake $$Id: homology.rules 7207 2006-03-11 19:24:45Z gawrilow $ # path to the Heckenbach's @c homology program custom $homology; CONFIGURE { $homology=find_via_path("homology") or die "'homology' program not found\n"; } # Category: Topology # Use the Heckenbach's @see external.homology program to compute the homology groups instead of the # default client @see t_homology. label heckenbach object SimplicialComplex; heckenbach.homology: HOMOLOGY : FACETS WEIGHT 4.20 my $hom=new Poly::ProgramPipe($homology); print $hom join(",\n", map { "{" . join(",", /\d+/g) ."}" } @{$this->FACETS}), "\n"; my $last_line; while (<$hom>) { $last_line=$_; } $last_line =~ s/.*\((.*)\).*/$1/; $this->HOMOLOGY=[ map { my ($betti, @torsion) = split / *\+ *Z_/; "({" . join(" ", map { /\^/ ? "($` $')" : "($_ 1)" } @torsion) . "} $betti)" } split /, */, $last_line ]; # Local Variables: # mode: perl # c-basic-offset:3 # End: