| 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  |