From elpi.apps Require Import derive.eqbOK.

From elpi.apps.derive.tests Require Import test_derive_corelib test_eqb test_eqbcorrect.

Import test_derive_corelib.Coverage 
       test_eqType_ast.Coverage
       test_eqb.Coverage
       test_eqbcorrect.Coverage.

Module Coverage.

Elpi derive.eqbOK empty.
Elpi derive.eqbOK unit.
Elpi derive.eqbOK peano.
Elpi derive.eqbOK option.
Elpi derive.eqbOK pair.
Elpi derive.eqbOK seq.
Elpi derive.eqbOK box_peano.
Elpi derive.eqbOK rose.
Elpi derive.eqbOK rose_p.
Elpi derive.eqbOK rose_o.
Fail Elpi derive.eqbOK nest.
Fail Elpi derive.eqbOK w.
Fail Elpi derive.eqbOK vect.
Fail Elpi derive.eqbOK dyn.
Fail Elpi derive.eqbOK zeta.
Elpi derive.eqbOK beta.
Fail Elpi derive.eqbOK iota.
(*
Elpi derive.eqbOK large.
*)
Elpi derive.eqbOK prim_int.
Fail Elpi derive.eqbOK prim_float.
Elpi derive.eqbOK prim_string.
Elpi derive.eqbOK fo_record.
Elpi derive.eqbOK pa_record.
Elpi derive.eqbOK pr_record.
Fail Elpi derive.eqbOK dep_record.
Elpi derive.eqbOK enum.
Fail Elpi derive.eqbOK eq.
Elpi derive.eqbOK bool.
Elpi derive.eqbOK sigma_bool.
Elpi derive.eqbOK sigma_bool2.
Elpi derive.eqbOK ord.
Elpi derive.eqbOK ord2.
Elpi derive.eqbOK val.
Elpi derive.eqbOK alias.
Fail Elpi derive.eqbOK mempty.
Fail Elpi derive.eqbOK munit.
Fail Elpi derive.eqbOK mpeano.
Fail Elpi derive.eqbOK moption.
Fail Elpi derive.eqbOK mtree.

End Coverage.

Import Coverage.

Redirect "tmp" Check peano_eqb_OK : forall n m, Datatypes.reflect (n = m) (peano_eqb n m).
Redirect "tmp" Check seq_eqb_OK : forall A eqA (h : forall a1 a2 : A, Datatypes.reflect (a1 = a2) (eqA a1 a2)) l1 l2, Datatypes.reflect (l1 = l2) (seq_eqb A eqA l1 l2).
Redirect "tmp" Check ord_eqb_OK : forall n (o1 o2 : ord n), Datatypes.reflect (o1 = o2) (ord_eqb n n o1 o2).
Redirect "tmp" Check alias_eqb_OK : forall x y : alias, Datatypes.reflect (x = y) (alias_eqb x y).
