combine_splitが分からん。
証明は出来た。しかしどやってdestructを使うのか分からねえ。

Theorem split_fst_snd : forall (X Y: Type) ( l : list (X * Y)),
 split l = ((fst (split l)), (snd (split l))).
Proof.
 intros. induction l as [| [x y] l'].
 simpl.  reflexivity.
 simpl.
 reflexivity.
Qed.
Theorem combine_split : forall X Y (l : list (X * Y)) l1 l2,
  split l  = (l1, l2) ->
  combine l1 l2 = l. 
Proof.
  intros X Y l. induction l as [| [x y] l']. (* この書き方も謎だ *)
  Case "l=nil".
  intros l1 l2 H. simpl in H.
  inversion H. reflexivity.
  Case "(x, y) :: l".
  intros l1 l2 H.  simpl in H.
  inversion H.  simpl.  
  assert(H3: combine (fst (split l')) (snd (split l')) = l').
  apply IHl'. rewrite <- split_fst_snd. reflexivity. rewrite H3. reflexivity.
Qed.
(*destructでてこねえ*)
    • -

よめはんの体調は順調のようだ。よかったよかった。
トキソプラズマの可能性ありとか言われてるようだけど、まあだいじょぶでしょう。