(* CONSTRUCTORS FOR PRETERM *************************************************)
definition preterm_node_0 (l): preterm ā
- Ī»p. l;š = p.
+ Ī»p. lāš = p.
definition preterm_node_1 (l): preterm ā preterm ā
- Ī»t,p. āāq. q ϵ⬦ t & l;q = p.
+ Ī»t,p. āāq. q ϵ t & lāq = p.
definition preterm_node_2 (l1) (l2): preterm ā preterm ā preterm ā
λt1,t2,p.
- āØāØ āāq. q ϵ⬦ t1 & l1;q = p
- | āāq. q ϵ⬦ t2 & l2;q = p.
+ āØāØ āāq. q ϵ t1 & l1āq = p
+ | āāq. q ϵ t2 & l2āq = p.
interpretation
"outer variable reference by depth (preterm)"
(* Basic Inversions *********************************************************)
lemma preterm_in_root_inv_lcons_oref:
- āp,l,n. l;p ϵⵠ#n ā
- ā§ā§ š±āØnā© = l & š = p.
+ āp,l,n. lāp ϵ āµ#n ā
+ ā§ā§ š±n = l & š = p.
#p #l #n * #q
<list_append_lcons_sn #H0 destruct -H0
elim (eq_inv_list_empty_append ⦠e0) -e0 #H0 #_
qed-.
lemma preterm_in_root_inv_lcons_iref:
- āt,p,l,n. l;p ϵⵠšn.t ā
- ā§ā§ š±āØnā© = l & p ϵⵠt.
+ āt,p,l,n. lāp ϵ āµšn.t ā
+ ā§ā§ š±n = l & p ϵ āµt.
#t #p #l #n * #q
<list_append_lcons_sn * #r #Hr #H0 destruct
/3 width=2 by ex_intro, conj/
qed-.
lemma preterm_in_root_inv_lcons_abst:
- āt,p,l. l;p ϵⵠš.t ā
- ā§ā§ š = l & p ϵⵠt.
+ āt,p,l. lāp ϵ āµš.t ā
+ ā§ā§ š = l & p ϵ āµt.
#t #p #l * #q
<list_append_lcons_sn * #r #Hr #H0 destruct
/3 width=2 by ex_intro, conj/
qed-.
lemma preterm_in_root_inv_lcons_appl:
- āu,t,p,l. l;p ϵⵠ@u.t ā
- āØāØ ā§ā§ š¦ = l & p ϵⵠu
- | ā§ā§ š = l & p ϵⵠt.
+ āu,t,p,l. lāp ϵ āµ@u.t ā
+ āØāØ ā§ā§ š¦ = l & p ϵ āµu
+ | ā§ā§ š = l & p ϵ āµt.
#u #t #p #l * #q
<list_append_lcons_sn * * #r #Hr #H0 destruct
/4 width=2 by ex_intro, or_introl, or_intror, conj/