习题16Fixpoint sublists {A: Type} (l: list A): list (list A) :=
match l with
| nil => [lbk]nil[rbk]
| a :: l0 => map (cons a) (prefixes l0) ++ sublists l0
end.
请证明 sublists l 的元素确实是 l 中的所有连续段。提示:必要时可以添加并证明一些前置引理帮助完
成证明。
Theorem in_sublists:
forall A (l1 l2 l3: list A),
In l2 (sublists (l1 ++ l2 ++ l3)).
(* 请 在 此 处 填 入 你 的 证 明 , 以_[lbk]Qed[rbk]_ 结束 。 *)
Theorem in_sublists_inv:
forall A (l2 l: list A),
In l2 (sublists l) ->
exists l1 l3, l1 ++ l2 ++ l3 = l.
(* 请 在 此 处 填 入 你 的 证 明 , 以_[lbk]Qed[rbk]_ 结束 。 *)


match l with
| nil => [lbk]nil[rbk]
| a :: l0 => map (cons a) (prefixes l0) ++ sublists l0
end.
请证明 sublists l 的元素确实是 l 中的所有连续段。提示:必要时可以添加并证明一些前置引理帮助完
成证明。
Theorem in_sublists:
forall A (l1 l2 l3: list A),
In l2 (sublists (l1 ++ l2 ++ l3)).
(* 请 在 此 处 填 入 你 的 证 明 , 以_[lbk]Qed[rbk]_ 结束 。 *)
Theorem in_sublists_inv:
forall A (l2 l: list A),
In l2 (sublists l) ->
exists l1 l3, l1 ++ l2 ++ l3 = l.
(* 请 在 此 处 填 入 你 的 证 明 , 以_[lbk]Qed[rbk]_ 结束 。 *)


