src/Pure/term_ord.ML
changeset 67561 f0b11413f1c9
parent 43794 49cbbe2768a8
child 70586 57df8a85317a
equal deleted inserted replaced
67560:0fa87bd86566 67561:f0b11413f1c9
    23   val indexname_ord: indexname * indexname -> order
    23   val indexname_ord: indexname * indexname -> order
    24   val tvar_ord: (indexname * sort) * (indexname * sort) -> order
    24   val tvar_ord: (indexname * sort) * (indexname * sort) -> order
    25   val var_ord: (indexname * typ) * (indexname * typ) -> order
    25   val var_ord: (indexname * typ) * (indexname * typ) -> order
    26   val term_ord: term * term -> order
    26   val term_ord: term * term -> order
    27   val hd_ord: term * term -> order
    27   val hd_ord: term * term -> order
    28   val termless: term * term -> bool
       
    29   val term_lpo: (term -> int) -> term * term -> order
    28   val term_lpo: (term -> int) -> term * term -> order
    30   val term_cache: (term -> 'a) -> term -> 'a
    29   val term_cache: (term -> 'a) -> term -> 'a
    31 end;
    30 end;
    32 
    31 
    33 structure Term_Ord: TERM_ORD =
    32 structure Term_Ord: TERM_ORD =
   160 and hd_ord (f, g) =
   159 and hd_ord (f, g) =
   161   prod_ord (prod_ord indexname_ord typ_ord) int_ord (dest_hd f, dest_hd g)
   160   prod_ord (prod_ord indexname_ord typ_ord) int_ord (dest_hd f, dest_hd g)
   162 and args_ord (f $ t, g $ u) =
   161 and args_ord (f $ t, g $ u) =
   163       (case args_ord (f, g) of EQUAL => term_ord (t, u) | ord => ord)
   162       (case args_ord (f, g) of EQUAL => term_ord (t, u) | ord => ord)
   164   | args_ord _ = EQUAL;
   163   | args_ord _ = EQUAL;
   165 
       
   166 fun termless tu = (term_ord tu = LESS);
       
   167 
   164 
   168 end;
   165 end;
   169 
   166 
   170 
   167 
   171 (* Lexicographic path order on terms *)
   168 (* Lexicographic path order on terms *)