]> matita.cs.unibo.it Git - helm.git/commitdiff
arithmetics for λδ
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Tue, 22 Dec 2020 17:22:19 +0000 (18:22 +0100)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Tue, 22 Dec 2020 17:22:19 +0000 (18:22 +0100)
+ predecessor for non-negative integers
+ web site update

12 files changed:
matita/matita/contribs/lambdadelta/ground/arith/nat.txt
matita/matita/contribs/lambdadelta/ground/arith/nat_iter_succ.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/arith/nat_le_pred.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/arith/nat_lt.ma
matita/matita/contribs/lambdadelta/ground/arith/nat_lt_plus.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/arith/nat_lt_pred.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/arith/nat_plus.ma
matita/matita/contribs/lambdadelta/ground/arith/nat_pred.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/arith/nat_pred_succ.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/arith/nat_succ_iter.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/arith/pnat_dis.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/web/ground_src.tbl

index 96c8c9cc3c665bb130e058c9f868e1379729a28e..7fbb2d7b798271efe48d066fe5819df06b23b9b3 100644 (file)
 "cic:/matita/arithmetics/nat/f_ind.con"
 "cic:/matita/arithmetics/nat/f2_ind.con"
 "cic:/matita/arithmetics/nat/f3_ind.con"
-
-####################################
-
-"cic:/matita/arithmetics/nat/lt_plus_Sn_r.con"
-"cic:/matita/arithmetics/nat/lt_plus_to_lt_l.con"
+#
 "cic:/matita/arithmetics/nat/monotonic_lt_plus_l.con"
 "cic:/matita/arithmetics/nat/monotonic_lt_plus_r.con"
-
-"cic:/matita/arithmetics/nat/le_pred_n.con"
+"cic:/matita/arithmetics/nat/lt_plus_Sn_r.con"
+"cic:/matita/arithmetics/nat/lt_plus_to_lt_l.con"
+#
 "cic:/matita/arithmetics/nat/pred.con"
+#
 "cic:/matita/arithmetics/nat/pred_Sn.con"
-"cic:/matita/arithmetics/nat/S_pred.con"
+#
+"cic:/matita/arithmetics/nat/le_pred_n.con"
 "cic:/matita/arithmetics/nat/monotonic_pred.con"
+#
+"cic:/matita/arithmetics/nat/S_pred.con"
+
+####################################
 
 "cic:/matita/arithmetics/nat/discr_minus_x_xy.con"
 "cic:/matita/arithmetics/nat/discr_plus_xy_minus_xz.con"
diff --git a/matita/matita/contribs/lambdadelta/ground/arith/nat_iter_succ.ma b/matita/matita/contribs/lambdadelta/ground/arith/nat_iter_succ.ma
deleted file mode 100644 (file)
index cdea039..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/arith/nat_succ.ma".
-include "ground/arith/nat_iter.ma".
-
-(* NON-NEGATIVE INTEGERS ****************************************************)
-
-(* Rewrites with nsucc ******************************************************)
-
-lemma niter_succ (A) (f) (n) (a): f (f^n a) = f^{A}(↑n) a.
-#A #f * //
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/arith/nat_le_pred.ma b/matita/matita/contribs/lambdadelta/ground/arith/nat_le_pred.ma
new file mode 100644 (file)
index 0000000..f1824e2
--- /dev/null
@@ -0,0 +1,31 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/arith/nat_pred_succ.ma".
+include "ground/arith/nat_le.ma".
+
+(* NON-NEGATIVE INTEGERS ****************************************************)
+
+(* Basic constructions with pred ********************************************)
+
+(*** le_pred_n *)
+lemma nle_pred_sn_refl (m): ↓m ≤ m.
+#m elim m -m //
+qed.
+
+(*** monotonic_pred *)
+lemma nle_pred_bi (m) (n): m ≤ n → ↓m ≤ ↓n.
+#m #n #H elim H -n
+/2 width=3 by nle_trans/
+qed.
index fc445dd74a36dbcbdb02ffb0f610e2c43af66f50..1df0f857d54d9edc95a70ec09e9cee1e2ddd5298 100644 (file)
@@ -26,6 +26,12 @@ interpretation
 
 (* Basic constructions ******************************************************)
 
+lemma nlt_i (m) (n): ↑m ≤ n → m < n.
+// qed.
+
+lemma nlt_refl_succ (n): n < ↑n.
+// qed.
+
 (*** lt_O_S *)
 lemma nlt_zero_succ (m): 𝟎 < ↑m.
 /2 width=1 by nle_succ_bi/ qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/arith/nat_lt_plus.ma b/matita/matita/contribs/lambdadelta/ground/arith/nat_lt_plus.ma
