(**************************************************************************)
include "delayed_updating/syntax/path.ma".
-include "delayed_updating/notation/relations/predicate_p_tail_1.ma".
+include "delayed_updating/notation/functions/class_p_0.ma".
+include "ground/lib/subset.ma".
include "ground/xoa/ex_1_2.ma".
(* PROPER CONDITION FOR PATH ************************************************)
interpretation
"proper condition (path)"
- 'PredicatePTail p = (ppc p).
+ 'ClassP = (ppc).
(* Basic constructions ******************************************************)
-lemma ppc_lcons (l) (q): Ꝕ(l◗q).
-#l #p #H destruct
+lemma ppc_rcons (p) (l):
+ p◖l ϵ 𝐏.
+#p #l #H0 destruct
+qed.
+
+lemma ppc_lcons (p) (l):
+ l◗p ϵ 𝐏.
+#p #l #H0
+elim (eq_inv_list_empty_rcons ??? H0)
qed.
(* Basic inversions ********************************************************)
-lemma ppc_inv_lcons (p):
- Ꝕp → ∃∃l,q. l◗q = p.
+lemma ppc_inv_empty:
+ (𝐞) ϵ 𝐏 → ⊥.
+#H0 @H0 -H0 //
+qed-.
+
+lemma ppc_inv_rcons (p):
+ p ϵ 𝐏 → ∃∃q,l. q◖l = p.
*
-[ #H elim H -H //
+[ #H0 elim (ppc_inv_empty … H0)
| #l #q #_ /2 width=3 by ex1_2_intro/
]
qed-.
+
+lemma ppc_inv_lcons (p):
+ p ϵ 𝐏 → ∃∃q,l. l◗q = p.
+#p @(list_ind_rcons … p) -p
+[ #H0 elim (ppc_inv_empty … H0)
+| #q #l #_ #_ /2 width=3 by ex1_2_intro/
+]
+qed-.