aboutsummaryrefslogtreecommitdiff
path: root/Data/Fin/Preimage.agda
blob: f6e437382fa34f3744e99d1e59850d5c4d03e8e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
{-# OPTIONS --without-K --safe #-}

module Data.Fin.Preimage where

open import Data.Nat.Base using ()
open import Data.Fin.Base using (Fin)
open import Function.Base using (∣_⟩-_; _∘_)
open import Relation.Binary.PropositionalEquality as  using (_≗_)
open import Data.Subset.Functional using (Subset; foldl; _∪_; ⊥; ⁅_⁆)

private
  variable A B C : preimage : (Fin A  Fin B)  Subset B  Subset A
preimage f Y = Y  f

 : Subset A  (Fin A  Subset B)  Subset B
⋃ S f = foldl ( _∪_ ⟩- f)  S

image : (Fin A  Fin B)  Subset A  Subset B
image f X =  X (⁅_⁆  f)

preimage-cong₁
    : {f g : Fin A  Fin B}
     f  g
     (S : Subset B)
     preimage f S  preimage g S
preimage-cong₁ f≗g S x = ≡.cong S (f≗g x)

preimage-cong₂
    : (f : Fin A  Fin B)
      {S₁ S₂ : Subset B}
     S₁  S₂
     preimage f S₁  preimage f S₂
preimage-cong₂ f S₁≗S₂ = S₁≗S₂  f

preimage-∘
    : (f : Fin A  Fin B)
      (g : Fin B  Fin C)
      (z : Fin C)
     preimage (g  f)  z   preimage f (preimage g  z )
preimage-∘ f g S x = ≡.refl