Module Biabduction__Match
- val hpara_match_with_impl : IR.Tenv.t -> bool -> Biabduction.Predicates.hpara -> Biabduction.Predicates.hpara -> bool
- val hpara_dll_match_with_impl : IR.Tenv.t -> bool -> Biabduction.Predicates.hpara_dll -> Biabduction.Predicates.hpara_dll -> bool
- type hpred_pat- =- {- hpred : Biabduction.Predicates.hpred;- flag : bool;- }
- Type for a hpred pattern. - flag=falsemeans that the implication between hpreds is not considered, and- flag = truemeans that it is considered during pattern matching.
- type sidecondition- = Biabduction.Prop.normal Biabduction.Prop.t -> Biabduction.Predicates.subst -> bool
- val prop_match_with_impl : IR.Tenv.t -> Biabduction.Prop.normal Biabduction.Prop.t -> sidecondition -> IR.Ident.t list -> hpred_pat -> hpred_pat list -> (Biabduction.Predicates.subst * Biabduction.Prop.normal Biabduction.Prop.t) option
- prop_match_with_impl p condition vars hpat hpatsreturns- (subst, p_leftover)such that- dom(subst) = vars
- p |- (hpat.hpred * hpats.hpred)[subst] * p_leftover.
 - Using the flag - field, we can control the strength of |-.
- val find_partial_iso : IR.Tenv.t -> (IR.Exp.t -> IR.Exp.t -> bool) -> (IR.Exp.t * IR.Exp.t) list -> (IR.Exp.t * IR.Exp.t) list -> Biabduction.Predicates.hpred list -> ((IR.Exp.t * IR.Exp.t) list * Biabduction.Predicates.hpred list * Biabduction.Predicates.hpred list * Biabduction.Predicates.hpred list) option
- find_partial_isofinds disjoint isomorphic sub-sigmas inside a given sigma. The first argument is an equality checker. The function returns a partial iso and three sigmas. The first sigma is the first copy of the two isomorphic sigmas, so it uses expressions in the domain of the returned isomorphism. The second is the second copy of the two isomorphic sigmas, and it uses expressions in the range of the isomorphism. The third is the unused part of the input sigma.
- val hpara_iso : IR.Tenv.t -> Biabduction.Predicates.hpara -> Biabduction.Predicates.hpara -> bool
- hpara_isosoundly checks whether two hparas are isomorphic.
- val hpara_dll_iso : IR.Tenv.t -> Biabduction.Predicates.hpara_dll -> Biabduction.Predicates.hpara_dll -> bool
- hpara_dll_isosoundly checks whether two hpara_dlls are isomorphic.
- val hpara_create : IR.Tenv.t -> (IR.Exp.t * IR.Exp.t) list -> Biabduction.Predicates.hpred list -> IR.Exp.t -> IR.Exp.t -> Biabduction.Predicates.hpara * IR.Exp.t list
- hpara_createtakes a correspondence, and a sigma, a root and a next for the first part of this correspondence. Then, it creates a hpara and discovers a list of shared expressions that are passed as arguments to hpara. Both of them are returned as a result.
- val hpara_dll_create : IR.Tenv.t -> (IR.Exp.t * IR.Exp.t) list -> Biabduction.Predicates.hpred list -> IR.Exp.t -> IR.Exp.t -> IR.Exp.t -> Biabduction.Predicates.hpara_dll * IR.Exp.t list
- hpara_dll_createtakes a correspondence, and a sigma, a root, a blink and a flink for the first part of this correspondence. Then, it creates a hpara_dll and discovers a list of shared expressions that are passed as arguments to hpara. Both of them are returned as a result.