package mopsa

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

Domain header

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

type t

Type of an abstract elements.

val id : t Core.All.id

Domain identifier

val name : string

Domain name

val bottom : t

Least abstract element of the lattice.

val top : t

Greatest abstract element of the lattice.

Predicates

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

val is_bottom : t -> bool

is_bottom a tests whether a is bottom or not.

val subset : t -> t -> bool

Partial order relation. subset a1 a2 tests whether a1 is related to (or included in) a2.

Operators

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

val join : t -> t -> t

join a1 a2 computes an upper bound of a1 and a2.

val meet : t -> t -> t

meet a1 a2 computes a lower bound of a1 and a2.

val widen : 'a Core.All.ctx -> t -> t -> t

widen ctx a1 a2 computes an upper bound of a1 and a2 that ensures stabilization of ascending chains.

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

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

val init : Core.All.program -> t

Initial abstract element

val exec : Core.All.stmt -> ('a, t) Abstraction.Simplified.simplified_man -> 'a Core.All.ctx -> t -> t option

Computation of post-conditions

val ask : ('a, 'r) Core.All.query -> ('a, t) Abstraction.Simplified.simplified_man -> 'a Core.All.ctx -> t -> 'r option

Handler of queries

Printing

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

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

Printer of an abstract element.

Printer of an expression's value

OCaml

Innovation. Community. Security.