(* BY-DEPTH DELAYED (BDD) TERM **********************************************)
inductive bdd: π«β¨pretermβ© β
-| bdd_oref: βn. bdd #n
-| bdd_iref: βt,n. bdd t β bdd πn.t
-| bdd_abst: βt. bdd t β bdd π.t
-| bdd_appl: βu,t. bdd u β bdd t β bdd @u.t
+| bdd_oref: βn. bdd (#n)
+| bdd_iref: βt,n. bdd t β bdd (πn.t)
+| bdd_abst: βt. bdd t β bdd (π.t)
+| bdd_appl: βu,t. bdd u β bdd t β bdd (@u.t)
| bdd_conv: βt1,t2. t1 β t2 β bdd t1 β bdd t2
.
lemma bdd_inv_in_comp_gen:
βt,p. t Ο΅ ππ β p Ο΅ t β
- β¨β¨ ββn. #n β t & π±β¨nβ©;π = p
- | ββu,q,n. u Ο΅ ππ & q Ο΅ u & πn.u β t & π±β¨nβ©;q = p
- | ββu,q. u Ο΅ ππ & q Ο΅ u & π.u β t & π;q = p
- | ββv,u,q. v Ο΅ ππ & u Ο΅ ππ & q Ο΅ u & @v.u β t & π;q = p
- | ββv,u,q. v Ο΅ ππ & u Ο΅ ππ & q Ο΅ v & @v.u β t & π¦;q = p
+ β¨β¨ ββn. #n β t & π±β¨nβ©βπ = p
+ | ββu,q,n. u Ο΅ ππ & q Ο΅ u & πn.u β t & π±β¨nβ©βq = p
+ | ββu,q. u Ο΅ ππ & q Ο΅ u & π.u β t & πβq = p
+ | ββv,u,q. v Ο΅ ππ & u Ο΅ ππ & q Ο΅ u & @v.u β t & πβq = p
+ | ββv,u,q. v Ο΅ ππ & u Ο΅ ππ & q Ο΅ v & @v.u β t & π¦βq = p
.
#t #p #H elim H -H
[ #n * /3 width=3 by or5_intro0, ex2_intro/
qed-.
lemma bdd_inv_in_comp_d:
- βt,q,n. t Ο΅ ππ β π±β¨nβ©;q Ο΅ t β
+ βt,q,n. t Ο΅ ππ β π±β¨nβ©βq Ο΅ t β
β¨β¨ β§β§ #n β t & π = q
| ββu. u Ο΅ ππ & q Ο΅ u & πn.u β t
.
qed-.
lemma bdd_inv_in_root_d:
- βt,q,n. t Ο΅ ππ β π±β¨nβ©;q Ο΅ β΅t β
+ βt,q,n. t Ο΅ ππ β π±β¨nβ©βq Ο΅ β΅t β
β¨β¨ β§β§ #n β t & π = q
| ββu. u Ο΅ ππ & q Ο΅ β΅u & πn.u β t
.
qed-.
lemma bdd_inv_in_comp_L:
- βt,q. t Ο΅ ππ β π;q Ο΅ t β
+ βt,q. t Ο΅ ππ β πβq Ο΅ t β
ββu. u Ο΅ ππ & q Ο΅ u & π.u β t
.
#t #q #Ht #Hq
qed-.
lemma bdd_inv_in_root_L:
- βt,q. t Ο΅ ππ β π;q Ο΅ β΅t β
+ βt,q. t Ο΅ ππ β πβq Ο΅ β΅t β
ββu. u Ο΅ ππ & q Ο΅ β΅u & π.u β t.
#t #q #Ht * #r #Hq
elim (bdd_inv_in_comp_L β¦ Ht Hq) -Ht -Hq
qed-.
lemma bdd_inv_in_comp_A:
- βt,q. t Ο΅ ππ β π;q Ο΅ t β
+ βt,q. t Ο΅ ππ β πβq Ο΅ t β
ββv,u. v Ο΅ ππ & u Ο΅ ππ & q Ο΅ u & @v.u β t
.
#t #q #Ht #Hq
qed-.
lemma bdd_inv_in_root_A:
- βt,q. t Ο΅ ππ β π;q Ο΅ β΅t β
+ βt,q. t Ο΅ ππ β πβq Ο΅ β΅t β
ββv,u. v Ο΅ ππ & u Ο΅ ππ & q Ο΅ β΅u & @v.u β t
.
#t #q #Ht * #r #Hq
qed-.
lemma bdd_inv_in_comp_S:
- βt,q. t Ο΅ ππ β π¦;q Ο΅ t β
+ βt,q. t Ο΅ ππ β π¦βq Ο΅ t β
ββv,u. v Ο΅ ππ & u Ο΅ ππ & q Ο΅ v & @v.u β t
.
#t #q #Ht #Hq
qed-.
lemma bdd_inv_in_root_S:
- βt,q. t Ο΅ ππ β π¦;q Ο΅ β΅t β
+ βt,q. t Ο΅ ππ β π¦βq Ο΅ β΅t β
ββv,u. v Ο΅ ππ & u Ο΅ ππ & q Ο΅ β΅v & @v.u β t
.
#t #q #Ht * #r #Hq
(* Advanced inversions ******************************************************)
lemma bbd_mono_in_root_d:
- βl,n,p,t. t Ο΅ ππ β p,π±β¨nβ© Ο΅ β΅t β p,l Ο΅ β΅t β π±β¨nβ© = l.
+ βl,n,p,t. t Ο΅ ππ β pβπ±β¨nβ© Ο΅ β΅t β pβl Ο΅ β΅t β π±β¨nβ© = l.
#l #n #p elim p -p
[ #t #Ht <list_cons_comm <list_cons_comm #Hn #Hl
elim (bdd_inv_in_root_d β¦ Ht Hn) -Ht -Hn *