src/Pure/Isar/class_declaration.ML
changeset 51551 88d1d19fb74f
parent 47311 1addbe2a7458
child 51685 385ef6706252
equal deleted inserted replaced
51550:cec08df2c030 51551:88d1d19fb74f
    76           (case eq_morph of
    76           (case eq_morph of
    77             SOME eq_morph => const_morph $> eq_morph
    77             SOME eq_morph => const_morph $> eq_morph
    78           | NONE => const_morph);
    78           | NONE => const_morph);
    79         val thm'' = Morphism.thm const_eq_morph thm';
    79         val thm'' = Morphism.thm const_eq_morph thm';
    80         val tac = ALLGOALS (Proof_Context.fact_tac [thm'']);
    80         val tac = ALLGOALS (Proof_Context.fact_tac [thm'']);
    81       in Skip_Proof.prove_global thy [] [] (Thm.prop_of thm'') (K tac) end;
    81       in Goal.prove_sorry_global thy [] [] (Thm.prop_of thm'') (K tac) end;
    82     val assm_intro = Option.map prove_assm_intro (fst (Locale.intros_of thy class));
    82     val assm_intro = Option.map prove_assm_intro (fst (Locale.intros_of thy class));
    83 
    83 
    84     (* of_class *)
    84     (* of_class *)
    85     val of_class_prop_concl = Logic.mk_of_class (aT, class);
    85     val of_class_prop_concl = Logic.mk_of_class (aT, class);
    86     val of_class_prop =
    86     val of_class_prop =
    94     val base_sort_trivs = Thm.of_sort (Thm.ctyp_of thy aT, base_sort);
    94     val base_sort_trivs = Thm.of_sort (Thm.ctyp_of thy aT, base_sort);
    95     val tac =
    95     val tac =
    96       REPEAT (SOMEGOAL
    96       REPEAT (SOMEGOAL
    97         (Tactic.match_tac (axclass_intro :: sup_of_classes @ loc_axiom_intros @ base_sort_trivs)
    97         (Tactic.match_tac (axclass_intro :: sup_of_classes @ loc_axiom_intros @ base_sort_trivs)
    98           ORELSE' Tactic.assume_tac));
    98           ORELSE' Tactic.assume_tac));
    99     val of_class = Skip_Proof.prove_global thy [] [] of_class_prop (K tac);
    99     val of_class = Goal.prove_sorry_global thy [] [] of_class_prop (K tac);
   100 
   100 
   101   in (base_morph, eq_morph, export_morph, axiom, assm_intro, of_class) end;
   101   in (base_morph, eq_morph, export_morph, axiom, assm_intro, of_class) end;
   102 
   102 
   103 
   103 
   104 (* reading and processing class specifications *)
   104 (* reading and processing class specifications *)