passagemath-gap-pkg-normalizinterface 10.6.32__cp310-cp310-musllinux_1_2_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of passagemath-gap-pkg-normalizinterface might be problematic. Click here for more details.

Files changed (54) hide show
  1. gap/pkg/normalizinterface/CHANGES +113 -0
  2. gap/pkg/normalizinterface/LICENSE +351 -0
  3. gap/pkg/normalizinterface/PackageInfo.g +121 -0
  4. gap/pkg/normalizinterface/README.md +96 -0
  5. gap/pkg/normalizinterface/bin/aarch64-unknown-linux-musl-default64-kv10/NormalizInterface.so +0 -0
  6. gap/pkg/normalizinterface/etc/download.sh +85 -0
  7. gap/pkg/normalizinterface/etc/generate_cone_property_wrappers.g +380 -0
  8. gap/pkg/normalizinterface/examples/5x5.g +22 -0
  9. gap/pkg/normalizinterface/examples/demo.g +53 -0
  10. gap/pkg/normalizinterface/examples/docs.g +43 -0
  11. gap/pkg/normalizinterface/examples/dual_mode.g +26 -0
  12. gap/pkg/normalizinterface/examples/magic_square.g +36 -0
  13. gap/pkg/normalizinterface/init.g +7 -0
  14. gap/pkg/normalizinterface/lib/cone_property_wrappers.gd +682 -0
  15. gap/pkg/normalizinterface/lib/cone_property_wrappers.gi +132 -0
  16. gap/pkg/normalizinterface/lib/normaliz.gd +130 -0
  17. gap/pkg/normalizinterface/lib/normaliz.gi +153 -0
  18. gap/pkg/normalizinterface/makedoc.g +13 -0
  19. gap/pkg/normalizinterface/read.g +3 -0
  20. gap/pkg/normalizinterface/tst/InhomIneq.tst +20 -0
  21. gap/pkg/normalizinterface/tst/bugfix.tst +37 -0
  22. gap/pkg/normalizinterface/tst/conversion.tst +87 -0
  23. gap/pkg/normalizinterface/tst/cube-incidence.tst +62 -0
  24. gap/pkg/normalizinterface/tst/descent.tst +173 -0
  25. gap/pkg/normalizinterface/tst/dual.tst +533 -0
  26. gap/pkg/normalizinterface/tst/fractions.tst +29 -0
  27. gap/pkg/normalizinterface/tst/gorenstein.tst +22 -0
  28. gap/pkg/normalizinterface/tst/normalizinterface01.tst +46 -0
  29. gap/pkg/normalizinterface/tst/normalizinterface02.tst +107 -0
  30. gap/pkg/normalizinterface/tst/project.tst +136 -0
  31. gap/pkg/normalizinterface/tst/rational.tst +151 -0
  32. gap/pkg/normalizinterface/tst/rees.tst +544 -0
  33. gap/pkg/normalizinterface/tst/rp2poly.tst +351 -0
  34. gap/pkg/normalizinterface/tst/rproj2.tst +548 -0
  35. gap/pkg/normalizinterface/tst/testall.g +3 -0
  36. gap/pkg/normalizinterface/tst/verticesfloat.tst +11 -0
  37. passagemath_gap_pkg_normalizinterface-10.6.32.dist-info/METADATA +93 -0
  38. passagemath_gap_pkg_normalizinterface-10.6.32.dist-info/METADATA.bak +94 -0
  39. passagemath_gap_pkg_normalizinterface-10.6.32.dist-info/RECORD +54 -0
  40. passagemath_gap_pkg_normalizinterface-10.6.32.dist-info/WHEEL +5 -0
  41. passagemath_gap_pkg_normalizinterface-10.6.32.dist-info/top_level.txt +1 -0
  42. passagemath_gap_pkg_normalizinterface.libs/libeantic-da90a096.so.3.1.0 +0 -0
  43. passagemath_gap_pkg_normalizinterface.libs/libeanticxx-bd9d5c67.so.3.1.0 +0 -0
  44. passagemath_gap_pkg_normalizinterface.libs/libflint-8c82a98a.so.21.0.0 +0 -0
  45. passagemath_gap_pkg_normalizinterface.libs/libgcc_s-2d945d6c.so.1 +0 -0
  46. passagemath_gap_pkg_normalizinterface.libs/libgmp-28992bcb.so.10.5.0 +0 -0
  47. passagemath_gap_pkg_normalizinterface.libs/libgmpxx-fecb01a9.so.4.7.0 +0 -0
  48. passagemath_gap_pkg_normalizinterface.libs/libgomp-1ede7ee7.so.1.0.0 +0 -0
  49. passagemath_gap_pkg_normalizinterface.libs/libmpfr-e34bb864.so.6.2.1 +0 -0
  50. passagemath_gap_pkg_normalizinterface.libs/libnormaliz-40532fe8.so.3.11.0 +0 -0
  51. passagemath_gap_pkg_normalizinterface.libs/libstdc++-85f2cd6d.so.6.0.33 +0 -0
  52. sage/all__sagemath_gap_pkg_normalizinterface.py +1 -0
  53. sage/libs/all__sagemath_gap_pkg_normalizinterface.py +1 -0
  54. sage/libs/gap_pkg_normalizinterface.cpython-310-aarch64-linux-gnu.so +0 -0
