Îõ³h$IšF&Ž      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ*Implementation of Allen's interval algebra(c) NoviSci, Inc 2020BSD3bsaul@novisci.comSafe >ÀÁÂÄÙìðÄinterval-algebra5Defines a predicate of two object of different types.interval-algebra+Defines a predicate of two objects of type a.interval-algebraThe 9 typeclass provides methods for (possibly) combining two i a s to form a Ž i a, or in case of ><, a possibly different  Intervallic type.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   of x to the  of y . Otherwise, .interval-algebraIf x is # y , return f x appended to f y. Otherwise, return B 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  Û type and the associated predicate functions enumerate the thirteen possible ways that two  objects may 7ì according to Allen's interval algebra. Constructors are shown with their corresponding predicate function. interval-algebra#interval-algebra!interval-algebra%interval-algebra*interval-algebra,interval-algebra'interval-algebra-interval-algebra(interval-algebra+interval-algebra)interval-algebra&interval-algebra"interval-algebra$interval-algebraThe * typeclass defines how to get and set the Ú content of a data structure. It also includes functions for getting the endpoints of the  via  and  . getInterval (Interval (0, 10))(0, 10)begin (Interval (0, 10))0end (Interval (0, 10))10interval-algebraGet the interval from an i a.interval-algebraSet the interval in an i a.interval-algebraAn  a is a pair  (x, y) \text{ such that } x < y. To create intervals use the , @, or A functions.interval-algebraSafely parse a pair of as to create an  a.parseInterval 0 1 Right (0, 1)parseInterval 1 0 Left "0<1"interval-algebraAccess the endpoints of an i a . interval-algebraAccess the endpoints of an i a .!interval-algebraDoes x ! y? Is x metBy y?"interval-algebraDoes x ! y? Is x metBy y?#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$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-algebraDoes x equal y?.interval-algebra2Operator for composing the union of two predicates/interval-algebraAre x and y disjoint (#, $, !, or ")?0interval-algebraÒAre x and y not disjoint (concur); i.e. do they share any support? This is the 9 of /.1interval-algebraÒAre x and y not disjoint (concur); i.e. do they share any support? This is the 9 of /.2interval-algebraÂIs x entirely *within* (enclosed by) the endpoints of y? That is, +, ', ), or -?3interval-algebraÂIs x entirely *within* (enclosed by) the endpoints of y? That is, +, ', ), or -?4interval-algebra Does x enclose y? That is, is y 2 x?5interval-algebraThe ’ of all  s.6interval-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.7interval-algebra Compare two i a to determine their  ./relate (Interval (0::Int, 1)) (Interval (1, 2))Meets/relate (Interval (1::Int, 2)) (Interval (0, 1))MetBy8interval-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.9interval-algebraFinds the complement of a ’  .:interval-algebraFind the intersection of two ’s of  s.;interval-algebraFind the union of two ’s of  s.<interval-algebraFind the converse of a ’  . =interval-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. &expand 0 0 (Interval (0::Int, 2::Int))(0, 2)&expand 1 1 (Interval (0::Int, 2::Int))(-1, 3)>interval-algebra Expands an i a to "left".%expandl 2 (Interval (0::Int, 2::Int))(-2, 2)?interval-algebra Expands an i a to "right".%expandr 2 (Interval (0::Int, 2::Int))(0, 4)@interval-algebra%Safely creates an 'Interval a' using x as the  and adding max  dur to x as the  .beginerval (0::Int) (0::Int)(0, 1)beginerval (1::Int) (0::Int)(0, 1)beginerval (2::Int) (0::Int)(0, 2)Ainterval-algebra%Safely creates an 'Interval a' using x as the   and adding  negate max  dur to x as the .enderval (0::Int) (0::Int)(-1, 0)enderval (1::Int) (0::Int)(-1, 0)enderval (2::Int) (0::Int)(-2, 0)Binterval-algebraCreates a new Interval spanning the extent x and y.0extenterval (Interval (0, 1)) (Interval (9, 10))(0, 10)Cinterval-algebraImposes a total ordering on  a! based on first ordering the  s then the  s.=interval-algebraduration to subtract from the interval-algebraduration to add to the  @interval-algebraduration to add to the  interval-algebrathe  point of the Ainterval-algebraduration to subtract from the   interval-algebrathe   point of the à    !"#$%&'()*+,-./0123456789:;<=>?@ABà @A=>?  !"#$%&*),+'(-/01243.65789;:<B ,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>ÀÁÂ$ Uinterval-algebra#Empty is used to trivially lift an  Interval a into a PairedInterval.Vinterval-algebraAn  Interval a% paired with some other data of type b.Winterval-algebraMake a paired interval. Xinterval-algebra,Gets the data (i.e. non-interval) part of a PairedInterval.Yinterval-algebra$Tests for equality of the data in a PairedInterval.Zinterval-algebra3Gets the intervals from a list of paired intervals.[interval-algebra Lifts an  Interval a into a PairedInterval Empty a, where Empty, is a trivial type that contains no data.\interval-algebraLifts a Functor containing  Interval a (s) into a Functor containing PairedInterval Empty a(s)._interval-algebraÓDefines A total ordering on 'PairedInterval b a' based on the 'Interval a' part.UVWXYZ[\VUWXZY[\3Functions for operating on containers of Intervals.(c) NoviSci, Inc 2020BSD3bsaul@novisci.com experimentalSafe>ÀEŽ#hinterval-algebraReturns a list of the  Î between each consecutive pair of intervals. This the specialized form of i which can return any “, ” structure.relations [iv 1 0, iv 1 1][Meets]iinterval-algebraA generic form of h which can output any “ and ”Ý structure. >>> (relations' [iv 1 0, iv 1 1]) :: [IntervalRelation (Interval Int)] [Meets]jinterval-algebraForms a •â new interval from the intersection of two intervals, provided the intervals are not disjoint.intersect (iv 5 0) (iv 2 3) Just (3, 5)kinterval-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 l# for a version that returns a list.gaps [iv 4 1, iv 4 8, iv 3 11][(5, 8)]linterval-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 kÀ for a version that lifts the result to same input structure f.minterval-algebra Returns the  " of each 'Intervallic i a' in the – f.#durations [iv 9 1, iv 10 2, iv 1 5][9,10,1]ninterval-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)Nothingointerval-algebraApplies k& to all the non-disjoint intervals in x that are *not* disjoint from i. Intervals that % or are & i are n ped to i , so that all the intervals are 2 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)]pinterval-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 q( 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)]qinterval-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)]rinterval-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 t and s for examples.sinterval-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)]tinterval-algebraReturns  if *any* of the element of input satisfy the predicate condition./nothingIfAny (starts (iv 2 3)) [iv 3 3, iv 1 5]Just [(3, 6),(5, 6)]/nothingIfAny (starts (iv 2 3)) [iv 3 3, iv 1 5]Nothinguinterval-algebraReturns € if *all* of the element of input satisfy the predicate condition. >>> nothingIfAll (starts (iv 2 3)) [iv 3 3, iv 4 3] Nothingvinterval-algebraFilter — containers of one 7 type based by comparing to a (potentially different) : type using the corresponding interval predicate function.winterval-algebraFilter — containers of one 7 type based by comparing to a (potentially different) : type using the corresponding interval predicate function.xinterval-algebraFilter — containers of one 7 type based by comparing to a (potentially different) : type using the corresponding interval predicate function.yinterval-algebraFilter — containers of one 7 type based by comparing to a (potentially different) : type using the corresponding interval predicate function.zinterval-algebraFilter — containers of one 7 type based by comparing to a (potentially different) : type using the corresponding interval predicate function.{interval-algebraFilter — containers of one 7 type based by comparing to a (potentially different) : type using the corresponding interval predicate function.|interval-algebraFilter — containers of one 7 type based by comparing to a (potentially different) : type using the corresponding interval predicate function.}interval-algebraFilter — containers of one 7 type based by comparing to a (potentially different) : type using the corresponding interval predicate function.~interval-algebraFilter — containers of one 7 type based by comparing to a (potentially different) : type using the corresponding interval predicate function.interval-algebraFilter — containers of one 7 type based by comparing to a (potentially different) : type using the corresponding interval predicate function.€interval-algebraFilter — containers of one 7 type based by comparing to a (potentially different) : type using the corresponding interval predicate function.interval-algebraFilter — containers of one 7 type based by comparing to a (potentially different) : type using the corresponding interval predicate function.‚interval-algebraFilter — containers of one 7 type based by comparing to a (potentially different) : type using the corresponding interval predicate function.ƒinterval-algebraFilter — containers of one 7 type based by comparing to a (potentially different) : type using the corresponding interval predicate function.„interval-algebraFilter — containers of one 7 type based by comparing to a (potentially different) : type using the corresponding interval predicate function.…interval-algebraFilter — containers of one 7 type based by comparing to a (potentially different) : type using the corresponding interval predicate function.†interval-algebraFilter — containers of one 7 type based by comparing to a (potentially different) : type using the corresponding interval predicate function.‡interval-algebraFilter — containers of one 7 type based by comparing to a (potentially different) : type using the corresponding interval predicate function.ˆinterval-algebraFilter — containers of one 7 type based by comparing to a (potentially different) : type using the corresponding interval predicate function.‰interval-algebra?Folds over a list of Paired Intervals and in the case that the Xã 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 +, 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 X of the input PairedIntervals are combined using the Monoid ˜* function, hence the pair data must be a ” instance.ointerval-algebraiinterval-algebraxrinterval-algebrae.g. ™ or šinterval-algebra0predicate to apply to each element of input listsinterval-algebra0predicate to apply to each element of input listtinterval-algebra0predicate to apply to each element of input listuinterval-algebra0predicate to apply to each element of input list‰interval-algebra;Be sure this only contains intervals that sequentially !.#hijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š#pqklo‰Šrstux~v}z‚{€|wyƒ„…†‡ˆhijnm Safe-InferredF›œžŸ ¡¢£      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–”•—˜™š›œžŸ ”¡¢”¡£”•¤”¡¥¦§¨”¡©”ª«”ª¬­®¯°±²³´µ-interval-algebra-0.8.3-Dv0iwRRKCxv8pqqCDLVupjIntervalAlgebraIntervalAlgebra.ArbitraryIntervalAlgebra.PairedInterval!IntervalAlgebra.IntervalUtilitiesPaths_interval_algebraComparativePredicateOf2ComparativePredicateOf1IntervalCombinable.+.><<+>IntervalSizeablemomentmoment'durationadddiffIntervalRelationBeforeMeetsOverlaps FinishedByContainsStartsEquals StartedByDuringFinishes OverlappedByMetByAfter Intervallic getInterval setIntervalInterval parseIntervalbeginendmeetsmetBybeforeafteroverlaps overlappedBystarts startedByfinishes finishedByduringcontainsequals<|>disjoint notDisjointconcurwithin enclosedByencloseintervalRelationsunionPredicatesrelatecompose complement intersectionunionconverseexpandexpandlexpandr beginervalenderval extenterval $fOrdInterval$fShowInterval$fFunctorInterval$fIntervallicIntervala$fOrdIntervalRelation$fBoundedIntervalRelation$fIntervalSizeableDayInteger $fIntervalSizeableIntegerInteger$fIntervalSizeableIntInt$fIntervalCombinableIntervala$fEqIntervalRelation$fShowIntervalRelation$fReadIntervalRelation$fEnumIntervalRelation $fEqInterval$fArbitraryInterval$fArbitraryDay$fArbitraryInterval0EmptyPairedIntervalmakePairedInterval getPairData equalPairData intervals toTrivialPair trivialize#$fIntervalCombinablePairedIntervala$fShowPairedInterval$fOrdPairedInterval$fBifunctorPairedInterval$fIntervallicPairedIntervala $fMonoidEmpty$fSemigroupEmpty $fEqEmpty $fOrdEmpty $fShowEmpty$fEqPairedInterval relations relations' intersectgapsgaps' durationsclip gapsWithincombineIntervalscombineIntervals' nothingIf nothingIfNone nothingIfAny nothingIfAllfilterOverlapsfilterOverlappedBy filterBefore filterAfter filterStartsfilterStartedByfilterFinishesfilterFinishedBy filterMeets filterMetBy filterDuringfilterContains filterEqualsfilterDisjointfilterNotDisjoint filterConcur filterWithin filterEnclosefilterEnclosedByfoldMeetingSafeformMeetingSequence$fSemigroupBox $fEqMeeting $fShowMeetingbase GHC.MaybeMaybeNothing time-1.9.3Data.Time.Calendar.DaysDayghc-prim GHC.TypesIntcontainers-0.6.2.1Data.Set.InternalSetGHC.Base ApplicativeMonoidJustFunctor'witherable-0.4.1-GuRNhVHskxk3OLKcigNh29 Witherable Filterable<> Data.Foldableanyallversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName