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
|
module Contract.Names
( isSpecName, toSpecName, toSpecQName, fromSpecName
, isPreCondName, toPreCondName, toPreCondQName, fromPreCondName
, isPostCondName, toPostCondName, toPostCondQName, fromPostCondName
) where
import List ( isSuffixOf )
isSpecName :: String -> Bool
isSpecName f = "'spec" `isSuffixOf` f
toSpecName :: String -> String
toSpecName = (++"'spec")
toSpecQName :: (String,String) -> (String,String)
toSpecQName (mn,fn) = (mn, toSpecName fn)
fromSpecName :: String -> String
fromSpecName f =
let rf = reverse f
in reverse (drop (if take 5 rf == "ceps'" then 5 else 0) rf)
isPreCondName :: String -> Bool
isPreCondName f = "'pre" `isSuffixOf` f
toPreCondName :: String -> String
toPreCondName = (++ "'pre")
toPreCondQName :: (String,String) -> (String,String)
toPreCondQName (mn,fn) = (mn, toPreCondName fn)
fromPreCondName :: String -> String
fromPreCondName f =
let rf = reverse f
in reverse (drop (if take 4 rf == "erp'" then 4 else 0) rf)
isPostCondName :: String -> Bool
isPostCondName f = "'post" `isSuffixOf` f
toPostCondName :: String -> String
toPostCondName = (++"'post")
toPostCondQName :: (String,String) -> (String,String)
toPostCondQName (mn,fn) = (mn, toPostCondName fn)
fromPostCondName :: String -> String
fromPostCondName f =
let rf = reverse f
in reverse (drop (if take 5 rf == "tsop'" then 5 else 0) rf)
|