@@ -0,0 +1,132 @@
1
+ # WARNING: This file was generated by etc/generate_cone_property_wrappers.g,
2
+ # DO NOT EDIT IT BY HAND!
3
+
4
+ InstallGlobalFunction( NmzAffineDim, cone -> NmzConeProperty( cone, "AffineDim" ) );
5
+ InstallGlobalFunction( NmzAllGeneratorsTriangulation, cone -> NmzConeProperty( cone, "AllGeneratorsTriangulation" ) );
6
+ InstallGlobalFunction( NmzAmbientAutomorphisms, cone -> NmzConeProperty( cone, "AmbientAutomorphisms" ) );
7
+ InstallGlobalFunction( NmzApproximate, cone -> NmzConeProperty( cone, "Approximate" ) );
8
+ InstallGlobalFunction( NmzAutomorphisms, cone -> NmzConeProperty( cone, "Automorphisms" ) );
9
+ InstallGlobalFunction( NmzAxesScaling, cone -> NmzConeProperty( cone, "AxesScaling" ) );
10
+ InstallGlobalFunction( NmzBasicStanleyDec, cone -> NmzConeProperty( cone, "BasicStanleyDec" ) );
11
+ InstallGlobalFunction( NmzBasicTriangulation, cone -> NmzConeProperty( cone, "BasicTriangulation" ) );
12
+ InstallGlobalFunction( NmzBigInt, cone -> NmzConeProperty( cone, "BigInt" ) );
13
+ InstallGlobalFunction( NmzBottomDecomposition, cone -> NmzConeProperty( cone, "BottomDecomposition" ) );
14
+ InstallGlobalFunction( NmzClassGroup, cone -> NmzConeProperty( cone, "ClassGroup" ) );
15
+ InstallGlobalFunction( NmzCombinatorialAutomorphisms, cone -> NmzConeProperty( cone, "CombinatorialAutomorphisms" ) );
16
+ InstallGlobalFunction( NmzConeDecomposition, cone -> NmzConeProperty( cone, "ConeDecomposition" ) );
17
+ InstallGlobalFunction( NmzCongruences, cone -> NmzConeProperty( cone, "Congruences" ) );
18
+ InstallGlobalFunction( NmzCoveringFace, cone -> NmzConeProperty( cone, "CoveringFace" ) );
19
+ InstallGlobalFunction( NmzDefaultMode, cone -> NmzConeProperty( cone, "DefaultMode" ) );
20
+ InstallGlobalFunction( NmzDeg1Elements, cone -> NmzConeProperty( cone, "Deg1Elements" ) );
21
+ InstallGlobalFunction( NmzDehomogenization, cone -> NmzConeProperty( cone, "Dehomogenization" ) );
22
+ InstallGlobalFunction( NmzDescent, cone -> NmzConeProperty( cone, "Descent" ) );
23
+ InstallGlobalFunction( NmzDistributedComp, cone -> NmzConeProperty( cone, "DistributedComp" ) );
24
+ InstallGlobalFunction( NmzDualFVector, cone -> NmzConeProperty( cone, "DualFVector" ) );
25
+ InstallGlobalFunction( NmzDualFaceLattice, cone -> NmzConeProperty( cone, "DualFaceLattice" ) );
26
+ InstallGlobalFunction( NmzDualIncidence, cone -> NmzConeProperty( cone, "DualIncidence" ) );
27
+ InstallGlobalFunction( NmzDualMode, cone -> NmzConeProperty( cone, "DualMode" ) );
28
+ InstallGlobalFunction( NmzDynamic, cone -> NmzConeProperty( cone, "Dynamic" ) );
29
+ InstallGlobalFunction( NmzEhrhartQuasiPolynomial, cone -> NmzConeProperty( cone, "EhrhartQuasiPolynomial" ) );
30
+ InstallGlobalFunction( NmzEhrhartSeries, cone -> NmzConeProperty( cone, "EhrhartSeries" ) );
31
+ InstallGlobalFunction( NmzEmbeddingDimension, cone -> NmzConeProperty( cone, "EmbeddingDim" ) );
32
+ InstallGlobalFunction( NmzEquations, cone -> NmzConeProperty( cone, "Equations" ) );
33
+ InstallGlobalFunction( NmzEuclideanAutomorphisms, cone -> NmzConeProperty( cone, "EuclideanAutomorphisms" ) );
34
+ InstallGlobalFunction( NmzEuclideanIntegral, cone -> NmzConeProperty( cone, "EuclideanIntegral" ) );
35
+ InstallGlobalFunction( NmzEuclideanVolume, cone -> NmzConeProperty( cone, "EuclideanVolume" ) );
36
+ InstallGlobalFunction( NmzExcludedFaces, cone -> NmzConeProperty( cone, "ExcludedFaces" ) );
37
+ InstallGlobalFunction( NmzExploitAutomsVectors, cone -> NmzConeProperty( cone, "ExploitAutomsVectors" ) );
38
+ InstallGlobalFunction( NmzExploitIsosMult, cone -> NmzConeProperty( cone, "ExploitIsosMult" ) );
39
+ InstallGlobalFunction( NmzExternalIndex, cone -> NmzConeProperty( cone, "ExternalIndex" ) );
40
+ InstallGlobalFunction( NmzExtremeRays, cone -> NmzConeProperty( cone, "ExtremeRays" ) );
41
+ InstallGlobalFunction( NmzExtremeRaysFloat, cone -> NmzConeProperty( cone, "ExtremeRaysFloat" ) );
42
+ InstallGlobalFunction( NmzFVector, cone -> NmzConeProperty( cone, "FVector" ) );
43
+ InstallGlobalFunction( NmzFaceLattice, cone -> NmzConeProperty( cone, "FaceLattice" ) );
44
+ InstallGlobalFunction( NmzFixedPrecision, cone -> NmzConeProperty( cone, "FixedPrecision" ) );
45
+ InstallGlobalFunction( NmzFullConeDynamic, cone -> NmzConeProperty( cone, "FullConeDynamic" ) );
46
+ InstallGlobalFunction( NmzGeneratorOfInterior, cone -> NmzConeProperty( cone, "GeneratorOfInterior" ) );
47
+ InstallGlobalFunction( NmzGenerators, cone -> NmzConeProperty( cone, "Generators" ) );
48
+ InstallGlobalFunction( NmzGrading, cone -> NmzConeProperty( cone, "Grading" ) );
49
+ InstallGlobalFunction( NmzGradingDenom, cone -> NmzConeProperty( cone, "GradingDenom" ) );
50
+ InstallGlobalFunction( NmzGradingIsPositive, cone -> NmzConeProperty( cone, "GradingIsPositive" ) );
51
+ InstallGlobalFunction( NmzHSOP, cone -> NmzConeProperty( cone, "HSOP" ) );
52
+ InstallGlobalFunction( NmzHilbertBasis, cone -> NmzConeProperty( cone, "HilbertBasis" ) );
53
+ InstallGlobalFunction( NmzHilbertQuasiPolynomial, cone -> NmzConeProperty( cone, "HilbertQuasiPolynomial" ) );
54
+ InstallGlobalFunction( NmzHilbertSeries, cone -> NmzConeProperty( cone, "HilbertSeries" ) );
55
+ InstallGlobalFunction( NmzIncidence, cone -> NmzConeProperty( cone, "Incidence" ) );
56
+ InstallGlobalFunction( NmzInclusionExclusionData, cone -> NmzConeProperty( cone, "InclusionExclusionData" ) );
57
+ InstallGlobalFunction( NmzInputAutomorphisms, cone -> NmzConeProperty( cone, "InputAutomorphisms" ) );
58
+ InstallGlobalFunction( NmzIntegerHull, cone -> NmzConeProperty( cone, "IntegerHull" ) );
59
+ InstallGlobalFunction( NmzIntegral, cone -> NmzConeProperty( cone, "Integral" ) );
60
+ InstallGlobalFunction( NmzInternalIndex, cone -> NmzConeProperty( cone, "InternalIndex" ) );
61
+ InstallGlobalFunction( NmzIsDeg1ExtremeRays, cone -> NmzConeProperty( cone, "IsDeg1ExtremeRays" ) );
62
+ InstallGlobalFunction( NmzIsDeg1HilbertBasis, cone -> NmzConeProperty( cone, "IsDeg1HilbertBasis" ) );
63
+ InstallGlobalFunction( NmzIsEmptySemiOpen, cone -> NmzConeProperty( cone, "IsEmptySemiOpen" ) );
64
+ InstallGlobalFunction( NmzIsGorenstein, cone -> NmzConeProperty( cone, "IsGorenstein" ) );
65
+ InstallGlobalFunction( NmzIsInhomogeneous, cone -> NmzConeProperty( cone, "IsInhomogeneous" ) );
66
+ InstallGlobalFunction( NmzIsIntegrallyClosed, cone -> NmzConeProperty( cone, "IsIntegrallyClosed" ) );
67
+ InstallGlobalFunction( NmzIsPointed, cone -> NmzConeProperty( cone, "IsPointed" ) );
68
+ InstallGlobalFunction( NmzIsReesPrimary, cone -> NmzConeProperty( cone, "IsReesPrimary" ) );
69
+ InstallGlobalFunction( NmzIsTriangulationNested, cone -> NmzConeProperty( cone, "IsTriangulationNested" ) );
70
+ InstallGlobalFunction( NmzIsTriangulationPartial, cone -> NmzConeProperty( cone, "IsTriangulationPartial" ) );
71
+ InstallGlobalFunction( NmzKeepOrder, cone -> NmzConeProperty( cone, "KeepOrder" ) );
72
+ InstallGlobalFunction( NmzLatticePointTriangulation, cone -> NmzConeProperty( cone, "LatticePointTriangulation" ) );
73
+ InstallGlobalFunction( NmzLatticePoints, cone -> NmzConeProperty( cone, "LatticePoints" ) );
74
+ InstallGlobalFunction( NmzMaximalSubspace, cone -> NmzConeProperty( cone, "MaximalSubspace" ) );
75
+ InstallGlobalFunction( NmzModuleGenerators, cone -> NmzConeProperty( cone, "ModuleGenerators" ) );
76
+ InstallGlobalFunction( NmzModuleGeneratorsOverOriginalMonoid, cone -> NmzConeProperty( cone, "ModuleGeneratorsOverOriginalMonoid" ) );
77
+ InstallGlobalFunction( NmzModuleRank, cone -> NmzConeProperty( cone, "ModuleRank" ) );
78
+ InstallGlobalFunction( NmzMultiplicity, cone -> NmzConeProperty( cone, "Multiplicity" ) );
79
+ InstallGlobalFunction( NmzNoBottomDec, cone -> NmzConeProperty( cone, "NoBottomDec" ) );
80
+ InstallGlobalFunction( NmzNoDescent, cone -> NmzConeProperty( cone, "NoDescent" ) );
81
+ InstallGlobalFunction( NmzNoGradingDenom, cone -> NmzConeProperty( cone, "NoGradingDenom" ) );
82
+ InstallGlobalFunction( NmzNoLLL, cone -> NmzConeProperty( cone, "NoLLL" ) );
83
+ InstallGlobalFunction( NmzNoNestedTri, cone -> NmzConeProperty( cone, "NoNestedTri" ) );
84
+ InstallGlobalFunction( NmzNoPeriodBound, cone -> NmzConeProperty( cone, "NoPeriodBound" ) );
85
+ InstallGlobalFunction( NmzNoProjection, cone -> NmzConeProperty( cone, "NoProjection" ) );
86
+ InstallGlobalFunction( NmzNoRelax, cone -> NmzConeProperty( cone, "NoRelax" ) );
87
+ InstallGlobalFunction( NmzNoSignedDec, cone -> NmzConeProperty( cone, "NoSignedDec" ) );
88
+ InstallGlobalFunction( NmzNoSubdivision, cone -> NmzConeProperty( cone, "NoSubdivision" ) );
89
+ InstallGlobalFunction( NmzNoSymmetrization, cone -> NmzConeProperty( cone, "NoSymmetrization" ) );
90
+ InstallGlobalFunction( NmzNumberLatticePoints, cone -> NmzConeProperty( cone, "NumberLatticePoints" ) );
91
+ InstallGlobalFunction( NmzOriginalMonoidGenerators, cone -> NmzConeProperty( cone, "OriginalMonoidGenerators" ) );
92
+ InstallGlobalFunction( NmzPlacingTriangulation, cone -> NmzConeProperty( cone, "PlacingTriangulation" ) );
93
+ InstallGlobalFunction( NmzPrimalMode, cone -> NmzConeProperty( cone, "PrimalMode" ) );
94
+ InstallGlobalFunction( NmzProjectCone, cone -> NmzConeProperty( cone, "ProjectCone" ) );
95
+ InstallGlobalFunction( NmzProjection, cone -> NmzConeProperty( cone, "Projection" ) );
96
+ InstallGlobalFunction( NmzProjectionFloat, cone -> NmzConeProperty( cone, "ProjectionFloat" ) );
97
+ InstallGlobalFunction( NmzPullingTriangulation, cone -> NmzConeProperty( cone, "PullingTriangulation" ) );
98
+ InstallGlobalFunction( NmzPullingTriangulationInternal, cone -> NmzConeProperty( cone, "PullingTriangulationInternal" ) );
99
+ InstallGlobalFunction( NmzRank, cone -> NmzConeProperty( cone, "Rank" ) );
100
+ InstallGlobalFunction( NmzRationalAutomorphisms, cone -> NmzConeProperty( cone, "RationalAutomorphisms" ) );
101
+ InstallGlobalFunction( NmzRecessionRank, cone -> NmzConeProperty( cone, "RecessionRank" ) );
102
+ InstallGlobalFunction( NmzReesPrimaryMultiplicity, cone -> NmzConeProperty( cone, "ReesPrimaryMultiplicity" ) );
103
+ InstallGlobalFunction( NmzRenfVolume, cone -> NmzConeProperty( cone, "RenfVolume" ) );
104
+ InstallGlobalFunction( NmzSignedDec, cone -> NmzConeProperty( cone, "SignedDec" ) );
105
+ InstallGlobalFunction( NmzStanleyDec, cone -> NmzConeProperty( cone, "StanleyDec" ) );
106
+ InstallGlobalFunction( NmzStatic, cone -> NmzConeProperty( cone, "Static" ) );
107
+ InstallGlobalFunction( NmzStrictIsoTypeCheck, cone -> NmzConeProperty( cone, "StrictIsoTypeCheck" ) );
108
+ InstallGlobalFunction( NmzSublattice, cone -> NmzConeProperty( cone, "Sublattice" ) );
109
+ InstallGlobalFunction( NmzSuppHypsFloat, cone -> NmzConeProperty( cone, "SuppHypsFloat" ) );
110
+ InstallGlobalFunction( NmzSupportHyperplanes, cone -> NmzConeProperty( cone, "SupportHyperplanes" ) );
111
+ InstallGlobalFunction( NmzSymmetrize, cone -> NmzConeProperty( cone, "Symmetrize" ) );
112
+ InstallGlobalFunction( NmzTestArithOverflowDescent, cone -> NmzConeProperty( cone, "TestArithOverflowDescent" ) );
113
+ InstallGlobalFunction( NmzTestArithOverflowDualMode, cone -> NmzConeProperty( cone, "TestArithOverflowDualMode" ) );
114
+ InstallGlobalFunction( NmzTestArithOverflowFullCone, cone -> NmzConeProperty( cone, "TestArithOverflowFullCone" ) );
115
+ InstallGlobalFunction( NmzTestArithOverflowProjAndLift, cone -> NmzConeProperty( cone, "TestArithOverflowProjAndLift" ) );
116
+ InstallGlobalFunction( NmzTestLargePyramids, cone -> NmzConeProperty( cone, "TestLargePyramids" ) );
117
+ InstallGlobalFunction( NmzTestLibNormaliz, cone -> NmzConeProperty( cone, "TestLibNormaliz" ) );
118
+ InstallGlobalFunction( NmzTestLinearAlgebraGMP, cone -> NmzConeProperty( cone, "TestLinearAlgebraGMP" ) );
119
+ InstallGlobalFunction( NmzTestSimplexParallel, cone -> NmzConeProperty( cone, "TestSimplexParallel" ) );
120
+ InstallGlobalFunction( NmzTestSmallPyramids, cone -> NmzConeProperty( cone, "TestSmallPyramids" ) );
121
+ InstallGlobalFunction( NmzTriangulation, cone -> NmzConeProperty( cone, "Triangulation" ) );
122
+ InstallGlobalFunction( NmzTriangulationDetSum, cone -> NmzConeProperty( cone, "TriangulationDetSum" ) );
123
+ InstallGlobalFunction( NmzTriangulationSize, cone -> NmzConeProperty( cone, "TriangulationSize" ) );
124
+ InstallGlobalFunction( NmzUnimodularTriangulation, cone -> NmzConeProperty( cone, "UnimodularTriangulation" ) );
125
+ InstallGlobalFunction( NmzUnitGroupIndex, cone -> NmzConeProperty( cone, "UnitGroupIndex" ) );
126
+ InstallGlobalFunction( NmzVerticesFloat, cone -> NmzConeProperty( cone, "VerticesFloat" ) );
127
+ InstallGlobalFunction( NmzVerticesOfPolyhedron, cone -> NmzConeProperty( cone, "VerticesOfPolyhedron" ) );
128
+ InstallGlobalFunction( NmzVirtualMultiplicity, cone -> NmzConeProperty( cone, "VirtualMultiplicity" ) );
129
+ InstallGlobalFunction( NmzVolume, cone -> NmzConeProperty( cone, "Volume" ) );
130
+ InstallGlobalFunction( NmzWeightedEhrhartQuasiPolynomial, cone -> NmzConeProperty( cone, "WeightedEhrhartQuasiPolynomial" ) );
131
+ InstallGlobalFunction( NmzWeightedEhrhartSeries, cone -> NmzConeProperty( cone, "WeightedEhrhartSeries" ) );
132
+ InstallGlobalFunction( NmzWitnessNotIntegrallyClosed, cone -> NmzConeProperty( cone, "WitnessNotIntegrallyClosed" ) );
@@ -0,0 +1,130 @@
1
+ #! @Chapter Functions
2
+ #! @Section YOU FORGOT TO SET A SECTION
3
+
4
+ NormalizObjectFamily := NewFamily( "NormalizObjectFamily" );
5
+
6
+ DeclareCategory( "IsNormalizCone", IsObject );
7
+
8
+ BindGlobal("TheTypeNormalizCone", NewType( NormalizObjectFamily, IsNormalizCone ));
9
+
10
+
11
+ #
12
+ #! @Section Use a NmzCone
13
+ #
14
+
15
+ #! @Section Use a NmzCone
16
+ #! @Arguments cone[, propnames]
17
+ #! @Returns a boolean indicating success
18
+ #! @Description
19
+ #! Start computing properties of the given cone.
20
+ #! The first parameter indicates a cone object, the second parameter
21
+ #! is either a single string, or a list of strings, which indicate
22
+ #! what should be computed.
23
+ #! <P/>
24
+ #!
25
+ #! The single parameter version is equivalent to
26
+ #! <C>NmzCone(cone, ["DefaultMode"])</C>.
27
+ #! See <Ref Func="NmzConeProperty"/> for a list of recognized properties.
28
+ #! @InsertChunk NmzCompute_example
29
+ DeclareGlobalFunction( "NmzCompute" );
30
+
31
+ #! @Arguments cone, property
32
+ #! @Returns the result of the computation, type depends on the property
33
+ #! @Description
34
+ #! Triggers the computation of the property of the cone and returns the result.
35
+ #! If the property was already known, it is not recomputed.
36
+ #! Currently the following strings are recognized as properties:
37
+ #! <List>
38
+ #! <Item><C>Generators</C> see <Ref Func="NmzGenerators"/>,</Item>
39
+ #! <Item><C>ExtremeRays</C> see <Ref Func="NmzExtremeRays"/>,</Item>
40
+ #! <Item><C>VerticesOfPolyhedron</C> see <Ref Func="NmzVerticesOfPolyhedron"/>,</Item>
41
+ #! <Item><C>SupportHyperplanes</C> see <Ref Func="NmzSupportHyperplanes"/>,</Item>
42
+ #! <Item><C>TriangulationSize</C> see <Ref Func="NmzTriangulationSize"/>,</Item>
43
+ #! <Item><C>TriangulationDetSum</C> see <Ref Func="NmzTriangulationDetSum"/>,</Item>
44
+ #! <Item><C>Triangulation</C> see <Ref Func="NmzTriangulation"/>,</Item>
45
+ #! <Item><C>Multiplicity</C> see <Ref Func="NmzMultiplicity"/>,</Item>
46
+ #! <Item><C>RecessionRank</C> see <Ref Func="NmzRecessionRank"/>,</Item>
47
+ #! <Item><C>AffineDim</C> see <Ref Func="NmzAffineDim"/>,</Item>
48
+ #! <Item><C>ModuleRank</C> see <Ref Func="NmzModuleRank"/>,</Item>
49
+ #! <Item><C>HilbertBasis</C> see <Ref Func="NmzHilbertBasis"/>,</Item>
50
+ #! <Item><C>ModuleGenerators</C> see <Ref Func="NmzModuleGenerators"/>,</Item>
51
+ #! <Item><C>Deg1Elements</C> see <Ref Func="NmzDeg1Elements"/>,</Item>
52
+ #! <Item><C>HilbertSeries</C> see <Ref Func="NmzHilbertSeries"/>,</Item>
53
+ #! <Item><C>HilbertQuasiPolynomial</C> see <Ref Func="NmzHilbertQuasiPolynomial"/>,</Item>
54
+ #! <Item><C>Grading</C> see <Ref Func="NmzGrading"/>,</Item>
55
+ #! <Item><C>IsPointed</C> see <Ref Func="NmzIsPointed"/>,</Item>
56
+ #! <Item><C>IsDeg1ExtremeRays</C> see <Ref Func="NmzIsDeg1ExtremeRays"/>,</Item>
57
+ #! <Item><C>IsDeg1HilbertBasis</C> see <Ref Func="NmzIsDeg1HilbertBasis"/>,</Item>
58
+ #! <Item><C>IsIntegrallyClosed</C> see <Ref Func="NmzIsIntegrallyClosed"/>,</Item>
59
+ #! <Item><C>OriginalMonoidGenerators</C> see <Ref Func="NmzOriginalMonoidGenerators"/>,</Item>
60
+ #! <Item><C>IsReesPrimary</C> see <Ref Func="NmzIsReesPrimary"/>,</Item>
61
+ #! <Item><C>ReesPrimaryMultiplicity</C> see <Ref Func="NmzReesPrimaryMultiplicity"/>,</Item>
62
+ #! <Item><C>ExcludedFaces</C> see <Ref Func="NmzExcludedFaces"/>,</Item>
63
+ #! <Item><C>Dehomogenization</C> see <Ref Func="NmzDehomogenization"/>,</Item>
64
+ #! <Item><C>InclusionExclusionData</C> see <Ref Func="NmzInclusionExclusionData"/>,</Item>
65
+ #! <Item><C>ClassGroup</C> see <Ref Func="NmzClassGroup"/>,</Item>
66
+ #! <Item><C>ModuleGeneratorsOverOriginalMonoid</C> see <Ref Func="NmzModuleGeneratorsOverOriginalMonoid"/>,</Item>
67
+ #! <Item><C>Sublattice</C> computes the efficient sublattice and returns a bool signaling
68
+ #! whether the computation was successful. Actual data connected to
69
+ #! it can be accessed by <Ref Func="NmzRank"/>, <Ref Func="NmzEquations"/>,
70
+ #! <Ref Func="NmzCongruences"/>, and <Ref Func="NmzBasisChange"/>.</Item>
71
+ #! </List>
72
+ #!
73
+ #! Additionally also the following compute options are accepted as property. They modify what and how should be computed, and return True after a successful computation.
74
+ #! <List>
75
+ #! <Item><C>Approximate</C> approximate the rational polytope by an integral polytope, currently only useful in combination with <C>Deg1Elements</C>.</Item>
76
+ #! <Item><C>BottomDecomposition</C> use the best possible triangulation (with respect to the sum of determinants) using the given generators.</Item>
77
+ #! <Item><C>DefaultMode</C> try to compute what is possible and do not throw an exception when something cannot be computed.</Item>
78
+ #! <Item><C>DualMode</C>activates the dual algorithm for the computation of the Hilbert basis and degree
79
+ #! 1 elements. Includes <C>HilbertBasis</C>, unless <C>Deg1Elements</C> is set. Often a good choice if you start from constraints.</Item>
80
+ #! <Item><C>KeepOrder</C> forbids to reorder the generators. Blocks <C>BottomDecomposition</C>.</Item>
81
+ #! </List>
82
+ #!
83
+ #! All the properties above can be given to <Ref Func="NmzCompute"/>. There you can
84
+ #! combine different properties, e.g. give some properties that you would like to know and add some compute options.
85
+ #! <P/>
86
+ #! See the Normaliz manual for a detailed description.
87
+ #!
88
+ DeclareGlobalFunction( "NmzConeProperty" );
89
+
90
+ #! @Arguments cone
91
+ #! @Description
92
+ #! Print an overview of all known properties of the given cone,
93
+ #! as well as their values.
94
+ DeclareGlobalFunction( "NmzPrintConeProperties" );
95
+
96
+ #
97
+ #! @Section Cone properties
98
+ #
99
+
100
+ #! @Arguments cone
101
+ #! @Returns a record describing the basis change
102
+ #! @Description
103
+ #! The result record <C>r</C> has three components:
104
+ #! <C>r.Embedding</C>, <C>r.Projection</C>, and <C>r.Annihilator</C>,
105
+ #! where the embedding <C>A</C> and the projection <C>B</C>
106
+ #! are matrices, and the annihilator <C>c</C> is an integer.
107
+ #! They represent the mapping into the effective lattice
108
+ #! <M>\mathbb{Z}^n \to \mathbb{Z}^r, u \mapsto (uB)/c</M>
109
+ #! and the inverse operation
110
+ #! <M>\mathbb{Z}^r \to \mathbb{Z}^n, v \mapsto vA</M>.
111
+ #! <P/>
112
+ #! This is part of the cone property <Q>Sublattice</Q>.
113
+ DeclareGlobalFunction( "NmzBasisChange" );
114
+
115
+
116
+ #! @Section Create a NmzCone
117
+ #! @Arguments list
118
+ #! @Returns NmzCone
119
+ #! @Description
120
+ #! Creates a NmzCone. The <A>list</A> argument should contain an even number of
121
+ #! elements, alternating between a string and a integer matrix. The string has to
122
+ #! correspond to a Normaliz input type string and the following matrix will be
123
+ #! interpreted as input of that type.
124
+ #!
125
+ #! See the Normaliz manual for the Normaliz version loaded by your version
126
+ #! of NormalizInterface for a detailed description of which input type strings
127
+ #! are supported and what arguments they take.
128
+ #!
129
+ #! @InsertChunk NmzCone_example
130
+ DeclareGlobalFunction( "NmzCone" );
@@ -0,0 +1,153 @@
1
+ ##
2
+ InstallMethod( ViewString,
3
+ "for a Normaliz cone",
4
+ [ IsNormalizCone ],
5
+ function( r )
6
+ # TODO: May print more information when present
7
+ return "<a Normaliz cone>";
8
+ end );
9
+
10
+ BindGlobal("_NmzRecordOfConeProperties", _NmzConePropertiesNamesRecord());
11
+
12
+ InstallGlobalFunction("NmzConeProperty",
13
+ function(cone, prop)
14
+ local result, t, poly, tmp, denom;
15
+ result := _NmzConeProperty(cone, prop);
16
+ if prop = _NmzRecordOfConeProperties.Grading or prop = "Grading" then
17
+ denom := NmzConeProperty(cone, _NmzRecordOfConeProperties.GradingDenom);;
18
+ return result / denom;
19
+ fi;
20
+ if prop = _NmzRecordOfConeProperties.HilbertSeries or prop = "HilbertSeries" then
21
+ t := Indeterminate(Integers, "t");
22
+ poly := UnivariatePolynomial(Integers, result[1], t);
23
+ poly := poly * t^result[3];
24
+ tmp := Collected(result[2]);
25
+ return [poly, tmp];
26
+ fi;
27
+ if prop = _NmzRecordOfConeProperties.HilbertQuasiPolynomial or prop = "HilbertQuasiPolynomial" then
28
+ t := Indeterminate(Rationals, "t");
29
+ denom := Remove(result);
30
+ poly := List(result, coeffs -> UnivariatePolynomial(Rationals, coeffs, t));
31
+ return poly / denom;
32
+ fi;
33
+ return result;
34
+ end);
35
+
36
+ InstallGlobalFunction("NmzPrintConeProperties",
37
+ function(cone)
38
+ local prop, val;
39
+ if not IsNormalizCone(cone) then
40
+ Error("First argument must be a Normaliz cone object");
41
+ return;
42
+ fi;
43
+ for prop in NmzKnownConeProperties(cone) do
44
+ val := NmzConeProperty(cone, prop);
45
+ Print(prop," = ");
46
+ if IsMatrix(val) then
47
+ Print("\n");
48
+ fi;
49
+ Display(val);
50
+ od;
51
+ end);
52
+
53
+ BindGlobal("_NmzPrintSomeConeProperties",
54
+ function(cone, excluded)
55
+ local prop, val;
56
+ if not IsNormalizCone(cone) then
57
+ Error("First argument must be a Normaliz cone object");
58
+ return;
59
+ fi;
60
+ excluded := Union(excluded, [ "ExplicitHilbertSeries", "Triangulation" ]);
61
+ # iterate over properties in alphabetical order, to reduce
62
+ # fluctuations between Normaliz versions
63
+ for prop in NmzKnownConeProperties(cone) do
64
+ if prop in excluded then
65
+ continue;
66
+ fi;
67
+ val := NmzConeProperty(cone, prop);
68
+ Print(prop," = ");
69
+ if IsMatrix(val) then
70
+ Print("\n");
71
+ fi;
72
+ Display(val);
73
+ od;
74
+ end);
75
+
76
+ InstallGlobalFunction("NmzBasisChange",
77
+ function(cone)
78
+ local result;
79
+ result := NmzConeProperty( cone, "Sublattice" );
80
+ return rec(
81
+ Embedding := result[1],
82
+ Projection := result[2],
83
+ Annihilator := result[3],
84
+ );
85
+ end);
86
+
87
+
88
+ #
89
+ #
90
+ #
91
+ InstallGlobalFunction("NmzCone",
92
+ function(arg)
93
+ local func, opts_rec, opts_list, cone;
94
+ if Length(arg) = 1 then
95
+ if IsList(arg[1]) then
96
+ opts_list := arg[1];
97
+ elif IsRecord(arg[1]) then
98
+ opts_list := [];
99
+ for opts_rec in RecNames(arg[1]) do
100
+ Add(opts_list, opts_rec);
101
+ Add(opts_list, arg[1].(opts_rec));
102
+ od;
103
+ else
104
+ # TODO: better error message
105
+ Error("Unsupported input");
106
+ fi;
107
+ else
108
+ opts_list := arg;
109
+ fi;
110
+
111
+ cone := _NmzCone(opts_list);
112
+ return cone;
113
+ end);
114
+
115
+ # TODO: extend NmzCone to allow this syntax:
116
+ ##cone := NmzCone(rec(integral_closure := M, grading := [ 0, 0, 1 ]));;
117
+
118
+
119
+
120
+ #
121
+ #
122
+ #
123
+ InstallGlobalFunction("NmzCompute",
124
+ function(arg)
125
+ local cone, propsToCompute;
126
+ if not Length(arg) in [1,2] then
127
+ Error("Wrong number of arguments, expected 1 or 2");
128
+ return fail;
129
+ fi;
130
+ cone := arg[1];
131
+ if not IsNormalizCone(cone) then
132
+ Error("First argument must be a Normaliz cone object");
133
+ return fail;
134
+ fi;
135
+ if Length(arg) = 1 then
136
+ propsToCompute := [];
137
+ if ValueOption("dual") = true then Add(propsToCompute, "DualMode"); fi;
138
+ if ValueOption("DualMode") = true then Add(propsToCompute, "DualMode"); fi;
139
+ if ValueOption("HilbertBasis") = true then Add(propsToCompute, "HilbertBasis"); fi;
140
+ # TODO: add more option names? or just support arbitrary ones, by using
141
+ # iterating over the (undocumented!) OptionsStack???
142
+ if Length(propsToCompute) = 0 then
143
+ propsToCompute := [ "DefaultMode" ];
144
+ fi;
145
+ else
146
+ if IsString(arg[2]) then
147
+ propsToCompute := [arg[2]];
148
+ else
149
+ propsToCompute := arg[2];
150
+ fi;
151
+ fi;
152
+ return _NmzCompute(cone, propsToCompute);
153
+ end);
@@ -0,0 +1,13 @@
1
+ #
2
+ # Generate the manual using AutoDoc
3
+ #
4
+ if fail = LoadPackage("AutoDoc", ">= 2019.04.10") then
5
+ Error("AutoDoc 2019.04.10 or newer is required");
6
+ fi;
7
+
8
+ AutoDoc(rec(
9
+ extract_examples := true,
10
+ scaffold := rec( bib := "NormalizInterface-bib.xml" ),
11
+ autodoc := rec( files := [ "doc/intro.autodoc", "src/normaliz.cc" ] ),
12
+ ));
13
+ QUIT;
@@ -0,0 +1,3 @@
1
+ ReadPackage("NormalizInterface", "lib/normaliz.gi");
2
+
3
+ ReadPackage("NormalizInterface", "lib/cone_property_wrappers.gi" );
@@ -0,0 +1,20 @@
1
+ gap> START_TEST("InhomIneq.tst");
2
+
3
+ #
4
+ # Test a Hilbert series with negative shift
5
+ #
6
+ gap> M := [
7
+ > [0, 2, 1],
8
+ > [0, -2, 3],
9
+ > [2, -2, 3]
10
+ > ];
11
+ [ [ 0, 2, 1 ], [ 0, -2, 3 ], [ 2, -2, 3 ] ]
12
+ gap> InhomIneq := NmzCone(["inhom_inequalities", M, "grading", [[1,0]] ]);
13
+ <a Normaliz cone>
14
+ gap> NmzHilbertSeries(InhomIneq);
15
+ [ 1+t^-1, [ [ 1, 1 ] ] ]
16
+ gap> NmzHilbertQuasiPolynomial(InhomIneq);
17
+ [ 2 ]
18
+
19
+ #
20
+ gap> STOP_TEST("InhomIneq.tst", 0);
@@ -0,0 +1,37 @@
1
+ gap> START_TEST("bugfix.tst");
2
+
3
+ #
4
+ # We used to incorrectly convert integer value "0" (zero) from type mpz_t
5
+ # to GAP integers, leading to bogus outputs in e.g. the following example.
6
+ # Fixed by adding a special case for zero to MpzToGAP.
7
+ #
8
+ gap> C := NmzCone(["integral_closure",[[1,2],[3,1]],"grading",[[1,1]]]);
9
+ <a Normaliz cone>
10
+ gap> _NmzConeProperty(C,"HilbertSeries");
11
+ [ [ 1, -1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1 ], [ 1, 12 ], 0 ]
12
+ gap> NmzHilbertSeries(C);
13
+ [ t^11+t^8+t^6+t^3+t^2-t+1, [ [ 1, 1 ], [ 12, 1 ] ] ]
14
+
15
+ #
16
+ # The following returns a bad result with Normaliz 3.4.0.
17
+ # See https://github.com/gap-packages/NormalizInterface/issues/58
18
+ #
19
+ gap> C := NmzCone( "integral_closure", [ [0,0,1], [0,2,1], [1,0,1], [1,1,1] ] );;
20
+ gap> NmzDeg1Elements(C);
21
+ [ [ 0, 0, 1 ], [ 0, 1, 1 ], [ 0, 2, 1 ], [ 1, 0, 1 ], [ 1, 1, 1 ] ]
22
+
23
+ #
24
+ # The following produces a segfault with Normaliz 3.4.0 and 3.5.1, but
25
+ # seems to work fine with 3.5.4 and newer.
26
+ # See https://github.com/gap-packages/NormalizInterface/issues/61
27
+ #
28
+ gap> L := [ [ -1, -1, 0, 0, 0, 0 ], [ -1, 0, 0, 0, 0, 0 ], [ 0, 0, -1, -1, -1, 0 ],
29
+ > [ 0, 0, -1, 0, 0, 0 ], [ 0, 0, 0, -1, 0, 0 ], [ 1, 1, 0, 0, 0, 0 ],
30
+ > [ 1, 0, 0, 0, 0, 0 ], [ 0, 0, 1, 1, 1, 0 ], [ 0, 0, 1, 0, 0, 0 ],
31
+ > [ 0, 0, 0, 1, 0, 0 ] ];;
32
+ gap> C := NmzCone( "inhom_inequalities", L );;
33
+ gap> NmzModuleGenerators(C);
34
+ [ [ 0, 0, 0, 0, 0, 1 ] ]
35
+
36
+ #
37
+ gap> STOP_TEST("bugfix.tst", 0);
@@ -0,0 +1,87 @@
1
+ gap> START_TEST("conversion.tst");
2
+
3
+ ## Check the multiplicity for some powers of 2:
4
+ gap> n := 28;; 2^n = NmzMultiplicity( NmzCone("polytope", 2 * IdentityMat(n+1)) );
5
+ true
6
+ gap> n := 31;; 2^n = NmzMultiplicity( NmzCone("polytope", 2 * IdentityMat(n+1)) );
7
+ true
8
+ gap> n := 32;; 2^n = NmzMultiplicity( NmzCone("polytope", 2 * IdentityMat(n+1)) );
9
+ true
10
+ gap> n := 33;; 2^n = NmzMultiplicity( NmzCone("polytope", 2 * IdentityMat(n+1)) );
11
+ true
12
+ gap> n := 60;; 2^n = NmzMultiplicity( NmzCone("polytope", 2 * IdentityMat(n+1)) );
13
+ true
14
+ gap> n := 63;; 2^n = NmzMultiplicity( NmzCone("polytope", 2 * IdentityMat(n+1)) );
15
+ true
16
+ gap> n := 64;; 2^n = NmzMultiplicity( NmzCone("polytope", 2 * IdentityMat(n+1)) );
17
+ true
18
+ gap> n := 65;; 2^n = NmzMultiplicity( NmzCone("polytope", 2 * IdentityMat(n+1)) );
19
+ true
20
+
21
+ ## Check conversion for a matrix which entries contain
22
+ ## e*2^n + d, where e is 1 or -1, d is -1, 0, 1, and n is, say, 28, 31,32, 60, 63, 64
23
+ gap> start := 25;;
24
+ gap> n := 40;; ## should be divisible by 4
25
+ gap> M := NullMat(n,2*n);;
26
+ gap>
27
+ gap> for i in [1 .. n] do
28
+ > M[i][n-i+1] := 1; # antidiagonal element
29
+ > entry := 2^(start+i) - n/4;
30
+ > for j in [n+1 .. 2*n] do
31
+ > M[i][j] := entry;
32
+ > if j mod 2 <> 0 then
33
+ > entry := -entry;
34
+ > else
35
+ > entry := -entry + 1;
36
+ > fi;
37
+ > od;
38
+ > od;
39
+ gap>
40
+ gap> C := NmzCone("cone", M);
41
+ <a Normaliz cone>
42
+ gap> NmzMultiplicity(C);
43
+ 1
44
+ gap> rays := NmzExtremeRays(C);;
45
+
46
+ #
47
+ gap> i := 1;;
48
+ gap> Print(i+start," ", M[i] = rays[i], "\n"); i := i + 1;;
49
+ 26 true
50
+ gap> Print(i+start," ", M[i] = rays[i], "\n"); i := i + 1;;
51
+ 27 true
52
+ gap> Print(i+start," ", M[i] = rays[i], "\n"); i := i + 1;;
53
+ 28 true
54
+ gap> Print(i+start," ", M[i] = rays[i], "\n"); i := i + 1;;
55
+ 29 true
56
+ gap> Print(i+start," ", M[i] = rays[i], "\n"); i := i + 1;;
57
+ 30 true
58
+ gap> Print(i+start," ", M[i] = rays[i], "\n"); i := i + 1;;
59
+ 31 true
60
+ gap> Print(i+start," ", M[i] = rays[i], "\n"); i := i + 1;;
61
+ 32 true
62
+ gap> Print(i+start," ", M[i] = rays[i], "\n"); i := i + 1;;
63
+ 33 true
64
+ gap> Print(i+start," ", M[i] = rays[i], "\n"); i := i + 1;;
65
+ 34 true
66
+
67
+ #
68
+ gap> i := 58 - start;;
69
+ gap> Print(i+start," ", M[i] = rays[i], "\n"); i := i + 1;;
70
+ 58 true
71
+ gap> Print(i+start," ", M[i] = rays[i], "\n"); i := i + 1;;
72
+ 59 true
73
+ gap> Print(i+start," ", M[i] = rays[i], "\n"); i := i + 1;;
74
+ 60 true
75
+ gap> Print(i+start," ", M[i] = rays[i], "\n"); i := i + 1;;
76
+ 61 true
77
+ gap> Print(i+start," ", M[i] = rays[i], "\n"); i := i + 1;;
78
+ 62 true
79
+ gap> Print(i+start," ", M[i] = rays[i], "\n"); i := i + 1;;
80
+ 63 true
81
+ gap> Print(i+start," ", M[i] = rays[i], "\n"); i := i + 1;;
82
+ 64 true
83
+ gap> Print(i+start," ", M[i] = rays[i], "\n"); i := i + 1;;
84
+ 65 true
85
+
86
+ #
87
+ gap> STOP_TEST("conversion.tst", 0);
@@ -0,0 +1,62 @@
1
+ #
2
+ gap> START_TEST("cube-incidence.tst");
3
+
4
+ # enter cube inequalities (TODO: make this more convenient)
5
+ gap> d:=5;;
6
+ gap> cube:=function(d)
7
+ > local M;
8
+ > M:=NullMat(2*d,d+1);;
9
+ > M{[1..d]}{[1..d]}:=IdentityMat(d);;
10
+ > M{[1..d]+d}{[1..d]}:=-IdentityMat(d);;
11
+ > M{[1..d]+d}[1+d] := ListWithIdenticalEntries(d,1);;
12
+ > return NmzCone(["inhom_inequalities", M]);
13
+ > end;;
14
+ gap> printIncidence:=function(cone)
15
+ > local tmp;
16
+ > tmp := NmzIncidence(cone);
17
+ > tmp := List(tmp,r->List(r,function(x) if x then return '1'; fi; return '0'; end));
18
+ > Display(JoinStringsWithSeparator(tmp, "\n"));
19
+ > end;;
20
+
21
+ #
22
+ gap> cone := cube(5);
23
+ <a Normaliz cone>
24
+ gap> Length(NmzVerticesOfPolyhedron(cone)) = 32;
25
+ true
26
+ gap> NmzVolume(cone);
27
+ 120
28
+ gap> printIncidence(cone);
29
+ 00000000000000001111111111111111
30
+ 00000000111111110000000011111111
31
+ 00001111000011110000111100001111
32
+ 00110011001100110011001100110011
33
+ 01010101010101010101010101010101
34
+ 10101010101010101010101010101010
35
+ 11001100110011001100110011001100
36
+ 11110000111100001111000011110000
37
+ 11111111000000001111111100000000
38
+ 11111111111111110000000000000000
39
+
40
+ #
41
+ gap> cone := cube(6);
42
+ <a Normaliz cone>
43
+ gap> Length(NmzVerticesOfPolyhedron(cone)) = 64;
44
+ true
45
+ gap> NmzVolume(cone);
46
+ 720
47
+ gap> printIncidence(cone);
48
+ 0000000000000000000000000000000011111111111111111111111111111111
49
+ 0000000000000000111111111111111100000000000000001111111111111111
50
+ 0000000011111111000000001111111100000000111111110000000011111111
51
+ 0000111100001111000011110000111100001111000011110000111100001111
52
+ 0011001100110011001100110011001100110011001100110011001100110011
53
+ 0101010101010101010101010101010101010101010101010101010101010101
54
+ 1010101010101010101010101010101010101010101010101010101010101010
55
+ 1100110011001100110011001100110011001100110011001100110011001100
56
+ 1111000011110000111100001111000011110000111100001111000011110000
57
+ 1111111100000000111111110000000011111111000000001111111100000000
58
+ 1111111111111111000000000000000011111111111111110000000000000000
59
+ 1111111111111111111111111111111100000000000000000000000000000000
60
+
61
+ #
62
+ gap> STOP_TEST("cube-incidence.tst", 0);