(**************************************************************************) (* ___ *) (* ||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).