]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/apps_2/etc/functional/rtm_step.etc
update in static_2 and app_2
[helm.git] / matita / matita / contribs / lambdadelta / apps_2 / etc / functional / rtm_step.etc
diff --git a/matita/matita/contribs/lambdadelta/apps_2/etc/functional/rtm_step.etc b/matita/matita/contribs/lambdadelta/apps_2/etc/functional/rtm_step.etc
new file mode 100644 (file)
index 0000000..1b456b5
--- /dev/null
@@ -0,0 +1,57 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "apps_2/functional/rtm.ma".
+
+(* REDUCTION AND TYPE MACHINE ***********************************************)
+
+(* transitions *)
+inductive rtm_step: relation rtm ≝
+| rtm_drop : ∀G,u,E,I,t,D,V,S,i.
+              rtm_step (mk_rtm G u (E. ④{I} {t, D, V}) S (#(i + 1)))
+                       (mk_rtm G u E S (#i))
+| rtm_ldelta: ∀G,u,E,t,D,V,S.
+              rtm_step (mk_rtm G u (E. ④{Abbr} {t, D, V}) S (#0))
+                       (mk_rtm G u D S V)
+| rtm_ltype : ∀G,u,E,t,D,V,S.
+              rtm_step (mk_rtm G u (E. ④{Abst} {t, D, V}) S (#0))
+                       (mk_rtm G u D S V)
+| rtm_gdrop : ∀G,I,V,u,E,S,p. p < |G| →
+              rtm_step (mk_rtm (G. ⓑ{I} V) u E S (§p))
+                       (mk_rtm G u E S (§p))
+| rtm_gdelta: ∀G,V,u,E,S,p. p = |G| →
+              rtm_step (mk_rtm (G. ⓓV) u E S (§p))
+                       (mk_rtm G u E S V)
+| rtm_gtype : ∀G,V,u,E,S,p. p = |G| →
+              rtm_step (mk_rtm (G. ⓛV) u E S (§p))
+                       (mk_rtm G u E S V)
+| rtm_eps   : ∀G,u,E,S,W,T.
+              rtm_step (mk_rtm G u E S (ⓝW. T))
+                       (mk_rtm G u E S T)
+| rtm_appl  : ∀G,u,E,S,V,T.
+              rtm_step (mk_rtm G u E S (ⓐV. T))
+                       (mk_rtm G u E ({E, V} @ S) T)
+| rtm_beta  : ∀G,u,E,D,V,S,W,T.
+              rtm_step (mk_rtm G u E ({D, V} @ S) (+ⓛW. T))
+                       (mk_rtm G u (E. ④{Abbr} {u, D, V}) S T)
+| rtm_push  : ∀G,u,E,W,T.
+              rtm_step (mk_rtm G u E (Ⓔ) (+ⓛW. T))
+                       (mk_rtm G (u + 1) (E. ④{Abst} {u, E, W}) (Ⓔ) T)
+| rtm_theta : ∀G,u,E,S,V,T.
+              rtm_step (mk_rtm G u E S (+ⓓV. T))
+                       (mk_rtm G u (E. ④{Abbr} {u, E, V}) S T)
+.
+
+interpretation "sequential reduction (RTM)"
+   'SRed O1 O2 = (rtm_step O1 O2).