PER as types: dependent product & sum [ag-BQXB]

Details [local-0]

依賴型別由一族 B : 𝓟 ℕ → Rel 給出。要讓它在 A 的商空間上良好定義,需要 B 在 A:U [ A ] V 時滿足 B U = B V

dependent sum:Fst X 由 A 分類,Snd X 由 B (Fst X) 分類

Σᵣ : (A : Rel) → (𝓟 ℕ → Rel) → Rel
Σᵣ A B X Y = (Fst X [ A ] Fst Y) × (Snd X [ B (Fst X) ] Snd Y)
infixr 55 Σᵣ

dependent product:把 F 作用在被 A 分類的 X 上,結果由 B X 分類

Πᵣ : (A : Rel) → (𝓟 ℕ → Rel) → Rel
Πᵣ A B F G = (X Y : 𝓟 ℕ) → X [ A ] Y → (F ⊙ X) [ B X ] (G ⊙ Y)
infixr 50 Πᵣ

Dependent sum of PER依然是PER [local-1]

Per component提出證明,依賴的部分要靠 B U = B V 把證明在 B (Fst X) 與 B (Fst Y) 之間搬移

  Σ-is-PER : {A : Rel} {B : 𝓟 ℕ → Rel}
       → is-PER A
       → ((U : 𝓟 ℕ) → is-PER (B U))
       → ({U V : 𝓟 ℕ} → U [ A ] V → B U = B V)
       → is-PER (Σᵣ A B)
  Σ-is-PER {A}{B} per-A per-B resp = I , II
    where
    I : symmetric (Σᵣ A B)
    I X Y (p , q) =
      PER-symm per-A (Fst X) (Fst Y) p ,
      PER-symm (per-B (Fst Y)) (Snd X) (Snd Y)
        (transport (λ R → Snd X [ R ] Snd Y) (resp p) q)
    II : transitive (Σᵣ A B)
    II X Y Z (p₁ , q₁) (p₂ , q₂) =
      PER-trans per-A (Fst X) (Fst Y) (Fst Z) p₁ p₂ ,
      PER-trans (per-B (Fst X)) (Snd X) (Snd Y) (Snd Z) q₁
        (transport (λ R → Snd Y [ R ] Snd Z) (resp p₁ ⁻¹) q₂)

Dependent product of PER依然是PER [local-2]

結構與 _=>_ 相同,只是每次套用後都要把型別 B Y 搬回 B X

  Π-is-PER : {A : Rel} {B : 𝓟 ℕ → Rel}
       → is-PER A
       → ((U : 𝓟 ℕ) → is-PER (B U))
       → ({U V : 𝓟 ℕ} → U [ A ] V → B U = B V)
       → is-PER (Πᵣ A B)
  Π-is-PER {A}{B} per-A per-B resp = I , II
    where
    I : symmetric (Πᵣ A B)
    I F G F[Π]G X Y X[A]Y = goal
      where
      Y[A]X : Y [ A ] X
      Y[A]X = PER-symm per-A X Y X[A]Y

      apply : (F ⊙ Y) [ B Y ] (G ⊙ X)
      apply = F[Π]G Y X Y[A]X

      apply' : (F ⊙ Y) [ B X ] (G ⊙ X)
      apply' = transport (λ R → (F ⊙ Y) [ R ] (G ⊙ X)) (resp Y[A]X) apply

      goal : (G ⊙ X) [ B X ] (F ⊙ Y)
      goal = PER-symm (per-B X) (F ⊙ Y) (G ⊙ X) apply'
    II : transitive (Πᵣ A B)
    II F G H F[Π]G G[Π]H X Y X[A]Y = goal
      where
      apply₁ : (F ⊙ X) [ B X ] (G ⊙ Y)
      apply₁ = F[Π]G X Y X[A]Y

      Y[A]X : Y [ A ] X
      Y[A]X = PER-symm per-A X Y X[A]Y

      Y[A]Y : Y [ A ] Y
      Y[A]Y = PER-trans per-A Y X Y Y[A]X X[A]Y

      apply₂ : (G ⊙ Y) [ B Y ] (H ⊙ Y)
      apply₂ = G[Π]H Y Y Y[A]Y

      apply₂' : (G ⊙ Y) [ B X ] (H ⊙ Y)
      apply₂' = transport (λ R → (G ⊙ Y) [ R ] (H ⊙ Y)) (resp Y[A]X) apply₂

      goal : (F ⊙ X) [ B X ] (H ⊙ Y)
      goal = PER-trans (per-B X) (F ⊙ X) (G ⊙ Y) (H ⊙ Y) apply₁ apply₂'

退化成非依賴時 [local-3]