1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
15 (* ********************************************************************** *)
16 (* Progetto FreeScale *)
18 (* Sviluppato da: Ing. Cosimo Oliboni, oliboni@cs.unibo.it *)
19 (* Sviluppo: 2008-2010 *)
21 (* ********************************************************************** *)
23 include "num/bool.ma".
29 ninductive quatern : Type ≝
39 [ q0 ⇒ match n2 with [ q0 ⇒ true | _ ⇒ false ]
40 | q1 ⇒ match n2 with [ q1 ⇒ true | _ ⇒ false ]
41 | q2 ⇒ match n2 with [ q2 ⇒ true | _ ⇒ false ]
42 | q3 ⇒ match n2 with [ q3 ⇒ true | _ ⇒ false ]
45 (* iteratore sui quaternari *)
46 ndefinition forall_qu ≝ λP.
47 P q0 ⊗ P q1 ⊗ P q2 ⊗ P q3.
49 (* operatore successorre *)
52 [ q0 ⇒ q1 | q1 ⇒ q2 | q2 ⇒ q3 | q3 ⇒ q0 ].
54 (* quaternari ricorsivi *)
55 ninductive rec_quatern : quatern → Type ≝
57 | qu_S : ∀n.rec_quatern n → rec_quatern (succ_qu n).
59 (* quaternari → quaternari ricorsivi *)
60 ndefinition qu_to_recqu ≝
61 λn.match n return λx.rec_quatern x with
64 | q2 ⇒ qu_S ? (qu_S ? qu_O)
65 | q3 ⇒ qu_S ? (qu_S ? (qu_S ? qu_O))