Index of values


( !* ) [Types]
This is Lazy.force.
(!!) [Types]
Asserts that this type is actually a TyOpen.
(!!=) [Types]
Asserts that this type is actually a TySingleton (TyOpen ...).
(>>=) [Derivations]
Use this operator to chain the premises of a rule in a monadic style.
(>>=) [Types]
bind for the option monad.
(>>|) [Derivations]
Simple composition that discards derivations.
(>>~) [Derivations]
Perform an operation on the env part of a state without giving any justification for it.
(@->) [Types]
(^=>) [Types]
The standard implication connector, with the right associativity.
(|>) [Types]
The pipe operator.
(|||) [Types]
either operator for the option monad

A
add [Permissions]
add env var t adds t to the list of permissions for p, performing all the necessary legwork.
add [Hashcons]
add [GMap.S]
add [GSet.S]
add [Fix.IMPERATIVE_MAPS]
add_hint [Permissions]
add_include_dir [Driver]
add_location [TypeCore]
add_perm [Permissions]
add_perm env t adds a type t with kind PERM to env, returning the new environment.
adopter_field [Mezzo2UntypedMezzo]
all_dependencies [Modules]
allow_exclusive [Fact]
A utility function for extending a fact with the statement ``without any hypotheses, this type is exclusive''.
analyze_data_types [Variance]
Perform variance computations on a set of data types, and return an environment where variances have been updated.
analyze_data_types [FactInference]
analyze_data_types env vars assumes that vars forms a group of mutually recursive algebraic data type definitions.
apply_axiom [Derivations]
This is a way of proving a judgement by using a rule without premises, i.e.
arity [Kind]
arity k is the arity of k, viewed as an arrow kind.
as_arrow [Kind]
as_arrow k transforms the kind k to an n-ary arrow kind.
assume [FactInference]
assume env c produces a new environment where the mode constraint c is assumed (i.e., it is added to the environment as a new hypothesis).

B
beprintf [MzString]
Make all your pretty-printers work with buffers, use them with %a and use this to get a Printf.eprintf
bfprintf [MzString]
Make all your pretty-printers work with buffers, use them with %a and use this to get a Printf.fprintf
bind [Option]
Maps None to None and Some x to f x.
bind_data_type_group [DataTypeGroup]
This function processes a data_type_group, and opens the corresponding binders in the toplevel_items that follow.
bind_datacon_parameters [Types]
bind_evars [Expressions]
Bind a set of term variables (let-bindings).
bind_flexible [TypeCore]
Bind a flexible type variable.
bind_flexible_in_type [DeBruijn]
bind_rigid_in_type env binding ty opens the binding binding, whose scope is the type ty, by replacing the bound variable with a new flexible variable.
bind_patexprs [Expressions]
Bind a set of multiple bindings (and keyword).
bind_rigid [TypeCore]
Bind a rigid type variable.
bind_rigid_in_type [DeBruijn]
bind_rigid_in_type env binding ty opens the binding binding, whose scope is the type ty, by replacing the bound variable with a rigid variable.
bind_vars [Expressions]
Bind a set of type variables (Λ-bindings).
biprintf [MzString]
In case you need to ignore some stuff.
bottom [Fact]
The least fact is defined as constant Mode.bottom.
bottom [Mode]
The least element of the lattice.
bottom [Fix.PROPERTY]
box [Bash]
Make a title.
bprintf [MzString]
Make all your pretty-printers work with buffers, use them with %a and use this to get a Printf.printf
bsprintf [MzString]
Make all your pretty-printers work with buffers and use this to get a Printf.sprintf

