author | Christian Urban <urbanc@in.tum.de> |
Thu, 19 Apr 2018 13:58:22 +0100 | |
branch | Nominal2-Isabelle2016-1 |
changeset 3246 | 66114fa3d2ee |
parent 3054 | da0fccee125c |
permissions | -rw-r--r-- |
3054
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
1 |
theory QuotientSet |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
2 |
imports |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
3 |
"../Nominal2" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
4 |
begin |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
5 |
|
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
6 |
lemma supp_quot: |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
7 |
"(supp (R, x)) supports (R `` {x})" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
8 |
unfolding supports_def |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
9 |
unfolding fresh_def[symmetric] |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
10 |
apply(perm_simp) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
11 |
apply(simp add: swap_fresh_fresh) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
12 |
done |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
13 |
|
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
14 |
lemma |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
15 |
assumes "equiv UNIV R" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
16 |
and "(x, y) \<in> R" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
17 |
shows "R `` {x} = R `` {y}" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
18 |
using assms |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
19 |
by (rule equiv_class_eq) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
20 |
|
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
21 |
lemma s1: |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
22 |
assumes "equiv UNIV R" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
23 |
and "(x, y) \<in> R" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
24 |
shows "a \<sharp> (R `` {x}) \<longleftrightarrow> a \<sharp> (R `` {y})" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
25 |
using assms |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
26 |
apply(subst equiv_class_eq) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
27 |
apply(auto) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
28 |
done |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
29 |
|
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
30 |
lemma s2: |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
31 |
fixes x::"'a::fs" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
32 |
assumes "equiv UNIV R" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
33 |
and "supp R = {}" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
34 |
shows "\<Inter>{supp y | y. (x, y) \<in> R} supports (R `` {x})" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
35 |
unfolding supports_def |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
36 |
apply(rule allI)+ |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
37 |
apply(rule impI) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
38 |
apply(rule swap_fresh_fresh) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
39 |
apply(drule conjunct1) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
40 |
apply(auto)[1] |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
41 |
apply(subst s1) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
42 |
apply(rule assms) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
43 |
apply(assumption) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
44 |
apply(rule supports_fresh) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
45 |
apply(rule supp_quot) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
46 |
apply(simp add: supp_Pair finite_supp assms) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
47 |
apply(simp add: supp_Pair assms) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
48 |
apply(drule conjunct2) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
49 |
apply(auto)[1] |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
50 |
apply(subst s1) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
51 |
apply(rule assms) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
52 |
apply(assumption) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
53 |
apply(rule supports_fresh) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
54 |
apply(rule supp_quot) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
55 |
apply(simp add: supp_Pair finite_supp assms) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
56 |
apply(simp add: supp_Pair assms) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
57 |
done |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
58 |
|
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
59 |
lemma s3: |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
60 |
fixes S::"'a::fs set" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
61 |
assumes "finite S" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
62 |
and "S \<noteq> {}" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
63 |
and "a \<sharp> S" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
64 |
shows "\<exists>x \<in> S. a \<sharp> x" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
65 |
using assms |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
66 |
apply(auto simp add: fresh_def) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
67 |
apply(subst (asm) supp_of_finite_sets) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
68 |
apply(auto) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
69 |
done |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
70 |
|
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
71 |
(* |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
72 |
lemma supp_inter: |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
73 |
fixes x::"'a::fs" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
74 |
assumes "equiv UNIV R" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
75 |
and "supp R = {}" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
76 |
shows "supp (R `` {x}) = \<Inter>{supp y | y. (x, y) \<in> R}" |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
77 |
apply(rule finite_supp_unique) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
78 |
apply(rule s2) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
79 |
apply(rule assms) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
80 |
apply(rule assms) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
81 |
apply(metis (lam_lifting, no_types) at_base_infinite finite_UNIV) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
82 |
*) |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
83 |
|
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
84 |
|
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
85 |
|
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
86 |
|
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
87 |
|
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
88 |
end |
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
89 |
|
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
90 |
|
da0fccee125c
a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
91 |