src/Pure/Isar/rule_cases.ML
changeset 20218 be3bfb0699ba
parent 20087 979f012b5df3
child 20289 ba7a7c56bed5
equal deleted inserted replaced
20217:25b068a99d2b 20218:be3bfb0699ba
   327 
   327 
   328 fun mutual_rule _ [] = NONE
   328 fun mutual_rule _ [] = NONE
   329   | mutual_rule _ [th] = SOME ([0], th)
   329   | mutual_rule _ [th] = SOME ([0], th)
   330   | mutual_rule ctxt (ths as th :: _) =
   330   | mutual_rule ctxt (ths as th :: _) =
   331       let
   331       let
   332         val (ths', ctxt') = Variable.import true ths ctxt;
   332         val ((_, ths'), ctxt') = Variable.import true ths ctxt;
   333         val rules as (prems, _) :: _ = map (prep_rule (get_consumes th)) ths';
   333         val rules as (prems, _) :: _ = map (prep_rule (get_consumes th)) ths';
   334         val (ns, rls) = split_list (map #2 rules);
   334         val (ns, rls) = split_list (map #2 rules);
   335       in
   335       in
   336         if not (forall (equal_cterms prems o #1) rules) then NONE
   336         if not (forall (equal_cterms prems o #1) rules) then NONE
   337         else
   337         else