new file mode 100644 (file)
index 0000000..e9920e9
--- /dev/null
@@ -0,0 +1,46 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/arith/nat_le_plus.ma".
+include "ground/arith/nat_lt.ma".
+
+(* NON-NEGATIVE INTEGERS ****************************************************)
+
+(* Basic constructions with plus ********************************************)
+
+(*** monotonic_lt_plus_l *)
+lemma nlt_plus_bi_dx (m) (n1) (n2): n1 < n2 → n1 + m < n2 + m.
+#m #n1 #n2 #H
+@nlt_i >nplus_succ_sn /2 width=1 by nle_plus_bi_dx/
+qed.
+
+(*** monotonic_lt_plus_r *)
+lemma nlt_plus_bi_sn (m) (n1) (n2): n1 < n2 → m + n1 < m + n2.
+#m #n1 #n2 #H
+@nlt_i >nplus_succ_dx /2 width=1 by nle_plus_bi_sn/
+qed.
+
+(*** lt_plus_Sn_r *) (**)
+lemma lt_plus_Sn_r: ∀a,x,n. a < a + x + ↑n.
+/2 width=1/ qed-.
+
+(* Basic inversions with plus ***********************************************)
+
+(*** lt_plus_to_lt_l *)
+lemma nlt_inv_plus_bi_dx (m) (n1) (n2): n1 + m < n2 + m → n1 < n2.
+/2 width=2 by nle_inv_plus_bi_dx/ qed-.
+
+(*** lt_plus_to_lt_r *)
+lemma nlt_inv_plus_bi_sn (m) (n1) (n2): m + n1 < m + n2 → n1 < n2.
+/2 width=2 by nle_inv_plus_bi_sn/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/arith/nat_lt_pred.ma b/matita/matita/contribs/lambdadelta/ground/arith/nat_lt_pred.ma
new file mode 100644 (file)
index 0000000..16e5bb2
--- /dev/null
@@ -0,0 +1,31 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/arith/nat_pred_succ.ma".
+include "ground/arith/nat_lt.ma".
+
+(* NON-NEGATIVE INTEGERS ****************************************************)
+
+(* Basic constructions with pred ********************************************)
+
+lemma nlt_zero_sn (m): m = ↑↓m → 𝟎 < m.
+// qed.
+
+(* Basic inversions with pred ***********************************************)
+
+(*** S_pred *)
+lemma nlt_inv_zero_sn (m): 𝟎 < m → m = ↑↓m.
+#m @(nat_ind … m) -m //
+#H elim (nlt_inv_refl … H)
+qed-.
index ffb181cc4908dea0a5048498cb6c2a11a453f56a..e7702b80d6ca656b5987b6290d1e549b8f3bc1c6 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "ground/arith/nat_iter_succ.ma".
+include "ground/arith/nat_succ_iter.ma".
 
 (* NON-NEGATIVE INTEGERS ****************************************************)
 
