# HG changeset patch # User huffman # Date 1119027040 -7200 # Node ID 72a08d509d625e10e25a9f43b2b3d7d08dccb603 # Parent 7efee005e568fd02c9569141afe9d3b89ac8f725 added match functions for ONE, TT, and FF; added theorem mplus_fail2 diff -r 7efee005e568 -r 72a08d509d62 src/HOLCF/Fixrec.thy --- a/src/HOLCF/Fixrec.thy Fri Jun 17 18:36:25 2005 +0200 +++ b/src/HOLCF/Fixrec.thy Fri Jun 17 18:50:40 2005 +0200 @@ -6,7 +6,7 @@ header "Package for defining recursive functions in HOLCF" theory Fixrec -imports Ssum One Up Fix +imports Ssum One Up Fix Tr uses ("fixrec_package.ML") begin @@ -111,6 +111,9 @@ lemma mplus_return [simp]: "return\x +++ m = return\x" by (simp add: mplus_def return_def) +lemma mplus_fail2 [simp]: "m +++ fail = m" +by (rule_tac p=m in maybeE, simp_all) + lemma mplus_assoc: "(x +++ y) +++ z = x +++ (y +++ z)" by (rule_tac p=x in maybeE, simp_all) @@ -125,6 +128,15 @@ match_up :: "'a u \ 'a maybe" "match_up \ fup\return" + match_ONE :: "one \ unit maybe" + "match_ONE \ flift1 (\u. return\())" + + match_TT :: "tr \ unit maybe" + "match_TT \ flift1 (\b. if b then return\() else fail)" + + match_FF :: "tr \ unit maybe" + "match_FF \ flift1 (\b. if b then fail else return\())" + lemma match_cpair_simps [simp]: "match_cpair\ = return\" by (simp add: match_cpair_def) @@ -134,6 +146,23 @@ "match_up\\ = \" by (simp_all add: match_up_def) +lemma match_ONE_simps [simp]: + "match_ONE\ONE = return\()" + "match_ONE\\ = \" +by (simp_all add: ONE_def match_ONE_def) + +lemma match_TT_simps [simp]: + "match_TT\TT = return\()" + "match_TT\FF = fail" + "match_TT\\ = \" +by (simp_all add: TT_def FF_def match_TT_def) + +lemma match_FF_simps [simp]: + "match_FF\FF = return\()" + "match_FF\TT = fail" + "match_FF\\ = \" +by (simp_all add: TT_def FF_def match_FF_def) + subsection {* Mutual recursion *} text {*