У меня есть эта программа Agda:
data ℕ⁺ : ℕ → Set where
one : ℕ⁺ (suc zero)
suc⁺ : {n : ℕ} → ℕ⁺ (suc n)
lemma : ∀ (m n : ℕ) → m ≡ suc n → ℕ⁺ m
lemma m zero p = one
lemma m (suc n) p = suc⁺ {suc n}
Проблема во второй последней строке: он жалуется, что one
не ℕ⁺ m
, однако у меня есть p
, чтобы доказать, что они на самом деле.
Как я могу это сделать? Я знаю, как это сделать, если то, что я хотел доказать, на самом деле было равенством (ну, просто передайте p
в этом случае), но я не знаю, как использовать p
для преобразования универсального ℕ⁺ m
в ℕ⁺ (suc zero)
.