C
cardinal [GMap.S]
cardinal [GSet.S]
check [Interfaces]
Because this is a tricky operation, the check function needs access to both the internal representation of the type-checked file (this is a TypeCore.env), the external representation of the interface (this is a SurfaceSyntax.interface), and the list of exported variables from the implementation, along with their canonical names and kinds (Driver knows how to figure that out).
check [Log]
Assert something, otherwise display an error message and fail
check_declaration_group [TypeChecker]
check_declaration_group env declarations items type-checks a set of top-level declarations; in order to do that, it will end up opening certain binders, which is why it takes a list of items which will be correctly transformed so as to refer to the variables that have been opened.
check_for_duplicates [MzList]
Checking for duplicates in a list.
choose [GMap.S]
choose [GSet.S]
clean [TypeCore]
clean env sub_env t tries to clean up t, found in sub_env, so that it makes sense in env, and throws UnboundPoint otherwise
clear [Fix.IMPERATIVE_MAPS]
collect [TypeOps]
collect t syntactically separates t into a structural part and a permission part, i.e.
colors [Bash]
They have been chosen arbitrarily out of the 256-color set available.
combine3 [MzList]
Same as List.combine but for triples instead of pairs.
compare [PersistentUnionFind]
compare [PersistentRef]
compare [Identifier.Make]
compare [GMap.S]
compare [GSet.S]
complete [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.
complete [Mode.ModeMap]
compose [Fact]
compose fact facts composes a fact of arity n -- i.e.
conjunction [Fact]
Conjunction of hypotheses.
constant [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.
corestrict [GMap.S]
cps_map [MzList]
A CPS version of List.map.
create [Mark]
create [PersistentUnionFind]
create [Hashcons]
create [Fix.IMPERATIVE_MAPS]
cut [MzList]

D
debug [Log]
Report some debugging information.
debug_level [Log]
def_for_branch [Types]
def_for_datacon [Types]
diff [GSet.S]
disallow_exclusive [Fact]
A utility function for removing the possibility that ``this type is exclusive''.
disjoint [GSet.S]
domain [GMap.S]
domain [InfiniteArray]
domain a is a fresh copy of an initial segment of the array a whose length is extent a.
dont_inline [Utils]
drop [Derivations]
Tie the knot.
drop_derivation [Derivations]
Get the env option part of a result.
duplicable [Fact]
duplicable is implication ModeDuplicable.

E
e_unit [Expressions]
The () (unit) expression.
elements [GSet.S]
empty [PersistentRef]
empty [Interpreter]
empty [GMap.S]
empty [GSet.S]
empty_env [TypeCore]
The empty environment.
enable_debug [Log]
Enable debugging information.
endo_map [GMap.S]
epsubst [Expressions]
eq [PersistentRef]
equal [Fact]
Equality.
equal [TypeCore]
equal env t1 t2 tells whether t1 and t2 can be determined to be equal in environment env; it raises UnboundPoint is any of these two types doesn't make sense in env.
equal [Mode]
Equality.
equal [Identifier.Make]
equal [GSet.S]
equal [MzList]
Equality of lists, up to equality of elements.
equal [Fix.PROPERTY]
equals [Mark]
error [Log]
Report a fatal error.
esubst_toplevel_items [Expressions]
eunloc [Expressions]
Remove any ELocated node in front of an expression.
eval_lone_implementation [Interpreter]
eval_unit [Interpreter]
expand_if_one_branch [Types]
extent [InfiniteArray]
extent a is the length of an initial segment of the array a that is sufficiently large to contain all set operations ever performed.
extract [Option]
When you're sure you have Some
extract_constraints [Hoist]

F
fail [Derivations]
If a derivation fails...
file_get_contents [Utils]
filter_some [MzList]
Turns [Some a; None; ...] into [a; ...]
find [PersistentUnionFind]
find [Hashcons]
find [GMap.S]
find [Fix.IMPERATIVE_MAPS]
find_and_instantiate_branch [Types]
find_and_remove [GMap.S]
find_opt [MzList]
find_opt [MzMap.S]
same as Map.find but returns a 'a option
find_type_by_name [Types]
fine_add [GMap.S]
fine_union [GMap.S]
flatten [Option]
flatten_star [Types]
flavor_for_branch [Types]
fold [TypeCore]
General fold operation.
fold [PersistentUnionFind]
fold [PersistentRef]
fold [GMap.S]
fold [GSet.S]
fold_definitions [TypeCore]
Fold over all opened types definitions.
fold_exists [Types]
fold_forall [Types]
fold_left2i [MzList]
Same as fold_left2 except that the function takes the current index in the list
fold_left3 [MzList]
Same as fold_left2 but with three lists.
fold_lefti [MzList]
Same as fold_left except that the function takes the current index in the list
fold_rev [GMap.S]
fold_righti [MzList]
Same as fold_right except that the function takes the current index in the list.
fold_star [Types]
fold_terms [TypeCore]
Fold over all opened terms, providing the corresponding var and permissions.
fold_type [TypeErrors]
This is only for display purposes.
fresh_auto_var [Types]
fresh_name [Utils]
fresh_var [Utils]
fst3 [Types]

G
get [PersistentRef]
get [InfiniteArray]
get a i returns the element contained at offset i in the array a.
get_adopts_clause [Types]
get_arity [Types]
get_branches [Types]
get_definition [TypeCore]
Get the definition, if any.
get_exports [TypeCore]
get_exports env mname lists the names exported by module mname in env.
get_fact [TypeCore]
Get a fact
get_floating_permissions [TypeCore]
Get the list of permissions that are floating in this environment.
get_kind [TypeCore]
Get the kind of any given variable.
get_kind_for_type [Types]
get_location [Types]
get_locations [TypeCore]
Get the locations
get_name [TypeCore]
get_names [TypeCore]
Get the names associated to a variable.
get_permissions [TypeCore]
Get the permissions of a term variable.
get_variance [Types]

H
has_mode [FactInference]
has_mode mode env ty tells whether the predicate mode ty is satisfied, using the information stored in env about the ambient type definitions and mode assumptions.
hash [Identifier.Make]
hoist [Hoist]
html_error [TypeErrors]
...

I
ignore_map [MzList]
Map a function and then discard the result.
implementation [UntypedOCamlPrinter]
implementation [Compile]
implementation [Grammar]
implication [Fact]
implication h m constructs a fact of the form h => m.
import_flex_instanciations [TypeCore]
import_flex_instanciations env sub_env brings into env all the flexible variable instanciations that happened in sub_env without modifying the rest of env.
import_interface [Interfaces]
Import a given module into scope.
index [MzList]
Find the index of the first element in a list that satisfies a predicate.
init [PersistentUnionFind]
init [Lexer]
init filename must be called before using the lexer.
instantiate_branch [Types]
instantiate_flexible [TypeCore]
instantiate env var t tries to instantiate the flexible variable var with t.
instantiate_type [Types]
inter [GSet.S]
inter [MzMap.S]
inter m1 m2 keeps the values from m1
interface [UntypedOCamlPrinter]
interface [Grammar]
internal_print [Fact]
internal_print fact is a textual representation of the fact fact.
interpret [Driver]
is_duplicable [FactInference]
A specialized version of has_mode.
is_empty [GMap.S]
is_empty [GSet.S]
is_exclusive [FactInference]
A specialized version of has_mode.
is_flexible [TypeCore]
Is this variable a flexible type variable or not?
is_good [Derivations]
This tells whether a result is successful or not.
is_inconsistent [TypeCore]
Is the current environment inconsistent?
is_marked [TypeCore]
is_maximal [Fact]
Recognition of maximal facts is not performed.
is_maximal [Mode]
A test for the top element of the lattice.
is_maximal [Fix.PROPERTY]
is_perm [Types]
is_rigid [TypeCore]
is_singleton [GMap.S]
is_some [Option]
is_term [Types]
is_tyapp [Types]
Inspecting
is_type [Types]
is_user [Types]
iter [PersistentUnionFind]
iter [PersistentRef]
iter [GMap.S]
iter [GSet.S]
iter [Option]
The name speaks for itself
iter [Fix.IMPERATIVE_MAPS]
iter2 [GMap.S]
iter2i [MzList]
Same as List.iteri but with two lists.
iter3 [MzList]
Same as List.iter but with three lists.

J
join [Fact]
The lattice join (i.e., least upper bound).
join_many [Fact]

K
keep_only_duplicable [Permissions]
Only keep the duplicable portions of the environment.
keys [MzMap.S]
Get a list of all keys in a map.
keyword_table [OCamlKeywords]

L
last [MzList]
Get the last element of a list.
leq [Fact]
The lattice ordering.
leq [Variance]
Compare two variances and tell if the second one subsumes the first one.
leq [Mode]
The lattice ordering.
lfp [Fix.Make]
lift [DeBruijn]
lift i t lifts type t by i
lift [GMap.S]
locate [TypeCore]
Refresh the location of an environment.
location [TypeCore]
Get the current location in the environment.
lookup [GMap.S]
lookup_and_remove [GMap.S]

M
make [PersistentRef]
make [MzList]
make n f creates [f 1; ...; f n].
make [InfiniteArray]
make x creates an infinite array, where every slot contains x.
make_datacon_letters [Types]
map [TypeCore]
General map operation.
map [GMap.S]
map [Option]
map f opt maps None to None and Some a to Some (f a)
map2i [MzList]
Same as map2 but pass an extra parameter that represents the index
map_flatten [MzList]
map_none [Option]
map_none n opt maps None to n and Some m to m.
map_some [MzList]
Map and discard some elements at the same time.
mark [TypeCore]
mark_inconsistent [TypeCore]
Mark the environment as being inconsistent.
mark_reachable [TypeOps]
Mark all type variables reachable from a type, including via the ambient permissions.
max [MzList]
Find the biggest element in a list
meet [Fact]
The lattice meet.
meet [Mode]
The lattice meet (i.e., greatest lower bound).
mem [GMap.S]
mem [GSet.S]
memoize [Identifier.Make]
merge_envs [Merge]
When the control-flow diverges, one needs to merge the environments, that is, compute a set of permissions that subsumes the two environments.
merge_left [TypeCore]
Merge two variables while keeping the information about the left one.
minus [MzMap.S]
minus m1 m2 returns m1 minus all the elements that are also in m2, that is, m1 \ (m1 ∩ m2)
module_name [TypeCore]
Get the current module name.
modulo_flex [TypeCore]
modulo_flex_v [TypeCore]
Make sure we're dealing with the real representation of a variable.
msg [Log]
Analogous to error, but does not raise any exception; instead, just produces and returns the error message as a string.

N
neq [PersistentRef]
no_proof [Derivations]
Here is how to not prove a judgement.
nothing [Derivations]
If you're iterating over a series of premises, it is sometimes convenient to say that one of them requires no special operations because of a certain rule...
nth_opt [MzList]
Just like List.nth except it returns an Option type.

P
p [Lexer]
p displays the position that is passed as an argument.
p_kind [Types.TypePrinter]
p_unit [Expressions]
The () (unit) pattern.
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.
pconstraint [Types.TypePrinter]
pdeclarations [Expressions.ExprPrinter]
pderivation [DerivationPrinter]
pdoc [Types.TypePrinter]
penv [Types.TypePrinter]
pexports [Types.TypePrinter]
pexpr [Expressions.ExprPrinter]
pfact [Types.TypePrinter]
pmaybe_qualified_datacon [Expressions.ExprPrinter]
pname [Types.TypePrinter]
pnames [Types.TypePrinter]
point_by_name [TypeCore]
point_by_name env ?mname x finds name x as exported by module mname (default: module_name env) in env.
ppat [Expressions.ExprPrinter]
ppermission_list [Types.TypePrinter]
ppermissions [Types.TypePrinter]
premises [Derivations]
The most intuitive way of writing down the premises for a judgement: you just list all the results that have to be successful for this judgement to be true, and premises takes care of chaining them left-to-right.
print [Fact]
print param head fact is a textual representation of the fact fact.
print [Mode]
Printing.
print [Identifier.Make]
print_binder [Expressions.ExprPrinter]
print_binders [Types.TypePrinter]
print_constraint [Types.TypePrinter]
print_data_field_def [Types.TypePrinter]
print_datacon [Types.TypePrinter]
print_datacon_reference [Expressions.ExprPrinter]
print_declaration [Expressions.ExprPrinter]
print_declarations [Expressions.ExprPrinter]
print_derivation [DerivationPrinter]
print_ebinder [Expressions.ExprPrinter]
print_error [TypeErrors]
Once an exception is catched, it can be printed with Log.error and %a...
print_error [Lexer]
print_error displays a lexer error.
print_exports [Types.TypePrinter]
print_expr [Expressions.ExprPrinter]
print_facts [Types.TypePrinter]
print_field [Types.TypePrinter]
print_field_name [Types.TypePrinter]
print_kind [Kind]
print_kind converts a kind to a textual representation.
print_maybe_qualified_datacon [Expressions.ExprPrinter]
print_names [Types.TypePrinter]
print_pat [Expressions.ExprPrinter]
print_patexpr [Expressions.ExprPrinter]
print_patexprs [Expressions.ExprPrinter]
print_permission_list [Types.TypePrinter]
print_permissions [Types.TypePrinter]
print_point [Types.TypePrinter]
print_position [Lexer]
print_position displays the lexer's current position.
print_quantified [Types.TypePrinter]
print_rec_flag [Expressions.ExprPrinter]
print_sig_item [Expressions.ExprPrinter]
print_signature [Driver]
print_signature prints out (in order, and in a fancy manner) the types that have been found in the file.
print_tapp [Expressions.ExprPrinter]
print_type [Types.TypePrinter]
print_unresolved_branch [Types.TypePrinter]
print_var [Types.TypePrinter]
process [Driver]
process doesn't catch exceptions.
psigitem [Expressions.ExprPrinter]
ptag [Utils]
ptype [Types.TypePrinter]
pvar [Types.TypePrinter]

Q
qed [Derivations]
This is the final operator that finishes a derivation.

R
raise_error [TypeErrors]
This function raises an exception that will be later on catched in Driver.
raise_level [Log]
Perform an operation with the debug level raised by an amount.
read [Utils]
reduce [MzList]
Same as fold_left, but start folding on the head of the list instead of giving an initial element.
refresh_mark [TypeCore]
register [Identifier.Make]
remove [GMap.S]
remove [GSet.S]
replace [MzString]
replace s1 s2 s replaces all occurrences of s1 with s2 in s.
repr [PersistentUnionFind]
reset [Bash]
Reset the cursor to the top-left corner of the screen
reset_permissions [TypeCore]
Reset the permissions of a term variable.
resolve_branch [Types]
resolved_datacons_equal [TypeCore]
Equality function on resolved data constructors.
root_dir [Configure]
run [Driver]
run runs the specified function and prints any error that may pop up.

S
same [TypeCore]
Are these two variables the same? This is a low-level operation and you probably want to use equal instead.
same [PersistentUnionFind]
same_absolute_path [Utils]
set [PersistentRef]
set [InfiniteArray]
set a i x sets the element contained at offset i in the array a to x.
set_definition [TypeCore]
Set a definition.
set_fact [TypeCore]
Set a fact
set_floating_permissions [TypeCore]
Set the list of permissions that are floating in this environment.
set_module_name [TypeCore]
Set the current module name.
set_permissions [TypeCore]
Set the permissions of a term variable.
silent [Log]
Perform an operation with the debug output disabled.
singleton [GMap.S]
singleton [GSet.S]
snd3 [Types]
split [MzString]
split s c will split string s on character c
split3 [MzList]
Same as List.split but for triples instead of pairs.
strict_add [GMap.S]
strip_forall [Types]
sub [Permissions]
sub env var t tries to extract t from the available permissions for var and returns, if successful, the resulting environment.
sub_constraint [Permissions]
sub_type [Permissions]
sub_type env t1 t2 tries to perform t1 - t2.
subset [GSet.S]
substring [MzString]
substring s i j will return all characters from string s comprised between indices i (included) and j (excluded).

T
take [MzList]
If f may convert an 'a into a 'b, then take f l returns the first convertible element in the list, along with the remaining elements in the list.
take_bool [MzList]
thd3 [Types]
theight [Bash]
The terminal's height.
to_list [MzMap.S]
to_list translates the map to a list.
to_list [Option]
token [Lexer]
token is the main entry point of the lexer.
top [Mode]
The greatest element of the lattice.
total [Mode.ModeMap]
tpsubst [DeBruijn]
tpsubst env t1 var t2 subtitutes t1 for var in t2.
tpsubst_expr [Expressions]
translate_data_type_group [TransSurface]
translate_data_type_group bind env group translates a data type group.
translate_implementation [TransSurface]
translate_implementation translates a compilation unit.
translate_implementation [Mezzo2UntypedMezzo]
translate_implementation [UntypedMezzo2UntypedOCaml]
translate_interface [TransSurface]
translate_interface translates an interface.
translate_interface [Mezzo2UntypedMezzo]
translate_interface [UntypedMezzo2UntypedOCaml]
translate_interface_as_implementation_filter [UntypedMezzo2UntypedOCaml]
translate_module_name [UntypedMezzo2UntypedOCaml]
translate_type [TransSurface]
translate_type translates a type.
try_finally [Utils]
try_proof [Derivations]
This is the most frequent way of trying to prove a judgement.
try_several [Derivations]
This is another way of proving a judgement, namely by trying several instances of the same rule on different items.
tsubst [DeBruijn]
tsubst t1 i t2 substitues t1 for index i in t2
tsubst_data_type_group [DeBruijn]
Same thing with a data type group.
tsubst_toplevel_items [Expressions]
tsubst_unresolved_branch [DeBruijn]
Same thing with a data type branch.
twidth [Bash]
The terminal's width.
ty_app [Types]
ty_bar [Types]
ty_equals [Types]
ty_tuple [Types]
ty_unit [Types]

U
unify [Permissions]
unify env p1 p2 merges two vars, and takes care of dealing with how the permissions should be merged.
union [PersistentUnionFind]
union [GMap.S]
union [GSet.S]
union [MzMap.S]
union m1 m2 keeps the values from m1
union_computed [PersistentUnionFind]
unit_bool [Option]
Since unit option and bool are isomorphic, this function implements the morphism from unit option to bool.
update [PersistentUnionFind]
update_definition [TypeCore]
Update a definition.

V
valid [PersistentUnionFind]
valid [PersistentRef]
variance [Types]
Get the variance of the i-th parameter of a data type.

W
warn [Log]
A warning is a message that always appears, even when debug is disabled.
warn_count [Log]
warn_or_error [TypeErrors]
This function will emit a warning or potentially raise an error, depending on the runtime flags.
with_open_in [Utils]
with_open_out [Utils]

X
xor [MzMap.S]
xor m1 m2 is (m1m2) \ (m1m2)