В кубической библиотеке Agda определен тип Modulo
, подобный этому :
data Modulo (k : ℕ) : Type₀ where
embed : (n : ℕ) → Modulo k
pre-step : NonZero k → (n : ℕ) → embed n ≡ embed (k + n)
Это набор?
Отмахиваясь рукой, я вижу, что любой путь - это композиция refl
s и pre-step
s, принимающая форму embed n ≡ embed (m * k + n)
; и поскольку _+_
является ассоциативным и 0 +_ ≡ id
, структура сочетаний refl
s и pre-step
s не имеет значения; но как это будет оформлено?