proposition: Lemma Is_refining_M_product_init_pure:forall alpha n, Is_refining_M (product_init_pure alpha n).
proof: Proof. intros alpha n; revert alpha; induction n; intros [d alpha]; unfold product_init_pure. simpl; apply Is_refining_M_idM. rewrite Streams_addenda.take_S_n; rewrite (Streams_addenda.fold_right_cons product). apply Is_refining_M_product. simpl; destruct d; [apply Is_refining_M_L|apply Is_refining_M_R|apply Is_refining_M_M]. unfold map_reals; rewrite Streams_addenda.map_spelled; simpl; apply (IHn alpha). Qed.
imports: digits QArithSternBrocot(R_addenda) Fourier_solvable_ineqs Fourier Bounded_M