src/Tools/intuitionistic.ML
changeset 31299 0c5baf034d0e
parent 30510 4120fc59dd85
child 32861 105f40051387
equal deleted inserted replaced
31298:5e6b2b23701a 31299:0c5baf034d0e
     5 *)
     5 *)
     6 
     6 
     7 signature INTUITIONISTIC =
     7 signature INTUITIONISTIC =
     8 sig
     8 sig
     9   val prover_tac: Proof.context -> int option -> int -> tactic
     9   val prover_tac: Proof.context -> int option -> int -> tactic
    10   val method_setup: bstring -> theory -> theory
    10   val method_setup: binding -> theory -> theory
    11 end;
    11 end;
    12 
    12 
    13 structure Intuitionistic: INTUITIONISTIC =
    13 structure Intuitionistic: INTUITIONISTIC =
    14 struct
    14 struct
    15 
    15 
    82   modifier elimN Args.colon (Scan.succeed ()) ContextRules.elim,
    82   modifier elimN Args.colon (Scan.succeed ()) ContextRules.elim,
    83   modifier introN Args.bang_colon Args.bang ContextRules.intro_bang,
    83   modifier introN Args.bang_colon Args.bang ContextRules.intro_bang,
    84   modifier introN Args.colon (Scan.succeed ()) ContextRules.intro,
    84   modifier introN Args.colon (Scan.succeed ()) ContextRules.intro,
    85   Args.del -- Args.colon >> K (I, ContextRules.rule_del)];
    85   Args.del -- Args.colon >> K (I, ContextRules.rule_del)];
    86 
    86 
    87 val method =
       
    88   Method.bang_sectioned_args' modifiers (Scan.lift (Scan.option OuterParse.nat))
       
    89     (fn n => fn prems => fn ctxt => METHOD (fn facts =>
       
    90       HEADGOAL (Method.insert_tac (prems @ facts) THEN'
       
    91       ObjectLogic.atomize_prems_tac THEN' prover_tac ctxt n)));
       
    92 
       
    93 in
    87 in
    94 
    88 
    95 fun method_setup name = Method.add_method (name, method, "intuitionistic proof search");
    89 fun method_setup name =
       
    90   Method.setup name
       
    91     (Args.bang_facts -- Scan.lift (Scan.option OuterParse.nat) --|
       
    92       Method.sections modifiers >>
       
    93       (fn (prems, n) => fn ctxt => METHOD (fn facts =>
       
    94         HEADGOAL (Method.insert_tac (prems @ facts) THEN'
       
    95         ObjectLogic.atomize_prems_tac THEN' prover_tac ctxt n))))
       
    96     "intuitionistic proof search";
    96 
    97 
    97 end;
    98 end;
    98 
    99 
    99 end;
   100 end;
   100 
   101