author | Cezary Kaliszyk <kaliszyk@in.tum.de> |
Tue, 26 Jan 2010 14:48:25 +0100 | |
changeset 944 | 6267ad688ea8 |
parent 940 | a792bfc1be2b |
child 945 | de9e5faf1f03 |
permissions | -rw-r--r-- |
905
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
1 |
theory SigmaEx |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
2 |
imports Nominal "../QuotMain" "../QuotList" "../QuotProd" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
3 |
begin |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
4 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
5 |
atom_decl name |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
6 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
7 |
datatype robj = |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
8 |
rVar "name" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
9 |
| rObj "(string \<times> rmethod) list" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
10 |
| rInv "robj" "string" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
11 |
| rUpd "robj" "string" "rmethod" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
12 |
and rmethod = |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
13 |
rSig "name" "robj" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
14 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
15 |
inductive |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
16 |
alpha_obj :: "robj \<Rightarrow> robj \<Rightarrow> bool" ("_ \<approx>o _" [100, 100] 100) |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
17 |
and alpha_method :: "rmethod \<Rightarrow> rmethod \<Rightarrow> bool" ("_ \<approx>m _" [100, 100] 100) |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
18 |
where |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
19 |
a1: "a = b \<Longrightarrow> (rVar a) \<approx>o (rVar b)" |
914
b8e43414c5aa
Proper alpha equivalence for Sigma calculus.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
912
diff
changeset
|
20 |
| a2: "rObj [] \<approx>o rObj []" |
b8e43414c5aa
Proper alpha equivalence for Sigma calculus.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
912
diff
changeset
|
21 |
| a3: "rObj t1 \<approx>o rObj t2 \<Longrightarrow> m1 \<approx>m r2 \<Longrightarrow> rObj ((l1, m1) # t1) \<approx>o rObj ((l2, m2) # t2)" |
b8e43414c5aa
Proper alpha equivalence for Sigma calculus.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
912
diff
changeset
|
22 |
| a4: "x \<approx>o y \<Longrightarrow> rInv x l1 \<approx>o rInv y l2" |
b8e43414c5aa
Proper alpha equivalence for Sigma calculus.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
912
diff
changeset
|
23 |
| a5: "\<exists>pi::name prm. (rfv t - {a} = rfv s - {b} \<and> (rfv t - {a})\<sharp>* pi \<and> (pi \<bullet> t) \<approx>o s \<and> (pi \<bullet> a) = b) |
b8e43414c5aa
Proper alpha equivalence for Sigma calculus.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
912
diff
changeset
|
24 |
\<Longrightarrow> rSig a t \<approx>m rSig b s" |
905
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
25 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
26 |
lemma alpha_equivps: |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
27 |
shows "equivp alpha_obj" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
28 |
and "equivp alpha_method" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
29 |
sorry |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
30 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
31 |
quotient_type |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
32 |
obj = robj / alpha_obj |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
33 |
and method = rmethod / alpha_method |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
34 |
by (auto intro: alpha_equivps) |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
35 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
36 |
quotient_definition |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
37 |
"Var :: name \<Rightarrow> obj" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
38 |
as |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
39 |
"rVar" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
40 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
41 |
quotient_definition |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
42 |
"Obj :: (string \<times> method) list \<Rightarrow> obj" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
43 |
as |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
44 |
"rObj" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
45 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
46 |
quotient_definition |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
47 |
"Inv :: obj \<Rightarrow> string \<Rightarrow> obj" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
48 |
as |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
49 |
"rInv" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
50 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
51 |
quotient_definition |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
52 |
"Upd :: obj \<Rightarrow> string \<Rightarrow> method \<Rightarrow> obj" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
53 |
as |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
54 |
"rUpd" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
55 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
56 |
quotient_definition |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
57 |
"Sig :: name \<Rightarrow> obj \<Rightarrow> method" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
58 |
as |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
59 |
"rSig" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
60 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
61 |
overloading |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
62 |
perm_obj \<equiv> "perm :: 'x prm \<Rightarrow> obj \<Rightarrow> obj" (unchecked) |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
63 |
perm_method \<equiv> "perm :: 'x prm \<Rightarrow> method \<Rightarrow> method" (unchecked) |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
64 |
begin |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
65 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
66 |
quotient_definition |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
67 |
"perm_obj :: 'x prm \<Rightarrow> obj \<Rightarrow> obj" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
68 |
as |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
69 |
"(perm::'x prm \<Rightarrow> robj \<Rightarrow> robj)" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
70 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
71 |
quotient_definition |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
72 |
"perm_method :: 'x prm \<Rightarrow> method \<Rightarrow> method" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
73 |
as |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
74 |
"(perm::'x prm \<Rightarrow> rmethod \<Rightarrow> rmethod)" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
75 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
76 |
end |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
77 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
78 |
lemma tolift: |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
79 |
"\<forall> fvar. |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
80 |
\<forall> fobj\<in>Respects (op = ===> list_rel (prod_rel (op =) alpha_method) ===> op =). |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
81 |
\<forall> fnvk\<in>Respects (op = ===> alpha_obj ===> op =). |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
82 |
\<forall> fupd\<in>Respects (op = ===> op = ===> alpha_obj ===> op = ===> alpha_method ===> op =). |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
83 |
\<forall> fcns\<in>Respects (op = ===> op = ===> prod_rel (op =) alpha_method ===> list_rel (prod_rel (op =) alpha_method) ===> op =). |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
84 |
\<forall> fnil. |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
85 |
\<forall> fpar\<in>Respects (op = ===> op = ===> alpha_method ===> op =). |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
86 |
\<forall> fsgm\<in>Respects (op = ===> (op = ===> alpha_obj) ===> op =). |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
87 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
88 |
\<exists> (hom_o\<Colon>robj \<Rightarrow> 'a, hom_d\<Colon>(char list \<times> rmethod) list \<Rightarrow> 'b, hom_e\<Colon>char list \<times> rmethod \<Rightarrow> 'c, hom_m\<Colon>rmethod \<Rightarrow> 'd) |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
89 |
\<in> Respects |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
90 |
(prod_rel (alpha_obj ===> op =) |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
91 |
(prod_rel (list_rel (prod_rel (op =) alpha_method) ===> op =) |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
92 |
(prod_rel ((prod_rel (op =) alpha_method) ===> op =) |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
93 |
(alpha_method ===> op =) |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
94 |
) |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
95 |
) |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
96 |
). |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
97 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
98 |
( |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
99 |
(\<forall>x. hom_o (rVar x) = fvar x) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
100 |
(\<forall>d. hom_o (rObj d) = fobj (hom_d d) d) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
101 |
(\<forall>a l. hom_o (rInv a l) = fnvk (hom_o a) a l) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
102 |
(\<forall>a l m. hom_o (rUpd a l m) = fupd (hom_o a) (hom_m m) a l m) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
103 |
(\<forall>e d. hom_d (e # d) = fcns (hom_e e) (hom_d d) e d) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
104 |
(hom_d [] = fnil) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
105 |
(\<forall>l m. hom_e (l, m) = fpar (hom_m m) l m) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
106 |
(\<forall>x a. hom_m (rSig x a) = fsgm (\<lambda>y. hom_o ([(x, y)] \<bullet> a)) (\<lambda>y. [(x, y)] \<bullet> a)) |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
107 |
)" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
108 |
sorry |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
109 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
110 |
syntax |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
111 |
"_expttrn" :: "pttrn => bool => bool" ("(3\<exists>\<exists> _./ _)" [0, 10] 10) |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
112 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
113 |
translations |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
114 |
"\<exists>\<exists> x. P" == "Ex (%x. P)" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
115 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
116 |
lemma rvar_rsp[quot_respect]: "(op = ===> alpha_obj) rVar rVar" |
938
0ff855a6ffb7
Sigma cleaning works with split_prs (still manual proof).
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
918
diff
changeset
|
117 |
by (simp add: a1) |
905
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
118 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
119 |
lemma robj_rsp[quot_respect]: "(list_rel (prod_rel op = alpha_method) ===> alpha_obj) rObj rObj" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
120 |
sorry |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
121 |
lemma rinv_rsp[quot_respect]: "(alpha_obj ===> op = ===> alpha_obj) rInv rInv" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
122 |
sorry |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
123 |
lemma rupd_rsp[quot_respect]: "(alpha_obj ===> op = ===> alpha_method ===> alpha_obj) rUpd rUpd" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
124 |
sorry |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
125 |
lemma rsig_rsp[quot_respect]: "(op = ===> alpha_obj ===> alpha_method) rSig rSig" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
126 |
sorry |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
127 |
lemma operm_rsp[quot_respect]: "(op = ===> alpha_obj ===> alpha_obj) op \<bullet> op \<bullet>" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
128 |
sorry |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
129 |
|
918 | 130 |
|
131 |
||
905
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
132 |
lemma liftd: " |
944
6267ad688ea8
2 cases for regularize with split, lemmas with split now lift.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
940
diff
changeset
|
133 |
\<exists>\<exists>(hom_o, hom_d, hom_e, hom_m). |
905
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
134 |
( |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
135 |
(\<forall>x. hom_o (Var x) = fvar x) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
136 |
(\<forall>d. hom_o (Obj d) = fobj (hom_d d) d) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
137 |
(\<forall>a l. hom_o (Inv a l) = fnvk (hom_o a) a l) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
138 |
(\<forall>a l m. hom_o (Upd a l m) = fupd (hom_o a) (hom_m m) a l m) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
139 |
(\<forall>e d. hom_d (e # d) = fcns (hom_e e) (hom_d d) e d) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
140 |
(hom_d [] = fnil) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
141 |
(\<forall>l m. hom_e (l, m) = fpar (hom_m m) l m) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
142 |
(\<forall>x a. hom_m (Sig x a) = fsgm (\<lambda>y. hom_o ([(x, y)] \<bullet> a)) (\<lambda>y. [(x, y)] \<bullet> a)) |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
143 |
)" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
144 |
apply (lifting tolift) |
944
6267ad688ea8
2 cases for regularize with split, lemmas with split now lift.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
940
diff
changeset
|
145 |
done |
905
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
146 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
147 |
lemma tolift': |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
148 |
"\<forall> fvar. |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
149 |
\<forall> fobj\<in>Respects (op = ===> list_rel (prod_rel (op =) alpha_method) ===> op =). |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
150 |
\<forall> fnvk\<in>Respects (op = ===> alpha_obj ===> op =). |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
151 |
\<forall> fupd\<in>Respects (op = ===> op = ===> alpha_obj ===> op = ===> alpha_method ===> op =). |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
152 |
\<forall> fcns\<in>Respects (op = ===> op = ===> prod_rel (op =) alpha_method ===> list_rel (prod_rel (op =) alpha_method) ===> op =). |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
153 |
\<forall> fnil. |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
154 |
\<forall> fpar\<in>Respects (op = ===> op = ===> alpha_method ===> op =). |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
155 |
\<forall> fsgm\<in>Respects (op = ===> (op = ===> alpha_obj) ===> op =). |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
156 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
157 |
\<exists> hom_o\<Colon>robj \<Rightarrow> 'a \<in> Respects (alpha_obj ===> op =). |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
158 |
\<exists> hom_d\<Colon>(char list \<times> rmethod) list \<Rightarrow> 'b \<in> Respects (list_rel (prod_rel (op =) alpha_method) ===> op =). |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
159 |
\<exists> hom_e\<Colon>char list \<times> rmethod \<Rightarrow> 'c \<in> Respects ((prod_rel (op =) alpha_method) ===> op =). |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
160 |
\<exists> hom_m\<Colon>rmethod \<Rightarrow> 'd \<in> Respects (alpha_method ===> op =). |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
161 |
( |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
162 |
(\<forall>x. hom_o (rVar x) = fvar x) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
163 |
(\<forall>d. hom_o (rObj d) = fobj (hom_d d) d) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
164 |
(\<forall>a l. hom_o (rInv a l) = fnvk (hom_o a) a l) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
165 |
(\<forall>a l m. hom_o (rUpd a l m) = fupd (hom_o a) (hom_m m) a l m) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
166 |
(\<forall>e d. hom_d (e # d) = fcns (hom_e e) (hom_d d) e d) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
167 |
(hom_d [] = fnil) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
168 |
(\<forall>l m. hom_e (l, m) = fpar (hom_m m) l m) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
169 |
(\<forall>x a. hom_m (rSig x a) = fsgm (\<lambda>y. hom_o ([(x, y)] \<bullet> a)) (\<lambda>y. [(x, y)] \<bullet> a)) |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
170 |
)" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
171 |
sorry |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
172 |
|
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
173 |
lemma liftd': " |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
174 |
\<exists>hom_o. \<exists>hom_d. \<exists>hom_e. \<exists>hom_m. |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
175 |
( |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
176 |
(\<forall>x. hom_o (Var x) = fvar x) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
177 |
(\<forall>d. hom_o (Obj d) = fobj (hom_d d) d) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
178 |
(\<forall>a l. hom_o (Inv a l) = fnvk (hom_o a) a l) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
179 |
(\<forall>a l m. hom_o (Upd a l m) = fupd (hom_o a) (hom_m m) a l m) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
180 |
(\<forall>e d. hom_d (e # d) = fcns (hom_e e) (hom_d d) e d) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
181 |
(hom_d [] = fnil) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
182 |
(\<forall>l m. hom_e (l, m) = fpar (hom_m m) l m) \<and> |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
183 |
(\<forall>x a. hom_m (Sig x a) = fsgm (\<lambda>y. hom_o ([(x, y)] \<bullet> a)) (\<lambda>y. [(x, y)] \<bullet> a)) |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
184 |
)" |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
185 |
apply (lifting tolift') |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
186 |
done |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
187 |
|
912
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
188 |
lemma tolift'': |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
189 |
"\<forall> fvar. |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
190 |
\<forall> fobj\<in>Respects (op = ===> list_rel (prod_rel (op =) alpha_method) ===> op =). |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
191 |
\<forall> fnvk\<in>Respects (op = ===> alpha_obj ===> op =). |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
192 |
\<forall> fupd\<in>Respects (op = ===> op = ===> alpha_obj ===> op = ===> alpha_method ===> op =). |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
193 |
\<forall> fcns\<in>Respects (op = ===> op = ===> prod_rel (op =) alpha_method ===> list_rel (prod_rel (op =) alpha_method) ===> op =). |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
194 |
\<forall> fnil. |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
195 |
\<forall> fpar\<in>Respects (op = ===> op = ===> alpha_method ===> op =). |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
196 |
\<forall> fsgm\<in>Respects (op = ===> (op = ===> alpha_obj) ===> op =). |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
197 |
|
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
198 |
Bexeq (alpha_obj ===> op =) (\<lambda>hom_o\<Colon>robj \<Rightarrow> 'a . |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
199 |
Bexeq (list_rel (prod_rel (op =) alpha_method) ===> op =) (\<lambda>hom_d\<Colon>(char list \<times> rmethod) list \<Rightarrow> 'b. |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
200 |
Bexeq ((prod_rel (op =) alpha_method) ===> op =) (\<lambda>hom_e\<Colon>char list \<times> rmethod \<Rightarrow> 'c. |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
201 |
Bexeq (alpha_method ===> op =) (\<lambda>hom_m\<Colon>rmethod \<Rightarrow> 'd. |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
202 |
( |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
203 |
(\<forall>x. hom_o (rVar x) = fvar x) \<and> |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
204 |
(\<forall>d. hom_o (rObj d) = fobj (hom_d d) d) \<and> |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
205 |
(\<forall>a l. hom_o (rInv a l) = fnvk (hom_o a) a l) \<and> |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
206 |
(\<forall>a l m. hom_o (rUpd a l m) = fupd (hom_o a) (hom_m m) a l m) \<and> |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
207 |
(\<forall>e d. hom_d (e # d) = fcns (hom_e e) (hom_d d) e d) \<and> |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
208 |
(hom_d [] = fnil) \<and> |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
209 |
(\<forall>l m. hom_e (l, m) = fpar (hom_m m) l m) \<and> |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
210 |
(\<forall>x a. hom_m (rSig x a) = fsgm (\<lambda>y. hom_o ([(x, y)] \<bullet> a)) (\<lambda>y. [(x, y)] \<bullet> a)) |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
211 |
) |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
212 |
))))" |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
213 |
sorry |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
214 |
|
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
215 |
lemma liftd'': " |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
216 |
\<exists>!hom_o. \<exists>!hom_d. \<exists>!hom_e. \<exists>!hom_m. |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
217 |
( |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
218 |
(\<forall>x. hom_o (Var x) = fvar x) \<and> |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
219 |
(\<forall>d. hom_o (Obj d) = fobj (hom_d d) d) \<and> |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
220 |
(\<forall>a l. hom_o (Inv a l) = fnvk (hom_o a) a l) \<and> |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
221 |
(\<forall>a l m. hom_o (Upd a l m) = fupd (hom_o a) (hom_m m) a l m) \<and> |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
222 |
(\<forall>e d. hom_d (e # d) = fcns (hom_e e) (hom_d d) e d) \<and> |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
223 |
(hom_d [] = fnil) \<and> |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
224 |
(\<forall>l m. hom_e (l, m) = fpar (hom_m m) l m) \<and> |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
225 |
(\<forall>x a. hom_m (Sig x a) = fsgm (\<lambda>y. hom_o ([(x, y)] \<bullet> a)) (\<lambda>y. [(x, y)] \<bullet> a)) |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
226 |
)" |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
227 |
apply (lifting tolift'') |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
228 |
done |
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
229 |
|
aa960d16570f
Lifted Peter's Sigma lemma with Ex1.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
908
diff
changeset
|
230 |
|
905
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
231 |
end |
51e5cc3793d2
Added the Sigma Calculus example
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
232 |