(**************************************************************************) (* ___ *) (* ||M|| *) (* ||A|| A project by Andrea Asperti *) (* ||T|| *) (* ||I|| Developers: *) (* ||T|| The HELM team. *) (* ||A|| http://helm.cs.unibo.it *) (* \ / *) (* \ / This file is distributed under the terms of the *) (* v GNU General Public License Version 2 *) (* *) (**************************************************************************) include "ground/notation/functions/upspoon_1.ma". include "ground/lib/stream.ma". include "ground/arith/pnat.ma". (* RELOCATION P-STREAM ******************************************************) definition gr_map: Type[0] ≝ stream pnat. definition gr_push: gr_map → gr_map ≝ λf. 𝟏⨮f. interpretation "push (pstream)" 'UpSpoon f = (gr_push f). definition gr_next: gr_map → gr_map. * #p #f @(↑p⨮f) defined. interpretation "next (pstream)" 'UpArrow f = (gr_next f). (* Basic properties *********************************************************) lemma gr_push_unfold: ∀f. 𝟏⨮f = ⫯f. // qed. lemma gr_next_unfold: ∀f,p. (↑p)⨮f = ↑(p⨮f). // qed. (* Basic inversion lemmas ***************************************************) lemma eq_inv_gr_push_bi: injective ? ? gr_push. #f1 #f2