Skip to content

Commit 9e4d97f

Browse files
authored
invFin: export ~> public export and invFinSpec (#1890)
* export ~> public export * Add a theorem about `invFin` specification * Lower the visibility level of `invFinSpec`
1 parent 281ae86 commit 9e4d97f

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

libs/contrib/Data/Fin/Extra.idr

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,18 @@ finToNatShift (S k) a = cong S (finToNatShift k a)
4646
-------------------------------------------------
4747

4848
||| Compute the Fin such that `k + invFin k = n - 1`
49-
export
49+
public export
5050
invFin : {n : Nat} -> Fin n -> Fin n
5151
invFin FZ = last
5252
invFin (FS k) = weaken (invFin k)
5353

54+
export
55+
invFinSpec : {n : _} -> (i : Fin n) -> 1 + finToNat i + finToNat (invFin i) = n
56+
invFinSpec {n = S k} FZ = cong S finToNatLastIsBound
57+
invFinSpec (FS k) = let H = invFinSpec k in
58+
let h = finToNatWeakenNeutral {n = invFin k} in
59+
cong S (rewrite h in H)
60+
5461
||| The inverse of a weakened element is the successor of its inverse
5562
export
5663
invFinWeakenIsFS : {n : Nat} -> (m : Fin n) -> invFin (weaken m) = FS (invFin m)

0 commit comments

Comments
 (0)