IIDr.agda 969 B

1234567891011121314151617181920212223242526272829
  1. {-# OPTIONS --no-positivity-check #-}
  2. module IIDr where
  3. open import LF
  4. open import IID
  5. OPr : (I : Set) -> Set1
  6. OPr I = I -> OP I One
  7. rArgs : {I : Set}(γ : OPr I)(U : I -> Set)(i : I) -> Set
  8. rArgs γ U i = Args (γ i) U
  9. -- The type of IIDrs
  10. data Ur {I : Set}(γ : OPr I)(i : I) : Set where
  11. intror : rArgs γ (Ur γ) i -> Ur γ i
  12. -- The elimination rule
  13. elim-Ur : {I : Set}(γ : OPr I)(C : (i : I) -> Ur γ i -> Set) ->
  14. ((i : I)(a : rArgs γ (Ur γ) i) -> IndHyp (γ i) (Ur γ) C a -> C i (intror a)) ->
  15. (i : I)(u : Ur γ i) -> C i u
  16. elim-Ur γ C m i (intror a) = m i a (induction (γ i) (Ur γ) C (elim-Ur γ C m) a)
  17. -- Large elimination
  18. elim-Ur₁ : {I : Set}(γ : OPr I)(C : (i : I) -> Ur γ i -> Set1) ->
  19. ((i : I)(a : rArgs γ (Ur γ) i) -> IndHyp₁ (γ i) (Ur γ) C a -> C i (intror a)) ->
  20. (i : I)(u : Ur γ i) -> C i u
  21. elim-Ur₁ γ C m i (intror a) = m i a (induction₁ (γ i) (Ur γ) C (elim-Ur₁ γ C m) a)