]> matita.cs.unibo.it Git - helm.git/blob - helm/software/matita/contribs/ng_assembly2/common/comp.ma
75300217cdcd642aa877eb57973758592c49f983
[helm.git] / helm / software / matita / contribs / ng_assembly2 / common / comp.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 (* ********************************************************************** *)
16 (*                          Progetto FreeScale                            *)
17 (*                                                                        *)
18 (*   Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it              *)
19 (*   Sviluppo: 2008-2010                                                  *)
20 (*                                                                        *)
21 (* ********************************************************************** *)
22
23 include "common/hints_declaration.ma".
24 include "num/bool.ma".
25
26 alias symbol "hint_decl" (instance 1) = "hint_decl_Type1".
27
28 nrecord comparable : Type[1] ≝
29  {
30  carr          :> Type[0];
31  zeroc         : carr;
32  forallc       : (carr → bool) → bool;
33  eqc           : carr → carr → bool;
34  eqc_to_eq     : ∀x,y.(eqc x y = true) → (x = y);
35  eq_to_eqc     : ∀x,y.(x = y) → (eqc x y = true);
36  neqc_to_neq   : ∀x,y.(eqc x y = false) → (x ≠ y);
37  neq_to_neqc   : ∀x,y.(x ≠ y) → (eqc x y = false);
38  decidable_c   : ∀x,y:carr.decidable (x = y);
39  symmetric_eqc : symmetricT carr bool eqc
40  }.