module I19_simplint

  use int.Int

  axiom H [@W:non_conservative_extension:N] : forall x y z. x < y -> y < z -> x < z

  goal g: 0 < 2

end

module I19_simplpoly

  type t

  predicate r t t

  axiom trans: forall x y z. r x y -> r y z -> r x z

  constant a:t
  constant b:t
  constant c:t

  axiom a1: r a b

  axiom a2: r b c

  goal test: r a c

end

module I19_simplpoly2

  type t
  type t'

  predicate r 'a t t

  axiom trans: forall a:'a. forall a':'a. forall x y z. r a x y -> r a y z -> r a' x z

  constant a:t
  constant b:t
  constant c:t

  axiom trans_eq: forall x y z. r 4 x y -> r 5 y z -> a = z

  axiom a1: forall x:'a. r x a b

  axiom a2: forall x:'a. r x b c

  (* apply trans 1,b,b does not work *)

  goal test: r 1 a c
  (* apply trans with b *)

end
