File tree Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Original file line number Diff line number Diff line change @@ -37,3 +37,54 @@ sortOn f =
3737 map snd
3838 ∘ sortBy (comparing fst)
3939 ∘ map (λ x → let y = f x in seq y (y , x))
40+
41+ {-----------------------------------------------------------------------------
42+ Properties
43+ ------------------------------------------------------------------------------}
44+
45+ -- | A deleted item is no longer an element.
46+ --
47+ prop-elem-deleteAll
48+ : ∀ ⦃ _ : Eq a ⦄ ⦃ _ : IsLawfulEq a ⦄
49+ (x y : a) (zs : List a)
50+ → elem x (deleteAll y zs)
51+ ≡ (if x == y then False else elem x zs)
52+ --
53+ prop-elem-deleteAll x y []
54+ with x == y
55+ ... | False = refl
56+ ... | True = refl
57+ prop-elem-deleteAll x y (z ∷ zs)
58+ with recurse ← prop-elem-deleteAll x y zs
59+ with y == z in eqyz
60+ ... | True
61+ with x == z in eqxz
62+ ... | True
63+ rewrite equality' _ _ (trans (equality x z eqxz) (sym (equality y z eqyz)))
64+ = recurse
65+ ... | False
66+ = recurse
67+ prop-elem-deleteAll x y (z ∷ zs)
68+ | False
69+ with x == z in eqxz
70+ ... | True
71+ rewrite equality x z eqxz | eqSymmetry y z | eqyz
72+ = refl
73+ ... | False
74+ = recurse
75+
76+ -- | An item is an element of the 'nub' iff it is
77+ -- an element of the original list.
78+ --
79+ prop-elem-nub
80+ : ∀ ⦃ _ : Eq a ⦄ ⦃ _ : IsLawfulEq a ⦄
81+ (x : a) (ys : List a)
82+ → elem x (nub ys)
83+ ≡ elem x ys
84+ --
85+ prop-elem-nub x [] = refl
86+ prop-elem-nub x (y ∷ ys)
87+ rewrite prop-elem-deleteAll x y (nub ys)
88+ with x == y
89+ ... | True = refl
90+ ... | False = prop-elem-nub x ys
You can’t perform that action at this time.
0 commit comments