fin_zero_elim

fin 0 is empty

fin.last

The greatest value of fin (n+1)

fin.cast_lt

cast_lt i h embeds i into a fin where h proves it belongs into.

fin.cast_le

cast_le h i embeds i into a larger fin type.

fin.cast

cast eq i embeds i into a equal fin type.

fin.cast_add

cast_add m i embedds i in fin (n+m).

fin.cast_succ

cast_succ i embedds i in fin (n+1).

fin.succ_above

succ_above p i embeds into fin (n + 1) with a hole around p.

fin.pred_above

pred_above p i h embeds i into fin n by ignoring p.

fin.sub_nat

sub_nat i h subtracts m from i, generalizes fin.pred.

fin.add_nat

add_nat i h adds m on i, generalizes fin.succ.

fin.nat_add

nat_add i h adds n on i