-- | Tests involving the cohomological dual {-# LANGUAGE Rank2Types, GADTs, TypeFamilies #-} module Tests.Dual where -------------------------------------------------------------------------------- import Data.Proxy import Math.Combinat.Classes import Math.Combinat.Partitions import Math.RootLoci.Algebra import Math.RootLoci.Geometry import Math.RootLoci.Misc import qualified Math.RootLoci.Dual.Restriction as MSc import qualified Math.RootLoci.Dual.Localization as FNR import qualified Math.RootLoci.CSM.Equivariant.Direct as Direct import Math.RootLoci.Classic import Math.RootLoci.CSM.Aluffi import Tests.Common import Test.Tasty import Test.Tasty.HUnit -------------------------------------------------------------------------------- all_tests = testGroup "dual classes" [ testCase "lemma 9.1.3" (forAllPartPos 15 "failed" prop_lemma913 ) , testCase "proj degree matches Hilbert" (forAllPartPos 15 "failed" prop_degree_Hilbert ) , testCase "proj degree matches Aluffi" (forAllPartPos 14 "failed" prop_degree_Aluffi ) , testCase "dual class agrees with localization" (forAllPartPos 14 "failed" prop_msc_equals_local) , testCase "dual class = lowest deg part of open CSM" (forAllPartPos 10 "failed" prop_msc_equals_lowest_csm_open ) , testCase "dual class = lowest deg part of closed CSM" (forAllPartPos 10 "failed" prop_msc_equals_lowest_csm_closed) ] prop_lemma913 part = and [ MSc.lemma913 part k | k<-[0..m] ] where m = numberOfParts part prop_degree_Hilbert part = (MSc.degreeMSc part == hilbert part) prop_degree_Aluffi part = (MSc.degreeMSc part == aluffiDegree part) prop_msc_equals_local part = FNR.localizeDual part == chernToAB (MSc.affineDualMSc part) prop_msc_equals_lowest_csm_open part = MSc.dualClassFromProjCSM (Direct.directOpenCSM part) == MSc.affineDualMSc part prop_msc_equals_lowest_csm_closed part = MSc.dualClassFromProjCSM (Direct.directClosedCSM part) == MSc.affineDualMSc part --------------------------------------------------------------------------------