package libsail
Module Libsail.Type_envSource
Linearize cases involving power where we would otherwise require the SMT solver to use non-linear arithmetic.
Source
val add_outcome :
Ast.id ->
(Ast.typquant * Ast.typ * Ast.kinded_id list * Ast.id list * t) ->
t ->
tSource
val get_outcome :
Ast.l ->
Ast.id ->
t ->
Ast.typquant * Ast.typ * Ast.kinded_id list * Ast.id list * tSome of the code in the environment needs to use the smt solver, which is defined below. To break the circularity this would cause (as the prove code depends on the environment), we add a reference to the prover to the initial environment.
This should not be used outside the type checker, as initial_env sets up a correct initial environment.