Returns the Hartshorne-Rao Module over R with Hilbert function HRao and expected betti table. The constructions works only for many modules with diameter {\le} 3.
i1 : setRandomSeed("alpha"); |
i2 : R = ZZ/101[x_0..x_3]; |
i3 : betti res (random hartshorneRaoModule)(0,{1},R) 0 1 2 3 4 o3 = total: 1 4 6 4 1 0: 1 4 6 4 1 o3 : BettiTally |
i4 : betti res (random hartshorneRaoModule)(0,{1,4},R) 0 1 2 3 4 o4 = total: 1 10 20 15 4 0: 1 . . . . 1: . 10 20 15 4 o4 : BettiTally |
i5 : betti res (random hartshorneRaoModule)(0,{1,4,1},R) 0 1 2 3 4 o5 = total: 1 9 16 9 1 0: 1 . . . . 1: . 9 16 9 . 2: . . . . 1 o5 : BettiTally |
i6 : betti res (random hartshorneRaoModule)(0,{1,4,2},R) 0 1 2 3 4 o6 = total: 1 8 12 7 2 0: 1 . . . . 1: . 8 12 3 . 2: . . . 4 2 o6 : BettiTally |
There are the following options:
* Attempts => ... a nonnegative integer or infinity (default) that limits the maximal number of attempts for the construction of the module
* Certify => ... true or false (default) checks whether the constructed module has the expected betti Table
i7 : setRandomSeed("alpha"); |
i8 : betti res (random hartshorneRaoModule)(0,{1,3,2},R) 0 1 2 3 4 o8 = total: 1 5 9 7 2 0: 1 1 . . . 1: . 4 6 2 . 2: . . 3 5 2 o8 : BettiTally |
i9 : expectedBetti({1,3,2,0,0,0,0},3) 0 1 2 3 4 o9 = total: 1 5 7 5 2 0: 1 1 . . . 1: . 4 6 . . 2: . . 1 5 2 o9 : BettiTally |
i10 : null =!= (random hartshorneRaoModule)(0,{1,3,2},R) o10 = true |
i11 : null =!= (random hartshorneRaoModule)(0,{1,3,2},R,Certify=>true,Attempts=>1) o11 = false |
if Certify => true and Attempts=>infinity (the default!) are given in this example, the construction never stops.
The list HRao needs only to contain the non-zero values of the Hilbert function.
The object hartshorneRaoModule is an instance of the type RandomObject.