diff --git a/src/thue_morse3.v b/src/thue_morse3.v index 4f4d34e..931fe0f 100644 --- a/src/thue_morse3.v +++ b/src/thue_morse3.v @@ -1357,6 +1357,30 @@ Proof. Qed. +Theorem tm_step_palindromic_length_12_n : + forall (n : nat) (hd a tl : list bool), + tm_step n = hd ++ a ++ (rev a) ++ tl + -> length a > 6 + -> 1 < n. +Proof. + intros n hd a tl. intros H W. + + assert (length (tm_step n) <= length (tm_step n)). + apply Nat.le_refl. rewrite H in H0 at 1. + rewrite app_length in H0. rewrite app_length in H0. + rewrite Nat.add_comm in H0. rewrite <- Nat.add_assoc in H0. + rewrite <- Nat.add_0_r in H0. apply Nat.le_le_add_le in H0. + rewrite tm_size_power2 in H0. destruct n. destruct a. + inversion W. destruct a. inversion W. inversion H2. + destruct a. inversion W. inversion H2. inversion H4. + inversion H0. inversion H2. destruct a. inversion W. + destruct a. inversion W. inversion H2. destruct a. inversion W. + inversion H2. inversion H4. destruct n. inversion H0. inversion H2. + inversion H4. rewrite <- Nat.succ_lt_mono. apply Nat.lt_0_succ. + apply le_0_n. +Qed. + + Theorem tm_step_palindromic_length_12_prefix : forall (n : nat) (hd a tl : list bool), tm_step n = hd ++ a ++ (rev a) ++ tl @@ -1373,9 +1397,20 @@ Proof. assumption. easy. assumption. Qed. +Theorem tm_step_palindromic_length_12_prefix2 : + forall (n : nat) (hd a tl : list bool), + tm_step n = hd ++ a ++ (rev a) ++ tl + -> length a > 6 + -> length a mod 4 = 0 -> length tl mod 4 = 0. +Proof. + intros n hd a tl. intros H I J. + assert (K: length hd mod 4 = 0). + generalize J. generalize I. generalize H. + apply tm_step_palindromic_length_12_prefix. + assert (L: length (hd ++ a ++ rev a ++ tl) mod 4 = 0). + rewrite <- H. rewrite tm_size_power2. - - +Admitted. Lemma tm_step_palindromic_even_morphism1 : forall (n : nat) (hd a tl : list bool), @@ -1484,7 +1519,9 @@ Lemma tm_step_palindromic_even_morphism2 : tm_step n = hd ++ a ++ (rev a) ++ tl -> length a > 6 -> (length a) mod 4 = 0 - -> 11 = 42. + -> hd = tm_morphism (tm_morphism (firstn (length hd / 4) + (tm_step (pred (pred n))))) + /\ 11 = 42. Proof. intros n hd a tl. intros H W J0. @@ -1493,19 +1530,9 @@ Proof. apply Nat.lt_succ_l in W. apply Nat.lt_succ_l in W. apply Nat.lt_succ_l in W. assumption. - assert (V: 1 < n). assert (length (tm_step n) <= length (tm_step n)). - apply Nat.le_refl. rewrite H in H0 at 1. - rewrite app_length in H0. rewrite app_length in H0. - rewrite Nat.add_comm in H0. rewrite <- Nat.add_assoc in H0. - rewrite <- Nat.add_0_r in H0. apply Nat.le_le_add_le in H0. - rewrite tm_size_power2 in H0. destruct n. destruct a. - inversion W. destruct a. inversion W. inversion H2. - destruct a. inversion W. inversion H2. inversion H4. - inversion H0. inversion H2. destruct a. inversion W. - destruct a. inversion W. inversion H2. destruct a. inversion W. - inversion H2. inversion H4. destruct n. inversion H0. inversion H2. - inversion H4. rewrite <- Nat.succ_lt_mono. apply Nat.lt_0_succ. - apply le_0_n. destruct n. inversion V. + assert (V: 1 < n). generalize W. generalize H. + apply tm_step_palindromic_length_12_n. + destruct n. inversion V. assert (J1: length hd mod 4 = 0). generalize J0. generalize W. generalize H. apply tm_step_palindromic_length_12_prefix. @@ -1704,6 +1731,30 @@ Proof. + split. + + rewrite <- pred_Sn. rewrite <- pred_Sn. + rewrite H4 at 1. fold hd'. rewrite H4'. unfold hd'. + rewrite firstn_length_le. rewrite Nat.div2_div. rewrite Nat.div2_div. + rewrite Nat.div_div. reflexivity. easy. easy. + + + + + + + + + + + assert (hd = hd). reflexivity. rewrite H4 in H12 at 2. fold hd' in H12. + rewrite H4' in H12. unfold hd' in H12. + rewrite firstn_length_le in H12. + rewrite Nat.div2_div in H12. + rewrite Nat.div2_div in H12. rewrite Nat.div_div in H12. + replace (2*2) with 4 in H12. + + Admitted.