Commit fe7ab6b7 authored by Andrei Paskevich's avatar Andrei Paskevich

Expr: recursive funciton definitions (tbc)

parent f5cca463
This diff is collapsed.
......@@ -40,9 +40,11 @@ val ps_hash : psymbol -> int
type ps_kind =
| PKnone (* non-pure symbol *)
| PKlocal (* local let-function *)
| PKfunc of int (* top-level let-function or constructor *)
| PKpred (* top-level let-predicate *)
| PKpv of pvsymbol (* local let-function *)
| PKlocal (* new local let-function *)
| PKls of lsymbol (* top-level let-function or let-predicate *)
| PKfunc of int (* new top-level let-function or constructor *)
| PKpred (* new top-level let-predicate *)
| PKlemma (* top-level or local let-lemma *)
val create_psymbol : preid -> ?ghost:bool -> ?kind:ps_kind -> cty -> psymbol
......@@ -144,10 +146,10 @@ and rec_defn = private {
}
and fun_defn = {
fun_sym : psymbol;
fun_expr : expr; (* Efun *)
fun_sym : psymbol; (* exported symbol *)
fun_rsym : psymbol; (* internal symbol *)
fun_expr : expr; (* Efun *)
fun_varl : variant list;
fun_varv : pvsymbol;
}
val e_label : ?loc:Loc.position -> Slab.t -> expr -> expr
......
......@@ -971,7 +971,3 @@ let cty_add_post c post =
let c = cty_add_reads c (List.fold_left t_freepvs Spv.empty post) in
check_tvs c.cty_reads c.cty_args c.cty_result [] post Mexn.empty;
{ c with cty_post = post @ c.cty_post }
let cty_pop_post c = match c.cty_post with
| [] -> invalid_arg "Ity.cty_pop_post"
| _::post -> { c with cty_post = post }
......@@ -351,6 +351,3 @@ val cty_add_post : cty -> post list -> cty
This function performs capture: the formulas in [fl] may refer to the
variables in [cty.cty_args]. Only the new external dependencies in [fl]
are added to [cty.cty_reads] and frozen. *)
val cty_pop_post : cty -> cty
(** [cty_pop_post cty] removes the first post-condition from [cty.cty_post]. *)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment