Skip to content

Commit 7735b82

Browse files
authored
Superset relation on Data.Fin.Subsets (#2719)
* Subset supersets * Use flip to define superset relations
1 parent c5568ef commit 7735b82

File tree

4 files changed

+60
-2
lines changed

4 files changed

+60
-2
lines changed

CHANGELOG.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,29 @@ Additions to existing modules
235235
∙-cong-∣ : x ∣ y → a ∣ b → x ∙ a ∣ y ∙ b
236236
```
237237

238+
* In `Data.Fin.Subset`:
239+
```agda
240+
_⊇_ : Subset n → Subset n → Set
241+
_⊉_ : Subset n → Subset n → Set
242+
_⊃_ : Subset n → Subset n → Set
243+
_⊅_ : Subset n → Subset n → Set
244+
245+
```
246+
247+
* In `Data.Fin.Subset.Induction`:
248+
```agda
249+
⊃-Rec : RecStruct (Subset n) ℓ ℓ
250+
⊃-wellFounded : WellFounded _⊃_
251+
```
252+
253+
* In `Data.Fin.Subset.Properties`
254+
```agda
255+
p⊆q⇒∁p⊇∁q : p ⊆ q → ∁ p ⊇ ∁ q
256+
∁p⊆∁q⇒p⊇q : ∁ p ⊆ ∁ q → p ⊇ q
257+
p⊂q⇒∁p⊃∁q : p ⊂ q → ∁ p ⊃ ∁ q
258+
∁p⊂∁q⇒p⊃q : ∁ p ⊂ ∁ q → p ⊃ q
259+
```
260+
238261
* In `Data.List.Properties`:
239262
```agda
240263
map-applyUpTo : ∀ (f : ℕ → A) (g : A → B) n → map g (applyUpTo f n) ≡ applyUpTo (g ∘ f) n

src/Data/Fin/Subset.agda

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ open import Data.List.Base using (List; foldr; foldl)
1515
open import Data.Nat.Base using (ℕ)
1616
open import Data.Product.Base using (∃; _×_)
1717
open import Data.Vec.Base hiding (foldr; foldl)
18+
open import Function.Base using (flip)
1819
open import Relation.Nullary
1920

2021
private
@@ -77,6 +78,18 @@ p ⊂ q = p ⊆ q × ∃ (λ x → x ∈ q × x ∉ p)
7778
_⊄_ : Subset n Subset n Set
7879
p ⊄ q = ¬ (p ⊂ q)
7980

81+
_⊇_ : Subset n Subset n Set
82+
_⊇_ = flip _⊆_
83+
84+
_⊉_ : Subset n Subset n Set
85+
_⊉_ = flip _⊈_
86+
87+
_⊃_ : Subset n Subset n Set
88+
_⊃_ = flip _⊂_
89+
90+
_⊅_ : Subset n Subset n Set
91+
_⊅_ = flip _⊄_
92+
8093
------------------------------------------------------------------------
8194
-- Set operations
8295

src/Data/Fin/Subset/Induction.agda

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ module Data.Fin.Subset.Induction where
1010

1111
open import Data.Nat.Base using (ℕ)
1212
open import Data.Nat.Induction using (<-wellFounded)
13-
open import Data.Fin.Subset using (Subset; _⊂_; ∣_∣)
14-
open import Data.Fin.Subset.Properties using (p⊂q⇒∣p∣<∣q∣)
13+
open import Data.Fin.Subset using (Subset; ∁; _⊂_; _⊃_; ∣_∣)
14+
open import Data.Fin.Subset.Properties using (p⊂q⇒∣p∣<∣q∣; p⊂q⇒∁p⊃∁q)
1515
open import Induction using (RecStruct)
1616
open import Induction.WellFounded as WF
1717
open import Level using (Level)
@@ -36,3 +36,13 @@ open WF public using (Acc; acc)
3636
⊂-wellFounded : WellFounded {A = Subset n} _⊂_
3737
⊂-wellFounded = Subrelation.wellFounded p⊂q⇒∣p∣<∣q∣
3838
(On.wellFounded ∣_∣ <-wellFounded)
39+
40+
------------------------------------------------------------------------
41+
-- Complete induction based on _⊃_
42+
43+
⊃-Rec : RecStruct (Subset n) ℓ ℓ
44+
⊃-Rec = WfRec _⊃_
45+
46+
⊃-wellFounded : WellFounded {A = Subset n} _⊃_
47+
⊃-wellFounded = Subrelation.wellFounded p⊂q⇒∁p⊃∁q
48+
(On.wellFounded ∁ ⊂-wellFounded)

src/Data/Fin/Subset/Properties.agda

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,18 @@ p∪∁p≡⊤ (inside ∷ p) = cong (inside ∷_) (p∪∁p≡⊤ p)
371371
suc _ ∸ ∣ p ∣ ∎
372372
where open ≡-Reasoning
373373

374+
p⊆q⇒∁p⊇∁q : p ⊆ q ∁ p ⊇ ∁ q
375+
p⊆q⇒∁p⊇∁q p⊆q x∈∁q = x∉p⇒x∈∁p (x∈∁p⇒x∉p x∈∁q ∘ p⊆q)
376+
377+
∁p⊆∁q⇒p⊇q : ∁ p ⊆ ∁ q p ⊇ q
378+
∁p⊆∁q⇒p⊇q ∁p⊆∁q x∈q = x∉∁p⇒x∈p (x∈p⇒x∉∁p x∈q ∘ ∁p⊆∁q)
379+
380+
p⊂q⇒∁p⊃∁q : p ⊂ q ∁ p ⊃ ∁ q
381+
p⊂q⇒∁p⊃∁q (p⊆q , x , x∈q , x∉p) = p⊆q⇒∁p⊇∁q p⊆q , x , x∉p⇒x∈∁p x∉p , x∈p⇒x∉∁p x∈q
382+
383+
∁p⊂∁q⇒p⊃q : ∁ p ⊂ ∁ q p ⊃ q
384+
∁p⊂∁q⇒p⊃q (∁p⊆∁q , x , x∈∁q , x∉∁p) = ∁p⊆∁q⇒p⊇q ∁p⊆∁q , x , x∉∁p⇒x∈p x∉∁p , x∈∁p⇒x∉p x∈∁q
385+
374386
------------------------------------------------------------------------
375387
-- _∩_
376388

0 commit comments

Comments
 (0)