Update
This commit is contained in:
parent
2eb631de5e
commit
d3cb1fc175
@ -604,6 +604,52 @@ Proof.
|
|||||||
Qed.
|
Qed.
|
||||||
|
|
||||||
|
|
||||||
|
Theorem subsequence_split {X: Type} :
|
||||||
|
forall (u v w: list X),
|
||||||
|
subsequence (u++v) w
|
||||||
|
-> (exists a b, w = a++b /\ (subsequence u a) /\ subsequence v b).
|
||||||
|
Proof.
|
||||||
|
intros u v w. intro H.
|
||||||
|
apply subsequence_eq_def_1 in H.
|
||||||
|
destruct H. destruct H.
|
||||||
|
|
||||||
|
assert (forall (b: list bool) (u v: list X),
|
||||||
|
length b = length (u++v)
|
||||||
|
-> exists x y, b = x++y /\ length x = length u /\ length y = length v).
|
||||||
|
intros b u0 v0. intro I.
|
||||||
|
rewrite app_length in I.
|
||||||
|
exists (firstn (length u0) b). exists (skipn (length u0) b).
|
||||||
|
split. symmetry. apply firstn_skipn. split.
|
||||||
|
rewrite firstn_length_le. reflexivity. rewrite I.
|
||||||
|
apply PeanoNat.Nat.le_add_r. rewrite skipn_length.
|
||||||
|
rewrite I. rewrite Nat.add_sub_swap. rewrite PeanoNat.Nat.sub_diag.
|
||||||
|
reflexivity. apply le_n.
|
||||||
|
apply H1 in H. destruct H. destruct H. destruct H. destruct H2.
|
||||||
|
|
||||||
|
exists (map snd (filter fst (combine x0 u))).
|
||||||
|
exists (map snd (filter fst (combine x1 v))).
|
||||||
|
rewrite <- map_app. rewrite <- filter_app.
|
||||||
|
|
||||||
|
assert (L: forall (g i: list bool) (h j: list X), length g = length h
|
||||||
|
-> (combine g h) ++ (combine i j) = combine (g++i) (h++j)).
|
||||||
|
intro g. induction g; intros i h j; intro I.
|
||||||
|
symmetry in I. apply length_zero_iff_nil in I. rewrite I.
|
||||||
|
reflexivity.
|
||||||
|
destruct h. apply PeanoNat.Nat.neq_succ_0 in I. contradiction.
|
||||||
|
simpl. rewrite IHg. reflexivity. inversion I. reflexivity.
|
||||||
|
rewrite L. rewrite <- H. split. assumption. split.
|
||||||
|
|
||||||
|
apply subsequence_eq_def_3. apply subsequence_eq_def_2.
|
||||||
|
exists x0. split. assumption. reflexivity.
|
||||||
|
apply subsequence_eq_def_3. apply subsequence_eq_def_2.
|
||||||
|
exists x1. split. assumption. reflexivity.
|
||||||
|
|
||||||
|
assumption.
|
||||||
|
Qed.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(** * Tests
|
(** * Tests
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user