Viro Patchworking

Viro.sage is a Python class for using Viro Patchworking from within the computer algebra system Sage, written by Timo de Wolff, Emma Owusu Kwaakwah and Christopher O'Neill.

- The code is used via two classes: ViroComplex (for Viro's original construction) and CIViroComplex (for Sturmfel's generalization to complete intersections). See the sample code below.
- Autocomplete is supported in the Sage web interface, i.e. typing
viro.<TAB>

will give a list of available functions. Again, see the sample code below. - The handy triangulation picker provides a graphical interface for building triangulations and sign labelings.
- Comments and feature requests are encouraged, just send the authors an email!

Download

Given below is a current version of Viro.sage. Changes from the previous version can be found here.

- Viro.sage (version 0.5b), posted Sep 7, 2021

Action shots

The figure below depicts several plots produced by Viro.sage.

- Upper left: a hypersurface example in 2 variables.
- Upper right: a counterexample to the Ragsdale conjecture due to Viro and Itenberg.
- Lower left: a complete intersection example in 2 variables due to Sturmfels.
- Lower right: a hypersurface example in 3 variables.

Usage

To set up your machine to use Viro.sage, do the following.

- First, install Sage on your machine. Instructions for doing so can be found here.
- Next, download Viro.sage at the link above, and place it in your favorite folder.

sage: load('/PATH_TO_FILE/Viro.sage') sage: ragsviro = ViroComplex.RagsdaleCounterexample() sage: print ragsviro.ViroComplex() Simplicial complex with 610 vertices and 600 facets sage: ragsviro.Homology() {0: Z^43, 1: Z^34} sage: ragsviro.Plot() sage: curvelist=[[[(0,3),0,1], [(1,2),1,-1], [(2,1),5,-1], [(3,0),12,1], [(0,2),1,-1], [(1,1),4,1], [(2,0),9,-1], [(0,1),5,-1], [(1,0),9,-1], [(0,0),12,1]], [[(0,2),8,1], [(1,1),6,-1], [(2,0),6,1], [(0,1),3,-1], [(1,0),2,-1], [(0,0),0,1]]] sage: civiro = CIViroComplex.FromBigLists(curvelist) sage: print civiro.ViroComplex() Simplicial complex with 6 vertices and 6 facets sage: print civiro.Homology() {0: Z^5} sage: civiro.Plot() viro3d = ViroComplex.FromLists([(4,0,0),(0,4,0),(0,0,4),(1,1,1),(0,0,0),(1,2,2)],[1,1,1,1,1,-1], [2,2,2,1,2,1]) print viro3d.ViroComplex() viro3d.Plot()