Skip to content

Commit e464a95

Browse files
committed
Lisa constraint/abseval
1 parent 5b57efa commit e464a95

4 files changed

Lines changed: 468 additions & 0 deletions

File tree

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
(** Võrrandisüsteemi kaudu abstraktne interpretatsioon. *)
2+
3+
(** Võrrandisüsteeme saab luua kasutades erinevaid täisarve abstraheerivad domeene.
4+
Vt. Abseval. *)
5+
module Make (ID: IntDomain.S) =
6+
struct
7+
(** Abstraktne interpretaator.
8+
Abseval.eval_stmt me siin tegelikult ei kasuta. *)
9+
module Abseval = Abseval.Make (ID)
10+
module ED = Abseval.ED
11+
open Abseval
12+
13+
(** Väärtustab juhtvoograafi serva keskkonnas.
14+
Vihje: Abseval.eval_expr.
15+
Vihje: Abseval.eval_guard. *)
16+
let eval_edge (env: ED.t) (edge: Cfg.Edge.t): ED.t =
17+
failwith "TODO"
18+
19+
20+
(** Võrrandisüsteem juhtvoograafiga defineeritud programmi jaoks. *)
21+
module MakeSys (C: sig
22+
val cfg: Cfg.t (** Juhtvoograaf. *)
23+
24+
val entry_env: ED.t (** Algne abstraktne väärtuskeskkond. *)
25+
end) =
26+
struct
27+
open C
28+
29+
module V = Cfg.Node (** Muutujad on juhtvoograafi tipud. *)
30+
31+
module D = ED (** Väärtused on väärtuskeskkonna domeenist. *)
32+
33+
let vars = Cfg.nodes cfg (** Kõik juhtvoograafi tipud. *)
34+
35+
(** Abstraktse väärtustamise võrrandite paremad pooled.
36+
Vihje: Cfg.pred.
37+
Vihje: eval_edge. *)
38+
let f (node: V.t) (get: V.t -> D.t): D.t =
39+
failwith "TODO"
40+
end
41+
end

src/constraint/abseval/dune

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
(library
2+
(name constraint_abseval)
3+
(libraries constraint cfg domain abseval))

0 commit comments

Comments
 (0)