------------------------------------------------------------------------ -- The Agda standard library -- -- Properties of the pointwise lifting of a predicate to a binary tree ------------------------------------------------------------------------ {-# OPTIONS --without-K --safe #-} module Data.Tree.Binary.Relation.Unary.All.Properties where open import Level open import Data.Tree.Binary as Tree using (Tree; leaf; node) open import Data.Tree.Binary.Relation.Unary.All open import Relation.Unary private variable a b p q : Level A : Set a B : Set b module _ {P : B → Set p} where map⁺ : (f : A → B) → ∀[ All (f ⊢ P) ⇒ Tree.map f ⊢ All P ] map⁺ f leaf = leaf map⁺ f (node l m r) = node (map⁺ f l) m (map⁺ f r)