PrintDevGraph.hs revision c35969f341eb137848e9c0874503bed8c419cbd2
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel ManceModule : $Header$
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel ManceDescription : pretty printing (parts of) a LibEnv
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel ManceCopyright : (c) C. Maeder, Uni Bremen 2002-2006
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel ManceLicense : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel ManceMaintainer : Christian.Maeder@dfki.de
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel ManceStability : provisional
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel MancePortability : non-portable(DevGraph)
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mancepretty printing (parts of) a LibEnv
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance ( prettyLibEnv
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance , prettyHistElem
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance , prettyHistory
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance , dgOriginHeader
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance , dgOriginSpec
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance , dgLinkOriginHeader
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance , dgLinkOriginSpec
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance , dgRuleHeader
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Manceimport qualified Common.Lib.SizedList as SizedList
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Manceimport qualified Common.Lib.Rel as Rel
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Manceimport qualified Common.Lib.Graph as Tree
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Manceimport Data.Graph.Inductive.Graph as Graph
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Manceimport qualified Data.Map as Map
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Manceimport qualified Data.Set as Set
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel ManceprintTh :: GlobalAnnos -> SIMPLE_ID -> G_theory -> Doc
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel ManceprintTh oga sn g =
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance let ga = removeProblematicListAnnos oga in
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance useGlobalAnnos ga $ pretty ga $+$ prettyGTheorySL g $+$
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance sep [if null (tokStr sn) then Doc.empty else
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance keyword specS <+> sidDoc sn <+> equals, prettyGTheory g]
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel ManceremoveProblematicListAnnos :: GlobalAnnos -> GlobalAnnos
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel ManceremoveProblematicListAnnos ga = let
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance is = Map.keysSet $ Rel.toMap $ prec_annos ga
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance la = literal_annos ga
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance nla = la { list_lit = Map.filterWithKey ( \ li _ ->
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance let (op, cl, cs) = getListBrackets li in
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance Set.null $ Set.filter ( \ (Id ts ics _) ->
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance cs == ics && isPrefixOf op ts && isSuffixOf cl ts) is)
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance $ list_lit la }
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance Result _ (Just lm) = store_literal_map Map.empty $ convertLiteralAnnos nla
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance in ga { literal_annos = nla
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance , literal_map = lm }
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance-- * pretty instances
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel ManceshowXPathComp :: XPathPart -> String
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel ManceshowXPathComp c = case c of
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance ElemName s -> s
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance ChildIndex i -> "Spec[" ++ show i ++ "]"
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel ManceshowXPath :: [XPathPart] -> String
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel ManceshowXPath l = case l of
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance _ -> concatMap (('/' :) . showXPathComp) l
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel ManceshowNodeId :: Node -> String
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel ManceshowNodeId i = "node " ++ show i
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Manceinstance Pretty NodeSig where
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance pretty (NodeSig n sig) = fsep [ text (showNodeId n) <> colon, pretty sig ]
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel MancedgOriginSpec :: DGOrigin -> Maybe SIMPLE_ID
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel MancedgOriginSpec o = case o of
808e2693447ecc5a311a2b9de6b81ca07f193778Felix Gabriel Mance DGInst n -> Just n
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance DGFitView n -> Just n
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel MancedgOriginHeader :: DGOrigin -> String
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel MancedgOriginHeader o = case o of
808e2693447ecc5a311a2b9de6b81ca07f193778Felix Gabriel Mance DGEmpty -> "empty-spec"
c92573b85930868b709024284c0f13dbcaec9554Felix Gabriel Mance DGBasic -> "foreign-basic-spec"
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance DGBasicSpec _ _ -> "basic-spec"
c92573b85930868b709024284c0f13dbcaec9554Felix Gabriel Mance DGExtension -> "extension"
c92573b85930868b709024284c0f13dbcaec9554Felix Gabriel Mance DGLogicCoercion -> "logic-translation"
c92573b85930868b709024284c0f13dbcaec9554Felix Gabriel Mance DGTranslation _ -> "translation"
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance DGUnion -> "union"
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance DGRestriction _ -> "restriction"
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance DGRevealTranslation -> "translation part of a revealing"
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance DGFreeOrCofree v -> map toLower (show v) ++ "-spec"
ae2e84ab0a53874417f01b792cbc6907ee6d09f6Felix Gabriel Mance DGLocal -> "local-spec"
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance DGClosed -> "closed-spec"
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance DGLogicQual -> "spec with logic qualifier"
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance DGData -> "data-spec"
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance DGFormalParams -> "formal parameters"
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance DGImports -> "arch import"
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance DGInst _ -> "instantiation"
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance DGFitSpec -> "fitting-spec"
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance DGFitView _ -> "fitting-view"
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance DGProof -> "proof-construct"
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance DGNormalForm n -> "normal-form(" ++ shows n ")"
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance DGintegratedSCC -> "OWL spec with integrated strongly connected components"
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance DGFlattening -> "flattening"
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Manceinstance Pretty DGOrigin where
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance pretty o = text (dgOriginHeader o) <+> pretty (dgOriginSpec o)
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance DGBasicSpec gbs syms -> specBraces (pretty gbs) $+$
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance text "new symbols:" $+$ pretty syms
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance DGTranslation (Renamed r) -> pretty r
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance DGRestriction (Restricted r) -> pretty r
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Manceinstance Pretty DGNodeInfo where
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance pretty c = case c of
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance DGNode {} -> pretty $ node_origin c
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel Mance pretty (getLibId $ ref_libname c) <+> text (showNodeId $ ref_node c)
ce5d83770556362fe2c8b567975c2a3758888358Felix Gabriel ManceprettyDGNodeLab :: DGNodeLab -> Doc
c92573b85930868b709024284c0f13dbcaec9554Felix Gabriel ManceprettyDGNodeLab l = sep [ text $ getDGNodeName l, pretty $ nodeInfo l]
808e2693447ecc5a311a2b9de6b81ca07f193778Felix Gabriel Manceinstance Pretty DGNodeLab where
808e2693447ecc5a311a2b9de6b81ca07f193778Felix Gabriel Mance pretty l = vcat
808e2693447ecc5a311a2b9de6b81ca07f193778Felix Gabriel Mance [ text $ "xpath: " ++ showXPath (reverse $ xpath $ dgn_name l)
808e2693447ecc5a311a2b9de6b81ca07f193778Felix Gabriel Mance , pretty $ getNodeConsStatus l
808e2693447ecc5a311a2b9de6b81ca07f193778Felix Gabriel Mance , if hasOpenGoals l then text "has open goals" else
808e2693447ecc5a311a2b9de6b81ca07f193778Felix Gabriel Mance if hasSenKind (const True) l then Doc.empty else text "locally empty"
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel Mance , if labelHasHiding l then text "has ingoing hiding link" else Doc.empty
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel Mance , case dgn_nf l of
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel Mance Just n -> text "normal form:" <+> text (showNodeId n)
808e2693447ecc5a311a2b9de6b81ca07f193778Felix Gabriel Mance , text "origin:" $+$ pretty (nodeInfo l)
808e2693447ecc5a311a2b9de6b81ca07f193778Felix Gabriel Mance , case dgn_sigma l of
808e2693447ecc5a311a2b9de6b81ca07f193778Felix Gabriel Mance Just gm -> text "normal form inclusion:" $+$ pretty gm
808e2693447ecc5a311a2b9de6b81ca07f193778Felix Gabriel Mance , text "local theory:"
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel Mance , pretty $ dgn_theory l]
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel Manceinstance Pretty EdgeId where
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel Mance pretty (EdgeId i) = text $ show i
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel MancedgLinkOriginSpec :: DGLinkOrigin -> Maybe SIMPLE_ID
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel MancedgLinkOriginSpec o = case o of
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel Mance DGLinkMorph n -> Just n
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel Mance DGLinkInst n _ -> Just n
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel Mance DGLinkInstArg n -> Just n
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel Mance DGLinkView n _ -> Just n
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel Mance DGLinkFitView n -> Just n
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel Mance DGLinkFitViewImp n -> Just n
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel MancedgLinkMapping :: DGLinkOrigin -> [G_mapping]
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel MancedgLinkMapping o = case o of
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel Mance DGLinkInst _ (Fitted l) -> l
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel Mance DGLinkView _ (Fitted l) -> l
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel MancedgLinkOriginHeader :: DGLinkOrigin -> String
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel MancedgLinkOriginHeader o = case o of
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance SeeTarget -> "see target"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance TEST -> "test"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance SeeSource -> "see source"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance DGImpliesLink -> "reversed implies link of extension"
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel Mance DGLinkExtension -> "extension"
4440f5c4ab1cb6dfd445da97f87a72d87d24c25aFelix Gabriel Mance DGLinkTranslation -> "OMDoc translation"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance DGLinkClosedLenv -> "closed spec and local environment"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance DGLinkImports -> "OWL import"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance DGLinkMorph _ -> "instantiation morphism of"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance DGLinkInst _ _ -> "instantiation of"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance DGLinkInstArg _ -> "actual parameter of"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance DGLinkView _ _ -> "view"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance DGLinkFitView _ -> "fit source of"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance DGLinkFitViewImp _ -> "add import to source of"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance DGLinkProof -> "proof-link"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance DGLinkFlatteningUnion -> "flattening non-disjoint union"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance DGLinkFlatteningRename -> "flattening renaming"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Manceinstance Pretty DGLinkOrigin where
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance pretty o = text (dgLinkOriginHeader o) <+> pretty (dgLinkOriginSpec o)
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance $+$ ppWithCommas (dgLinkMapping o)
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance-- | only shows the edge and node ids
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel ManceshowLEdge :: LEdge DGLinkLab -> String
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel ManceshowLEdge (s, t, l) = "edge " ++ showEdgeId (dgl_id l)
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance ++ " " ++ (showName $ dglName l)
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance ++ "(" ++ showNodeId s ++ " --> " ++ show t ++ ")"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance-- | only print the origin and parts of the type
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel ManceprettyDGLinkLab :: (DGLinkLab -> Doc) -> DGLinkLab -> Doc
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel ManceprettyDGLinkLab f l = fsep
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance [ case dgl_origin l of
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance-- | print short edge information
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel ManceprettyLEdge :: LEdge DGLinkLab -> Doc
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel ManceprettyLEdge e@(_, _, l) = fsep
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance [ text $ showLEdge e
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance , prettyDGLinkLab (text . getDGLinkType) l
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance , prettyThmLinkStatus $ dgl_type l ]
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel MancedgRuleEdges :: DGRule -> [LEdge DGLinkLab]
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel MancedgRuleEdges r = case r of
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance DGRuleWithEdge _ l -> [l]
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance Composition ls -> ls
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel MancedgRuleHeader :: DGRule -> String
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel MancedgRuleHeader r = case r of
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance DGRule str -> str
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance DGRuleWithEdge str _ -> str
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance DGRuleLocalInference _ -> "local-inference"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance Composition _ -> "composition"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance BasicInference _ _ -> "basic-inference"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance BasicConsInference _ _ -> "basic-cons-inference"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Manceinstance Pretty DGRule where
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance pretty r = let es = dgRuleEdges r in fsep
808e2693447ecc5a311a2b9de6b81ca07f193778Felix Gabriel Mance [ text (dgRuleHeader r) <> if null es then Doc.empty else colon, case r of
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance DGRuleLocalInference m ->
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance braces $ sepByCommas $ map (\ (s, t) ->
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance let d = text s in if s == t then d else pairElems d $ text t) m
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance BasicInference c bp -> fsep
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance [ text $ "using comorphism '" ++ show c ++ "' with proof tree:"
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance , text $ show bp]
fae04f4a69922eb1ddf0f46b34fa15a5a080b693Felix Gabriel Mance BasicConsInference c bp -> fsep
[] -> Doc.empty
[(_, _, l)] -> prettyDGLinkLab (const Doc.empty) l
_ -> pretty $ Set.fromList $ map (\ (_, _, l) -> dgl_id l) es]
LeftOpen -> Doc.empty
prettyThmLinkStatus = maybe Doc.empty pretty . thmLinkStatus
None -> Doc.empty
_ -> Doc.empty)
, if dglPending l then text "proof chain incomplete" else Doc.empty
_ -> Doc.empty ]
prettyGr :: Tree.Gr DGNodeLab DGLinkLab -> Doc
EmptyNode _ -> Doc.empty
EmptyNode _ -> Doc.empty
(if null params then Doc.empty else pretty $ map getNode params)
, prettyHistory $ SizedList.reverse $ reverseHistory $ redoHistory dg
prettyHistory = vcat . map prettyHistElem . SizedList.toList