src/Tools/Metis/src/Subst.sig
changeset 39353 7f11d833d65b
parent 23510 4521fead5609
parent 39349 2d0a4361c3ef
child 39443 e330437cd22a
equal deleted inserted replaced
39313:41ce0b56d858 39353:7f11d833d65b
     1 (* ========================================================================= *)
     1 (* ========================================================================= *)
     2 (* FIRST ORDER LOGIC SUBSTITUTIONS                                           *)
     2 (* FIRST ORDER LOGIC SUBSTITUTIONS                                           *)
     3 (* Copyright (c) 2002-2006 Joe Hurd, distributed under the BSD License *)
     3 (* Copyright (c) 2002-2006 Joe Hurd, distributed under the BSD License       *)
     4 (* ========================================================================= *)
     4 (* ========================================================================= *)
     5 
     5 
     6 signature Subst =
     6 signature Subst =
     7 sig
     7 sig
     8 
     8 
    26 
    26 
    27 val insert : subst -> Term.var * Term.term -> subst
    27 val insert : subst -> Term.var * Term.term -> subst
    28 
    28 
    29 val singleton : Term.var * Term.term -> subst
    29 val singleton : Term.var * Term.term -> subst
    30 
    30 
    31 val union : subst -> subst -> subst
       
    32 
       
    33 val toList : subst -> (Term.var * Term.term) list
    31 val toList : subst -> (Term.var * Term.term) list
    34 
    32 
    35 val fromList : (Term.var * Term.term) list -> subst
    33 val fromList : (Term.var * Term.term) list -> subst
    36 
    34 
    37 val foldl : (Term.var * Term.term * 'a -> 'a) -> 'a -> subst -> 'a
    35 val foldl : (Term.var * Term.term * 'a -> 'a) -> 'a -> subst -> 'a
    38 
    36 
    39 val foldr : (Term.var * Term.term * 'a -> 'a) -> 'a -> subst -> 'a
    37 val foldr : (Term.var * Term.term * 'a -> 'a) -> 'a -> subst -> 'a
    40 
    38 
    41 val pp : subst Parser.pp
    39 val pp : subst Print.pp
    42 
    40 
    43 val toString : subst -> string
    41 val toString : subst -> string
    44 
    42 
    45 (* ------------------------------------------------------------------------- *)
    43 (* ------------------------------------------------------------------------- *)
    46 (* Normalizing removes identity substitutions.                               *)
    44 (* Normalizing removes identity substitutions.                               *)
    69 (* ------------------------------------------------------------------------- *)
    67 (* ------------------------------------------------------------------------- *)
    70 
    68 
    71 val compose : subst -> subst -> subst
    69 val compose : subst -> subst -> subst
    72 
    70 
    73 (* ------------------------------------------------------------------------- *)
    71 (* ------------------------------------------------------------------------- *)
    74 (* Substitutions can be inverted iff they are renaming substitutions.        *) 
    72 (* Creating the union of two compatible substitutions.                       *)
       
    73 (* ------------------------------------------------------------------------- *)
       
    74 
       
    75 val union : subst -> subst -> subst  (* raises Error *)
       
    76 
       
    77 (* ------------------------------------------------------------------------- *)
       
    78 (* Substitutions can be inverted iff they are renaming substitutions.        *)
    75 (* ------------------------------------------------------------------------- *)
    79 (* ------------------------------------------------------------------------- *)
    76 
    80 
    77 val invert : subst -> subst  (* raises Error *)
    81 val invert : subst -> subst  (* raises Error *)
    78 
    82 
    79 val isRenaming : subst -> bool
    83 val isRenaming : subst -> bool
    81 (* ------------------------------------------------------------------------- *)
    85 (* ------------------------------------------------------------------------- *)
    82 (* Creating a substitution to freshen variables.                             *)
    86 (* Creating a substitution to freshen variables.                             *)
    83 (* ------------------------------------------------------------------------- *)
    87 (* ------------------------------------------------------------------------- *)
    84 
    88 
    85 val freshVars : NameSet.set -> subst
    89 val freshVars : NameSet.set -> subst
       
    90 
       
    91 (* ------------------------------------------------------------------------- *)
       
    92 (* Free variables.                                                           *)
       
    93 (* ------------------------------------------------------------------------- *)
       
    94 
       
    95 val redexes : subst -> NameSet.set
       
    96 
       
    97 val residueFreeVars : subst -> NameSet.set
       
    98 
       
    99 val freeVars : subst -> NameSet.set
       
   100 
       
   101 (* ------------------------------------------------------------------------- *)
       
   102 (* Functions.                                                                *)
       
   103 (* ------------------------------------------------------------------------- *)
       
   104 
       
   105 val functions : subst -> NameAritySet.set
    86 
   106 
    87 (* ------------------------------------------------------------------------- *)
   107 (* ------------------------------------------------------------------------- *)
    88 (* Matching for first order logic terms.                                     *)
   108 (* Matching for first order logic terms.                                     *)
    89 (* ------------------------------------------------------------------------- *)
   109 (* ------------------------------------------------------------------------- *)
    90 
   110