@@ -32,7 +32,17 @@ private
32
32
-- function definition; recursive calls are represented by inductive premises
33
33
34
34
data View : ∀ {n} (i j : Fin (suc n)) (k : Fin n) → Set where
35
+ {-
35
36
37
+ -- `punchOut` is the function f(i,j) = if j>i then j-1 else j
38
+
39
+ punchOut : ∀ {i j : Fin (suc n)} → i ≢ j → Fin n
40
+ punchOut {_} {zero} {zero} i≢j = ⊥-elim (i≢j refl)
41
+ punchOut {_} {zero} {suc j} _ = j
42
+ punchOut {suc _} {suc i} {zero} _ = zero
43
+ punchOut {suc _} {suc i} {suc j} i≢j = suc (punchOut (i≢j ∘ cong suc))
44
+
45
+ -}
36
46
zero-suc : ∀ {n} (j : Fin n) → View zero (suc j) j
37
47
suc-zero : ∀ {n} (i : Fin (suc n)) → View (suc i) zero zero
38
48
suc-suc : ∀ {n} {i} {j} {k} → View {n} i j k → View (suc i) (suc j) (suc k)
@@ -73,16 +83,16 @@ view-complete (suc-suc v) = cong suc (view-complete v)
73
83
------------------------------------------------------------------------
74
84
-- Properties of the function, derived from properties of the View
75
85
76
- view-cong : ∀ {i j k} {p q} →
77
- View {n} i j p → View {n} i k q → j ≡ k → p ≡ q
86
+ view-cong : ∀ {i j k} {p q} → View {n} i j p → View {n} i k q →
87
+ j ≡ k → p ≡ q
78
88
view-cong v w refl = aux v w where
79
89
aux : ∀ {i j} {p q} → View {n} i j p → View {n} i j q → p ≡ q
80
90
aux (zero-suc _) (zero-suc _) = refl
81
91
aux (suc-zero i) (suc-zero i) = refl
82
92
aux (suc-suc v) (suc-suc w) = cong suc (aux v w)
83
93
84
- view-injective : ∀ {i j k} {p q} →
85
- View {n} i j p → View {n} i k q → p ≡ q → j ≡ k
94
+ view-injective : ∀ {i j k} {p q} → View {n} i j p → View {n} i k q →
95
+ p ≡ q → j ≡ k
86
96
view-injective v w refl = aux v w where
87
97
aux : ∀ {i j k} {r} → View {n} i j r → View {n} i k r → j ≡ k
88
98
aux (zero-suc _) (zero-suc _) = refl
0 commit comments