]> matita.cs.unibo.it Git - helm.git/commitdiff
update in ground
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Thu, 19 May 2022 10:11:11 +0000 (12:11 +0200)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Thu, 19 May 2022 10:11:11 +0000 (12:11 +0200)
+ new notation for application of a relocation

65 files changed:
matita/matita/contribs/lambdadelta/apps_2/functional/flifts.ma
matita/matita/contribs/lambdadelta/delayed_updating/notation/functions/at_2.ma
matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr.ma
matita/matita/contribs/lambdadelta/delayed_updating/reduction/dfr_ifr.ma
matita/matita/contribs/lambdadelta/delayed_updating/reduction/ifr.ma
matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift.ma
matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_constructors.ma
matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_eq.ma
matita/matita/contribs/lambdadelta/delayed_updating/unwind/nap.ma
matita/matita/contribs/lambdadelta/delayed_updating/unwind/unwind_gen.ma
matita/matita/contribs/lambdadelta/delayed_updating/unwind/unwind_gen_after.ma
matita/matita/contribs/lambdadelta/delayed_updating/unwind/unwind_gen_structure.ma
matita/matita/contribs/lambdadelta/delayed_updating/unwind1/unwind.ma
matita/matita/contribs/lambdadelta/delayed_updating/unwind1/unwind_constructors.ma
matita/matita/contribs/lambdadelta/delayed_updating/unwind1/unwind_depth.ma
matita/matita/contribs/lambdadelta/delayed_updating/unwind1/unwind_structure.ma
matita/matita/contribs/lambdadelta/delayed_updating/unwind1/unwind_update.ma
matita/matita/contribs/lambdadelta/ground/notation/functions/apply_2.ma
matita/matita/contribs/lambdadelta/ground/notation/functions/atsharp_2.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/notation/relations/rat_3.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/notation/relations/ratsharp_3.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/fr2_nat.ma
matita/matita/contribs/lambdadelta/ground/relocation/fr2_nat_nat.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_after_after_ist.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_after_ist.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_after_pat.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_after_pat_tls.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_after_pat_uni_tls.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_coafter_ist.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_ist_isf.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_ist_isi.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_pat_tls.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_pat.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_ist.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_ist_isi.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_ist_ist.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_nat.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_pat.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_basic.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_eq.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_id.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_lt.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_pat.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_pat_id.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_tls.ma
matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_uni.ma
matita/matita/contribs/lambdadelta/ground/relocation/tr_compose.ma
matita/matita/contribs/lambdadelta/ground/relocation/tr_compose_etc.ma
matita/matita/contribs/lambdadelta/ground/relocation/tr_compose_pap.ma
matita/matita/contribs/lambdadelta/ground/relocation/tr_compose_pn.ma
matita/matita/contribs/lambdadelta/ground/relocation/tr_compose_tls.ma
matita/matita/contribs/lambdadelta/ground/relocation/tr_id_pap.ma
matita/matita/contribs/lambdadelta/ground/relocation/tr_pap.ma
matita/matita/contribs/lambdadelta/ground/relocation/tr_pap_eq.ma
matita/matita/contribs/lambdadelta/ground/relocation/tr_pap_pap.ma
matita/matita/contribs/lambdadelta/ground/relocation/tr_pap_pat.ma
matita/matita/contribs/lambdadelta/ground/relocation/tr_pap_pn.ma
matita/matita/contribs/lambdadelta/ground/relocation/tr_pap_pushs.ma
matita/matita/contribs/lambdadelta/ground/relocation/tr_pap_tls.ma
matita/matita/contribs/lambdadelta/ground/relocation/tr_pat.ma
matita/matita/contribs/lambdadelta/ground/relocation/tr_uni_compose.ma
matita/matita/contribs/lambdadelta/ground/relocation/tr_uni_pap.ma
matita/matita/contribs/lambdadelta/ground/web/ground_src.tbl
matita/matita/contribs/lambdadelta/static_2/relocation/drops.ma
matita/matita/predefined_virtuals.ml

