X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Flib%2Fturing%2Fmulti_universal%2FnormalTM.ma;h=28c3920bc576b8f21ca0442fecbfd94b8bf36b7d;hb=632dfd0a57c9951d0efbd769d6f433c4ef68a314;hp=8e3af494a032715a3f6f90affcfd77770549aa9a;hpb=00101d30f0bf914a26ed2ec61a1aa38598b05209;p=helm.git diff --git a/matita/matita/lib/turing/multi_universal/normalTM.ma b/matita/matita/lib/turing/multi_universal/normalTM.ma index 8e3af494a..28c3920bc 100644 --- a/matita/matita/lib/turing/multi_universal/normalTM.ma +++ b/matita/matita/lib/turing/multi_universal/normalTM.ma @@ -12,51 +12,6 @@ include "turing/multi_universal/alphabet.ma". include "turing/mono.ma". -(************************* turning DeqMove into a DeqSet **********************) -definition move_eq ≝ λm1,m2:move. - match m1 with - [R ⇒ match m2 with [R ⇒ true | _ ⇒ false] - |L ⇒ match m2 with [L ⇒ true | _ ⇒ false] - |N ⇒ match m2 with [N ⇒ true | _ ⇒ false]]. - -lemma move_eq_true:∀m1,m2. - move_eq m1 m2 = true ↔ m1 = m2. -* - [* normalize [% #_ % |2,3: % #H destruct ] - |* normalize [1,3: % #H destruct |% #_ % ] - |* normalize [1,2: % #H destruct |% #_ % ] -qed. - -definition DeqMove ≝ mk_DeqSet move move_eq move_eq_true. - -unification hint 0 ≔ ; - X ≟ DeqMove -(* ---------------------------------------- *) ⊢ - move ≡ carr X. - -unification hint 0 ≔ m1,m2; - X ≟ DeqMove -(* ---------------------------------------- *) ⊢ - move_eq m1 m2 ≡ eqb X m1 m2. - - -(************************ turning DeqMove into a FinSet ***********************) -definition move_enum ≝ [L;R;N]. - -lemma move_enum_unique: uniqueb ? [L;R;N] = true. -// qed. - -lemma move_enum_complete: ∀x:move. memb ? x [L;R;N] = true. -* // qed. - -definition FinMove ≝ - mk_FinSet DeqMove [L;R;N] move_enum_unique move_enum_complete. - -unification hint 0 ≔ ; - X ≟ FinMove -(* ---------------------------------------- *) ⊢ - move ≡ FinSetcarr X. - (*************************** normal Turing Machines ***************************) (* A normal turing machine is just an ordinary machine where: @@ -205,6 +160,18 @@ definition low_mv ≝ λm. | N ⇒ null ]. +lemma injective_low_char: injective … low_char. +#c1 #c2 cases c1 cases c2 normalize // + [#b1 #H destruct + |#b1 #H destruct + |#b1 #b2 #H destruct // + ] +qed. + +lemma injective_low_mv: injective … low_mv. +#m1 #m2 cases m1 cases m2 // normalize #H destruct +qed. + (******************************** tuple encoding ******************************) definition tuple_type ≝ λn. (Nat_to n × (option FinBool)) × (Nat_to n × (option FinBool) × move).