diff -r 185921021551 -r e450fa467e3f ProgTutorial/Helper/Command/Command.thy --- a/ProgTutorial/Helper/Command/Command.thy Fri Aug 21 16:23:51 2009 +0200 +++ b/ProgTutorial/Helper/Command/Command.thy Sat Aug 22 02:56:08 2009 +0200 @@ -1,10 +1,11 @@ theory Command imports Main begin + ML {* let val do_nothing = Scan.succeed (LocalTheory.theory I) - val kind = OuterKeyword.thy_goal + val kind = OuterKeyword.thy_decl in OuterSyntax.local_theory "foobar" "description of foobar" kind do_nothing end @@ -12,11 +13,61 @@ ML {* let + fun trace_prop str = + LocalTheory.theory (fn lthy => (tracing str; lthy)) + val trace_prop_parser = OuterParse.prop >> trace_prop + val kind = OuterKeyword.thy_decl +in + OuterSyntax.local_theory "foobar_trace" "traces a proposition" + kind trace_prop_parser +end +*} + +ML {* +let + fun prove_prop str lthy = + let + val prop = Syntax.read_prop lthy str + in + Proof.theorem_i NONE (K I) [[(prop,[])]] lthy + end; + val prove_prop_parser = OuterParse.prop >> prove_prop + val kind = OuterKeyword.thy_goal +in + OuterSyntax.local_theory_to_proof "foobar_goal" "proving a proposition" + kind prove_prop_parser +end +*} + +ML {* +val r = ref (NONE:(unit -> term) option) +*} +ML {* +let + fun setup_proof (txt, pos) lthy = + let + val trm = ML_Context.evaluate lthy true ("r", r) txt + in + Proof.theorem_i NONE (K I) [[(trm,[])]] lthy + end; + + val setup_proof_parser = OuterParse.ML_source >> setup_proof + + val kind = OuterKeyword.thy_goal +in + OuterSyntax.local_theory_to_proof "foobar_prove" "proving a proposition" + kind setup_proof_parser +end +*} + +(* +ML {* +let val do_nothing = Scan.succeed (LocalTheory.theory I) val kind = OuterKeyword.thy_decl in - OuterSyntax.local_theory "simple_induct" "description of foobar" kind do_nothing + OuterSyntax.local_theory "simple_inductive" "description of foobar" kind do_nothing end -*} +*}*) end