src/Pure/simplifier.ML
changeset 16684 7b58002668c0
parent 16458 4c6fd0c01d28
child 16685 4ffc943c9c75
equal deleted inserted replaced
16683:f1ea17a4f222 16684:7b58002668c0
   473   Args.parens (Args.$$$ no_asm_simpN) >> K asm_simp_tac ||
   473   Args.parens (Args.$$$ no_asm_simpN) >> K asm_simp_tac ||
   474   Args.parens (Args.$$$ no_asm_useN) >> K full_simp_tac ||
   474   Args.parens (Args.$$$ no_asm_useN) >> K full_simp_tac ||
   475   Args.parens (Args.$$$ asm_lrN) >> K asm_lr_simp_tac ||
   475   Args.parens (Args.$$$ asm_lrN) >> K asm_lr_simp_tac ||
   476   Scan.succeed asm_full_simp_tac);
   476   Scan.succeed asm_full_simp_tac);
   477 
   477 
       
   478 val simp_flags = Scan.repeat
       
   479   (Args.parens (Args.$$$ "depth_limit" -- Args.colon |-- Args.nat)
       
   480     >> setmp MetaSimplifier.simp_depth_limit)
       
   481   >> curry (Library.foldl op o) I;
       
   482 
   478 val cong_modifiers =
   483 val cong_modifiers =
   479  [Args.$$$ congN -- Args.colon >> K ((I, cong_add_local):Method.modifier),
   484  [Args.$$$ congN -- Args.colon >> K ((I, cong_add_local):Method.modifier),
   480   Args.$$$ congN -- Args.add -- Args.colon >> K (I, cong_add_local),
   485   Args.$$$ congN -- Args.add -- Args.colon >> K (I, cong_add_local),
   481   Args.$$$ congN -- Args.del -- Args.colon >> K (I, cong_del_local)];
   486   Args.$$$ congN -- Args.del -- Args.colon >> K (I, cong_del_local)];
   482 
   487 
   492   Args.del -- Args.colon >> K (I, simp_del_local),
   497   Args.del -- Args.colon >> K (I, simp_del_local),
   493   Args.$$$ onlyN -- Args.colon >> K (map_local_simpset clear_ss, simp_add_local)]
   498   Args.$$$ onlyN -- Args.colon >> K (map_local_simpset clear_ss, simp_add_local)]
   494    @ cong_modifiers;
   499    @ cong_modifiers;
   495 
   500 
   496 fun simp_args more_mods =
   501 fun simp_args more_mods =
   497   Method.sectioned_args (Args.bang_facts -- Scan.lift simp_options) (more_mods @ simp_modifiers');
   502   Method.sectioned_args (Args.bang_facts -- Scan.lift simp_options -- Scan.lift simp_flags)
   498 
   503     (more_mods @ simp_modifiers');
   499 
   504 
   500 fun simp_method (prems, tac) ctxt = Method.METHOD (fn facts =>
   505 fun simp_method ((prems, tac), FLAGS) ctxt = Method.METHOD (fn facts =>
   501   ALLGOALS (Method.insert_tac (prems @ facts)) THEN
   506   ALLGOALS (Method.insert_tac (prems @ facts)) THEN
   502     (CHANGED_PROP o ALLGOALS o tac) (local_simpset_of ctxt));
   507     (FLAGS o CHANGED_PROP o ALLGOALS o tac) (local_simpset_of ctxt));
   503 
   508 
   504 fun simp_method' (prems, tac) ctxt = Method.METHOD (fn facts =>
   509 fun simp_method' ((prems, tac), FLAGS) ctxt = Method.METHOD (fn facts =>
   505   HEADGOAL (Method.insert_tac (prems @ facts) THEN'
   510   HEADGOAL (Method.insert_tac (prems @ facts) THEN'
   506       (CHANGED_PROP oo tac) (local_simpset_of ctxt)));
   511       ((FLAGS o CHANGED_PROP) oo tac) (local_simpset_of ctxt)));
   507 
   512 
   508 
   513 
   509 (* setup methods *)
   514 (* setup methods *)
   510 
   515 
   511 fun setup_methods more_mods = Method.add_methods
   516 fun setup_methods more_mods = Method.add_methods