open import Definition.Typed.Restrictions
open import Graded.Modality
open import Tools.Nat
module Definition.Typed.Properties
{ℓ} {M : Set ℓ}
{𝕄 : Modality M}
(R : Type-restrictions 𝕄)
where
open import Definition.Untyped M
open import Definition.Typed R
open import Tools.Fin
import Tools.PropositionalEquality as PE
open import Definition.Typed.Properties.Admissible.Bool R public
open import Definition.Typed.Properties.Admissible.Empty R public
open import Definition.Typed.Properties.Admissible.Equality R public
open import Definition.Typed.Properties.Admissible.Erased R public
open import Definition.Typed.Properties.Admissible.Identity R public
open import Definition.Typed.Properties.Admissible.Lift R public
open import Definition.Typed.Properties.Admissible.Nat R public
open import Definition.Typed.Properties.Admissible.Non-dependent R
public
open import Definition.Typed.Properties.Admissible.Omega R public
open import Definition.Typed.Properties.Admissible.Pi R public
open import Definition.Typed.Properties.Admissible.Sigma R public
open import Definition.Typed.Properties.Admissible.Unit R public
open import Definition.Typed.Properties.Admissible.Var R public
open import Definition.Typed.Properties.Definition R public
open import Definition.Typed.Properties.Reduction R public
open import Definition.Typed.Properties.Well-formed R public
private variable
x : Fin _
Δ : Con Term _
Γ : Cons _ _
A A′ B B′ t t′ u u′ : Term _
opaque
det∈ : x ∷ A ∈ Δ → x ∷ B ∈ Δ → A PE.≡ B
det∈ here here = PE.refl
det∈ (there x) (there y) = PE.cong wk1 (det∈ x y)
opaque
⊢∷-conv-PE : Γ ⊢ t ∷ A → A PE.≡ B → Γ ⊢ t ∷ B
⊢∷-conv-PE ⊢t PE.refl = ⊢t
opaque
⊢≡∷-conv-PE : Γ ⊢ t ≡ u ∷ A → A PE.≡ B → Γ ⊢ t ≡ u ∷ B
⊢≡∷-conv-PE ⊢t≡u PE.refl = ⊢t≡u
opaque
⊢⇒∷-conv-PE : Γ ⊢ t ⇒ u ∷ A → A PE.≡ B → Γ ⊢ t ⇒ u ∷ B
⊢⇒∷-conv-PE ⊢t⇒u PE.refl = ⊢t⇒u
opaque
⊢⇒*∷-conv-PE : Γ ⊢ t ⇒* u ∷ A → A PE.≡ B → Γ ⊢ t ⇒* u ∷ B
⊢⇒*∷-conv-PE ⊢t⇒u PE.refl = ⊢t⇒u
opaque
⊢-cong : Γ ⊢ A → A PE.≡ B → Γ ⊢ B
⊢-cong ⊢A PE.refl = ⊢A
opaque
⊢∷-cong : Γ ⊢ t ∷ A → t PE.≡ u → Γ ⊢ u ∷ A
⊢∷-cong ⊢t PE.refl = ⊢t
opaque
⊢≡-cong : Γ ⊢ A ≡ B → A PE.≡ A′ → B PE.≡ B′ → Γ ⊢ A′ ≡ B′
⊢≡-cong ⊢A≡B PE.refl PE.refl = ⊢A≡B
opaque
⊢≡-congˡ : Γ ⊢ A ≡ B → B PE.≡ B′ → Γ ⊢ A ≡ B′
⊢≡-congˡ ⊢A≡B PE.refl = ⊢A≡B
opaque
⊢≡-congʳ : Γ ⊢ A ≡ B → A PE.≡ A′ → Γ ⊢ A′ ≡ B
⊢≡-congʳ ⊢A≡B PE.refl = ⊢A≡B
opaque
⊢⇒∷-cong : Γ ⊢ t ⇒ u ∷ A → t PE.≡ t′ → u PE.≡ u′ → Γ ⊢ t′ ⇒ u′ ∷ A
⊢⇒∷-cong t⇒u PE.refl PE.refl = t⇒u
opaque
⊢⇒∷-congʳ : Γ ⊢ t ⇒ u ∷ A → t PE.≡ t′ → Γ ⊢ t′ ⇒ u ∷ A
⊢⇒∷-congʳ t⇒u PE.refl = t⇒u
opaque
⊢⇒∷-congˡ : Γ ⊢ t ⇒ u ∷ A → u PE.≡ u′ → Γ ⊢ t ⇒ u′ ∷ A
⊢⇒∷-congˡ t⇒u PE.refl = t⇒u
opaque
⊢⇒*∷-cong : Γ ⊢ t ⇒* u ∷ A → t PE.≡ t′ → u PE.≡ u′ → Γ ⊢ t′ ⇒* u′ ∷ A
⊢⇒*∷-cong t⇒*u PE.refl PE.refl = t⇒*u
opaque
⊢⇒*∷-congʳ : Γ ⊢ t ⇒* u ∷ A → t PE.≡ t′ → Γ ⊢ t′ ⇒* u ∷ A
⊢⇒*∷-congʳ t⇒*u PE.refl = t⇒*u
opaque
⊢⇒*∷-congˡ : Γ ⊢ t ⇒* u ∷ A → u PE.≡ u′ → Γ ⊢ t ⇒* u′ ∷ A
⊢⇒*∷-congˡ t⇒*u PE.refl = t⇒*u
opaque
⊢≡-refl-PE : A PE.≡ B → Γ ⊢ A → Γ ⊢ A ≡ B
⊢≡-refl-PE PE.refl = refl
opaque
⊢≡-refl-PE′ : A PE.≡ B → Γ ⊢ B → Γ ⊢ A ≡ B
⊢≡-refl-PE′ PE.refl = refl
opaque
⊢≡∷-refl-PE : t PE.≡ u → Γ ⊢ t ∷ A → Γ ⊢ t ≡ u ∷ A
⊢≡∷-refl-PE PE.refl = refl
opaque
⊢≡∷-refl-PE′ : t PE.≡ u → Γ ⊢ u ∷ A → Γ ⊢ t ≡ u ∷ A
⊢≡∷-refl-PE′ PE.refl = refl