Module Nl.Infsys


module Infsys: sig  end
Inference system for nonlinear multiplication as an extension of the AC inference system Ac.Make instantiated with the signature Pprod.Sig of nonlinear multiplication.

A nonlinear context consists of equalities of the form x = y*z with x, y, z variables.

The following invariants are maintained.

Forward chaining is used to keep contexts confluent In addition to AC inferences, this inference system


type e
val current : unit -> e
Parameters:
? : unit
val initialize : e -> unit
Intitialize inference system with equality set.
Parameters:
? : e
val finalize : unit -> e
Retrieve modified equality set.
Parameters:
? : unit
val abstract : Term.t -> unit
(g[a]; e; p) ==> (g[x]; e, x = a; p) with
Parameters:
? : Term.t
val merge : Fact.Equal.t -> unit
(g, a = b; e; p) ==> (g; e'; p') with
Parameters:
? : Fact.Equal.t
val propagate : Fact.Equal.t -> unit
(g, e; p) ==> (g; e'; p) with
Parameters:
? : Fact.Equal.t
val dismerge : Fact.Diseq.t -> unit
(g, a <> a; e; p) ==> (g; e'; p') with a, b i-pure, |= e', p' <=> |= e, p, a <> b.
Parameters:
? : Fact.Diseq.t
val propagate_diseq : Fact.Diseq.t -> unit
(g; e; p) ==> (g; e'; p') with
Parameters:
? : Fact.Diseq.t
val branch : unit -> unit
(g; e; p) ==> (g, c1; e; p) | ... | (g, cn; e; p) with
Parameters:
? : unit
val normalize : unit -> unit
(g; e; p) ==> (g'; e'; p') where source and target configuration are equivalent.
Parameters:
? : unit