package mopsa

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

Parameters

Signature

Domain header

*****************

type t = T.t

Type of an abstract elements.

val id : t Core.All.id

Domain identifier

val name : string

Name of the domain

val checks : Core.All.check list

List of checks performed by the domain

val bottom : t

Least abstract element of the lattice.

val top : t

Greatest abstract element of the lattice.

val is_bottom : t -> bool

is_bottom a tests whether a is bottom or not.

Lattice operators

*********************

val subset : ('a, t) Core.All.man -> 'a Core.All.ctx -> (t * 'a) -> (t * 'a) -> bool * 'a * 'a
val join : ('a, t) Core.All.man -> 'a Core.All.ctx -> (t * 'a) -> (t * 'a) -> t * 'a * 'a
val meet : ('a, t) Core.All.man -> 'a Core.All.ctx -> (t * 'a) -> (t * 'a) -> t * 'a * 'a
val widen : ('a, t) Core.All.man -> 'a Core.All.ctx -> (t * 'a) -> (t * 'a) -> t * 'a * 'a * bool
val merge : t -> (t * Core.All.effect) -> (t * Core.All.effect) -> t

merge pre (post1, effect1) (post2, effect2) synchronizes two divergent post-conditions post1 and post2 using a common pre-condition pre.

Diverging post-conditions emerge after a fork-join trajectory in the abstraction DAG (e.g., a reduced product).

The effects effect1 and effect2 represent a journal of internal statements executed during the the computation of the post-conditions over the two trajectories.

Transfer functions

**********************

Initialization function

val exec : Core.All.stmt -> ('a, t) Core.All.man -> 'a Core.All.flow -> 'a Core.All.post option

Post-state of statements

val eval : Core.All.expr -> ('a, t) Core.All.man -> 'a Core.All.flow -> 'a Core.All.eval option

Evaluation of expressions

val ask : ('a, 'r) Core.All.query -> ('a, t) Core.All.man -> 'a Core.All.flow -> ('a, 'r) Core.All.cases option

Handler of queries

Printing

************

val print_state : Core.All.printer -> t -> unit

Printer of an abstract element.

val print_expr : ('a, t) Core.All.man -> 'a Core.All.flow -> Core.All.printer -> Core.All.expr -> unit

Printer of an expression's value

OCaml

Innovation. Community. Security.