This file is indexed.

/var/lib/ghc/package.conf.d/ChasingBottoms-1.3.0.8.conf is in libghc-chasingbottoms-dev 1.3.0.8-1+b1.

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
name: ChasingBottoms
version: 1.3.0.8
id: ChasingBottoms-1.3.0.8-4cb7353084ce978a80b7ef79baf7e1c6

license: MIT
copyright: Copyright (c) Nils Anders Danielsson 2004-2014.
maintainer: http://www.cse.chalmers.se/~nad/
stability:
homepage:
package-url:
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 $ filter ((== 1) . (\`mod\` 83)) primes)@] @[167,499,9NonTermination@
             .
             [@> timeOutMicro 100 (print $ take 6 $ filter ((== 1) . (\`mod\` 83)) primes)@] @[167,499,997,1163,1993NonTermination@
             .
             [@> timeOutMicro 100 (print $ take 6 $ filter ((== 1) . (\`mod\` 83)) primes)@] @[167,499,997,1163,1993,2657]@
             .
             [@ @] @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/ChasingBottoms-1.3.0.8/ghc-7.6.3
library-dirs: /usr/lib/haskell-packages/ghc/lib/ChasingBottoms-1.3.0.8/ghc-7.6.3
hs-libraries: HSChasingBottoms-1.3.0.8
extra-libraries:
extra-ghci-libraries:
include-dirs:
includes:
depends: QuickCheck-2.7.6-1a837324b203a3afd2f9ad3b3dd3e8bc
         base-4.6.0.1-8aa5d403c45ea59dcd2c39f123e27d57
         containers-0.5.0.0-ab1dae9a94cd3cc84e7b2805636ebfa2
         mtl-2.1.2-94c72af955e94b8d7b2f359dadd0cb62
         random-1.0.1.1-43fdc5da991685d8a0ec8cb553880cf8
         syb-0.4.0-c48d52f3188b986ddaa9dd9ae40072f8
hugs-options:
cc-options:
ld-options:
framework-dirs:
frameworks:
haddock-interfaces: /usr/lib/ghc-doc/haddock/chasingbottoms-1.3.0.8/ChasingBottoms.haddock
haddock-html: /usr/share/doc/libghc-chasingbottoms-doc/html/