index 9a5db82f1b6ff532314205667573df30e4cc805b..e015813b0d3129d4089585be6e4ffdb6b704860c 100644 (file)
@@ -21,7 +21,7 @@ include "static_2/relocation/lifts.ma".
 rec definition flifts f U on U ≝ match U with
 [ TAtom I     ⇒ match I with
   [ Sort _ ⇒ U
-  | LRef i ⇒ #(f@❨i❩)
+  | LRef i ⇒ #(f@⧣❨i❩)
   | GRef _ ⇒ U
   ]
 | TPair I V T ⇒ match I with
@@ -38,7 +38,7 @@ interpretation "uniform functional relocation (term)"
 
 (* Basic properties *********************************************************)
 
-lemma flifts_lref (f) (i): ↑*[f](#i) = #(f@❨i❩).
+lemma flifts_lref (f) (i): ↑*[f](#i) = #(f@⧣❨i❩).
 // qed.
 
 lemma flifts_bind (f) (p) (I) (V) (T): ↑*[f](ⓑ[p,I]V.T) = ⓑ[p,I]↑*[f]V.↑*[⫯f]T.
index f17d53ff8e33e35c7b5f1583e2d9c36359ec66e0..9eac0d04cb74e98eb578f1cb9d3f2d58b4b49d06 100644 (file)
@@ -14,6 +14,6 @@
 
 (* NOTATION FOR DELAYED UPDATING ********************************************)
 
-notation "hvbox( @ break term 71 u . break term 70 t )"
+notation "hvbox(  break term 71 u . break term 70 t )"
   non associative with precedence 70
   for @{ 'At $u $t }.
index 849c5f32dfd76fa5b3d257c2936d118dad9612fd..b7f900b6c6a870b1b7f1c6c27692918525e0d703 100644 (file)
@@ -28,7 +28,7 @@ include "ground/xoa/and_4.ma".
 definition dfr (p) (q): relation2 prototerm prototerm ≝
            λt1,t2. ∃∃b,n.
            let r ≝ p●𝗔◗b●𝗟◗q in
-           ∧∧ (⊗b ϵ 𝐁 ∧ 𝟎 = ♭b) & ↑♭q = (▼[r]𝐢)@❨n❩ & r◖𝗱n ϵ t1 &
+           ∧∧ (⊗b ϵ 𝐁 ∧ 𝟎 = ♭b) & ↑♭q = (▼[r]𝐢)@⧣❨n❩ & r◖𝗱n ϵ t1 &
               t1[⋔r←𝛗(n+♭b).(t1⋔(p◖𝗦))] ⇔ t2
 .
 
index 2d3fdbdf596f7e405e1a29725db9c922314e6f56..29c44898d2d859a2dcdc1f72bd77cc101dc5c297 100644 (file)
@@ -32,11 +32,11 @@ include "ground/relocation/tr_pap_pushs.ma".
 
 (* COMMENT
 axiom pippo (b) (q) (n):
-      ↑❘q❘ = (↑[q]𝐢)@❨n❩ →
-      ↑❘q❘+❘b❘= (↑[b●𝗟◗q]𝐢)@❨n+❘b❘❩.
+      ↑❘q❘ = (↑[q]𝐢)@⧣❨n❩ →
+      ↑❘q❘+❘b❘= (↑[b●𝗟◗q]𝐢)@⧣❨n+❘b❘❩.
 
 lemma unwind_rmap_tls_eq_id (p) (n):
-      ❘p❘ = ↑[p]𝐢@❨n❩ →
+      ❘p❘ = ↑[p]𝐢@⧣❨n❩ →
       (𝐢) ≗ ⇂*[n]↑[p]𝐢.
 #p @(list_ind_rcons … p) -p
 [ #n <depth_empty #H destruct
@@ -56,10 +56,10 @@ lemma unwind_rmap_tls_eq_id (p) (n):
 ]
 
 
-(*  (↑❘q❘+❘b❘=↑[b●𝗟◗q]𝐢@❨n+❘b❘❩ *)
-(* [↑[p]𝐢@❨n❩]⫯*[❘p❘]f∘⇂*[n]↑[p]𝐢) *)
+(*  (↑❘q❘+❘b❘=↑[b●𝗟◗q]𝐢@⧣❨n+❘b❘❩ *)
+(* [↑[p]𝐢@⧣❨n❩]⫯*[❘p❘]f∘⇂*[n]↑[p]𝐢) *)
 lemma unwind_rmap_tls_eq (f) (p) (n):
-      ❘p❘ = ↑[p]𝐢@❨n❩ →
+      ❘p❘ = ↑[p]𝐢@⧣❨n❩ →
       f ≗ ⇂*[n]↑[p]f.
 #f #p #n #Hp
 @(stream_eq_canc_dx … (stream_tls_eq_repl …))
@@ -124,9 +124,9 @@ lemma dfr_unwind_id_bi (p) (q) (t1) (t2): t1 ϵ 𝐓 →
 ]
 
 (*
-Hn : ↑❘q❘ = ↑[p●𝗔◗b●𝗟◗q]𝐢@❨n❩
+Hn : ↑❘q❘ = ↑[p●𝗔◗b●𝗟◗q]𝐢@⧣❨n❩
 ---------------------------
-↑[𝐮❨↑❘q❘+❘b❘❩] ↑[↑[p]𝐢] t ⇔ ↑[𝐮❨↑[p●𝗔◗b●𝗟◗q]𝐢@❨n+❘b❘❩❩] t
+↑[𝐮❨↑❘q❘+❘b❘❩] ↑[↑[p]𝐢] t ⇔ ↑[𝐮❨↑[p●𝗔◗b●𝗟◗q]𝐢@⧣❨n+❘b❘❩❩] t
 *)
 (*
 (↑[𝐮❨↑❘q❘❩]▼[⇂*[↑❘q❘]▼[p●𝗟◗q]𝐢](t1⋔(p◖𝗦))⇔▼[𝐮❨↑❘q❘❩∘▼[p●𝗔◗b●𝗟◗q]𝐢](t1⋔(p◖𝗦))
index d2a33afc211f1bb60396108e33a1362e6a6fb5b6..6c7be675aa4c5643eb9fb59bd5c1a5b47d633afa 100644 (file)
@@ -28,7 +28,7 @@ include "ground/xoa/and_4.ma".
 definition ifr (p) (q): relation2 prototerm prototerm ≝
            λt1,t2. ∃∃b,n.
            let r ≝ p●𝗔◗b●𝗟◗q in
-           ∧∧ (⊗b ϵ 𝐁 ∧ 𝟎 = ♭b) & ↑♭q = (▼[r]𝐢)@❨n❩ & r◖𝗱n ϵ t1 &
+           ∧∧ (⊗b ϵ 𝐁 ∧ 𝟎 = ♭b) & ↑♭q = (▼[r]𝐢)@⧣❨n❩ & r◖𝗱n ϵ t1 &
               t1[⋔r←↑[𝐮❨♭(b●𝗟◗q)❩](t1⋔(p◖𝗦))] ⇔ t2
 .
 
index a487fcf5a0af45b15d4e07c72db723c80e340e81..ec7d9726faafe7735c84ab4caf0952c642eadd90 100644 (file)
@@ -28,7 +28,7 @@ match p with
 [ list_empty     ⇒ k f (𝐞)
 | list_lcons l q ⇒
   match l with
-  [ label_d n ⇒ lift_gen (A) (λg,p. k g (𝗱(f@❨n❩)◗p)) (⇂*[n]f) q
+  [ label_d n ⇒ lift_gen (A) (λg,p. k g (𝗱(f@⧣❨n❩)◗p)) (⇂*[n]f) q
   | label_m   ⇒ lift_gen (A) (λg,p. k g (𝗺◗p)) f q
   | label_L   ⇒ lift_gen (A) (λg,p. k g (𝗟◗p)) (⫯f) q
   | label_A   ⇒ lift_gen (A) (λg,p. k g (𝗔◗p)) f q
@@ -61,7 +61,7 @@ lemma lift_empty (A) (k) (f):
 // qed.
 
 lemma lift_d_sn (A) (k) (p) (n) (f):
-      ↑❨(λg,p. k g (𝗱(f@❨n❩)◗p)), ⇂*[n]f, p❩ = ↑{A}❨k, f, 𝗱n◗p❩.
+      ↑❨(λg,p. k g (𝗱(f@⧣❨n❩)◗p)), ⇂*[n]f, p❩ = ↑{A}❨k, f, 𝗱n◗p❩.
 // qed.
 
 lemma lift_m_sn (A) (k) (p) (f):
@@ -146,5 +146,5 @@ lemma lift_rmap_S_dx (f) (p):
 // qed.
 
 lemma lift_rmap_pap_d_dx (f) (p) (n) (m):
-      ↑[p]f@❨m+n❩ = ↑[p◖𝗱n]f@❨m❩+↑[p]f@❨n❩.
+      ↑[p]f@⧣❨m+n❩ = ↑[p◖𝗱n]f@⧣❨m❩+↑[p]f@⧣❨n❩.
 // qed.
index 772c837fb2866bfc1d3f3c7b9c80fefd2c7114cc..06e03b13a722d3053ae844907cf398b37e46a6b5 100644 (file)
@@ -24,21 +24,21 @@ lemma lift_iref_bi (t1) (t2) (n):
 qed.
 
 lemma lift_iref_sn (f) (t:prototerm) (n:pnat):
-      (𝛗f@❨n❩.↑[⇂*[n]f]t) ⊆ ↑[f](𝛗n.t).
+      (𝛗f@⧣❨n❩.↑[⇂*[n]f]t) ⊆ ↑[f](𝛗n.t).
 #f #t #n #p * #q * #r #Hr #H1 #H2 destruct
 @(ex2_intro … (𝗱n◗𝗺◗r))
 /2 width=1 by in_comp_iref/
 qed-.
 
 lemma lift_iref_dx (f) (t) (n:pnat):
-      ↑[f](𝛗n.t) ⊆ 𝛗f@❨n❩.↑[⇂*[n]f]t.
+      ↑[f](𝛗n.t) ⊆ 𝛗f@⧣❨n❩.↑[⇂*[n]f]t.
 #f #t #n #p * #q #Hq #H0 destruct
 elim (in_comp_inv_iref … Hq) -Hq #p #H0 #Hp destruct
 /3 width=1 by in_comp_iref, in_comp_lift_bi/
 qed-.
 
 lemma lift_iref (f) (t) (n:pnat):
-      (𝛗f@❨n❩.↑[⇂*[n]f]t) ⇔ ↑[f](𝛗n.t).
+      (𝛗f@⧣❨n❩.↑[⇂*[n]f]t) ⇔ ↑[f](𝛗n.t).
 /3 width=1 by conj, lift_iref_sn, lift_iref_dx/
 qed.
 
index fad4995de2f7f7af8fa789a1cfb7308d4c8a7396..68a4ceb36c3c1cf1ce9c29bf9923054e0f2ea5ba 100644 (file)
@@ -92,7 +92,7 @@ lemma lift_path_lcons (f) (p) (l):
 qed.
 
 lemma lift_path_d_sn (f) (p) (n):
-      (𝗱(f@❨n❩)◗↑[⇂*[n]f]p) = ↑[f](𝗱n◗p).
+      (𝗱(f@⧣❨n❩)◗↑[⇂*[n]f]p) = ↑[f](𝗱n◗p).
 // qed.
 
 lemma lift_path_m_sn (f) (p):
index 502765a0acd865ea1a55a72530f6af43a27ddc48..bfa89a784f13694ab444f1852ead7c4233743e9c 100644 (file)
@@ -13,14 +13,14 @@ lemma nlt_npsucc_bi (n1) (n2):
 qed.
 
 definition tr_nap (f) (l:nat): nat ≝
-           ↓(f@❨↑l❩).
+           ↓(f@⧣❨↑l❩).
 
 interpretation
   "functional non-negative application (total relocation maps)"
   'ApplySucc f l = (tr_nap f l).
 
 lemma tr_nap_unfold (f) (l):
-      ↓(f@❨↑l❩) = f@↑❨l❩.
+      ↓(f@⧣❨↑l❩) = f@↑❨l❩.
 // qed.
 
 lemma tr_compose_nap (f2) (f1) (l):
index bff50807d5b4f0ffcd70553cfeadc13505606e87..6eb8b3ae87e3cf5c8e0faa207a7deab416955ec3 100644 (file)
@@ -25,7 +25,7 @@ match p with
   match l with
   [ label_d n ⇒
     match q with
-    [ list_empty     ⇒ 𝗱((f n)@❨n❩)◗(unwind_gen f q)
+    [ list_empty     ⇒ 𝗱((f n)@⧣❨n❩)◗(unwind_gen f q)
     | list_lcons _ _ ⇒ unwind_gen f q
     ]
   | label_m   ⇒ unwind_gen f q
@@ -46,7 +46,7 @@ lemma unwind_gen_empty (f):
 // qed.
 
 lemma unwind_gen_d_empty (f) (n):
-      𝗱((f n)@❨n❩)◗𝐞 = ◆[f](𝗱n◗𝐞).
+      𝗱((f n)@⧣❨n❩)◗𝐞 = ◆[f](𝗱n◗𝐞).
 // qed.
 
 lemma unwind_gen_d_lcons (f) (p) (l) (n):
index 9d4955ff9be28ed5272e8a66c862c42a2fafa1d8..a9b2683b66e2f83105c57254279fdf1beaaf140d 100644 (file)
@@ -20,7 +20,7 @@ include "ground/relocation/tr_compose_pap.ma".
 (* Properties with tr_compose ***********************************************)
 
 lemma unwind_gen_after (f2) (f1) (p):
-      ◆[f2]◆[f1]p = ◆[λn.(f2 ((f1 n)@❨n❩))∘(f1 n)]p.
+      ◆[f2]◆[f1]p = ◆[λn.(f2 ((f1 n)@⧣❨n❩))∘(f1 n)]p.
 #f2 #f1 #p @(path_ind_unwind … p) -p //
 #n #_ <unwind_gen_d_empty <unwind_gen_d_empty //
 qed.
index 7d75fe605a49742ecb59837079d795a1fc95a736..fcc04282bc21718c428a2716f8f4079d004c188d 100644 (file)
@@ -74,7 +74,7 @@ qed-.
 (* Advanced constructions with list_rcons ***********************************)
 
 lemma unwind_gen_d_empty_dx (n) (p) (f):
-      (⊗p)◖𝗱((f n)@❨n❩) = ◆[f](p◖𝗱n).
+      (⊗p)◖𝗱((f n)@⧣❨n❩) = ◆[f](p◖𝗱n).
 #n #p #f <unwind_gen_append_proper_dx // 
 qed.
 
@@ -110,7 +110,7 @@ qed-.
 
 lemma unwind_gen_inv_d_sn (k) (q) (p) (f):
       (𝗱k◗q) = ◆[f]p →
-      ∃∃r,h. 𝐞 = ⊗r & (f h)@❨h❩ = k & 𝐞 = q & r◖𝗱h = p.
+      ∃∃r,h. 𝐞 = ⊗r & (f h)@⧣❨h❩ = k & 𝐞 = q & r◖𝗱h = p.
 #k #q #p @(path_ind_unwind … p) -p
 [| #n | #n #l #p |*: #p ] [|*: #IH ] #f
 [ <unwind_gen_empty #H destruct
index e5a6ea13f100fee50a70a3d77c110baffafcb45d..3e76deececbcab166feec04a4f36727ca12f74be 100644 (file)
@@ -29,8 +29,8 @@ match p with
   match l with
   [ label_d n ⇒
     match q with
-    [ list_empty     ⇒ unwind_gen (A) (λg,p. k g (𝗱(f@❨n❩)◗p)) (𝐮❨f@❨n❩❩) q
-    | list_lcons _ _ ⇒ unwind_gen (A) k (𝐮❨f@❨n❩❩) q
+    [ list_empty     ⇒ unwind_gen (A) (λg,p. k g (𝗱(f@⧣❨n❩)◗p)) (𝐮❨f@⧣❨n❩❩) q
+    | list_lcons _ _ ⇒ unwind_gen (A) k (𝐮❨f@⧣❨n❩❩) q
     ]
   | label_m   ⇒ unwind_gen (A) k f q
   | label_L   ⇒ unwind_gen (A) (λg,p. k g (𝗟◗p)) (⫯f) q
@@ -64,11 +64,11 @@ lemma unwind_empty (A) (k) (f):
 // qed.
 
 lemma unwind_d_empty (A) (k) (n) (f):
-      ▼❨(λg,p. k g (𝗱(f@❨n❩)◗p)), 𝐮❨f@❨n❩❩, 𝐞❩ = ▼{A}❨k, f, 𝗱n◗𝐞❩.
+      ▼❨(λg,p. k g (𝗱(f@⧣❨n❩)◗p)), 𝐮❨f@⧣❨n❩❩, 𝐞❩ = ▼{A}❨k, f, 𝗱n◗𝐞❩.
 // qed.
 
 lemma unwind_d_lcons (A) (k) (p) (l) (n) (f):
-      ▼❨k, 𝐮❨f@❨n❩❩, l◗p❩ = ▼{A}❨k, f, 𝗱n◗l◗p❩.
+      ▼❨k, 𝐮❨f@⧣❨n❩❩, l◗p❩ = ▼{A}❨k, f, 𝗱n◗l◗p❩.
 // qed.
 
 lemma unwind_m_sn (A) (k) (p) (f):
@@ -94,11 +94,11 @@ lemma unwind_path_empty (f):
 // qed.
 
 lemma unwind_path_d_empty (f) (n):
-      𝗱(f@❨n❩)◗𝐞 = ▼[f](𝗱n◗𝐞).
+      𝗱(f@⧣❨n❩)◗𝐞 = ▼[f](𝗱n◗𝐞).
 // qed.
 
 lemma unwind_path_d_lcons (f) (p) (l) (n):
-      ▼[𝐮❨f@❨n❩❩](l◗p) = ▼[f](𝗱n◗l◗p).
+      ▼[𝐮❨f@⧣❨n❩❩](l◗p) = ▼[f](𝗱n◗l◗p).
 // qed.
 
 lemma unwind_path_m_sn (f) (p):
@@ -112,7 +112,7 @@ lemma unwind_rmap_empty (f):
 // qed.
 
 lemma unwind_rmap_d_sn (f) (p) (n):
-      ▼[p](𝐮❨f@❨n❩❩) = ▼[𝗱n◗p]f.
+      ▼[p](𝐮❨f@⧣❨n❩❩) = ▼[𝗱n◗p]f.
 #f * // qed.
 
 lemma unwind_rmap_m_sn (f) (p):
@@ -145,7 +145,7 @@ qed.
 (* Advanced constructions with proj_rmap and path_rcons *********************)
 
 lemma unwind_rmap_d_dx (f) (p) (n):
-      (𝐮❨(▼[p]f)@❨n❩❩) = ▼[p◖𝗱n]f.
+      (𝐮❨(▼[p]f)@⧣❨n❩❩) = ▼[p◖𝗱n]f.
 // qed.
 
 lemma unwind_rmap_m_dx (f) (p):
@@ -165,7 +165,7 @@ lemma unwind_rmap_S_dx (f) (p):
 // qed.
 
 lemma unwind_rmap_pap_d_dx (f) (p) (n) (m):
-      ▼[p]f@❨n❩+m = ▼[p◖𝗱n]f@❨m❩.
+      ▼[p]f@⧣❨n❩+m = ▼[p◖𝗱n]f@⧣❨m❩.
 #f #p #n #m
 <unwind_rmap_d_dx <tr_uni_pap <pplus_comm //
 qed.
index d2a552d843d48c00c28b5a25b4507de73077bd09..a412797a0b95e998cc40968d837c221557915ae1 100644 (file)
@@ -18,20 +18,20 @@ include "delayed_updating/syntax/prototerm_constructors.ma".
 (* UNWIND FOR PROTOTERM *****************************************************)
 
 lemma unwind_iref_sn (f) (t:prototerm) (n:pnat):
-      ▼[𝐮❨f@❨n❩❩]t ⊆ ▼[f](𝛗n.t).
+      ▼[𝐮❨f@⧣❨n❩❩]t ⊆ ▼[f](𝛗n.t).
 #f #t #n #p * #q #Hq #H0 destruct
 @(ex2_intro … (𝗱n◗𝗺◗q))
 /2 width=1 by in_comp_iref/
 qed-.
 
 lemma unwind_iref_dx (f) (t) (n:pnat):
-      ▼[f](𝛗n.t) ⊆ ▼[𝐮❨f@❨n❩❩]t.
+      ▼[f](𝛗n.t) ⊆ ▼[𝐮❨f@⧣❨n❩❩]t.
 #f #t #n #p * #q #Hq #H0 destruct
 elim (in_comp_inv_iref … Hq) -Hq #p #Hp #Ht destruct
 /2 width=1 by in_comp_unwind_bi/
 qed-.
 
 lemma unwind_iref (f) (t) (n:pnat):
-      ▼[𝐮❨f@❨n❩❩]t ⇔ ▼[f](𝛗n.t).
+      ▼[𝐮❨f@⧣❨n❩❩]t ⇔ ▼[f](𝛗n.t).
 /3 width=1 by conj, unwind_iref_sn, unwind_iref_dx/
 qed.
index 13d23cbaff3bdff980bd6f4bf92f5c054f83cad4..05e2d523bd127b520d161f6e02705e384aa8241d 100644 (file)
@@ -41,7 +41,7 @@ lemma unwind_rmap_decompose (p) (f):
 qed.
 
 lemma unwind_rmap_pap_le (f) (p) (n):
-      n < ▼❘p❘ → (▼[p]𝐢)@❨n❩ = (▼[p]f)@❨n❩.
+      n < ▼❘p❘ → (▼[p]𝐢)@⧣❨n❩ = (▼[p]f)@⧣❨n❩.
 #f #p #n #Hn
 >(tr_pap_eq_repl … (▼[p]f) … (unwind_rmap_decompose …))
 <tr_compose_pap <tr_pap_pushs_le //
index ed025110a54db56bbb60b7f7b96d59fc0ba0d6d7..0f52a185889d91d3a8955f4df7e920d36d09f522 100644 (file)
@@ -74,7 +74,7 @@ qed-.
 (* Advanced constructions with proj_path ************************************)
 
 lemma unwind_path_d_empty_dx (n) (p) (f):
-      (⊗p)◖𝗱((▼[p]f)@❨n❩) = ▼[f](p◖𝗱n).
+      (⊗p)◖𝗱((▼[p]f)@⧣❨n❩) = ▼[f](p◖𝗱n).
 #n #p #f <unwind_append_proper_dx // 
 qed.
 
@@ -110,7 +110,7 @@ qed-.
 
 lemma unwind_path_inv_d_sn (k) (q) (p) (f):
       (𝗱k◗q) = ▼[f]p →
-      ∃∃r,h. 𝐞 = ⊗r & (▼[r]f)@❨h❩ = k & 𝐞 = q & r◖𝗱h = p.
+      ∃∃r,h. 𝐞 = ⊗r & (▼[r]f)@⧣❨h❩ = k & 𝐞 = q & r◖𝗱h = p.
 #k #q #p @(path_ind_unwind … p) -p
 [| #n | #n #l #p |*: #p ] [|*: #IH ] #f
 [ <unwind_path_empty #H destruct
index 9bdb32cdba72c91c173602d7c1c76edd0c48d30f..69fcb47d5f9d44f8efebc5472cddf00d0803a710 100644 (file)
@@ -23,7 +23,7 @@ include "ground/lib/stream_eq_eq.ma".
 
 lemma unwind_rmap_pap_le (f1) (f2) (p) (m:pnat) (l:nat):
       ninj (m+⧣p+l) = ❘p❘ →
-      (▼[p]f1)@❨m❩ = (▼[p]f2)@❨m❩.
+      (▼[p]f1)@⧣❨m❩ = (▼[p]f2)@⧣❨m❩.
 #f1 #f2 #p @(list_ind_rcons … p) -p
 [ #m #l <depth_empty #H0 destruct
 | #p * [ #n ] #IH #m #l
@@ -43,7 +43,7 @@ lemma unwind_rmap_pap_le (f1) (f2) (p) (m:pnat) (l:nat):
 qed.
 
 lemma unwind_rmap_pap_gt (f) (p) (m):
-      f@❨m+⧣p❩+❘p❘ = (▼[p]f)@❨m+❘p❘❩.
+      f@⧣❨m+⧣p❩+❘p❘ = (▼[p]f)@⧣❨m+❘p❘❩.
 #f #p @(list_ind_rcons … p) -p [ // ]
 #p * [ #n ] #IH #m
 [ <update_d_dx <depth_d_dx
index 38d0632259779f191a4a3006f88e6de45a5e01ce..2baa23e2f415e556f0787ff6d619918bb8f00292 100644 (file)
@@ -14,6 +14,6 @@
 
 (* GROUND NOTATION **********************************************************)
 
-notation "hvbox( f @❨ break term 46 a ❩ )"
+notation "hvbox( f ❨ break term 46 a ❩ )"
   non associative with precedence 60
   for @{ 'Apply $f $a }.
diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/atsharp_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/atsharp_2.ma
new file mode 100644 (file)
index 0000000..697a9a8
--- /dev/null
@@ -0,0 +1,19 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* GROUND NOTATION **********************************************************)
+
+notation "hvbox( f @⧣❨ break term 46 a ❩ )"
+  non associative with precedence 60
+  for @{ 'AtSharp $f $a }.
diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/rat_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/rat_3.ma
deleted file mode 100644 (file)
index 5664826..0000000
+++ /dev/null
@@ -1,19 +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                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-(* GROUND NOTATION **********************************************************)
-
-notation "hvbox( @❨ term 46 T1 , break term 46 f ❩ ≘ break term 46 T2 )"
-  non associative with precedence 45
-  for @{ 'RAt $T1 $f $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/ratsharp_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/ratsharp_3.ma
new file mode 100644 (file)
index 0000000..774a29d
--- /dev/null
@@ -0,0 +1,19 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* GROUND NOTATION **********************************************************)
+
+notation "hvbox( @⧣❨ term 46 T1 , break term 46 f ❩ ≘ break term 46 T2 )"
+  non associative with precedence 45
+  for @{ 'RAtSharp $T1 $f $T2 }.
index 453315c7747839ee685e8b5ea967db4fc9108141..0a70d2f452cf2f39ac825a6cf39d333ca2d396d2 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "ground/notation/relations/rat_3.ma".
+include "ground/notation/relations/ratsucc_3.ma".
 include "ground/arith/nat_plus.ma".
 include "ground/arith/nat_lt.ma".
 include "ground/relocation/fr2_map.ma".
@@ -34,13 +34,13 @@ inductive fr2_nat: fr2_map → relation nat ≝
 
 interpretation
   "non-negative relational application (finite relocation maps with pairs)"
-  'RAt l1 f l2 = (fr2_nat f l1 l2).
+  'RAtSucc l1 f l2 = (fr2_nat f l1 l2).
 
 (* Basic inversions *********************************************************)
 
 (*** at_inv_nil *)
 lemma fr2_nat_inv_empty (l1) (l2):
-      @❨l1, 𝐞❩ ≘ l2 → l1 = l2.
+      @â\86\91â\9d¨l1, ð\9d\90\9eâ\9d© â\89\98 l2 â\86\92 l1 = l2.
 #l1 #l2 @(insert_eq_1 … (𝐞))
 #f * -f -l1 -l2
 [ //
@@ -51,9 +51,9 @@ qed-.
 
 (*** at_inv_cons *)
 lemma fr2_nat_inv_lcons (f) (d) (h) (l1) (l2):
-      @❨l1, ❨d,h❩◗f❩ ≘ l2 →
-      ∨∨ ∧∧ l1 < d & @❨l1, f❩ ≘ l2 
-       | ∧∧ d ≤ l1 & @❨l1+h, f❩ ≘ l2.
+      @â\86\91â\9d¨l1, â\9d¨d,hâ\9d©â\97\97\9d© â\89\98 l2 â\86\92
+      â\88¨â\88¨ â\88§â\88§ l1 < d & @â\86\91â\9d¨l1, fâ\9d© â\89\98 l2 
+       | â\88§â\88§ d â\89¤ l1 & @â\86\91â\9d¨l1+h, fâ\9d© â\89\98 l2.
 #g #d #h #l1 #l2 @(insert_eq_1 … (❨d, h❩◗g))
 #f * -f -l1 -l2
 [ #l #H destruct
@@ -64,7 +64,7 @@ qed-.
 
 (*** at_inv_cons *)
 lemma fr2_nat_inv_lcons_lt (f) (d) (h) (l1) (l2):
-      @â\9d¨l1, â\9d¨d,hâ\9d©â\97\97\9d© â\89\98 l2 â\86\92 l1 < d â\86\92 @❨l1, f❩ ≘ l2.
+      @â\86\91â\9d¨l1, â\9d¨d,hâ\9d©â\97\97\9d© â\89\98 l2 â\86\92 l1 < d â\86\92 @â\86\91❨l1, f❩ ≘ l2.
 #f #d #h #l1 #h2 #H
 elim (fr2_nat_inv_lcons … H) -H * // #Hdl1 #_ #Hl1d
 elim (nlt_ge_false … Hl1d Hdl1)
@@ -72,7 +72,7 @@ qed-.
 
 (*** at_inv_cons *)
 lemma fr2_nat_inv_lcons_ge (f) (d) (h) (l1) (l2):
-      @â\9d¨l1, â\9d¨d,hâ\9d©â\97\97\9d© â\89\98 l2 â\86\92 d â\89¤ l1 â\86\92 @❨l1+h, f❩ ≘ l2.
+      @â\86\91â\9d¨l1, â\9d¨d,hâ\9d©â\97\97\9d© â\89\98 l2 â\86\92 d â\89¤ l1 â\86\92 @â\86\91❨l1+h, f❩ ≘ l2.
 #f #d #h #l1 #h2 #H
 elim (fr2_nat_inv_lcons … H) -H * // #Hl1d #_ #Hdl1
 elim (nlt_ge_false … Hl1d Hdl1)
index b4033e80c6440fc6f0478c5d8299d6e128e90601..c84990142f8c73b4661697b94c15d3b00168a327 100644 (file)
@@ -20,7 +20,7 @@ include "ground/relocation/fr2_nat.ma".
 
 (*** at_mono *)
 theorem fr2_nat_mono (f) (l):
-        â\88\80l1. @â\9d¨l, fâ\9d© â\89\98 l1 â\86\92 â\88\80l2. @❨l, f❩ ≘ l2 → l1 = l2.
+        â\88\80l1. @â\86\91â\9d¨l, fâ\9d© â\89\98 l1 â\86\92 â\88\80l2. @â\86\91❨l, f❩ ≘ l2 → l1 = l2.
 #f #l #l1 #H elim H -f -l -l1
 [ #l #x #H <(fr2_nat_inv_empty … H) -x //
 | #f #d #h #l #l1 #Hld #_ #IH #x #H
index cb234dc2ddc524c4f3e83338290ad359379646c3..a4e5ecb035c0c06b38f8b610ad46a7337b9edc6f 100644 (file)
@@ -28,7 +28,7 @@ definition H_pr_after_inj: predicate pr_map ≝
 
 (*** after_inj_O_aux *)
 corec fact pr_after_inj_unit_aux:
-           ∀f1. @❨𝟏, f1❩ ≘ 𝟏 → H_pr_after_inj f1.
+           ∀f1. @⧣❨𝟏, f1❩ ≘ 𝟏 → H_pr_after_inj f1.
 #f1 #H1f1 #H2f1 #f #f21 #f22 #H1f #H2f
 cases (pr_pat_inv_unit_bi … H1f1) -H1f1 [|*: // ] #g1 #H1
 lapply (pr_ist_inv_push … H2f1 … H1) -H2f1 #H2g1
@@ -45,8 +45,8 @@ qed-.
 
 (*** after_inj_aux *)
 fact pr_after_inj_aux:
-     (∀f1. @❨𝟏, f1❩ ≘ 𝟏 → H_pr_after_inj f1) →
-     ∀i2,f1. @❨𝟏, f1❩ ≘ i2 → H_pr_after_inj f1.
+     (∀f1. @⧣❨𝟏, f1❩ ≘ 𝟏 → H_pr_after_inj f1) →
+     ∀i2,f1. @⧣❨𝟏, f1❩ ≘ i2 → H_pr_after_inj f1.
 #H0 #i2 elim i2 -i2 /2 width=1 by/ -H0
 #i2 #IH #f1 #H1f1 #H2f1 #f #f21 #f22 #H1f #H2f
 elim (pr_pat_inv_unit_succ … H1f1) -H1f1 [|*: // ] #g1 #H1g1 #H1
index 9756cd207474dc5e26f343afa99eabe118f000e2..62c9f79bd79bc7808792b2f820608cd61b1c2fb9 100644 (file)
@@ -47,8 +47,8 @@ qed-.
 
 (*** after_at1_fwd *)
 lemma pr_after_des_ist_pat:
-      ∀f1,i1,i2. @❨i1, f1❩ ≘ i2 → ∀f2. 𝐓❨f2❩ → ∀f. f2 ⊚ f1 ≘ f →
-      ∃∃i. @❨i2, f2❩ ≘ i & @❨i1, f❩ ≘ i.
+      ∀f1,i1,i2. @⧣❨i1, f1❩ ≘ i2 → ∀f2. 𝐓❨f2❩ → ∀f. f2 ⊚ f1 ≘ f →
+      ∃∃i. @⧣❨i2, f2❩ ≘ i & @⧣❨i1, f❩ ≘ i.
 #f1 #i1 #i2 #Hf1 #f2 #Hf2 #f #Hf elim (Hf2 i2) -Hf2
 /3 width=8 by pr_after_des_pat, ex2_intro/
 qed-.
index c64136a653378cdafeebb563aac0ae321416ce61..41191b21ec8d3a608ea00ce7074f41dc30bcc86a 100644 (file)
@@ -21,8 +21,8 @@ include "ground/relocation/pr_after.ma".
 
 (*** after_at_fwd *)
 lemma pr_after_pat_des (i) (i1):
-      ∀f. @❨i1, f❩ ≘ i → ∀f2,f1. f2 ⊚ f1 ≘ f →
-      ∃∃i2. @❨i1, f1❩ ≘ i2 & @❨i2, f2❩ ≘ i.
+      ∀f. @⧣❨i1, f❩ ≘ i → ∀f2,f1. f2 ⊚ f1 ≘ f →
+      ∃∃i2. @⧣❨i1, f1❩ ≘ i2 & @⧣❨i2, f2❩ ≘ i.
 #i elim i -i [2: #i #IH ] #i1 #f #Hf #f2 #f1 #Hf21
 [ elim (pr_pat_inv_succ_dx … Hf) -Hf [1,3:* |*: // ]
   [1: #g #j1 #Hg #H0 #H |2,4: #g #Hg #H ]
@@ -40,8 +40,8 @@ qed-.
 
 (*** after_fwd_at *)
 lemma pr_after_des_pat (i) (i2) (i1):
-      ∀f1,f2. @❨i1, f1❩ ≘ i2 → @❨i2, f2❩ ≘ i →
-      ∀f. f2 ⊚ f1 ≘ f → @❨i1, f❩ ≘ i.
+      ∀f1,f2. @⧣❨i1, f1❩ ≘ i2 → @⧣❨i2, f2❩ ≘ i →
+      ∀f. f2 ⊚ f1 ≘ f → @⧣❨i1, f❩ ≘ i.
 #i elim i -i [2: #i #IH ] #i2 #i1 #f1 #f2 #Hf1 #Hf2 #f #Hf
 [ elim (pr_pat_inv_succ_dx … Hf2) -Hf2 [1,3: * |*: // ]
   #g2 [ #j2 ] #Hg2 [ #H22 ] #H20
@@ -60,16 +60,16 @@ qed-.
 
 (*** after_fwd_at2 *)
 lemma pr_after_des_pat_sn (i1) (i):
-      ∀f. @❨i1, f❩ ≘ i → ∀f1,i2. @❨i1, f1❩ ≘ i2 →
-      ∀f2. f2 ⊚ f1 ≘ f → @❨i2, f2❩ ≘ i.
+      ∀f. @⧣❨i1, f❩ ≘ i → ∀f1,i2. @⧣❨i1, f1❩ ≘ i2 →
+      ∀f2. f2 ⊚ f1 ≘ f → @⧣❨i2, f2❩ ≘ i.
 #i1 #i #f #Hf #f1 #i2 #Hf1 #f2 #H elim (pr_after_pat_des … Hf … H) -f
 #j1 #H #Hf2 <(pr_pat_mono … Hf1 … H) -i1 -i2 //
 qed-.
 
 (*** after_fwd_at1 *)
 lemma pr_after_des_pat_dx (i) (i2) (i1):
-      ∀f,f2. @❨i1, f❩ ≘ i → @❨i2, f2❩ ≘ i →
-      ∀f1. f2 ⊚ f1 ≘ f → @❨i1, f1❩ ≘ i2.
+      ∀f,f2. @⧣❨i1, f❩ ≘ i → @⧣❨i2, f2❩ ≘ i →
+      ∀f1. f2 ⊚ f1 ≘ f → @⧣❨i1, f1❩ ≘ i2.
 #i elim i -i [2: #i #IH ] #i2 #i1 #f #f2 #Hf #Hf2 #f1 #Hf1
 [ elim (pr_pat_inv_succ_dx … Hf) -Hf [1,3: * |*: // ]
   #g [ #j1 ] #Hg [ #H01 ] #H00
index 02f2aee668dc72d7b1b79435a58dab3943e3f566..67bc5183b18a859efed18298e1139ead6d6882b0 100644 (file)
@@ -23,7 +23,7 @@ include "ground/relocation/pr_after.ma".
 (* Note: this requires ↑ on first n *)
 (*** after_tls *)
 lemma pr_after_tls_sn_tls (n):
-      ∀f1,f2,f. @❨𝟏, f1❩ ≘ ↑n →
+      ∀f1,f2,f. @⧣❨𝟏, f1❩ ≘ ↑n →
       f1 ⊚ f2 ≘ f → ⫰*[n]f1 ⊚ f2 ≘ ⫰*[n]f.
 #n @(nat_ind_succ … n) -n //
 #n #IH #f1 #f2 #f #Hf1 #Hf
index 588978f6bb9aba1207da18c112913cb63810e44b..335c6b36177a984b4b48952e2a30781a0406252c 100644 (file)
@@ -24,7 +24,7 @@ include "ground/relocation/pr_after_isi.ma".
 
 (*** after_uni_succ_dx *)
 lemma pr_after_pat_uni (i2) (i1):
-      ∀f2. @❨i1, f2❩ ≘ i2 →
+      ∀f2. @⧣❨i1, f2❩ ≘ i2 →
       ∀f. f2 ⊚ 𝐮❨i1❩ ≘ f → 𝐮❨i2❩ ⊚ ⫰*[i2] f2 ≘ f.
 #i2 elim i2 -i2
 [ #i1 #f2 #Hf2 #f #Hf
@@ -46,7 +46,7 @@ qed.
 
 (*** after_uni_succ_sn *)
 lemma pr_pat_after_uni_tls (i2) (i1):
-      ∀f2. @❨i1, f2❩ ≘ i2 →
+      ∀f2. @⧣❨i1, f2❩ ≘ i2 →
       ∀f. 𝐮❨i2❩ ⊚ ⫰*[i2] f2 ≘ f → f2 ⊚ 𝐮❨i1❩ ≘ f.
 #i2 elim i2 -i2
 [ #i1 #f2 #Hf2 #f #Hf
index e60d548e71daeb07f11e757aa72f1aaa61aea225..0d0f01e7ac56384776fce0c5faf7ba3efc497e81 100644 (file)
@@ -27,7 +27,7 @@ definition H_pr_coafter_inj: predicate pr_map ≝
 
 (*** coafter_inj_O_aux *)
 corec fact pr_coafter_inj_unit_aux:
-           ∀f1. @❨𝟏, f1❩ ≘ 𝟏 → H_pr_coafter_inj f1.
+           ∀f1. @⧣❨𝟏, f1❩ ≘ 𝟏 → H_pr_coafter_inj f1.
 #f1 #H1f1 #H2f1 #f #f21 #f22 #H1f #H2f
 cases (pr_pat_inv_unit_bi … H1f1) -H1f1 [ |*: // ] #g1 #H1
 lapply (pr_ist_inv_push … H2f1 … H1) -H2f1 #H2g1
@@ -44,8 +44,8 @@ qed-.
 
 (*** coafter_inj_aux *)
 fact pr_coafter_inj_aux:
-     (∀f1. @❨𝟏, f1❩ ≘ 𝟏 → H_pr_coafter_inj f1) →
-     ∀i2,f1. @❨𝟏, f1❩ ≘ i2 → H_pr_coafter_inj f1.
+     (∀f1. @⧣❨𝟏, f1❩ ≘ 𝟏 → H_pr_coafter_inj f1) →
+     ∀i2,f1. @⧣❨𝟏, f1❩ ≘ i2 → H_pr_coafter_inj f1.
 #H0 #i2 elim i2 -i2 /2 width=1 by/ -H0
 #i2 #IH #f1 #H1f1 #H2f1 #f #f21 #f22 #H1f #H2f
 elim (pr_pat_inv_unit_succ … H1f1) -H1f1 [ |*: // ] #g1 #H1g1 #H1
index 07e81d67a0f937e3eedb0f6c7aa861f331fd3c45..9c522c5bae9aaf2e11c1c2142e344d289b6f25d4 100644 (file)
@@ -28,7 +28,7 @@ definition H_pr_coafter_des_ist_isf: predicate pr_map ≝
 
 (*** coafter_isfin2_fwd_O_aux *)
 fact pr_coafter_des_ist_isf_unit_aux:
-     ∀f1. @❨𝟏, f1❩ ≘ 𝟏 → H_pr_coafter_des_ist_isf f1.
+     ∀f1. @⧣❨𝟏, f1❩ ≘ 𝟏 → H_pr_coafter_des_ist_isf f1.
 #f1 #Hf1 #f2 #H
 generalize in match Hf1; generalize in match f1; -f1
 @(pr_isf_ind … H) -f2
@@ -44,8 +44,8 @@ qed-.
 
 (*** coafter_isfin2_fwd_aux *)
 fact pr_coafter_des_ist_isf_aux:
-     (∀f1. @❨𝟏, f1❩ ≘ 𝟏 → H_pr_coafter_des_ist_isf f1) →
-     ∀i2,f1. @❨𝟏, f1❩ ≘ i2 → H_pr_coafter_des_ist_isf f1.
+     (∀f1. @⧣❨𝟏, f1❩ ≘ 𝟏 → H_pr_coafter_des_ist_isf f1) →
+     ∀i2,f1. @⧣❨𝟏, f1❩ ≘ i2 → H_pr_coafter_des_ist_isf f1.
 #H0 #i2 elim i2 -i2 /2 width=1 by/ -H0
 #i2 #IH #f1 #H1f1 #f2 #Hf2 #H2f1 #f #Hf
 elim (pr_pat_inv_unit_succ … H1f1) -H1f1 [ |*: // ] #g1 #Hg1 #H1
index 50a68b5fbfa1bc65b58438bf42619ba283b4c0a5..53f51deaf013975461701d3fb66c737a71eb3d62 100644 (file)
@@ -27,7 +27,7 @@ definition H_pr_coafter_des_ist_sn_isi: predicate pr_map ≝
 
 (*** coafter_fwd_isid2_O_aux *)
 corec fact pr_coafter_des_ist_sn_isi_unit_aux:
-           ∀f1. @❨𝟏, f1❩ ≘ 𝟏 → H_pr_coafter_des_ist_sn_isi f1.
+           ∀f1. @⧣❨𝟏, f1❩ ≘ 𝟏 → H_pr_coafter_des_ist_sn_isi f1.
 #f1 #H1f1 #f2 #f #H #H2f1 #Hf
 cases (pr_pat_inv_unit_bi … H1f1) -H1f1 [ |*: // ] #g1 #H1
 lapply (pr_ist_inv_push … H2f1 … H1) -H2f1 #H2g1
@@ -42,8 +42,8 @@ qed-.
 
 (*** coafter_fwd_isid2_aux *)
 fact pr_coafter_des_ist_sn_isi_aux:
-     (∀f1. @❨𝟏, f1❩ ≘ 𝟏 → H_pr_coafter_des_ist_sn_isi f1) →
-     ∀i2,f1. @❨𝟏, f1❩ ≘ i2 → H_pr_coafter_des_ist_sn_isi f1.
+     (∀f1. @⧣❨𝟏, f1❩ ≘ 𝟏 → H_pr_coafter_des_ist_sn_isi f1) →
+     ∀i2,f1. @⧣❨𝟏, f1❩ ≘ i2 → H_pr_coafter_des_ist_sn_isi f1.
 #H0 #i2 elim i2 -i2 /2 width=1 by/ -H0
 #i2 #IH #f1 #H1f1 #f2 #f #H #H2f1 #Hf
 elim (pr_pat_inv_unit_succ … H1f1) -H1f1 [ |*: // ] #g1 #Hg1 #H1
index 93581024947dd660c2ee36f27837b4ae0181815b..4ebc34b5bd18625510637cdbbf850ac60f1d2206 100644 (file)
@@ -23,7 +23,7 @@ include "ground/relocation/pr_coafter_nat_tls.ma".
 (*** coafter_tls_succ *)
 lemma pr_coafter_tls_tl_tls:
       ∀g2,g1,g. g2 ~⊚ g1 ≘ g →
-      ∀j. @❨𝟏, g2❩ ≘ j → ⫰*[j]g2 ~⊚ ⫰g1 ≘ ⫰*[j]g.
+      ∀j. @⧣❨𝟏, g2❩ ≘ j → ⫰*[j]g2 ~⊚ ⫰g1 ≘ ⫰*[j]g.
 #g2 #g1 #g #Hg #j #Hg2
 lapply (pr_nat_pred_bi … Hg2) -Hg2 #Hg2
 lapply (pr_coafter_tls_bi_tls … Hg2 … Hg) -Hg #Hg
@@ -35,7 +35,7 @@ qed.
 
 (* Note: parked for now
 lemma coafter_fwd_xpx_pushs:
-      ∀g2,f1,g,i,j. @❨i, g2❩ ≘ j → g2 ~⊚ ⫯*[i]⫯f1 ≘ g →
+      ∀g2,f1,g,i,j. @⧣❨i, g2❩ ≘ j → g2 ~⊚ ⫯*[i]⫯f1 ≘ g →
       ∃∃f.  ⫰*[↑j]g2 ~⊚ f1 ≘ f & ⫯*[j]⫯f = g.
 #g2 #g1 #g #i #j #Hg2 <pushs_xn #Hg(coafter_fwd_pushs … Hg Hg2) #f #H0 destruct
 lapply (coafter_tls … Hg2 Hg) -Hg <tls_pushs <tls_pushs #Hf
@@ -46,7 +46,7 @@ elim (coafter_inv_ppx … Hf) [|*: // ] -Hf #g #Hg #H destruct
 qed-.
 
 lemma coafter_fwd_xnx_pushs:
-      ∀g2,f1,g,i,j. @❨i, g2❩ ≘ j → g2 ~⊚ ⫯*[i]↑f1 ≘ g →
+      ∀g2,f1,g,i,j. @⧣❨i, g2❩ ≘ j → g2 ~⊚ ⫯*[i]↑f1 ≘ g →
       ∃∃f. ⫰*[↑j]g2 ~⊚ f1 ≘ f & ⫯*[j] ↑f = g.
 #g2 #g1 #g #i #j #Hg2 #Hg
 elim (coafter_fwd_pushs … Hg Hg2) #f #H0 destruct
index 2b09f5c96e8b51afb125925a3fa6d6c5ab79551b..b9e277d8e292bd142e1ef63c4c71be122f9275c2 100644 (file)
@@ -20,20 +20,20 @@ include "ground/relocation/pr_pat_pat_id.ma".
 (* Advanced constructions with pr_isi and pr_pat ****************************)
 
 (*** isid_at *)
-lemma pr_isi_pat (f): (∀i. @❨i,f❩ ≘ i) → 𝐈❨f❩.
+lemma pr_isi_pat (f): (∀i. @⧣❨i,f❩ ≘ i) → 𝐈❨f❩.
 /3 width=1 by pr_eq_id_isi, pr_pat_inv_id/
 qed.
 
 (* Inversions with pr_pat ***************************************************)
 
 (*** isid_inv_at *)
-lemma pr_isi_inv_pat (f) (i): 𝐈❨f❩ → @❨i,f❩ ≘ i.
+lemma pr_isi_inv_pat (f) (i): 𝐈❨f❩ → @⧣❨i,f❩ ≘ i.
 /3 width=3 by pr_isi_inv_eq_id, pr_pat_id, pr_pat_eq_repl_back/
 qed-.
 
 (* Destructions with pr_pat *************************************************)
 
 (*** isid_inv_at_mono *)
-lemma pr_isi_pat_des (f) (i1) (i2): 𝐈❨f❩ → @❨i1,f❩ ≘ i2 → i1 = i2.
+lemma pr_isi_pat_des (f) (i1) (i2): 𝐈❨f❩ → @⧣❨i1,f❩ ≘ i2 → i1 = i2.
 /4 width=3 by pr_isi_inv_eq_id, pr_pat_id_des, pr_pat_eq_repl_fwd/
 qed-.
index 2c37fcb868eda709e604904b6a2d1433e5a8a9ed..24628b32667581d4df0cdfbcee189ad0e4c1ed83 100644 (file)
@@ -19,7 +19,7 @@ include "ground/relocation/pr_pat.ma".
 
 (*** istot *)
 definition pr_ist: predicate pr_map ≝
-           λf. ∀i. ∃j. @❨i,f❩ ≘ j.
+           λf. ∀i. ∃j. @⧣❨i,f❩ ≘ j.
 
 interpretation
   "totality condition (partial relocation maps)"
index cfc6baf49e55118e7e3d66f90ac5af19688fcab7..87485963ea6c6bfc9341ca23d3cc7aa6ad7f3a4f 100644 (file)
@@ -20,7 +20,7 @@ include "ground/relocation/pr_ist.ma".
 (* Advanced constructions with pr_isi ***************************************)
 
 (*** isid_at_total *)
-lemma pr_isi_pat_total: ∀f. 𝐓❨f❩ → (∀i1,i2. @❨i1,f❩ ≘ i2 → i1 = i2) → 𝐈❨f❩.
+lemma pr_isi_pat_total: ∀f. 𝐓❨f❩ → (∀i1,i2. @⧣❨i1,f❩ ≘ i2 → i1 = i2) → 𝐈❨f❩.
 #f #H1f #H2f @pr_isi_pat
 #i lapply (H1f i) -H1f *
 #j #Hf >(H2f … Hf) in ⊢ (???%); -H2f //
index de3ecfe4ee36593fe71d4fff1f8c7e281968c724..a65f972bb89d9bb5dbd561c8094d3e30e88fdd13 100644 (file)
@@ -23,7 +23,7 @@ include "ground/relocation/pr_ist.ma".
 (* Advanced constructions with pr_pat ***************************************)
 
 (*** at_dec *)
-lemma pr_pat_dec (f) (i1) (i2): 𝐓❨f❩ → Decidable (@❨i1,f❩ ≘ i2).
+lemma pr_pat_dec (f) (i1) (i2): 𝐓❨f❩ → Decidable (@⧣❨i1,f❩ ≘ i2).
 #f #i1 #i2 #Hf lapply (Hf i1) -Hf *
 #j2 #Hf elim (eq_pnat_dec i2 j2)
 [ #H destruct /2 width=1 by or_introl/
@@ -32,9 +32,9 @@ lemma pr_pat_dec (f) (i1) (i2): 𝐓❨f❩ → Decidable (@❨i1,f❩ ≘ i2).
 qed-.
 
 (*** is_at_dec *)
-lemma is_pr_pat_dec (f) (i2): 𝐓❨f❩ → Decidable (∃i1. @❨i1,f❩ ≘ i2).
+lemma is_pr_pat_dec (f) (i2): 𝐓❨f❩ → Decidable (∃i1. @⧣❨i1,f❩ ≘ i2).
 #f #i2 #Hf
-lapply (dec_plt (λi1.@❨i1,f❩ ≘ i2) … (↑i2)) [| * ]
+lapply (dec_plt (λi1.@⧣❨i1,f❩ ≘ i2) … (↑i2)) [| * ]
 [ /2 width=1 by pr_pat_dec/
 | * /3 width=2 by ex_intro, or_introl/
 | #H @or_intror * #i1 #Hi12
@@ -46,7 +46,7 @@ qed-.
 
 (*** at_ext *)
 corec theorem pr_eq_ext_pat (f1) (f2): 𝐓❨f1❩ → 𝐓❨f2❩ →
-              (∀i,i1,i2. @❨i,f1❩ ≘ i1 → @❨i,f2❩ ≘ i2 → i1 = i2) →
+              (∀i,i1,i2. @⧣❨i,f1❩ ≘ i1 → @⧣❨i,f2❩ ≘ i2 → i1 = i2) →
               f1 ≐ f2.
 cases (pr_map_split_tl f1) #H1
 cases (pr_map_split_tl f2) #H2
index f61913c80adde38adfe6af0297327450701bd4ad..13154a1bb7249d1775c4c65771216de4f896d5c8 100644 (file)
@@ -19,7 +19,7 @@ include "ground/relocation/pr_pat.ma".
 (* NON-NEGATIVE APPLICATION FOR PARTIAL RELOCATION MAPS *********************)
 
 definition pr_nat: relation3 pr_map nat nat ≝
-           λf,l1,l2. @❨↑l1,f❩ ≘ ↑l2.
+           λf,l1,l2. @⧣❨↑l1,f❩ ≘ ↑l2.
 
 interpretation
   "relational non-negative application (partial relocation maps)"
@@ -46,7 +46,7 @@ lemma pr_nat_next (f) (l1) (l2) (g) (k2):
 qed.
 
 lemma pr_nat_pred_bi (f) (i1) (i2):
-      @❨i1,f❩ ≘ i2 → @↑❨↓i1,f❩ ≘ ↓i2.
+      @⧣❨i1,f❩ ≘ i2 → @↑❨↓i1,f❩ ≘ ↓i2.
 #f #i1 #i2
 >(npsucc_pred i1) in ⊢ (%→?); >(npsucc_pred i2) in ⊢ (%→?);
 //
index 104d37c74dbf6c12e7d1f9d5470f514371833fb7..0eee75321d6d5c3a40da8f1ae68b9535ff7a9d77 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "ground/notation/relations/rat_3.ma".
+include "ground/notation/relations/ratsharp_3.ma".
 include "ground/xoa/ex_3_2.ma".
 include "ground/arith/pnat.ma".
 include "ground/relocation/pr_tl.ma".
@@ -34,19 +34,19 @@ coinductive pr_pat: relation3 pr_map pnat pnat ≝
 
 interpretation
   "relational positive application (partial relocation maps)"
-  'RAt i1 f i2 = (pr_pat f i1 i2).
+  'RAtSharp i1 f i2 = (pr_pat f i1 i2).
 
 (*** H_at_div *)
 definition H_pr_pat_div: relation4 pr_map pr_map pr_map pr_map ≝
            λf2,g2,f1,g1.
-           ∀jf,jg,j. @❨jf,f2❩ ≘ j → @❨jg,g2❩ ≘ j →
-           ∃∃j0. @❨j0,f1❩ ≘ jf & @❨j0,g1❩ ≘ jg.
+           ∀jf,jg,j. @⧣❨jf,f2❩ ≘ j → @⧣❨jg,g2❩ ≘ j →
+           ∃∃j0. @⧣❨j0,f1❩ ≘ jf & @⧣❨j0,g1❩ ≘ jg.
 
 (* Basic inversions *********************************************************)
 
 (*** at_inv_ppx *)
 lemma pr_pat_inv_unit_push (f) (i1) (i2):
-      @❨i1,f❩ ≘ i2 → ∀g. 𝟏 = i1 → ⫯g = f → 𝟏 = i2.
+      @⧣❨i1,f❩ ≘ i2 → ∀g. 𝟏 = i1 → ⫯g = f → 𝟏 = i2.
 #f #i1 #i2 * -f -i1 -i2 //
 [ #f #i1 #i2 #_ #g #j1 #j2 #_ * #_ #x #H destruct
 | #f #i1 #i2 #_ #g #j2 * #_ #x #_ #H elim (eq_inv_pr_push_next … H)
@@ -55,8 +55,8 @@ qed-.
 
 (*** at_inv_npx *)
 lemma pr_pat_inv_succ_push (f) (i1) (i2):
-      @❨i1,f❩ ≘ i2 → ∀g,j1. ↑j1 = i1 → ⫯g = f →
-      ∃∃j2. @❨j1,g❩ ≘ j2 & ↑j2 = i2.
+      @⧣❨i1,f❩ ≘ i2 → ∀g,j1. ↑j1 = i1 → ⫯g = f →
+      ∃∃j2. @⧣❨j1,g❩ ≘ j2 & ↑j2 = i2.
 #f #i1 #i2 * -f -i1 -i2
 [ #f #g #j1 #j2 #_ * #_ #x #x1 #H destruct
 | #f #i1 #i2 #Hi #g #j1 #j2 * * * #x #x1 #H #Hf >(eq_inv_pr_push_bi … Hf) -g destruct /2 width=3 by ex2_intro/
@@ -66,8 +66,8 @@ qed-.
 
 (*** at_inv_xnx *)
 lemma pr_pat_inv_next (f) (i1) (i2):
-      @❨i1,f❩ ≘ i2 → ∀g. ↑g = f →
-      ∃∃j2. @❨i1,g❩ ≘ j2 & ↑j2 = i2.
+      @⧣❨i1,f❩ ≘ i2 → ∀g. ↑g = f →
+      ∃∃j2. @⧣❨i1,g❩ ≘ j2 & ↑j2 = i2.
 #f #i1 #i2 * -f -i1 -i2
 [ #f #g #j1 #j2 * #_ #_ #x #H elim (eq_inv_pr_next_push … H)
 | #f #i1 #i2 #_ #g #j1 #j2 * #_ #_ #x #H elim (eq_inv_pr_next_push … H)
@@ -79,50 +79,50 @@ qed-.
 
 (*** at_inv_ppn *)
 lemma pr_pat_inv_unit_push_succ (f) (i1) (i2):
-      @❨i1,f❩ ≘ i2 → ∀g,j2. 𝟏 = i1 → ⫯g = f → ↑j2 = i2 → ⊥.
+      @⧣❨i1,f❩ ≘ i2 → ∀g,j2. 𝟏 = i1 → ⫯g = f → ↑j2 = i2 → ⊥.
 #f #i1 #i2 #Hf #g #j2 #H1 #H <(pr_pat_inv_unit_push … Hf … H1 H) -f -g -i1 -i2
 #H destruct
 qed-.
 
 (*** at_inv_npp *)
 lemma pr_pat_inv_succ_push_unit (f) (i1) (i2):
-      @❨i1,f❩ ≘ i2 → ∀g,j1. ↑j1 = i1 → ⫯g = f → 𝟏 = i2 → ⊥.
+      @⧣❨i1,f❩ ≘ i2 → ∀g,j1. ↑j1 = i1 → ⫯g = f → 𝟏 = i2 → ⊥.
 #f #i1 #i2 #Hf #g #j1 #H1 #H elim (pr_pat_inv_succ_push … Hf … H1 H) -f -i1
 #x2 #Hg * -i2 #H destruct
 qed-.
 
 (*** at_inv_npn *)
 lemma pr_pat_inv_succ_push_succ (f) (i1) (i2):
-      @❨i1,f❩ ≘ i2 → ∀g,j1,j2. ↑j1 = i1 → ⫯g = f → ↑j2 = i2 → @❨j1,g❩ ≘ j2.
+      @⧣❨i1,f❩ ≘ i2 → ∀g,j1,j2. ↑j1 = i1 → ⫯g = f → ↑j2 = i2 → @⧣❨j1,g❩ ≘ j2.
 #f #i1 #i2 #Hf #g #j1 #j2 #H1 #H elim (pr_pat_inv_succ_push … Hf … H1 H) -f -i1
 #x2 #Hg * -i2 #H destruct //
 qed-.
 
 (*** at_inv_xnp *)
 lemma pr_pat_inv_next_unit (f) (i1) (i2):
-      @❨i1,f❩ ≘ i2 → ∀g. ↑g = f → 𝟏 = i2 → ⊥.
+      @⧣❨i1,f❩ ≘ i2 → ∀g. ↑g = f → 𝟏 = i2 → ⊥.
 #f #i1 #i2 #Hf #g #H elim (pr_pat_inv_next … Hf … H) -f
 #x2 #Hg * -i2 #H destruct
 qed-.
 
 (*** at_inv_xnn *)
 lemma pr_pat_inv_next_succ (f) (i1) (i2):
-      @❨i1,f❩ ≘ i2 → ∀g,j2. ↑g = f → ↑j2 = i2 → @❨i1,g❩ ≘ j2.
+      @⧣❨i1,f❩ ≘ i2 → ∀g,j2. ↑g = f → ↑j2 = i2 → @⧣❨i1,g❩ ≘ j2.
 #f #i1 #i2 #Hf #g #j2 #H elim (pr_pat_inv_next … Hf … H) -f
 #x2 #Hg * -i2 #H destruct //
 qed-.
 
 (*** at_inv_pxp *)
 lemma pr_pat_inv_unit_bi (f) (i1) (i2):
-      @❨i1,f❩ ≘ i2 → 𝟏 = i1 → 𝟏 = i2 → ∃g. ⫯g = f.
+      @⧣❨i1,f❩ ≘ i2 → 𝟏 = i1 → 𝟏 = i2 → ∃g. ⫯g = f.
 #f elim (pr_map_split_tl … f) /2 width=2 by ex_intro/
 #H #i1 #i2 #Hf #H1 #H2 cases (pr_pat_inv_next_unit … Hf … H H2)
 qed-.
 
 (*** at_inv_pxn *)
 lemma pr_pat_inv_unit_succ (f) (i1) (i2):
-      @❨i1,f❩ ≘ i2 → ∀j2. 𝟏 = i1 → ↑j2 = i2 →
-      ∃∃g. @❨i1,g❩ ≘ j2 & ↑g = f.
+      @⧣❨i1,f❩ ≘ i2 → ∀j2. 𝟏 = i1 → ↑j2 = i2 →
+      ∃∃g. @⧣❨i1,g❩ ≘ j2 & ↑g = f.
 #f elim (pr_map_split_tl … f)
 #H #i1 #i2 #Hf #j2 #H1 #H2
 [ elim (pr_pat_inv_unit_push_succ … Hf … H1 H H2)
@@ -132,7 +132,7 @@ qed-.
 
 (*** at_inv_nxp *)
 lemma pr_pat_inv_succ_unit (f) (i1) (i2):
-      @❨i1,f❩ ≘ i2 → ∀j1. ↑j1 = i1 → 𝟏 = i2 → ⊥.
+      @⧣❨i1,f❩ ≘ i2 → ∀j1. ↑j1 = i1 → 𝟏 = i2 → ⊥.
 #f elim (pr_map_split_tl f)
 #H #i1 #i2 #Hf #j1 #H1 #H2
 [ elim (pr_pat_inv_succ_push_unit … Hf … H1 H H2)
@@ -142,9 +142,9 @@ qed-.
 
 (*** at_inv_nxn *)
 lemma pr_pat_inv_succ_bi (f) (i1) (i2):
-      @❨i1,f❩ ≘ i2 → ∀j1,j2. ↑j1 = i1 → ↑j2 = i2 →
-      ∨∨ ∃∃g. @❨j1,g❩ ≘ j2 & ⫯g = f
-       | ∃∃g. @❨i1,g❩ ≘ j2 & ↑g = f.
+      @⧣❨i1,f❩ ≘ i2 → ∀j1,j2. ↑j1 = i1 → ↑j2 = i2 →
+      ∨∨ ∃∃g. @⧣❨j1,g❩ ≘ j2 & ⫯g = f
+       | ∃∃g. @⧣❨i1,g❩ ≘ j2 & ↑g = f.
 #f elim (pr_map_split_tl f) *
 /4 width=7 by pr_pat_inv_next_succ, pr_pat_inv_succ_push_succ, ex2_intro, or_intror, or_introl/
 qed-.
@@ -152,9 +152,9 @@ qed-.
 (* Note: the following inversion lemmas must be checked *)
 (*** at_inv_xpx *)
 lemma pr_pat_inv_push (f) (i1) (i2):
-      @❨i1,f❩ ≘ i2 → ∀g. ⫯g = f →
+      @⧣❨i1,f❩ ≘ i2 → ∀g. ⫯g = f →
       ∨∨ ∧∧ 𝟏 = i1 & 𝟏 = i2
-       | ∃∃j1,j2. @❨j1,g❩ ≘ j2 & ↑j1 = i1 & ↑j2 = i2.
+       | ∃∃j1,j2. @⧣❨j1,g❩ ≘ j2 & ↑j1 = i1 & ↑j2 = i2.
 #f * [2: #i1 ] #i2 #Hf #g #H
 [ elim (pr_pat_inv_succ_push … Hf … H) -f /3 width=5 by or_intror, ex3_2_intro/
 | >(pr_pat_inv_unit_push … Hf … H) -f /3 width=1 by conj, or_introl/
@@ -163,15 +163,15 @@ qed-.
 
 (*** at_inv_xpp *)
 lemma pr_pat_inv_push_unit (f) (i1) (i2):
-      @❨i1,f❩ ≘ i2 → ∀g. ⫯g = f → 𝟏 = i2 → 𝟏 = i1.
+      @⧣❨i1,f❩ ≘ i2 → ∀g. ⫯g = f → 𝟏 = i2 → 𝟏 = i1.
 #f #i1 #i2 #Hf #g #H elim (pr_pat_inv_push … Hf … H) -f * //
 #j1 #j2 #_ #_ * -i2 #H destruct
 qed-.
 
 (*** at_inv_xpn *)
 lemma pr_pat_inv_push_succ (f) (i1) (i2):
-      @❨i1,f❩ ≘ i2 → ∀g,j2. ⫯g = f → ↑j2 = i2 →
-      ∃∃j1. @❨j1,g❩ ≘ j2 & ↑j1 = i1.
+      @⧣❨i1,f❩ ≘ i2 → ∀g,j2. ⫯g = f → ↑j2 = i2 →
+      ∃∃j1. @⧣❨j1,g❩ ≘ j2 & ↑j1 = i1.
 #f #i1 #i2 #Hf #g #j2 #H elim (pr_pat_inv_push … Hf … H) -f *
 [ #_ * -i2 #H destruct
 | #x1 #x2 #Hg #H1 * -i2 #H destruct /2 width=3 by ex2_intro/
@@ -180,7 +180,7 @@ qed-.
 
 (*** at_inv_xxp *)
 lemma pr_pat_inv_unit_dx (f) (i1) (i2):
-      @❨i1,f❩ ≘ i2 → 𝟏 = i2 →
+      @⧣❨i1,f❩ ≘ i2 → 𝟏 = i2 →
       ∃∃g. 𝟏 = i1 & ⫯g = f.
 #f elim (pr_map_split_tl f)
 #H #i1 #i2 #Hf #H2
@@ -191,9 +191,9 @@ qed-.
 
 (*** at_inv_xxn *)
 lemma pr_pat_inv_succ_dx (f) (i1) (i2):
-      @❨i1,f❩ ≘ i2 → ∀j2.  ↑j2 = i2 →
-      ∨∨ ∃∃g,j1. @❨j1,g❩ ≘ j2 & ↑j1 = i1 & ⫯g = f
-       | ∃∃g. @❨i1,g❩ ≘ j2 & ↑g = f.
+      @⧣❨i1,f❩ ≘ i2 → ∀j2.  ↑j2 = i2 →
+      ∨∨ ∃∃g,j1. @⧣❨j1,g❩ ≘ j2 & ↑j1 = i1 & ⫯g = f
+       | ∃∃g. @⧣❨i1,g❩ ≘ j2 & ↑g = f.
 #f elim (pr_map_split_tl f)
 #H #i1 #i2 #Hf #j2 #H2
 [ elim (pr_pat_inv_push_succ … Hf … H H2) -i2 /3 width=5 by or_introl, ex3_2_intro/
index ca6abde3328c3a6d948b4fd6092d7dacacda2480..ebe55c37ec6bb787899990bce022885adfe72b3e 100644 (file)
@@ -20,14 +20,14 @@ include "ground/relocation/pr_nat_basic.ma".
 
 (*** at_basic_lt *)
 lemma pr_pat_basic_lt (m) (n) (i):
-      ninj i ≤ m → @❨i, 𝐛❨m,n❩❩ ≘ i.
+      ninj i ≤ m → @⧣❨i, 𝐛❨m,n❩❩ ≘ i.
 #m #n #i >(npsucc_pred i) #Hmi
 /2 width=1 by pr_nat_basic_lt/
 qed.
 
 (*** at_basic_ge *)
 lemma pr_pat_basic_ge (m) (n) (i):
-      m < ninj i → @❨i, 𝐛❨m,n❩❩ ≘ i+n.
+      m < ninj i → @⧣❨i, 𝐛❨m,n❩❩ ≘ i+n.
 #m #n #i >(npsucc_pred i) #Hmi <nrplus_npsucc_sn
 /3 width=1 by pr_nat_basic_ge, nlt_inv_succ_dx/
 qed.
@@ -36,10 +36,10 @@ qed.
 
 (*** at_basic_inv_lt *)
 lemma pr_pat_basic_inv_lt (m) (n) (i) (j):
-      ninj i ≤ m → @❨i, 𝐛❨m,n❩❩ ≘ j → i = j.
+      ninj i ≤ m → @⧣❨i, 𝐛❨m,n❩❩ ≘ j → i = j.
 /3 width=4 by pr_pat_basic_lt, pr_pat_mono/ qed-.
 
 (*** at_basic_inv_ge *)
 lemma pr_pat_basic_inv_ge (m) (n) (i) (j):
-      m < ninj i → @❨i, 𝐛❨m,n❩❩ ≘ j → i+n = j.
+      m < ninj i → @⧣❨i, 𝐛❨m,n❩❩ ≘ j → i+n = j.
 /3 width=4 by pr_pat_basic_ge, pr_pat_mono/ qed-.
index 29620d121db2173d3a988b69c325a22b72e047b4..02af501de51c7bf4fc959c7b858c2c86d86c41e5 100644 (file)
@@ -21,7 +21,7 @@ include "ground/relocation/pr_pat_lt.ma".
 
 (*** at_eq_repl_back *)
 corec lemma pr_pat_eq_repl_back (i1) (i2):
-            pr_eq_repl_back (λf. @❨i1,f❩ ≘ i2).
+            pr_eq_repl_back (λf. @⧣❨i1,f❩ ≘ i2).
 #f1 * -f1 -i1 -i2
 [ #f1 #g1 #j1 #j2 #H #H1 #H2 #f2 #H12
   cases (pr_eq_inv_push_sn … H12 … H) -g1 /2 width=2 by pr_pat_refl/
@@ -34,11 +34,11 @@ qed-.
 
 (*** at_eq_repl_fwd *)
 lemma pr_pat_eq_repl_fwd (i1) (i2):
-      pr_eq_repl_fwd (λf. @❨i1,f❩ ≘ i2).
+      pr_eq_repl_fwd (λf. @⧣❨i1,f❩ ≘ i2).
 #i1 #i2 @pr_eq_repl_sym /2 width=3 by pr_pat_eq_repl_back/
 qed-.
 
-lemma pr_pat_eq (f): ⫯f ≐ f → ∀i. @❨i,f❩ ≘ i.
+lemma pr_pat_eq (f): ⫯f ≐ f → ∀i. @⧣❨i,f❩ ≘ i.
 #f #Hf #i elim i -i
 [ /3 width=3 by pr_pat_eq_repl_back, pr_pat_refl/
 | /3 width=7 by pr_pat_eq_repl_back, pr_pat_push/
@@ -48,7 +48,7 @@ qed.
 (* Inversions with pr_eq ****************************************************)
 
 corec lemma pr_pat_inv_eq (f):
-            (∀i. @❨i,f❩ ≘ i) → ⫯f ≐ f.
+            (∀i. @⧣❨i,f❩ ≘ i) → ⫯f ≐ f.
 #Hf
 lapply (Hf (𝟏)) #H
 lapply (pr_pat_des_id … H) -H #H
index 0134687965d50e37f50bcbf42e34bab3224eb1c3..dc29d3c6a86ce4fb6af729ab67d3da0d95a25d14 100644 (file)
@@ -20,13 +20,13 @@ include "ground/relocation/pr_pat_eq.ma".
 (* Constructions with pr_id *************************************************)
 
 (*** id_at *)
-lemma pr_pat_id (i): @❨i,𝐢❩ ≘ i.
+lemma pr_pat_id (i): @⧣❨i,𝐢❩ ≘ i.
 /2 width=1 by pr_pat_eq, pr_eq_refl/ qed.
 
 (* Inversions with pr_id ****************************************************)
 
 (*** id_inv_at *)
 lemma pr_pat_inv_id (f):
-      (∀i. @❨i,f❩ ≘ i) → 𝐢 ≐ f.
+      (∀i. @⧣❨i,f❩ ≘ i) → 𝐢 ≐ f.
 /3 width=1 by pr_pat_inv_eq, pr_id_eq/
 qed-.
index c58c16172803d1778b22ce7b889956149d39d3e4..5fe0250c10bc94b2b9855941dbac7e5ff40bb89e 100644 (file)
@@ -22,7 +22,7 @@ include "ground/relocation/pr_pat.ma".
 
 (*** at_increasing *)
 lemma pr_pat_increasing (i2) (i1) (f):
-      @❨i1,f❩ ≘ i2 → i1 ≤ i2.
+      @⧣❨i1,f❩ ≘ i2 → i1 ≤ i2.
 #i2 elim i2 -i2
 [ #i1 #f #Hf elim (pr_pat_inv_unit_dx … Hf) -Hf //
 | #i2 #IH * //
@@ -33,14 +33,14 @@ qed-.
 
 (*** at_increasing_strict *)
 lemma pr_pat_increasing_strict (g) (i1) (i2):
-      @❨i1,g❩ ≘ i2 → ∀f. ↑f = g →
-      ∧∧ i1 < i2 & @❨i1,f❩ ≘ ↓i2.
+      @⧣❨i1,g❩ ≘ i2 → ∀f. ↑f = g →
+      ∧∧ i1 < i2 & @⧣❨i1,f❩ ≘ ↓i2.
 #g #i1 #i2 #Hg #f #H elim (pr_pat_inv_next … Hg … H) -Hg -H
 /4 width=2 by conj, pr_pat_increasing, ple_succ_bi/
 qed-.
 
 (*** at_fwd_id_ex *)
-lemma pr_pat_des_id (f) (i): @❨i,f❩ ≘ i → ⫯⫰f = f.
+lemma pr_pat_des_id (f) (i): @⧣❨i,f❩ ≘ i → ⫯⫰f = f.
 #f elim (pr_map_split_tl f) //
 #H #i #Hf elim (pr_pat_inv_next … Hf … H) -Hf -H
 #j2 #Hg #H destruct lapply (pr_pat_increasing … Hg) -Hg
@@ -51,8 +51,8 @@ qed-.
 
 (*** at_le_ex *)
 lemma pr_pat_le_ex (j2) (i2) (f):
-      @❨i2,f❩ ≘ j2 → ∀i1. i1 ≤ i2 →
-      ∃∃j1. @❨i1,f❩ ≘ j1 & j1 ≤ j2.
+      @⧣❨i2,f❩ ≘ j2 → ∀i1. i1 ≤ i2 →
+      ∃∃j1. @⧣❨i1,f❩ ≘ j1 & j1 ≤ j2.
 #j2 elim j2 -j2 [2: #j2 #IH ] #i2 #f #Hf
 [ elim (pr_pat_inv_succ_dx … Hf) -Hf [1,3: * |*: // ]
   #g [ #x2 ] #Hg [ #H2 ] #H0
@@ -71,7 +71,7 @@ qed-.
 
 (*** at_id_le *)
 lemma pr_pat_id_le (i1) (i2):
-      i1 ≤ i2 → ∀f. @❨i2,f❩ ≘ i2 → @❨i1,f❩ ≘ i1.
+      i1 ≤ i2 → ∀f. @⧣❨i2,f❩ ≘ i2 → @⧣❨i1,f❩ ≘ i1.
 #i1 #i2 #H
 @(ple_ind_alt … H) -i1 -i2 [ #i2 | #i1 #i2 #_ #IH ] #f #Hf
 lapply (pr_pat_des_id … Hf) #H <H in Hf; -H
index 20ce2220b3207be6115b6fe58a3e4bc08e824320..245583f91a5ac1714f8e89c744021464081a3b51 100644 (file)
@@ -21,7 +21,7 @@ include "ground/relocation/pr_pat.ma".
 
 (*** at_monotonic *)
 theorem pr_pat_monotonic:
-        ∀j2,i2,f. @❨i2,f❩ ≘ j2 → ∀j1,i1. @❨i1,f❩ ≘ j1 →
+        ∀j2,i2,f. @⧣❨i2,f❩ ≘ j2 → ∀j1,i1. @⧣❨i1,f❩ ≘ j1 →
         i1 < i2 → j1 < j2.
 #j2 elim j2 -j2
 [ #i2 #f #H2f elim (pr_pat_inv_unit_dx … H2f) -H2f //
@@ -39,7 +39,7 @@ qed-.
 
 (*** at_inv_monotonic *)
 theorem pr_pat_inv_monotonic:
-        ∀j1,i1,f. @❨i1,f❩ ≘ j1 → ∀j2,i2. @❨i2,f❩ ≘ j2 →
+        ∀j1,i1,f. @⧣❨i1,f❩ ≘ j1 → ∀j2,i2. @⧣❨i2,f❩ ≘ j2 →
         j1 < j2 → i1 < i2.
 #j1 elim j1 -j1
 [ #i1 #f #H1f elim (pr_pat_inv_unit_dx … H1f) -H1f //
@@ -62,7 +62,7 @@ qed-.
 
 (*** at_mono *)
 theorem pr_pat_mono (f) (i):
-        ∀i1. @❨i,f❩ ≘ i1 → ∀i2. @❨i,f❩ ≘ i2 → i2 = i1.
+        ∀i1. @⧣❨i,f❩ ≘ i1 → ∀i2. @⧣❨i,f❩ ≘ i2 → i2 = i1.
 #f #i #i1 #H1 #i2 #H2 elim (pnat_split_lt_eq_gt i2 i1) //
 #Hi elim (plt_ge_false i i)
 /2 width=6 by pr_pat_inv_monotonic/
@@ -70,7 +70,7 @@ qed-.
 
 (*** at_inj *)
 theorem pr_pat_inj (f) (i):
-        ∀i1. @❨i1,f❩ ≘ i → ∀i2. @❨i2,f❩ ≘ i → i1 = i2.
+        ∀i1. @⧣❨i1,f❩ ≘ i → ∀i2. @⧣❨i2,f❩ ≘ i → i1 = i2.
 #f #i #i1 #H1 #i2 #H2 elim (pnat_split_lt_eq_gt i2 i1) //
 #Hi elim (plt_ge_false i i)
 /2 width=6 by pr_pat_monotonic/
index 90bee366be7cbcb8aaf0accab126509cb2f0d09e..be80edf899c22f3efef1b899a57ccf70bb31ee2a 100644 (file)
@@ -21,7 +21,7 @@ include "ground/relocation/pr_pat_pat.ma".
 
 (*** at_id_fwd *)
 lemma pr_pat_id_des (i1) (i2):
-      @❨i1,𝐢❩ ≘ i2 → i1 = i2.
+      @⧣❨i1,𝐢❩ ≘ i2 → i1 = i2.
 /2 width=4 by pr_pat_mono/ qed-.
 
 (* Main constructions with pr_id ********************************************)
index eaaaf0501951595dfefa9e511dad3fbd2cf3dc2a..1150c6a8d89e9c0bda3a6f4f27bcd1a353b1d1f6 100644 (file)
@@ -23,7 +23,7 @@ include "ground/relocation/pr_pat_eq.ma".
 (* Note: this requires ↑ on first n *)
 (*** at_pxx_tls *)
 lemma pr_pat_unit_succ_tls (n) (f):
-      @❨𝟏,f❩ ≘ ↑n → @❨𝟏,⫰*[n]f❩ ≘ 𝟏.
+      @⧣❨𝟏,f❩ ≘ ↑n → @⧣❨𝟏,⫰*[n]f❩ ≘ 𝟏.
 #n @(nat_ind_succ … n) -n //
 #n #IH #f #Hf
 elim (pr_pat_inv_unit_succ … Hf) -Hf [|*: // ] #g #Hg #H0 destruct
@@ -32,7 +32,7 @@ qed.
 
 (* Note: this requires ↑ on third n2 *)
 (*** at_tls *)
-lemma pr_pat_tls (n2) (f): ⫯⫰*[↑n2]f ≐ ⫰*[n2]f → ∃i1. @❨i1,f❩ ≘ ↑n2.
+lemma pr_pat_tls (n2) (f): ⫯⫰*[↑n2]f ≐ ⫰*[n2]f → ∃i1. @⧣❨i1,f❩ ≘ ↑n2.
 #n2 @(nat_ind_succ … n2) -n2
 [ /4 width=4 by pr_pat_eq_repl_back, pr_pat_refl, ex_intro/
 | #n2 #IH #f <pr_tls_swap <pr_tls_swap in ⊢ (??%→?); #H
@@ -47,8 +47,8 @@ qed-.
 (* Note: this does not require ↑ on second and third p *)
 (*** at_inv_nxx *)
 lemma pr_pat_inv_succ_sn (p) (g) (i1) (j2):
-      @❨↑i1,g❩ ≘ j2 → @❨𝟏,g❩ ≘ p →
-      ∃∃i2. @❨i1,⫰*[p]g❩ ≘ i2 & p+i2 = j2.
+      @⧣❨↑i1,g❩ ≘ j2 → @⧣❨𝟏,g❩ ≘ p →
+      ∃∃i2. @⧣❨i1,⫰*[p]g❩ ≘ i2 & p+i2 = j2.
 #p elim p -p
 [ #g #i1 #j2 #Hg #H
   elim (pr_pat_inv_unit_bi … H) -H [|*: // ] #f #H0
@@ -65,7 +65,7 @@ qed-.
 (* Note: this requires ↑ on first n2 *)
 (*** at_inv_tls *)
 lemma pr_pat_inv_succ_dx_tls (n2) (i1) (f):
-      @❨i1,f❩ ≘ ↑n2 → ⫯⫰*[↑n2]f ≐ ⫰*[n2]f.
+      @⧣❨i1,f❩ ≘ ↑n2 → ⫯⫰*[↑n2]f ≐ ⫰*[n2]f.
 #n2 @(nat_ind_succ … n2) -n2
 [ #i1 #f #Hf elim (pr_pat_inv_unit_dx … Hf) -Hf // #g #H1 #H destruct
   /2 width=1 by pr_eq_refl/
index 8e9e28a975d4b2d3ce8539d5d2442b97e871a9da..f284a8acdf677220bf1d9baa8051d7f7c30600b5 100644 (file)
@@ -22,7 +22,7 @@ include "ground/relocation/pr_pat_pat_id.ma".
 
 (*** at_uni *)
 lemma pr_pat_uni (n) (i):
-      @❨i,𝐮❨n❩❩ ≘ i+n.
+      @⧣❨i,𝐮❨n❩❩ ≘ i+n.
 #n @(nat_ind_succ … n) -n
 /2 width=5 by pr_pat_next/
 qed.
@@ -31,5 +31,5 @@ qed.
 
 (*** at_inv_uni *)
 lemma pr_pat_inv_uni (n) (i) (j):
-      @❨i,𝐮❨n❩❩ ≘ j → j = i+n.
+      @⧣❨i,𝐮❨n❩❩ ≘ j → j = i+n.
 /2 width=4 by pr_pat_mono/ qed-.
index bbecabe017d40e11c70bd844451751844b0b8041..a72647d29b78228e918a3d25ba3529cbbb4d47da 100644 (file)
@@ -19,7 +19,7 @@ include "ground/relocation/tr_pap.ma".
 
 corec definition tr_compose: tr_map → tr_map → tr_map.
 #f2 * #p1 #f1
-@(stream_cons … (f2@❨p1❩))
+@(stream_cons … (f2@⧣❨p1❩))
 @(tr_compose ? f1) -tr_compose -f1
 @(⇂*[p1]f2)
 defined.
@@ -32,7 +32,7 @@ interpretation
 
 (*** compose_rew *)
 lemma tr_compose_unfold (f2) (f1):
-      ∀p1. f2@❨p1❩⨮(⇂*[p1]f2)∘f1 = f2∘(p1⨮f1).
+      ∀p1. f2@⧣❨p1❩⨮(⇂*[p1]f2)∘f1 = f2∘(p1⨮f1).
 #f2 #f1 #p1 <(stream_unfold … (f2∘(p1⨮f1))) //
 qed.
 
@@ -41,7 +41,7 @@ qed.
 (*** compose_inv_rew *)
 lemma tr_compose_inv_unfold (f2) (f1):
       ∀f,p1,p. f2∘(p1⨮f1) = p⨮f →
-      ∧∧ f2@❨p1❩ = p & (⇂*[p1]f2)∘f1 = f.
+      ∧∧ f2@⧣❨p1❩ = p & (⇂*[p1]f2)∘f1 = f.
 #f2 #f1 #f #p1 #p
 <tr_compose_unfold #H destruct
 /2 width=1 by conj/
@@ -50,7 +50,7 @@ qed-.
 (*** compose_inv_S2 *)
 lemma tr_compose_inv_succ_dx (f2) (f1):
       ∀f,p2,p1,p. (p2⨮f2)∘(↑p1⨮f1) = p⨮f →
-      ∧∧ f2@❨p1❩+p2 = p & f2∘(p1⨮f1) = f2@❨p1❩⨮f.
+      ∧∧ f2@⧣❨p1❩+p2 = p & f2∘(p1⨮f1) = f2@⧣❨p1❩⨮f.
 #f2 #f1 #f #p2 #p1 #p
 <tr_compose_unfold #H destruct
 >nsucc_inj <stream_tls_swap
index c7f41134f666a7159cea49e7d9f37e7875c2a91e..ba3915a973cb55a55a976a80c2336b6f1bc7cd9c 100644 (file)
@@ -44,7 +44,7 @@ include "ground/relocation/tr_pap.ma".
 (*** after_apply *)
 lemma tr_after_pap:
       ∀p1,f2,f1,f. 𝐭❨⇂*[ninj p1]f2❩ ⊚ 𝐭❨f1❩ ≘ 𝐭❨f❩ →
-      (𝐭❨f2❩) ⊚ 𝐭❨p1⨮f1❩ ≘ 𝐭❨f2@❨p1❩⨮f❩.
+      (𝐭❨f2❩) ⊚ 𝐭❨p1⨮f1❩ ≘ 𝐭❨f2@⧣❨p1❩⨮f❩.
 #p1 elim p1 -p1
 [ * /2 width=1 by tr_after_push_dx/
 | #p1 #IH * #p2 #f2 >nsucc_inj <stream_tls_swap
@@ -113,7 +113,7 @@ lemma after_inv_total: ∀f2,f1,f. f2 ⊚ f1 ≘ f → f2 ∘ f1 ≐ f.
 
 (* Forward lemmas on after (specific) *****************************************)
 
-lemma after_fwd_hd: ∀f2,f1,f,p1,p. f2 ⊚ p1⨮f1 ≘ p⨮f → f2@❨p1❩ = p.
+lemma after_fwd_hd: ∀f2,f1,f,p1,p. f2 ⊚ p1⨮f1 ≘ p⨮f → f2@⧣❨p1❩ = p.
 #f2 #f1 #f #p1 #p #H lapply (gr_after_des_pat ? p1 (𝟏) … H) -H [4:|*: // ]
 /3 width=2 by at_inv_O1, sym_eq/
 qed-.
@@ -128,6 +128,6 @@ lemma after_fwd_tls: ∀f,f1,p1,f2,p2,p. p2⨮f2 ⊚ p1⨮f1 ≘ p⨮f →
 qed-.
 
 lemma after_inv_apply: ∀f2,f1,f,p2,p1,p. p2⨮f2 ⊚ p1⨮f1 ≘ p⨮f →
-                       (p2⨮f2)@❨p1❩ = p ∧ (⫰*[↓p1]f2) ⊚ f1 ≘ f.
+                       (p2⨮f2)@⧣❨p1❩ = p ∧ (⫰*[↓p1]f2) ⊚ f1 ≘ f.
 /3 width=3 by after_fwd_tls, after_fwd_hd, conj/ qed-.
 
index 97ffc0d309fde18a45580e6c654fedc96e5e2503..7854b2a69a6323058937fdf2fa9b1908c5b83ccc 100644 (file)
@@ -21,7 +21,7 @@ include "ground/relocation/tr_pap_tls.ma".
 
 (*** compose_apply *)
 lemma tr_compose_pap (i) (f1) (f2):
-      f2@❨f1@❨i❩❩ = (f2∘f1)@❨i❩.
+      f2@⧣❨f1@⧣❨i❩❩ = (f2∘f1)@⧣❨i❩.
 #i elim i -i
 [ * #p1 #f1 #f2
   <tr_compose_unfold <tr_pap_unit <tr_pap_unit //
index acc891d4bf1e1158c25e061ef4d8c0b1b4c01393..ec92283789ce8f9b08ebbd383b7c68cf82cf6461 100644 (file)
@@ -61,7 +61,7 @@ qed-.
 (*** compose_inv_S1 *)
 lemma tr_compose_inv_next_sn (f2) (f1):
       ∀f,p1,p. (↑f2)∘(p1⨮f1) = p⨮f →
-      ∧∧ ↑(f2@❨p1❩) = p & f2∘(p1⨮f1) = f2@❨p1❩⨮f.
+      ∧∧ ↑(f2@⧣❨p1❩) = p & f2∘(p1⨮f1) = f2@⧣❨p1❩⨮f.
 #f2 #f1 #f #p1 #p
 <tr_compose_unfold #H destruct
 /2 width=1 by conj/
index 2ff52deecfe9f57e9bbb3184979986894b95c460..7d678a7f304117e6fc996f224a1fe8bc8f9967da 100644 (file)
@@ -22,7 +22,7 @@ include "ground/arith/nat_rplus_pplus.ma".
 (* Advanced constructions with stream_tls ***********************************)
 
 lemma tr_compose_tls (p) (f1) (f2):
-      (⇂*[f1@❨p❩]f2)∘(⇂*[p]f1) = ⇂*[p](f2∘f1).
+      (⇂*[f1@⧣❨p❩]f2)∘(⇂*[p]f1) = ⇂*[p](f2∘f1).
 #p elim p -p [| #p #IH ] * #q1 #f1 #f2 //
 <tr_compose_unfold <tr_pap_succ
 >nsucc_inj <stream_tls_succ_lcons <stream_tls_succ_lcons
index 9a406ba8c920086e8e963d86bd823c4e6cec6825..2deb5bfa04b06f2a80aaeb70fa2bd8baa916627e 100644 (file)
@@ -20,7 +20,7 @@ include "ground/relocation/tr_id_pushs.ma".
 (* Coonstructions with tr_pap ***********************************************)
 
 lemma tr_id_pap (p):
-      p = 𝐢@❨p❩.
+      p = 𝐢@⧣❨p❩.
 #p >(tr_pushs_id p)
 /2 width=1 by tr_pap_pushs_le/
 qed.
index ac2d3fb385d52e8977f16aa0872c51fbd98f7ab2..670dbd8ca85cce480c69ae016636bba47d57eab3 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "ground/notation/functions/apply_2.ma".
+include "ground/notation/functions/atsharp_2.ma".
 include "ground/arith/pnat_plus.ma".
 include "ground/relocation/tr_map.ma".
 
@@ -29,16 +29,16 @@ defined.
 
 interpretation
   "functional positive application (total relocation maps)"
-  'Apply f i = (tr_pap i f).
+  'AtSharp f i = (tr_pap i f).
 
 (* Basic constructions ******************************************************)
 
 (*** apply_O1 *)
 lemma tr_pap_unit (f):
-      ∀p. p = (p⨮f)@❨𝟏❩.
+      ∀p. p = (p⨮f)@⧣❨𝟏❩.
 // qed.
 
 (*** apply_S1 *)
 lemma tr_pap_succ (f):
-      ∀p,i. f@❨i❩+p = (p⨮f)@❨↑i❩.
+      ∀p,i. f@⧣❨i❩+p = (p⨮f)@⧣❨↑i❩.
 // qed.
index 28a5af2642aa42025c7a20d1f22a34291bf05133..42d83888241c60b92640f3b6558c85939aa4b026 100644 (file)
@@ -21,7 +21,7 @@ include "ground/relocation/tr_pap.ma".
 
 (*** apply_eq_repl *)
 theorem tr_pap_eq_repl (i):
-        stream_eq_repl … (λf1,f2. f1@❨i❩ = f2@❨i❩).
+        stream_eq_repl … (λf1,f2. f1@⧣❨i❩ = f2@⧣❨i❩).
 #i elim i -i [2: #i #IH ] * #p1 #f1 * #p2 #f2 #H
 elim (stream_eq_inv_cons_bi … H) -H [1,8: |*: // ] #Hp #Hf //
 <tr_pap_succ <tr_pap_succ /3 width=1 by eq_f2/
@@ -30,7 +30,7 @@ qed.
 (* Main inversions with stream_eq *******************************************)
 
 corec theorem nstream_eq_inv_ext:
-              ∀f1,f2. (∀i. f1@❨i❩ = f2@❨i❩) → f1 ≗ f2.
+              ∀f1,f2. (∀i. f1@⧣❨i❩ = f2@⧣❨i❩) → f1 ≗ f2.
 * #p1 #f1 * #p2 #f2 #Hf @stream_eq_cons
 [ @(Hf (𝟏))
 | @nstream_eq_inv_ext -nstream_eq_inv_ext #i
index c3cacbbd493457421174fc3d189b578489dff511..03a008c9640194a3ff4ff23a6886d3ffb733f109 100644 (file)
@@ -20,5 +20,5 @@ include "ground/relocation/tr_pap_pat.ma".
 
 (*** apply_inj *)
 theorem tr_pap_inj (f):
-        ∀i1,i2,j. f@❨i1❩ = j → f@❨i2❩ = j → i1 = i2.
+        ∀i1,i2,j. f@⧣❨i1❩ = j → f@⧣❨i2❩ = j → i1 = i2.
 /2 width=4 by pr_pat_inj/ qed-.
index 90dd95a77c2e421ffc016e9aec4dc1e7ad0dc7bd..6e5d0c6e6bd4757fa4db552dad214a6d123fa0c1 100644 (file)
@@ -21,7 +21,7 @@ include "ground/relocation/tr_pap.ma".
 (* Constructions with pr_pat ***********************************************)
 
 (*** at_total *)
-lemma tr_pat_total: ∀i1,f. @❨i1,𝐭❨f❩❩ ≘ f@❨i1❩.
+lemma tr_pat_total: ∀i1,f. @⧣❨i1,𝐭❨f❩❩ ≘ f@⧣❨i1❩.
 #i1 elim i1 -i1
 [ * // | #i #IH * /3 width=1 by tr_pat_succ_sn/ ]
 qed.
@@ -30,5 +30,5 @@ qed.
 
 (*** at_inv_total *)
 lemma tr_pat_inv_total (f):
-      ∀i1,i2. @❨i1, 𝐭❨f❩❩ ≘ i2 → f@❨i1❩ = i2.
+      ∀i1,i2. @⧣❨i1, 𝐭❨f❩❩ ≘ i2 → f@⧣❨i1❩ = i2.
 /2 width=6 by pr_pat_mono/ qed-.
index ce4a0aa3229524ca1dd505e53dc7840538f5bcb7..09b342d3d16c7dce2c197570434576b1a615dd9d 100644 (file)
@@ -20,13 +20,13 @@ include "ground/relocation/tr_pap.ma".
 (* Constructions with tr_push ***********************************************)
 
 lemma tr_pap_push (f):
-      ∀i. ↑(f@❨i❩) = (⫯f)@❨↑i❩.
+      ∀i. ↑(f@⧣❨i❩) = (⫯f)@⧣❨↑i❩.
 // qed.
 
 (* Constructions with tr_next ***********************************************)
 
 (*** apply_S2 *)
 lemma tr_pap_next (f):
-      ∀i. ↑(f@❨i❩) = (↑f)@❨i❩.
+      ∀i. ↑(f@⧣❨i❩) = (↑f)@⧣❨i❩.
 * #p #f * //
 qed.
index 6fe65c8a235a2622407579d295aec7c08291df2e..5029eef3e481bbec2e7bd851d2682538f2e42518 100644 (file)
@@ -21,7 +21,7 @@ include "ground/relocation/tr_pap_pn.ma".
 (* Constructions with tr_pushs **********************************************)
 
 lemma tr_pap_pushs_le (n) (p) (f):
-      p < ↑n → p = (⫯*[n]f)@❨p❩.
+      p < ↑n → p = (⫯*[n]f)@⧣❨p❩.
 #n @(nat_ind_succ … n) -n
 [ #p #f #H0
   elim (plt_inv_unit_dx … H0)
index 678792ff543c447bcec1b8442471e27a9254821c..da8ea1519527fc2299f606b796ea0a4ae5b1496c 100644 (file)
@@ -20,7 +20,7 @@ include "ground/lib/stream_tls.ma".
 (* Constructions with stream_tls ********************************************)
 
 lemma tr_pap_plus (p1) (p2) (f):
-      (⇂*[ninj p2]f)@❨p1❩+f@❨p2❩ = f@❨p1+p2❩.
+      (⇂*[ninj p2]f)@⧣❨p1❩+f@⧣❨p2❩ = f@⧣❨p1+p2❩.
 #p1 #p2 elim p2 -p2
 [ * #p #f //
 | #i #IH * #p #f
index 208d9e7c0b37c665340e2ee9ab27d6ef76917bde..73b6dca66b6b85d3de7157b919295d62a3591d20 100644 (file)
@@ -21,18 +21,18 @@ include "ground/relocation/tr_map.ma".
 (* Constructions with pr_pat ***********************************************)
 
 (*** at_O1 *)
-lemma tr_pat_unit_sn: ∀i2,f. @❨𝟏,𝐭❨i2⨮f❩❩ ≘ i2.
+lemma tr_pat_unit_sn: ∀i2,f. @⧣❨𝟏,𝐭❨i2⨮f❩❩ ≘ i2.
 #i2 elim i2 -i2 /2 width=5 by pr_pat_refl, pr_pat_next/
 qed.
 
 (*** at_S1 *)
-lemma tr_pat_succ_sn: ∀p,f,i1,i2. @❨i1, 𝐭❨f❩❩ ≘ i2 → @❨↑i1, 𝐭❨p⨮f❩❩ ≘ i2+p.
+lemma tr_pat_succ_sn: ∀p,f,i1,i2. @⧣❨i1, 𝐭❨f❩❩ ≘ i2 → @⧣❨↑i1, 𝐭❨p⨮f❩❩ ≘ i2+p.
 #p elim p -p /3 width=7 by pr_pat_push, pr_pat_next/
 qed.
 
 (*** at_plus2 *)
 lemma tr_pat_plus_dx (f):
-      ∀i1,i,p,q. @❨i1, 𝐭❨p⨮f❩❩ ≘ i → @❨i1, 𝐭❨(p+q)⨮f❩❩ ≘ i+q.
+      ∀i1,i,p,q. @⧣❨i1, 𝐭❨p⨮f❩❩ ≘ i → @⧣❨i1, 𝐭❨(p+q)⨮f❩❩ ≘ i+q.
 #f #i1 #i #p #q #H elim q -q
 /2 width=5 by pr_pat_next/
 qed.
@@ -41,7 +41,7 @@ qed.
 
 (*** at_inv_O1 *)
 lemma tr_pat_inv_unit_sn (f):
-      ∀p,i2. @❨𝟏, 𝐭❨p⨮f❩❩ ≘ i2 → p = i2.
+      ∀p,i2. @⧣❨𝟏, 𝐭❨p⨮f❩❩ ≘ i2 → p = i2.
 #f #p elim p -p /2 width=6 by pr_pat_inv_unit_push/
 #p #IH #i2 #H elim (pr_pat_inv_next … H) -H [|*: // ]
 #j2 #Hj * -i2 /3 width=1 by eq_f/
@@ -49,8 +49,8 @@ qed-.
 
 (*** at_inv_S1 *)
 lemma tr_pat_inv_succ_sn (f):
-      ∀p,j1,i2. @❨↑j1, 𝐭❨p⨮f❩❩ ≘ i2 →
-      ∃∃j2. @❨j1, 𝐭❨f❩❩ ≘ j2 & j2+p = i2.
+      ∀p,j1,i2. @⧣❨↑j1, 𝐭❨p⨮f❩❩ ≘ i2 →
+      ∃∃j2. @⧣❨j1, 𝐭❨f❩❩ ≘ j2 & j2+p = i2.
 #f #p elim p -p /2 width=5 by pr_pat_inv_succ_push/
 #p #IH #j1 #i2 #H elim (pr_pat_inv_next … H) -H [|*: // ]
 #j2 #Hj * -i2 elim (IH … Hj) -IH -Hj
@@ -62,7 +62,7 @@ qed-.
 (* Note: a better conclusion would be: "i1 + ↓p ≤ i2" *)
 (*** at_increasing_plus *)
 lemma tr_pat_increasing_plus (f):
-      ∀p,i1,i2. @❨i1, 𝐭❨p⨮f❩❩ ≘ i2 → i1 + p ≤ ↑i2.
+      ∀p,i1,i2. @⧣❨i1, 𝐭❨p⨮f❩❩ ≘ i2 → i1 + p ≤ ↑i2.
 #f #p *
 [ #i2 #H <(tr_pat_inv_unit_sn … H) -i2 //
 | #i1 #i2 #H elim (tr_pat_inv_succ_sn … H) -H
@@ -73,7 +73,7 @@ qed-.
 
 (*** at_fwd_id *)
 lemma tr_pat_des_id (f):
-      ∀p,i. @❨i, 𝐭❨p⨮f❩❩ ≘ i → 𝟏 = p.
+      ∀p,i. @⧣❨i, 𝐭❨p⨮f❩❩ ≘ i → 𝟏 = p.
 #f #p #i #H lapply (pr_pat_des_id … H) -H #H
 elim (eq_inv_pr_push_cons … H) -H //
 qed-.
index d278582f214984c06fb1f6579f15331151c28bce..92315b6a6526c1a605ea0ffae62fd68403f85d65 100644 (file)
@@ -51,7 +51,7 @@ qed.
 (* Main constructions with tr_compose and tr_tls ****************************)
 
 theorem tr_compose_uni_dx (f) (p):
-        (𝐮❨f@❨p❩❩∘⇂*[p]f) ≗ f∘𝐮❨p❩.
+        (𝐮❨f@⧣❨p❩❩∘⇂*[p]f) ≗ f∘𝐮❨p❩.
 #f #p
 @nstream_eq_inv_ext #q
 <tr_compose_pap <tr_compose_pap
index aa99f8dc37d71baa1be71d6ce6dc634d6d66f10d..2a47c4ba87e59cc5c898eb597b633b4f1227a04d 100644 (file)
@@ -21,11 +21,11 @@ include "ground/arith/nat_rplus_succ.ma".
 (* Coonstructions with tr_pap ***********************************************)
 
 lemma tr_uni_pap_unit (n):
-      ↑n = 𝐮❨n❩@❨𝟏❩.
+      ↑n = 𝐮❨n❩@⧣❨𝟏❩.
 // qed.
 
 lemma tr_uni_pap (n) (p):
-      p + n = 𝐮❨n❩@❨p❩.
+      p + n = 𝐮❨n❩@⧣❨p❩.
 #n @(nat_ind_succ … n) -n //
 #n #IH * [| #p ] //
 qed.
index 9ee7ad91a158eacbe6edf238c9ffeb3c7af1ef40..9fed47266cd5eb7ba39dc1bd477eb20c89280916 100644 (file)
@@ -22,7 +22,7 @@ table {
   class "green"
   [ { "relocation maps" * } {
       [ { "finite relocation with pairs" * } {
-          [ "fr2_nat ( @❨?,?❩ ≘ ? )" "fr2_nat_nat" * ]
+          [ "fr2_nat ( @⧣❨?,?❩ ≘ ? )" "fr2_nat_nat" * ]
           [ "fr2_minus ( ? ▭ ? ≘ ? )" * ]
           [ "fr2_append ( ?●? )" * ]
           [ "fr2_plus ( ?+? )" * ]
@@ -33,7 +33,7 @@ table {
           [ "tr_uni ( 𝐮❨?❩ )" "tr_uni_eq" "tr_uni_hdtl" "tr_uni_tls" "tr_uni_pap" "tr_uni_compose" * ]
           [ "tr_id ( 𝐢 ) " "tr_id_hdtl" "tr_id_pushs" "tr_id_tls" "tr_id_pap" "tr_id_compose" * ]
           [ "tr_compose ( ?∘? )" "tr_compose_eq" "tr_compose_tls" "tr_compose_pn" "tr_compose_pushs" "tr_compose_pap" "tr_compose_compose" * ]
-          [ "tr_pap ( ?@❨?❩ )" "tr_pap_eq" "tr_pap_tls" "tr_pap_pat" "tr_pap_pn" "tr_pap_pushs" "tr_pap_pap" * ]
+          [ "tr_pap ( ?@⧣❨?❩ )" "tr_pap_eq" "tr_pap_tls" "tr_pap_pat" "tr_pap_pn" "tr_pap_pushs" "tr_pap_pap" * ]
           [ "tr_pushs ( ⫯*[?]? )" * ]
           [ "tr_pn ( ⫯? ) ( ↑? )" "tr_pn_eq" "tr_pn_hdtl" "tr_pn_tls" * ]
           [ "tr_map ( 𝐭❨?❩ )" "tr_eq" "tr_nexts" "tr_pat" "tr_ist" * ]
@@ -53,7 +53,7 @@ table {
           [ "pr_isu ( 𝐔❨?❩ )" "pr_isu_tl" "pr_isu_uni" * ]
           [ "pr_isi ( 𝐈❨?❩ )" "pr_isi_eq" "pr_isi_tl" "pr_isi_pushs" "pr_isi_tls" "pr_isi_id" "pr_isi_uni" "pr_isi_pat" "pr_isi_nat" * ]
           [ "pr_nat ( @↑❨?,?❩ ≘ ? )" "pr_nat_uni" "pr_nat_basic" "pr_nat_nat" * ]
-          [ "pr_pat ( @❨?,?❩ ≘ ? )" "pr_pat_lt" "pr_pat_eq" "pr_pat_tls" "pr_pat_id" "pr_pat_uni" "pr_pat_basic" "pr_pat_pat" "pr_pat_pat_id" * ]
+          [ "pr_pat ( @⧣❨?,?❩ ≘ ? )" "pr_pat_lt" "pr_pat_eq" "pr_pat_tls" "pr_pat_id" "pr_pat_uni" "pr_pat_basic" "pr_pat_pat" "pr_pat_pat_id" * ]
           [ "pr_basic ( 𝐛❨?,?❩ )" * ]
           [ "pr_uni ( 𝐮❨?❩ )" "pr_uni_eq" * ]
           [ "pr_id ( 𝐢 ) " "pr_id_eq" * ]
@@ -71,10 +71,10 @@ table {
             "" "" "nstream_isid" "nstream_id ( 𝐢 )" ""
             "" "" "" ""
             "" "" "" "nstream_sor"
-            "" "nstream_istot ( ?@❨?❩ )" "nstream_after ( ? ∘ ? )" "nstream_coafter ( ? ~∘ ? )"
+            "" "nstream_istot ( ?@⧣❨?❩ )" "nstream_after ( ? ∘ ? )" "nstream_coafter ( ? ~∘ ? )"
             "nstream_basic" ""
           * ]
-          [ "trace ( ∥?∥ )" "trace_at ( @❨?,?❩ ≘ ? )" "trace_after ( ? ⊚ ? ≘ ? )" "trace_isid ( 𝐈❨?❩ )" "trace_isun ( 𝐔❨?❩ )"
+          [ "trace ( ∥?∥ )" "trace_at ( @⧣❨?,?❩ ≘ ? )" "trace_after ( ? ⊚ ? ≘ ? )" "trace_isid ( 𝐈❨?❩ )" "trace_isun ( 𝐔❨?❩ )"
             "trace_sle ( ? ⊆ ? )" "trace_sor ( ? ⋓ ? ≘ ? )" "trace_snot ( ∁ ? )"
           * ]
         }
index bc55b84ce8e350d3634d8640677f0ed45e003bef..cdc06111cecf6ae13e7008c449f1b0d7d2c2699f 100644 (file)
@@ -418,12 +418,12 @@ qed-.
 
 (* Properties with application **********************************************)
 
-lemma drops_tls_at: ∀f,i1,i2. @❨i1,f❩ ≘ i2 →
+lemma drops_tls_at: ∀f,i1,i2. @⧣❨i1,f❩ ≘ i2 →
                     ∀b,L1,L2. ⇩*[b,⫰*[i2]f] L1 ≘ L2 →
                     ⇩*[b,⫯⫰*[↑i2]f] L1 ≘ L2.
 /3 width=3 by drops_eq_repl_fwd, pr_pat_inv_succ_dx_tls/ qed-.
 
-lemma drops_split_trans_bind2: ∀b,f,I,L,K0. ⇩*[b,f] L ≘ K0.ⓘ[I] → ∀i. @❨O,f❩ ≘ i →
+lemma drops_split_trans_bind2: ∀b,f,I,L,K0. ⇩*[b,f] L ≘ K0.ⓘ[I] → ∀i. @⧣❨O,f❩ ≘ i →
                                ∃∃J,K. ⇩[i]L ≘ K.ⓘ[J] & ⇩*[b,⫰*[↑i]f] K ≘ K0 & ⇧*[⫰*[↑i]f] I ≘ J.
 #b #f #I #L #K0 #H #i #Hf
 elim (drops_split_trans … H) -H [ |5: @(pr_after_nat_uni … Hf) |2,3: skip ] /2 width=1 by pr_after_isi_dx/ #Y #HLY #H
index 1ec7f4878a81bbdb74bce1dead346e6e11e70d1a..88f58f4eadb2e03fd7aa25ce751d8824dd67b303 100644 (file)
@@ -1503,6 +1503,7 @@ let load_predefined_virtuals () =
 ;;
 
 let predefined_classes = [
+ ["@"; "@"; ];
  ["*"; "∗"; ];
  ["/"; "⧸"; ];
  ["&"; "⅋"; ];