Module BottomUp.Univ

module Univ: sig .. end

This module is present to allow the user to extend explanations with her own types.


This is largely inspired by this thread

type t 

The universal type

type 'a embedding 

Conversion between the universal type and 'a

val embed : unit -> 'a embedding

Create a new embedding. Values packed by a given embedding can only be unpacked by the same embedding.

val pack : 'a embedding -> 'a -> t
val unpack : 'a embedding -> t -> 'a option
val compatible : 'a embedding -> t -> bool