swh:1:snp:f06d4d1f1c56d17a2f00ca108b0c7636a874db0d
Raw File
Tip revision: 3f4a0bd5596888cd8d28b97687d477942187aa5f authored by Pierre-Yves Strub on 11 June 2022, 06:10:21 UTC
In loop fusion/fission, add more constraints on the epilog
Tip revision: 3f4a0bd
ecBaseLogic.mli
(* -------------------------------------------------------------------- *)
open EcTypes
open EcCoreFol

(* -------------------------------------------------------------------- *)
module Epoch : sig
  type t

  val init : t

  val lt  : t -> t -> bool
  val leq : t -> t -> bool

  val next : t -> t
  val max : t -> t -> t
  val min : t -> t -> t
end

(* -------------------------------------------------------------------- *)
type local_kind =
| LD_var    of ty * form option
| LD_mem    of EcMemory.memtype
| LD_modty  of mod_ns * EcModules.module_type
| LD_hyp    of form
| LD_abs_st of EcModules.abs_uses

(* -------------------------------------------------------------------- *)
type l_local = {
  l_id    : EcIdent.t;
  l_epoch : Epoch.t;
  l_kind  : local_kind;
}

type l_locals = l_local list

val l_id    : l_local -> EcIdent.t
val l_epoch : l_local -> Epoch.t

(* -------------------------------------------------------------------- *)
type hyps = {
  h_tvar  : EcDecl.ty_params;
  h_local : l_local list;
}

val hyps_epoch : hyps -> Epoch.t

val by_id_opt : EcIdent.t -> hyps -> l_local option
back to top