]> matita.cs.unibo.it Git - helm.git/commitdiff
update in static_2
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Wed, 18 Sep 2019 16:39:16 +0000 (18:39 +0200)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Wed, 18 Sep 2019 16:39:16 +0000 (18:39 +0200)
+ preorder on applicability domains
+ minor bug fixes

matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_eval.ma
matita/matita/contribs/lambdadelta/static_2/syntax/ac.ma
matita/matita/contribs/lambdadelta/static_2/syntax/acle.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/syntax/acle_acle.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/web/static_2_src.tbl

index efd2c3cce534421d28bd3176a6bb4804726b90c3..d87201dad1b18afbaa0b2d30b5e04f91a880a177 100644 (file)
@@ -56,7 +56,7 @@ theorem cnv_dec (h) (a) (G) (L) (T): ac_props a →
       elim (dec_min (R_cpmuwe h G L T) … Hn) -Hn
       [| /2 width=2 by cnv_R_cpmuwe_dec/ ] #n0 #_ -n
       elim (ac_dec … Ha n0) -Ha
-      [ * #n #Hn #Ha * #X0 #HX0 #_
+      [ * #n #Ha #Hn * #X0 #HX0 #_
         elim (abst_dec X0)
         [ * #p #W #U0 #H destruct
           elim (cnv_cpes_dec … 1 0 … HV W) [ #HVW | #HnVW ]
index 1c411bb41a7d28f03ad5ee65a6e59a600c44dd3f..aef4c4452cec0af782527f1b2566de664f4caa60 100644 (file)
@@ -17,7 +17,7 @@ include "static_2/notation/functions/one_0.ma".
 include "static_2/notation/functions/two_0.ma".
 include "static_2/notation/functions/omega_0.ma".
 
-(* APPLICABILITY CONDITION  *************************************************)
+(* APPLICABILITY CONDITION **************************************************)
 
 (* applicability condition specification *)
 record ac: Type[0] ≝ {
@@ -27,7 +27,7 @@ record ac: Type[0] ≝ {
 
 (* applicability condition postulates *)
 record ac_props (a): Prop ≝ {
-   ac_dec: ∀m. Decidable (∃∃n. m ≤ n & ad a n)
+   ac_dec: ∀m. Decidable (∃∃n. ad a n & m ≤ n)
 }.
 
 (* Notable specifications ***************************************************)
@@ -54,6 +54,16 @@ interpretation "zero (applicability domain)"
 lemma ac_eq_props (k): ac_props (ac_eq k) ≝ mk_ac_props ….
 #m elim (le_dec m k) #Hm
 [ /3 width=3 by or_introl, ex2_intro/
-| @or_intror * #n #Hmn #H destruct /2 width=1 by/
+| @or_intror * #n #Hn #Hmn destruct /2 width=1 by/
+]
+qed.
+
+definition ac_le (k): ac ≝ mk_ac (λn. n ≤ k).
+
+lemma ac_le_props (k): ac_props (ac_le k) ≝ mk_ac_props ….
+#m elim (le_dec m k) #Hm
+[ /3 width=3 by or_introl, ex2_intro/
+| @or_intror * #n #Hn #Hmn
+  /3 width=3 by transitive_le/
 ]
 qed.
diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/acle.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/acle.ma
new file mode 100644 (file)
index 0000000..30a0253
--- /dev/null
@@ -0,0 +1,58 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/syntax/ac.ma".
+
+(* APPLICABILITY CONDITION PREORDER *****************************************)
+
+definition acle: relation ac ≝
+           λa1,a2. ∀m. ad a1 m → ∃∃n. ad a2 n & m ≤ n.
+
+interpretation "preorder (applicability domain)"
+  'subseteq a1 a2 = (acle a1 a2).
+
+(* Basic properties *********************************************************)
+
+lemma acle_refl: reflexive … acle.
+/2 width=3 by ex2_intro/ qed.
+
+lemma acle_omega (a): a ⊆ 𝛚.
+/2 width=1 by acle_refl/
+qed.
+
+lemma acle_one (a): ∀n. ad a n → 𝟏 ⊆ a.
+#a #n #Ha #m #Hm destruct
+/2 width=3 by ex2_intro/
+qed.
+
+lemma acle_eq_monotonic_le (k1) (k2):
+      k1 ≤ k2 → (ac_eq k1) ⊆ (ac_eq k2).
+#k1 #k2 #Hk #m #Hm destruct
+/2 width=3 by ex2_intro/
+qed.
+
+lemma acle_le_monotonic_le (k1) (k2):
+      k1 ≤ k2 → (ac_le k1) ⊆ (ac_le k2).
+#k1 #k2 #Hk #m #Hm
+/3 width=3 by acle_refl, transitive_le/
+qed.
+
+lemma acle_eq_le (k): (ac_eq k) ⊆ (ac_le k).
+#k #m #Hm destruct
+/2 width=1 by acle_refl, le_n/
+qed.
+
+lemma acle_le_eq (k): (ac_le k) ⊆ (ac_eq k).
+#k #m #Hm /2 width=3 by ex2_intro/
+qed.
diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/acle_acle.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/acle_acle.ma
new file mode 100644 (file)
index 0000000..9b89989
--- /dev/null
@@ -0,0 +1,26 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/syntax/acle.ma".
+
+(* APPLICABILITY CONDITION PREORDER *****************************************)
+
+(* Main properties **********************************************************)
+
+theorem acle_trans: Transitive … acle.
+#a1 #a #Ha1 #a2 #Ha2 #m1 #Hm1
+elim (Ha1 … Hm1) -Ha1 -Hm1 #m #Ha #Hm1
+elim (Ha2 … Ha) -Ha2 -Ha #m2 #Ha2 #Hm2
+/3 width=5 by transitive_le, ex2_intro/
+qed-.
index db531a271ccf1a2ed4f8455ff747881f77b07cf0..0a962c3f8fcf23467454048328fdfab173e1d1bb 100644 (file)
@@ -103,6 +103,7 @@ table {
    class "red"
    [ { "syntax" * } {
         [ { "applicability condition" * } {
+             [ [ "preorder" ] "acle" + "( ? ⊆ ? )"  "acle_acle" * ]
              [ [ "properties" ] "ac" + "( 𝟏 )" + "( 𝟐 )" + "( 𝛚 )" * ]
           }
         ]