diff -r 8f35633c4922 -r 9cf389429f6d src/HOL/MetisExamples/TransClosure.thy --- a/src/HOL/MetisExamples/TransClosure.thy Tue Oct 20 19:37:09 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -(* Title: HOL/MetisTest/TransClosure.thy - ID: $Id$ - Author: Lawrence C Paulson, Cambridge University Computer Laboratory - -Testing the metis method -*) - -theory TransClosure -imports Main -begin - -types addr = nat - -datatype val - = Unit -- "dummy result value of void expressions" - | Null -- "null reference" - | Bool bool -- "Boolean value" - | Intg int -- "integer value" - | Addr addr -- "addresses of objects in the heap" - -consts R::"(addr \ addr) set" - -consts f:: "addr \ val" - -declare [[ atp_problem_prefix = "TransClosure__test" ]] -lemma "\ f c = Intg x; \ y. f b = Intg y \ y \ x; (a,b) \ R\<^sup>*; (b,c) \ R\<^sup>* \ - \ \ c. (b,c) \ R \ (a,c) \ R\<^sup>*" -by (metis Transitive_Closure.rtrancl_into_rtrancl converse_rtranclE trancl_reflcl) - -lemma "\ f c = Intg x; \ y. f b = Intg y \ y \ x; (a,b) \ R\<^sup>*; (b,c) \ R\<^sup>* \ - \ \ c. (b,c) \ R \ (a,c) \ R\<^sup>*" -proof (neg_clausify) -assume 0: "f c = Intg x" -assume 1: "(a, b) \ R\<^sup>*" -assume 2: "(b, c) \ R\<^sup>*" -assume 3: "f b \ Intg x" -assume 4: "\A. (b, A) \ R \ (a, A) \ R\<^sup>*" -have 5: "b = c \ b \ Domain R" - by (metis Not_Domain_rtrancl 2) -have 6: "\X1. (a, X1) \ R\<^sup>* \ (b, X1) \ R" - by (metis Transitive_Closure.rtrancl_into_rtrancl 1) -have 7: "\X1. (b, X1) \ R" - by (metis 6 4) -have 8: "b \ Domain R" - by (metis 7 DomainE) -have 9: "c = b" - by (metis 5 8) -have 10: "f b = Intg x" - by (metis 0 9) -show "False" - by (metis 10 3) -qed - -declare [[ atp_problem_prefix = "TransClosure__test_simpler" ]] -lemma "\ f c = Intg x; \ y. f b = Intg y \ y \ x; (a,b) \ R\<^sup>*; (b,c) \ R\<^sup>* \ - \ \ c. (b,c) \ R \ (a,c) \ R\<^sup>*" -apply (erule_tac x="b" in converse_rtranclE) -apply (metis rel_pow_0_E rel_pow_0_I) -apply (metis DomainE Domain_iff Transitive_Closure.rtrancl_into_rtrancl) -done - -end