|
14516
|
1 |
theory MakeEqual = Main
|
|
|
2 |
files "shuffler.ML":
|
|
|
3 |
|
|
|
4 |
setup Shuffler.setup
|
|
|
5 |
|
|
|
6 |
lemma conj_norm [shuffle_rule]: "(A & B ==> PROP C) == ([| A ; B |] ==> PROP C)"
|
|
|
7 |
proof
|
|
|
8 |
assume "A & B ==> PROP C" A B
|
|
|
9 |
thus "PROP C"
|
|
|
10 |
by auto
|
|
|
11 |
next
|
|
|
12 |
assume "[| A; B |] ==> PROP C" "A & B"
|
|
|
13 |
thus "PROP C"
|
|
|
14 |
by auto
|
|
|
15 |
qed
|
|
|
16 |
|
|
|
17 |
lemma imp_norm [shuffle_rule]: "(Trueprop (A --> B)) == (A ==> B)"
|
|
|
18 |
proof
|
|
|
19 |
assume "A --> B" A
|
|
|
20 |
thus B ..
|
|
|
21 |
next
|
|
|
22 |
assume "A ==> B"
|
|
|
23 |
thus "A --> B"
|
|
|
24 |
by auto
|
|
|
25 |
qed
|
|
|
26 |
|
|
|
27 |
lemma all_norm [shuffle_rule]: "(Trueprop (ALL x. P x)) == (!!x. P x)"
|
|
|
28 |
proof
|
|
|
29 |
fix x
|
|
|
30 |
assume "ALL x. P x"
|
|
|
31 |
thus "P x" ..
|
|
|
32 |
next
|
|
|
33 |
assume "!!x. P x"
|
|
|
34 |
thus "ALL x. P x"
|
|
|
35 |
..
|
|
|
36 |
qed
|
|
|
37 |
|
|
|
38 |
lemma ex_norm [shuffle_rule]: "(EX x. P x ==> PROP Q) == (!!x. P x ==> PROP Q)"
|
|
|
39 |
proof
|
|
|
40 |
fix x
|
|
|
41 |
assume ex: "EX x. P x ==> PROP Q"
|
|
|
42 |
assume "P x"
|
|
|
43 |
hence "EX x. P x" ..
|
|
|
44 |
with ex show "PROP Q" .
|
|
|
45 |
next
|
|
|
46 |
assume allx: "!!x. P x ==> PROP Q"
|
|
|
47 |
assume "EX x. P x"
|
|
|
48 |
hence p: "P (SOME x. P x)"
|
|
|
49 |
..
|
|
|
50 |
from allx
|
|
|
51 |
have "P (SOME x. P x) ==> PROP Q"
|
|
|
52 |
.
|
|
|
53 |
with p
|
|
|
54 |
show "PROP Q"
|
|
|
55 |
by auto
|
|
|
56 |
qed
|
|
|
57 |
|
|
|
58 |
lemma eq_norm [shuffle_rule]: "Trueprop (t = u) == (t == u)"
|
|
|
59 |
proof
|
|
|
60 |
assume "t = u"
|
|
|
61 |
thus "t == u" by simp
|
|
|
62 |
next
|
|
|
63 |
assume "t == u"
|
|
|
64 |
thus "t = u"
|
|
|
65 |
by simp
|
|
|
66 |
qed
|
|
|
67 |
|
|
|
68 |
end
|