Coqで”無限オブ無限”(証明部分)

ヒビルテで、さかいさんが興味深いCoqのコードを紹介していた。
λ. Coqで“無限オブ無限”
どうやら元ネタはここ(derive your dreams)らしい。

おもしろそうなので、さかいさんのコードを証明してみた。

証明した定理は以下。

Theorem main : forall m n:nat, m >= 1 -> n >= 1 ->
  Str_in (m,n) (iflatten ss).

但し、

ss =
 [[(1,1); (1,2); ...];
  [(2,1); (2,2); ...];
   :
   : ]

とする。

続きを読む