src/Pure/Isar/class_target.ML
changeset 32074 76d6ba08a05f
parent 31988 801aabf9f376
child 32379 a97e9caebd60
child 32800 57fcca4e7c0e
equal deleted inserted replaced
32073:0a83608e21f1 32074:76d6ba08a05f
   240     val classrel = SkipProof.prove_global thy [] [] (Logic.mk_classrel (sub, sup))
   240     val classrel = SkipProof.prove_global thy [] [] (Logic.mk_classrel (sub, sup))
   241       (K tac);
   241       (K tac);
   242     val diff_sort = Sign.complete_sort thy [sup]
   242     val diff_sort = Sign.complete_sort thy [sup]
   243       |> subtract (op =) (Sign.complete_sort thy [sub])
   243       |> subtract (op =) (Sign.complete_sort thy [sub])
   244       |> filter (is_class thy);
   244       |> filter (is_class thy);
   245     val deps_witss = case some_dep_morph
   245     val add_dependency = case some_dep_morph
   246      of SOME dep_morph => [((sup, dep_morph), the_list some_wit)]
   246      of SOME dep_morph => Locale.add_dependency sub
   247       | NONE => []
   247           (sup, dep_morph $> Element.satisfy_morphism (the_list some_wit)) export
       
   248       | NONE => I
   248   in
   249   in
   249     thy
   250     thy
   250     |> AxClass.add_classrel classrel
   251     |> AxClass.add_classrel classrel
   251     |> ClassData.map (Graph.add_edge (sub, sup))
   252     |> ClassData.map (Graph.add_edge (sub, sup))
   252     |> activate_defs sub (these_defs thy diff_sort)
   253     |> activate_defs sub (these_defs thy diff_sort)
   253     |> Locale.add_dependencies sub deps_witss export
   254     |> add_dependency
   254   end;
   255   end;
   255 
   256 
   256 
   257 
   257 (** classes and class target **)
   258 (** classes and class target **)
   258 
   259