{-# OPTIONS --without-K #-}
module IK.Norm.Properties.Soundness where
open import Relation.Binary.PropositionalEquality
using (_≡_ ; cong ; cong₂ ; trans)
open import IK.Norm.Base
open import IK.Norm.NbE.Model
open import IK.Norm.NbE.Reification
open import IK.Norm.Properties.Soundness.Trace
open import IK.Term
--
-- This module proves the completeness of evaluation (eval-complete),
-- from which the soundness of normalization (norm-sound) follows.
--
eval-complete : {t t' : Tm Γ a}
→ ({Δ : Ctx} {γ : Sub' Δ Γ} → eval t γ ≡ eval t' γ)
→ t ≈ t'
eval-complete {t = t} {t'} f with f {_} {idₛ'}
... | p = ≈-trans
(≈-trans
(⟶*-to-≈ (trace t))
(≈-reflexive (cong embNf (cong reify p))))
(≈-sym (⟶*-to-≈ (trace t')))
norm-sound : norm t ≡ norm u → t ≈ u
norm-sound {t = t} {u} t'≡u' = ≈-trans
(⟶*-to-≈ (trace t))
(≈-trans
(≈-reflexive (cong embNf t'≡u'))
(≈-sym (⟶*-to-≈ (trace u))))
Generated from commit 2fd14c996b195ef101dff8919e837907ca0a08aa.