やる気!!!

でません・・・。

natEq : Nat -> Nat -> Bool
natEq zero zero = true
natEq zero (succ b) = false
natEq (succ a) zero = false
natEq (succ a) (succ b) = natEq a b

boolEq : Bool -> Bool -> Bool
boolEq true true = true
boolEq false false = true
boolEq _ _ = false

valueSame : {A : Set0} {p : A -> A -> Bool} -> (a : A) -> (b : A) -> Val (p a b)
valueSame {Nat} a b = val (natEq a b)
valueSame {Bool} a b = val (boolEq a b)
valueSame {_} _ _ = val false

とかダメなんですかね・・・。