import Graded.Modality
open import Definition.Typed.Restrictions
module Definition.Typed.Properties.Admissible.Erased.No-eta
{a} {M : Set a}
(open Graded.Modality M)
{𝕄 : Modality}
(R : Type-restrictions 𝕄)
where
open Modality 𝕄
open Type-restrictions R
open import Definition.Typed R
open import Definition.Typed.Inversion R
open import Definition.Typed.Properties.Admissible.Sigma R
open import Definition.Typed.Properties.Well-formed R
open import Definition.Typed.Syntactic R
open import Definition.Untyped M hiding (_[_])
open import Definition.Untyped.Erased 𝕄 𝕨 hiding (erased)
open import Definition.Untyped.Erased.No-eta 𝕄
open import Tools.Function
open import Tools.Product
private variable
Γ : Con Term _
A B C t u : Term _
Erased-β :
Erasedʷ-allowed →
Γ ⊢ t ∷ A →
Γ ⊢ erased A [ t ] ≡ t ∷ A
Erased-β (Unit-ok , Σ-ok) ⊢t =
fstʷ-β-≡ (Unitⱼ ⊢ΓA Unit-ok) ⊢t (starⱼ ⊢Γ Unit-ok) Σ-ok
where
⊢Γ = wfTerm ⊢t
⊢ΓA = ∙ syntacticTerm ⊢t
erasedⱼ : Γ ⊢ t ∷ Erased A → Γ ⊢ erased A t ∷ A
erasedⱼ ⊢t = fstʷⱼ ⊢t
erased-cong :
Γ ⊢ A ≡ B → Γ ⊢ t ≡ u ∷ Erased A → Γ ⊢ erased A t ≡ erased B u ∷ A
erased-cong = fstʷ-cong
opaque
inversion-erased :
Γ ⊢ erased C t ∷ A →
∃₂ λ q B → Γ ⊢ t ∷ Σʷ 𝟘 , q ▷ A ▹ B × Σʷ-allowed 𝟘 q
inversion-erased {C = C} {t} ⊢erased =
case inversion-fstʷ ⊢erased of λ
(q , B , ⊢t , A≡C) →
case inversion-ΠΣ (syntacticTerm ⊢t) of λ
(_ , ⊢B , Σ-ok) →
q , B , conv ⊢t (ΠΣ-cong (sym A≡C) (refl ⊢B) Σ-ok) , Σ-ok