Release coccinelle-0.2.0rc1
[bpt/coccinelle.git] / ctl / wrapper_ctl.mli
CommitLineData
34e49164
C
1type info = int
2
3type ('pred, 'mvar) wrapped_ctl =
4 ('pred * 'mvar Ast_ctl.modif, 'mvar, info) Ast_ctl.generic_ctl
5
6type ('a, 'b) wrapped_binding =
7 ClassicVal of 'a
8 | PredVal of 'b Ast_ctl.modif
9
10type ('pred,'state,'mvar,'value) labelfunc =
11 'pred ->
12 ('state * ('pred * ('mvar, 'value) Ast_ctl.generic_substitution)) list
13
14module CTL_ENGINE_BIS :
15 functor (SUB : Ctl_engine.SUBST) ->
16 functor (G : Ctl_engine.GRAPH) ->
17 functor(P : Ctl_engine.PREDICATE) ->
18 sig
19
20 type predicate = P.t
21 module WRAPPER_ENV :
22 sig
23 type mvar = SUB.mvar
24 type value = (SUB.value, predicate) wrapped_binding
25 end
26 module WRAPPER_PRED :
27 sig
28 type t = P.t * SUB.mvar Ast_ctl.modif
29 end
30 module WRAPPER_ENGINE :
31 sig
32 type substitution =
33 (WRAPPER_ENV.mvar, WRAPPER_ENV.value) Ast_ctl.generic_subst list
34 type ('a, 'b) witness =
35 (G.node, substitution,
36 ('a, WRAPPER_ENV.mvar, 'b) Ast_ctl.generic_ctl list)
37 Ast_ctl.generic_witnesstree
38 type ('a, 'b) triples =
39 (G.node * substitution * ('a, 'b) witness list) list
40 end
41
42
43 val satbis_noclean :
44 G.cfg *
45 (predicate, G.node, WRAPPER_ENV.mvar, SUB.value) labelfunc *
46 G.node list ->
47 ((WRAPPER_PRED.t, WRAPPER_ENV.mvar, int) Ast_ctl.generic_ctl *
48 (WRAPPER_PRED.t list list)) ->
49 (WRAPPER_PRED.t, 'a) WRAPPER_ENGINE.triples
50
51 val satbis :
52 G.cfg *
53 (predicate,G.node,SUB.mvar,SUB.value) labelfunc *
54 G.node list ->
55 ((predicate,SUB.mvar) wrapped_ctl *
56 (WRAPPER_PRED.t list list)) ->
57 (WRAPPER_ENV.mvar list * (SUB.mvar * SUB.value) list) ->
58 ((WRAPPER_PRED.t, 'a) WRAPPER_ENGINE.triples *
59 ((G.node * (SUB.mvar * SUB.value) list * predicate)
60 list list *
61 bool *
62 (WRAPPER_ENV.mvar * SUB.value) list list))
63
64 val print_bench : unit -> unit
65end