src/Pure/sorts.ML
changeset 36328 4d9deabf6474
parent 36105 42c37cf849cd
child 36429 9d6b3be996d4
equal deleted inserted replaced
36327:c0415cb24a10 36328:4d9deabf6474
    23   val insert_typ: typ -> sort OrdList.T -> sort OrdList.T
    23   val insert_typ: typ -> sort OrdList.T -> sort OrdList.T
    24   val insert_typs: typ list -> sort OrdList.T -> sort OrdList.T
    24   val insert_typs: typ list -> sort OrdList.T -> sort OrdList.T
    25   val insert_term: term -> sort OrdList.T -> sort OrdList.T
    25   val insert_term: term -> sort OrdList.T -> sort OrdList.T
    26   val insert_terms: term list -> sort OrdList.T -> sort OrdList.T
    26   val insert_terms: term list -> sort OrdList.T -> sort OrdList.T
    27   type algebra
    27   type algebra
    28   val rep_algebra: algebra ->
    28   val classes_of: algebra -> serial Graph.T
    29    {classes: serial Graph.T,
    29   val arities_of: algebra -> (class * (class * sort list)) list Symtab.table
    30     arities: (class * (class * sort list)) list Symtab.table}
       
    31   val all_classes: algebra -> class list
    30   val all_classes: algebra -> class list
    32   val super_classes: algebra -> class -> class list
    31   val super_classes: algebra -> class -> class list
    33   val class_less: algebra -> class * class -> bool
    32   val class_less: algebra -> class * class -> bool
    34   val class_le: algebra -> class * class -> bool
    33   val class_le: algebra -> class * class -> bool
    35   val sort_eq: algebra -> sort * sort -> bool
    34   val sort_eq: algebra -> sort * sort -> bool
   114 
   113 
   115 datatype algebra = Algebra of
   114 datatype algebra = Algebra of
   116  {classes: serial Graph.T,
   115  {classes: serial Graph.T,
   117   arities: (class * (class * sort list)) list Symtab.table};
   116   arities: (class * (class * sort list)) list Symtab.table};
   118 
   117 
   119 fun rep_algebra (Algebra args) = args;
   118 fun classes_of (Algebra {classes, ...}) = classes;
   120 
   119 fun arities_of (Algebra {arities, ...}) = arities;
   121 val classes_of = #classes o rep_algebra;
       
   122 val arities_of = #arities o rep_algebra;
       
   123 
   120 
   124 fun make_algebra (classes, arities) =
   121 fun make_algebra (classes, arities) =
   125   Algebra {classes = classes, arities = arities};
   122   Algebra {classes = classes, arities = arities};
   126 
   123 
   127 fun map_classes f (Algebra {classes, arities}) = make_algebra (f classes, arities);
   124 fun map_classes f (Algebra {classes, arities}) = make_algebra (f classes, arities);