# HG changeset patch # User wenzelm # Date 1026302132 -7200 # Node ID 47e9950a502d650a5cfe4fb33a2695d90deb2cce # Parent c9e9b6add7541232249d80d14b465067c3af74bb tuned; diff -r c9e9b6add754 -r 47e9950a502d src/HOL/Lambda/Commutation.thy --- a/src/HOL/Lambda/Commutation.thy Wed Jul 10 08:09:35 2002 +0200 +++ b/src/HOL/Lambda/Commutation.thy Wed Jul 10 13:55:32 2002 +0200 @@ -138,48 +138,46 @@ subsection {* Newman's lemma *} -theorem newman: +theorem Newman: assumes wf: "wf (R\)" and lc: "\a b c. (a, b) \ R \ (a, c) \ R \ \d. (b, d) \ R\<^sup>* \ (c, d) \ R\<^sup>*" - shows "(a, b) \ R\<^sup>* \ (a, c) \ R\<^sup>* \ - \d. (b, d) \ R\<^sup>* \ (c, d) \ R\<^sup>*" (is "PROP ?conf b c") -proof - - from wf show "\b c. PROP ?conf b c" - proof induct - case (less x b c) - have xc: "(x, c) \ R\<^sup>*" . - have xb: "(x, b) \ R\<^sup>*" . thus ?case + shows "\b c. (a, b) \ R\<^sup>* \ (a, c) \ R\<^sup>* \ + \d. (b, d) \ R\<^sup>* \ (c, d) \ R\<^sup>*" + using wf +proof induct + case (less x b c) + have xc: "(x, c) \ R\<^sup>*" . + have xb: "(x, b) \ R\<^sup>*" . thus ?case + proof (rule converse_rtranclE) + assume "x = b" + with xc have "(b, c) \ R\<^sup>*" by simp + thus ?thesis by rules + next + fix y + assume xy: "(x, y) \ R" + assume yb: "(y, b) \ R\<^sup>*" + from xc show ?thesis proof (rule converse_rtranclE) - assume "x = b" - with xc have "(b, c) \ R\<^sup>*" by simp + assume "x = c" + with xb have "(c, b) \ R\<^sup>*" by simp thus ?thesis by rules next - fix y - assume xy: "(x, y) \ R" - assume yb: "(y, b) \ R\<^sup>*" - from xc show ?thesis - proof (rule converse_rtranclE) - assume "x = c" - with xb have "(c, b) \ R\<^sup>*" by simp - thus ?thesis by rules - next - fix y' - assume y'c: "(y', c) \ R\<^sup>*" - assume xy': "(x, y') \ R" - with xy have "\u. (y, u) \ R\<^sup>* \ (y', u) \ R\<^sup>*" by (rule lc) - then obtain u where yu: "(y, u) \ R\<^sup>*" and y'u: "(y', u) \ R\<^sup>*" by rules - from xy have "(y, x) \ R\" .. - from this and yb yu have "\d. (b, d) \ R\<^sup>* \ (u, d) \ R\<^sup>*" by (rule less) - then obtain v where bv: "(b, v) \ R\<^sup>*" and uv: "(u, v) \ R\<^sup>*" by rules - from xy' have "(y', x) \ R\" .. - moreover from y'u and uv have "(y', v) \ R\<^sup>*" by (rule rtrancl_trans) - moreover note y'c - ultimately have "\d. (v, d) \ R\<^sup>* \ (c, d) \ R\<^sup>*" by (rule less) - then obtain w where vw: "(v, w) \ R\<^sup>*" and cw: "(c, w) \ R\<^sup>*" by rules - from bv vw have "(b, w) \ R\<^sup>*" by (rule rtrancl_trans) - with cw show ?thesis by rules - qed + fix y' + assume y'c: "(y', c) \ R\<^sup>*" + assume xy': "(x, y') \ R" + with xy have "\u. (y, u) \ R\<^sup>* \ (y', u) \ R\<^sup>*" by (rule lc) + then obtain u where yu: "(y, u) \ R\<^sup>*" and y'u: "(y', u) \ R\<^sup>*" by rules + from xy have "(y, x) \ R\" .. + from this and yb yu have "\d. (b, d) \ R\<^sup>* \ (u, d) \ R\<^sup>*" by (rule less) + then obtain v where bv: "(b, v) \ R\<^sup>*" and uv: "(u, v) \ R\<^sup>*" by rules + from xy' have "(y', x) \ R\" .. + moreover from y'u and uv have "(y', v) \ R\<^sup>*" by (rule rtrancl_trans) + moreover note y'c + ultimately have "\d. (v, d) \ R\<^sup>* \ (c, d) \ R\<^sup>*" by (rule less) + then obtain w where vw: "(v, w) \ R\<^sup>*" and cw: "(c, w) \ R\<^sup>*" by rules + from bv vw have "(b, w) \ R\<^sup>*" by (rule rtrancl_trans) + with cw show ?thesis by rules qed qed qed