package mopsa

  1. Overview
  2. Docs
MOPSA: A Modular and Open Platform for Static Analysis using Abstract Interpretation

Install

Dune Dependency

Authors

Maintainers

Sources

mopsa-analyzer-v1.1.tar.gz
md5=fdee20e988343751de440b4f6b67c0f4
sha512=f5cbf1328785d3f5ce40155dada2d95e5de5cce4f084ea30cfb04d1ab10cc9403a26cfb3fa55d0f9da72244482130fdb89c286a9aed0d640bba46b7c00e09500

doc/combiner/Combiner/Domain/DomainToCombiner/argument-1-D/index.html

Parameter DomainToCombiner.D

Domain header

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

type 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 : t -> t -> bool

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

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.change) -> (t * Core.All.change) -> t

merge pre (post1, change1) (post2, change2) 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 changes change1 and change2 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 -> ('a, t) Core.All.man -> 'a Core.All.flow -> 'a Core.All.post option

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.