(**************************************************************************) (* ___ *) (* ||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/unwind2/unwind_prototerm_eq.ma". include "delayed_updating/syntax/prototerm_constructors.ma". (* UNWIND FOR PROTOTERM *****************************************************) lemma unwind_iref_after_sn (f) (t:prototerm) (n:pnat): ā–¼[fāˆ˜š®āØnā©]t āŠ† ā–¼[f](š›—n.t). #f #t #n #p * #q #Hq #H0 destruct @(ex2_intro ā€¦ (š—±nā——š—ŗā——q)) /2 width=1 by in_comp_iref/ qed-. lemma unwind_iref_after_dx (f) (t) (n:pnat): ā–¼[f](š›—n.t) āŠ† ā–¼[fāˆ˜š®āØnā©]t. #f #t #n #p * #q #Hq #H0 destruct elim (in_comp_inv_iref ā€¦ Hq) -Hq #p #Hp #Ht destruct /2 width=1 by in_comp_unwind_bi/ qed-. lemma unwind_iref_after (f) (t) (n:pnat): ā–¼[fāˆ˜š®āØnā©]t ā‡” ā–¼[f](š›—n.t). /3 width=1 by conj, unwind_iref_after_sn, unwind_iref_after_dx/ qed. lemma unwind_iref (f) (t) (n:pnat): ā–¼[f]ā–¼[š®āØnā©]t ā‡” ā–¼[f](š›—n.t). /3 width=3 by unwind_term_after, subset_eq_trans/ qed.