2007-06-26 [長年日記]
λ. Coq の extraction
<URL:http://d.hatena.ne.jp/syd_syd/20070622#p1> と <URL:http://www.eva-01.jp/d/?date=20070623#p03> あたりを読んで、なるほどと思った。 Coqではextractionをそういう風に使うのね。 AgdaだとそもそもSetとPropの区別が無いから、extractionのようなことをあまり意識したことがなかった(Agdaで書くと下みたいになっちゃうし*1)。考え方の違いが面白い。
Decidable :: Set -> Set Decidable P = P `Or` (Not P) lemma :: (C::Context) -> (e::Expr) -> (t::Type) -> Decidable (C |- e : t)) lemma = ... typeCheck :: (C::Context) -> (e::Expr) -> (t::Type) -> Bool typeCheck C e t = case lemma C e t of (inl x) -> true (inr y) -> false
*1 表記はちょっと誤魔化してるけど
Agda2ではSetはSet, PropはPropになります。<br>http://www.cs.chalmers.se/~ulfn/darcs/Agda2/src/full/Syntax/Parser/Tokens.hs<br>(誰も見なさそうなコード)
おお、そうなんですかー。<br>全然知りませんでした。ありがとうございます。<br>目的はやはりextractionというかerasure?のためなのでしょうか?