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