sig
type derivation =
Good of TypeCore.env * Derivations.judgement * Derivations.rule
| Bad of TypeCore.env * Derivations.judgement * Derivations.rule list
and rule = Derivations.rule_instance * Derivations.derivation list
and rule_instance = string
and judgement =
JSubType of TypeCore.typ * TypeCore.typ
| JSubVar of TypeCore.var * TypeCore.typ
| JSubPerm of TypeCore.typ
| JSubPerms of TypeCore.typ list
| JSubFloating of TypeCore.typ
| JSubConstraint of TypeCore.mode_constraint
| JSubConstraints of TypeCore.mode_constraint list
| JEqual of TypeCore.typ * TypeCore.typ
| JLt of TypeCore.typ * TypeCore.typ
| JGt of TypeCore.typ * TypeCore.typ
| JNothing
| JAdd of TypeCore.typ
| JDebug of TypeCore.typ * TypeCore.typ
type result =
(TypeCore.env * Derivations.derivation, Derivations.derivation)
Either.either LazyList.t
val no_proof : TypeCore.env -> Derivations.judgement -> Derivations.result
val apply_axiom :
TypeCore.env ->
Derivations.judgement ->
Derivations.rule_instance -> TypeCore.env -> Derivations.result
val try_several :
TypeCore.env ->
Derivations.judgement ->
Derivations.rule_instance ->
'a list ->
(TypeCore.env -> 'a list -> 'a -> Derivations.result) ->
Derivations.result
val par :
TypeCore.env ->
Derivations.judgement ->
Derivations.rule_instance ->
Derivations.result list -> Derivations.result
val nothing :
TypeCore.env -> Derivations.rule_instance -> Derivations.result
val option_of_result : Derivations.result -> TypeCore.env option
val is_good : Derivations.result -> bool
type state
val try_proof :
TypeCore.env ->
Derivations.judgement ->
Derivations.rule_instance -> Derivations.state -> Derivations.result
val premises :
TypeCore.env ->
(TypeCore.env -> Derivations.result) list -> Derivations.state
val ( >>= ) :
Derivations.result ->
(TypeCore.env -> Derivations.state) -> Derivations.state
val qed : TypeCore.env -> Derivations.state
val fail : Derivations.state
val ( >>~ ) :
Derivations.state -> (TypeCore.env -> TypeCore.env) -> Derivations.state
end