diff --git a/matita/matita/contribs/lambdadelta/ground/arith/nat_pred.ma b/matita/matita/contribs/lambdadelta/ground/arith/nat_pred.ma
new file mode 100644 (file)
index 0000000..7c5d8a5
--- /dev/null
@@ -0,0 +1,34 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/notation/functions/downarrow_1.ma".
+include "ground/arith/pnat_dis.ma".
+include "ground/arith/nat.ma".
+
+(* NON-NEGATIVE INTEGERS ****************************************************)
+
+(*** pred *)
+definition npred (m): nat ≝ match m with
+[ nzero  ⇒ 𝟎
+| ninj p ⇒ pdis … (𝟎) ninj p
+].
+
+interpretation
+  "predecessor (non-negative integers"
+  'DownArrow m = (npred m).
+
+(* Basic rewrites ***********************************************************)
+
+lemma npred_zero: 𝟎 = ↓𝟎.
+// qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/arith/nat_pred_succ.ma b/matita/matita/contribs/lambdadelta/ground/arith/nat_pred_succ.ma
new file mode 100644 (file)
index 0000000..71e5e92
--- /dev/null
@@ -0,0 +1,25 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/arith/nat_succ.ma".
+include "ground/arith/nat_pred.ma".
+
+(* NON-NEGATIVE INTEGERS ****************************************************)
+
+(* Basic rewrites with succ *************************************************)
+
+(*** pred_Sn *)
+lemma npred_succ (n): n = ↓↑n.
+* //
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/arith/nat_succ_iter.ma b/matita/matita/contribs/lambdadelta/ground/arith/nat_succ_iter.ma
new file mode 100644 (file)
index 0000000..640e84d
--- /dev/null
@@ -0,0 +1,24 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/arith/nat_iter.ma".
+include "ground/arith/nat_succ.ma".
+
+(* NON-NEGATIVE INTEGERS ****************************************************)
+
+(* Rewrites with niter ******************************************************)
+
+lemma niter_succ (A) (f) (n) (a): f (f^n a) = f^{A}(↑n) a.
+#A #f * //
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/arith/pnat_dis.ma b/matita/matita/contribs/lambdadelta/ground/arith/pnat_dis.ma
new file mode 100644 (file)
index 0000000..cc226c9
--- /dev/null
@@ -0,0 +1,23 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/arith/pnat.ma".
+
+(* POSITIVE INTEGERS ********************************************************)
+
+definition pdis (A:Type[0]) (a) (f) (p): A ≝
+match p with
+[ punit   ⇒ a
+| psucc q ⇒ f q
+].
index 2ca13aee927b02499ea9a74a053b0c3baf26e9cc..686fcb84f36c2929a9815dac9b2459358558af44 100644 (file)
 name "ground_src"
 
 table {
-   class "gray"
-   [ { "component" * } {
-        [ { "plane" * } {
-             [ "files" * ]
-          }
-        ]
-     }
-   ]
-   class "water"
-   [ { "generic rt-transition counter" * } {
-        [ { "" * } {
-             [ "rtc_ist ( 𝐓❪?,?❫ )" "rtc_ist_shift" "rtc_ist_plus" "rtc_ist_max" * ]
-             [ "rtc_isrc ( 𝐑𝐓❪?,?❫ )" "rtc_isrt_shift" "rtc_isrt_plus" "rtc_isrt_max" "rtc_isrt_max_shift" * ]
-             [ "rtc ( 〈?,?,?,?〉 ) ( 𝟘𝟘 ) ( 𝟙𝟘 ) ( 𝟘𝟙 )" "rtc_shift ( ↕*? )" "rtc_plus ( ? + ? )" "rtc_max ( ? ∨ ? )" "rtc_max_shift" * ]
-          }
-        ]
-     }
-   ]
-   class "green"
-   [ { "multiple relocation" * } {
-        [ { "" * } {
-             [ "rtmap" "rtmap_eq ( ? ≡ ? )" "rtmap_pushs ( ⫯*[?]? )" "rtmap_nexts ( ↑*[?]? )"
-               "rtmap_tl ( ⫱? )" "rtmap_tls ( ⫱*[?]? )" "rtmap_isid ( 𝐈❪?❫ )" "rtmap_id" "rtmap_isdiv ( 𝛀❪?❫ )"
-               "rtmap_fcla ( 𝐂❪?❫ ≘ ? )" "rtmap_isfin ( 𝐅❪?❫ )" "rtmap_isuni ( 𝐔❪?❫ )" "rtmap_uni ( 𝐔❨?❩ )"
-               "rtmap_sle ( ? ⊆ ? )" "rtmap_sdj ( ? ∥ ? )" "rtmap_sand ( ? ⋒ ? ≘ ? )" "rtmap_sor ( ? ⋓ ? ≘ ? )"
-               "rtmap_at ( @❪?,?❫ ≘ ? )" "rtmap_istot ( 𝐓❪?❫ )" "rtmap_after ( ? ⊚ ? ≘ ? )" "rtmap_coafter ( ? ~⊚ ? ≘ ? )"
-               "rtmap_basic ( 𝐁❨?,?❩ )" "rtmap_basic_after"
-             * ]
-             [ "nstream ( ⫯? ) ( ↑? )" "nstream_eq" "" ""
-               "" "" "nstream_isid" "nstream_id ( 𝐈𝐝 )" ""
-               "" "" "" ""
-               "" "" "" "nstream_sor"
-               "" "nstream_istot ( ?@❨?❩ )" "nstream_after ( ? ∘ ? )" "nstream_coafter ( ? ~∘ ? )"
-               "nstream_basic" ""
-             * ]
+  class "gray"
+  [ { "component" * } {
+      [ { "plane" * } {
+          [ "files" * ]
+        }
+      ]
+    }
+  ]
+  class "water"
+  [ { "generic rt-transition counter" * } {
+      [ { "" * } {
+          [ "rtc_ist ( 𝐓❪?,?❫ )" "rtc_ist_shift" "rtc_ist_plus" "rtc_ist_max" * ]
+          [ "rtc_isrc ( 𝐑𝐓❪?,?❫ )" "rtc_isrt_shift" "rtc_isrt_plus" "rtc_isrt_max" "rtc_isrt_max_shift" * ]
+          [ "rtc ( 〈?,?,?,?〉 ) ( 𝟘𝟘 ) ( 𝟙𝟘 ) ( 𝟘𝟙 )" "rtc_shift ( ↕*? )" "rtc_plus ( ? + ? )" "rtc_max ( ? ∨ ? )" "rtc_max_shift" * ]
+        }
+      ]
+    }
+  ]
+  class "green"
+  [ { "multiple relocation" * } {
+      [ { "" * } {
+          [ "rtmap" "rtmap_eq ( ? ≡ ? )" "rtmap_pushs ( ⫯*[?]? )" "rtmap_nexts ( ↑*[?]? )"
+            "rtmap_tl ( ⫱? )" "rtmap_tls ( ⫱*[?]? )" "rtmap_isid ( 𝐈❪?❫ )" "rtmap_id" "rtmap_isdiv ( 𝛀❪?❫ )"
+            "rtmap_fcla ( 𝐂❪?❫ ≘ ? )" "rtmap_isfin ( 𝐅❪?❫ )" "rtmap_isuni ( 𝐔❪?❫ )" "rtmap_uni ( 𝐔❨?❩ )"
+            "rtmap_sle ( ? ⊆ ? )" "rtmap_sdj ( ? ∥ ? )" "rtmap_sand ( ? ⋒ ? ≘ ? )" "rtmap_sor ( ? ⋓ ? ≘ ? )"
+            "rtmap_at ( @❪?,?❫ ≘ ? )" "rtmap_istot ( 𝐓❪?❫ )" "rtmap_after ( ? ⊚ ? ≘ ? )" "rtmap_coafter ( ? ~⊚ ? ≘ ? )"
+            "rtmap_basic ( 𝐁❨?,?❩ )" "rtmap_basic_after"
+          * ]
+          [ "nstream ( ⫯? ) ( ↑? )" "nstream_eq" "" ""
+            "" "" "nstream_isid" "nstream_id ( 𝐈𝐝 )" ""
+            "" "" "" ""
+            "" "" "" "nstream_sor"
+            "" "nstream_istot ( ?@❨?❩ )" "nstream_after ( ? ∘ ? )" "nstream_coafter ( ? ~∘ ? )"
+            "nstream_basic" ""
+          * ]
 (*
-             [ "trace ( ∥?∥ )" "trace_at ( @❪?,?❫ ≘ ? )" "trace_after ( ? ⊚ ? ≘ ? )" "trace_isid ( 𝐈❪?❫ )" "trace_isun ( 𝐔❪?❫ )"
-               "trace_sle ( ? ⊆ ? )" "trace_sor ( ? ⋓ ? ≘ ? )" "trace_snot ( ∁ ? )" * ]
+          [ "trace ( ∥?∥ )" "trace_at ( @❪?,?❫ ≘ ? )" "trace_after ( ? ⊚ ? ≘ ? )" "trace_isid ( 𝐈❪?❫ )" "trace_isun ( 𝐔❪?❫ )"
+            "trace_sle ( ? ⊆ ? )" "trace_sor ( ? ⋓ ? ≘ ? )" "trace_snot ( ∁ ? )" * ]
 *)
-             [ "mr2 ( ◊ ) ( ❨?,?❩;? )" "mr2_append ( ? @@? )" "mr2_at ( @❪?,?❫ ≘ ? )" "mr2_plus ( ? + ? )" "mr2_minus ( ? ▭ ? ≘ ? )" * ]
-          }
-        ]
-     }
-   ]
-   class "grass"
-   [ { "natural numbers with infinity" * } {
-        [ { "" * } {
-           [ "ynat ( ∞ )" "ynat_pred ( ↓? )" "ynat_succ ( ↑? )"
-             "ynat_le ( ? ≤ ? )" "ynat_lt ( ? &lt; ? )"
-             "ynat_plus ( ? + ? )" "ynat_minus_sn ( ? - ? )" *
-           ]
-          }
-        ]
-     }
-   ]
-   class "yellow"
-   [ { "extensions to the library" * } {
-        [ { "" * } {
-             [ "stream ( ? ⨮{?} ? )" "stream_eq ( ? ≗{?} ? )" "stream_hdtl ( ⫰{?}? )" "stream_tls ( ⫰*{?}[?]? )" * ]
-             [ "list ( Ⓔ{?} ) ( ? ⨮{?} ? )" "list_length ( |?| )" * ]
-             [ "bool ( Ⓕ ) ( Ⓣ )" "arith ( ?^? ) ( ↑? ) ( ↓? ) ( ? ∨ ? ) ( ? ∧ ? )" "arith_2a" "arith_2b" * ]
-             [ "ltc" "ltc_ctc" * ]
-             [ "logic ( ⊥ ) ( ⊤ )" "relations ( ? ⊆ ? )" "functions" "exteq ( ? ≐{?,?} ? )" "star" "lstar_2a" * ]
-          }
-        ]
-     }
-   ]
-   class "orange"
-   [ { "generated library" * } {
-        [ { "generalization with equality" * } {
-             [ "insert_eq" * ]
-          }
-        ]
-        [ { "permutation of quantifiers" * } {
-             [ "pull" * ]
-          }
-        ]
-        [ { "logical decomposables" * } {
-             [ "xoa ( ∃∃ ) ( ∨∨ ) ( ∧∧ )" * ]
-          }
-        ]
-     }
-   ]
-   class "red"
-   [ { "" * } {
-        [ { "" * } {
-             [ * ]
-          }
-        ]
-     }
-   ]
+          [ "mr2 ( ◊ ) ( ❨?,?❩;? )" "mr2_append ( ? @@? )" "mr2_at ( @❪?,?❫ ≘ ? )" "mr2_plus ( ? + ? )" "mr2_minus ( ? ▭ ? ≘ ? )" * ]
+        }
+      ]
+    }
+  ]
+  class "grass"
+  [ { "natural numbers with infinity" * } {
+      [ { "" * } {
+          [ "ynat ( ∞ )" "ynat_pred ( ↓? )" "ynat_succ ( ↑? )"
+            "ynat_le ( ? ≤ ? )" "ynat_lt ( ? &lt; ? )"
+            "ynat_plus ( ? + ? )" "ynat_minus_sn ( ? - ? )" *
+          ]
+        }
+      ]
+    }
+  ]
+  class "grass"
+  [ { "arithmetics" * } {
+      [ { "non-negative integers" * } {
+          [ "nat_lt ( ?&lt;? )" "nat_lt_pred" "nat_lt_plus" * ]
+          [ "nat_le ( ?≤? )" "nat_le_pred" "nat_le_plus" * ]
+          [ "nat_plus ( ?+? )" * ]
+          [ "nat_pred ( ↓? )" "nat_pred_succ" * ]
+          [ "nat_succ ( ↑? )" "nat_succ_iter" * ]
+          [ "nat ( 𝟎 )" "nat_iter ( ?^{?}? )" * ]
+        }
+      ]
+      [ { "positive integers" * } {
+          [ "pnat_plus ( ?+? )" * ]
+          [ "pnat ( 𝟏 ) ( ↑? )" "pnat_dis" "pnat_iter ( ?^{?}? )" * ]
+        }
+      ]
+    }
+  ]
+  class "yellow"
+  [ { "extensions to the library" * } {
+      [ { "" * } {
+          [ "stream ( ? ⨮{?} ? )" "stream_eq ( ? ≗{?} ? )" "stream_hdtl ( ⫰{?}? )" "stream_tls ( ⫰*{?}[?]? )" * ]
+          [ "list ( Ⓔ{?} ) ( ? ⨮{?} ? )" "list_length ( |?| )" * ]
+          [ "bool ( Ⓕ ) ( Ⓣ )" "arith ( ?^? ) ( ↑? ) ( ↓? ) ( ? ∨ ? ) ( ? ∧ ? )" "arith_2a" "arith_2b" * ]
+          [ "ltc" "ltc_ctc" * ]
+          [ "logic ( ⊥ ) ( ⊤ )" "relations ( ? ⊆ ? )" "functions" "exteq ( ? ≐{?,?} ? )" "star" "lstar_2a" * ]
+        }
+      ]
+    }
+  ]
+  class "orange"
+  [ { "generated library" * } {
+      [ { "generalization with equality" * } {
+          [ "insert_eq" * ]
+        }
+      ]
+      [ { "permutation of quantifiers" * } {
+          [ "pull" * ]
+        }
+      ]
+      [ { "logical decomposables" * } {
+          [ "xoa ( ∃∃ ) ( ∨∨ ) ( ∧∧ )" * ]
+        }
+      ]
+    }
+  ]
+  class "red"
+  [ { "" * } {
+      [ { "" * } {
+          [ * ]
+        }
+      ]
+    }
+  ]
 }
 
 class "top"               { * }