Îõ³h$>½<©ê      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ ` a b c d e f g h i  (c) Immanuel Albrecht, 2020-202xBSD-3mail@immanuel-albrecht.de experimentalPOSIX Safe-Inferred>ÀÁÂAmatroidþlittle helper that either chooses the implementation of a typeclass member from the record, or uses the default implementationmatroidrecord getter function matroid the matroid matroid/default implementation of the typeclass member  (c) Immanuel Albrecht, 2020-202xBSD-3mail@immanuel-albrecht.de experimentalPOSIX Safe-InferredÁÂ×matroid;returns the rank of the set, wrt. to the given basis filtermatroid(tests whether a given set is independentmatroid6obtains an independent subset with maximal cardinalitymatroid#computes the closure of a given setmatroid returns the loops in the matroidmatroid!rank function of the dual matroidmatroid"returns the coloops in the matroidmatroidbasis filter of the matroidmatroidset of matroid elementsmatroid!the rank function of the matroid matroidset of matroid elementsmatroid$the independence test of the matroidmatroidset of matroid elementsmatroid!the rank function of the matroid matroidthe groundset of the matroidmatroidset of matroid elements matroid$the closure operator of the matroid matroid!the rank function of the matroid matroidthe ground set of the matroid matroidset of matroid elements matroid!the rank function of the matroid matroidthe ground set of the matroid  (c) Immanuel Albrecht, 2020-202xBSD-3mail@immanuel-albrecht.de experimentalPOSIX Safe-Inferred>ÀÁÂñmatroid8abstract matroid data type with elements of a given type¢Its purpose is to hide the underlying type from the type system. The records resemble the typeclass Matroid, where everything except for the groundset has been placed inside the Maybe-Monad. A value of Nothing indicates that the default implementation of the typeclass should be used.matroiddefaults for WMatroidmatroid*returns the restriction of a given matroid£Note that this routine implements the correct routines provided that the prerequisite members in the input matroid are defined. Routines which have missing prerequisite members in the input matroid will be left to Nothing. Data.Matroid.Typeclass.wrapUp fills all AMatroid record members.matroid1returns the restriction of a given matroid, named£Note that this routine implements the correct routines provided that the prerequisite members in the input matroid are defined. Routines which have missing prerequisite members in the input matroid will be left to Nothing. Data.Matroid.Typeclass.wrapUp fills all AMatroid record members.matroid*returns the contraction of a given matroid£Note that this routine implements the correct routines provided that the prerequisite members in the input matroid are defined. Routines which have missing prerequisite members in the input matroid will be left to Nothing. Data.Matroid.Typeclass.wrapUp fills all AMatroid record members.matroid1returns the contraction of a given matroid, named£Note that this routine implements the correct routines provided that the prerequisite members in the input matroid are defined. Routines which have missing prerequisite members in the input matroid will be left to Nothing. Data.Matroid.Typeclass.wrapUp fills all AMatroid record members.matroid*returns the contraction of a given matroid£Note that this routine implements the correct routines provided that the prerequisite members in the input matroid are defined. Routines which have missing prerequisite members in the input matroid will be left to Nothing. Data.Matroid.Typeclass.wrapUp fills all AMatroid record members.matroid1returns the contraction of a given matroid, named£Note that this routine implements the correct routines provided that the prerequisite members in the input matroid are defined. Routines which have missing prerequisite members in the input matroid will be left to Nothing. Data.Matroid.Typeclass.wrapUp fills all AMatroid record members.matroidinput matroid matroidrestriction of ground set matroidname matroidinput matroid matroidrestriction of ground set matroidinput matroid matroid&contract the ground set onto this set matroidname matroidinput matroid matroid&contract the ground set onto this set matroidinput matroid matroidname matroidinput matroid      (c) Immanuel Albrecht, 2020-202xBSD-3mail@immanuel-albrecht.de experimentalPOSIX Safe-Inferred>ÀÁÂcmatroid3Typeclass that provides the full matroid interface.The type parameter aÏ is the type of the elements of the matroid, it is most commonly used in a Set a type.ÄIn this typeclass, we assume that every set of matroid elements passed to any of the routines is actually a subset of (groundset m). Behaviour for other sets shall be considered undefined.ÅIn order to keep things DRY, the default implementations are fumbled through the (AMatroid a) instance definition below through wrapUp and setting the corresponding record value to Nothing. matroidÙThe ground set of the matroid, its elements are usually called edges. This set is finite.!matroid)name of the matroid, may be used for show"matroidreturns the rank of the set#matroid(tests whether a given set is independent$matroid6obtains an independent subset with maximal cardinality%matroid#computes the closure of a given set&matroid/returns this matroid as abstract matroid object'matroid;returns the dual of this matroid as abstract matroid object(matroidÏreturns the restricted matroid M|X as result of the unary matroid operation *|X)matroidÑreturns the contracted matroid M.X as a result of the unary matroid operation *.X*matroid returns the loops in the matroid+matroid!rank function of the dual matroid,matroid"returns the coloops in the matroid-matroidætakes an object of a type that implements the Matroid typeclass, and turns it into an AMatroid record..matroidÛThis instance contains the default implementations of the members of the Matroid typeclass. "matroid the matroid matroidset of matroid elements#matroid the matroid matroidset of matroid elements$matroid the matroidmatroidset of matroid elements%matroid the matroidmatroidset of matroid elements &matroidmatroid 'matroidmatroid (matroid the matroid matroid$restricts the ground set to this set)matroid the matroid matroid'contracts the ground set onto this set *matroid the matroid +matroid the matroid matroidset of matroid elements ,matroid the matroid )('& ,+*%$#"!-)('& ,+*%$#"!- (c) Immanuel Albrecht, 2020-202xBSD-3mail@immanuel-albrecht.de experimentalPOSIX Safe-Inferred>ÀÁÂ"û /matroidówe use this data type to combine a given a basis filter with the default implementations from the Matroid typeclass0matroidöwe use this data type to combine a given independence test with the default implementations from the Matroid typeclass1matroidòwe use this data type to combine a given rank function with the default implementations from the Matroid typeclass2matroid5matroid constructor given groundset and rank function3matroid;named matroid constructor given groundset and rank function4matroid=matroid constructor given groundset and test for independence5matroidÃnamed matroid constructor given groundset and test for independence6matroid8matroid constructor given groundset and set-basis filter7matroid>named matroid constructor given groundset and set-basis filter2matroid ground set matroidrank function 3matroidname matroid ground set matroidrank function 4matroid ground set matroidindependence test 5matroidname matroid ground set matroidindependence test 6matroid ground set matroid#returns maximal independent subset 7matroidname matroid ground set matroid#returns maximal independent subset /01234567 23456710/ (c) Immanuel Albrecht, 2020-202xBSD-3mail@immanuel-albrecht.de experimentalPOSIX Safe-Inferred>ÀÁÂ(Y>matroidÒdata type representing the cycle matroid (aka. polygon matroid) of a (multi-)graph?matroidÖconstructs a GraphicMatroid from a set of (abstract) edges and the incident-vertex map@matroidßconstructs an unnamed GraphicMatroid from a set of (abstract) edges and the incident-vertex mapAmatroidÜconstructs a named GraphicMatroid from a set of (abstract) edges and the incident-vertex mapBmatroidÓconstructs the graphic matroid M(K_n) where K_n is the complete graph on n vertices?matroid!set of edges of the (multi-)graphmatroid“map that maps the edge e to the set of its incident vertices {u,v}; the order is ignored, and {v} is represented by (v,v) @matroid!set of edges of the (multi-)graphmatroid“map that maps the edge e to the set of its incident vertices {u,v}; the order is ignored, and {v} is represented by (v,v) Amatroidname of the matroid matroid!set of edges of the (multi-)graphmatroid“map that maps the edge e to the set of its incident vertices {u,v}; the order is ignored, and {v} is represented by (v,v) Bmatroidn = number of vertices in K_n>?@AB>?A@B (c) Immanuel Albrecht, 2020-202xBSD-3mail@immanuel-albrecht.de experimentalPOSIX Safe-Inferred>ÀÁÂ+žHmatroidßdata type that represents a free matroid over a given set (free matroids are of course uniform)ImatroidÀdata type representing a uniform matroid over a given ground setJmatroid>returns a uniform matroid on the intergers from 1..n of rank rKmatroid9returns a uniform matroid on a given ground set of rank rLmatroidáreturns a free matroid on a given ground set (where every subset of the groundset is independent)Jmatroid0size of the uniform matroid (number of edges, n)matroidrank of the uniform matroid (r)Kmatroid!ground set of the uniform matroidmatroidrank of the uniform matroid (r)Lmatroidground set of the free matroidHIJKLIKJHL  (c) Immanuel Albrecht, 2020-202xBSD-3mail@immanuel-albrecht.de experimentalPOSIX Safe-InferredÁÂ,'5  )('& ,+*%$#!"-234567>?@ABHIJKL234567 (c) Immanuel Albrecht, 2020-202xBSD-3mail@immanuel-albrecht.de experimentalPOSIX Safe-Inferred>ÀÁÂ/Ô Umatroid5a generator for uniform matroids of a reasonable sizeVmatroid3a generator for graphic matroids of reasonable sizeWmatroid2a generator for M(K_n) matroids of reasonable sizeXmatroid2a generator for free matroids of a reasonable sizeYmatroidÃa generator for consintency matroid type based on another generatorZmatroidÃa generator for consintency matroid type based on another generator[matroidÃa generator for consintency matroid type based on another generator\matroidÃa generator for matroids of the form M|X based on a generator for M]matroidÃa generator for matroids of the form M.X based on a generator for M^matroidÃa generator for matroids of the form M^* based on a generator for M UVWXYZ[\]^ UVWXYZ[\]^  (c) Immanuel Albrecht, 2020-202xBSD-3mail@immanuel-albrecht.de experimentalPOSIX Safe-Inferred>ÀÁÂ3x_matroidåTests whether a given integer valued set function is indeed monotone increasing in at most unit steps`matroid€Tests whether a given boolean valued set function indeed only flips from true to false once when adding elements to its argumentamatroid>Tests the exchange property of the indep function of a matroidbmatroidËTests whether a given set valued set function is isotone in the set lattice_matroidthe rank function (or similar) matroid$sequence to check monotonicity with `matroid the indep function (or similar) matroid$sequence to check monotonicity with amatroidthe indep function matroidX matroidY bmatroidthe cl function (or similar) matroid$sequence to check monotonicity with _`ab_`ab  (c) Immanuel Albrecht, 2020-202xBSD-3mail@immanuel-albrecht.de experimentalPOSIXNone>ÀÁÂ<cmatroid+all tests that any matroid should/must passdmatroid;tests the invariants associated with operations on matroidsrk_{M|X}(Y) = rk_M(Y)coRk_{M.X}(Y) = coRk_M(Y)rk_(M^*)(Y) = coRk_M(Y)loop(M) = coloop(M^*)coloop(M^*) = loop(M)%groundsets of restriction/contraction&restriction is the dual of contractionematroidtest suite for rank axioms øThe following properties are verified: - rk is monotone increasing - rk(X+{x}) <= rk(X) + 1 (unit increasing) - rk(emptyset) = 0 (important special case) - rk(X) <= |X| (subcardinal) - rk(A/B) + rk(A/B) <= rk(A) + rk(B) (submodular)fmatroidtest suite for indep propertiesÆThe following properties are verified: - indep X && Ysubseteq X => indep Y (hereditary) - indep emptyset - indep X && indep Y && |Y| > |X| => exists yin Y: indep X+{y} (exchange property)gmatroidtest suite for basis propertiesƒThe following properties are verified: - basis X subseteq X - indep (basis X) - y in X(basis X) => not indep (basis X)+{y}hmatroid+test suite for closure operator properties éThe following properties are verified: - cl is monotone - cl(X) subseteq E - cl(cl(X)) == cl(X) (idempotence) - e in EX, yin cl(X+{e})cl(X) => e in cl(X+{y}) - rk(X) == rk(cl(X)) and cl(X) is maximal with this propertyimatroidÕtests a given matroid implementation for equality against the default implementationsËrk, indep, and cl should produce the same output when given the same input.àbasis however is only required to produce a basis of the given subset, and which basis is produced really depends on how the basis is derived. Here, we are ok if b1 and b2 have cl1(b1) == cl1(b2) == cl2(b1) == cl2(b2).cmatroidmatroid test case generator dmatroidmatroid test case generator ematroidmatroid test case generator fmatroidmatroid test case generator gmatroidmatroid test case generator hmatroidmatroid test case generator imatroidmatroid test case generator cdefghicdefghi  (c) Immanuel Albrecht, 2020-202xBSD-3mail@immanuel-albrecht.de experimentalPOSIXNone<”UVWXYZ[\]^cdefghiê  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd e f g h i j k l m n oð$matroid-0.0.0-2eYoprtlILY24NovvqwKQLData.Matroid.Internal.HelpersData.Matroid.Typeclass.DefaultsData.Matroid.OpsData.Matroid.TypeclassData.Matroid.InternalData.Matroid.GraphicData.Matroid.UniformTest.Matroid.GeneratorsTest.Matroid.HelpersTest.Matroid.Suites Data.Matroid Test.Matroid defaultsTorkindepbasisclloopscoRkcoloopsAMatroidWMatroid w_groundset w_showNamew_rkw_indepw_basisw_cl w_abstractw_dual w_restriction w_contractionw_loopsw_coRk w_coloopswrappedMatroid a_restrictiona_namedRestriction a_contractiona_namedContractiona_dual a_namedDual$fShowAMatroidMatroid groundsetshowNameabstractdual restriction contractionwrapUp$fMatroidAMatroidaBasisFilterMatroid IndepMatroid RkMatroidfromRk namedFromRk fromIndepnamedFromIndepfromBasisFilternamedFromBasisFilter$fMatroidRkMatroida$fShowRkMatroid$fMatroidIndepMatroida$fShowIndepMatroid$fMatroidBasisFilterMatroida$fShowBasisFilterMatroidGraphicMatroid fromGraph fromGraph'namedFromGraphmK$fShowGraphicMatroid$fMatroidGraphicMatroida $fShowForrest $fEqForrest $fOrdForrest FreeMatroidUniformMatroiduniform uniformOnfreeOn$fMatroidUniformMatroida$fShowUniformMatroid$fShowFreeMatroid$fMatroidFreeMatroida$fEqFreeMatroid$fOrdFreeMatroid$fEqUniformMatroid$fOrdUniformMatroidgenUniformMatroidsgenGraphicMatroidsgenMKnMatroidsgenFreeMatroidsviaRankviaIndepviaBasisFilterviaRestrictionviaContractionviaDualisMonotoneUnitIncreasingisMonotoneDecreasingBoolhasIndepExchangePropertyisIsotoneSetMap matroidSuiteopInvariantsSuiterkPropertiesSuiteindepPropertiesSuitebasisPropertiesSuiteclPropertiesSuiteviaConsistencySuite