172 |
172 |
173 (* axioms and definitions *) |
173 (* axioms and definitions *) |
174 |
174 |
175 val axiomsP = |
175 val axiomsP = |
176 OuterSyntax.command "axioms" "state arbitrary propositions (axiomatic!)" K.thy_decl |
176 OuterSyntax.command "axioms" "state arbitrary propositions (axiomatic!)" K.thy_decl |
177 (Scan.repeat1 P.spec_name >> (Toplevel.theory o IsarThy.add_axioms)); |
177 (Scan.repeat1 P.spec_name >> (Toplevel.theory o IsarCmd.add_axioms)); |
178 |
178 |
179 val opt_unchecked_overloaded = |
179 val opt_unchecked_overloaded = |
180 Scan.optional (P.$$$ "(" |-- P.!!! |
180 Scan.optional (P.$$$ "(" |-- P.!!! |
181 (((P.$$$ "unchecked" >> K true) -- Scan.optional (P.$$$ "overloaded" >> K true) false || |
181 (((P.$$$ "unchecked" >> K true) -- Scan.optional (P.$$$ "overloaded" >> K true) false || |
182 P.$$$ "overloaded" >> K (false, true)) --| P.$$$ ")")) (false, false); |
182 P.$$$ "overloaded" >> K (false, true)) --| P.$$$ ")")) (false, false); |
183 |
183 |
184 val defsP = |
184 val defsP = |
185 OuterSyntax.command "defs" "define constants" K.thy_decl |
185 OuterSyntax.command "defs" "define constants" K.thy_decl |
186 (opt_unchecked_overloaded -- Scan.repeat1 P.spec_name |
186 (opt_unchecked_overloaded -- Scan.repeat1 P.spec_name |
187 >> (Toplevel.theory o IsarThy.add_defs)); |
187 >> (Toplevel.theory o IsarCmd.add_defs)); |
188 |
188 |
189 |
189 |
190 (* constant definitions and abbreviations *) |
190 (* constant definitions and abbreviations *) |
191 |
191 |
192 val constdecl = |
192 val constdecl = |
397 val corollaryP = gen_theorem PureThy.corollaryK; |
397 val corollaryP = gen_theorem PureThy.corollaryK; |
398 |
398 |
399 val haveP = |
399 val haveP = |
400 OuterSyntax.command "have" "state local goal" |
400 OuterSyntax.command "have" "state local goal" |
401 (K.tag_proof K.prf_goal) |
401 (K.tag_proof K.prf_goal) |
402 (P.statement >> ((Toplevel.print oo Toplevel.proof') o IsarThy.have)); |
402 (P.statement >> ((Toplevel.print oo Toplevel.proof') o IsarCmd.have)); |
403 |
403 |
404 val henceP = |
404 val henceP = |
405 OuterSyntax.command "hence" "abbreviates \"then have\"" |
405 OuterSyntax.command "hence" "abbreviates \"then have\"" |
406 (K.tag_proof K.prf_goal) |
406 (K.tag_proof K.prf_goal) |
407 (P.statement >> ((Toplevel.print oo Toplevel.proof') o IsarThy.hence)); |
407 (P.statement >> ((Toplevel.print oo Toplevel.proof') o IsarCmd.hence)); |
408 |
408 |
409 val showP = |
409 val showP = |
410 OuterSyntax.command "show" "state local goal, solving current obligation" |
410 OuterSyntax.command "show" "state local goal, solving current obligation" |
411 (K.tag_proof K.prf_goal) |
411 (K.tag_proof K.prf_goal) |
412 (P.statement >> ((Toplevel.print oo Toplevel.proof') o IsarThy.show)); |
412 (P.statement >> ((Toplevel.print oo Toplevel.proof') o IsarCmd.show)); |
413 |
413 |
414 val thusP = |
414 val thusP = |
415 OuterSyntax.command "thus" "abbreviates \"then show\"" |
415 OuterSyntax.command "thus" "abbreviates \"then show\"" |
416 (K.tag_proof K.prf_goal) |
416 (K.tag_proof K.prf_goal) |
417 (P.statement >> ((Toplevel.print oo Toplevel.proof') o IsarThy.thus)); |
417 (P.statement >> ((Toplevel.print oo Toplevel.proof') o IsarCmd.thus)); |
418 |
418 |
419 |
419 |
420 (* facts *) |
420 (* facts *) |
421 |
421 |
422 val facts = P.and_list1 P.xthms1; |
422 val facts = P.and_list1 P.xthms1; |
525 (* end proof *) |
525 (* end proof *) |
526 |
526 |
527 val qedP = |
527 val qedP = |
528 OuterSyntax.command "qed" "conclude (sub-)proof" |
528 OuterSyntax.command "qed" "conclude (sub-)proof" |
529 (K.tag_proof K.qed_block) |
529 (K.tag_proof K.qed_block) |
530 (Scan.option P.method >> (Toplevel.print3 oo IsarThy.qed)); |
530 (Scan.option P.method >> (Toplevel.print3 oo IsarCmd.qed)); |
531 |
531 |
532 val terminal_proofP = |
532 val terminal_proofP = |
533 OuterSyntax.command "by" "terminal backward proof" |
533 OuterSyntax.command "by" "terminal backward proof" |
534 (K.tag_proof K.qed) |
534 (K.tag_proof K.qed) |
535 (P.method -- Scan.option P.method >> (Toplevel.print3 oo IsarThy.terminal_proof)); |
535 (P.method -- Scan.option P.method >> (Toplevel.print3 oo IsarCmd.terminal_proof)); |
536 |
536 |
537 val default_proofP = |
537 val default_proofP = |
538 OuterSyntax.command ".." "default proof" |
538 OuterSyntax.command ".." "default proof" |
539 (K.tag_proof K.qed) |
539 (K.tag_proof K.qed) |
540 (Scan.succeed (Toplevel.print3 o IsarThy.default_proof)); |
540 (Scan.succeed (Toplevel.print3 o IsarCmd.default_proof)); |
541 |
541 |
542 val immediate_proofP = |
542 val immediate_proofP = |
543 OuterSyntax.command "." "immediate proof" |
543 OuterSyntax.command "." "immediate proof" |
544 (K.tag_proof K.qed) |
544 (K.tag_proof K.qed) |
545 (Scan.succeed (Toplevel.print3 o IsarThy.immediate_proof)); |
545 (Scan.succeed (Toplevel.print3 o IsarCmd.immediate_proof)); |
546 |
546 |
547 val done_proofP = |
547 val done_proofP = |
548 OuterSyntax.command "done" "done proof" |
548 OuterSyntax.command "done" "done proof" |
549 (K.tag_proof K.qed) |
549 (K.tag_proof K.qed) |
550 (Scan.succeed (Toplevel.print3 o IsarThy.done_proof)); |
550 (Scan.succeed (Toplevel.print3 o IsarCmd.done_proof)); |
551 |
551 |
552 val skip_proofP = |
552 val skip_proofP = |
553 OuterSyntax.improper_command "sorry" "skip proof (quick-and-dirty mode only!)" |
553 OuterSyntax.improper_command "sorry" "skip proof (quick-and-dirty mode only!)" |
554 (K.tag_proof K.qed) |
554 (K.tag_proof K.qed) |
555 (Scan.succeed (Toplevel.print3 o IsarThy.skip_proof)); |
555 (Scan.succeed (Toplevel.print3 o IsarCmd.skip_proof)); |
556 |
556 |
557 val forget_proofP = |
557 val forget_proofP = |
558 OuterSyntax.command "oops" "forget proof" |
558 OuterSyntax.command "oops" "forget proof" |
559 (K.tag_proof K.qed_global) |
559 (K.tag_proof K.qed_global) |
560 (Scan.succeed Toplevel.forget_proof); |
560 (Scan.succeed Toplevel.forget_proof); |