X-Git-Url: http://matita.cs.unibo.it/gitweb/?p=helm.git;a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fground_2%2Fsteps%2Frtc.ma;h=1e08d2474be31943ed50dcfd6fd1e55c50051768;hp=75960e4cbde202255edf4aee43b63bb6eec66a54;hb=ff612dc35167ec0c145864c9aa8ae5e1ebe20a48;hpb=e31ce850917b3e95f5158a687626c679e551fd25 diff --git a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc.ma b/matita/matita/contribs/lambdadelta/ground_2/steps/rtc.ma index 75960e4cb..1e08d2474 100644 --- a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc.ma +++ b/matita/matita/contribs/lambdadelta/ground_2/steps/rtc.ma @@ -12,38 +12,55 @@ (* *) (**************************************************************************) -include "ground_2/notation/constructors/tuple_4.ma". -include "ground_2/notation/constructors/zerozero_0.ma". -include "ground_2/notation/constructors/zeroone_0.ma". -include "ground_2/notation/constructors/onezero_0.ma". +include "ground_2/notation/functions/tuple_4.ma". +include "ground_2/notation/functions/zerozero_0.ma". +include "ground_2/notation/functions/zeroone_0.ma". +include "ground_2/notation/functions/onezero_0.ma". include "ground_2/lib/arith.ma". (* RT-TRANSITION COUNTER ****************************************************) record rtc: Type[0] ≝ { ri: nat; (* Note: inner r-steps *) - rh: nat; (* Note: head r-steps *) + rs: nat; (* Note: spine r-steps *) ti: nat; (* Note: inner t-steps *) - th: nat (* Note: head t-steps *) + ts: nat (* Note: spine t-steps *) }. interpretation "constructor (rtc)" - 'Tuple ri rh ti th = (mk_rtc ri rh ti th). - -(* Note: for one structural step *) -definition OO: rtc ≝ 〈0, 0, 0, 0〉. + 'Tuple ri rs ti ts = (mk_rtc ri rs ti ts). interpretation "one structural step (rtc)" - 'ZeroZero = (OO). - -(* Note: for one r-step *) -definition UO: rtc ≝ 〈0, 1, 0, 0〉. + 'ZeroZero = (mk_rtc O O O O). interpretation "one r-step (rtc)" - 'OneZero = (UO). - -(* Note: for one t-step *) -definition OU: rtc ≝ 〈0, 0, 0, 1〉. + 'OneZero = (mk_rtc O (S O) O O). interpretation "one t-step (rtc)" - 'ZeroOne = (OU). + 'ZeroOne = (mk_rtc O O O (S O)). + +definition eq_f: relation rtc ≝ λc1,c2. ⊤. + +inductive eq_t: relation rtc ≝ +| eq_t_intro: ∀ri1,ri2,rs1,rs2,ti,ts. + eq_t (〈ri1, rs1, ti, ts〉) (〈ri2, rs2, ti, ts〉) +. + +(* Basic properties *********************************************************) + +lemma eq_t_refl: reflexive … eq_t. +* // qed. + +(* Basic inversion lemmas ***************************************************) + +fact eq_t_inv_dx_aux: ∀x,y. eq_t x y → + ∀ri1,rs1,ti,ts. x = 〈ri1,rs1,ti,ts〉 → + ∃∃ri2,rs2. y = 〈ri2,rs2,ti,ts〉. +#x #y * -x -y +#ri1 #ri #rs1 #rs #ti1 #ts1 #ri2 #rs2 #ti2 #ts2 #H destruct -ri2 -rs2 +/2 width=3 by ex1_2_intro/ +qed-. + +lemma eq_t_inv_dx: ∀ri1,rs1,ti,ts,y. eq_t (〈ri1,rs1,ti,ts〉) y → + ∃∃ri2,rs2. y = 〈ri2,rs2,ti,ts〉. +/2 width=5 by eq_t_inv_dx_aux/ qed-.