import data.nat data.list
open nat

constant foo (a : nat) : a > 0 → nat

definition bla (a : nat) :=
foo
  (succ (succ a))
  abstract lt.step abstract zero_lt_succ a end  end

print bla
print bla_1
print bla_2

definition test (a : nat) :=
foo
  (succ (succ a))
  abstract [reducible] lt.step abstract [irreducible] zero_lt_succ a end  end

print test_1
print test_2

constant voo {A : Type} (a b : A) : a ≠ b → bool

set_option pp.universes true

open list
definition tst {A : Type} (a : A) (l : list A) :=
voo (a::l) [] abstract by contradiction end

print tst_1
print tst