diff -r 5f6fefdbf055 -r eee5deb35aa8 Nominal/Eqvt.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Nominal/Eqvt.thy Mon Feb 28 16:47:13 2011 +0000 @@ -0,0 +1,105 @@ +(* Title: Nominal2_Eqvt + Author: Brian Huffman, + Author: Christian Urban + + Test cases for perm_simp +*) +theory Eqvt +imports Nominal2_Base +begin + + +declare [[trace_eqvt = false]] +(* declare [[trace_eqvt = true]] *) + +lemma + fixes B::"'a::pt" + shows "p \ (B = C)" +apply(perm_simp) +oops + +lemma + fixes B::"bool" + shows "p \ (B = C)" +apply(perm_simp) +oops + +lemma + fixes B::"bool" + shows "p \ (A \ B = C)" +apply (perm_simp) +oops + +lemma + shows "p \ (\(x::'a::pt). A \ (B::'a \ bool) x = C) = foo" +apply(perm_simp) +oops + +lemma + shows "p \ (\B::bool. A \ (B = C)) = foo" +apply (perm_simp) +oops + +lemma + shows "p \ (\x y. \z. x = z \ x = y \ z \ x) = foo" +apply (perm_simp) +oops + +lemma + shows "p \ (\f x. f (g (f x))) = foo" +apply (perm_simp) +oops + +lemma + fixes p q::"perm" + and x::"'a::pt" + shows "p \ (q \ x) = foo" +apply(perm_simp) +oops + +lemma + fixes p q r::"perm" + and x::"'a::pt" + shows "p \ (q \ r \ x) = foo" +apply(perm_simp) +oops + +lemma + fixes p r::"perm" + shows "p \ (\q::perm. q \ (r \ x)) = foo" +apply (perm_simp) +oops + +lemma + fixes C D::"bool" + shows "B (p \ (C = D))" +apply(perm_simp) +oops + +declare [[trace_eqvt = false]] + +text {* there is no raw eqvt-rule for The *} +lemma "p \ (THE x. P x) = foo" +apply(perm_strict_simp exclude: The) +apply(perm_simp exclude: The) +oops + +lemma + fixes P :: "(('b \ bool) \ ('b::pt)) \ ('a::pt)" + shows "p \ (P The) = foo" +apply(perm_simp exclude: The) +oops + +lemma + fixes P :: "('a::pt) \ ('b::pt) \ bool" + shows "p \ (\(a, b). P a b) = (\(a, b). (p \ P) a b)" +apply(perm_simp) +oops + +thm eqvts +thm eqvts_raw + +ML {* Nominal_ThmDecls.is_eqvt @{context} @{term "supp"} *} + + +end