8
8
9
9
module Data.List.Relation.Unary.First.Properties where
10
10
11
- open import Data.Empty
12
11
open import Data.Fin.Base using (suc)
13
12
open import Data.List.Base as List using (List; []; _∷_)
14
13
open import Data.List.Relation.Unary.All as All using (All; []; _∷_)
15
14
open import Data.List.Relation.Unary.Any as Any using (here; there)
16
15
open import Data.List.Relation.Unary.First
17
16
import Data.Sum as Sum
18
17
open import Function.Base using (_∘′_; _$_; _∘_; id)
19
- open import Relation.Binary.PropositionalEquality as ≡ using (_≡_; refl; _≗_)
20
- open import Relation.Unary
21
- open import Relation.Nullary.Negation
18
+ open import Relation.Binary.PropositionalEquality.Core as ≡ using (_≡_; refl; _≗_)
19
+ open import Relation.Unary using (Pred; _⊆_; ∁; Irrelevant; Decidable)
20
+ open import Relation.Nullary.Negation using (contradiction)
22
21
23
22
------------------------------------------------------------------------
24
23
-- map
@@ -52,7 +51,7 @@ module _ {a p q} {A : Set a} {P : Pred A p} {Q : Pred A q} where
52
51
module _ {a p q} {A : Set a} {P : Pred A p} {Q : Pred A q} where
53
52
54
53
All⇒¬First : P ⊆ ∁ Q → All P ⊆ ∁ (First P Q)
55
- All⇒¬First p⇒¬q (px ∷ pxs) [ qx ] = ⊥-elim (p⇒¬q px qx )
54
+ All⇒¬First p⇒¬q (px ∷ pxs) [ qx ] = contradiction qx (p⇒¬q px)
56
55
All⇒¬First p⇒¬q (_ ∷ pxs) (_ ∷ hf) = All⇒¬First p⇒¬q pxs hf
57
56
58
57
First⇒¬All : Q ⊆ ∁ P → First P Q ⊆ ∁ (All P)
@@ -64,16 +63,16 @@ module _ {a p q} {A : Set a} {P : Pred A p} {Q : Pred A q} where
64
63
65
64
unique-index : ∀ {xs} → P ⊆ ∁ Q → (f₁ f₂ : First P Q xs) → index f₁ ≡ index f₂
66
65
unique-index p⇒¬q [ _ ] [ _ ] = refl
67
- unique-index p⇒¬q [ qx ] (px ∷ _) = ⊥-elim (p⇒¬q px qx )
68
- unique-index p⇒¬q (px ∷ _) [ qx ] = ⊥-elim (p⇒¬q px qx )
66
+ unique-index p⇒¬q [ qx ] (px ∷ _) = contradiction qx (p⇒¬q px)
67
+ unique-index p⇒¬q (px ∷ _) [ qx ] = contradiction qx (p⇒¬q px)
69
68
unique-index p⇒¬q (_ ∷ f₁) (_ ∷ f₂) = ≡.cong suc (unique-index p⇒¬q f₁ f₂)
70
69
71
70
irrelevant : P ⊆ ∁ Q → Irrelevant P → Irrelevant Q → Irrelevant (First P Q)
72
- irrelevant p⇒¬q p-irr q-irr [ qx₁ ] [ qx₂ ] = ≡.cong [_] (q-irr qx₁ qx₂ )
73
- irrelevant p⇒¬q p-irr q-irr [ qx₁ ] (px₂ ∷ f₂) = ⊥-elim (p⇒¬q px₂ qx₁ )
74
- irrelevant p⇒¬q p-irr q-irr (px₁ ∷ f₁) [ qx₂ ] = ⊥-elim (p⇒¬q px₁ qx₂ )
75
- irrelevant p⇒¬q p-irr q-irr (px₁ ∷ f₁) (px₂ ∷ f₂ ) =
76
- ≡.cong₂ _∷_ (p-irr px₁ px₂ ) (irrelevant p⇒¬q p-irr q-irr f₁ f₂ )
71
+ irrelevant p⇒¬q p-irr q-irr [ px ] [ qx ] = ≡.cong [_] (q-irr px qx)
72
+ irrelevant p⇒¬q p-irr q-irr [ qx ] (px ∷ _) = contradiction qx (p⇒¬q px)
73
+ irrelevant p⇒¬q p-irr q-irr (px ∷ _) [ qx ] = contradiction qx (p⇒¬q px)
74
+ irrelevant p⇒¬q p-irr q-irr (px ∷ f) (qx ∷ g ) =
75
+ ≡.cong₂ _∷_ (p-irr px qx ) (irrelevant p⇒¬q p-irr q-irr f g )
77
76
78
77
------------------------------------------------------------------------
79
78
-- Decidability
0 commit comments