Îõ³h$=*9r˜      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—*Implementation of Allen's interval algebra(c) NoviSci, Inc 2020BSD3bsaul@novisci.com experimentalSafe >?ÀÁÂÄÙì™<interval-algebraThe 9 typeclass provides methods for (possibly) combining two i a s to form an B.interval-algebraMaybe form a new i a by the union of two i as that .interval-algebraIf x is  y, then form a new Just Interval a, from the interval in the "gap" between x and y from the A of x to the @ of y . Otherwise, ˜.interval-algebraIf x is  y , return f x appended to f y. Otherwise, return I of x and y (wrapped in fÈ). This is useful for (left) folding over an *ordered* container of Interval#s and combining intervals when x is *not*  y.interval-algebraThe : typeclass provides functions to determine the size of an =$ type and to resize an 'Interval a'.interval-algebra*The smallest duration for an 'Interval a'.interval-algebra Gives back a  based on the input's type.interval-algebraDetermine the duration of an 'i a'.interval-algebra Shifts an a. Most often, the b will be the same type as a. But for example, if a is ™ then b could be š. interval-algebra!Takes the difference between two a to return a b. interval-algebraThe  ª typeclass specifies the functions and relational operators for interval-based temporal logic. The typeclass defines the relational operators for types that contain an  'Interval a'', plus other useful utilities such as (, +, and $. interval-algebra Compare two i a to determine their /. interval-algebraMaps an /) to its corresponding predicate function. interval-algebraGiven a set of /s return a list of . functions corresponding to each relation.interval-algebra6Forms a predicate function from the union of a set of /s.interval-algebra:Shortcut to creating a 'Set IntervalRelation' from a list.interval-algebraïCompose two interval relations according to the rules of the algebra. The rules are enumerated according to  Ähttps://thomasalspaugh.org/pub/fnd/allen.html#BasicCompositionsTable this table.interval-algebra1Finds the complement of a 'Set IntervalRelation'.interval-algebraFind the intersection of two ›s of /s.interval-algebraFind the union of two ›s of /s.interval-algebra/Find the converse of a 'Set IntervalRelation'. interval-algebraDoes x equal y?interval-algebraDoes x meet y? Is y metBy x?interval-algebraDoes x meet y? Is y metBy x?interval-algebraIs x before y? Is x after y?interval-algebraIs x before y? Is x after y?interval-algebra'Does x overlap y? Is x overlapped by y?interval-algebra'Does x overlap y? Is x overlapped by y?interval-algebra"Does x start y? Is x started by y?interval-algebra"Does x start y? Is x started by y?interval-algebra Synonyms for  and interval-algebra Synonyms for  and  interval-algebra$Does x finish y? Is x finished by y?!interval-algebra$Does x finish y? Is x finished by y?"interval-algebra Is x during y? Does x contain y?#interval-algebra Is x during y? Does x contain y?$interval-algebraÀCompose a list of interval relations with _or_ to create a new . i a. For example, unionPredicates [before, meets]æ creates a predicate function determining if one interval is either before or meets another interval.%interval-algebra2Operator for composing the union of two predicates(interval-algebraAre x and y disjoint (, , , or )?)interval-algebra9Are x and y not disjoint; i.e. do they share any support?*interval-algebraA synonym for ).+interval-algebra4Is x entirely *within* the endpoints of y? That is, ", ,  , or ?,interval-algebra Does x enclose y? That is, is y + x?-interval-algebra Synonym for +..interval-algebra+Defines a predicate of two objects of type a./interval-algebraThe /6 type enumerates the thirteen possible ways that two B a6 objects can relate according to the interval algebra. Meets, Metby x `meets` y y `metBy` x x: |-----| y: |-----|  Before, After x `before` y y `after` x !x: |-----| y: |-----| Overlaps, OverlappedBy !x `overlaps` y y `overlappedBy` x x: |-----| y: |-----| Starts, StartedBy x `starts` y y `startedBy` x x: |---| y: |-----| Finishes, FinishedBy x `finishes` y y `finishedBy` x x: |---| y: |-----| During, Contains x `during` y y `contains` x x: |-| y: |-----| Equal x `equal` y y `equal` x x: |-----| y: |-----| =interval-algebraThe =* typeclass defines how to get and set the BÉ content of a data structure. It also includes functions for getting the @ and A this data.>interval-algebraGet the interval from an i a?interval-algebraSet the interval in an i a@interval-algebraAccess the ends of an i a .Ainterval-algebraAccess the ends of an i a .Binterval-algebraAn B a is a pair of as  (x, y) \text{ where } x < y. The C function that returns œ error if y < x and  B otherwise. Cinterval-algebraSafely parse a pair of as to create an B a.Dinterval-algebra-Resize an 'i a' to by expanding to "left" by l and to the "right" by r. In the case that l or r are less than a , the respective endpoints are unchanged. Einterval-algebraExpands an 'i a' to left by i.Finterval-algebraExpands an 'i a' to right by i.Ginterval-algebra%Safely creates an 'Interval a' using x as the @ and adding max moment dur to x as the A.Hinterval-algebra%Safely creates an 'Interval a' using x as the A and adding negate max moment dur to x as the @.Iinterval-algebraCreates a new Interval spanning the extent x and y.Minterval-algebraImposes a total ordering on B a! based on first ordering the @ s then the As.Ê  +%(  !"# $&')*,-./4012356789:;<=>?@ABCDEFGHIÊ=>?@A +%(  !"# $&')*,- BC/4012356789:;<.DEFGHI,Functions for generating arbitrary intervals(c) NoviSci, Inc 2020BSD3bsaul@novisci.com experimentalSafe>À·ÂExtends the Interval Algebra to an interval paired with some data.(c) NoviSci, Inc 2020BSD3bsaul@novisci.com experimentalSafe>?ÀÁÂ!Ô ]interval-algebra#Empty is used to trivially lift an  Interval a into a PairedInterval.^interval-algebraAn  Interval a% paired with some other data of type b._interval-algebraMake a paired interval. `interval-algebra,Gets the data (i.e. non-interval) part of a PairedInterval.ainterval-algebra$Tests for equality of the data in a PairedInterval.binterval-algebra3Gets the intervals from a list of paired intervals.cinterval-algebra Lifts an  Interval a into a PairedInterval Empty a, where Empty, is a trivial type that contains no data.dinterval-algebraLifts a Functor containing  Interval a (s) into a Functor containing PairedInterval Empty a(s).hinterval-algebraÓDefines A total ordering on 'PairedInterval b a' based on the 'Interval a' part.]^_`abcd^]_`bacd3Functions for operating on containers of Intervals.(c) NoviSci, Inc 2020BSD3bsaul@novisci.com experimentalSafe>?À8Ä$qinterval-algebraReturns a list of the /Î between each consecutive pair of intervals. This the specialized form of r which can return any ž, Ÿ structure.relations [iv 1 0, iv 1 1][Meets]rinterval-algebraA generic form of q which can output any ž and ŸÝ structure. >>> (relations' [iv 1 0, iv 1 1]) :: [IntervalRelation (Interval Int)] [Meets]sinterval-algebraForms a  â new interval from the intersection of two intervals, provided the intervals are not disjoint.tinterval-algebra¤Returns a (possibly empty) container of intervals consisting of the gaps between intervals in the input. *To work properly, the input should be sorted*. See u# for a version that returns a list.gaps [iv 4 1, iv 4 8, iv 3 11][(5, 8)]uinterval-algebraÆReturns a (possibly empty) list of intervals consisting of the gaps between intervals in the input container. *To work properly, the input should be sorted*. This version outputs a list. See tÀ for a version that lifts the result to same input structure f.vinterval-algebra Returns the " of each 'Intervallic i a' in the ¡ f.#durations [iv 9 1, iv 10 2, iv 1 5][9,10,1]winterval-algebraÂIn the case that x y are not disjoint, clips y to the extent of x.clip (iv 5 0) (iv 3 3) Just (3, 5)clip (iv 3 0) (iv 2 4)Nothingxinterval-algebraApplies t& to all the non-disjoint intervals in x that are *not* disjoint from i. Intervals that  or are  i are w ped to i , so that all the intervals are + i. If there are no gaps, then ˜ is returned.-gapsWithin (iv 9 1) [iv 5 0, iv 2 7, iv 3 12]Just [(5, 7),(9, 10)]yinterval-algebra«Returns a container of intervals where any intervals that meet or share support are combined into one interval. *To work properly, the input should be sorted*. See z( for a version that works only on lists.4combineIntervals [iv 10 0, iv 5 2, iv 2 10, iv 2 13][(0, 12),(13, 15)]zinterval-algebra§Returns a list of intervals where any intervals that meet or share support are combined into one interval. *To work properly, the input list should be sorted*. 5combineIntervals' [iv 10 0, iv 5 2, iv 2 10, iv 2 13][(0, 12),(13, 15)]{interval-algebraGiven a predicate combinator, a predicate, and list of intervals, returns the input unchanged if the predicate combinator is True+. Otherwise, returns an empty list. See } and | for examples.|interval-algebra Returns the ˜Æ if *none* of the element of input satisfy the predicate condition.#For example, the following returns ˜2 because none of the intervals in the input list  (3, 5).0nothingIfNone (starts (iv 2 3)) [iv 1 3, iv 1 5]NothingIn the following, (3, 5)  (3, 6), so   the input is returned.0nothingIfNone (starts (iv 2 3)) [iv 3 3, iv 1 5]Just [(3, 6),(5, 6)]}interval-algebraReturns ˜ if *any* of the element of input satisfy the predicate condition.~interval-algebraReturns ˜Á if *all* of the element of input satisfy the predicate conditioninterval-algebra.Filter functions provides means for filtering ¢ containers of 'Intervallic i a' s based on   relations.6Lifts a predicate to be able to compare two different  ? structure by comparing the intervals contain within each. €interval-algebra Filter by .interval-algebra Filter by .‚interval-algebra Filter by .ƒinterval-algebra Filter by .„interval-algebra Filter by .…interval-algebra Filter by .†interval-algebra Filter by  .‡interval-algebra Filter by!.ˆinterval-algebra Filter by .‰interval-algebra Filter by .Šinterval-algebra Filter by ".‹interval-algebra Filter by #.Œinterval-algebra Filter by .interval-algebra Filter by (.Žinterval-algebra Filter by ).interval-algebra Filter by *.interval-algebra Filter by +.‘interval-algebra Filter by ,.’interval-algebra Filter by -.“interval-algebra?Folds over a list of Paired Intervals and in the case that the `ã is equal between two sequential meeting intervals, these two intervals are combined into one. This function is "safe" in the sense that if the input is invalid and contains any sequential pairs of intervals with an IntervalRelation, other than 0+, then the function returns an empty list. ”interval-algebraConvert an ordered sequence of PairedInterval b a'. that may have any interval relation (, /, etc) into a sequence of sequentially meeting PairedInterval b aë. That is, a sequence where one the end of one interval meets the beginning of the subsequent event. The ` of the input PairedIntervals are combined using the Monoid £* function, hence the pair data must be a Ÿ instance.xinterval-algebraiinterval-algebrax{interval-algebrae.g. ¤ or ¥interval-algebra0predicate to apply to each element of input list|interval-algebra0predicate to apply to each element of input list}interval-algebra0predicate to apply to each element of input list~interval-algebra0predicate to apply to each element of input list“interval-algebra;Be sure this only contains intervals that sequentially .$qrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”$qrsyztuvwx{|}~“”‚ˆ€‡‹„Œ…І‰ƒŽ‘’ Safe-Inferred9]¦§¨©ª«¬­®      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©žª«žª¬ž­®ž­¯žŸ°ž­±²³´ž­µž¶·ž¶¸¹º»¼½¾¿ÀÁ-interval-algebra-0.7.1-E6Coj66Em6j9zOLwG48az6IntervalAlgebraIntervalAlgebra.ArbitraryIntervalAlgebra.PairedInterval!IntervalAlgebra.IntervalUtilitiesPaths_interval_algebraIntervalCombinable.+.><<+>IntervalSizeablemomentmoment'durationadddiffIntervalAlgebraicrelate predicate' predicates predicatetoSetcompose complement intersectionunionconverseequalsmeetsmetBybeforeafteroverlaps overlappedBystarts startedByprecedes precededByfinishes finishedByduringcontainsunionPredicates<|>disjointRelationswithinRelationsdisjoint notDisjointconcurwithinenclose enclosedByComparativePredicateOfIntervalRelationMeetsMetByBeforeAfterOverlaps OverlappedByStarts StartedByFinishes FinishedByDuringContainsEquals Intervallic getInterval setIntervalbeginendInterval parseIntervalexpandexpandlexpandr beginervalenderval extenterval$fFunctorInterval$fIntervallicIntervala$fShowInterval $fOrdInterval$fOrdIntervalRelation$fEnumIntervalRelation$fBoundedIntervalRelation$fIntervalAlgebraicIntervala$fIntervalSizeableDayInteger $fIntervalSizeableIntegerInteger$fIntervalSizeableIntInt$fIntervalCombinableIntervala$fEqIntervalRelation$fShowIntervalRelation$fReadIntervalRelation $fEqInterval$fArbitraryInterval$fArbitraryDay$fArbitraryInterval0EmptyPairedIntervalmkPairedInterval getPairData equalPairData intervals toTrivialPair trivialize#$fIntervalCombinablePairedIntervala$fShowPairedInterval"$fIntervalAlgebraicPairedIntervala$fOrdPairedInterval$fBifunctorPairedInterval$fIntervallicPairedIntervala $fMonoidEmpty$fSemigroupEmpty $fEqEmpty $fOrdEmpty $fShowEmpty$fEqPairedInterval relations relations' intersectgapsgaps' durationsclip gapsWithincombineIntervalscombineIntervals' nothingIf nothingIfNone nothingIfAny nothingIfAllcompareIntervalsfilterOverlapsfilterOverlappedBy filterBefore filterAfter filterStartsfilterStartedByfilterFinishesfilterFinishedBy filterMeets filterMetBy filterDuringfilterContains filterEqualsfilterDisjointfilterNotDisjoint filterConcur filterWithin filterEnclosefilterEnclosedByfoldMeetingSafeformMeetingSequence$fSemigroupBox $fEqMeeting $fShowMeetingbase GHC.MaybeNothing time-1.9.3Data.Time.Calendar.DaysDayghc-prim GHC.TypesIntcontainers-0.6.2.1Data.Set.InternalSet Data.EitherLeftRightGHC.Base ApplicativeMonoidJustFunctor'witherable-0.4.1-8uH4Z4eydB8I1J1GFp0Bu3 Witherable Filterable<> Data.Foldableanyallversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName