Changeset 5a87b3 in git
 Timestamp:
 Feb 6, 2017, 12:00:33 PM (6 years ago)
 Branches:
 (u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
 Children:
 917287cccce32f4b5c018bb33c440a246cbc6aae
 Parents:
 1381ff1450a5fd15c955cc5228ed66ccb449294d
 gitauthor:
 Janko Boehm <boehm@mathematik.unikl.de>20170206 12:00:33+01:00
 gitcommitter:
 Yue Ren <ren@mathematik.unikl.de>20170608 18:10:27+02:00
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

Singular/LIB/gitfan.lib
r1381ff1 r5a87b3 6 6 LIBRARY: gitfan.lib Compute GITfans. 7 7 8 AUTHORS: Janko Boehm, boehm@mathematik.unikl.de @*9 Simon Keicher, keicher @mail.mathematik.unituebingen.de @*10 Yue Ren, ren@mathematik.unikl.de @*8 AUTHORS: Janko Boehm, boehm at mathematik.unikl.de @* 9 Simon Keicher, keicher at mail.mathematik.unituebingen.de @* 10 Yue Ren, ren at mathematik.unikl.de @* 11 11 12 12 OVERVIEW: … … 34 34 35 35 PROCEDURES (not using group action): 36 isAface(ideal, intvec);Checks whether the given face is an aface.37 afaces(ideal); 38 fullDimImages(list, intmat);Finds the afaces which have a fulldimensional projection.39 minimalAfaces(list); Computesthe minimal afaces among the afaces with full dimensional projection.40 orbitCones(list, intmat);Returns the list of all orbit cones.41 GITcone(list, bigintmat);Returns the GITcone containing the given weight vector.42 GITfan(ideal, intmat); Computes the GITfan.43 GITfanFromOrbitCones(list, intmat,cone); Computes the GITfan from orbit cones.44 GITfanParallel(list, intmat,cone); Computes the GITfan in parallel from orbit cones.45 GKZfan(intmat); 46 movingCone(intmat); Computesthe moving cone.36 isAface(ideal, intvec); Checks whether the given face is an aface. 37 afaces(ideal); Returns a list of intvecs that correspond to the set of all afaces, optionally for given list of simplex faces. 38 fullDimImages(list, intmat); Finds the afaces which have a fulldimensional projection. 39 minimalAfaces(list); compute the minimal afaces among the afaces with full dimensional projection. 40 orbitCones(list, intmat); Returns the list of all orbit cones. 41 GITcone(list, bigintmat); Returns the GITcone containing the given weight vector. 42 GITfan(ideal, intmat); Compute GITfan. 43 GITfanFromOrbitCones(list, intmat, cone); Compute GITfan from orbit cones. 44 GITfanParallel(list, intmat, cone); Compute GITfan in parallel from orbit cones. 45 GKZfan(intmat); Returns the GKZfan of the matrix Q. 46 movingCone(intmat); Compute the moving cone. 47 47 48 48 PROCEDURES (using group action): 49 computeAfaceOrbits(list, list); Computesorbits of afaces under a permutation group action.50 minimalAfaceOrbits(list); Findsthe minimal aface orbits.51 orbitConeOrbits(list, intmat); Projectsthe aface orbits to orbit cone orbits.52 minimalOrbitConeOrbits(list); Findsthe minimal orbit cone orbits.53 intersectOrbitsWithMovingCone(list, cone); Intersectsorbit cone orbits with moving cone.54 groupActionOnQImage(list, intmat); Determinesthe induced group action in the target of the grading matrix.55 groupActionOnHashes(list, list); Determinesthe induced group action on the set of orbit cones.56 storeActionOnOrbitConeIndices(list, string); Writesthe group action on the set of orbit cones to a file.57 permutationFromIntvec(intvec); Createsa permutation from an intvec of images.58 permutationToIntvec(permutation); Returnsthe intvec of images.59 evaluateProduct(list,list); Evaluatesa list of products of group elements in terms of a given representation of the elements as permutations.60 GITfanSymmetric(list, intmat,cone,list); ComputesGITfan from orbit cones by determining a minimal representing set for the orbits of maximal dimensional GITcones.61 GITfanParallelSymmetric(list, intmat,cone,list); Compute GITfan in parallel from orbit cones by determining a minimal representing set for the orbits of maximal dimensional GITcones.62 bigintToBinary(bigint, int);Convert bigint into a sparse binary represenation specifying the indices of the oneentries63 binaryToBigint(intvec); 64 applyPermutationToIntvec(intvec, permutation);Apply permutation to a set of integers represented as an intvec65 hashToCone(bigint, list);Convert a bigint hash to a GITcone66 hashesToFan(list ,list); Compute fan from hashes of cones and orbit cones49 computeAfaceOrbits(list, list); Compute orbits of afaces under a permutation group action. 50 minimalAfaceOrbits(list); Find the minimal aface orbits. 51 orbitConeOrbits(list, intmat); Project the aface orbits to orbit cone orbits. 52 minimalOrbitConeOrbits(list); Find the minimal orbit cone orbits. 53 intersectOrbitsWithMovingCone(list, cone); Intersect orbit cone orbits with moving cone. 54 groupActionOnQImage(list, intmat); Determine the induced group action in the target of the grading matrix. 55 groupActionOnHashes(list, list); Determine the induced group action on the set of orbit cones. 56 storeActionOnOrbitConeIndices(list, string); Write the group action on the set of orbit cones to a file. 57 permutationFromIntvec(intvec); Create a permutation from an intvec of images. 58 permutationToIntvec(permutation); Return the intvec of images. 59 evaluateProduct(list,list); Evaluate a list of products of group elements in terms of a given representation of the elements as permutations. 60 GITfanSymmetric(list, intmat, cone, list); Compute GITfan from orbit cones by determining a minimal representing set for the orbits of maximal dimensional GITcones. 61 GITfanParallelSymmetric(list, intmat, cone, list); Compute GITfan in parallel from orbit cones by determining a minimal representing set for the orbits of maximal dimensional GITcones. 62 bigintToBinary(bigint, int); Convert bigint into a sparse binary represenation specifying the indices of the oneentries 63 binaryToBigint(intvec); Convert sparse binary represenation specifying the indices of the oneentries to bigint 64 applyPermutationToIntvec(intvec, permutation); Apply permutation to a set of integers represented as an intvec 65 hashToCone(bigint, list); Convert a bigint hash to a GITcone 66 hashesToFan(list hashes, list OC) 67 67 68 68 KEYWORDS: library, gitfan, GIT, geometric invariant theory, quotients … … 75 75 LIB "parallel.lib"; 76 76 77 staticproc mod_init()78 { 79 LIB " gfanlib.so";80 LIB " gitfan.so";77 proc mod_init() 78 { 79 LIB "~ren/murrumesh/gfanlib.so"; 80 LIB "~ren/murrumesh/gitfan.so"; 81 81 newstruct("permutation","intvec image"); 82 82 system("install","permutation","*",composePermutations,2); … … 2456 2456 2457 2457 2458 proc GITfan(ideal J, intmat Q )2459 "USAGE: GITfan(J,Q ); J:ideal, Q:intmat2460 PURPOSE: Computes the GIT fan associated to J and Q. 2458 proc GITfan(ideal J, intmat Q, list #) 2459 "USAGE: GITfan(J,Q [, G]); J:ideal, Q:intmat, G:list 2460 PURPOSE: Computes the GIT fan associated to J and Q. Optionally a symmetry group action on the column space of Q can be specified. 2461 2461 RETURN: a fan, the GIT fan. 2462 NOTE: The proceduce uses parallel computation for the construction of the GITcones. The afaces are not computed in parallel. This can be done by calling the aface procedure specifying a list of simplex faces. 2462 NOTE: The proceduce uses parallel computation for the construction of the GITcones. The afaces are not computed in parallel. This can be done by calling the aface procedure specifying a list of simplex faces. If used with the optional argument G, the orbit decomposition of the simplex of columns of Q is computed. Refer to the Singular documentation how to do this more efficiently using GAP. 2463 2463 EXAMPLE: example GITfan; shows an example 2464 2464 " 2465 2465 { 2466 list GIT; 2467 list OC; 2468 if (size(#)>0){ 2469 (GIT,OC) = GITfanWrapperWithSymmetry(J,Q,#); 2470 } else { 2466 2471 list AF= afaces(J,nrows(Q)); 2467 2472 AF=fullDimImages(AF,Q); … … 2470 2475 cone Qgamma = coneViaPoints(transpose(Q)); 2471 2476 list GIT = GITfanParallel(OC,Q,Qgamma); 2477 } 2472 2478 fan Sigma = hashesToFan(GIT,OC); 2473 2479 return(Sigma); … … 2491 2497 0, 0, 1, 1, 1, 0, 0, 0, 0, 1; 2492 2498 fan GIT = GITfan(J,Q); 2499 2500 intmat Q[5][10] = 2501 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2502 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 2503 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 2504 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 2505 0, 0, 1, 1, 1, 0, 0, 0, 0, 1; 2506 list simplexSymmetryGroup = G25Action(); 2507 fan GIT2 = GITfan(J,Q,simplexSymmetryGroup); 2508 2493 2509 } 2494 2510 … … 2614 2630 ///////////////////////////////////// 2615 2631 2616 proc GKZfan(intmat Q)2617 "USAGE: GKZfan(Q); a: ideal, Q:intmat2632 proc gkzFan(intmat Q) 2633 "USAGE: gkzFan(Q); a: ideal, Q:intmat 2618 2634 PURPOSE: Returns the GKZfan of the matrix Q. 2619 2635 RETURN: a fan. 2620 EXAMPLE: example GKZfan; shows an example2636 EXAMPLE: example gkzFan; shows an example 2621 2637 " 2622 2638 { … … 2639 2655 0,0,1,1; 2640 2656 2641 GKZfan(Q);2657 gkzFan(Q); 2642 2658 } 2643 2659 … … 2838 2854 2839 2855 2840 proc findOrbits(list G, int d)2841 "USAGE: findOrbits(G ,d); G list of permutations in a subgroup of the symmetric group; d int minimum cardinality of simplices to be considered2856 proc findOrbits(list G, int #) 2857 "USAGE: findOrbits(G [,d]); G list of permutations in a subgroup of the symmetric group; d int minimum cardinality of simplices to be considered; if d is not specified all orbits are computed. 2842 2858 PURPOSE: Computes the orbit decomposition of the action of G. 2843 2859 RETURN: list of intvec. … … 2845 2861 " 2846 2862 { 2863 int d; 2864 if (size(#)>0){d=#;} 2847 2865 int n = size(permutationToIntvec(G[1])); 2848 2866 list listOrbits; … … 2902 2920 } 2903 2921 2922 2923 2924 static proc GITfanWrapperWithSymmetry(ideal J, intmat Q, list simplexSymmetryGroup){ 2925 list orb = findOrbits(simplexSymmetryGroup,nrows(Q)); 2926 list simplexOrbitRepresentatives; 2927 for (int i=1;i<=size(orb);i++){simplexOrbitRepresentatives[i]=orb[i][1];} 2928 list afaceOrbitRepresentatives=afaces(J,simplexOrbitRepresentatives); 2929 list fulldimAfaceOrbitRepresentatives=fullDimImages(afaceOrbitRepresentatives,Q); 2930 list afaceOrbits=computeAfaceOrbits(fulldimAfaceOrbitRepresentatives,simplexSymmetryGroup); 2931 list minAfaceOrbits = minimalAfaceOrbits(afaceOrbits); 2932 list listOfOrbitConeOrbits = orbitConeOrbits(minAfaceOrbits,Q); 2933 list listOfMinimalOrbitConeOrbits = minimalOrbitConeOrbits(listOfOrbitConeOrbits); 2934 list Asigma = groupActionOnQImage(simplexSymmetryGroup,Q); 2935 list actionOnOrbitconeIndices = groupActionOnHashes(Asigma,listOfOrbitConeOrbits); 2936 list OClist = listOfOrbitConeOrbits[1]; 2937 for (i =2;i<=size(listOfOrbitConeOrbits);i++){ 2938 OClist = OClist + listOfOrbitConeOrbits[i]; 2939 } 2940 cone mov = coneViaPoints(transpose(Q)); 2941 mov = canonicalizeCone(mov); 2942 list Sigma = GITfanParallelSymmetric(OClist, Q, mov, actionOnOrbitconeIndices); 2943 return(Sigma, OClist); 2944 }
Note: See TracChangeset
for help on using the changeset viewer.