(**************************************************************************) (* ___ *) (* ||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 "delayed_updating/unwind3/unwind.ma". include "delayed_updating/relocation/sbr_pap_id.ma". include "delayed_updating/relocation/sbr_pap_eq.ma". include "delayed_updating/relocation/sbr_push_eq.ma". include "ground/relocation/tr_pn_eq.ma". (* include "ground/lib/stream_tls.ma". *) (* UNWIND FOR PATH **********************************************************) definition unwind_exteq (A): relation2 (unwind_continuation A) (unwind_continuation A) ≝ λk1,k2. ∀f1,f2,p. f1 ≗ f2 → k1 f1 p = k2 f2 p. interpretation "extensional equivalence (unwind continuation)" 'RingEq A k1 k2 = (unwind_exteq A k1 k2). (* Constructions with unwind_exteq ******************************************) lemma unwind_eq_repl (A) (p) (k1) (k2): k1 ≗{A} k2 → stream_eq_repl … (λf1,f2. ▼❨k1, f1, p❩ = ▼❨k2, f2, p❩). #A #p @(path_ind_unwind … p) -p [| #n #IH | #n #l0 #q #IH |*: #q #IH ] #k1 #k2 #Hk #f1 #f2 #Hf [ unwind_lcons_alt // >unwind_append_rcons_sn // unwind_lcons_alt >unwind_append_rcons_sn // unwind_lcons_alt >unwind_append_rcons_sn // unwind_lcons_alt