「同じ」とは何か?
Print eq. (* ===> Inductive eq (A : Type) (x : A) : A -> Prop := eq_refl : x = x *)
eq_reflは引数を持たないコンストラクタ。
eq_reflを実行すると、なんらかの型Aの値xを取って、 eq x x (x = x)という命題型の値(つまり証明or根拠)を返す関数?を返す?
Goal 1 + 0 = 1. Proof. reflexivity. Show Proof. (* ===> eq_refl なんで、eq_refl 1 ではないのか? *) Qed.
右辺と左辺が同じ等式で終る証明は、両辺の値がなんであれ、eq_reflの呼出し一つで事足りるようだ。
何か不思議な気がしていたけど、こうして書いてみると、それしかありえない気もする。
命題なのか、その命題の証明なのか?やっぱり良くわかってなかったわ。自分。