]> matita.cs.unibo.it Git - helm.git/blob - helm/software/matita/tests/coercions_contravariant.ma
better test for church numerals
[helm.git] / helm / software / matita / tests / coercions_contravariant.ma
1 (**************************************************************************)
2 (*       ___                                                              *)
3 (*      ||M||                                                             *)
4 (*      ||A||       A project by Andrea Asperti                           *)
5 (*      ||T||                                                             *)
6 (*      ||I||       Developers:                                           *)
7 (*      ||T||         The HELM team.                                      *)
8 (*      ||A||         http://helm.cs.unibo.it                             *)
9 (*      \   /                                                             *)
10 (*       \ /        This file is distributed under the terms of the       *)
11 (*        v         GNU General Public License Version 2                  *)
12 (*                                                                        *)
13 (**************************************************************************)
14
15 set "baseuri" "cic:/matita/test/".
16
17 include "logic/equality.ma".
18 include "nat/nat.ma".
19
20 axiom A : nat -> Type.
21 axiom B : nat -> Type.
22 axiom A1: nat -> Type.
23 axiom B1: nat -> Type.
24 axiom c : ∀n,m. A1 n -> A m.
25 axiom d : ∀n,m. B n -> B1 m.
26 axiom f : ∀n,m. A n -> B m.
27 axiom g : ∀n.B n.
28
29 coercion cic:/matita/test/c.con.
30 coercion cic:/matita/test/d.con.
31
32 definition foo :=  λn,n1,m,m1.(λx.d m m1 (f n m (c n1 n x)) : A1 n1 -> B1 m1).
33 definition foo1_1 := λn,n1,m,m1.(f n m : A1 n1 -> B1 m1).
34
35 definition h := λn,m.λx:A n.g m.
36 definition foo2 := λn,n1,m,m1.(h n m : A1 n1 -> B1 m1).
37 definition foo3 := λn1,n,m,m1.(h n m : A1 n1 -> B1 m1).
38 definition foo4 := λn1,n,m1,m.(h n m : A1 n1 -> B1 m1).