fact: Fixpoint print_line (n m : nat) (l : list nat) {struct n}: string * list nat := let v := if (m %| n) then "|"%string else ""%string in match n, l with O , _ => (v, l) | n1.+1, (0 :: l1) => let (s1, l2) := print_line n1 m l1 in (append v (append " " s1), l2) | n1.+1, (n :: l1) => let (s1, l2) := print_line n1 m l1 in (append v (String (Ascii.ascii_of_nat (n + 48)) s1), l2) | _,_ => ("error"%string , l) end.
imports: mathcomp(all_ssreflect) mathcomp(zify) String