4
나는 결정할 수있는 평등을 사용하는 함수에 대해 간단한 것을 증명하려고합니다. 여기에 훨씬 단순화 된 예입니다 : 이제결정할 수있는 평등을 포함하는 증명
open import Relation.Nullary
open import Relation.Binary
open import Relation.Binary.PropositionalEquality
module Foo {c} {ℓ} (ds : DecSetoid c ℓ) where
open DecSetoid ds hiding (refl)
data Result : Set where
something something-else : Result
check : Carrier → Carrier → Result
check x y with x ≟ y
... | yes _ = something
... | no _ = something-else
, 나는 이미 _≟_
의 양쪽이 동일하다는 것을 보여준 곳이 뭔가를 증명하기 위해 노력하고있어.
check-same : ∀ x → check x x ≡ something
check-same x = {!!}
이 시점에서 현재 목표는 (check ds x x | x ≟ x) ≡ something
입니다. x ≟ x
가 자체라면, 나는 refl
같은 것을 사용하여 그것을 해결 것이지만,이 상황에서 최선은이 같은 뭔가 가지고 올 수 :
check-same x with x ≟ x
... | yes p = refl
... | no ¬p with ¬p (DecSetoid.refl ds)
... |()
자체에 의해이 나쁜 것이 아니라 큰 증거의 한가운데서 그것은 엉망입니다. 분명히 이것을하기위한 더 좋은 방법이 있어야만합니까?
내 증거를 단순화하기 위해
rewrite
와 함께 사용할 수있는이 보조 정리쓰기 허용
, 난 그냥 좋겠 'Data.Empty'에서'⊥-elim'을 사용하십시오 :'no ¬p = ⊥-elim (¬p (DecSetoid.refl ds))'. – copumpkin@copumpkin : 고마워, 적어도 엉망진창은 없애 버린다. – hammar