This file is indexed.

/var/lib/ghc/package.conf.d/ChasingBottoms-1.3.0.13.conf is in libghc-chasingbottoms-dev 1.3.0.13-5.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
name: ChasingBottoms
version: 1.3.0.13
id: ChasingBottoms-1.3.0.13-55ccbabf1327becf994c8aae54d8405c
key: Chasi_3a5VrLFXb8dGUdeWK8NANx
license: MIT
copyright: Copyright (c) Nils Anders Danielsson 2004-2015.
maintainer: http://www.cse.chalmers.se/~nad/
synopsis: For testing partial and infinite values.
description:
    Do you ever feel the need to test code involving bottoms (e.g. calls to
    the @error@ function), or code involving infinite values? Then this
    library could be useful for you.
    .
    It is usually easy to get a grip on bottoms by showing a value and
    waiting to see how much gets printed before the first exception is
    encountered. However, that quickly gets tiresome and is hard to automate
    using e.g. QuickCheck
    (<http://www.cse.chalmers.se/~rjmh/QuickCheck/>). With this library you
    can do the tests as simply as the following examples show.
    .
    Testing explicitly for bottoms:
    .
    > > isBottom (head [])
    > True
    .
    > > isBottom bottom
    > True
    .
    > > isBottom (\_ -> bottom)
    > False
    .
    > > isBottom (bottom, bottom)
    > False
    .
    Comparing finite, partial values:
    .
    > > ((bottom, 3) :: (Bool, Int)) ==! (bottom, 2+5-4)
    > True
    .
    > > ((bottom, bottom) :: (Bool, Int)) <! (bottom, 8)
    > True
    .
    Showing partial and infinite values (@\\\/!@ is join and @\/\\!@ is meet):
    .
    > > approxShow 4 $ (True, bottom) \/! (bottom, 'b')
    > "Just (True, 'b')"
    .
    > > approxShow 4 $ (True, bottom) /\! (bottom, 'b')
    > "(_|_, _|_)"
    .
    > > approxShow 4 $ ([1..] :: [Int])
    > "[1, 2, 3, _"
    .
    > > approxShow 4 $ (cycle [bottom] :: [Bool])
    > "[_|_, _|_, _|_, _"
    .
    Approximately comparing infinite, partial values:
    .
    > > approx 100 [2,4..] ==! approx 100 (filter even [1..] :: [Int])
    > True
    .
    > > approx 100 [2,4..] /=! approx 100 (filter even [bottom..] :: [Int])
    > True
    .
    The code above relies on the fact that @bottom@, just as @error
    \"...\"@, @undefined@ and pattern match failures, yield
    exceptions. Sometimes we are dealing with properly non-terminating
    computations, such as the following example, and then it can be nice to
    be able to apply a time-out:
    .
    > > timeOut' 1 (reverse [1..5])
    > Value [5,4,3,2,1]
    .
    > > timeOut' 1 (reverse [1..])
    > NonTermination
    .
    The time-out functionality can be used to treat \"slow\" computations as
    bottoms:
    .
    @
    > let tweak = Tweak &#x7b; approxDepth = Just 5, timeOutLimit = Just 2 &#x7d;
    > semanticEq tweak (reverse [1..], [1..]) (bottom :: [Int], [1..] :: [Int])
    True
    @
    .
    @
    > let tweak = noTweak &#x7b; timeOutLimit = Just 2 &#x7d;
    > semanticJoin tweak (reverse [1..], True) ([] :: [Int], bottom)
    Just ([],True)
    @
    .
    This can of course be dangerous:
    .
    @
    > let tweak = noTweak &#x7b; timeOutLimit = Just 0 &#x7d;
    > semanticEq tweak (reverse [1..100000000]) (bottom :: [Integer])
    True
    @
    .
    Timeouts can also be applied to @IO@ computations:
    .
    > > let primes () = unfoldr (\(x:xs) -> Just (x, filter ((/= 0) . (`mod` x)) xs)) [2..]
    > > timeOutMicro 100 (print $ primes ())
    > [2,NonTermination
    > > timeOutMicro 10000 (print $ take 10 $ primes ())
    > [2,3,5,7,11,13,17,19,23,29]
    > Value ()
    .
    For the underlying theory and a larger example involving use of
    QuickCheck, see the article \"Chasing Bottoms, A Case Study in Program
    Verification in the Presence of Partial and Infinite Values\"
    (<http://www.cse.chalmers.se/~nad/publications/danielsson-jansson-mpc2004.html>).
    .
    The code has been tested using GHC. Most parts can probably be
    ported to other Haskell compilers, but this would require some work.
    The @TimeOut@ functions require preemptive scheduling, and most of
    the rest requires @Data.Generics@; @isBottom@ only requires
    exceptions, though.
category: Testing
author: Nils Anders Danielsson
exposed: True
exposed-modules:
    Test.ChasingBottoms Test.ChasingBottoms.Approx
    Test.ChasingBottoms.ApproxShow
    Test.ChasingBottoms.ContinuousFunctions
    Test.ChasingBottoms.IsBottom Test.ChasingBottoms.Nat
    Test.ChasingBottoms.SemanticOrd Test.ChasingBottoms.TimeOut
hidden-modules: Test.ChasingBottoms.IsType
trusted: False
import-dirs: /usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-7.10.3/ChasingBottoms-1.3.0.13-3a5VrLFXb8dGUdeWK8NANx
library-dirs: /usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-7.10.3/ChasingBottoms-1.3.0.13-3a5VrLFXb8dGUdeWK8NANx
data-dir: /usr/share/chasingbottoms
hs-libraries: HSChasingBottoms-1.3.0.13-3a5VrLFXb8dGUdeWK8NANx
depends:
    QuickCheck-2.8.1-3b4e59fb7b4229f7e8519c5347611ffa
    base-4.8.2.0-0d6d1084fbc041e1cded9228e80e264d
    containers-0.5.6.2-59326c33e30ec8f6afd574cbac625bbb
    mtl-2.2.1-3af90341e75ee52dfc4e3143b4e5d219
    random-1.1-c46cc413d88c0a330b5495d03f0ed464
    syb-0.6-d154b8ffa473f7cfcfc32ca4d99f62f7
haddock-interfaces: /usr/lib/ghc-doc/haddock/chasingbottoms-1.3.0.13/ChasingBottoms.haddock
haddock-html: /usr/share/doc/libghc-chasingbottoms-doc/html/