X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=inline;f=helm%2Focaml%2Fcic_unification%2FcicUnification.mli;h=5887f004d858d8d6e7c11a49d8dd733c262ab131;hb=b16f00b453ffb484e9e6b02b00917ab7920b1a38;hp=464927a2d05ff6738da9132c83698febb26d31a4;hpb=0328c0e2938ce714d5d7358afdca00195577198e;p=helm.git diff --git a/helm/ocaml/cic_unification/cicUnification.mli b/helm/ocaml/cic_unification/cicUnification.mli index 464927a2d..5887f004d 100644 --- a/helm/ocaml/cic_unification/cicUnification.mli +++ b/helm/ocaml/cic_unification/cicUnification.mli @@ -23,37 +23,41 @@ * http://cs.unibo.it/helm/. *) -exception UnificationFailed -exception Free -exception OccurCheck +type failure_msg -val delift : - Cic.context -> Cic.metasenv -> (Cic.term option) list -> Cic.term -> Cic.term * Cic.metasenv +exception UnificationFailure of failure_msg;; +exception Uncertain of string;; +exception AssertFailure of failure_msg;; -(* The entry (i,t) in a substitution means that *) -(* (META i) have been instantiated with t. *) -type substitution = (int * Cic.term) list +val failure_msg_of_string: string -> failure_msg +val explain_error: failure_msg -> string (* fo_unif metasenv context t1 t2 *) (* unifies [t1] and [t2] in a context [context]. *) (* Only the metavariables declared in [metasenv] *) (* can be used in [t1] and [t2]. *) +(* The returned substitution can be directly *) +(* withouth first unwinding it. *) val fo_unif : - Cic.metasenv -> Cic.context -> Cic.term -> Cic.term -> - substitution * Cic.metasenv + Cic.metasenv -> Cic.context -> + Cic.term -> Cic.term -> CicUniv.universe_graph -> + Cic.substitution * Cic.metasenv * CicUniv.universe_graph -(* apply_subst subst t *) -(* applies the substitution [sust] to [t] *) -val apply_subst : substitution -> Cic.term -> Cic.term +(* fo_unif_subst metasenv subst context t1 t2 *) +(* unifies [t1] and [t2] in a context [context] *) +(* and with [subst] as the current substitution *) +(* (i.e. unifies ([subst] [t1]) and *) +(* ([subst] [t2]) in a context *) +(* ([subst] [context]) using the metasenv *) +(* ([subst] [metasenv]) *) +(* Only the metavariables declared in [metasenv] *) +(* can be used in [t1] and [t2]. *) +(* [subst] and the substitution returned are not *) +(* unwinded. *) +(*CSC: fare un tipo unione Unwinded o ToUnwind e fare gestire la + cosa all'apply_subst!!!*) +val fo_unif_subst : + Cic.substitution -> Cic.context -> Cic.metasenv -> + Cic.term -> Cic.term -> CicUniv.universe_graph -> + Cic.substitution * Cic.metasenv * CicUniv.universe_graph -(* apply_subst_reducing subst (Some (mtr,reductions_no)) t *) -(* performs as (apply_subst subst t) until it finds an application of *) -(* (META [mtr]) that, once unwinding is performed, creates a new *) -(* beta-redex; in this case up to [reductions_no] consecutive *) -(* beta-reductions are performed. *) -(* Hint: this function is usually called when [reductions_no] *) -(* eta-expansions have been performed and the head of the new *) -(* application has been unified with (META [meta_to_reduce]): *) -(* during the unwinding the eta-expansions are undone. *) -val apply_subst_reducing : - substitution -> (int * int) option -> Cic.term -> Cic.term