interval-algebra-2.2.0: An implementation of Allen's interval algebra for temporal logic
Copyright(c) NoviSci Inc 2020-2022
TargetRWE 2023
LicenseBSD3
Maintainerbsaul@novisci.com 2020-2022, bbrown@targetrwe.com 2023
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

IntervalAlgebra.Arbitrary

Description

 
Synopsis

Documentation

arbitraryWithRelation Source #

Arguments

:: forall i a b. (SizedIv (Interval a), Ord a, Eq (Moment (Interval a)), Arbitrary (Interval a)) 
=> Interval a

reference interval

-> Set IntervalRelation

set of IntervalRelations, of which at least one will hold for the generated interval relative to the reference

-> Gen (Maybe (Interval a)) 

Conditional generation of intervals relative to a reference. If the reference iv is of moment duration, it is not possible to generate intervals from the strict enclose relations StartedBy, Contains, FinishedBy. If iv and rs are such that no possible relations can be generated, this function returns Nothing. Otherwise, it returns Just an interval that satisfies at least one of the possible relations in rs relative to iv.

> import Test.QuickCheck (generate)
> import Data.Set (fromList)
> isJust $ generate $ arbitraryWithRelation (beginerval 10 (0::Int)) (fromList [Before])
Just (20, 22)
> generate $ arbitraryWithRelation (beginerval 1 (0::Int)) (fromList [StartedBy])
Nothing
> generate $ arbitraryWithRelation (beginerval 1 (0::Int)) (fromList [StartedBy, Before])
Just (4, 13)

Orphan instances