open import Data.List open import Data.List.Relation.Unary.Any open import Data.List.Membership.Propositional.Properties open import Data.List.Relation.Binary.Subset.Propositional open import Data.List.Relation.Binary.Subset.Propositional.Properties open import Data.List.Relation.Binary.Permutation.Propositional import Data.List.Relation.Binary.Permutation.Propositional.Properties as Perm open import Function.Base open import Level module Data.List.Relation.Binary.Subset.Propositional.ExtraProperties where private variable a : Level A : Set a x y : A xs ys ws zs : List A xs⊆xs++ys : xs ⊆ xs ++ ys xs⊆xs++ys = ∈-++⁺ˡ xs⊆ys++xs : xs ⊆ ys ++ xs xs⊆ys++xs = ∈-++⁺ʳ _ ++⁺ʳ : ∀ zs → xs ⊆ ys → zs ++ xs ⊆ zs ++ ys ++⁺ʳ zs xs⊆ys = ⊆-refl {x = zs} ++-mono xs⊆ys ++⁺ˡ : ∀ zs → xs ⊆ ys → xs ++ zs ⊆ ys ++ zs ++⁺ˡ zs xs⊆ys = xs⊆ys ++-mono ⊆-refl {x = zs} ++↭ʳ++ : ∀ (xs ys : List A) → xs ++ ys ↭ xs ʳ++ ys ++↭ʳ++ [] ys = ↭-refl ++↭ʳ++ (x ∷ xs) ys = ↭-trans (↭-sym (Perm.shift x xs ys)) (++↭ʳ++ xs (x ∷ ys)) ↭⇒⊆ : xs ↭ ys → xs ⊆ ys ↭⇒⊆ xs↭ys = Perm.Any-resp-↭ xs↭ys