Module Sl_term

module Sl_term: sig .. end
Module defining SL terms, which consist of variables (free or existentially quantified), or the constant nil. The focus on fresh variable generation is human readable formulas, not speed.

include Utilsigs.BasicType
module Set: Utilsigs.OrderedContainer  with type elt = t
An ordered set of terms.
module Map: Utilsigs.OrderedMap  with type key = t
An ordered map with terms as keys.
val to_melt : t -> Latex.t
Convert term to LaTeX.
val parse : (t, 'a) MParser.parser
Parse a term.
val of_string : string -> t
Parse a term from a string.
val nil : t
The nil constant. This is the only non-variable term.
val is_nil : t -> bool
Is the argument nil? Equivalent to equal nil x.
val is_var : t -> bool
is_nil x is equivalent to not (equal nil x).
val is_exist_var : t -> bool
Is the argument an existentially quantified variable?
val is_free_var : t -> bool
Is the argument a free variable?
val filter_vars : Set.t -> Set.t
Remove nil from a set of terms.
val fresh_fvar : Set.t -> t
fresh_fvar s returns a free variable that is fresh in s.
val fresh_fvars : Set.t -> int -> t list
fresh_fvars s n returns a list of free variables of length n all of which are fresh in s.
val fresh_evar : Set.t -> t
fresh_evar s returns an existentially quantified variable that is fresh in s.
val fresh_evars : Set.t -> int -> t list
fresh_evars s n returns a list of existentially quantified variables of length n all of which are fresh in s.
module Subst: VarManager.SubstSig 
  with type t = t Map.t 
  with type var = t 
  with type var_container = Set.t
Substitutions over terms
val unify : ?update_check:(Subst.t * Subst.t) Fun.predicate ->
(Subst.t, 'a, t) Unification.cps_unifier
Unifies two terms by producing a substitution to act on the first term
val biunify : ?update_check:((Subst.t * Subst.t) *
(Subst.t * Subst.t))
Fun.predicate ->
(Subst.t * Subst.t, 'a, t) Unification.cps_unifier
Unifies two terms by producing substitutions to act on each term respectively
module FList: sig .. end