src/Pure/Tools/class_package.ML
changeset 19575 2d9940cd52d3
parent 19518 5204c73a4d46
child 19585 70a1ce3b23ae
equal deleted inserted replaced
19574:7c761751e998 19575:2d9940cd52d3
   160     error ("no class: " ^ class);
   160     error ("no class: " ^ class);
   161 
   161 
   162 fun get_superclass_derivation thy (subclass, superclass) =
   162 fun get_superclass_derivation thy (subclass, superclass) =
   163   if subclass = superclass
   163   if subclass = superclass
   164     then SOME [subclass]
   164     then SOME [subclass]
   165     else case Graph.find_paths ((fst o fst o ClassData.get) thy) (subclass, superclass)
   165     else case Graph.irreducible_paths ((fst o fst o ClassData.get) thy) (subclass, superclass)
   166       of [] => NONE
   166       of [] => NONE
   167        | (p::_) => (SOME o filter (is_operational_class thy)) p;
   167        | (p::_) => (SOME o filter (is_operational_class thy)) p;
   168 
   168 
   169 fun the_ancestry thy classes =
   169 fun the_ancestry thy classes =
   170   let
   170   let