fact: Fixpoint canon alpha (i:nat) : T1 := match alpha with | zero => zero | cons zero 0 zero => zero | cons zero (S k) zero => FS k | cons gamma 0 zero => (match T1.pred gamma with Some gamma' => match i with | 0 => zero | S j => cons gamma' j zero end | None => cons (canon gamma i) 0 zero end) | cons gamma (S n) zero => (match T1.pred gamma with Some gamma' => (match i with 0 => cons gamma n zero | S j => cons gamma n (cons gamma' j zero) end) | None => cons gamma n (cons (canon gamma i) 0 zero) end) | cons alpha n beta => cons alpha n (canon beta i) end.
imports: hydras.Prelude(DecPreOrder)