let rec length (xs:int list) =
  match xs with
      [] -> 0 (*l=0 v=0*)
n>=l>=1 v=1

let rec make_list n =
  if n = 0
  then [] (* 'a list *)
  else n :: make_list (n - 1)

let main (n:int(*-:{v:Int | true }*)) =
  if n > 0 then
	  let xs = make_list n in
	  assert (length xs = n)
  else ()
l=0 v=0
 'a list 
-:{v:Int | true }
let rec length (xs:int list) =
  match xs with
n>=l>=1 v=1

let rec make_list n =
  if n = 0
  else n :: make_list (n - 1)

  if n > 0 then
	  let xs = make_list n in
	  assert (length xs = n)
  else ()