+ M2 --no-readline --print-width 99
Macaulay2, version 1.9.2
with packages: ConwayPolynomials, Elimination, IntegralClosure, LLLBases, PrimaryDecomposition,
               ReesAlgebra, TangentCone

i1 : loadPackage("MatFacCurvesP4")

o1 = MatFacCurvesP4

o1 : Package

i2 : ------------------------------------------------------------------
     -- Example 4.1                                                  --
     -- List of candidate Betti tables giving rise to matrix    	--
     -- factorizations of shape 15  2	       	       	        --
     --    	      	      	    2 15    	    	    	    	--
     ------------------------------------------------------------------
     --
     p=32009; -- a prime number

i3 : Fp=ZZ/p; -- a prime field

i4 : S=Fp[x_0..x_4];

i5 : beta=betti map(S^{15:0,2:-1,0:-2},S^{2:-1,15:-2,0:-3},0)

             0  1
o5 = total: 17 17
         0: 15  2
         1:  2 15

o5 : BettiTally

i6 : d=3;

i7 : -- The following method produces the list of all tables lying in 
     -- the Boij-Soederberg cone giving rise to a matrix    	        
     -- factorization of the desired shape, assuming that no	       	
     -- cancellation occurs. To speed up computations, the functions
     -- looks for tables with projective dimension at most 4.	      	      	      	      	
     -- The function automatically takes care of the transposed      
     -- shape, as well as of the shape of the syzygy map and its     
     -- transposed.
     -- 
     -- 
     time bCands=candidateTables(beta,d); -- takes 2 sec
     -- used 1.75241 seconds

i8 : -- If we look for Betti tables of modules of projective         
     -- dimension at 5, i.e., modules with the irrelevant ideal
     -- associated, we can run    
     time bCandsIrr=candidateTablesWithIrrelevantIdealAssociated(beta,d); -- takes 28 sec
     -- used 28.318 seconds

i9 : --
     -- It is reasonable to assume that all the cancellations which  
     -- are possible will occur. As a general philosophy, matrix     
     -- factorizations with the maximum number of cancellations      
     -- are expected to be easier to construct. We remark that some  
     -- of the cancellations cannot occur because of the Shamash     
     -- construction.    	       	       	       	       	
     -- Therefore, we can filter the previous list by asking that    
     -- the arising matrix factorization has the fixed shape 15  2   
     --    	      	      	      	      	      	      	 2 15,  
     -- supposing that all the cancellations which are possible do   
     -- occur.    	    
     --	    	    	    	    	    	
     possibleShapes=listOfPossibleMatFac(beta,d);

i10 : bCandsMaxCan=select(bCands,B->(
      arMatFac:=arisingMatFac(B,d);
      any(possibleShapes,s->s==arMatFac)));

i11 : #bCandsMaxCan

o11 = 13

i12 : --
      -- We get a list of 13 candidate Betti tables for which no    	
      -- cancellation is tolerated. We cannot find the Betti table of 
      -- the section module of a general curve of genus 12 and degree 
      -- 14 as, in that specific case, we had one cancellation.       
      --
      -- In the same line of thought, we can look for candidate Betti 
      -- tables whose induced non-minimal matrix factorization has    
      -- shape  1    	       	       	       	       	       	       	
      --       15 2	     	     	     	     	     	     	
      --        2 16	      	 
      --     	      	      	      	      	
      beta'=betti map(S^{1:1,15:0,2:-1,0:-2},S^{2:-1,16:-2,0:-3},0)

              0  1
o12 = total: 18 18
         -1:  1  .
          0: 15  2
          1:  2 16

o12 : BettiTally

i13 : time bCands'=candidateTables(beta',d); -- takes 9 sec
     -- used 9.4321 seconds

i14 : --
      -- and filter them according to the expected minimal matrix     
      -- factorization they may give rise to, which has to coincide   
      -- with 15  2	     	     	     	     	     	     	
      --       2 15
      --	     	     	                                
      bCandsMaxCan'=select(bCands',B->(
      arMatFac:=arisingMatFac(B,d);
      any(possibleShapes,s->s==arMatFac)));

i15 : --
      -- Among them, we find the Betti table of the section module    
      -- of a general curve of genus 12 and degree 14              
      --   
      bCandsMaxCan'_9

             0  1  2 3
o15 = total: 3 14 15 4
          0: 1  .  . .
          1: .  .  . .
          2: 2 14 15 2
          3: .  .  . 2

o15 : BettiTally

i16 : --
      -- Another possibility is to use the shape  .  1                
      --                                         16  2                
      --    	      	      	      	      	    2 15 
      --   	    	
      beta''=betti map(S^{0:1,16:0,2:-1,0:-2},S^{1:-0,2:-1,15:-2},0)

              0  1
o16 = total: 18 18
         -1:  .  1
          0: 16  2
          1:  2 15

o16 : BettiTally

i17 : time bCands''=candidateTables(beta'',d); -- takes 10 sec
     -- used 10.3173 seconds

i18 : bCandsMaxCan''=select(bCands'',B->(
      arMatFac:=arisingMatFac(B,d);
      any(possibleShapes,s->s==arMatFac)));

i19 : --
      -- Among them, we find the Betti table exhibited in Example 4.1
      --
      bCandsMaxCan''_2

             0 1  2  3 4
o19 = total: 1 7 15 11 2
          0: 1 .  .  . .
          1: . .  .  . .
          2: . 5  .  . .
          3: . 2 15 11 2

o19 : BettiTally

i20 :