author | zhangx |
Wed, 03 Feb 2016 12:04:03 +0800 | |
changeset 101 | c7db2ccba18a |
parent 81 | c495eb16beb6 |
permissions | -rw-r--r-- |
81
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
1 |
theory Moment |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
2 |
imports Main |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
3 |
begin |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
4 |
|
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
5 |
definition moment :: "nat \<Rightarrow> 'a list \<Rightarrow> 'a list" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
6 |
where "moment n s = rev (take n (rev s))" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
7 |
|
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
8 |
definition restm :: "nat \<Rightarrow> 'a list \<Rightarrow> 'a list" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
9 |
where "restm n s = rev (drop n (rev s))" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
10 |
|
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
11 |
value "moment 3 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9::int]" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
12 |
value "moment 2 [5, 4, 3, 2, 1, 0::int]" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
13 |
|
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
14 |
value "restm 3 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9::int]" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
15 |
|
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
16 |
lemma moment_restm_s: "(restm n s) @ (moment n s) = s" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
17 |
unfolding restm_def moment_def |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
18 |
by (metis append_take_drop_id rev_append rev_rev_ident) |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
19 |
|
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
20 |
lemma length_moment_le: |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
21 |
assumes le_k: "k \<le> length s" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
22 |
shows "length (moment k s) = k" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
23 |
using le_k unfolding moment_def by auto |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
24 |
|
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
25 |
lemma length_moment_ge: |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
26 |
assumes le_k: "length s \<le> k" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
27 |
shows "length (moment k s) = (length s)" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
28 |
using assms unfolding moment_def by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
29 |
|
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
30 |
lemma moment_app [simp]: |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
31 |
assumes ile: "i \<le> length s" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
32 |
shows "moment i (s' @ s) = moment i s" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
33 |
using assms unfolding moment_def by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
34 |
|
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
35 |
lemma moment_eq [simp]: "moment (length s) (s' @ s) = s" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
36 |
unfolding moment_def by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
37 |
|
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
38 |
lemma moment_ge [simp]: "length s \<le> n \<Longrightarrow> moment n s = s" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
39 |
by (unfold moment_def, simp) |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
40 |
|
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
41 |
lemma moment_zero [simp]: "moment 0 s = []" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
42 |
by (simp add:moment_def) |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
43 |
|
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
44 |
lemma p_split_gen: |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
45 |
"\<lbrakk>Q s; \<not> Q (moment k s)\<rbrakk> \<Longrightarrow> |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
46 |
(\<exists> i. i < length s \<and> k \<le> i \<and> \<not> Q (moment i s) \<and> (\<forall> i' > i. Q (moment i' s)))" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
47 |
proof (induct s, simp) |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
48 |
fix a s |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
49 |
assume ih: "\<lbrakk>Q s; \<not> Q (moment k s)\<rbrakk> |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
50 |
\<Longrightarrow> \<exists>i<length s. k \<le> i \<and> \<not> Q (moment i s) \<and> (\<forall>i'>i. Q (moment i' s))" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
51 |
and nq: "\<not> Q (moment k (a # s))" and qa: "Q (a # s)" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
52 |
have le_k: "k \<le> length s" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
53 |
proof - |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
54 |
{ assume "length s < k" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
55 |
hence "length (a#s) \<le> k" by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
56 |
from moment_ge [OF this] and nq and qa |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
57 |
have "False" by auto |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
58 |
} thus ?thesis by arith |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
59 |
qed |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
60 |
have nq_k: "\<not> Q (moment k s)" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
61 |
proof - |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
62 |
have "moment k (a#s) = moment k s" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
63 |
proof - |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
64 |
from moment_app [OF le_k, of "[a]"] show ?thesis by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
65 |
qed |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
66 |
with nq show ?thesis by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
67 |
qed |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
68 |
show "\<exists>i<length (a # s). k \<le> i \<and> \<not> Q (moment i (a # s)) \<and> (\<forall>i'>i. Q (moment i' (a # s)))" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
69 |
proof - |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
70 |
{ assume "Q s" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
71 |
from ih [OF this nq_k] |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
72 |
obtain i where lti: "i < length s" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
73 |
and nq: "\<not> Q (moment i s)" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
74 |
and rst: "\<forall>i'>i. Q (moment i' s)" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
75 |
and lki: "k \<le> i" by auto |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
76 |
have ?thesis |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
77 |
proof - |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
78 |
from lti have "i < length (a # s)" by auto |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
79 |
moreover have " \<not> Q (moment i (a # s))" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
80 |
proof - |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
81 |
from lti have "i \<le> (length s)" by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
82 |
from moment_app [OF this, of "[a]"] |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
83 |
have "moment i (a # s) = moment i s" by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
84 |
with nq show ?thesis by auto |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
85 |
qed |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
86 |
moreover have " (\<forall>i'>i. Q (moment i' (a # s)))" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
87 |
proof - |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
88 |
{ |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
89 |
fix i' |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
90 |
assume lti': "i < i'" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
91 |
have "Q (moment i' (a # s))" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
92 |
proof(cases "length (a#s) \<le> i'") |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
93 |
case True |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
94 |
from True have "moment i' (a#s) = a#s" by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
95 |
with qa show ?thesis by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
96 |
next |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
97 |
case False |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
98 |
from False have "i' \<le> length s" by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
99 |
from moment_app [OF this, of "[a]"] |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
100 |
have "moment i' (a#s) = moment i' s" by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
101 |
with rst lti' show ?thesis by auto |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
102 |
qed |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
103 |
} thus ?thesis by auto |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
104 |
qed |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
105 |
moreover note lki |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
106 |
ultimately show ?thesis by auto |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
107 |
qed |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
108 |
} moreover { |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
109 |
assume ns: "\<not> Q s" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
110 |
have ?thesis |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
111 |
proof - |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
112 |
let ?i = "length s" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
113 |
have "\<not> Q (moment ?i (a#s))" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
114 |
proof - |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
115 |
have "?i \<le> length s" by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
116 |
from moment_app [OF this, of "[a]"] |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
117 |
have "moment ?i (a#s) = moment ?i s" by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
118 |
moreover have "\<dots> = s" by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
119 |
ultimately show ?thesis using ns by auto |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
120 |
qed |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
121 |
moreover have "\<forall> i' > ?i. Q (moment i' (a#s))" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
122 |
proof - |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
123 |
{ fix i' |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
124 |
assume "i' > ?i" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
125 |
hence "length (a#s) \<le> i'" by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
126 |
from moment_ge [OF this] |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
127 |
have " moment i' (a # s) = a # s" . |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
128 |
with qa have "Q (moment i' (a#s))" by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
129 |
} thus ?thesis by auto |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
130 |
qed |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
131 |
moreover have "?i < length (a#s)" by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
132 |
moreover note le_k |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
133 |
ultimately show ?thesis by auto |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
134 |
qed |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
135 |
} ultimately show ?thesis by auto |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
136 |
qed |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
137 |
qed |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
138 |
|
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
139 |
lemma p_split: |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
140 |
"\<lbrakk>Q s; \<not> Q []\<rbrakk> \<Longrightarrow> |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
141 |
(\<exists> i. i < length s \<and> \<not> Q (moment i s) \<and> (\<forall> i' > i. Q (moment i' s)))" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
142 |
proof - |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
143 |
fix s Q |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
144 |
assume qs: "Q s" and nq: "\<not> Q []" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
145 |
from nq have "\<not> Q (moment 0 s)" by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
146 |
from p_split_gen [of Q s 0, OF qs this] |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
147 |
show "(\<exists> i. i < length s \<and> \<not> Q (moment i s) \<and> (\<forall> i' > i. Q (moment i' s)))" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
148 |
by auto |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
149 |
qed |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
150 |
|
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
151 |
lemma moment_plus_split: |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
152 |
shows "moment (m + i) s = moment m (restm i s) @ moment i s" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
153 |
unfolding moment_def restm_def |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
154 |
by (metis add.commute rev_append rev_rev_ident take_add) |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
155 |
|
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
156 |
lemma moment_prefix: |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
157 |
"(moment i t @ s) = moment (i + length s) (t @ s)" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
158 |
proof - |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
159 |
from moment_plus_split [of i "length s" "t@s"] |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
160 |
have " moment (i + length s) (t @ s) = moment i (restm (length s) (t @ s)) @ moment (length s) (t @ s)" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
161 |
by auto |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
162 |
have "moment (i + length s) (t @ s) = moment i t @ moment (length s) (t @ s)" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
163 |
by (simp add: moment_def) |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
164 |
with moment_app show ?thesis by auto |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
165 |
qed |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
166 |
|
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
167 |
lemma moment_plus: |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
168 |
"Suc i \<le> length s \<Longrightarrow> moment (Suc i) s = (hd (moment (Suc i) s)) # (moment i s)" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
169 |
proof(induct s, simp+) |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
170 |
fix a s |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
171 |
assume ih: "Suc i \<le> length s \<Longrightarrow> moment (Suc i) s = hd (moment (Suc i) s) # moment i s" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
172 |
and le_i: "i \<le> length s" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
173 |
show "moment (Suc i) (a # s) = hd (moment (Suc i) (a # s)) # moment i (a # s)" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
174 |
proof(cases "i= length s") |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
175 |
case True |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
176 |
hence "Suc i = length (a#s)" by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
177 |
with moment_eq have "moment (Suc i) (a#s) = a#s" by auto |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
178 |
moreover have "moment i (a#s) = s" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
179 |
proof - |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
180 |
from moment_app [OF le_i, of "[a]"] |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
181 |
and True show ?thesis by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
182 |
qed |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
183 |
ultimately show ?thesis by auto |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
184 |
next |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
185 |
case False |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
186 |
from False and le_i have lti: "i < length s" by arith |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
187 |
hence les_i: "Suc i \<le> length s" by arith |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
188 |
show ?thesis |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
189 |
proof - |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
190 |
from moment_app [OF les_i, of "[a]"] |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
191 |
have "moment (Suc i) (a # s) = moment (Suc i) s" by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
192 |
moreover have "moment i (a#s) = moment i s" |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
193 |
proof - |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
194 |
from lti have "i \<le> length s" by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
195 |
from moment_app [OF this, of "[a]"] show ?thesis by simp |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
196 |
qed |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
197 |
moreover note ih [OF les_i] |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
198 |
ultimately show ?thesis by auto |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
199 |
qed |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
200 |
qed |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
201 |
qed |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
202 |
|
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
203 |
end |
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
zhangx
parents:
diff
changeset
|
204 |