module Fact: sig .. end
Conjunction of hypotheses.
type parameter = int
module ParameterMap: Map.S with type key = parameter
type property = fact
type fact = hypothesis Mode.ModeMap.t
type hypothesis =
type hypotheses = Mode.mode ParameterMap.t
val conjunction : ('a -> hypothesis) -> 'a list -> hypothesis
Conjunction of hypotheses.
val bottom : fact
The least fact is defined as constant Mode.bottom.
val equal : fact -> fact -> bool
Equality.
val leq : fact -> fact -> bool
The lattice ordering.
val join : fact -> fact -> fact
The lattice join (i.e., least upper bound).
val join_many : ('a -> fact) -> 'a list -> fact
val meet : fact -> fact -> fact
The lattice meet. Beware: this operation is defined only when its
left-hand argument is a fact of arity zero. (Such a fact is isomorphic to
a mode. When both arguments are facts of arity zero, this operation has
the same effect as Mode.meet.)
val is_maximal : fact -> bool
Recognition of maximal facts is not performed. This function
is provided for the benefit of Fix.
val constant : Mode.mode -> fact
A mode m can be viewed as a fact: every mode m' that is equal
to or above m is mapped to true, the empty conjunction, and
every mode m' that does not satisfy this is mapped to false.
val implication : Mode.mode -> hypothesis -> fact
implication h m constructs a fact of the form h => m. (More
precisely, in this fact, the top mode is mapped to the hypothesis
trivial; every (non-top) mode greater than or equal to m is
mapped to the hypothesis h; and every other mode is mapped to
the hypothesis HFalse.)
val duplicable : hypothesis -> fact
duplicable is implication ModeDuplicable.
val allow_exclusive : fact -> fact
A utility function for extending a fact with the statement
``without any hypotheses, this type is exclusive''.
val disallow_exclusive : fact -> fact
A utility function for removing the possibility that ``this
type is exclusive''.
val parameter : parameter -> fact
A fact for a parameter p is a conjunction of implications of
the form m p => m, where m ranges over every mode.
val compose : fact -> fact list -> fact
compose fact facts composes a fact of arity n -- i.e. a fact
that makes sense in the presence of n parameters -- with n
facts about the actual parameters. If these facts have arity k,
then the final fact has arity k as well.
val complete : fact -> fact
complete fact completes an incomplete fact (i.e., a mode map
whose domain does not contain all modes) so as to obtain a valid
fact. Use with caution.
val print : (parameter -> PPrint.document) ->
PPrint.document -> fact -> PPrint.document
print param head fact is a textual representation of the fact
fact. The function param is used to map a parameter to its textual
representation. head is a textual representation of the type that
appears in the goals.
val internal_print : fact -> PPrint.document
internal_print fact is a textual representation of the fact
fact. Parameters are represented by their number, and there
is no head. This is for internal use.