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