diff options
author | mark <> | 2012-02-16 17:09:21 +0000 |
---|---|---|
committer | mark <> | 2012-02-16 17:09:21 +0000 |
commit | af9234996fb53a4e7c0ec404d8dd275df17f1ccd (patch) | |
tree | f82922967f145b50480494b041178b82e36c5e1c /hol-light/TacticRecording/examples1.ml | |
parent | e4438b2984cadf3e60935cb1e37be55e63f063a0 (diff) |
First version of HOL Light tactic recording.
See INSTRUCTIONS and LIMITATIONS files for more details.
Currently works for flattening "packaged-up" tactic proofs into g/e commands.
Won't work for most proofs because most tactics/thms haven't been promoted.
Support for exporting proof graph as a series of goal pairs.
Support for displaying extra information to be intercepter by PG for Prooftree.
Diffstat (limited to 'hol-light/TacticRecording/examples1.ml')
-rw-r--r-- | hol-light/TacticRecording/examples1.ml | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/hol-light/TacticRecording/examples1.ml b/hol-light/TacticRecording/examples1.ml new file mode 100644 index 00000000..b587c18f --- /dev/null +++ b/hol-light/TacticRecording/examples1.ml @@ -0,0 +1,65 @@ +#use"TacticRecording/main.ml";; +#use "TacticRecording/biolayout.ml";; + +pg_mode_off ();; + +g `x = x /\ y = y /\ z = z`;; +e (CONJ_TAC);; +e (REFL_TAC);; +e (CONJ_TAC);; +e (REFL_TAC);; +e (REFL_TAC);; +let th = top_thm ();; + +g `(!x. x = x) /\ (!y.y = y) /\ (!z.z = z)`;; +e (REPEAT CONJ_TAC THEN GEN_TAC);; +e (REFL_TAC);; +e (REFL_TAC);; +e (REFL_TAC);; +let th = top_thm ();; + +g `(!x. x = x) /\ (!y.y = y) /\ (!z.z = z)`;; +e (CONJ_TAC);; +e (GEN_TAC);; +e (REFL_TAC);; +e (CONJ_TAC);; +e (GEN_TAC);; +e (REFL_TAC);; +e (GEN_TAC);; +e (REFL_TAC);; +let th = top_thm ();; + +g `(!x. x = x) /\ (!y.y = y) /\ (!z.z = z)`;; +e (REPEAT CONJ_TAC);; +e (GEN_TAC);; +e (REFL_TAC);; +e (GEN_TAC);; +e (REFL_TAC);; +e (GEN_TAC);; +e (REFL_TAC);; +let th = top_thm ();; + +g `(!x. x = x) /\ (!y.y = y) /\ (!z.z = z)`;; +e (REPEAT CONJ_TAC THEN GEN_TAC THEN REFL_TAC);; +let th = top_thm ();; + +#use"TacticRecording/mlexport.ml";; + +print_executed_proof ();; +print_flat_proof ();; +print_thenl_proof ();; +print_optimal_proof ();; + +g `(y:A) = z ==> (x:A) = x /\ y = y /\ z = z`;; +e (STRIP_TAC);; +e (UNDISCH_TAC `(y:A) = z`);; +e (DISCH_TAC);; +e (CONJ_TAC);; +e (REFL_TAC);; +e (CONJ_TAC);; +e (REFL_TAC);; +e (REFL_TAC);; + + + + |