author | Cezary Kaliszyk <kaliszyk@in.tum.de> |
Thu, 13 May 2010 07:41:18 +0200 | |
changeset 2121 | f435d8efd751 |
parent 2120 | 2786ff1df475 |
child 2149 | 95aac598a526 |
permissions | -rw-r--r-- |
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
1 |
theory Term4 |
2061
37337fd5e8a7
Move Term4 to NewParser
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2060
diff
changeset
|
2 |
imports "../NewAlpha" "../Abs" "../Perm" "../Rsp" "../Lift" "Quotient_List" "../../Attic/Prove" |
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
3 |
begin |
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
4 |
|
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
5 |
atom_decl name |
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
6 |
|
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
7 |
section {*** lam with indirect list recursion ***} |
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
8 |
|
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
9 |
datatype rtrm4 = |
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
10 |
rVr4 "name" |
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
11 |
| rAp4 "rtrm4" "rtrm4 list" |
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
12 |
| rLm4 "name" "rtrm4" --"bind (name) in (trm)" |
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
13 |
|
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
14 |
(* there cannot be a clause for lists, as *) |
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
15 |
(* permutations are already defined in Nominal (also functions, options, and so on) *) |
2060
04a881bf49e4
Fix Term4 for permutation signature change
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1906
diff
changeset
|
16 |
ML {* |
04a881bf49e4
Fix Term4 for permutation signature change
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1906
diff
changeset
|
17 |
val dtinfo = Datatype.the_info @{theory} "Term4.rtrm4"; |
04a881bf49e4
Fix Term4 for permutation signature change
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1906
diff
changeset
|
18 |
val {descr, sorts, ...} = dtinfo; |
04a881bf49e4
Fix Term4 for permutation signature change
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1906
diff
changeset
|
19 |
*} |
04a881bf49e4
Fix Term4 for permutation signature change
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1906
diff
changeset
|
20 |
setup {* snd o (define_raw_perms descr sorts @{thm rtrm4.induct} 1) *} |
2063
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
21 |
lemmas perm = permute_rtrm4_permute_rtrm4_list.simps(1-3) |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
22 |
lemma perm_fix: |
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
23 |
fixes ts::"rtrm4 list" |
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
24 |
shows "permute_rtrm4_list p ts = p \<bullet> ts" |
2063
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
25 |
by (induct ts) simp_all |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
26 |
lemmas perm_fixed = perm[simplified perm_fix] |
1862 | 27 |
|
2061
37337fd5e8a7
Move Term4 to NewParser
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2060
diff
changeset
|
28 |
ML {* val bl = [[[BEmy 0], [BEmy 0, BEmy 1], [BSet ([(NONE, 0)], [1])]], [[], [BEmy 0, BEmy 1]]] *} |
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
29 |
|
2061
37337fd5e8a7
Move Term4 to NewParser
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2060
diff
changeset
|
30 |
local_setup {* fn ctxt => let val (_, _, ctxt') = define_raw_fv descr sorts [] bl ctxt in ctxt' end *} |
2063
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
31 |
lemmas fv = fv_rtrm4.simps (*fv_rtrm4_list.simps*) |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
32 |
|
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
33 |
lemma fv_fix: "fv_rtrm4_list = Union o (set o (map fv_rtrm4))" |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
34 |
by (rule ext) (induct_tac x, simp_all) |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
35 |
lemmas fv_fixed = fv[simplified fv_fix] |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
36 |
|
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
37 |
(* TODO: check remove 2 *) |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
38 |
local_setup {* snd o (prove_eqvt [@{typ rtrm4},@{typ "rtrm4 list"}] @{thm rtrm4.induct} @{thms perm_fixed fv_rtrm4.simps fv_rtrm4_list.simps} [@{term fv_rtrm4}, @{term fv_rtrm4_list}]) *} |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
39 |
thm eqvts(1-2) |
2061
37337fd5e8a7
Move Term4 to NewParser
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2060
diff
changeset
|
40 |
|
37337fd5e8a7
Move Term4 to NewParser
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2060
diff
changeset
|
41 |
local_setup {* snd o define_raw_alpha dtinfo [] bl [@{term fv_rtrm4}, @{term fv_rtrm4_list}] *} |
2063
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
42 |
local_setup {* (fn ctxt => snd (Local_Theory.note ((@{binding alpha4_inj}, []), (build_rel_inj @{thms alpha_rtrm4_alpha_rtrm4_list.intros} @{thms rtrm4.distinct rtrm4.inject list.distinct list.inject} @{thms alpha_rtrm4.cases alpha_rtrm4_list.cases} ctxt)) ctxt)) *} |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
43 |
lemmas alpha_inj = alpha4_inj(1-3) |
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
44 |
|
2063
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
45 |
lemma alpha_fix: "alpha_rtrm4_list = list_rel alpha_rtrm4" |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
46 |
apply (rule ext)+ |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
47 |
apply (induct_tac x xa rule: list_induct2') |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
48 |
apply (simp_all add: alpha_rtrm4_alpha_rtrm4_list.intros) |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
49 |
apply clarify apply (erule alpha_rtrm4_list.cases) apply(simp_all) |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
50 |
apply clarify apply (erule alpha_rtrm4_list.cases) apply(simp_all) |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
51 |
apply rule |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
52 |
apply (erule alpha_rtrm4_list.cases) |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
53 |
apply simp_all |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
54 |
apply (rule alpha_rtrm4_alpha_rtrm4_list.intros) |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
55 |
apply simp_all |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
56 |
done |
1318
cce1b6d1b761
Some tests around Term4. Not sure how to fix the generated fv function.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1300
diff
changeset
|
57 |
|
2063
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
58 |
lemmas alpha_inj_fixed = alpha_inj[simplified alpha_fix (*fv_fix*)] |
1318
cce1b6d1b761
Some tests around Term4. Not sure how to fix the generated fv function.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1300
diff
changeset
|
59 |
|
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
60 |
notation |
2063
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
61 |
alpha_rtrm4 ("_ \<approx>4 _" [100, 100] 100) |
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
62 |
and alpha_rtrm4_list ("_ \<approx>4l _" [100, 100] 100) |
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
63 |
|
2121
f435d8efd751
Make Term4 use 'equivariance'.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2120
diff
changeset
|
64 |
declare perm_fixed[eqvt] |
f435d8efd751
Make Term4 use 'equivariance'.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2120
diff
changeset
|
65 |
equivariance alpha_rtrm4 |
f435d8efd751
Make Term4 use 'equivariance'.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2120
diff
changeset
|
66 |
lemmas alpha4_eqvt = eqvts(1-2) |
f435d8efd751
Make Term4 use 'equivariance'.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2120
diff
changeset
|
67 |
lemmas alpha4_eqvt_fixed = alpha4_eqvt(2)[simplified alpha_fix (*fv_fix*)] |
1318
cce1b6d1b761
Some tests around Term4. Not sure how to fix the generated fv function.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1300
diff
changeset
|
68 |
|
1854
8442d81496d5
alpha4_eqvt and alpha4_reflp
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1853
diff
changeset
|
69 |
local_setup {* (fn ctxt => snd (Local_Theory.note ((@{binding alpha4_reflp}, []), |
1906
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
70 |
build_alpha_refl [((0, @{term alpha_rtrm4}), 0), ((0, @{term alpha_rtrm4_list}), 0)] [@{term alpha_rtrm4}, @{term alpha_rtrm4_list}] @{thm rtrm4.induct} @{thms alpha4_inj} ctxt) ctxt)) *} |
1854
8442d81496d5
alpha4_eqvt and alpha4_reflp
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1853
diff
changeset
|
71 |
thm alpha4_reflp |
8442d81496d5
alpha4_eqvt and alpha4_reflp
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1853
diff
changeset
|
72 |
|
1906
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
73 |
local_setup {* (fn ctxt => snd (Local_Theory.note ((@{binding alpha4_equivp}, []), |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
74 |
(build_equivps [@{term alpha_rtrm4}, @{term alpha_rtrm4_list}] @{thms alpha4_reflp} @{thm alpha_rtrm4_alpha_rtrm4_list.induct} @{thms rtrm4.inject list.inject} @{thms alpha4_inj} @{thms rtrm4.distinct list.distinct} @{thms alpha_rtrm4_list.cases alpha_rtrm4.cases} @{thms alpha4_eqvt} ctxt)) ctxt)) *} |
2063
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
75 |
lemmas alpha4_equivp_fixed = alpha4_equivp[simplified alpha_fix fv_fix] |
1318
cce1b6d1b761
Some tests around Term4. Not sure how to fix the generated fv function.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1300
diff
changeset
|
76 |
|
2063
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
77 |
quotient_type |
1318
cce1b6d1b761
Some tests around Term4. Not sure how to fix the generated fv function.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1300
diff
changeset
|
78 |
trm4 = rtrm4 / alpha_rtrm4 |
cce1b6d1b761
Some tests around Term4. Not sure how to fix the generated fv function.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1300
diff
changeset
|
79 |
by (simp_all add: alpha4_equivp) |
cce1b6d1b761
Some tests around Term4. Not sure how to fix the generated fv function.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1300
diff
changeset
|
80 |
|
cce1b6d1b761
Some tests around Term4. Not sure how to fix the generated fv function.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1300
diff
changeset
|
81 |
local_setup {* |
cce1b6d1b761
Some tests around Term4. Not sure how to fix the generated fv function.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1300
diff
changeset
|
82 |
(fn ctxt => ctxt |
1855
0a306922ace7
alpha4_equivp and constant lifting.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1854
diff
changeset
|
83 |
|> snd o (Quotient_Def.quotient_lift_const [] ("Vr4", @{term rVr4})) |
1856 | 84 |
|> snd o (Quotient_Def.quotient_lift_const [@{typ "trm4"}] ("Ap4", @{term rAp4})) |
85 |
|> snd o (Quotient_Def.quotient_lift_const [] ("Lm4", @{term rLm4})) |
|
86 |
|> snd o (Quotient_Def.quotient_lift_const [] ("fv_trm4", @{term fv_rtrm4}))) |
|
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
87 |
*} |
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
88 |
print_theorems |
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
89 |
|
1856 | 90 |
|
91 |
lemma fv_rtrm4_rsp: |
|
92 |
"xa \<approx>4 ya \<Longrightarrow> fv_rtrm4 xa = fv_rtrm4 ya" |
|
93 |
"x \<approx>4l y \<Longrightarrow> fv_rtrm4_list x = fv_rtrm4_list y" |
|
94 |
apply (induct rule: alpha_rtrm4_alpha_rtrm4_list.inducts) |
|
95 |
apply (simp_all add: alpha_gen) |
|
96 |
done |
|
97 |
||
98 |
local_setup {* snd o prove_const_rsp [] @{binding fv_rtrm4_rsp'} [@{term fv_rtrm4}] |
|
99 |
(fn _ => asm_full_simp_tac (@{simpset} addsimps @{thms fv_rtrm4_rsp}) 1) *} |
|
100 |
print_theorems |
|
101 |
||
102 |
local_setup {* snd o prove_const_rsp [] @{binding rVr4_rsp} [@{term rVr4}] |
|
103 |
(fn _ => constr_rsp_tac @{thms alpha4_inj} @{thms fv_rtrm4_rsp alpha4_equivp} 1) *} |
|
104 |
local_setup {* snd o prove_const_rsp [] @{binding rLm4_rsp} [@{term rLm4}] |
|
105 |
(fn _ => constr_rsp_tac @{thms alpha4_inj} @{thms fv_rtrm4_rsp alpha4_equivp} 1) *} |
|
106 |
||
107 |
lemma [quot_respect]: |
|
108 |
"(alpha_rtrm4 ===> list_rel alpha_rtrm4 ===> alpha_rtrm4) rAp4 rAp4" |
|
2063
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
109 |
by (simp add: alpha_inj_fixed) |
1856 | 110 |
|
111 |
local_setup {* snd o prove_const_rsp [] @{binding permute_rtrm4_rsp} |
|
112 |
[@{term "permute :: perm \<Rightarrow> rtrm4 \<Rightarrow> rtrm4"}] |
|
113 |
(fn _ => asm_simp_tac (HOL_ss addsimps @{thms alpha4_eqvt}) 1) *} |
|
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
114 |
|
1906
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
115 |
setup {* define_lifted_perms [@{typ trm4}] ["Term4.trm4"] [("permute_trm4", @{term "permute :: perm \<Rightarrow> rtrm4 \<Rightarrow> rtrm4"})] @{thms permute_rtrm4_permute_rtrm4_list_zero permute_rtrm4_permute_rtrm4_list_plus} *} |
1862 | 116 |
print_theorems |
1318
cce1b6d1b761
Some tests around Term4. Not sure how to fix the generated fv function.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1300
diff
changeset
|
117 |
|
1906
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
118 |
(* Instead of permute for trm4_list we may need the following 2 lemmas: *) |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
119 |
lemma [quot_preserve]: "(id ---> map rep_trm4 ---> map abs_trm4) permute = permute" |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
120 |
apply (simp add: expand_fun_eq) |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
121 |
apply clarify |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
122 |
apply (rename_tac "pi" x) |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
123 |
apply (induct_tac x) |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
124 |
apply simp |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
125 |
apply simp |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
126 |
apply (simp add: meta_eq_to_obj_eq[OF permute_trm4_def,simplified expand_fun_eq,simplified]) |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
127 |
done |
1856 | 128 |
|
1906
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
129 |
lemma [quot_respect]: "(op = ===> list_rel alpha_rtrm4 ===> list_rel alpha_rtrm4) permute permute" |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
130 |
apply simp |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
131 |
apply (rule allI)+ |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
132 |
apply (induct_tac xa y rule: list_induct2') |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
133 |
apply simp_all |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
134 |
apply clarify |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
135 |
apply (erule alpha4_eqvt) |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
136 |
done |
1856 | 137 |
|
1906
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
138 |
ML {* |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
139 |
map (lift_thm [@{typ trm4}] @{context}) @{thms perm_fixed} |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
140 |
*} |
1318
cce1b6d1b761
Some tests around Term4. Not sure how to fix the generated fv function.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1300
diff
changeset
|
141 |
|
1856 | 142 |
ML {* lift_thm [@{typ trm4}] @{context} @{thm rtrm4.induct} *} |
1906
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
143 |
|
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
144 |
ML {* |
2063
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
145 |
map (lift_thm [@{typ trm4}] @{context}) @{thms fv_rtrm4.simps[simplified fv_fix] fv_rtrm4_list.simps[simplified fv_fix]} |
1906
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
146 |
*} |
1856 | 147 |
|
1906
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
148 |
ML {* |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
149 |
val liftd = |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
150 |
map (Local_Defs.unfold @{context} @{thms id_simps}) ( |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
151 |
map (Local_Defs.fold @{context} @{thms alphas}) ( |
2063
e4e128e59c41
Some cleaning in Term4
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2061
diff
changeset
|
152 |
map (lift_thm [@{typ trm4}] @{context}) @{thms alpha_inj_fixed[unfolded alphas]} |
1906
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
153 |
) |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
154 |
) |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
155 |
*} |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
156 |
|
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
157 |
ML {* |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
158 |
map (lift_thm [@{typ trm4}] @{context}) |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
159 |
(flat (map (distinct_rel @{context} @{thms alpha_rtrm4.cases alpha_rtrm4_list.cases}) [(@{thms rtrm4.distinct},@{term "alpha_rtrm4"})])) |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
160 |
*} |
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
161 |
|
2121
f435d8efd751
Make Term4 use 'equivariance'.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2120
diff
changeset
|
162 |
thm eqvts(6-7) |
1906
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
163 |
ML {* |
2121
f435d8efd751
Make Term4 use 'equivariance'.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2120
diff
changeset
|
164 |
map (lift_thm [@{typ trm4}] @{context}) @{thms eqvts(6-7)[simplified fv_fix]} |
1906
0dc61c2966da
All lifted in Term4. Requires new isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1862
diff
changeset
|
165 |
*} |
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
166 |
|
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
167 |
end |