1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 1
theory Term1
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 2
imports "Nominal2_Atoms" "Nominal2_Eqvt" "Nominal2_Supp" "Abs" "Perm" "Fv" "Rsp" "../Attic/Prove"
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 {*** lets with binding patterns ***}
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 rtrm1 =
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 10
rVr1 "name"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 11
| rAp1 "rtrm1" "rtrm1"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 12
| rLm1 "name" "rtrm1" --"name is bound in trm1"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 13
| rLt1 "bp" "rtrm1" "rtrm1" --"all variables in bp are bound in the 2nd trm1"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 14
and bp =
1435
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 15
(* BUnit*)
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 16
BVr "name"
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 17
(*| BPr "bp" "bp"*)
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 18
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 19
print_theorems
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 20
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 21
(* to be given by the user *)
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 22
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 23
primrec
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 24
bv1
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 25
where
1435
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 26
(* "bv1 (BUnit) = {}"*)
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 27
"bv1 (BVr x) = {atom x}"
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 28
(*| "bv1 (BPr bp1 bp2) = (bv1 bp1) \<union> (bv1 bp2)"*)
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 29
1277
+ − 30
setup {* snd o define_raw_perms (Datatype.the_info @{theory} "Term1.rtrm1") 2 *}
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 31
thm permute_rtrm1_permute_bp.simps
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 32
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 33
local_setup {*
1277
+ − 34
snd o define_fv_alpha (Datatype.the_info @{theory} "Term1.rtrm1")
1400
+ − 35
[[[], [], [(NONE, 0, 1)], [(SOME (@{term bv1}, true), 0, 2)]],
1435
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 36
[[](*, [], []*)]] [(@{term bv1}, 1, [(*[],*) [0](*, [0, 1]*)])] *}
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 37
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 38
notation
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 39
alpha_rtrm1 ("_ \<approx>1 _" [100, 100] 100) and
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 40
alpha_bp ("_ \<approx>1b _" [100, 100] 100)
1400
+ − 41
thm alpha_rtrm1_alpha_bp_alpha_bv1.intros
1435
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 42
(*thm fv_rtrm1_fv_bp.simps[no_vars]*)
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 43
1400
+ − 44
local_setup {* (fn ctxt => snd (Local_Theory.note ((@{binding alpha1_inj}, []), (build_alpha_inj @{thms alpha_rtrm1_alpha_bp_alpha_bv1.intros} @{thms rtrm1.distinct rtrm1.inject bp.distinct bp.inject} @{thms alpha_rtrm1.cases alpha_bp.cases alpha_bv1.cases} ctxt)) ctxt)) *}
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 45
thm alpha1_inj
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 46
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 47
local_setup {*
1425
112f998d2953
Fixes for term1 for new alpha. Still not able to show support equations.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 48
snd o (build_eqvts @{binding bv1_eqvt} [@{term bv1}] (build_eqvts_tac @{thm rtrm1_bp.inducts(2)} @{thms bv1.simps permute_rtrm1_permute_bp.simps} @{context}))
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 49
*}
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 50
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 51
local_setup {*
1425
112f998d2953
Fixes for term1 for new alpha. Still not able to show support equations.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 52
snd o build_eqvts @{binding fv_rtrm1_fv_bp_eqvt} [@{term fv_rtrm1}, @{term fv_bp}] (build_eqvts_tac @{thm rtrm1_bp.induct} @{thms fv_rtrm1_fv_bp.simps permute_rtrm1_permute_bp.simps} @{context})
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 53
*}
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 54
1446
a93f8df272de
build_eqvts works with recursive case if proper induction rule is used.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 55
(*
a93f8df272de
build_eqvts works with recursive case if proper induction rule is used.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 56
local_setup {*
a93f8df272de
build_eqvts works with recursive case if proper induction rule is used.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 57
snd o build_eqvts @{binding fv_rtrm1_fv_bv1_eqvt} [@{term fv_rtrm1}, @{term fv_bv1}] (build_eqvts_tac @{thm rtrm1_bp.induct} @{thms fv_rtrm1_fv_bv1.simps permute_rtrm1_permute_bp.simps} @{context})
a93f8df272de
build_eqvts works with recursive case if proper induction rule is used.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 58
*}
a93f8df272de
build_eqvts works with recursive case if proper induction rule is used.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 59
print_theorems
a93f8df272de
build_eqvts works with recursive case if proper induction rule is used.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 60
a93f8df272de
build_eqvts works with recursive case if proper induction rule is used.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 61
local_setup {*
a93f8df272de
build_eqvts works with recursive case if proper induction rule is used.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 62
snd o build_eqvts @{binding fv_bp_eqvt} [@{term fv_bp}] (build_eqvts_tac @{thm rtrm1_bp.inducts(2)} @{thms fv_rtrm1_fv_bv1.simps fv_bp.simps permute_rtrm1_permute_bp.simps} @{context})
a93f8df272de
build_eqvts works with recursive case if proper induction rule is used.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 63
*}
a93f8df272de
build_eqvts works with recursive case if proper induction rule is used.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 64
print_theorems
a93f8df272de
build_eqvts works with recursive case if proper induction rule is used.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 65
*)
a93f8df272de
build_eqvts works with recursive case if proper induction rule is used.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 66
1425
112f998d2953
Fixes for term1 for new alpha. Still not able to show support equations.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 67
lemma alpha1_eqvt:
112f998d2953
Fixes for term1 for new alpha. Still not able to show support equations.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 68
"(rtrm1 \<approx>1 rtrm1a \<longrightarrow> (p \<bullet> rtrm1) \<approx>1 (p \<bullet> rtrm1a)) \<and>
112f998d2953
Fixes for term1 for new alpha. Still not able to show support equations.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 69
(bp \<approx>1b bpa \<longrightarrow> (p \<bullet> bp) \<approx>1b (p \<bullet> bpa)) \<and>
112f998d2953
Fixes for term1 for new alpha. Still not able to show support equations.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 70
(alpha_bv1 a b c \<longrightarrow> alpha_bv1 (p \<bullet> a) (p \<bullet> b) (p \<bullet> c))"
112f998d2953
Fixes for term1 for new alpha. Still not able to show support equations.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 71
by (tactic {* alpha_eqvt_tac @{thm alpha_rtrm1_alpha_bp_alpha_bv1.induct} @{thms alpha1_inj permute_rtrm1_permute_bp.simps} @{context} 1 *})
112f998d2953
Fixes for term1 for new alpha. Still not able to show support equations.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 72
1400
+ − 73
(*
1300
+ − 74
local_setup {*
+ − 75
(fn ctxt => snd (Local_Theory.note ((@{binding alpha1_eqvt}, []),
1400
+ − 76
build_alpha_eqvts [@{term alpha_rtrm1}, @{term alpha_bp}] [@{term "permute :: perm \<Rightarrow> rtrm1 \<Rightarrow> rtrm1"},@{term "permute :: perm \<Rightarrow> bp \<Rightarrow> bp"}] @{thms permute_rtrm1_permute_bp.simps alpha1_inj} @{thm alpha_rtrm1_alpha_bp_alpha_bv1.induct} ctxt) ctxt)) *}*)
1291
+ − 77
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 78
lemma alpha1_eqvt_proper[eqvt]:
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 79
"pi \<bullet> (t \<approx>1 s) = ((pi \<bullet> t) \<approx>1 (pi \<bullet> s))"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 80
"pi \<bullet> (alpha_bp a b) = (alpha_bp (pi \<bullet> a) (pi \<bullet> b))"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 81
apply (simp_all only: eqvts)
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 82
apply rule
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 83
apply (simp_all add: alpha1_eqvt)
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 84
apply (subst permute_minus_cancel(2)[symmetric,of "t" "pi"])
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 85
apply (subst permute_minus_cancel(2)[symmetric,of "s" "pi"])
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 86
apply (simp_all only: alpha1_eqvt)
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 87
apply rule
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 88
apply (simp_all add: alpha1_eqvt)
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 89
apply (subst permute_minus_cancel(2)[symmetric,of "a" "pi"])
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 90
apply (subst permute_minus_cancel(2)[symmetric,of "b" "pi"])
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 91
apply (simp_all only: alpha1_eqvt)
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 92
done
1274
+ − 93
thm eqvts_raw(1)
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 94
1425
112f998d2953
Fixes for term1 for new alpha. Still not able to show support equations.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 95
lemma alpha1_equivp:
112f998d2953
Fixes for term1 for new alpha. Still not able to show support equations.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 96
"equivp alpha_rtrm1"
112f998d2953
Fixes for term1 for new alpha. Still not able to show support equations.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 97
"equivp alpha_bp"
112f998d2953
Fixes for term1 for new alpha. Still not able to show support equations.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 98
sorry
112f998d2953
Fixes for term1 for new alpha. Still not able to show support equations.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 99
112f998d2953
Fixes for term1 for new alpha. Still not able to show support equations.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 100
(*
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 101
local_setup {* (fn ctxt => snd (Local_Theory.note ((@{binding alpha1_equivp}, []),
1400
+ − 102
(build_equivps [@{term alpha_rtrm1}, @{term alpha_bp}] @{thm rtrm1_bp.induct} @{thm alpha_rtrm1_alpha_bp_alpha_bv1.induct} @{thms rtrm1.inject bp.inject} @{thms alpha1_inj} @{thms rtrm1.distinct bp.distinct} @{thms alpha_rtrm1.cases alpha_bp.cases} @{thms alpha1_eqvt} ctxt)) ctxt)) *}
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 103
thm alpha1_equivp
1425
112f998d2953
Fixes for term1 for new alpha. Still not able to show support equations.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 104
*)
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 105
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 106
local_setup {* define_quotient_type [(([], @{binding trm1}, NoSyn), (@{typ rtrm1}, @{term alpha_rtrm1}))]
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 107
(rtac @{thm alpha1_equivp(1)} 1) *}
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 108
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 109
local_setup {*
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 110
(fn ctxt => ctxt
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 111
|> snd o (Quotient_Def.quotient_lift_const ("Vr1", @{term rVr1}))
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 112
|> snd o (Quotient_Def.quotient_lift_const ("Ap1", @{term rAp1}))
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 113
|> snd o (Quotient_Def.quotient_lift_const ("Lm1", @{term rLm1}))
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 114
|> snd o (Quotient_Def.quotient_lift_const ("Lt1", @{term rLt1}))
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 115
|> snd o (Quotient_Def.quotient_lift_const ("fv_trm1", @{term fv_rtrm1})))
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 116
*}
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 117
print_theorems
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 118
1278
+ − 119
local_setup {* snd o prove_const_rsp @{binding fv_rtrm1_rsp} [@{term fv_rtrm1}]
1425
112f998d2953
Fixes for term1 for new alpha. Still not able to show support equations.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 120
(fn _ => Skip_Proof.cheat_tac @{theory}) *}
1278
+ − 121
local_setup {* snd o prove_const_rsp @{binding rVr1_rsp} [@{term rVr1}]
+ − 122
(fn _ => constr_rsp_tac @{thms alpha1_inj} @{thms fv_rtrm1_rsp} @{thms alpha1_equivp} 1) *}
+ − 123
local_setup {* snd o prove_const_rsp @{binding rAp1_rsp} [@{term rAp1}]
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 124
(fn _ => constr_rsp_tac @{thms alpha1_inj} @{thms fv_rtrm1_rsp} @{thms alpha1_equivp} 1) *}
1278
+ − 125
local_setup {* snd o prove_const_rsp @{binding rLm1_rsp} [@{term rLm1}]
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 126
(fn _ => constr_rsp_tac @{thms alpha1_inj} @{thms fv_rtrm1_rsp} @{thms alpha1_equivp} 1) *}
1278
+ − 127
local_setup {* snd o prove_const_rsp @{binding rLt1_rsp} [@{term rLt1}]
1425
112f998d2953
Fixes for term1 for new alpha. Still not able to show support equations.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 128
(fn _ => Skip_Proof.cheat_tac @{theory}) *}
1278
+ − 129
local_setup {* snd o prove_const_rsp @{binding permute_rtrm1_rsp} [@{term "permute :: perm \<Rightarrow> rtrm1 \<Rightarrow> rtrm1"}]
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 130
(fn _ => asm_simp_tac (HOL_ss addsimps @{thms alpha1_eqvt}) 1) *}
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 131
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 132
lemmas trm1_bp_induct = rtrm1_bp.induct[quot_lifted]
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 133
lemmas trm1_bp_inducts = rtrm1_bp.inducts[quot_lifted]
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 134
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 135
setup {* define_lifted_perms ["Term1.trm1"] [("permute_trm1", @{term "permute :: perm \<Rightarrow> rtrm1 \<Rightarrow> rtrm1"})]
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 136
@{thms permute_rtrm1_permute_bp_zero permute_rtrm1_permute_bp_append} *}
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 137
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 138
lemmas
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 139
permute_trm1 = permute_rtrm1_permute_bp.simps[quot_lifted]
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 140
and fv_trm1 = fv_rtrm1_fv_bp.simps[quot_lifted]
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 141
and fv_trm1_eqvt = fv_rtrm1_fv_bp_eqvt(1)[quot_lifted]
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 142
and alpha1_INJ = alpha1_inj[unfolded alpha_gen, quot_lifted, folded alpha_gen]
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 143
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 144
lemma supports:
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 145
"(supp (atom x)) supports (Vr1 x)"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 146
"(supp t \<union> supp s) supports (Ap1 t s)"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 147
"(supp (atom x) \<union> supp t) supports (Lm1 x t)"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 148
"(supp b \<union> supp t \<union> supp s) supports (Lt1 b t s)"
1435
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 149
(* "{} supports BUnit"*)
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 150
"(supp (atom x)) supports (BVr x)"
1435
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 151
(* "(supp a \<union> supp b) supports (BPr a b)"*)
1428
+ − 152
apply(tactic {* ALLGOALS (supports_tac @{thms permute_trm1}) *})
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 153
done
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 154
1429
+ − 155
prove rtrm1_bp_fs: {* snd (mk_fs [@{typ trm1}, @{typ bp}]) *}
+ − 156
apply (tactic {* fs_tac @{thm trm1_bp_induct} @{thms supports} 1 *})
+ − 157
done
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 158
1343
693df83172f0
Trying to fix the proofs for the single existential... So far failed.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 159
instance trm1 and bp :: fs
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 160
apply default
1434
+ − 161
apply (simp_all add: rtrm1_bp_fs)
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 162
done
1425
112f998d2953
Fixes for term1 for new alpha. Still not able to show support equations.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 163
1345
+ − 164
lemma fv_eq_bv_pre: "fv_bp bp = bv1 bp"
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 165
apply(induct bp rule: trm1_bp_inducts(2))
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 166
apply(simp_all)
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 167
done
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 168
1345
+ − 169
lemma fv_eq_bv: "fv_bp = bv1"
+ − 170
apply(rule ext)
+ − 171
apply(rule fv_eq_bv_pre)
+ − 172
done
+ − 173
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 174
lemma helper2: "{b. \<forall>pi. pi \<bullet> (a \<rightleftharpoons> b) \<bullet> bp \<noteq> bp} = {}"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 175
apply auto
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 176
apply (rule_tac x="(x \<rightleftharpoons> a)" in exI)
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 177
apply auto
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 178
done
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 179
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 180
lemma alpha_bp_eq_eq: "alpha_bp a b = (a = b)"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 181
apply rule
1425
112f998d2953
Fixes for term1 for new alpha. Still not able to show support equations.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 182
apply (induct a b rule: alpha_rtrm1_alpha_bp_alpha_bv1.inducts(2))
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 183
apply (simp_all add: equivp_reflp[OF alpha1_equivp(2)])
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 184
done
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 185
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 186
lemma alpha_bp_eq: "alpha_bp = (op =)"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 187
apply (rule ext)+
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 188
apply (rule alpha_bp_eq_eq)
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 189
done
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 190
1345
+ − 191
lemma ex_out:
+ − 192
"(\<exists>x. Z x \<and> Q) = (Q \<and> (\<exists>x. Z x))"
+ − 193
"(\<exists>x. Q \<and> Z x) = (Q \<and> (\<exists>x. Z x))"
+ − 194
"(\<exists>x. P x \<and> Q \<and> Z x) = (Q \<and> (\<exists>x. P x \<and> Z x))"
+ − 195
"(\<exists>x. Q \<and> P x \<and> Z x) = (Q \<and> (\<exists>x. P x \<and> Z x))"
+ − 196
"(\<exists>x. Q \<and> P x \<and> Z x \<and> W x) = (Q \<and> (\<exists>x. P x \<and> Z x \<and> W x))"
+ − 197
apply (blast)+
+ − 198
done
+ − 199
+ − 200
lemma "(Abs bs (x, x') = Abs cs (y, y')) = (\<exists>p. (bs, x) \<approx>gen op = supp p (cs, y) \<and> (bs, x') \<approx>gen op = supp p (cs, y'))"
+ − 201
thm Abs_eq_iff
+ − 202
apply (simp add: Abs_eq_iff)
+ − 203
apply (rule arg_cong[of _ _ "Ex"])
+ − 204
apply (rule ext)
+ − 205
apply (simp only: alpha_gen)
+ − 206
apply (simp only: supp_Pair eqvts)
+ − 207
apply rule
+ − 208
apply (erule conjE)+
+ − 209
oops
+ − 210
+ − 211
lemma "(f (p \<bullet> bp), p \<bullet> bp) \<approx>gen op = f pi (f bp, bp) = False"
+ − 212
apply (simp add: alpha_gen fresh_star_def)
+ − 213
oops
+ − 214
+ − 215
(* TODO: permute_ABS should be in eqvt? *)
+ − 216
+ − 217
lemma Collect_neg_conj: "{x. \<not>(P x \<and> Q x)} = {x. \<not>(P x)} \<union> {x. \<not>(Q x)}"
+ − 218
by (simp add: Collect_imp_eq Collect_neg_eq[symmetric])
+ − 219
1349
+ − 220
lemma "
+ − 221
{a\<Colon>atom. infinite ({b\<Colon>atom. \<not> (\<exists>pi\<Colon>perm. P pi a b \<and> Q pi a b)})} =
+ − 222
{a\<Colon>atom. infinite {b\<Colon>atom. \<not> (\<exists>p\<Colon>perm. P p a b)}} \<union>
+ − 223
{a\<Colon>atom. infinite {b\<Colon>atom. \<not> (\<exists>p\<Colon>perm. Q p a b)}}"
+ − 224
oops
+ − 225
+ − 226
lemma inf_or: "(infinite x \<or> infinite y) = infinite (x \<union> y)"
+ − 227
by (simp add: finite_Un)
+ − 228
+ − 229
1435
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 230
1349
+ − 231
lemma supp_fv_let:
+ − 232
assumes sa : "fv_bp bp = supp bp"
1435
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 233
shows "\<lbrakk>fv_trm1 ta = supp ta; fv_trm1 tb = supp tb\<rbrakk>
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 234
\<Longrightarrow> supp (Lt1 bp ta tb) = fv_trm1 (Lt1 bp ta tb)"
1349
+ − 235
apply(simp only: fv_trm1 fv_eq_bv sa[simplified fv_eq_bv])
1434
+ − 236
apply simp
1349
+ − 237
apply(fold supp_Abs)
+ − 238
apply(simp only: fv_trm1 fv_eq_bv sa[simplified fv_eq_bv,symmetric])
1434
+ − 239
apply(simp (no_asm) only: supp_def)
+ − 240
apply(simp only: permute_set_eq permute_trm1)
+ − 241
apply(simp only: alpha1_INJ)
+ − 242
apply(simp only: ex_out)
+ − 243
apply(simp only: Collect_neg_conj)
+ − 244
apply(simp only: permute_ABS)
+ − 245
apply(simp only: Abs_eq_iff)
1349
+ − 246
apply(simp only: alpha_gen fv_eq_bv supp_Pair)
1434
+ − 247
apply(simp only: inf_or[symmetric])
+ − 248
apply(simp only: Collect_disj_eq)
+ − 249
apply(tactic {* Cong_Tac.cong_tac @{thm cong} 1 *}) apply(rule refl)
1349
+ − 250
apply(simp only: supp_eqvt[symmetric] fv_trm1_eqvt[symmetric] bv1_eqvt fv_eq_bv sa[simplified fv_eq_bv,symmetric])
1435
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 251
apply(induct bp)
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 252
apply(simp_all only: TrueI)
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 253
apply(simp_all only: permute_trm1)
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 254
apply(simp_all only: bv1.simps)
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 255
apply(simp_all only: alpha1_INJ) (* Doesn't look true... *)
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 256
apply(simp)
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 257
sorry
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 258
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 259
lemma
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 260
"(\<not> (\<exists>p. (a \<rightleftharpoons> b) \<bullet> supp tb - {atom ((a \<rightleftharpoons> b) \<bullet> name)} = supp tb - {atom name} \<and>
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 261
({atom (p \<bullet> (a \<rightleftharpoons> b) \<bullet> name)} = {atom name}) \<and>
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 262
((a \<rightleftharpoons> b) \<bullet> supp tb - {atom ((a \<rightleftharpoons> b) \<bullet> name)}) \<sharp>* p \<and>
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 263
p \<bullet> (a \<rightleftharpoons> b) \<bullet> tb = tb)) =
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 264
(\<not> (\<exists>p. (a \<rightleftharpoons> b) \<bullet> supp tb - {atom ((a \<rightleftharpoons> b) \<bullet> name)} = supp tb - {atom name} \<and>
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 265
((a \<rightleftharpoons> b) \<bullet> supp tb - {atom ((a \<rightleftharpoons> b) \<bullet> name)}) \<sharp>* p \<and>
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 266
p \<bullet> (a \<rightleftharpoons> b) \<bullet> tb = tb))"
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 267
apply simp
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 268
apply rule
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 269
prefer 2
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 270
apply (meson)[2]
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 271
apply clarify
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 272
apply (erule_tac x="p" in allE)
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 273
apply simp
55b49de0c2c7
Even with pattern simplified to a single clause, the supp equation doesn't seem true.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 274
apply (simp add: atom_eqvt[symmetric])
1349
+ − 275
sorry
+ − 276
1436
+ − 277
thm trm1_bp_inducts
+ − 278
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 279
lemma supp_fv:
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 280
"supp t = fv_trm1 t"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 281
"supp b = fv_bp b"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 282
apply(induct t and b rule: trm1_bp_inducts)
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 283
apply(simp_all)
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 284
apply(simp add: supp_def permute_trm1 alpha1_INJ fv_trm1)
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 285
apply(simp only: supp_at_base[simplified supp_def])
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 286
apply(simp add: supp_def permute_trm1 alpha1_INJ fv_trm1)
1343
693df83172f0
Trying to fix the proofs for the single existential... So far failed.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 287
apply(simp add: Collect_imp_eq Collect_neg_eq Un_commute)
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 288
apply(subgoal_tac "supp (Lm1 name rtrm1) = supp (Abs {atom name} rtrm1)")
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 289
apply(simp add: supp_Abs fv_trm1)
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 290
apply(simp (no_asm) add: supp_def permute_set_eq atom_eqvt permute_trm1)
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 291
apply(simp add: alpha1_INJ)
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 292
apply(simp add: Abs_eq_iff)
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 293
apply(simp add: alpha_gen.simps)
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 294
apply(simp add: supp_eqvt[symmetric] fv_trm1_eqvt[symmetric])
1343
693df83172f0
Trying to fix the proofs for the single existential... So far failed.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 295
defer
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 296
apply(simp (no_asm) add: supp_def permute_set_eq atom_eqvt)
1436
+ − 297
apply(simp only: supp_at_base[simplified supp_def])
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 298
apply(simp (no_asm) add: supp_def Collect_imp_eq Collect_neg_eq)
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 299
apply(simp add: Collect_imp_eq[symmetric] Collect_neg_eq[symmetric] supp_def[symmetric])
1349
+ − 300
(*apply(rule supp_fv_let) apply(simp_all)*)
1345
+ − 301
apply(subgoal_tac "supp (Lt1 bp rtrm11 rtrm12) = supp (Abs (bv1 bp) (rtrm12)) \<union> supp(rtrm11)")
+ − 302
(*apply(subgoal_tac "supp (Lt1 bp rtrm11 rtrm12) = supp (Abs (bv1 bp) (bp, rtrm12)) \<union> supp(rtrm11)")*)
1343
693df83172f0
Trying to fix the proofs for the single existential... So far failed.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 303
apply(simp add: supp_Abs fv_trm1 supp_Pair Un_Diff Un_assoc fv_eq_bv)
693df83172f0
Trying to fix the proofs for the single existential... So far failed.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 304
apply(blast) (* Un_commute in a good place *)
1345
+ − 305
apply(simp (no_asm) only: supp_def permute_set_eq atom_eqvt permute_trm1)
+ − 306
apply(simp only: alpha1_INJ permute_ABS permute_prod.simps Abs_eq_iff)
+ − 307
apply(simp only: ex_out)
1343
693df83172f0
Trying to fix the proofs for the single existential... So far failed.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 308
apply(simp only: Un_commute)
1345
+ − 309
apply(simp only: alpha_bp_eq fv_eq_bv)
+ − 310
apply(simp only: alpha_gen fv_eq_bv supp_Pair)
+ − 311
apply(simp only: supp_eqvt[symmetric] fv_trm1_eqvt[symmetric] bv1_eqvt fv_eq_bv)
+ − 312
apply(simp only: ex_out)
+ − 313
apply(simp only: Collect_neg_conj finite_Un Diff_cancel)
+ − 314
apply(simp)
+ − 315
apply(fold supp_def)
1343
693df83172f0
Trying to fix the proofs for the single existential... So far failed.
Cezary Kaliszyk <kaliszyk@in.tum.de>
diff
changeset
+ − 316
sorry
1270
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 317
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 318
lemma trm1_supp:
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 319
"supp (Vr1 x) = {atom x}"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 320
"supp (Ap1 t1 t2) = supp t1 \<union> supp t2"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 321
"supp (Lm1 x t) = (supp t) - {atom x}"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 322
"supp (Lt1 b t s) = supp t \<union> (supp s - bv1 b)"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 323
by (simp_all add: supp_fv fv_trm1 fv_eq_bv)
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 324
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 325
lemma trm1_induct_strong:
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 326
assumes "\<And>name b. P b (Vr1 name)"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 327
and "\<And>rtrm11 rtrm12 b. \<lbrakk>\<And>c. P c rtrm11; \<And>c. P c rtrm12\<rbrakk> \<Longrightarrow> P b (Ap1 rtrm11 rtrm12)"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 328
and "\<And>name rtrm1 b. \<lbrakk>\<And>c. P c rtrm1; (atom name) \<sharp> b\<rbrakk> \<Longrightarrow> P b (Lm1 name rtrm1)"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 329
and "\<And>bp rtrm11 rtrm12 b. \<lbrakk>\<And>c. P c rtrm11; \<And>c. P c rtrm12; bv1 bp \<sharp>* b\<rbrakk> \<Longrightarrow> P b (Lt1 bp rtrm11 rtrm12)"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 330
shows "P a rtrma"
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 331
sorry
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 332
8c3cf9f4f5f2
Split Terms into separate files and add them to tests.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
+ − 333
end