La funzione natToFin
dalla libreria standard ha la seguente firma:natToFin quando ci sono prove che la conversione funziona
natToFin : Nat -> (n : Nat) -> Maybe (Fin n)
natToFin 4 5
rendimenti Just (FS (FS (FS (FS FZ)))) : Maybe (Fin 5)
, mentre natToFin 5 5
rendimenti Nothing
.
Vorrei una funzione con la seguente firma:
myNatToFin : (m : Nat) -> (n : Nat) -> { auto p : n `GT` m } -> Fin n
Si comporta come la funzione lib standard, ma non ha bisogno di restituire un Maybe
perché è sempre possibile generare un Fin n
da m
dato che n
è maggiore di m
.
Come si implementa myNatToFin
?