Library final_result

Final Result : PTS <-> PTSe

Here we use PTS{atr} as an intermediate system to prove that any judgement in PTS can be lifted in PTSe, which means that we can build a valid equality judgement from a Beta conversion.
Then we will use this equivalence to prove that PTSe enjoys the Subject Reduction property.

Require Import Peano_dec.

Require Import Compare_dec.

Require Import Lt.


Require Import base.

Require Import ut_term.

Require Import ut_red.

Require Import ut_env.

Require Import ut_red ut_typ.

Require Import ut_sr ut_typ_eq.

Require Import term.

Require Import red env.

Require Import typ_annot.

Require Import glue.

Require Import List.

Require Import strip.


Module final_mod (X:term_sig) (Y:pts_sig X)
  (TM:term_mod X) (EM: env_mod X TM) (RM: red_mod X TM)
  (UTM:ut_term_mod X) (UEM: ut_env_mod X UTM) (URM: ut_red_mod X UTM)
  (PTS : ut_sr_mod X Y UTM UEM URM) (PTSe : ut_typ_eq_mod X Y UTM UEM URM PTS)
  (PTS_ATR: glue_mod X Y TM EM RM UTM UEM URM).
Interactive Module final_mod started


 Import X Y UTM UEM URM TM EM RM PTS PTSe PTS_ATR.
Warning: Notation _ →' _ was already used in scope UT_scope



Open Scope Typ_scope.


Now that we know how to glue types and contexts together, we can annotate a PTS judgement into a PTS{atr} one.
Lemma FromPTS_to_PTSATR : (forall Γ M A , PTS.typ Γ M A -> exists Γ', exists M', exists A', strip_env Γ' = Γ /\
  strip M' = M /\ strip A' = A /\ Γ' M' M' : A') /\
        (forall Γ , PTS.wf Γ -> exists Γ', strip_env Γ' = Γ /\ wf Γ').
1 subgoals, subgoal 1 (ID 13)
  
  ============================
   (forall (Γ : UEM.Env) (M A : UTM.Term),
    Γ ⊢ M : A ->
    exists (Γ' : Env) (M' A' : Term),
      strip_env Γ' = Γ /\ strip M' = M /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A') /\
   (forall Γ : UEM.Env, (Γ ⊣)%UT -> exists Γ' : Env, strip_env Γ' = Γ /\ Γ' ⊣)

(dependent evars:)


apply PTS.typ_induc; intros.
8 subgoals, subgoal 1 (ID 27)
  
  Γ : UEM.Env
  s : Sorts
  t : Sorts
  a : Ax s t
  w : (Γ ⊣)%UT
  H : exists Γ' : Env, strip_env Γ' = Γ /\ Γ' ⊣
  ============================
   exists (Γ' : Env) (M' A' : Term),
     strip_env Γ' = Γ /\
     strip M' = !s%UT /\ strip A' = !t%UT /\ Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 33) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)


destruct H as (Γ' & ? & ?).
8 subgoals, subgoal 1 (ID 90)
  
  Γ : UEM.Env
  s : Sorts
  t : Sorts
  a : Ax s t
  w : (Γ ⊣)%UT
  Γ' : Env
  H : strip_env Γ' = Γ
  H0 : Γ' ⊣
  ============================
   exists (Γ'0 : Env) (M' A' : Term),
     strip_env Γ'0 = Γ /\
     strip M' = !s%UT /\ strip A' = !t%UT /\ Γ'0 ⊢ M' ▹ M' : A'

subgoal 2 (ID 33) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

exists Γ'; exists !s; exists !t; intuition.
7 subgoals, subgoal 1 (ID 33)
  
  Γ : UEM.Env
  A : UTM.Term
  v : nat
  w : (Γ ⊣)%UT
  H : exists Γ' : Env, strip_env Γ' = Γ /\ Γ' ⊣
  i : (A ↓ v ⊂ Γ)%UT
  ============================
   exists (Γ' : Env) (M' A' : Term),
     strip_env Γ' = Γ /\
     strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)


destruct H as (ΓΓ & ? & ?).
7 subgoals, subgoal 1 (ID 130)
  
  Γ : UEM.Env
  A : UTM.Term
  v : nat
  w : (Γ ⊣)%UT
  ΓΓ : Env
  H : strip_env ΓΓ = Γ
  H0 : ΓΓ ⊣
  i : (A ↓ v ⊂ Γ)%UT
  ============================
   exists (Γ' : Env) (M' A' : Term),
     strip_env Γ' = Γ /\
     strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

assert (exists AA, AA v ΓΓ /\ A = strip AA).
8 subgoals, subgoal 1 (ID 133)
  
  Γ : UEM.Env
  A : UTM.Term
  v : nat
  w : (Γ ⊣)%UT
  ΓΓ : Env
  H : strip_env ΓΓ = Γ
  H0 : ΓΓ ⊣
  i : (A ↓ v ⊂ Γ)%UT
  ============================
   exists AA : Term, (AA ↓ v ⊂ ΓΓ) /\ A = strip AA

subgoal 2 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)


clear w H0.
8 subgoals, subgoal 1 (ID 135)
  
  Γ : UEM.Env
  A : UTM.Term
  v : nat
  ΓΓ : Env
  H : strip_env ΓΓ = Γ
  i : (A ↓ v ⊂ Γ)%UT
  ============================
   exists AA : Term, (AA ↓ v ⊂ ΓΓ) /\ A = strip AA

subgoal 2 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

revert ΓΓ A v H i.
8 subgoals, subgoal 1 (ID 137)
  
  Γ : UEM.Env
  ============================
   forall (ΓΓ : Env) (A : UTM.Term) (v : nat),
   strip_env ΓΓ = Γ ->
   (A ↓ v ⊂ Γ)%UT -> exists AA : Term, (AA ↓ v ⊂ ΓΓ) /\ A = strip AA

subgoal 2 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

induction Γ; intros.
9 subgoals, subgoal 1 (ID 149)
  
  ΓΓ : Env
  A : UTM.Term
  v : nat
  H : strip_env ΓΓ = nil
  i : (A ↓ v ⊂ nil)%UT
  ============================
   exists AA : Term, (AA ↓ v ⊂ ΓΓ) /\ A = strip AA

subgoal 2 (ID 154) is:
 exists AA : Term, (AA ↓ v ⊂ ΓΓ) /\ A = strip AA
subgoal 3 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 8 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 9 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

destruct i as ( a & ? &?).
9 subgoals, subgoal 1 (ID 162)
  
  ΓΓ : Env
  A : UTM.Term
  v : nat
  H : strip_env ΓΓ = nil
  a : UTM.Term
  H0 : A = (a ↑ (S v))%UT
  H1 : (a ↓ v ∈ nil)%UT
  ============================
   exists AA : Term, (AA ↓ v ⊂ ΓΓ) /\ A = strip AA

subgoal 2 (ID 154) is:
 exists AA : Term, (AA ↓ v ⊂ ΓΓ) /\ A = strip AA
subgoal 3 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 8 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 9 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)


inversion H1.
8 subgoals, subgoal 1 (ID 154)
  
  a : UTM.Term
  Γ : list UTM.Term
  IHΓ : forall (ΓΓ : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ = Γ ->
        (A ↓ v ⊂ Γ)%UT -> exists AA : Term, (AA ↓ v ⊂ ΓΓ) /\ A = strip AA
  ΓΓ : Env
  A : UTM.Term
  v : nat
  H : strip_env ΓΓ = a :: Γ
  i : (A ↓ v ⊂ a :: Γ)%UT
  ============================
   exists AA : Term, (AA ↓ v ⊂ ΓΓ) /\ A = strip AA

subgoal 2 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

destruct ΓΓ; simpl in H.
9 subgoals, subgoal 1 (ID 212)
  
  a : UTM.Term
  Γ : list UTM.Term
  IHΓ : forall (ΓΓ : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ = Γ ->
        (A ↓ v ⊂ Γ)%UT -> exists AA : Term, (AA ↓ v ⊂ ΓΓ) /\ A = strip AA
  A : UTM.Term
  v : nat
  H : nil = a :: Γ
  i : (A ↓ v ⊂ a :: Γ)%UT
  ============================
   exists AA : Term, (AA ↓ v ⊂ nil) /\ A = strip AA

subgoal 2 (ID 213) is:
 exists AA : Term, (AA ↓ v ⊂ t :: ΓΓ) /\ A = strip AA
subgoal 3 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 8 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 9 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

discriminate.
8 subgoals, subgoal 1 (ID 213)
  
  a : UTM.Term
  Γ : list UTM.Term
  IHΓ : forall (ΓΓ : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ = Γ ->
        (A ↓ v ⊂ Γ)%UT -> exists AA : Term, (AA ↓ v ⊂ ΓΓ) /\ A = strip AA
  t : Term
  ΓΓ : list Term
  A : UTM.Term
  v : nat
  H : strip t :: strip_env ΓΓ = a :: Γ
  i : (A ↓ v ⊂ a :: Γ)%UT
  ============================
   exists AA : Term, (AA ↓ v ⊂ t :: ΓΓ) /\ A = strip AA

subgoal 2 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

injection H; intros; subst; clear H.
8 subgoals, subgoal 1 (ID 242)
  
  t : Term
  ΓΓ : list Term
  A : UTM.Term
  v : nat
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  i : (A ↓ v ⊂ strip t :: strip_env ΓΓ)%UT
  ============================
   exists AA : Term, (AA ↓ v ⊂ t :: ΓΓ) /\ A = strip AA

subgoal 2 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)


destruct i as (a &? & ?).
8 subgoals, subgoal 1 (ID 250)
  
  t : Term
  ΓΓ : list Term
  A : UTM.Term
  v : nat
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  a : UTM.Term
  H : A = (a ↑ (S v))%UT
  H0 : (a ↓ v ∈ strip t :: strip_env ΓΓ)%UT
  ============================
   exists AA : Term, (AA ↓ v ⊂ t :: ΓΓ) /\ A = strip AA

subgoal 2 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

inversion H0; subst; clear H0.
9 subgoals, subgoal 1 (ID 339)
  
  t : Term
  ΓΓ : list Term
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  ============================
   exists AA : Term, (AA ↓ 0 ⊂ t :: ΓΓ) /\ ((strip t) ↑ 1)%UT = strip AA

subgoal 2 (ID 340) is:
 exists AA : Term, (AA ↓ S n ⊂ t :: ΓΓ) /\ (a ↑ (S (S n)))%UT = strip AA
subgoal 3 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 8 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 9 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

exists (lift_rec 1 0 t).
9 subgoals, subgoal 1 (ID 342)
  
  t : Term
  ΓΓ : list Term
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  ============================
   (t ↑ 1 ↓ 0 ⊂ t :: ΓΓ) /\ ((strip t) ↑ 1)%UT = strip t ↑ 1

subgoal 2 (ID 340) is:
 exists AA : Term, (AA ↓ S n ⊂ t :: ΓΓ) /\ (a ↑ (S (S n)))%UT = strip AA
subgoal 3 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 8 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 9 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)


split.
10 subgoals, subgoal 1 (ID 344)
  
  t : Term
  ΓΓ : list Term
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  ============================
   t ↑ 1 ↓ 0 ⊂ t :: ΓΓ

subgoal 2 (ID 345) is:
 ((strip t) ↑ 1)%UT = strip t ↑ 1
subgoal 3 (ID 340) is:
 exists AA : Term, (AA ↓ S n ⊂ t :: ΓΓ) /\ (a ↑ (S (S n)))%UT = strip AA
subgoal 4 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 8 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 9 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 10 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

exists t.
10 subgoals, subgoal 1 (ID 347)
  
  t : Term
  ΓΓ : list Term
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  ============================
   t ↑ 1 = t ↑ 1 /\ t ↓ 0 ∈ t :: ΓΓ

subgoal 2 (ID 345) is:
 ((strip t) ↑ 1)%UT = strip t ↑ 1
subgoal 3 (ID 340) is:
 exists AA : Term, (AA ↓ S n ⊂ t :: ΓΓ) /\ (a ↑ (S (S n)))%UT = strip AA
subgoal 4 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 8 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 9 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 10 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

intuition.
9 subgoals, subgoal 1 (ID 345)
  
  t : Term
  ΓΓ : list Term
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  ============================
   ((strip t) ↑ 1)%UT = strip t ↑ 1

subgoal 2 (ID 340) is:
 exists AA : Term, (AA ↓ S n ⊂ t :: ΓΓ) /\ (a ↑ (S (S n)))%UT = strip AA
subgoal 3 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 8 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 9 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

rewrite strip_lift; trivial.
8 subgoals, subgoal 1 (ID 340)
  
  t : Term
  ΓΓ : list Term
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  a : UTM.Term
  n : nat
  H4 : (a ↓ n ∈ strip_env ΓΓ)%UT
  ============================
   exists AA : Term, (AA ↓ S n ⊂ t :: ΓΓ) /\ (a ↑ (S (S n)))%UT = strip AA

subgoal 2 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)


destruct (IHΓ ΓΓ (UTM.lift_rec (S n) 0 a) n) as (B & ?& ?).
10 subgoals, subgoal 1 (ID 363)
  
  t : Term
  ΓΓ : list Term
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  a : UTM.Term
  n : nat
  H4 : (a ↓ n ∈ strip_env ΓΓ)%UT
  ============================
   strip_env ΓΓ = strip_env ΓΓ

subgoal 2 (ID 365) is:
 (a ↑ (S n) ↓ n ⊂ strip_env ΓΓ)%UT
subgoal 3 (ID 373) is:
 exists AA : Term, (AA ↓ S n ⊂ t :: ΓΓ) /\ (a ↑ (S (S n)))%UT = strip AA
subgoal 4 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 8 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 9 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 10 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

trivial.
9 subgoals, subgoal 1 (ID 365)
  
  t : Term
  ΓΓ : list Term
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  a : UTM.Term
  n : nat
  H4 : (a ↓ n ∈ strip_env ΓΓ)%UT
  ============================
   (a ↑ (S n) ↓ n ⊂ strip_env ΓΓ)%UT

subgoal 2 (ID 373) is:
 exists AA : Term, (AA ↓ S n ⊂ t :: ΓΓ) /\ (a ↑ (S (S n)))%UT = strip AA
subgoal 3 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 8 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 9 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)


exists a; intuition.
8 subgoals, subgoal 1 (ID 373)
  
  t : Term
  ΓΓ : list Term
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  a : UTM.Term
  n : nat
  H4 : (a ↓ n ∈ strip_env ΓΓ)%UT
  B : Term
  H : B ↓ n ⊂ ΓΓ
  H0 : (a ↑ (S n))%UT = strip B
  ============================
   exists AA : Term, (AA ↓ S n ⊂ t :: ΓΓ) /\ (a ↑ (S (S n)))%UT = strip AA

subgoal 2 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

exists (lift_rec 1 0 B).
8 subgoals, subgoal 1 (ID 381)
  
  t : Term
  ΓΓ : list Term
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  a : UTM.Term
  n : nat
  H4 : (a ↓ n ∈ strip_env ΓΓ)%UT
  B : Term
  H : B ↓ n ⊂ ΓΓ
  H0 : (a ↑ (S n))%UT = strip B
  ============================
   (B ↑ 1 ↓ S n ⊂ t :: ΓΓ) /\ (a ↑ (S (S n)))%UT = strip B ↑ 1

subgoal 2 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

split.
9 subgoals, subgoal 1 (ID 383)
  
  t : Term
  ΓΓ : list Term
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  a : UTM.Term
  n : nat
  H4 : (a ↓ n ∈ strip_env ΓΓ)%UT
  B : Term
  H : B ↓ n ⊂ ΓΓ
  H0 : (a ↑ (S n))%UT = strip B
  ============================
   B ↑ 1 ↓ S n ⊂ t :: ΓΓ

subgoal 2 (ID 384) is:
 (a ↑ (S (S n)))%UT = strip B ↑ 1
subgoal 3 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 8 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 9 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

destruct H as (b & ?& ?).
9 subgoals, subgoal 1 (ID 395)
  
  t : Term
  ΓΓ : list Term
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  a : UTM.Term
  n : nat
  H4 : (a ↓ n ∈ strip_env ΓΓ)%UT
  B : Term
  b : Term
  H : B = b ↑ (S n)
  H1 : b ↓ n ∈ ΓΓ
  H0 : (a ↑ (S n))%UT = strip B
  ============================
   B ↑ 1 ↓ S n ⊂ t :: ΓΓ

subgoal 2 (ID 384) is:
 (a ↑ (S (S n)))%UT = strip B ↑ 1
subgoal 3 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 8 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 9 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)


exists b.
9 subgoals, subgoal 1 (ID 397)
  
  t : Term
  ΓΓ : list Term
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  a : UTM.Term
  n : nat
  H4 : (a ↓ n ∈ strip_env ΓΓ)%UT
  B : Term
  b : Term
  H : B = b ↑ (S n)
  H1 : b ↓ n ∈ ΓΓ
  H0 : (a ↑ (S n))%UT = strip B
  ============================
   B ↑ 1 = b ↑ (S (S n)) /\ b ↓ S n ∈ t :: ΓΓ

subgoal 2 (ID 384) is:
 (a ↑ (S (S n)))%UT = strip B ↑ 1
subgoal 3 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 8 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 9 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

subst.
9 subgoals, subgoal 1 (ID 402)
  
  t : Term
  ΓΓ : list Term
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  a : UTM.Term
  n : nat
  H4 : (a ↓ n ∈ strip_env ΓΓ)%UT
  b : Term
  H1 : b ↓ n ∈ ΓΓ
  H0 : (a ↑ (S n))%UT = strip b ↑ (S n)
  ============================
   b ↑ (S n) ↑ 1 = b ↑ (S (S n)) /\ b ↓ S n ∈ t :: ΓΓ

subgoal 2 (ID 384) is:
 (a ↑ (S (S n)))%UT = strip B ↑ 1
subgoal 3 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 8 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 9 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

rewrite lift_lift; intuition.
8 subgoals, subgoal 1 (ID 384)
  
  t : Term
  ΓΓ : list Term
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  a : UTM.Term
  n : nat
  H4 : (a ↓ n ∈ strip_env ΓΓ)%UT
  B : Term
  H : B ↓ n ⊂ ΓΓ
  H0 : (a ↑ (S n))%UT = strip B
  ============================
   (a ↑ (S (S n)))%UT = strip B ↑ 1

subgoal 2 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

rewrite strip_lift.
8 subgoals, subgoal 1 (ID 419)
  
  t : Term
  ΓΓ : list Term
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  a : UTM.Term
  n : nat
  H4 : (a ↓ n ∈ strip_env ΓΓ)%UT
  B : Term
  H : B ↓ n ⊂ ΓΓ
  H0 : (a ↑ (S n))%UT = strip B
  ============================
   (a ↑ (S (S n)))%UT = ((strip B) ↑ 1)%UT

subgoal 2 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

rewrite <- H0.
8 subgoals, subgoal 1 (ID 420)
  
  t : Term
  ΓΓ : list Term
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  a : UTM.Term
  n : nat
  H4 : (a ↓ n ∈ strip_env ΓΓ)%UT
  B : Term
  H : B ↓ n ⊂ ΓΓ
  H0 : (a ↑ (S n))%UT = strip B
  ============================
   (a ↑ (S (S n)))%UT = (a ↑ (S n) ↑ 1)%UT

subgoal 2 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)


rewrite UTM.lift_lift.
8 subgoals, subgoal 1 (ID 421)
  
  t : Term
  ΓΓ : list Term
  IHΓ : forall (ΓΓ0 : Env) (A : UTM.Term) (v : nat),
        strip_env ΓΓ0 = strip_env ΓΓ ->
        (A ↓ v ⊂ strip_env ΓΓ)%UT ->
        exists AA : Term, (AA ↓ v ⊂ ΓΓ0) /\ A = strip AA
  a : UTM.Term
  n : nat
  H4 : (a ↓ n ∈ strip_env ΓΓ)%UT
  B : Term
  H : B ↓ n ⊂ ΓΓ
  H0 : (a ↑ (S n))%UT = strip B
  ============================
   (a ↑ (S (S n)))%UT = (a ↑ (1 + S n))%UT

subgoal 2 (ID 134) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

trivial.
7 subgoals, subgoal 1 (ID 134)
  
  Γ : UEM.Env
  A : UTM.Term
  v : nat
  w : (Γ ⊣)%UT
  ΓΓ : Env
  H : strip_env ΓΓ = Γ
  H0 : ΓΓ ⊣
  i : (A ↓ v ⊂ Γ)%UT
  H1 : exists AA : Term, (AA ↓ v ⊂ ΓΓ) /\ A = strip AA
  ============================
   exists (Γ' : Env) (M' A' : Term),
     strip_env Γ' = Γ /\
     strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)


destruct H1 as (B &? & ?).
7 subgoals, subgoal 1 (ID 429)
  
  Γ : UEM.Env
  A : UTM.Term
  v : nat
  w : (Γ ⊣)%UT
  ΓΓ : Env
  H : strip_env ΓΓ = Γ
  H0 : ΓΓ ⊣
  i : (A ↓ v ⊂ Γ)%UT
  B : Term
  H1 : B ↓ v ⊂ ΓΓ
  H2 : A = strip B
  ============================
   exists (Γ' : Env) (M' A' : Term),
     strip_env Γ' = Γ /\
     strip M' = #v%UT /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 44) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

exists ΓΓ; exists #v; exists B; simpl; intuition.
6 subgoals, subgoal 1 (ID 44)
  
  Γ : UEM.Env
  A : UTM.Term
  B : UTM.Term
  s : Sorts
  t : Sorts
  u : Sorts
  r : Rel s t u
  t0 : Γ ⊢ A : !s%UT
  H : exists (Γ' : Env) (M' A' : Term),
        strip_env Γ' = Γ /\
        strip M' = A /\ strip A' = !s%UT /\ Γ' ⊢ M' ▹ M' : A'
  t1 : A :: Γ ⊢ B : !t%UT
  H0 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = A :: Γ /\
         strip M' = B /\ strip A' = !t%UT /\ Γ' ⊢ M' ▹ M' : A'
  ============================
   exists (Γ' : Env) (M' A' : Term),
     strip_env Γ' = Γ /\
     strip M' = (Π (A), B)%UT /\ strip A' = !u%UT /\ Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)


destruct H as (Γa & A' & ? & ? & ? & ? & ?).
6 subgoals, subgoal 1 (ID 506)
  
  Γ : UEM.Env
  A : UTM.Term
  B : UTM.Term
  s : Sorts
  t : Sorts
  u : Sorts
  r : Rel s t u
  t0 : Γ ⊢ A : !s%UT
  Γa : Env
  A' : Term
  x : Term
  H : strip_env Γa = Γ
  H1 : strip A' = A
  H2 : strip x = !s%UT
  H3 : Γa ⊢ A' ▹ A' : x
  t1 : A :: Γ ⊢ B : !t%UT
  H0 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = A :: Γ /\
         strip M' = B /\ strip A' = !t%UT /\ Γ' ⊢ M' ▹ M' : A'
  ============================
   exists (Γ' : Env) (M' A'0 : Term),
     strip_env Γ' = Γ /\
     strip M' = (Π (A), B)%UT /\ strip A'0 = !u%UT /\ Γ' ⊢ M' ▹ M' : A'0

subgoal 2 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

destruct x; simpl in H2; try discriminate.
6 subgoals, subgoal 1 (ID 560)
  
  Γ : UEM.Env
  A : UTM.Term
  B : UTM.Term
  s : Sorts
  t : Sorts
  u : Sorts
  r : Rel s t u
  t0 : Γ ⊢ A : !s%UT
  Γa : Env
  A' : Term
  s0 : Sorts
  H : strip_env Γa = Γ
  H1 : strip A' = A
  H2 : !s0%UT = !s%UT
  H3 : Γa ⊢ A' ▹ A' : !s0
  t1 : A :: Γ ⊢ B : !t%UT
  H0 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = A :: Γ /\
         strip M' = B /\ strip A' = !t%UT /\ Γ' ⊢ M' ▹ M' : A'
  ============================
   exists (Γ' : Env) (M' A'0 : Term),
     strip_env Γ' = Γ /\
     strip M' = (Π (A), B)%UT /\ strip A'0 = !u%UT /\ Γ' ⊢ M' ▹ M' : A'0

subgoal 2 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)


injection H2; intros; subst; clear H2.
6 subgoals, subgoal 1 (ID 609)
  
  B : UTM.Term
  s : Sorts
  t : Sorts
  u : Sorts
  r : Rel s t u
  Γa : Env
  A' : Term
  H3 : Γa ⊢ A' ▹ A' : !s
  t0 : strip_env Γa ⊢ strip A' : !s%UT
  t1 : strip A' :: strip_env Γa ⊢ B : !t%UT
  H0 : exists (Γ' : Env) (M' A'0 : Term),
         strip_env Γ' = strip A' :: strip_env Γa /\
         strip M' = B /\ strip A'0 = !t%UT /\ Γ' ⊢ M' ▹ M' : A'0
  ============================
   exists (Γ' : Env) (M' A'0 : Term),
     strip_env Γ' = strip_env Γa /\
     strip M' = (Π (strip A'), B)%UT /\
     strip A'0 = !u%UT /\ Γ' ⊢ M' ▹ M' : A'0

subgoal 2 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)


destruct H0 as (Γb & B' & ? & ? & ? & ? & ?).
6 subgoals, subgoal 1 (ID 633)
  
  B : UTM.Term
  s : Sorts
  t : Sorts
  u : Sorts
  r : Rel s t u
  Γa : Env
  A' : Term
  H3 : Γa ⊢ A' ▹ A' : !s
  t0 : strip_env Γa ⊢ strip A' : !s%UT
  t1 : strip A' :: strip_env Γa ⊢ B : !t%UT
  Γb : Env
  B' : Term
  x : Term
  H : strip_env Γb = strip A' :: strip_env Γa
  H0 : strip B' = B
  H1 : strip x = !t%UT
  H2 : Γb ⊢ B' ▹ B' : x
  ============================
   exists (Γ' : Env) (M' A'0 : Term),
     strip_env Γ' = strip_env Γa /\
     strip M' = (Π (strip A'), B)%UT /\
     strip A'0 = !u%UT /\ Γ' ⊢ M' ▹ M' : A'0

subgoal 2 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

destruct x; simpl in H1; try discriminate.
6 subgoals, subgoal 1 (ID 677)
  
  B : UTM.Term
  s : Sorts
  t : Sorts
  u : Sorts
  r : Rel s t u
  Γa : Env
  A' : Term
  H3 : Γa ⊢ A' ▹ A' : !s
  t0 : strip_env Γa ⊢ strip A' : !s%UT
  t1 : strip A' :: strip_env Γa ⊢ B : !t%UT
  Γb : Env
  B' : Term
  s0 : Sorts
  H : strip_env Γb = strip A' :: strip_env Γa
  H0 : strip B' = B
  H1 : !s0%UT = !t%UT
  H2 : Γb ⊢ B' ▹ B' : !s0
  ============================
   exists (Γ' : Env) (M' A'0 : Term),
     strip_env Γ' = strip_env Γa /\
     strip M' = (Π (strip A'), B)%UT /\
     strip A'0 = !u%UT /\ Γ' ⊢ M' ▹ M' : A'0

subgoal 2 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)


injection H1; intros; subst; clear H1.
6 subgoals, subgoal 1 (ID 717)
  
  s : Sorts
  t : Sorts
  u : Sorts
  r : Rel s t u
  Γa : Env
  A' : Term
  H3 : Γa ⊢ A' ▹ A' : !s
  t0 : strip_env Γa ⊢ strip A' : !s%UT
  Γb : Env
  B' : Term
  H : strip_env Γb = strip A' :: strip_env Γa
  H2 : Γb ⊢ B' ▹ B' : !t
  t1 : strip A' :: strip_env Γa ⊢ strip B' : !t%UT
  ============================
   exists (Γ' : Env) (M' A'0 : Term),
     strip_env Γ' = strip_env Γa /\
     strip M' = (Π (strip A'), strip B')%UT /\
     strip A'0 = !u%UT /\ Γ' ⊢ M' ▹ M' : A'0

subgoal 2 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)


exists Γa ; exists (Pi A' B'); exists !u; simpl; intuition.
6 subgoals, subgoal 1 (ID 733)
  
  s : Sorts
  t : Sorts
  u : Sorts
  r : Rel s t u
  Γa : Env
  A' : Term
  H3 : Γa ⊢ A' ▹ A' : !s
  t0 : strip_env Γa ⊢ strip A' : !s%UT
  Γb : Env
  B' : Term
  H : strip_env Γb = strip A' :: strip_env Γa
  H2 : Γb ⊢ B' ▹ B' : !t
  t1 : strip A' :: strip_env Γa ⊢ strip B' : !t%UT
  ============================
   Γa ⊢ Π (A'), B' ▹ Π (A'), B' : !u

subgoal 2 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars:)

econstructor.
8 subgoals, subgoal 1 (ID 756)
  
  s : Sorts
  t : Sorts
  u : Sorts
  r : Rel s t u
  Γa : Env
  A' : Term
  H3 : Γa ⊢ A' ▹ A' : !s
  t0 : strip_env Γa ⊢ strip A' : !s%UT
  Γb : Env
  B' : Term
  H : strip_env Γb = strip A' :: strip_env Γa
  H2 : Γb ⊢ B' ▹ B' : !t
  t1 : strip A' :: strip_env Γa ⊢ strip B' : !t%UT
  ============================
   Rel ?754 ?755 u

subgoal 2 (ID 757) is:
 Γa ⊢ A' ▹ A' : !?754
subgoal 3 (ID 758) is:
 A' :: Γa ⊢ B' ▹ B' : !?755
subgoal 4 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 open, ?755 open,)


apply r.
7 subgoals, subgoal 1 (ID 757)
  
  s : Sorts
  t : Sorts
  u : Sorts
  r : Rel s t u
  Γa : Env
  A' : Term
  H3 : Γa ⊢ A' ▹ A' : !s
  t0 : strip_env Γa ⊢ strip A' : !s%UT
  Γb : Env
  B' : Term
  H : strip_env Γb = strip A' :: strip_env Γa
  H2 : Γb ⊢ B' ▹ B' : !t
  t1 : strip A' :: strip_env Γa ⊢ strip B' : !t%UT
  ============================
   Γa ⊢ A' ▹ A' : !s

subgoal 2 (ID 758) is:
 A' :: Γa ⊢ B' ▹ B' : !t
subgoal 3 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using ,)

trivial.
6 subgoals, subgoal 1 (ID 758)
  
  s : Sorts
  t : Sorts
  u : Sorts
  r : Rel s t u
  Γa : Env
  A' : Term
  H3 : Γa ⊢ A' ▹ A' : !s
  t0 : strip_env Γa ⊢ strip A' : !s%UT
  Γb : Env
  B' : Term
  H : strip_env Γb = strip A' :: strip_env Γa
  H2 : Γb ⊢ B' ▹ B' : !t
  t1 : strip A' :: strip_env Γa ⊢ strip B' : !t%UT
  ============================
   A' :: Γa ⊢ B' ▹ B' : !t

subgoal 2 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using ,)

eapply ErasedContextSwitch.
8 subgoals, subgoal 1 (ID 772)
  
  s : Sorts
  t : Sorts
  u : Sorts
  r : Rel s t u
  Γa : Env
  A' : Term
  H3 : Γa ⊢ A' ▹ A' : !s
  t0 : strip_env Γa ⊢ strip A' : !s%UT
  Γb : Env
  B' : Term
  H : strip_env Γb = strip A' :: strip_env Γa
  H2 : Γb ⊢ B' ▹ B' : !t
  t1 : strip A' :: strip_env Γa ⊢ strip B' : !t%UT
  ============================
   ?771 ⊢ B' ▹ B' : !t

subgoal 2 (ID 773) is:
 A' :: Γa ⊣
subgoal 3 (ID 774) is:
 strip_env ?771 = strip_env (A' :: Γa)
subgoal 4 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 open,)

apply H2.
7 subgoals, subgoal 1 (ID 773)
  
  s : Sorts
  t : Sorts
  u : Sorts
  r : Rel s t u
  Γa : Env
  A' : Term
  H3 : Γa ⊢ A' ▹ A' : !s
  t0 : strip_env Γa ⊢ strip A' : !s%UT
  Γb : Env
  B' : Term
  H : strip_env Γb = strip A' :: strip_env Γa
  H2 : Γb ⊢ B' ▹ B' : !t
  t1 : strip A' :: strip_env Γa ⊢ strip B' : !t%UT
  ============================
   A' :: Γa ⊣

subgoal 2 (ID 774) is:
 strip_env Γb = strip_env (A' :: Γa)
subgoal 3 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using ,)

econstructor.
7 subgoals, subgoal 1 (ID 779)
  
  s : Sorts
  t : Sorts
  u : Sorts
  r : Rel s t u
  Γa : Env
  A' : Term
  H3 : Γa ⊢ A' ▹ A' : !s
  t0 : strip_env Γa ⊢ strip A' : !s%UT
  Γb : Env
  B' : Term
  H : strip_env Γb = strip A' :: strip_env Γa
  H2 : Γb ⊢ B' ▹ B' : !t
  t1 : strip A' :: strip_env Γa ⊢ strip B' : !t%UT
  ============================
   Γa ⊢ A' ▹ ?777 : !?778

subgoal 2 (ID 774) is:
 strip_env Γb = strip_env (A' :: Γa)
subgoal 3 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 open, ?778 open,)

eapply H3.
6 subgoals, subgoal 1 (ID 774)
  
  s : Sorts
  t : Sorts
  u : Sorts
  r : Rel s t u
  Γa : Env
  A' : Term
  H3 : Γa ⊢ A' ▹ A' : !s
  t0 : strip_env Γa ⊢ strip A' : !s%UT
  Γb : Env
  B' : Term
  H : strip_env Γb = strip A' :: strip_env Γa
  H2 : Γb ⊢ B' ▹ B' : !t
  t1 : strip A' :: strip_env Γa ⊢ strip B' : !t%UT
  ============================
   strip_env Γb = strip_env (A' :: Γa)

subgoal 2 (ID 58) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = (λ [A], M)%UT /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using ,)

simpl; trivial.
5 subgoals, subgoal 1 (ID 58)
  
  Γ : UEM.Env
  A : UTM.Term
  B : UTM.Term
  M : UTM.Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A : !s1%UT
  H : exists (Γ' : Env) (M' A' : Term),
        strip_env Γ' = Γ /\
        strip M' = A /\ strip A' = !s1%UT /\ Γ' ⊢ M' ▹ M' : A'
  t0 : A :: Γ ⊢ B : !s2%UT
  H0 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = A :: Γ /\
         strip M' = B /\ strip A' = !s2%UT /\ Γ' ⊢ M' ▹ M' : A'
  t1 : A :: Γ ⊢ M : B
  H1 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = A :: Γ /\
         strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
  ============================
   exists (Γ' : Env) (M' A' : Term),
     strip_env Γ' = Γ /\
     strip M' = (λ [A], M)%UT /\
     strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using ,)


destruct H as (Γa & Ma & ? & ? & ?& ? & ?).
5 subgoals, subgoal 1 (ID 811)
  
  Γ : UEM.Env
  A : UTM.Term
  B : UTM.Term
  M : UTM.Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A : !s1%UT
  Γa : Env
  Ma : Term
  x : Term
  H : strip_env Γa = Γ
  H2 : strip Ma = A
  H3 : strip x = !s1%UT
  H4 : Γa ⊢ Ma ▹ Ma : x
  t0 : A :: Γ ⊢ B : !s2%UT
  H0 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = A :: Γ /\
         strip M' = B /\ strip A' = !s2%UT /\ Γ' ⊢ M' ▹ M' : A'
  t1 : A :: Γ ⊢ M : B
  H1 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = A :: Γ /\
         strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
  ============================
   exists (Γ' : Env) (M' A' : Term),
     strip_env Γ' = Γ /\
     strip M' = (λ [A], M)%UT /\
     strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using ,)

destruct x; simpl in H3; try discriminate.
5 subgoals, subgoal 1 (ID 865)
  
  Γ : UEM.Env
  A : UTM.Term
  B : UTM.Term
  M : UTM.Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A : !s1%UT
  Γa : Env
  Ma : Term
  s : Sorts
  H : strip_env Γa = Γ
  H2 : strip Ma = A
  H3 : !s%UT = !s1%UT
  H4 : Γa ⊢ Ma ▹ Ma : !s
  t0 : A :: Γ ⊢ B : !s2%UT
  H0 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = A :: Γ /\
         strip M' = B /\ strip A' = !s2%UT /\ Γ' ⊢ M' ▹ M' : A'
  t1 : A :: Γ ⊢ M : B
  H1 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = A :: Γ /\
         strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
  ============================
   exists (Γ' : Env) (M' A' : Term),
     strip_env Γ' = Γ /\
     strip M' = (λ [A], M)%UT /\
     strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using ,)


injection H3; intros; subst; clear H3.
5 subgoals, subgoal 1 (ID 918)
  
  B : UTM.Term
  M : UTM.Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t0 : strip Ma :: strip_env Γa ⊢ B : !s2%UT
  H0 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = strip Ma :: strip_env Γa /\
         strip M' = B /\ strip A' = !s2%UT /\ Γ' ⊢ M' ▹ M' : A'
  t1 : strip Ma :: strip_env Γa ⊢ M : B
  H1 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = strip Ma :: strip_env Γa /\
         strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
  ============================
   exists (Γ' : Env) (M' A' : Term),
     strip_env Γ' = strip_env Γa /\
     strip M' = (λ [strip Ma], M)%UT /\
     strip A' = (Π (strip Ma), B)%UT /\ Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using ,)

destruct H0 as (Γb & Mb & ? & ? & ? & ? & ?).
5 subgoals, subgoal 1 (ID 949)
  
  B : UTM.Term
  M : UTM.Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t0 : strip Ma :: strip_env Γa ⊢ B : !s2%UT
  Γb : Env
  Mb : Term
  x : Term
  H : strip_env Γb = strip Ma :: strip_env Γa
  H0 : strip Mb = B
  H2 : strip x = !s2%UT
  H3 : Γb ⊢ Mb ▹ Mb : x
  t1 : strip Ma :: strip_env Γa ⊢ M : B
  H1 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = strip Ma :: strip_env Γa /\
         strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
  ============================
   exists (Γ' : Env) (M' A' : Term),
     strip_env Γ' = strip_env Γa /\
     strip M' = (λ [strip Ma], M)%UT /\
     strip A' = (Π (strip Ma), B)%UT /\ Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using ,)


destruct x; simpl in H2; try discriminate.
5 subgoals, subgoal 1 (ID 1003)
  
  B : UTM.Term
  M : UTM.Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t0 : strip Ma :: strip_env Γa ⊢ B : !s2%UT
  Γb : Env
  Mb : Term
  s : Sorts
  H : strip_env Γb = strip Ma :: strip_env Γa
  H0 : strip Mb = B
  H2 : !s%UT = !s2%UT
  H3 : Γb ⊢ Mb ▹ Mb : !s
  t1 : strip Ma :: strip_env Γa ⊢ M : B
  H1 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = strip Ma :: strip_env Γa /\
         strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
  ============================
   exists (Γ' : Env) (M' A' : Term),
     strip_env Γ' = strip_env Γa /\
     strip M' = (λ [strip Ma], M)%UT /\
     strip A' = (Π (strip Ma), B)%UT /\ Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using ,)

injection H2; intros; subst; clear H2.
5 subgoals, subgoal 1 (ID 1045)
  
  M : UTM.Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  Γb : Env
  Mb : Term
  H : strip_env Γb = strip Ma :: strip_env Γa
  H3 : Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t1 : strip Ma :: strip_env Γa ⊢ M : strip Mb
  H1 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = strip Ma :: strip_env Γa /\
         strip M' = M /\ strip A' = strip Mb /\ Γ' ⊢ M' ▹ M' : A'
  ============================
   exists (Γ' : Env) (M' A' : Term),
     strip_env Γ' = strip_env Γa /\
     strip M' = (λ [strip Ma], M)%UT /\
     strip A' = (Π (strip Ma), strip Mb)%UT /\ Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using ,)


destruct H1 as (Γm & M' & B' & ? & ?& ? &?).
5 subgoals, subgoal 1 (ID 1069)
  
  M : UTM.Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  Γb : Env
  Mb : Term
  H : strip_env Γb = strip Ma :: strip_env Γa
  H3 : Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t1 : strip Ma :: strip_env Γa ⊢ M : strip Mb
  Γm : Env
  M' : Term
  B' : Term
  H0 : strip_env Γm = strip Ma :: strip_env Γa
  H1 : strip M' = M
  H2 : strip B' = strip Mb
  H5 : Γm ⊢ M' ▹ M' : B'
  ============================
   exists (Γ' : Env) (M'0 A' : Term),
     strip_env Γ' = strip_env Γa /\
     strip M'0 = (λ [strip Ma], M)%UT /\
     strip A' = (Π (strip Ma), strip Mb)%UT /\ Γ' ⊢ M'0 ▹ M'0 : A'

subgoal 2 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using ,)

destruct Γb; simpl in H.
6 subgoals, subgoal 1 (ID 1088)
  
  M : UTM.Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  Mb : Term
  H : nil = strip Ma :: strip_env Γa
  H3 : nil ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t1 : strip Ma :: strip_env Γa ⊢ M : strip Mb
  Γm : Env
  M' : Term
  B' : Term
  H0 : strip_env Γm = strip Ma :: strip_env Γa
  H1 : strip M' = M
  H2 : strip B' = strip Mb
  H5 : Γm ⊢ M' ▹ M' : B'
  ============================
   exists (Γ' : Env) (M'0 A' : Term),
     strip_env Γ' = strip_env Γa /\
     strip M'0 = (λ [strip Ma], M)%UT /\
     strip A' = (Π (strip Ma), strip Mb)%UT /\ Γ' ⊢ M'0 ▹ M'0 : A'

subgoal 2 (ID 1089) is:
 exists (Γ' : Env) (M'0 A' : Term),
   strip_env Γ' = strip_env Γa /\
   strip M'0 = (λ [strip Ma], M)%UT /\
   strip A' = (Π (strip Ma), strip Mb)%UT /\ Γ' ⊢ M'0 ▹ M'0 : A'
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using ,)

discriminate.
5 subgoals, subgoal 1 (ID 1089)
  
  M : UTM.Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H : strip t2 :: strip_env Γb = strip Ma :: strip_env Γa
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t1 : strip Ma :: strip_env Γa ⊢ M : strip Mb
  Γm : Env
  M' : Term
  B' : Term
  H0 : strip_env Γm = strip Ma :: strip_env Γa
  H1 : strip M' = M
  H2 : strip B' = strip Mb
  H5 : Γm ⊢ M' ▹ M' : B'
  ============================
   exists (Γ' : Env) (M'0 A' : Term),
     strip_env Γ' = strip_env Γa /\
     strip M'0 = (λ [strip Ma], M)%UT /\
     strip A' = (Π (strip Ma), strip Mb)%UT /\ Γ' ⊢ M'0 ▹ M'0 : A'

subgoal 2 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using ,)


injection H; intros; subst; clear H.
5 subgoals, subgoal 1 (ID 1110)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  Γm : Env
  M' : Term
  B' : Term
  H0 : strip_env Γm = strip Ma :: strip_env Γa
  H2 : strip B' = strip Mb
  H5 : Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  ============================
   exists (Γ' : Env) (M'0 A' : Term),
     strip_env Γ' = strip_env Γa /\
     strip M'0 = (λ [strip Ma], strip M')%UT /\
     strip A' = (Π (strip Ma), strip Mb)%UT /\ Γ' ⊢ M'0 ▹ M'0 : A'

subgoal 2 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using ,)

destruct Γm; simpl in H0.
6 subgoals, subgoal 1 (ID 1129)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  M' : Term
  B' : Term
  H0 : nil = strip Ma :: strip_env Γa
  H2 : strip B' = strip Mb
  H5 : nil ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  ============================
   exists (Γ' : Env) (M'0 A' : Term),
     strip_env Γ' = strip_env Γa /\
     strip M'0 = (λ [strip Ma], strip M')%UT /\
     strip A' = (Π (strip Ma), strip Mb)%UT /\ Γ' ⊢ M'0 ▹ M'0 : A'

subgoal 2 (ID 1130) is:
 exists (Γ' : Env) (M'0 A' : Term),
   strip_env Γ' = strip_env Γa /\
   strip M'0 = (λ [strip Ma], strip M')%UT /\
   strip A' = (Π (strip Ma), strip Mb)%UT /\ Γ' ⊢ M'0 ▹ M'0 : A'
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using ,)

discriminate.
5 subgoals, subgoal 1 (ID 1130)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H0 : strip t3 :: strip_env Γm = strip Ma :: strip_env Γa
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  ============================
   exists (Γ' : Env) (M'0 A' : Term),
     strip_env Γ' = strip_env Γa /\
     strip M'0 = (λ [strip Ma], strip M')%UT /\
     strip A' = (Π (strip Ma), strip Mb)%UT /\ Γ' ⊢ M'0 ▹ M'0 : A'

subgoal 2 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using ,)


injection H0; intros; subst; clear H0.
5 subgoals, subgoal 1 (ID 1146)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  ============================
   exists (Γ' : Env) (M'0 A' : Term),
     strip_env Γ' = strip_env Γa /\
     strip M'0 = (λ [strip Ma], strip M')%UT /\
     strip A' = (Π (strip Ma), strip Mb)%UT /\ Γ' ⊢ M'0 ▹ M'0 : A'

subgoal 2 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using ,)


exists Γa; exists (La Ma M'); exists (Pi Ma Mb); simpl; intuition.
5 subgoals, subgoal 1 (ID 1162)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  ============================
   Γa ⊢ λ [Ma], M' ▹ λ [Ma], M' : Π (Ma), Mb

subgoal 2 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using ,)

econstructor.
8 subgoals, subgoal 1 (ID 1198)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  ============================
   Rel ?1195 ?1196 ?1197

subgoal 2 (ID 1199) is:
 Γa ⊢ Ma ▹ Ma : !?1195
subgoal 3 (ID 1200) is:
 Ma :: Γa ⊢ Mb ▹ Mb : !?1196
subgoal 4 (ID 1201) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 open, ?1196 open, ?1197 open,)


apply r.
7 subgoals, subgoal 1 (ID 1199)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  ============================
   Γa ⊢ Ma ▹ Ma : !s1

subgoal 2 (ID 1200) is:
 Ma :: Γa ⊢ Mb ▹ Mb : !s2
subgoal 3 (ID 1201) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 4 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using ,)

trivial.
6 subgoals, subgoal 1 (ID 1200)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  ============================
   Ma :: Γa ⊢ Mb ▹ Mb : !s2

subgoal 2 (ID 1201) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using ,)

eapply ErasedContextSwitch.
8 subgoals, subgoal 1 (ID 1215)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  ============================
   ?1214 ⊢ Mb ▹ Mb : !s2

subgoal 2 (ID 1216) is:
 Ma :: Γa ⊣
subgoal 3 (ID 1217) is:
 strip_env ?1214 = strip_env (Ma :: Γa)
subgoal 4 (ID 1201) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 open,)

apply H3.
7 subgoals, subgoal 1 (ID 1216)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  ============================
   Ma :: Γa ⊣

subgoal 2 (ID 1217) is:
 strip_env (t2 :: Γb) = strip_env (Ma :: Γa)
subgoal 3 (ID 1201) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 4 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using ,)

econstructor.
7 subgoals, subgoal 1 (ID 1222)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  ============================
   Γa ⊢ Ma ▹ ?1220 : !?1221

subgoal 2 (ID 1217) is:
 strip_env (t2 :: Γb) = strip_env (Ma :: Γa)
subgoal 3 (ID 1201) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 4 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 open, ?1221 open,)

apply H4.
6 subgoals, subgoal 1 (ID 1217)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  ============================
   strip_env (t2 :: Γb) = strip_env (Ma :: Γa)

subgoal 2 (ID 1201) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using ,)

simpl.
6 subgoals, subgoal 1 (ID 1223)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  ============================
   strip t2 :: strip_env Γb = strip Ma :: strip_env Γa

subgoal 2 (ID 1201) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using ,)

rewrite H6.
6 subgoals, subgoal 1 (ID 1224)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  ============================
   strip t2 :: strip_env Γa = strip Ma :: strip_env Γa

subgoal 2 (ID 1201) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using ,)

rewrite H7.
6 subgoals, subgoal 1 (ID 1225)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  ============================
   strip Ma :: strip_env Γa = strip Ma :: strip_env Γa

subgoal 2 (ID 1201) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using ,)

trivial.
5 subgoals, subgoal 1 (ID 1201)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  ============================
   Ma :: Γa ⊢ M' ▹ M' : Mb

subgoal 2 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using ,)


destruct (typ_wf (t3 :: Γm) M' M' B' H5).
6 subgoals, subgoal 1 (ID 1235)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  H0 : exists s : Sorts, B' = !s
  ============================
   Ma :: Γa ⊢ M' ▹ M' : Mb

subgoal 2 (ID 1236) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using ,)

destruct H0; subst.
6 subgoals, subgoal 1 (ID 1246)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  x : Sorts
  H2 : strip !x = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : !x
  ============================
   Ma :: Γa ⊢ M' ▹ M' : Mb

subgoal 2 (ID 1236) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using ,)

simpl in H2; destruct Mb; try discriminate.
6 subgoals, subgoal 1 (ID 1279)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  s : Sorts
  H3 : t2 :: Γb ⊢ !s ▹ !s : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip !s : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip !s
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  x : Sorts
  H2 : !x%UT = strip !s
  H5 : t3 :: Γm ⊢ M' ▹ M' : !x
  ============================
   Ma :: Γa ⊢ M' ▹ M' : !s

subgoal 2 (ID 1236) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using ,)


simpl in H2.
6 subgoals, subgoal 1 (ID 1340)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  s : Sorts
  H3 : t2 :: Γb ⊢ !s ▹ !s : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip !s : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip !s
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  x : Sorts
  H2 : !x%UT = !s%UT
  H5 : t3 :: Γm ⊢ M' ▹ M' : !x
  ============================
   Ma :: Γa ⊢ M' ▹ M' : !s

subgoal 2 (ID 1236) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using ,)

injection H2; intros; subst; clear H2.
6 subgoals, subgoal 1 (ID 1352)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  s : Sorts
  H3 : t2 :: Γb ⊢ !s ▹ !s : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip !s : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip !s
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  H5 : t3 :: Γm ⊢ M' ▹ M' : !s
  ============================
   Ma :: Γa ⊢ M' ▹ M' : !s

subgoal 2 (ID 1236) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using ,)

eapply ErasedContextSwitch.
8 subgoals, subgoal 1 (ID 1366)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  s : Sorts
  H3 : t2 :: Γb ⊢ !s ▹ !s : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip !s : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip !s
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  H5 : t3 :: Γm ⊢ M' ▹ M' : !s
  ============================
   ?1365 ⊢ M' ▹ M' : !s

subgoal 2 (ID 1367) is:
 Ma :: Γa ⊣
subgoal 3 (ID 1368) is:
 strip_env ?1365 = strip_env (Ma :: Γa)
subgoal 4 (ID 1236) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 open,)

apply H5.
7 subgoals, subgoal 1 (ID 1367)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  s : Sorts
  H3 : t2 :: Γb ⊢ !s ▹ !s : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip !s : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip !s
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  H5 : t3 :: Γm ⊢ M' ▹ M' : !s
  ============================
   Ma :: Γa ⊣

subgoal 2 (ID 1368) is:
 strip_env (t3 :: Γm) = strip_env (Ma :: Γa)
subgoal 3 (ID 1236) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 4 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using ,)

econstructor.
7 subgoals, subgoal 1 (ID 1373)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  s : Sorts
  H3 : t2 :: Γb ⊢ !s ▹ !s : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip !s : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip !s
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  H5 : t3 :: Γm ⊢ M' ▹ M' : !s
  ============================
   Γa ⊢ Ma ▹ ?1371 : !?1372

subgoal 2 (ID 1368) is:
 strip_env (t3 :: Γm) = strip_env (Ma :: Γa)
subgoal 3 (ID 1236) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 4 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 open, ?1372 open,)

apply H4.
6 subgoals, subgoal 1 (ID 1368)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  s : Sorts
  H3 : t2 :: Γb ⊢ !s ▹ !s : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip !s : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip !s
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  H5 : t3 :: Γm ⊢ M' ▹ M' : !s
  ============================
   strip_env (t3 :: Γm) = strip_env (Ma :: Γa)

subgoal 2 (ID 1236) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using ,)


simpl.
6 subgoals, subgoal 1 (ID 1374)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  s : Sorts
  H3 : t2 :: Γb ⊢ !s ▹ !s : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip !s : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip !s
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  H5 : t3 :: Γm ⊢ M' ▹ M' : !s
  ============================
   strip t3 :: strip_env Γm = strip Ma :: strip_env Γa

subgoal 2 (ID 1236) is:
 Ma :: Γa ⊢ M' ▹ M' : Mb
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using ,)

rewrite H1; rewrite H; trivial.
5 subgoals, subgoal 1 (ID 1236)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  H0 : exists s : Sorts, t3 :: Γm ⊢ B' ▹ B' : !s
  ============================
   Ma :: Γa ⊢ M' ▹ M' : Mb

subgoal 2 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using ,)

destruct H0 as ( x & ?).
5 subgoals, subgoal 1 (ID 1380)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  x : Sorts
  H0 : t3 :: Γm ⊢ B' ▹ B' : !x
  ============================
   Ma :: Γa ⊢ M' ▹ M' : Mb

subgoal 2 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using ,)


eapply ErasedContextSwitch.
7 subgoals, subgoal 1 (ID 1394)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  x : Sorts
  H0 : t3 :: Γm ⊢ B' ▹ B' : !x
  ============================
   ?1393 ⊢ M' ▹ M' : Mb

subgoal 2 (ID 1395) is:
 Ma :: Γa ⊣
subgoal 3 (ID 1396) is:
 strip_env ?1393 = strip_env (Ma :: Γa)
subgoal 4 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 open,)

apply typ_pcompat with B'.
8 subgoals, subgoal 1 (ID 1397)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  x : Sorts
  H0 : t3 :: Γm ⊢ B' ▹ B' : !x
  ============================
   ?1393 ⊢ M' ▹ M' : B'

subgoal 2 (ID 1398) is:
 ?1393 ⊢ B' ≡' Mb
subgoal 3 (ID 1395) is:
 Ma :: Γa ⊣
subgoal 4 (ID 1396) is:
 strip_env ?1393 = strip_env (Ma :: Γa)
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 open,)

apply H5.
7 subgoals, subgoal 1 (ID 1398)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  x : Sorts
  H0 : t3 :: Γm ⊢ B' ▹ B' : !x
  ============================
   t3 :: Γm ⊢ B' ≡' Mb

subgoal 2 (ID 1395) is:
 Ma :: Γa ⊣
subgoal 3 (ID 1396) is:
 strip_env (t3 :: Γm) = strip_env (Ma :: Γa)
subgoal 4 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using ,)

eapply ErasedTypeConversion.
9 subgoals, subgoal 1 (ID 1401)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  x : Sorts
  H0 : t3 :: Γm ⊢ B' ▹ B' : !x
  ============================
   strip B' = strip Mb

subgoal 2 (ID 1402) is:
 t3 :: Γm ⊢ B' ▹ B' : !?1399
subgoal 3 (ID 1403) is:
 t3 :: Γm ⊢ Mb ▹ Mb : !?1400
subgoal 4 (ID 1395) is:
 Ma :: Γa ⊣
subgoal 5 (ID 1396) is:
 strip_env (t3 :: Γm) = strip_env (Ma :: Γa)
subgoal 6 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 8 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 9 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 open, ?1400 open,)

trivial.
8 subgoals, subgoal 1 (ID 1402)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  x : Sorts
  H0 : t3 :: Γm ⊢ B' ▹ B' : !x
  ============================
   t3 :: Γm ⊢ B' ▹ B' : !?1399

subgoal 2 (ID 1403) is:
 t3 :: Γm ⊢ Mb ▹ Mb : !?1400
subgoal 3 (ID 1395) is:
 Ma :: Γa ⊣
subgoal 4 (ID 1396) is:
 strip_env (t3 :: Γm) = strip_env (Ma :: Γa)
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 open, ?1400 open,)

apply H0.
7 subgoals, subgoal 1 (ID 1403)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  x : Sorts
  H0 : t3 :: Γm ⊢ B' ▹ B' : !x
  ============================
   t3 :: Γm ⊢ Mb ▹ Mb : !?1400

subgoal 2 (ID 1395) is:
 Ma :: Γa ⊣
subgoal 3 (ID 1396) is:
 strip_env (t3 :: Γm) = strip_env (Ma :: Γa)
subgoal 4 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 open,)


eapply ErasedContextSwitch.
9 subgoals, subgoal 1 (ID 1417)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  x : Sorts
  H0 : t3 :: Γm ⊢ B' ▹ B' : !x
  ============================
   ?1416 ⊢ Mb ▹ Mb : !?1400

subgoal 2 (ID 1418) is:
 t3 :: Γm ⊣
subgoal 3 (ID 1419) is:
 strip_env ?1416 = strip_env (t3 :: Γm)
subgoal 4 (ID 1395) is:
 Ma :: Γa ⊣
subgoal 5 (ID 1396) is:
 strip_env (t3 :: Γm) = strip_env (Ma :: Γa)
subgoal 6 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 8 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 9 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 open, ?1412 using ?1416 , ?1416 open,)

apply H3.
8 subgoals, subgoal 1 (ID 1418)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  x : Sorts
  H0 : t3 :: Γm ⊢ B' ▹ B' : !x
  ============================
   t3 :: Γm ⊣

subgoal 2 (ID 1419) is:
 strip_env (t2 :: Γb) = strip_env (t3 :: Γm)
subgoal 3 (ID 1395) is:
 Ma :: Γa ⊣
subgoal 4 (ID 1396) is:
 strip_env (t3 :: Γm) = strip_env (Ma :: Γa)
subgoal 5 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using ,)

apply wf_from_typ in H0; trivial.
7 subgoals, subgoal 1 (ID 1419)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  x : Sorts
  H0 : t3 :: Γm ⊢ B' ▹ B' : !x
  ============================
   strip_env (t2 :: Γb) = strip_env (t3 :: Γm)

subgoal 2 (ID 1395) is:
 Ma :: Γa ⊣
subgoal 3 (ID 1396) is:
 strip_env (t3 :: Γm) = strip_env (Ma :: Γa)
subgoal 4 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using ,)

simpl.
7 subgoals, subgoal 1 (ID 1422)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  x : Sorts
  H0 : t3 :: Γm ⊢ B' ▹ B' : !x
  ============================
   strip t2 :: strip_env Γb = strip t3 :: strip_env Γm

subgoal 2 (ID 1395) is:
 Ma :: Γa ⊣
subgoal 3 (ID 1396) is:
 strip_env (t3 :: Γm) = strip_env (Ma :: Γa)
subgoal 4 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using ,)

rewrite H7; rewrite H1; rewrite H6; rewrite H; trivial.
6 subgoals, subgoal 1 (ID 1395)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  x : Sorts
  H0 : t3 :: Γm ⊢ B' ▹ B' : !x
  ============================
   Ma :: Γa ⊣

subgoal 2 (ID 1396) is:
 strip_env (t3 :: Γm) = strip_env (Ma :: Γa)
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using ,)


econstructor.
6 subgoals, subgoal 1 (ID 1431)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  x : Sorts
  H0 : t3 :: Γm ⊢ B' ▹ B' : !x
  ============================
   Γa ⊢ Ma ▹ ?1429 : !?1430

subgoal 2 (ID 1396) is:
 strip_env (t3 :: Γm) = strip_env (Ma :: Γa)
subgoal 3 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 open, ?1430 open,)

apply H4.
5 subgoals, subgoal 1 (ID 1396)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  x : Sorts
  H0 : t3 :: Γm ⊢ B' ▹ B' : !x
  ============================
   strip_env (t3 :: Γm) = strip_env (Ma :: Γa)

subgoal 2 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)

simpl.
5 subgoals, subgoal 1 (ID 1432)
  
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  Γa : Env
  Ma : Term
  H4 : Γa ⊢ Ma ▹ Ma : !s1
  t : strip_env Γa ⊢ strip Ma : !s1%UT
  t2 : Term
  Γb : list Term
  Mb : Term
  H3 : t2 :: Γb ⊢ Mb ▹ Mb : !s2
  t0 : strip Ma :: strip_env Γa ⊢ strip Mb : !s2%UT
  t3 : Term
  Γm : list Term
  M' : Term
  B' : Term
  H2 : strip B' = strip Mb
  H5 : t3 :: Γm ⊢ M' ▹ M' : B'
  H6 : strip_env Γb = strip_env Γa
  H7 : strip t2 = strip Ma
  t1 : strip Ma :: strip_env Γa ⊢ strip M' : strip Mb
  H : strip_env Γm = strip_env Γa
  H1 : strip t3 = strip Ma
  x : Sorts
  H0 : t3 :: Γm ⊢ B' ▹ B' : !x
  ============================
   strip t3 :: strip_env Γm = strip Ma :: strip_env Γa

subgoal 2 (ID 67) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\
   strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)

rewrite H1; rewrite H; trivial.
4 subgoals, subgoal 1 (ID 67)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  A : UTM.Term
  B : UTM.Term
  t : Γ ⊢ M : (Π (A), B)%UT
  H : exists (Γ' : Env) (M' A' : Term),
        strip_env Γ' = Γ /\
        strip M' = M /\ strip A' = (Π (A), B)%UT /\ Γ' ⊢ M' ▹ M' : A'
  t0 : Γ ⊢ N : A
  H0 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = Γ /\
         strip M' = N /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
  ============================
   exists (Γ' : Env) (M' A' : Term),
     strip_env Γ' = Γ /\
     strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)


destruct H as (Γm & Mm & Tm & ? & ? & ? &?).
4 subgoals, subgoal 1 (ID 1465)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  A : UTM.Term
  B : UTM.Term
  t : Γ ⊢ M : (Π (A), B)%UT
  Γm : Env
  Mm : Term
  Tm : Term
  H : strip_env Γm = Γ
  H1 : strip Mm = M
  H2 : strip Tm = (Π (A), B)%UT
  H3 : Γm ⊢ Mm ▹ Mm : Tm
  t0 : Γ ⊢ N : A
  H0 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = Γ /\
         strip M' = N /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
  ============================
   exists (Γ' : Env) (M' A' : Term),
     strip_env Γ' = Γ /\
     strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)

destruct Tm; simpl in *; try discriminate.
4 subgoals, subgoal 1 (ID 1585)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  A : UTM.Term
  B : UTM.Term
  t : Γ ⊢ M : (Π (A), B)%UT
  Γm : Env
  Mm : Term
  Tm1 : Term
  Tm2 : Term
  H : strip_env Γm = Γ
  H1 : strip Mm = M
  H2 : (Π (strip Tm1), strip Tm2)%UT = (Π (A), B)%UT
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1), Tm2
  t0 : Γ ⊢ N : A
  H0 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = Γ /\
         strip M' = N /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
  ============================
   exists (Γ' : Env) (M' A' : Term),
     strip_env Γ' = Γ /\
     strip M' = M · N /\ strip A' = (B [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)


injection H2; intros; subst; clear H2.
4 subgoals, subgoal 1 (ID 1659)
  
  N : UTM.Term
  Γm : Env
  Mm : Term
  Tm1 : Term
  Tm2 : Term
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1), Tm2
  t0 : strip_env Γm ⊢ N : strip Tm1
  H0 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = strip_env Γm /\
         strip M' = N /\ strip A' = strip Tm1 /\ Γ' ⊢ M' ▹ M' : A'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1), strip Tm2)%UT
  ============================
   exists (Γ' : Env) (M' A' : Term),
     strip_env Γ' = strip_env Γm /\
     strip M' = strip Mm · N /\
     strip A' = ((strip Tm2) [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)

destruct H0 as (Γn & Mn & Tn &? & ? & ?& ?).
4 subgoals, subgoal 1 (ID 1690)
  
  N : UTM.Term
  Γm : Env
  Mm : Term
  Tm1 : Term
  Tm2 : Term
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1), Tm2
  t0 : strip_env Γm ⊢ N : strip Tm1
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H0 : strip Mn = N
  H1 : strip Tn = strip Tm1
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1), strip Tm2)%UT
  ============================
   exists (Γ' : Env) (M' A' : Term),
     strip_env Γ' = strip_env Γm /\
     strip M' = strip Mm · N /\
     strip A' = ((strip Tm2) [ ← N])%UT /\ Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)


exists Γm; exists (App Mm Tm1 Tm2 Mn); exists (Tm2 [ Mn]); intuition.
6 subgoals, subgoal 1 (ID 1701)
  
  N : UTM.Term
  Γm : Env
  Mm : Term
  Tm1 : Term
  Tm2 : Term
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1), Tm2
  t0 : strip_env Γm ⊢ N : strip Tm1
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H0 : strip Mn = N
  H1 : strip Tn = strip Tm1
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1), strip Tm2)%UT
  ============================
   strip (Mm ·( Tm1, Tm2)Mn) = strip Mm · N

subgoal 2 (ID 1704) is:
 strip Tm2 [ ← Mn] = ((strip Tm2) [ ← N])%UT
subgoal 3 (ID 1705) is:
 Γm ⊢ Mm ·( Tm1, Tm2)Mn ▹ Mm ·( Tm1, Tm2)Mn : Tm2 [ ← Mn]
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)


subst.
6 subgoals, subgoal 1 (ID 1765)
  
  Γm : Env
  Mm : Term
  Tm1 : Term
  Tm2 : Term
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1), Tm2
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H1 : strip Tn = strip Tm1
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1), strip Tm2)%UT
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1
  ============================
   strip (Mm ·( Tm1, Tm2)Mn) = strip Mm · strip Mn

subgoal 2 (ID 1704) is:
 strip Tm2 [ ← Mn] = ((strip Tm2) [ ← N])%UT
subgoal 3 (ID 1705) is:
 Γm ⊢ Mm ·( Tm1, Tm2)Mn ▹ Mm ·( Tm1, Tm2)Mn : Tm2 [ ← Mn]
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)

simpl.
6 subgoals, subgoal 1 (ID 1766)
  
  Γm : Env
  Mm : Term
  Tm1 : Term
  Tm2 : Term
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1), Tm2
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H1 : strip Tn = strip Tm1
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1), strip Tm2)%UT
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1
  ============================
   strip Mm · strip Mn = strip Mm · strip Mn

subgoal 2 (ID 1704) is:
 strip Tm2 [ ← Mn] = ((strip Tm2) [ ← N])%UT
subgoal 3 (ID 1705) is:
 Γm ⊢ Mm ·( Tm1, Tm2)Mn ▹ Mm ·( Tm1, Tm2)Mn : Tm2 [ ← Mn]
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)

trivial.
5 subgoals, subgoal 1 (ID 1704)
  
  N : UTM.Term
  Γm : Env
  Mm : Term
  Tm1 : Term
  Tm2 : Term
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1), Tm2
  t0 : strip_env Γm ⊢ N : strip Tm1
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H0 : strip Mn = N
  H1 : strip Tn = strip Tm1
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1), strip Tm2)%UT
  ============================
   strip Tm2 [ ← Mn] = ((strip Tm2) [ ← N])%UT

subgoal 2 (ID 1705) is:
 Γm ⊢ Mm ·( Tm1, Tm2)Mn ▹ Mm ·( Tm1, Tm2)Mn : Tm2 [ ← Mn]
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)

rewrite strip_subst.
5 subgoals, subgoal 1 (ID 1767)
  
  N : UTM.Term
  Γm : Env
  Mm : Term
  Tm1 : Term
  Tm2 : Term
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1), Tm2
  t0 : strip_env Γm ⊢ N : strip Tm1
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H0 : strip Mn = N
  H1 : strip Tn = strip Tm1
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1), strip Tm2)%UT
  ============================
   ((strip Tm2) [ ← strip Mn])%UT = ((strip Tm2) [ ← N])%UT

subgoal 2 (ID 1705) is:
 Γm ⊢ Mm ·( Tm1, Tm2)Mn ▹ Mm ·( Tm1, Tm2)Mn : Tm2 [ ← Mn]
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)

subst.
5 subgoals, subgoal 1 (ID 1772)
  
  Γm : Env
  Mm : Term
  Tm1 : Term
  Tm2 : Term
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1), Tm2
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H1 : strip Tn = strip Tm1
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1), strip Tm2)%UT
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1
  ============================
   ((strip Tm2) [ ← strip Mn])%UT = ((strip Tm2) [ ← strip Mn])%UT

subgoal 2 (ID 1705) is:
 Γm ⊢ Mm ·( Tm1, Tm2)Mn ▹ Mm ·( Tm1, Tm2)Mn : Tm2 [ ← Mn]
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)

trivial.
4 subgoals, subgoal 1 (ID 1705)
  
  N : UTM.Term
  Γm : Env
  Mm : Term
  Tm1 : Term
  Tm2 : Term
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1), Tm2
  t0 : strip_env Γm ⊢ N : strip Tm1
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H0 : strip Mn = N
  H1 : strip Tn = strip Tm1
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1), strip Tm2)%UT
  ============================
   Γm ⊢ Mm ·( Tm1, Tm2)Mn ▹ Mm ·( Tm1, Tm2)Mn : Tm2 [ ← Mn]

subgoal 2 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)


assert (exists u, Γm Π (Tm1),Tm2 Π(Tm1),Tm2 : !u).
5 subgoals, subgoal 1 (ID 1774)
  
  N : UTM.Term
  Γm : Env
  Mm : Term
  Tm1 : Term
  Tm2 : Term
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1), Tm2
  t0 : strip_env Γm ⊢ N : strip Tm1
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H0 : strip Mn = N
  H1 : strip Tn = strip Tm1
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1), strip Tm2)%UT
  ============================
   exists u : Sorts, Γm ⊢ Π (Tm1), Tm2 ▹ Π (Tm1), Tm2 : !u

subgoal 2 (ID 1775) is:
 Γm ⊢ Mm ·( Tm1, Tm2)Mn ▹ Mm ·( Tm1, Tm2)Mn : Tm2 [ ← Mn]
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)

apply typ_wf in H3.
5 subgoals, subgoal 1 (ID 1777)
  
  N : UTM.Term
  Γm : Env
  Mm : Term
  Tm1 : Term
  Tm2 : Term
  H3 : (exists s : Sorts, Π (Tm1), Tm2 = !s) \/
       (exists s : Sorts, Γm ⊢ Π (Tm1), Tm2 ▹ Π (Tm1), Tm2 : !s)
  t0 : strip_env Γm ⊢ N : strip Tm1
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H0 : strip Mn = N
  H1 : strip Tn = strip Tm1
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1), strip Tm2)%UT
  ============================
   exists u : Sorts, Γm ⊢ Π (Tm1), Tm2 ▹ Π (Tm1), Tm2 : !u

subgoal 2 (ID 1775) is:
 Γm ⊢ Mm ·( Tm1, Tm2)Mn ▹ Mm ·( Tm1, Tm2)Mn : Tm2 [ ← Mn]
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)


destruct H3.
6 subgoals, subgoal 1 (ID 1783)
  
  N : UTM.Term
  Γm : Env
  Mm : Term
  Tm1 : Term
  Tm2 : Term
  H3 : exists s : Sorts, Π (Tm1), Tm2 = !s
  t0 : strip_env Γm ⊢ N : strip Tm1
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H0 : strip Mn = N
  H1 : strip Tn = strip Tm1
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1), strip Tm2)%UT
  ============================
   exists u : Sorts, Γm ⊢ Π (Tm1), Tm2 ▹ Π (Tm1), Tm2 : !u

subgoal 2 (ID 1785) is:
 exists u : Sorts, Γm ⊢ Π (Tm1), Tm2 ▹ Π (Tm1), Tm2 : !u
subgoal 3 (ID 1775) is:
 Γm ⊢ Mm ·( Tm1, Tm2)Mn ▹ Mm ·( Tm1, Tm2)Mn : Tm2 [ ← Mn]
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)

destruct H3 ; discriminate.
5 subgoals, subgoal 1 (ID 1785)
  
  N : UTM.Term
  Γm : Env
  Mm : Term
  Tm1 : Term
  Tm2 : Term
  H3 : exists s : Sorts, Γm ⊢ Π (Tm1), Tm2 ▹ Π (Tm1), Tm2 : !s
  t0 : strip_env Γm ⊢ N : strip Tm1
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H0 : strip Mn = N
  H1 : strip Tn = strip Tm1
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1), strip Tm2)%UT
  ============================
   exists u : Sorts, Γm ⊢ Π (Tm1), Tm2 ▹ Π (Tm1), Tm2 : !u

subgoal 2 (ID 1775) is:
 Γm ⊢ Mm ·( Tm1, Tm2)Mn ▹ Mm ·( Tm1, Tm2)Mn : Tm2 [ ← Mn]
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)

trivial.
4 subgoals, subgoal 1 (ID 1775)
  
  N : UTM.Term
  Γm : Env
  Mm : Term
  Tm1 : Term
  Tm2 : Term
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1), Tm2
  t0 : strip_env Γm ⊢ N : strip Tm1
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H0 : strip Mn = N
  H1 : strip Tn = strip Tm1
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1), strip Tm2)%UT
  H4 : exists u : Sorts, Γm ⊢ Π (Tm1), Tm2 ▹ Π (Tm1), Tm2 : !u
  ============================
   Γm ⊢ Mm ·( Tm1, Tm2)Mn ▹ Mm ·( Tm1, Tm2)Mn : Tm2 [ ← Mn]

subgoal 2 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)

destruct H4 as (u& ?).
4 subgoals, subgoal 1 (ID 1800)
  
  N : UTM.Term
  Γm : Env
  Mm : Term
  Tm1 : Term
  Tm2 : Term
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1), Tm2
  t0 : strip_env Γm ⊢ N : strip Tm1
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H0 : strip Mn = N
  H1 : strip Tn = strip Tm1
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1), strip Tm2)%UT
  u : Sorts
  H4 : Γm ⊢ Π (Tm1), Tm2 ▹ Π (Tm1), Tm2 : !u
  ============================
   Γm ⊢ Mm ·( Tm1, Tm2)Mn ▹ Mm ·( Tm1, Tm2)Mn : Tm2 [ ← Mn]

subgoal 2 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)


apply pgen_pi in H4 as (Tm1' & Tm2' & s1 & s2 & s3 & h); decompose [and] h; clear h.
4 subgoals, subgoal 1 (ID 1844)
  
  N : UTM.Term
  Γm : Env
  Mm : Term
  Tm1 : Term
  Tm2 : Term
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1), Tm2
  t0 : strip_env Γm ⊢ N : strip Tm1
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H0 : strip Mn = N
  H1 : strip Tn = strip Tm1
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1), strip Tm2)%UT
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H6 : Γm ⊢ Tm1 ▹ Tm1' : !s1
  H5 : Tm1 :: Γm ⊢ Tm2 ▹ Tm2' : !s2
  H7 : Π (Tm1), Tm2 = Π (Tm1'), Tm2'
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  ============================
   Γm ⊢ Mm ·( Tm1, Tm2)Mn ▹ Mm ·( Tm1, Tm2)Mn : Tm2 [ ← Mn]

subgoal 2 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)


injection H7; intros; subst; clear H7.
4 subgoals, subgoal 1 (ID 1879)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   Γm ⊢ Mm ·( Tm1', Tm2')Mn ▹ Mm ·( Tm1', Tm2')Mn : Tm2' [ ← Mn]

subgoal 2 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using ,)


econstructor.
8 subgoals, subgoal 1 (ID 1888)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   Rel ?1885 ?1886 ?1887

subgoal 2 (ID 1889) is:
 Γm ⊢ Tm1' ▹ Tm1' : !?1885
subgoal 3 (ID 1890) is:
 Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !?1886
subgoal 4 (ID 1891) is:
 Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
subgoal 5 (ID 1892) is:
 Γm ⊢ Mn ▹ Mn : Tm1'
subgoal 6 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 7 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 8 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 open, ?1886 open, ?1887 open,)

apply H4.
7 subgoals, subgoal 1 (ID 1889)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   Γm ⊢ Tm1' ▹ Tm1' : !s1

subgoal 2 (ID 1890) is:
 Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
subgoal 3 (ID 1891) is:
 Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
subgoal 4 (ID 1892) is:
 Γm ⊢ Mn ▹ Mn : Tm1'
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using ,)

apply H6.
6 subgoals, subgoal 1 (ID 1890)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2

subgoal 2 (ID 1891) is:
 Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
subgoal 3 (ID 1892) is:
 Γm ⊢ Mn ▹ Mn : Tm1'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using ,)

trivial.
5 subgoals, subgoal 1 (ID 1891)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'

subgoal 2 (ID 1892) is:
 Γm ⊢ Mn ▹ Mn : Tm1'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using ,)

trivial.
4 subgoals, subgoal 1 (ID 1892)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   Γm ⊢ Mn ▹ Mn : Tm1'

subgoal 2 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using ,)

apply typ_pcompat with Tn.
5 subgoals, subgoal 1 (ID 1893)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   Γm ⊢ Mn ▹ Mn : Tn

subgoal 2 (ID 1894) is:
 Γm ⊢ Tn ≡' Tm1'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using ,)

eapply ErasedContextSwitch.
7 subgoals, subgoal 1 (ID 1908)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   ?1907 ⊢ Mn ▹ Mn : Tn

subgoal 2 (ID 1909) is:
 Γm ⊣
subgoal 3 (ID 1910) is:
 strip_env ?1907 = strip_env Γm
subgoal 4 (ID 1894) is:
 Γm ⊢ Tn ≡' Tm1'
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 open,)


apply H2.
6 subgoals, subgoal 1 (ID 1909)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   Γm ⊣

subgoal 2 (ID 1910) is:
 strip_env Γn = strip_env Γm
subgoal 3 (ID 1894) is:
 Γm ⊢ Tn ≡' Tm1'
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using ,)

apply wf_from_typ in H6; trivial.
5 subgoals, subgoal 1 (ID 1910)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   strip_env Γn = strip_env Γm

subgoal 2 (ID 1894) is:
 Γm ⊢ Tn ≡' Tm1'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using ,)

trivial.
4 subgoals, subgoal 1 (ID 1894)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H2 : Γn ⊢ Mn ▹ Mn : Tn
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   Γm ⊢ Tn ≡' Tm1'

subgoal 2 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using ,)

apply typ_wf in H2.
4 subgoals, subgoal 1 (ID 1914)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  H2 : (exists s : Sorts, Tn = !s) \/ (exists s : Sorts, Γn ⊢ Tn ▹ Tn : !s)
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   Γm ⊢ Tn ≡' Tm1'

subgoal 2 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using ,)

destruct H2 as [ [ s ?] | [s ?] ].
5 subgoals, subgoal 1 (ID 1925)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  s : Sorts
  H0 : Tn = !s
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   Γm ⊢ Tn ≡' Tm1'

subgoal 2 (ID 1932) is:
 Γm ⊢ Tn ≡' Tm1'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using ,)


subst.
5 subgoals, subgoal 1 (ID 1937)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  H : strip_env Γn = strip_env Γm
  s : Sorts
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  H1 : strip !s = strip Tm1'
  ============================
   Γm ⊢ !s ≡' Tm1'

subgoal 2 (ID 1932) is:
 Γm ⊢ Tn ≡' Tm1'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using ,)

destruct Tm1'; simpl in H1; try discriminate.
5 subgoals, subgoal 1 (ID 2001)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  H : strip_env Γn = strip_env Γm
  s : Sorts
  u : Sorts
  s0 : Sorts
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H6 : Γm ⊢ !s0 ▹ !s0 : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (!s0), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip !s0%Typ), strip Tm2')%UT
  H5 : !s0 :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip !s0
  H1 : !s%UT = !s0%UT
  ============================
   Γm ⊢ !s ≡' !s0

subgoal 2 (ID 1932) is:
 Γm ⊢ Tn ≡' Tm1'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using ,)

injection H1; intros; subst; clear H1.
5 subgoals, subgoal 1 (ID 2035)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  H : strip_env Γn = strip_env Γm
  u : Sorts
  s0 : Sorts
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H6 : Γm ⊢ !s0 ▹ !s0 : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (!s0), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip !s0%Typ), strip Tm2')%UT
  H5 : !s0 :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip !s0
  ============================
   Γm ⊢ !s0 ≡' !s0

subgoal 2 (ID 1932) is:
 Γm ⊢ Tn ≡' Tm1'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using ,)


econstructor.
5 subgoals, subgoal 1 (ID 2038)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  H : strip_env Γn = strip_env Γm
  u : Sorts
  s0 : Sorts
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H6 : Γm ⊢ !s0 ▹ !s0 : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (!s0), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip !s0%Typ), strip Tm2')%UT
  H5 : !s0 :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip !s0
  ============================
   Γm ⊢ !s0 ▹ !s0 : !?2037

subgoal 2 (ID 1932) is:
 Γm ⊢ Tn ≡' Tm1'
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 open,)

apply H6.
4 subgoals, subgoal 1 (ID 1932)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  s : Sorts
  H0 : Γn ⊢ Tn ▹ Tn : !s
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   Γm ⊢ Tn ≡' Tm1'

subgoal 2 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using ,)

eapply ErasedTypeConversion.
6 subgoals, subgoal 1 (ID 2041)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  s : Sorts
  H0 : Γn ⊢ Tn ▹ Tn : !s
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   strip Tn = strip Tm1'

subgoal 2 (ID 2042) is:
 Γm ⊢ Tn ▹ Tn : !?2039
subgoal 3 (ID 2043) is:
 Γm ⊢ Tm1' ▹ Tm1' : !?2040
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 open, ?2040 open,)

trivial.
5 subgoals, subgoal 1 (ID 2042)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  s : Sorts
  H0 : Γn ⊢ Tn ▹ Tn : !s
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   Γm ⊢ Tn ▹ Tn : !?2039

subgoal 2 (ID 2043) is:
 Γm ⊢ Tm1' ▹ Tm1' : !?2040
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 open, ?2040 open,)

eapply ErasedContextSwitch.
7 subgoals, subgoal 1 (ID 2057)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  s : Sorts
  H0 : Γn ⊢ Tn ▹ Tn : !s
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   ?2056 ⊢ Tn ▹ Tn : !?2039

subgoal 2 (ID 2058) is:
 Γm ⊣
subgoal 3 (ID 2059) is:
 strip_env ?2056 = strip_env Γm
subgoal 4 (ID 2043) is:
 Γm ⊢ Tm1' ▹ Tm1' : !?2040
subgoal 5 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 6 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 7 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 open, ?2040 open, ?2052 using ?2056 , ?2056 open,)

apply H0.
6 subgoals, subgoal 1 (ID 2058)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  s : Sorts
  H0 : Γn ⊢ Tn ▹ Tn : !s
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   Γm ⊣

subgoal 2 (ID 2059) is:
 strip_env Γn = strip_env Γm
subgoal 3 (ID 2043) is:
 Γm ⊢ Tm1' ▹ Tm1' : !?2040
subgoal 4 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 open, ?2052 using ?2056 , ?2056 using ,)

apply wf_from_typ in H6; trivial.
5 subgoals, subgoal 1 (ID 2059)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  s : Sorts
  H0 : Γn ⊢ Tn ▹ Tn : !s
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   strip_env Γn = strip_env Γm

subgoal 2 (ID 2043) is:
 Γm ⊢ Tm1' ▹ Tm1' : !?2040
subgoal 3 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 open, ?2052 using ?2056 , ?2056 using ,)


trivial.
4 subgoals, subgoal 1 (ID 2043)
  
  Γm : Env
  Mm : Term
  Γn : Env
  Mn : Term
  Tn : Term
  H : strip_env Γn = strip_env Γm
  s : Sorts
  H0 : Γn ⊢ Tn ▹ Tn : !s
  u : Sorts
  Tm1' : Term
  Tm2' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  H4 : Rel s1 s2 s3
  H9 : !u = !s3 \/ Γm ⊢ !u ≡' !s3
  H1 : strip Tn = strip Tm1'
  H6 : Γm ⊢ Tm1' ▹ Tm1' : !s1
  H3 : Γm ⊢ Mm ▹ Mm : Π (Tm1'), Tm2'
  t : strip_env Γm ⊢ strip Mm : (Π (strip Tm1'), strip Tm2')%UT
  H5 : Tm1' :: Γm ⊢ Tm2' ▹ Tm2' : !s2
  t0 : strip_env Γm ⊢ strip Mn : strip Tm1'
  ============================
   Γm ⊢ Tm1' ▹ Tm1' : !?2040

subgoal 2 (ID 77) is:
 exists (Γ' : Env) (M' A' : Term),
   strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 open, ?2052 using ?2056 , ?2056 using ,)

apply H6.
3 subgoals, subgoal 1 (ID 77)
  
  Γ : UEM.Env
  M : UTM.Term
  A : UTM.Term
  B : UTM.Term
  s : Sorts
  b : A ≡ B
  t : Γ ⊢ M : A
  H : exists (Γ' : Env) (M' A' : Term),
        strip_env Γ' = Γ /\ strip M' = M /\ strip A' = A /\ Γ' ⊢ M' ▹ M' : A'
  t0 : Γ ⊢ B : !s%UT
  H0 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = Γ /\
         strip M' = B /\ strip A' = !s%UT /\ Γ' ⊢ M' ▹ M' : A'
  ============================
   exists (Γ' : Env) (M' A' : Term),
     strip_env Γ' = Γ /\ strip M' = M /\ strip A' = B /\ Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 3 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using ,)


destruct H as (Γ' & M' & A' & ? & ? & ? & ?).
3 subgoals, subgoal 1 (ID 2092)
  
  Γ : UEM.Env
  M : UTM.Term
  A : UTM.Term
  B : UTM.Term
  s : Sorts
  b : A ≡ B
  t : Γ ⊢ M : A
  Γ' : Env
  M' : Term
  A' : Term
  H : strip_env Γ' = Γ
  H1 : strip M' = M
  H2 : strip A' = A
  H3 : Γ' ⊢ M' ▹ M' : A'
  t0 : Γ ⊢ B : !s%UT
  H0 : exists (Γ' : Env) (M' A' : Term),
         strip_env Γ' = Γ /\
         strip M' = B /\ strip A' = !s%UT /\ Γ' ⊢ M' ▹ M' : A'
  ============================
   exists (Γ'0 : Env) (M'0 A'0 : Term),
     strip_env Γ'0 = Γ /\
     strip M'0 = M /\ strip A'0 = B /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0

subgoal 2 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 3 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using ,)

destruct H0 as (Γ2 & B' & Tb & ? & ?& ?& ?).
3 subgoals, subgoal 1 (ID 2116)
  
  Γ : UEM.Env
  M : UTM.Term
  A : UTM.Term
  B : UTM.Term
  s : Sorts
  b : A ≡ B
  t : Γ ⊢ M : A
  Γ' : Env
  M' : Term
  A' : Term
  H : strip_env Γ' = Γ
  H1 : strip M' = M
  H2 : strip A' = A
  H3 : Γ' ⊢ M' ▹ M' : A'
  t0 : Γ ⊢ B : !s%UT
  Γ2 : Env
  B' : Term
  Tb : Term
  H0 : strip_env Γ2 = Γ
  H4 : strip B' = B
  H5 : strip Tb = !s%UT
  H6 : Γ2 ⊢ B' ▹ B' : Tb
  ============================
   exists (Γ'0 : Env) (M'0 A'0 : Term),
     strip_env Γ'0 = Γ /\
     strip M'0 = M /\ strip A'0 = B /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0

subgoal 2 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 3 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using ,)


destruct Tb; simpl in H5; try discriminate.
3 subgoals, subgoal 1 (ID 2160)
  
  Γ : UEM.Env
  M : UTM.Term
  A : UTM.Term
  B : UTM.Term
  s : Sorts
  b : A ≡ B
  t : Γ ⊢ M : A
  Γ' : Env
  M' : Term
  A' : Term
  H : strip_env Γ' = Γ
  H1 : strip M' = M
  H2 : strip A' = A
  H3 : Γ' ⊢ M' ▹ M' : A'
  t0 : Γ ⊢ B : !s%UT
  Γ2 : Env
  B' : Term
  s0 : Sorts
  H0 : strip_env Γ2 = Γ
  H4 : strip B' = B
  H5 : !s0%UT = !s%UT
  H6 : Γ2 ⊢ B' ▹ B' : !s0
  ============================
   exists (Γ'0 : Env) (M'0 A'0 : Term),
     strip_env Γ'0 = Γ /\
     strip M'0 = M /\ strip A'0 = B /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0

subgoal 2 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 3 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using ,)

injection H5; intros; subst; clear H5.
3 subgoals, subgoal 1 (ID 2219)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  b : strip A' ≡ strip B'
  t : strip_env Γ' ⊢ strip M' : strip A'
  ============================
   exists (Γ'0 : Env) (M'0 A'0 : Term),
     strip_env Γ'0 = strip_env Γ' /\
     strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0

subgoal 2 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 3 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using ,)


destruct (typ_wf Γ' M' M' A' H3).
4 subgoals, subgoal 1 (ID 2228)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  b : strip A' ≡ strip B'
  t : strip_env Γ' ⊢ strip M' : strip A'
  H : exists s : Sorts, A' = !s
  ============================
   exists (Γ'0 : Env) (M'0 A'0 : Term),
     strip_env Γ'0 = strip_env Γ' /\
     strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0

subgoal 2 (ID 2229) is:
 exists (Γ'0 : Env) (M'0 A'0 : Term),
   strip_env Γ'0 = strip_env Γ' /\
   strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using ,)

destruct H as (a & ?).
4 subgoals, subgoal 1 (ID 2233)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  b : strip A' ≡ strip B'
  t : strip_env Γ' ⊢ strip M' : strip A'
  a : Sorts
  H : A' = !a
  ============================
   exists (Γ'0 : Env) (M'0 A'0 : Term),
     strip_env Γ'0 = strip_env Γ' /\
     strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0

subgoal 2 (ID 2229) is:
 exists (Γ'0 : Env) (M'0 A'0 : Term),
   strip_env Γ'0 = strip_env Γ' /\
   strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using ,)

subst; simpl in b.
4 subgoals, subgoal 1 (ID 2241)
  
  s : Sorts
  Γ' : Env
  M' : Term
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  a : Sorts
  H3 : Γ' ⊢ M' ▹ M' : !a
  b : !a%UT ≡ strip B'
  t : strip_env Γ' ⊢ strip M' : strip !a
  ============================
   exists (Γ'0 : Env) (M'0 A' : Term),
     strip_env Γ'0 = strip_env Γ' /\
     strip M'0 = strip M' /\ strip A' = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'

subgoal 2 (ID 2229) is:
 exists (Γ'0 : Env) (M'0 A'0 : Term),
   strip_env Γ'0 = strip_env Γ' /\
   strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using ,)


apply URM.conv_to_sort in b.
4 subgoals, subgoal 1 (ID 2243)
  
  s : Sorts
  Γ' : Env
  M' : Term
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  a : Sorts
  H3 : Γ' ⊢ M' ▹ M' : !a
  b : (strip B' →→ !a)%UT
  t : strip_env Γ' ⊢ strip M' : strip !a
  ============================
   exists (Γ'0 : Env) (M'0 A' : Term),
     strip_env Γ'0 = strip_env Γ' /\
     strip M'0 = strip M' /\ strip A' = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'

subgoal 2 (ID 2229) is:
 exists (Γ'0 : Env) (M'0 A'0 : Term),
   strip_env Γ'0 = strip_env Γ' /\
   strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using ,)


apply L33' in b.
4 subgoals, subgoal 1 (ID 2245)
  
  s : Sorts
  Γ' : Env
  M' : Term
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  a : Sorts
  H3 : Γ' ⊢ M' ▹ M' : !a
  b : exists N : Term, strip N = !a%UT /\ B' →→ N
  t : strip_env Γ' ⊢ strip M' : strip !a
  ============================
   exists (Γ'0 : Env) (M'0 A' : Term),
     strip_env Γ'0 = strip_env Γ' /\
     strip M'0 = strip M' /\ strip A' = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'

subgoal 2 (ID 2229) is:
 exists (Γ'0 : Env) (M'0 A'0 : Term),
   strip_env Γ'0 = strip_env Γ' /\
   strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using ,)

destruct b as ( n & ? & ?).
4 subgoals, subgoal 1 (ID 2256)
  
  s : Sorts
  Γ' : Env
  M' : Term
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  a : Sorts
  H3 : Γ' ⊢ M' ▹ M' : !a
  n : Term
  H : strip n = !a%UT
  H1 : B' →→ n
  t : strip_env Γ' ⊢ strip M' : strip !a
  ============================
   exists (Γ'0 : Env) (M'0 A' : Term),
     strip_env Γ'0 = strip_env Γ' /\
     strip M'0 = strip M' /\ strip A' = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'

subgoal 2 (ID 2229) is:
 exists (Γ'0 : Env) (M'0 A'0 : Term),
   strip_env Γ'0 = strip_env Γ' /\
   strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using ,)

destruct n; simpl in H; try discriminate.
4 subgoals, subgoal 1 (ID 2310)
  
  s : Sorts
  Γ' : Env
  M' : Term
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  a : Sorts
  H3 : Γ' ⊢ M' ▹ M' : !a
  s0 : Sorts
  H : !s0%UT = !a%UT
  H1 : B' →→ !s0
  t : strip_env Γ' ⊢ strip M' : strip !a
  ============================
   exists (Γ'0 : Env) (M'0 A' : Term),
     strip_env Γ'0 = strip_env Γ' /\
     strip M'0 = strip M' /\ strip A' = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'

subgoal 2 (ID 2229) is:
 exists (Γ'0 : Env) (M'0 A'0 : Term),
   strip_env Γ'0 = strip_env Γ' /\
   strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using ,)


injection H; intros; subst; clear H.
4 subgoals, subgoal 1 (ID 2345)
  
  s : Sorts
  Γ' : Env
  M' : Term
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  a : Sorts
  H3 : Γ' ⊢ M' ▹ M' : !a
  t : strip_env Γ' ⊢ strip M' : strip !a
  H1 : B' →→ !a
  ============================
   exists (Γ'0 : Env) (M'0 A' : Term),
     strip_env Γ'0 = strip_env Γ' /\
     strip M'0 = strip M' /\ strip A' = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'

subgoal 2 (ID 2229) is:
 exists (Γ'0 : Env) (M'0 A'0 : Term),
   strip_env Γ'0 = strip_env Γ' /\
   strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using ,)


exists Γ'; exists M' ; exists B'; intuition.
4 subgoals, subgoal 1 (ID 2360)
  
  s : Sorts
  Γ' : Env
  M' : Term
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  a : Sorts
  H3 : Γ' ⊢ M' ▹ M' : !a
  t : strip_env Γ' ⊢ strip M' : strip !a
  H1 : B' →→ !a
  ============================
   Γ' ⊢ M' ▹ M' : B'

subgoal 2 (ID 2229) is:
 exists (Γ'0 : Env) (M'0 A'0 : Term),
   strip_env Γ'0 = strip_env Γ' /\
   strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using ,)

apply typ_pcompat with !a.
5 subgoals, subgoal 1 (ID 2377)
  
  s : Sorts
  Γ' : Env
  M' : Term
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  a : Sorts
  H3 : Γ' ⊢ M' ▹ M' : !a
  t : strip_env Γ' ⊢ strip M' : strip !a
  H1 : B' →→ !a
  ============================
   Γ' ⊢ M' ▹ M' : !a

subgoal 2 (ID 2378) is:
 Γ' ⊢ !a ≡' B'
subgoal 3 (ID 2229) is:
 exists (Γ'0 : Env) (M'0 A'0 : Term),
   strip_env Γ'0 = strip_env Γ' /\
   strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using ,)


trivial.
4 subgoals, subgoal 1 (ID 2378)
  
  s : Sorts
  Γ' : Env
  M' : Term
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  a : Sorts
  H3 : Γ' ⊢ M' ▹ M' : !a
  t : strip_env Γ' ⊢ strip M' : strip !a
  H1 : B' →→ !a
  ============================
   Γ' ⊢ !a ≡' B'

subgoal 2 (ID 2229) is:
 exists (Γ'0 : Env) (M'0 A'0 : Term),
   strip_env Γ'0 = strip_env Γ' /\
   strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using ,)

apply typ_peq_sym.
4 subgoals, subgoal 1 (ID 2379)
  
  s : Sorts
  Γ' : Env
  M' : Term
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  a : Sorts
  H3 : Γ' ⊢ M' ▹ M' : !a
  t : strip_env Γ' ⊢ strip M' : strip !a
  H1 : B' →→ !a
  ============================
   Γ' ⊢ B' ≡' !a

subgoal 2 (ID 2229) is:
 exists (Γ'0 : Env) (M'0 A'0 : Term),
   strip_env Γ'0 = strip_env Γ' /\
   strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using ,)

apply reds_to_conv with s.
4 subgoals, subgoal 1 (ID 2380)
  
  s : Sorts
  Γ' : Env
  M' : Term
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  a : Sorts
  H3 : Γ' ⊢ M' ▹ M' : !a
  t : strip_env Γ' ⊢ strip M' : strip !a
  H1 : B' →→ !a
  ============================
   Γ' ⊢ B' ▹▹ !a : !s

subgoal 2 (ID 2229) is:
 exists (Γ'0 : Env) (M'0 A'0 : Term),
   strip_env Γ'0 = strip_env Γ' /\
   strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using ,)


apply SR_trans'; trivial.
4 subgoals, subgoal 1 (ID 2382)
  
  s : Sorts
  Γ' : Env
  M' : Term
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  a : Sorts
  H3 : Γ' ⊢ M' ▹ M' : !a
  t : strip_env Γ' ⊢ strip M' : strip !a
  H1 : B' →→ !a
  ============================
   Γ' ⊢ B' ▹ B' : !s

subgoal 2 (ID 2229) is:
 exists (Γ'0 : Env) (M'0 A'0 : Term),
   strip_env Γ'0 = strip_env Γ' /\
   strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using ,)

eapply ErasedContextSwitch.
6 subgoals, subgoal 1 (ID 2396)
  
  s : Sorts
  Γ' : Env
  M' : Term
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  a : Sorts
  H3 : Γ' ⊢ M' ▹ M' : !a
  t : strip_env Γ' ⊢ strip M' : strip !a
  H1 : B' →→ !a
  ============================
   ?2395 ⊢ B' ▹ B' : !s

subgoal 2 (ID 2397) is:
 Γ' ⊣
subgoal 3 (ID 2398) is:
 strip_env ?2395 = strip_env Γ'
subgoal 4 (ID 2229) is:
 exists (Γ'0 : Env) (M'0 A'0 : Term),
   strip_env Γ'0 = strip_env Γ' /\
   strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 open,)

apply H6.
5 subgoals, subgoal 1 (ID 2397)
  
  s : Sorts
  Γ' : Env
  M' : Term
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  a : Sorts
  H3 : Γ' ⊢ M' ▹ M' : !a
  t : strip_env Γ' ⊢ strip M' : strip !a
  H1 : B' →→ !a
  ============================
   Γ' ⊣

subgoal 2 (ID 2398) is:
 strip_env Γ2 = strip_env Γ'
subgoal 3 (ID 2229) is:
 exists (Γ'0 : Env) (M'0 A'0 : Term),
   strip_env Γ'0 = strip_env Γ' /\
   strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using ,)


apply wf_from_typ in H3; trivial.
4 subgoals, subgoal 1 (ID 2398)
  
  s : Sorts
  Γ' : Env
  M' : Term
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  a : Sorts
  H3 : Γ' ⊢ M' ▹ M' : !a
  t : strip_env Γ' ⊢ strip M' : strip !a
  H1 : B' →→ !a
  ============================
   strip_env Γ2 = strip_env Γ'

subgoal 2 (ID 2229) is:
 exists (Γ'0 : Env) (M'0 A'0 : Term),
   strip_env Γ'0 = strip_env Γ' /\
   strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using ,)

trivial.
3 subgoals, subgoal 1 (ID 2229)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  b : strip A' ≡ strip B'
  t : strip_env Γ' ⊢ strip M' : strip A'
  H : exists s : Sorts, Γ' ⊢ A' ▹ A' : !s
  ============================
   exists (Γ'0 : Env) (M'0 A'0 : Term),
     strip_env Γ'0 = strip_env Γ' /\
     strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0

subgoal 2 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 3 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using ,)


destruct H as (sA' & ?).
3 subgoals, subgoal 1 (ID 2404)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  b : strip A' ≡ strip B'
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  ============================
   exists (Γ'0 : Env) (M'0 A'0 : Term),
     strip_env Γ'0 = strip_env Γ' /\
     strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0

subgoal 2 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 3 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using ,)

apply URM.Betac_confl in b as (C & ?& ?).
3 subgoals, subgoal 1 (ID 2414)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  H1 : (strip A' →→ C)%UT
  H2 : (strip B' →→ C)%UT
  ============================
   exists (Γ'0 : Env) (M'0 A'0 : Term),
     strip_env Γ'0 = strip_env Γ' /\
     strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0

subgoal 2 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 3 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using ,)


apply L33' in H1 as (C0 & ? & ?).
3 subgoals, subgoal 1 (ID 2424)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  H2 : (strip B' →→ C)%UT
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  ============================
   exists (Γ'0 : Env) (M'0 A'0 : Term),
     strip_env Γ'0 = strip_env Γ' /\
     strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0

subgoal 2 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 3 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using ,)

apply L33' in H2 as (C1 & ? & ?).
3 subgoals, subgoal 1 (ID 2434)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  ============================
   exists (Γ'0 : Env) (M'0 A'0 : Term),
     strip_env Γ'0 = strip_env Γ' /\
     strip M'0 = strip M' /\ strip A'0 = strip B' /\ Γ'0 ⊢ M'0 ▹ M'0 : A'0

subgoal 2 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 3 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using ,)


exists Γ'; exists M'; exists B'; intuition.
3 subgoals, subgoal 1 (ID 2449)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  ============================
   Γ' ⊢ M' ▹ M' : B'

subgoal 2 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 3 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using ,)

eapply typ_pcompat with A'.
4 subgoals, subgoal 1 (ID 2474)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  ============================
   Γ' ⊢ M' ▹ M' : A'

subgoal 2 (ID 2475) is:
 Γ' ⊢ A' ≡' B'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using ,)


trivial.
3 subgoals, subgoal 1 (ID 2475)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  ============================
   Γ' ⊢ A' ≡' B'

subgoal 2 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 3 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using ,)

assert (Γ' A' ▹▹ C0 : !sA').
4 subgoals, subgoal 1 (ID 2476)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  ============================
   Γ' ⊢ A' ▹▹ C0 : !sA'

subgoal 2 (ID 2477) is:
 Γ' ⊢ A' ≡' B'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using ,)

apply SR_trans'.
5 subgoals, subgoal 1 (ID 2478)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  ============================
   A' →→ C0

subgoal 2 (ID 2479) is:
 Γ' ⊢ A' ▹ A' : !sA'
subgoal 3 (ID 2477) is:
 Γ' ⊢ A' ≡' B'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using ,)

trivial.
4 subgoals, subgoal 1 (ID 2479)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  ============================
   Γ' ⊢ A' ▹ A' : !sA'

subgoal 2 (ID 2477) is:
 Γ' ⊢ A' ≡' B'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using ,)

trivial.
3 subgoals, subgoal 1 (ID 2477)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  H7 : Γ' ⊢ A' ▹▹ C0 : !sA'
  ============================
   Γ' ⊢ A' ≡' B'

subgoal 2 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 3 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using ,)


assert (Γ' B' ▹▹ C1 : !s).
4 subgoals, subgoal 1 (ID 2480)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  H7 : Γ' ⊢ A' ▹▹ C0 : !sA'
  ============================
   Γ' ⊢ B' ▹▹ C1 : !s

subgoal 2 (ID 2481) is:
 Γ' ⊢ A' ≡' B'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using ,)

apply SR_trans'.
5 subgoals, subgoal 1 (ID 2482)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  H7 : Γ' ⊢ A' ▹▹ C0 : !sA'
  ============================
   B' →→ C1

subgoal 2 (ID 2483) is:
 Γ' ⊢ B' ▹ B' : !s
subgoal 3 (ID 2481) is:
 Γ' ⊢ A' ≡' B'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using ,)

trivial.
4 subgoals, subgoal 1 (ID 2483)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  H7 : Γ' ⊢ A' ▹▹ C0 : !sA'
  ============================
   Γ' ⊢ B' ▹ B' : !s

subgoal 2 (ID 2481) is:
 Γ' ⊢ A' ≡' B'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using ,)

eapply ErasedContextSwitch.
6 subgoals, subgoal 1 (ID 2497)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  H7 : Γ' ⊢ A' ▹▹ C0 : !sA'
  ============================
   ?2496 ⊢ B' ▹ B' : !s

subgoal 2 (ID 2498) is:
 Γ' ⊣
subgoal 3 (ID 2499) is:
 strip_env ?2496 = strip_env Γ'
subgoal 4 (ID 2481) is:
 Γ' ⊢ A' ≡' B'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 open,)


apply H6.
5 subgoals, subgoal 1 (ID 2498)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  H7 : Γ' ⊢ A' ▹▹ C0 : !sA'
  ============================
   Γ' ⊣

subgoal 2 (ID 2499) is:
 strip_env Γ2 = strip_env Γ'
subgoal 3 (ID 2481) is:
 Γ' ⊢ A' ≡' B'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using ,)

apply wf_from_typ in H3; trivial.
4 subgoals, subgoal 1 (ID 2499)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  H7 : Γ' ⊢ A' ▹▹ C0 : !sA'
  ============================
   strip_env Γ2 = strip_env Γ'

subgoal 2 (ID 2481) is:
 Γ' ⊢ A' ≡' B'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using ,)

trivial.
3 subgoals, subgoal 1 (ID 2481)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  H7 : Γ' ⊢ A' ▹▹ C0 : !sA'
  H8 : Γ' ⊢ B' ▹▹ C1 : !s
  ============================
   Γ' ⊢ A' ≡' B'

subgoal 2 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 3 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using ,)

apply typ_peq_trans with C0.
4 subgoals, subgoal 1 (ID 2502)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  H7 : Γ' ⊢ A' ▹▹ C0 : !sA'
  H8 : Γ' ⊢ B' ▹▹ C1 : !s
  ============================
   Γ' ⊢ A' ≡' C0

subgoal 2 (ID 2503) is:
 Γ' ⊢ C0 ≡' B'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using ,)


apply reds_to_conv with sA'; trivial.
3 subgoals, subgoal 1 (ID 2503)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  H7 : Γ' ⊢ A' ▹▹ C0 : !sA'
  H8 : Γ' ⊢ B' ▹▹ C1 : !s
  ============================
   Γ' ⊢ C0 ≡' B'

subgoal 2 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 3 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using ,)

apply typ_peq_trans with C1.
4 subgoals, subgoal 1 (ID 2505)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  H7 : Γ' ⊢ A' ▹▹ C0 : !sA'
  H8 : Γ' ⊢ B' ▹▹ C1 : !s
  ============================
   Γ' ⊢ C0 ≡' C1

subgoal 2 (ID 2506) is:
 Γ' ⊢ C1 ≡' B'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using ,)


eapply ErasedTypeConversion.
6 subgoals, subgoal 1 (ID 2509)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  H7 : Γ' ⊢ A' ▹▹ C0 : !sA'
  H8 : Γ' ⊢ B' ▹▹ C1 : !s
  ============================
   strip C0 = strip C1

subgoal 2 (ID 2510) is:
 Γ' ⊢ C0 ▹ C0 : !?2507
subgoal 3 (ID 2511) is:
 Γ' ⊢ C1 ▹ C1 : !?2508
subgoal 4 (ID 2506) is:
 Γ' ⊢ C1 ≡' B'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using , ?2507 open, ?2508 open,)

rewrite H1.
6 subgoals, subgoal 1 (ID 2512)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  H7 : Γ' ⊢ A' ▹▹ C0 : !sA'
  H8 : Γ' ⊢ B' ▹▹ C1 : !s
  ============================
   C = strip C1

subgoal 2 (ID 2510) is:
 Γ' ⊢ C0 ▹ C0 : !?2507
subgoal 3 (ID 2511) is:
 Γ' ⊢ C1 ▹ C1 : !?2508
subgoal 4 (ID 2506) is:
 Γ' ⊢ C1 ≡' B'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using , ?2507 open, ?2508 open,)

rewrite H2.
6 subgoals, subgoal 1 (ID 2513)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  H7 : Γ' ⊢ A' ▹▹ C0 : !sA'
  H8 : Γ' ⊢ B' ▹▹ C1 : !s
  ============================
   C = C

subgoal 2 (ID 2510) is:
 Γ' ⊢ C0 ▹ C0 : !?2507
subgoal 3 (ID 2511) is:
 Γ' ⊢ C1 ▹ C1 : !?2508
subgoal 4 (ID 2506) is:
 Γ' ⊢ C1 ≡' B'
subgoal 5 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 6 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using , ?2507 open, ?2508 open,)

trivial.
5 subgoals, subgoal 1 (ID 2510)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  H7 : Γ' ⊢ A' ▹▹ C0 : !sA'
  H8 : Γ' ⊢ B' ▹▹ C1 : !s
  ============================
   Γ' ⊢ C0 ▹ C0 : !?2507

subgoal 2 (ID 2511) is:
 Γ' ⊢ C1 ▹ C1 : !?2508
subgoal 3 (ID 2506) is:
 Γ' ⊢ C1 ≡' B'
subgoal 4 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 5 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using , ?2507 open, ?2508 open,)

apply reds_refl_rt in H7; apply H7.
4 subgoals, subgoal 1 (ID 2511)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  H7 : Γ' ⊢ A' ▹▹ C0 : !sA'
  H8 : Γ' ⊢ B' ▹▹ C1 : !s
  ============================
   Γ' ⊢ C1 ▹ C1 : !?2508

subgoal 2 (ID 2506) is:
 Γ' ⊢ C1 ≡' B'
subgoal 3 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 4 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using , ?2507 using ?2515 , ?2508 open, ?2515 using ,)


apply reds_refl_rt in H8; apply H8.
3 subgoals, subgoal 1 (ID 2506)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  H7 : Γ' ⊢ A' ▹▹ C0 : !sA'
  H8 : Γ' ⊢ B' ▹▹ C1 : !s
  ============================
   Γ' ⊢ C1 ≡' B'

subgoal 2 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 3 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using , ?2507 using ?2515 , ?2508 using ?2518 , ?2515 using , ?2518 using ,)

apply typ_peq_sym.
3 subgoals, subgoal 1 (ID 2520)
  
  s : Sorts
  Γ' : Env
  M' : Term
  A' : Term
  H3 : Γ' ⊢ M' ▹ M' : A'
  Γ2 : Env
  B' : Term
  H6 : Γ2 ⊢ B' ▹ B' : !s
  H0 : strip_env Γ2 = strip_env Γ'
  t0 : strip_env Γ' ⊢ strip B' : !s%UT
  t : strip_env Γ' ⊢ strip M' : strip A'
  sA' : Sorts
  H : Γ' ⊢ A' ▹ A' : !sA'
  C : UTM.Term
  C0 : Term
  H1 : strip C0 = C
  H4 : A' →→ C0
  C1 : Term
  H2 : strip C1 = C
  H5 : B' →→ C1
  H7 : Γ' ⊢ A' ▹▹ C0 : !sA'
  H8 : Γ' ⊢ B' ▹▹ C1 : !s
  ============================
   Γ' ⊢ B' ≡' C1

subgoal 2 (ID 20) is:
 exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣
subgoal 3 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using , ?2507 using ?2515 , ?2508 using ?2518 , ?2515 using , ?2518 using ,)


apply reds_to_conv with s; trivial.
2 subgoals, subgoal 1 (ID 20)
  
  ============================
   exists Γ' : Env, strip_env Γ' = nil /\ Γ' ⊣

subgoal 2 (ID 82) is:
 exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using , ?2507 using ?2515 , ?2508 using ?2518 , ?2515 using , ?2518 using ,)


exists nil; simpl; intuition.
1 subgoals, subgoal 1 (ID 82)
  
  Γ : UEM.Env
  A : UTM.Term
  s : Sorts
  t : Γ ⊢ A : !s%UT
  H : exists (Γ' : Env) (M' A' : Term),
        strip_env Γ' = Γ /\
        strip M' = A /\ strip A' = !s%UT /\ Γ' ⊢ M' ▹ M' : A'
  ============================
   exists Γ' : Env, strip_env Γ' = A :: Γ /\ Γ' ⊣

(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using , ?2507 using ?2515 , ?2508 using ?2518 , ?2515 using , ?2518 using ,)


destruct H as (Γ' & M' & A' & ? & ? & ? & ?).
1 subgoals, subgoal 1 (ID 2554)
  
  Γ : UEM.Env
  A : UTM.Term
  s : Sorts
  t : Γ ⊢ A : !s%UT
  Γ' : Env
  M' : Term
  A' : Term
  H : strip_env Γ' = Γ
  H0 : strip M' = A
  H1 : strip A' = !s%UT
  H2 : Γ' ⊢ M' ▹ M' : A'
  ============================
   exists Γ'0 : Env, strip_env Γ'0 = A :: Γ /\ Γ'0 ⊣

(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using , ?2507 using ?2515 , ?2508 using ?2518 , ?2515 using , ?2518 using ,)


destruct A'; simpl in H1; try discriminate.
1 subgoals, subgoal 1 (ID 2598)
  
  Γ : UEM.Env
  A : UTM.Term
  s : Sorts
  t : Γ ⊢ A : !s%UT
  Γ' : Env
  M' : Term
  s0 : Sorts
  H : strip_env Γ' = Γ
  H0 : strip M' = A
  H1 : !s0%UT = !s%UT
  H2 : Γ' ⊢ M' ▹ M' : !s0
  ============================
   exists Γ'0 : Env, strip_env Γ'0 = A :: Γ /\ Γ'0 ⊣

(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using , ?2507 using ?2515 , ?2508 using ?2518 , ?2515 using , ?2518 using ,)

injection H1; intros; subst; clear H1.
1 subgoals, subgoal 1 (ID 2643)
  
  s : Sorts
  Γ' : Env
  M' : Term
  H2 : Γ' ⊢ M' ▹ M' : !s
  t : strip_env Γ' ⊢ strip M' : !s%UT
  ============================
   exists Γ'0 : Env, strip_env Γ'0 = strip M' :: strip_env Γ' /\ Γ'0 ⊣

(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using , ?2507 using ?2515 , ?2508 using ?2518 , ?2515 using , ?2518 using ,)


exists (M'::Γ'); simpl; intuition.
1 subgoals, subgoal 1 (ID 2650)
  
  s : Sorts
  Γ' : Env
  M' : Term
  H2 : Γ' ⊢ M' ▹ M' : !s
  t : strip_env Γ' ⊢ strip M' : !s%UT
  ============================
   M' :: Γ' ⊣

(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using , ?2507 using ?2515 , ?2508 using ?2518 , ?2515 using , ?2518 using ,)

econstructor.
1 subgoals, subgoal 1 (ID 2662)
  
  s : Sorts
  Γ' : Env
  M' : Term
  H2 : Γ' ⊢ M' ▹ M' : !s
  t : strip_env Γ' ⊢ strip M' : !s%UT
  ============================
   Γ' ⊢ M' ▹ ?2660 : !?2661

(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using , ?2507 using ?2515 , ?2508 using ?2518 , ?2515 using , ?2518 using , ?2660 open, ?2661 open,)

apply H2.
No more subgoals.
(dependent evars: ?754 using , ?755 using , ?767 using ?771 , ?771 using , ?777 using , ?778 using , ?1195 using , ?1196 using , ?1197 using , ?1210 using ?1214 , ?1214 using , ?1220 using , ?1221 using , ?1361 using ?1365 , ?1365 using , ?1371 using , ?1372 using , ?1389 using ?1393 , ?1393 using , ?1399 using , ?1400 using , ?1412 using ?1416 , ?1416 using , ?1429 using , ?1430 using , ?1885 using , ?1886 using , ?1887 using , ?1903 using ?1907 , ?1907 using , ?2037 using , ?2039 using , ?2040 using , ?2052 using ?2056 , ?2056 using , ?2391 using ?2395 , ?2395 using , ?2492 using ?2496 , ?2496 using , ?2507 using ?2515 , ?2508 using ?2518 , ?2515 using , ?2518 using , ?2660 using , ?2661 using ,)


Qed.
FromPTS_to_PTSATR is defined



Lemma strip_var_ : forall Γ x A, A x Γ -> ((strip A)↓ x (strip_env Γ))%UT.
1 subgoals, subgoal 1 (ID 2670)
  
  ============================
   forall (Γ : list Term) (x : nat) (A : Term),
   A ↓ x ∈ Γ -> (strip A ↓ x ∈ strip_env Γ)%UT

(dependent evars:)


induction Γ; intros.
2 subgoals, subgoal 1 (ID 2681)
  
  x : nat
  A : Term
  H : A ↓ x ∈ nil
  ============================
   (strip A ↓ x ∈ strip_env nil)%UT

subgoal 2 (ID 2684) is:
 (strip A ↓ x ∈ strip_env (a :: Γ))%UT
(dependent evars:)


inversion H.
1 subgoals, subgoal 1 (ID 2684)
  
  a : Term
  Γ : list Term
  IHΓ : forall (x : nat) (A : Term),
        A ↓ x ∈ Γ -> (strip A ↓ x ∈ strip_env Γ)%UT
  x : nat
  A : Term
  H : A ↓ x ∈ a :: Γ
  ============================
   (strip A ↓ x ∈ strip_env (a :: Γ))%UT

(dependent evars:)


inversion H; intros; subst.
2 subgoals, subgoal 1 (ID 2795)
  
  a : Term
  Γ : list Term
  IHΓ : forall (x : nat) (A : Term),
        A ↓ x ∈ Γ -> (strip A ↓ x ∈ strip_env Γ)%UT
  H : a ↓ 0 ∈ a :: Γ
  ============================
   (strip a ↓ 0 ∈ strip_env (a :: Γ))%UT

subgoal 2 (ID 2802) is:
 (strip A ↓ S n ∈ strip_env (a :: Γ))%UT
(dependent evars:)


simpl; constructor.
1 subgoals, subgoal 1 (ID 2802)
  
  a : Term
  Γ : list Term
  IHΓ : forall (x : nat) (A : Term),
        A ↓ x ∈ Γ -> (strip A ↓ x ∈ strip_env Γ)%UT
  A : Term
  n : nat
  H3 : A ↓ n ∈ Γ
  H : A ↓ S n ∈ a :: Γ
  ============================
   (strip A ↓ S n ∈ strip_env (a :: Γ))%UT

(dependent evars:)


simpl.
1 subgoals, subgoal 1 (ID 2805)
  
  a : Term
  Γ : list Term
  IHΓ : forall (x : nat) (A : Term),
        A ↓ x ∈ Γ -> (strip A ↓ x ∈ strip_env Γ)%UT
  A : Term
  n : nat
  H3 : A ↓ n ∈ Γ
  H : A ↓ S n ∈ a :: Γ
  ============================
   (strip A ↓ S n ∈ strip a :: strip_env Γ)%UT

(dependent evars:)

intuition.
No more subgoals.
(dependent evars:)


Qed.
strip_var_ is defined



Lemma strip_var : forall Γ x A, A x Γ -> ((strip A) x (strip_env Γ))%UT.
1 subgoals, subgoal 1 (ID 2824)
  
  ============================
   forall (Γ : Env) (x : nat) (A : Term),
   A ↓ x ⊂ Γ -> (strip A ↓ x ⊂ strip_env Γ)%UT

(dependent evars:)


intros.
1 subgoals, subgoal 1 (ID 2828)
  
  Γ : Env
  x : nat
  A : Term
  H : A ↓ x ⊂ Γ
  ============================
   (strip A ↓ x ⊂ strip_env Γ)%UT

(dependent evars:)

destruct H as (a & ? & ?).
1 subgoals, subgoal 1 (ID 2836)
  
  Γ : Env
  x : nat
  A : Term
  a : Term
  H : A = a ↑ (S x)
  H0 : a ↓ x ∈ Γ
  ============================
   (strip A ↓ x ⊂ strip_env Γ)%UT

(dependent evars:)


apply strip_var_ in H0.
1 subgoals, subgoal 1 (ID 2838)
  
  Γ : Env
  x : nat
  A : Term
  a : Term
  H : A = a ↑ (S x)
  H0 : (strip a ↓ x ∈ strip_env Γ)%UT
  ============================
   (strip A ↓ x ⊂ strip_env Γ)%UT

(dependent evars:)

exists (strip a); intuition.
1 subgoals, subgoal 1 (ID 2842)
  
  Γ : Env
  x : nat
  A : Term
  a : Term
  H : A = a ↑ (S x)
  H0 : (strip a ↓ x ∈ strip_env Γ)%UT
  ============================
   strip A = ((strip a) ↑ (S x))%UT

(dependent evars:)


rewrite <- strip_lift.
1 subgoals, subgoal 1 (ID 2854)
  
  Γ : Env
  x : nat
  A : Term
  a : Term
  H : A = a ↑ (S x)
  H0 : (strip a ↓ x ∈ strip_env Γ)%UT
  ============================
   strip A = strip a ↑ (S x)

(dependent evars:)

rewrite H.
1 subgoals, subgoal 1 (ID 2855)
  
  Γ : Env
  x : nat
  A : Term
  a : Term
  H : A = a ↑ (S x)
  H0 : (strip a ↓ x ∈ strip_env Γ)%UT
  ============================
   strip a ↑ (S x) = strip a ↑ (S x)

(dependent evars:)

trivial.
No more subgoals.
(dependent evars:)


Qed.
strip_var is defined



Easy part of the translation: by stripping the application of their annotations, we prove that:
  • a valid PTS{atr} judgement can be stripped to a valide PTS judgement
  • a valid PTS{atr} judgement can be stripped to a valide PTSe judgement
Lemma FromPTSATR_to_PTS : (forall Γ M N T, Γ M N : T -> (strip_env Γ) (strip M) : (strip T) /\
   (strip_env Γ) (strip N) : (strip T) /\ (strip M) (strip N)) /\
(forall Γ M N T, Γ M ▹▹ N : T -> (strip_env Γ) (strip M) : (strip T) /\
   (strip_env Γ) (strip N) : (strip T) /\ (strip M) (strip N)) /\
 (forall Γ, Γ -> ((strip_env Γ) )%UT).
1 subgoals, subgoal 1 (ID 2870)
  
  ============================
   (forall (Γ : Env) (M N T : Term),
    Γ ⊢ M ▹ N : T ->
    (strip_env Γ ⊢ strip M : strip T) /\
    (strip_env Γ ⊢ strip N : strip T) /\ strip M ≡ strip N) /\
   (forall (Γ : Env) (M N T : Term),
    Γ ⊢ M ▹▹ N : T ->
    (strip_env Γ ⊢ strip M : strip T) /\
    (strip_env Γ ⊢ strip N : strip T) /\ strip M ≡ strip N) /\
   (forall Γ : Env, Γ ⊣ -> (strip_env Γ ⊣)%UT)

(dependent evars:)


apply typ_induc; intros; simpl in *.
12 subgoals, subgoal 1 (ID 3019)
  
  Γ : Env
  x : nat
  A : Term
  w : Γ ⊣
  H : (strip_env Γ ⊣)%UT
  i : A ↓ x ⊂ Γ
  ============================
   (strip_env Γ ⊢ #x%UT : strip A) /\
   (strip_env Γ ⊢ #x%UT : strip A) /\ #x%UT ≡ #x%UT

subgoal 2 (ID 3026) is:
 (strip_env Γ ⊢ !s1%UT : !s2%UT) /\
 (strip_env Γ ⊢ !s1%UT : !s2%UT) /\ !s1%UT ≡ !s1%UT
subgoal 3 (ID 3040) is:
 (strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT) /\
 (strip_env Γ ⊢ (Π (strip A'), strip B')%UT : !s3%UT) /\
 (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT
subgoal 4 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 5 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 6 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 7 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 8 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 9 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 10 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 11 (ID 3147) is:
 (nil ⊣)%UT
subgoal 12 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars:)


split.
13 subgoals, subgoal 1 (ID 3156)
  
  Γ : Env
  x : nat
  A : Term
  w : Γ ⊣
  H : (strip_env Γ ⊣)%UT
  i : A ↓ x ⊂ Γ
  ============================
   strip_env Γ ⊢ #x%UT : strip A

subgoal 2 (ID 3157) is:
 (strip_env Γ ⊢ #x%UT : strip A) /\ #x%UT ≡ #x%UT
subgoal 3 (ID 3026) is:
 (strip_env Γ ⊢ !s1%UT : !s2%UT) /\
 (strip_env Γ ⊢ !s1%UT : !s2%UT) /\ !s1%UT ≡ !s1%UT
subgoal 4 (ID 3040) is:
 (strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT) /\
 (strip_env Γ ⊢ (Π (strip A'), strip B')%UT : !s3%UT) /\
 (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT
subgoal 5 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 6 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 7 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 8 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 9 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 10 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 11 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 12 (ID 3147) is:
 (nil ⊣)%UT
subgoal 13 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars:)

apply strip_var in i.
13 subgoals, subgoal 1 (ID 3159)
  
  Γ : Env
  x : nat
  A : Term
  w : Γ ⊣
  H : (strip_env Γ ⊣)%UT
  i : (strip A ↓ x ⊂ strip_env Γ)%UT
  ============================
   strip_env Γ ⊢ #x%UT : strip A

subgoal 2 (ID 3157) is:
 (strip_env Γ ⊢ #x%UT : strip A) /\ #x%UT ≡ #x%UT
subgoal 3 (ID 3026) is:
 (strip_env Γ ⊢ !s1%UT : !s2%UT) /\
 (strip_env Γ ⊢ !s1%UT : !s2%UT) /\ !s1%UT ≡ !s1%UT
subgoal 4 (ID 3040) is:
 (strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT) /\
 (strip_env Γ ⊢ (Π (strip A'), strip B')%UT : !s3%UT) /\
 (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT
subgoal 5 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 6 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 7 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 8 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 9 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 10 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 11 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 12 (ID 3147) is:
 (nil ⊣)%UT
subgoal 13 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars:)

intuition.
12 subgoals, subgoal 1 (ID 3157)
  
  Γ : Env
  x : nat
  A : Term
  w : Γ ⊣
  H : (strip_env Γ ⊣)%UT
  i : A ↓ x ⊂ Γ
  ============================
   (strip_env Γ ⊢ #x%UT : strip A) /\ #x%UT ≡ #x%UT

subgoal 2 (ID 3026) is:
 (strip_env Γ ⊢ !s1%UT : !s2%UT) /\
 (strip_env Γ ⊢ !s1%UT : !s2%UT) /\ !s1%UT ≡ !s1%UT
subgoal 3 (ID 3040) is:
 (strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT) /\
 (strip_env Γ ⊢ (Π (strip A'), strip B')%UT : !s3%UT) /\
 (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT
subgoal 4 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 5 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 6 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 7 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 8 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 9 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 10 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 11 (ID 3147) is:
 (nil ⊣)%UT
subgoal 12 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars:)


split.
13 subgoals, subgoal 1 (ID 3170)
  
  Γ : Env
  x : nat
  A : Term
  w : Γ ⊣
  H : (strip_env Γ ⊣)%UT
  i : A ↓ x ⊂ Γ
  ============================
   strip_env Γ ⊢ #x%UT : strip A

subgoal 2 (ID 3171) is:
 #x%UT ≡ #x%UT
subgoal 3 (ID 3026) is:
 (strip_env Γ ⊢ !s1%UT : !s2%UT) /\
 (strip_env Γ ⊢ !s1%UT : !s2%UT) /\ !s1%UT ≡ !s1%UT
subgoal 4 (ID 3040) is:
 (strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT) /\
 (strip_env Γ ⊢ (Π (strip A'), strip B')%UT : !s3%UT) /\
 (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT
subgoal 5 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 6 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 7 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 8 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 9 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 10 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 11 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 12 (ID 3147) is:
 (nil ⊣)%UT
subgoal 13 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars:)

apply strip_var in i.
13 subgoals, subgoal 1 (ID 3173)
  
  Γ : Env
  x : nat
  A : Term
  w : Γ ⊣
  H : (strip_env Γ ⊣)%UT
  i : (strip A ↓ x ⊂ strip_env Γ)%UT
  ============================
   strip_env Γ ⊢ #x%UT : strip A

subgoal 2 (ID 3171) is:
 #x%UT ≡ #x%UT
subgoal 3 (ID 3026) is:
 (strip_env Γ ⊢ !s1%UT : !s2%UT) /\
 (strip_env Γ ⊢ !s1%UT : !s2%UT) /\ !s1%UT ≡ !s1%UT
subgoal 4 (ID 3040) is:
 (strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT) /\
 (strip_env Γ ⊢ (Π (strip A'), strip B')%UT : !s3%UT) /\
 (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT
subgoal 5 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 6 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 7 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 8 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 9 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 10 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 11 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 12 (ID 3147) is:
 (nil ⊣)%UT
subgoal 13 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars:)

intuition.
12 subgoals, subgoal 1 (ID 3171)
  
  Γ : Env
  x : nat
  A : Term
  w : Γ ⊣
  H : (strip_env Γ ⊣)%UT
  i : A ↓ x ⊂ Γ
  ============================
   #x%UT ≡ #x%UT

subgoal 2 (ID 3026) is:
 (strip_env Γ ⊢ !s1%UT : !s2%UT) /\
 (strip_env Γ ⊢ !s1%UT : !s2%UT) /\ !s1%UT ≡ !s1%UT
subgoal 3 (ID 3040) is:
 (strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT) /\
 (strip_env Γ ⊢ (Π (strip A'), strip B')%UT : !s3%UT) /\
 (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT
subgoal 4 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 5 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 6 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 7 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 8 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 9 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 10 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 11 (ID 3147) is:
 (nil ⊣)%UT
subgoal 12 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars:)


trivial.
11 subgoals, subgoal 1 (ID 3026)
  
  Γ : Env
  s1 : Sorts
  s2 : Sorts
  a : Ax s1 s2
  w : Γ ⊣
  H : (strip_env Γ ⊣)%UT
  ============================
   (strip_env Γ ⊢ !s1%UT : !s2%UT) /\
   (strip_env Γ ⊢ !s1%UT : !s2%UT) /\ !s1%UT ≡ !s1%UT

subgoal 2 (ID 3040) is:
 (strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT) /\
 (strip_env Γ ⊢ (Π (strip A'), strip B')%UT : !s3%UT) /\
 (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT
subgoal 3 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 4 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 5 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 6 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 7 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 8 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 9 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 10 (ID 3147) is:
 (nil ⊣)%UT
subgoal 11 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars:)


intuition.
10 subgoals, subgoal 1 (ID 3040)
  
  Γ : Env
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  A : Term
  A' : Term
  B : Term
  B' : Term
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : (strip_env Γ ⊢ strip A : !s1%UT) /\
      (strip_env Γ ⊢ strip A' : !s1%UT) /\ strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : (strip A :: strip_env Γ ⊢ strip B : !s2%UT) /\
       (strip A :: strip_env Γ ⊢ strip B' : !s2%UT) /\ strip B ≡ strip B'
  ============================
   (strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT) /\
   (strip_env Γ ⊢ (Π (strip A'), strip B')%UT : !s3%UT) /\
   (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT

subgoal 2 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 3 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 4 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 5 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 6 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 7 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 8 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 9 (ID 3147) is:
 (nil ⊣)%UT
subgoal 10 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars:)


destruct H as (? & ?& ?), H0 as (? & ? & ?).
10 subgoals, subgoal 1 (ID 3232)
  
  Γ : Env
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  A : Term
  A' : Term
  B : Term
  B' : Term
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H1 : strip_env Γ ⊢ strip A' : !s1%UT
  H2 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H3 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H4 : strip B ≡ strip B'
  ============================
   (strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT) /\
   (strip_env Γ ⊢ (Π (strip A'), strip B')%UT : !s3%UT) /\
   (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT

subgoal 2 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 3 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 4 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 5 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 6 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 7 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 8 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 9 (ID 3147) is:
 (nil ⊣)%UT
subgoal 10 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars:)


split.
11 subgoals, subgoal 1 (ID 3234)
  
  Γ : Env
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  A : Term
  A' : Term
  B : Term
  B' : Term
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H1 : strip_env Γ ⊢ strip A' : !s1%UT
  H2 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H3 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H4 : strip B ≡ strip B'
  ============================
   strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT

subgoal 2 (ID 3235) is:
 (strip_env Γ ⊢ (Π (strip A'), strip B')%UT : !s3%UT) /\
 (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT
subgoal 3 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 4 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 5 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 6 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 7 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 8 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 9 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 10 (ID 3147) is:
 (nil ⊣)%UT
subgoal 11 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars:)

apply PTS.cPi with s1 s2; trivial.
10 subgoals, subgoal 1 (ID 3235)
  
  Γ : Env
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  A : Term
  A' : Term
  B : Term
  B' : Term
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H1 : strip_env Γ ⊢ strip A' : !s1%UT
  H2 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H3 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H4 : strip B ≡ strip B'
  ============================
   (strip_env Γ ⊢ (Π (strip A'), strip B')%UT : !s3%UT) /\
   (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT

subgoal 2 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 3 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 4 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 5 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 6 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 7 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 8 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 9 (ID 3147) is:
 (nil ⊣)%UT
subgoal 10 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars:)


split.
11 subgoals, subgoal 1 (ID 3240)
  
  Γ : Env
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  A : Term
  A' : Term
  B : Term
  B' : Term
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H1 : strip_env Γ ⊢ strip A' : !s1%UT
  H2 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H3 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H4 : strip B ≡ strip B'
  ============================
   strip_env Γ ⊢ (Π (strip A'), strip B')%UT : !s3%UT

subgoal 2 (ID 3241) is:
 (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT
subgoal 3 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 4 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 5 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 6 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 7 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 8 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 9 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 10 (ID 3147) is:
 (nil ⊣)%UT
subgoal 11 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars:)

apply PTS.cPi with s1 s2; trivial.
11 subgoals, subgoal 1 (ID 3244)
  
  Γ : Env
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  A : Term
  A' : Term
  B : Term
  B' : Term
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H1 : strip_env Γ ⊢ strip A' : !s1%UT
  H2 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H3 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H4 : strip B ≡ strip B'
  ============================
   strip A' :: strip_env Γ ⊢ strip B' : !s2%UT

subgoal 2 (ID 3241) is:
 (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT
subgoal 3 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 4 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 5 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 6 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 7 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 8 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 9 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 10 (ID 3147) is:
 (nil ⊣)%UT
subgoal 11 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars:)


apply Betac_confl in H2 as (Z & ?& ?).
11 subgoals, subgoal 1 (ID 3254)
  
  Γ : Env
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  A : Term
  A' : Term
  B : Term
  B' : Term
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H1 : strip_env Γ ⊢ strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H3 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H4 : strip B ≡ strip B'
  Z : UTM.Term
  H2 : (strip A →→ Z)%UT
  H5 : (strip A' →→ Z)%UT
  ============================
   strip A' :: strip_env Γ ⊢ strip B' : !s2%UT

subgoal 2 (ID 3241) is:
 (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT
subgoal 3 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 4 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 5 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 6 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 7 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 8 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 9 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 10 (ID 3147) is:
 (nil ⊣)%UT
subgoal 11 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars:)

apply Betas_env_sound_up with (Z::(strip_env Γ)).
13 subgoals, subgoal 1 (ID 3256)
  
  Γ : Env
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  A : Term
  A' : Term
  B : Term
  B' : Term
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H1 : strip_env Γ ⊢ strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H3 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H4 : strip B ≡ strip B'
  Z : UTM.Term
  H2 : (strip A →→ Z)%UT
  H5 : (strip A' →→ Z)%UT
  ============================
   Z :: strip_env Γ ⊢ strip B' : !s2%UT

subgoal 2 (ID 3257) is:
 (strip A' :: strip_env Γ ⊣)%UT
subgoal 3 (ID 3258) is:
 (strip A' :: strip_env Γ) →→e (Z :: strip_env Γ)
subgoal 4 (ID 3241) is:
 (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT
subgoal 5 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 6 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 7 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 8 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 9 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 10 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 11 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 12 (ID 3147) is:
 (nil ⊣)%UT
subgoal 13 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars:)


apply Betas_env_sound with ((strip A)::(strip_env Γ)).
14 subgoals, subgoal 1 (ID 3260)
  
  Γ : Env
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  A : Term
  A' : Term
  B : Term
  B' : Term
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H1 : strip_env Γ ⊢ strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H3 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H4 : strip B ≡ strip B'
  Z : UTM.Term
  H2 : (strip A →→ Z)%UT
  H5 : (strip A' →→ Z)%UT
  ============================
   strip A :: strip_env Γ ⊢ strip B' : !s2%UT

subgoal 2 (ID 3261) is:
 (strip A :: strip_env Γ) →→e (Z :: strip_env Γ)
subgoal 3 (ID 3257) is:
 (strip A' :: strip_env Γ ⊣)%UT
subgoal 4 (ID 3258) is:
 (strip A' :: strip_env Γ) →→e (Z :: strip_env Γ)
subgoal 5 (ID 3241) is:
 (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT
subgoal 6 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 7 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 8 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 9 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 10 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 11 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 12 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 13 (ID 3147) is:
 (nil ⊣)%UT
subgoal 14 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars:)

trivial.
13 subgoals, subgoal 1 (ID 3261)
  
  Γ : Env
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  A : Term
  A' : Term
  B : Term
  B' : Term
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H1 : strip_env Γ ⊢ strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H3 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H4 : strip B ≡ strip B'
  Z : UTM.Term
  H2 : (strip A →→ Z)%UT
  H5 : (strip A' →→ Z)%UT
  ============================
   (strip A :: strip_env Γ) →→e (Z :: strip_env Γ)

subgoal 2 (ID 3257) is:
 (strip A' :: strip_env Γ ⊣)%UT
subgoal 3 (ID 3258) is:
 (strip A' :: strip_env Γ) →→e (Z :: strip_env Γ)
subgoal 4 (ID 3241) is:
 (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT
subgoal 5 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 6 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 7 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 8 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 9 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 10 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 11 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 12 (ID 3147) is:
 (nil ⊣)%UT
subgoal 13 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars:)

apply Betas_env_hd; trivial.
12 subgoals, subgoal 1 (ID 3257)
  
  Γ : Env
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  A : Term
  A' : Term
  B : Term
  B' : Term
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H1 : strip_env Γ ⊢ strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H3 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H4 : strip B ≡ strip B'
  Z : UTM.Term
  H2 : (strip A →→ Z)%UT
  H5 : (strip A' →→ Z)%UT
  ============================
   (strip A' :: strip_env Γ ⊣)%UT

subgoal 2 (ID 3258) is:
 (strip A' :: strip_env Γ) →→e (Z :: strip_env Γ)
subgoal 3 (ID 3241) is:
 (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT
subgoal 4 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 5 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 6 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 7 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 8 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 9 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 10 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 11 (ID 3147) is:
 (nil ⊣)%UT
subgoal 12 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars:)


eauto.
11 subgoals, subgoal 1 (ID 3258)
  
  Γ : Env
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  A : Term
  A' : Term
  B : Term
  B' : Term
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H1 : strip_env Γ ⊢ strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H3 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H4 : strip B ≡ strip B'
  Z : UTM.Term
  H2 : (strip A →→ Z)%UT
  H5 : (strip A' →→ Z)%UT
  ============================
   (strip A' :: strip_env Γ) →→e (Z :: strip_env Γ)

subgoal 2 (ID 3241) is:
 (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT
subgoal 3 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 4 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 5 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 6 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 7 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 8 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 9 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 10 (ID 3147) is:
 (nil ⊣)%UT
subgoal 11 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using ,)

apply Betas_env_hd; trivial.
10 subgoals, subgoal 1 (ID 3241)
  
  Γ : Env
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  A : Term
  A' : Term
  B : Term
  B' : Term
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H1 : strip_env Γ ⊢ strip A' : !s1%UT
  H2 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H3 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H4 : strip B ≡ strip B'
  ============================
   (Π (strip A), strip B)%UT ≡ (Π (strip A'), strip B')%UT

subgoal 2 (ID 3057) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 3 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 4 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 5 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 6 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 7 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 8 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 9 (ID 3147) is:
 (nil ⊣)%UT
subgoal 10 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using ,)

intuition.
9 subgoals, subgoal 1 (ID 3057)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : (strip_env Γ ⊢ strip A : !s1%UT) /\
      (strip_env Γ ⊢ strip A' : !s1%UT) /\ strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : (strip A :: strip_env Γ ⊢ strip B : !s2%UT) /\
       (strip A :: strip_env Γ ⊢ strip B : !s2%UT) /\ strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : (strip A :: strip_env Γ ⊢ strip M : strip B) /\
       (strip A :: strip_env Γ ⊢ strip M' : strip B) /\ strip M ≡ strip M'
  ============================
   (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
   (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
   (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT

subgoal 2 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 3 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 4 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 5 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 6 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 7 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 8 (ID 3147) is:
 (nil ⊣)%UT
subgoal 9 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using ,)


destruct H as (? & ?& ?), H0 as (? & ?& ?), H1 as (? & ? & ?).
9 subgoals, subgoal 1 (ID 3348)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  H3 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  ============================
   (strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT) /\
   (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
   (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT

subgoal 2 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 3 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 4 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 5 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 6 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 7 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 8 (ID 3147) is:
 (nil ⊣)%UT
subgoal 9 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using ,)


split.
10 subgoals, subgoal 1 (ID 3350)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  H3 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  ============================
   strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT

subgoal 2 (ID 3351) is:
 (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 3 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 4 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 5 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 6 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 7 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 8 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 9 (ID 3147) is:
 (nil ⊣)%UT
subgoal 10 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using ,)

apply PTS.cLa with s1 s2 s3; trivial.
9 subgoals, subgoal 1 (ID 3351)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  H3 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  ============================
   (strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT) /\
   (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT

subgoal 2 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 3 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 4 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 5 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 6 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 7 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 8 (ID 3147) is:
 (nil ⊣)%UT
subgoal 9 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using ,)

split.
10 subgoals, subgoal 1 (ID 3357)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  H3 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  ============================
   strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A), strip B)%UT

subgoal 2 (ID 3358) is:
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 3 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 4 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 5 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 6 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 7 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 8 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 9 (ID 3147) is:
 (nil ⊣)%UT
subgoal 10 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using ,)

apply PTS.Cnv with (Π(strip A'),strip B)%UT s3.
12 subgoals, subgoal 1 (ID 3359)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  H3 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  ============================
   (Π (strip A'), strip B)%UT ≡ (Π (strip A), strip B)%UT

subgoal 2 (ID 3360) is:
 strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A'), strip B)%UT
subgoal 3 (ID 3361) is:
 strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT
subgoal 4 (ID 3358) is:
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 5 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 6 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 7 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 8 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 9 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 10 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 11 (ID 3147) is:
 (nil ⊣)%UT
subgoal 12 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using ,)


intuition.
11 subgoals, subgoal 1 (ID 3360)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  H3 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  ============================
   strip_env Γ ⊢ (λ [strip A'], strip M')%UT : (Π (strip A'), strip B)%UT

subgoal 2 (ID 3361) is:
 strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT
subgoal 3 (ID 3358) is:
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 4 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 5 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 6 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 7 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 8 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 9 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 10 (ID 3147) is:
 (nil ⊣)%UT
subgoal 11 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using ,)

apply PTS.cLa with s1 s2 s3; trivial.
12 subgoals, subgoal 1 (ID 3401)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  H3 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  ============================
   strip A' :: strip_env Γ ⊢ strip B : !s2%UT

subgoal 2 (ID 3402) is:
 strip A' :: strip_env Γ ⊢ strip M' : strip B
subgoal 3 (ID 3361) is:
 strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT
subgoal 4 (ID 3358) is:
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 5 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 6 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 7 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 8 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 9 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 10 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 11 (ID 3147) is:
 (nil ⊣)%UT
subgoal 12 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using ,)

apply Betac_confl in H3 as (Z & ?& ?).
12 subgoals, subgoal 1 (ID 3412)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  Z : UTM.Term
  H3 : (strip A →→ Z)%UT
  H8 : (strip A' →→ Z)%UT
  ============================
   strip A' :: strip_env Γ ⊢ strip B : !s2%UT

subgoal 2 (ID 3402) is:
 strip A' :: strip_env Γ ⊢ strip M' : strip B
subgoal 3 (ID 3361) is:
 strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT
subgoal 4 (ID 3358) is:
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 5 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 6 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 7 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 8 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 9 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 10 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 11 (ID 3147) is:
 (nil ⊣)%UT
subgoal 12 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using ,)

apply Betas_env_sound_up with (Z::(strip_env Γ)).
14 subgoals, subgoal 1 (ID 3414)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  Z : UTM.Term
  H3 : (strip A →→ Z)%UT
  H8 : (strip A' →→ Z)%UT
  ============================
   Z :: strip_env Γ ⊢ strip B : !s2%UT

subgoal 2 (ID 3415) is:
 (strip A' :: strip_env Γ ⊣)%UT
subgoal 3 (ID 3416) is:
 (strip A' :: strip_env Γ) →→e (Z :: strip_env Γ)
subgoal 4 (ID 3402) is:
 strip A' :: strip_env Γ ⊢ strip M' : strip B
subgoal 5 (ID 3361) is:
 strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT
subgoal 6 (ID 3358) is:
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 7 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 8 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 9 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 10 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 11 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 12 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 13 (ID 3147) is:
 (nil ⊣)%UT
subgoal 14 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using ,)


apply Betas_env_sound with ((strip A)::(strip_env Γ)).
15 subgoals, subgoal 1 (ID 3418)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  Z : UTM.Term
  H3 : (strip A →→ Z)%UT
  H8 : (strip A' →→ Z)%UT
  ============================
   strip A :: strip_env Γ ⊢ strip B : !s2%UT

subgoal 2 (ID 3419) is:
 (strip A :: strip_env Γ) →→e (Z :: strip_env Γ)
subgoal 3 (ID 3415) is:
 (strip A' :: strip_env Γ ⊣)%UT
subgoal 4 (ID 3416) is:
 (strip A' :: strip_env Γ) →→e (Z :: strip_env Γ)
subgoal 5 (ID 3402) is:
 strip A' :: strip_env Γ ⊢ strip M' : strip B
subgoal 6 (ID 3361) is:
 strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT
subgoal 7 (ID 3358) is:
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 8 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 9 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 10 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 11 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 12 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 13 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 14 (ID 3147) is:
 (nil ⊣)%UT
subgoal 15 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using ,)

trivial.
14 subgoals, subgoal 1 (ID 3419)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  Z : UTM.Term
  H3 : (strip A →→ Z)%UT
  H8 : (strip A' →→ Z)%UT
  ============================
   (strip A :: strip_env Γ) →→e (Z :: strip_env Γ)

subgoal 2 (ID 3415) is:
 (strip A' :: strip_env Γ ⊣)%UT
subgoal 3 (ID 3416) is:
 (strip A' :: strip_env Γ) →→e (Z :: strip_env Γ)
subgoal 4 (ID 3402) is:
 strip A' :: strip_env Γ ⊢ strip M' : strip B
subgoal 5 (ID 3361) is:
 strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT
subgoal 6 (ID 3358) is:
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 7 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 8 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 9 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 10 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 11 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 12 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 13 (ID 3147) is:
 (nil ⊣)%UT
subgoal 14 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using ,)

apply Betas_env_hd; trivial.
13 subgoals, subgoal 1 (ID 3415)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  Z : UTM.Term
  H3 : (strip A →→ Z)%UT
  H8 : (strip A' →→ Z)%UT
  ============================
   (strip A' :: strip_env Γ ⊣)%UT

subgoal 2 (ID 3416) is:
 (strip A' :: strip_env Γ) →→e (Z :: strip_env Γ)
subgoal 3 (ID 3402) is:
 strip A' :: strip_env Γ ⊢ strip M' : strip B
subgoal 4 (ID 3361) is:
 strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT
subgoal 5 (ID 3358) is:
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 6 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 7 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 8 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 9 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 10 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 11 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 12 (ID 3147) is:
 (nil ⊣)%UT
subgoal 13 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using ,)


eauto.
12 subgoals, subgoal 1 (ID 3416)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  Z : UTM.Term
  H3 : (strip A →→ Z)%UT
  H8 : (strip A' →→ Z)%UT
  ============================
   (strip A' :: strip_env Γ) →→e (Z :: strip_env Γ)

subgoal 2 (ID 3402) is:
 strip A' :: strip_env Γ ⊢ strip M' : strip B
subgoal 3 (ID 3361) is:
 strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT
subgoal 4 (ID 3358) is:
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 5 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 6 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 7 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 8 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 9 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 10 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 11 (ID 3147) is:
 (nil ⊣)%UT
subgoal 12 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using ,)

apply Betas_env_hd; trivial.
11 subgoals, subgoal 1 (ID 3402)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  H3 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  ============================
   strip A' :: strip_env Γ ⊢ strip M' : strip B

subgoal 2 (ID 3361) is:
 strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT
subgoal 3 (ID 3358) is:
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 4 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 5 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 6 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 7 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 8 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 9 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 10 (ID 3147) is:
 (nil ⊣)%UT
subgoal 11 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using ,)

apply Betac_confl in H3 as (Z & ?& ?).
11 subgoals, subgoal 1 (ID 3441)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  Z : UTM.Term
  H3 : (strip A →→ Z)%UT
  H8 : (strip A' →→ Z)%UT
  ============================
   strip A' :: strip_env Γ ⊢ strip M' : strip B

subgoal 2 (ID 3361) is:
 strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT
subgoal 3 (ID 3358) is:
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 4 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 5 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 6 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 7 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 8 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 9 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 10 (ID 3147) is:
 (nil ⊣)%UT
subgoal 11 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using ,)

apply Betas_env_sound_up with (Z::(strip_env Γ)).
13 subgoals, subgoal 1 (ID 3443)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  Z : UTM.Term
  H3 : (strip A →→ Z)%UT
  H8 : (strip A' →→ Z)%UT
  ============================
   Z :: strip_env Γ ⊢ strip M' : strip B

subgoal 2 (ID 3444) is:
 (strip A' :: strip_env Γ ⊣)%UT
subgoal 3 (ID 3445) is:
 (strip A' :: strip_env Γ) →→e (Z :: strip_env Γ)
subgoal 4 (ID 3361) is:
 strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT
subgoal 5 (ID 3358) is:
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 6 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 7 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 8 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 9 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 10 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 11 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 12 (ID 3147) is:
 (nil ⊣)%UT
subgoal 13 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using ,)


apply Betas_env_sound with ((strip A)::(strip_env Γ)).
14 subgoals, subgoal 1 (ID 3447)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  Z : UTM.Term
  H3 : (strip A →→ Z)%UT
  H8 : (strip A' →→ Z)%UT
  ============================
   strip A :: strip_env Γ ⊢ strip M' : strip B

subgoal 2 (ID 3448) is:
 (strip A :: strip_env Γ) →→e (Z :: strip_env Γ)
subgoal 3 (ID 3444) is:
 (strip A' :: strip_env Γ ⊣)%UT
subgoal 4 (ID 3445) is:
 (strip A' :: strip_env Γ) →→e (Z :: strip_env Γ)
subgoal 5 (ID 3361) is:
 strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT
subgoal 6 (ID 3358) is:
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 7 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 8 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 9 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 10 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 11 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 12 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 13 (ID 3147) is:
 (nil ⊣)%UT
subgoal 14 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using ,)

trivial.
13 subgoals, subgoal 1 (ID 3448)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  Z : UTM.Term
  H3 : (strip A →→ Z)%UT
  H8 : (strip A' →→ Z)%UT
  ============================
   (strip A :: strip_env Γ) →→e (Z :: strip_env Γ)

subgoal 2 (ID 3444) is:
 (strip A' :: strip_env Γ ⊣)%UT
subgoal 3 (ID 3445) is:
 (strip A' :: strip_env Γ) →→e (Z :: strip_env Γ)
subgoal 4 (ID 3361) is:
 strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT
subgoal 5 (ID 3358) is:
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 6 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 7 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 8 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 9 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 10 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 11 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 12 (ID 3147) is:
 (nil ⊣)%UT
subgoal 13 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using ,)

apply Betas_env_hd; trivial.
12 subgoals, subgoal 1 (ID 3444)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  Z : UTM.Term
  H3 : (strip A →→ Z)%UT
  H8 : (strip A' →→ Z)%UT
  ============================
   (strip A' :: strip_env Γ ⊣)%UT

subgoal 2 (ID 3445) is:
 (strip A' :: strip_env Γ) →→e (Z :: strip_env Γ)
subgoal 3 (ID 3361) is:
 strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT
subgoal 4 (ID 3358) is:
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 5 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 6 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 7 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 8 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 9 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 10 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 11 (ID 3147) is:
 (nil ⊣)%UT
subgoal 12 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using ,)


eauto.
11 subgoals, subgoal 1 (ID 3445)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  Z : UTM.Term
  H3 : (strip A →→ Z)%UT
  H8 : (strip A' →→ Z)%UT
  ============================
   (strip A' :: strip_env Γ) →→e (Z :: strip_env Γ)

subgoal 2 (ID 3361) is:
 strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT
subgoal 3 (ID 3358) is:
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 4 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 5 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 6 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 7 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 8 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 9 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 10 (ID 3147) is:
 (nil ⊣)%UT
subgoal 11 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using ,)

apply Betas_env_hd; trivial.
10 subgoals, subgoal 1 (ID 3361)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  H3 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  ============================
   strip_env Γ ⊢ (Π (strip A), strip B)%UT : !s3%UT

subgoal 2 (ID 3358) is:
 (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT
subgoal 3 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 4 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 5 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 6 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 7 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 8 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 9 (ID 3147) is:
 (nil ⊣)%UT
subgoal 10 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using ,)

apply PTS.cPi with s1 s2; trivial.
9 subgoals, subgoal 1 (ID 3358)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H2 : strip_env Γ ⊢ strip A' : !s1%UT
  H3 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H4 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip B ≡ strip B
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢ strip M : strip B
  H6 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H7 : strip M ≡ strip M'
  ============================
   (λ [strip A], strip M)%UT ≡ (λ [strip A'], strip M')%UT

subgoal 2 (ID 3079) is:
 (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 3 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 4 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 5 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 6 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 7 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 8 (ID 3147) is:
 (nil ⊣)%UT
subgoal 9 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using ,)

intuition.
8 subgoals, subgoal 1 (ID 3079)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : (strip_env Γ ⊢ strip A : !s1%UT) /\
      (strip_env Γ ⊢ strip A' : !s1%UT) /\ strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : (strip A :: strip_env Γ ⊢ strip B : !s2%UT) /\
       (strip A :: strip_env Γ ⊢ strip B' : !s2%UT) /\ strip B ≡ strip B'
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : (strip_env Γ ⊢ strip M : (Π (strip A), strip B)%UT) /\
       (strip_env Γ ⊢ strip M' : (Π (strip A), strip B)%UT) /\
       strip M ≡ strip M'
  t2 : Γ ⊢ N ▹ N' : A
  H2 : (strip_env Γ ⊢ strip N : strip A) /\
       (strip_env Γ ⊢ strip N' : strip A) /\ strip N ≡ strip N'
  ============================
   (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
   (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
   strip M · strip N ≡ strip M' · strip N'

subgoal 2 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 3 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 4 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 5 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 6 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 7 (ID 3147) is:
 (nil ⊣)%UT
subgoal 8 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using ,)


destruct H as (? & ?& ?), H0 as (? & ?& ?), H1 as (? & ? & ?), H2 as (? & ?& ?).
8 subgoals, subgoal 1 (ID 3554)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H3 : strip_env Γ ⊢ strip A' : !s1%UT
  H4 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H6 : strip B ≡ strip B'
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : strip_env Γ ⊢ strip M : (Π (strip A), strip B)%UT
  H7 : strip_env Γ ⊢ strip M' : (Π (strip A), strip B)%UT
  H8 : strip M ≡ strip M'
  t2 : Γ ⊢ N ▹ N' : A
  H2 : strip_env Γ ⊢ strip N : strip A
  H9 : strip_env Γ ⊢ strip N' : strip A
  H10 : strip N ≡ strip N'
  ============================
   (strip_env Γ ⊢ strip M · strip N : strip B [ ← N]) /\
   (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
   strip M · strip N ≡ strip M' · strip N'

subgoal 2 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 3 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 4 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 5 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 6 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 7 (ID 3147) is:
 (nil ⊣)%UT
subgoal 8 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using ,)


split.
9 subgoals, subgoal 1 (ID 3556)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H3 : strip_env Γ ⊢ strip A' : !s1%UT
  H4 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H6 : strip B ≡ strip B'
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : strip_env Γ ⊢ strip M : (Π (strip A), strip B)%UT
  H7 : strip_env Γ ⊢ strip M' : (Π (strip A), strip B)%UT
  H8 : strip M ≡ strip M'
  t2 : Γ ⊢ N ▹ N' : A
  H2 : strip_env Γ ⊢ strip N : strip A
  H9 : strip_env Γ ⊢ strip N' : strip A
  H10 : strip N ≡ strip N'
  ============================
   strip_env Γ ⊢ strip M · strip N : strip B [ ← N]

subgoal 2 (ID 3557) is:
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 3 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 4 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 5 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 6 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 7 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 8 (ID 3147) is:
 (nil ⊣)%UT
subgoal 9 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using ,)

rewrite strip_subst.
9 subgoals, subgoal 1 (ID 3558)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H3 : strip_env Γ ⊢ strip A' : !s1%UT
  H4 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H6 : strip B ≡ strip B'
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : strip_env Γ ⊢ strip M : (Π (strip A), strip B)%UT
  H7 : strip_env Γ ⊢ strip M' : (Π (strip A), strip B)%UT
  H8 : strip M ≡ strip M'
  t2 : Γ ⊢ N ▹ N' : A
  H2 : strip_env Γ ⊢ strip N : strip A
  H9 : strip_env Γ ⊢ strip N' : strip A
  H10 : strip N ≡ strip N'
  ============================
   strip_env Γ ⊢ strip M · strip N : ((strip B) [ ← strip N])%UT

subgoal 2 (ID 3557) is:
 (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
 strip M · strip N ≡ strip M' · strip N'
subgoal 3 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 4 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 5 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 6 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 7 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 8 (ID 3147) is:
 (nil ⊣)%UT
subgoal 9 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using ,)

apply PTS.cApp with (strip A); trivial.
8 subgoals, subgoal 1 (ID 3557)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H3 : strip_env Γ ⊢ strip A' : !s1%UT
  H4 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H6 : strip B ≡ strip B'
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : strip_env Γ ⊢ strip M : (Π (strip A), strip B)%UT
  H7 : strip_env Γ ⊢ strip M' : (Π (strip A), strip B)%UT
  H8 : strip M ≡ strip M'
  t2 : Γ ⊢ N ▹ N' : A
  H2 : strip_env Γ ⊢ strip N : strip A
  H9 : strip_env Γ ⊢ strip N' : strip A
  H10 : strip N ≡ strip N'
  ============================
   (strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]) /\
   strip M · strip N ≡ strip M' · strip N'

subgoal 2 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 3 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 4 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 5 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 6 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 7 (ID 3147) is:
 (nil ⊣)%UT
subgoal 8 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using ,)

split.
9 subgoals, subgoal 1 (ID 3562)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H3 : strip_env Γ ⊢ strip A' : !s1%UT
  H4 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H6 : strip B ≡ strip B'
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : strip_env Γ ⊢ strip M : (Π (strip A), strip B)%UT
  H7 : strip_env Γ ⊢ strip M' : (Π (strip A), strip B)%UT
  H8 : strip M ≡ strip M'
  t2 : Γ ⊢ N ▹ N' : A
  H2 : strip_env Γ ⊢ strip N : strip A
  H9 : strip_env Γ ⊢ strip N' : strip A
  H10 : strip N ≡ strip N'
  ============================
   strip_env Γ ⊢ strip M' · strip N' : strip B [ ← N]

subgoal 2 (ID 3563) is:
 strip M · strip N ≡ strip M' · strip N'
subgoal 3 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 4 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 5 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 6 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 7 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 8 (ID 3147) is:
 (nil ⊣)%UT
subgoal 9 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using ,)

rewrite strip_subst.
9 subgoals, subgoal 1 (ID 3564)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H3 : strip_env Γ ⊢ strip A' : !s1%UT
  H4 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H6 : strip B ≡ strip B'
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : strip_env Γ ⊢ strip M : (Π (strip A), strip B)%UT
  H7 : strip_env Γ ⊢ strip M' : (Π (strip A), strip B)%UT
  H8 : strip M ≡ strip M'
  t2 : Γ ⊢ N ▹ N' : A
  H2 : strip_env Γ ⊢ strip N : strip A
  H9 : strip_env Γ ⊢ strip N' : strip A
  H10 : strip N ≡ strip N'
  ============================
   strip_env Γ ⊢ strip M' · strip N' : ((strip B) [ ← strip N])%UT

subgoal 2 (ID 3563) is:
 strip M · strip N ≡ strip M' · strip N'
subgoal 3 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 4 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 5 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 6 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 7 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 8 (ID 3147) is:
 (nil ⊣)%UT
subgoal 9 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using ,)


apply PTS.Cnv with ((strip B)[← strip N'])%UT s2.
11 subgoals, subgoal 1 (ID 3565)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H3 : strip_env Γ ⊢ strip A' : !s1%UT
  H4 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H6 : strip B ≡ strip B'
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : strip_env Γ ⊢ strip M : (Π (strip A), strip B)%UT
  H7 : strip_env Γ ⊢ strip M' : (Π (strip A), strip B)%UT
  H8 : strip M ≡ strip M'
  t2 : Γ ⊢ N ▹ N' : A
  H2 : strip_env Γ ⊢ strip N : strip A
  H9 : strip_env Γ ⊢ strip N' : strip A
  H10 : strip N ≡ strip N'
  ============================
   ((strip B) [ ← strip N'])%UT ≡ ((strip B) [ ← strip N])%UT

subgoal 2 (ID 3566) is:
 strip_env Γ ⊢ strip M' · strip N' : ((strip B) [ ← strip N'])%UT
subgoal 3 (ID 3567) is:
 strip_env Γ ⊢ ((strip B) [ ← strip N])%UT : !s2%UT
subgoal 4 (ID 3563) is:
 strip M · strip N ≡ strip M' · strip N'
subgoal 5 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 6 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 7 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 8 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 9 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 10 (ID 3147) is:
 (nil ⊣)%UT
subgoal 11 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using ,)

intuition.
10 subgoals, subgoal 1 (ID 3566)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H3 : strip_env Γ ⊢ strip A' : !s1%UT
  H4 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H6 : strip B ≡ strip B'
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : strip_env Γ ⊢ strip M : (Π (strip A), strip B)%UT
  H7 : strip_env Γ ⊢ strip M' : (Π (strip A), strip B)%UT
  H8 : strip M ≡ strip M'
  t2 : Γ ⊢ N ▹ N' : A
  H2 : strip_env Γ ⊢ strip N : strip A
  H9 : strip_env Γ ⊢ strip N' : strip A
  H10 : strip N ≡ strip N'
  ============================
   strip_env Γ ⊢ strip M' · strip N' : ((strip B) [ ← strip N'])%UT

subgoal 2 (ID 3567) is:
 strip_env Γ ⊢ ((strip B) [ ← strip N])%UT : !s2%UT
subgoal 3 (ID 3563) is:
 strip M · strip N ≡ strip M' · strip N'
subgoal 4 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 5 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 6 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 7 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 8 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 9 (ID 3147) is:
 (nil ⊣)%UT
subgoal 10 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using ,)

apply PTS.cApp with (strip A); trivial.
9 subgoals, subgoal 1 (ID 3567)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H3 : strip_env Γ ⊢ strip A' : !s1%UT
  H4 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H6 : strip B ≡ strip B'
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : strip_env Γ ⊢ strip M : (Π (strip A), strip B)%UT
  H7 : strip_env Γ ⊢ strip M' : (Π (strip A), strip B)%UT
  H8 : strip M ≡ strip M'
  t2 : Γ ⊢ N ▹ N' : A
  H2 : strip_env Γ ⊢ strip N : strip A
  H9 : strip_env Γ ⊢ strip N' : strip A
  H10 : strip N ≡ strip N'
  ============================
   strip_env Γ ⊢ ((strip B) [ ← strip N])%UT : !s2%UT

subgoal 2 (ID 3563) is:
 strip M · strip N ≡ strip M' · strip N'
subgoal 3 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 4 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 5 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 6 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 7 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 8 (ID 3147) is:
 (nil ⊣)%UT
subgoal 9 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using ,)


change (!s2)%UT with (!s2[← strip N])%UT.
9 subgoals, subgoal 1 (ID 3603)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H3 : strip_env Γ ⊢ strip A' : !s1%UT
  H4 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H6 : strip B ≡ strip B'
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : strip_env Γ ⊢ strip M : (Π (strip A), strip B)%UT
  H7 : strip_env Γ ⊢ strip M' : (Π (strip A), strip B)%UT
  H8 : strip M ≡ strip M'
  t2 : Γ ⊢ N ▹ N' : A
  H2 : strip_env Γ ⊢ strip N : strip A
  H9 : strip_env Γ ⊢ strip N' : strip A
  H10 : strip N ≡ strip N'
  ============================
   strip_env Γ ⊢ ((strip B) [ ← strip N])%UT : (!s2 [ ← strip N])%UT

subgoal 2 (ID 3563) is:
 strip M · strip N ≡ strip M' · strip N'
subgoal 3 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 4 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 5 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 6 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 7 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 8 (ID 3147) is:
 (nil ⊣)%UT
subgoal 9 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using ,)

eapply PTS.substitution.
12 subgoals, subgoal 1 (ID 3616)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H3 : strip_env Γ ⊢ strip A' : !s1%UT
  H4 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H6 : strip B ≡ strip B'
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : strip_env Γ ⊢ strip M : (Π (strip A), strip B)%UT
  H7 : strip_env Γ ⊢ strip M' : (Π (strip A), strip B)%UT
  H8 : strip M ≡ strip M'
  t2 : Γ ⊢ N ▹ N' : A
  H2 : strip_env Γ ⊢ strip N : strip A
  H9 : strip_env Γ ⊢ strip N' : strip A
  H10 : strip N ≡ strip N'
  ============================
   ?3615 ⊢ strip B : !s2%UT

subgoal 2 (ID 3619) is:
 ?3617 ⊢ strip N : ?3618
subgoal 3 (ID 3620) is:
 UEM.sub_in_env ?3617 (strip N) ?3618 0 ?3615 (strip_env Γ)
subgoal 4 (ID 3621) is:
 (?3615 ⊣)%UT
subgoal 5 (ID 3563) is:
 strip M · strip N ≡ strip M' · strip N'
subgoal 6 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 7 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 8 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 9 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 10 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 11 (ID 3147) is:
 (nil ⊣)%UT
subgoal 12 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 open, ?3617 open, ?3618 open,)

apply H0.
11 subgoals, subgoal 1 (ID 3619)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H3 : strip_env Γ ⊢ strip A' : !s1%UT
  H4 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H6 : strip B ≡ strip B'
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : strip_env Γ ⊢ strip M : (Π (strip A), strip B)%UT
  H7 : strip_env Γ ⊢ strip M' : (Π (strip A), strip B)%UT
  H8 : strip M ≡ strip M'
  t2 : Γ ⊢ N ▹ N' : A
  H2 : strip_env Γ ⊢ strip N : strip A
  H9 : strip_env Γ ⊢ strip N' : strip A
  H10 : strip N ≡ strip N'
  ============================
   ?3617 ⊢ strip N : ?3618

subgoal 2 (ID 3620) is:
 UEM.sub_in_env ?3617 (strip N) ?3618 0 (strip A :: strip_env Γ)
   (strip_env Γ)
subgoal 3 (ID 3621) is:
 (strip A :: strip_env Γ ⊣)%UT
subgoal 4 (ID 3563) is:
 strip M · strip N ≡ strip M' · strip N'
subgoal 5 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 6 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 7 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 8 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 9 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 10 (ID 3147) is:
 (nil ⊣)%UT
subgoal 11 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 open, ?3618 open,)

apply H2.
10 subgoals, subgoal 1 (ID 3620)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H3 : strip_env Γ ⊢ strip A' : !s1%UT
  H4 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H6 : strip B ≡ strip B'
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : strip_env Γ ⊢ strip M : (Π (strip A), strip B)%UT
  H7 : strip_env Γ ⊢ strip M' : (Π (strip A), strip B)%UT
  H8 : strip M ≡ strip M'
  t2 : Γ ⊢ N ▹ N' : A
  H2 : strip_env Γ ⊢ strip N : strip A
  H9 : strip_env Γ ⊢ strip N' : strip A
  H10 : strip N ≡ strip N'
  ============================
   UEM.sub_in_env (strip_env Γ) (strip N) (strip A) 0
     (strip A :: strip_env Γ) (strip_env Γ)

subgoal 2 (ID 3621) is:
 (strip A :: strip_env Γ ⊣)%UT
subgoal 3 (ID 3563) is:
 strip M · strip N ≡ strip M' · strip N'
subgoal 4 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 5 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 6 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 7 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 8 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 9 (ID 3147) is:
 (nil ⊣)%UT
subgoal 10 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using ,)

constructor.
9 subgoals, subgoal 1 (ID 3621)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H3 : strip_env Γ ⊢ strip A' : !s1%UT
  H4 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H6 : strip B ≡ strip B'
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : strip_env Γ ⊢ strip M : (Π (strip A), strip B)%UT
  H7 : strip_env Γ ⊢ strip M' : (Π (strip A), strip B)%UT
  H8 : strip M ≡ strip M'
  t2 : Γ ⊢ N ▹ N' : A
  H2 : strip_env Γ ⊢ strip N : strip A
  H9 : strip_env Γ ⊢ strip N' : strip A
  H10 : strip N ≡ strip N'
  ============================
   (strip A :: strip_env Γ ⊣)%UT

subgoal 2 (ID 3563) is:
 strip M · strip N ≡ strip M' · strip N'
subgoal 3 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 4 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 5 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 6 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 7 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 8 (ID 3147) is:
 (nil ⊣)%UT
subgoal 9 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using ,)

eauto.
8 subgoals, subgoal 1 (ID 3563)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H3 : strip_env Γ ⊢ strip A' : !s1%UT
  H4 : strip A ≡ strip A'
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H5 : strip A :: strip_env Γ ⊢ strip B' : !s2%UT
  H6 : strip B ≡ strip B'
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : strip_env Γ ⊢ strip M : (Π (strip A), strip B)%UT
  H7 : strip_env Γ ⊢ strip M' : (Π (strip A), strip B)%UT
  H8 : strip M ≡ strip M'
  t2 : Γ ⊢ N ▹ N' : A
  H2 : strip_env Γ ⊢ strip N : strip A
  H9 : strip_env Γ ⊢ strip N' : strip A
  H10 : strip N ≡ strip N'
  ============================
   strip M · strip N ≡ strip M' · strip N'

subgoal 2 (ID 3107) is:
 (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 3 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 4 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 5 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 6 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 7 (ID 3147) is:
 (nil ⊣)%UT
subgoal 8 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using ,)


intuition.
7 subgoals, subgoal 1 (ID 3107)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : (strip_env Γ ⊢ strip A : !s1%UT) /\
      (strip_env Γ ⊢ strip A : !s1%UT) /\ strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : (strip_env Γ ⊢ strip A' : !s1%UT) /\
       (strip_env Γ ⊢ strip A' : !s1%UT) /\ strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : (strip_env Γ ⊢ strip A0 : !s1%UT) /\
       (strip_env Γ ⊢ strip A : !s1%UT) /\ strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : (strip_env Γ ⊢ strip A0 : !s1%UT) /\
       (strip_env Γ ⊢ strip A' : !s1%UT) /\ strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : (strip A :: strip_env Γ ⊢ strip B : !s2%UT) /\
       (strip A :: strip_env Γ ⊢ strip B : !s2%UT) /\ strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : (strip A :: strip_env Γ ⊢ strip M : strip B) /\
       (strip A :: strip_env Γ ⊢ strip M' : strip B) /\ strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : (strip_env Γ ⊢ strip N : strip A) /\
       (strip_env Γ ⊢ strip N' : strip A) /\ strip N ≡ strip N'
  ============================
   (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
   (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
   (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']

subgoal 2 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 3 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 4 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 5 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 6 (ID 3147) is:
 (nil ⊣)%UT
subgoal 7 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using ,)


destruct H as (? & ?& ?), H0 as (? & ?& ?), H1 as (? & ? & ?), H2 as (? & ?& ?), H3 as (? & ?& ?),
  H4 as (? & ?& ?), H5 as (? & ?& ?).
7 subgoals, subgoal 1 (ID 3763)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   (strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]) /\
   (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
   (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']

subgoal 2 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 3 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 4 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 5 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 6 (ID 3147) is:
 (nil ⊣)%UT
subgoal 7 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using ,)


split.
8 subgoals, subgoal 1 (ID 3765)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N : strip B [ ← N]

subgoal 2 (ID 3766) is:
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 3 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 4 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 5 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 6 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 7 (ID 3147) is:
 (nil ⊣)%UT
subgoal 8 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using ,)

rewrite strip_subst.
8 subgoals, subgoal 1 (ID 3767)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   strip_env Γ ⊢ (λ [strip A], strip M)%UT · strip N
   : ((strip B) [ ← strip N])%UT

subgoal 2 (ID 3766) is:
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 3 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 4 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 5 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 6 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 7 (ID 3147) is:
 (nil ⊣)%UT
subgoal 8 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using ,)

apply PTS.cApp with (strip A).
9 subgoals, subgoal 1 (ID 3768)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   strip_env Γ ⊢ (λ [strip A], strip M)%UT : (Π (strip A), strip B)%UT

subgoal 2 (ID 3769) is:
 strip_env Γ ⊢ strip N : strip A
subgoal 3 (ID 3766) is:
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 4 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 5 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 6 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 7 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 8 (ID 3147) is:
 (nil ⊣)%UT
subgoal 9 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using ,)

apply PTS.cLa with s1 s2 s3; trivial.
8 subgoals, subgoal 1 (ID 3769)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   strip_env Γ ⊢ strip N : strip A

subgoal 2 (ID 3766) is:
 (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 3 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 4 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 5 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 6 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 7 (ID 3147) is:
 (nil ⊣)%UT
subgoal 8 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using ,)

trivial.
7 subgoals, subgoal 1 (ID 3766)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   (strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]) /\
   (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']

subgoal 2 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 3 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 4 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 5 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 6 (ID 3147) is:
 (nil ⊣)%UT
subgoal 7 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using ,)


split.
8 subgoals, subgoal 1 (ID 3775)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   strip_env Γ ⊢ strip M' [ ← N'] : strip B [ ← N]

subgoal 2 (ID 3776) is:
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 3 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 4 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 5 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 6 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 7 (ID 3147) is:
 (nil ⊣)%UT
subgoal 8 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using ,)

rewrite 2! strip_subst.
8 subgoals, subgoal 1 (ID 3778)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   strip_env Γ ⊢ ((strip M') [ ← strip N'])%UT : ((strip B) [ ← strip N])%UT

subgoal 2 (ID 3776) is:
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 3 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 4 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 5 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 6 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 7 (ID 3147) is:
 (nil ⊣)%UT
subgoal 8 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using ,)

apply PTS.Cnv with ((strip B)[← strip N'])%UT s2.
10 subgoals, subgoal 1 (ID 3779)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   ((strip B) [ ← strip N'])%UT ≡ ((strip B) [ ← strip N])%UT

subgoal 2 (ID 3780) is:
 strip_env Γ ⊢ ((strip M') [ ← strip N'])%UT : ((strip B) [ ← strip N'])%UT
subgoal 3 (ID 3781) is:
 strip_env Γ ⊢ ((strip B) [ ← strip N])%UT : !s2%UT
subgoal 4 (ID 3776) is:
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 5 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 6 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 7 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 8 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 9 (ID 3147) is:
 (nil ⊣)%UT
subgoal 10 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using ,)

intuition.
9 subgoals, subgoal 1 (ID 3780)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   strip_env Γ ⊢ ((strip M') [ ← strip N'])%UT : ((strip B) [ ← strip N'])%UT

subgoal 2 (ID 3781) is:
 strip_env Γ ⊢ ((strip B) [ ← strip N])%UT : !s2%UT
subgoal 3 (ID 3776) is:
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 4 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 5 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 6 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 7 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 8 (ID 3147) is:
 (nil ⊣)%UT
subgoal 9 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using ,)

eapply PTS.substitution.
12 subgoals, subgoal 1 (ID 3838)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   ?3837 ⊢ strip M' : strip B

subgoal 2 (ID 3841) is:
 ?3839 ⊢ strip N' : ?3840
subgoal 3 (ID 3842) is:
 UEM.sub_in_env ?3839 (strip N') ?3840 0 ?3837 (strip_env Γ)
subgoal 4 (ID 3843) is:
 (?3837 ⊣)%UT
subgoal 5 (ID 3781) is:
 strip_env Γ ⊢ ((strip B) [ ← strip N])%UT : !s2%UT
subgoal 6 (ID 3776) is:
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 7 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 8 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 9 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 10 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 11 (ID 3147) is:
 (nil ⊣)%UT
subgoal 12 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 open, ?3839 open, ?3840 open,)


apply H16.
11 subgoals, subgoal 1 (ID 3841)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   ?3839 ⊢ strip N' : ?3840

subgoal 2 (ID 3842) is:
 UEM.sub_in_env ?3839 (strip N') ?3840 0 (strip A :: strip_env Γ)
   (strip_env Γ)
subgoal 3 (ID 3843) is:
 (strip A :: strip_env Γ ⊣)%UT
subgoal 4 (ID 3781) is:
 strip_env Γ ⊢ ((strip B) [ ← strip N])%UT : !s2%UT
subgoal 5 (ID 3776) is:
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 6 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 7 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 8 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 9 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 10 (ID 3147) is:
 (nil ⊣)%UT
subgoal 11 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 open, ?3840 open,)

apply H18.
10 subgoals, subgoal 1 (ID 3842)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   UEM.sub_in_env (strip_env Γ) (strip N') (strip A) 0
     (strip A :: strip_env Γ) (strip_env Γ)

subgoal 2 (ID 3843) is:
 (strip A :: strip_env Γ ⊣)%UT
subgoal 3 (ID 3781) is:
 strip_env Γ ⊢ ((strip B) [ ← strip N])%UT : !s2%UT
subgoal 4 (ID 3776) is:
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 5 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 6 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 7 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 8 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 9 (ID 3147) is:
 (nil ⊣)%UT
subgoal 10 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using ,)

constructor.
9 subgoals, subgoal 1 (ID 3843)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   (strip A :: strip_env Γ ⊣)%UT

subgoal 2 (ID 3781) is:
 strip_env Γ ⊢ ((strip B) [ ← strip N])%UT : !s2%UT
subgoal 3 (ID 3776) is:
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 4 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 5 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 6 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 7 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 8 (ID 3147) is:
 (nil ⊣)%UT
subgoal 9 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using ,)

eauto.
8 subgoals, subgoal 1 (ID 3781)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   strip_env Γ ⊢ ((strip B) [ ← strip N])%UT : !s2%UT

subgoal 2 (ID 3776) is:
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 3 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 4 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 5 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 6 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 7 (ID 3147) is:
 (nil ⊣)%UT
subgoal 8 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using ,)

change (!s2)%UT with (!s2[← strip N])%UT.
8 subgoals, subgoal 1 (ID 3856)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   strip_env Γ ⊢ ((strip B) [ ← strip N])%UT : (!s2 [ ← strip N])%UT

subgoal 2 (ID 3776) is:
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 3 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 4 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 5 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 6 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 7 (ID 3147) is:
 (nil ⊣)%UT
subgoal 8 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using ,)

eapply PTS.substitution.
11 subgoals, subgoal 1 (ID 3869)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   ?3868 ⊢ strip B : !s2%UT

subgoal 2 (ID 3872) is:
 ?3870 ⊢ strip N : ?3871
subgoal 3 (ID 3873) is:
 UEM.sub_in_env ?3870 (strip N) ?3871 0 ?3868 (strip_env Γ)
subgoal 4 (ID 3874) is:
 (?3868 ⊣)%UT
subgoal 5 (ID 3776) is:
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 6 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 7 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 8 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 9 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 10 (ID 3147) is:
 (nil ⊣)%UT
subgoal 11 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 open, ?3870 open, ?3871 open,)

apply H3.
10 subgoals, subgoal 1 (ID 3872)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   ?3870 ⊢ strip N : ?3871

subgoal 2 (ID 3873) is:
 UEM.sub_in_env ?3870 (strip N) ?3871 0 (strip A :: strip_env Γ)
   (strip_env Γ)
subgoal 3 (ID 3874) is:
 (strip A :: strip_env Γ ⊣)%UT
subgoal 4 (ID 3776) is:
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 5 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 6 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 7 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 8 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 9 (ID 3147) is:
 (nil ⊣)%UT
subgoal 10 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 open, ?3871 open,)

apply H5.
9 subgoals, subgoal 1 (ID 3873)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   UEM.sub_in_env (strip_env Γ) (strip N) (strip A) 0
     (strip A :: strip_env Γ) (strip_env Γ)

subgoal 2 (ID 3874) is:
 (strip A :: strip_env Γ ⊣)%UT
subgoal 3 (ID 3776) is:
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 4 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 5 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 6 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 7 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 8 (ID 3147) is:
 (nil ⊣)%UT
subgoal 9 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using ,)

constructor.
8 subgoals, subgoal 1 (ID 3874)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   (strip A :: strip_env Γ ⊣)%UT

subgoal 2 (ID 3776) is:
 (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']
subgoal 3 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 4 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 5 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 6 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 7 (ID 3147) is:
 (nil ⊣)%UT
subgoal 8 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using ,)

eauto.
7 subgoals, subgoal 1 (ID 3776)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   (λ [strip A], strip M)%UT · strip N ≡ strip M' [ ← N']

subgoal 2 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 3 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 4 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 5 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 6 (ID 3147) is:
 (nil ⊣)%UT
subgoal 7 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)


rewrite strip_subst.
7 subgoals, subgoal 1 (ID 3886)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   (λ [strip A], strip M)%UT · strip N ≡ ((strip M') [ ← strip N'])%UT

subgoal 2 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 3 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 4 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 5 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 6 (ID 3147) is:
 (nil ⊣)%UT
subgoal 7 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)

apply Betac_trans with ((strip M)[← strip N])%UT.
8 subgoals, subgoal 1 (ID 3887)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   (λ [strip A], strip M)%UT · strip N ≡ ((strip M) [ ← strip N])%UT

subgoal 2 (ID 3888) is:
 ((strip M) [ ← strip N])%UT ≡ ((strip M') [ ← strip N'])%UT
subgoal 3 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 4 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 5 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 6 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 7 (ID 3147) is:
 (nil ⊣)%UT
subgoal 8 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)

intuition.
7 subgoals, subgoal 1 (ID 3888)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   ((strip M) [ ← strip N])%UT ≡ ((strip M') [ ← strip N'])%UT

subgoal 2 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 3 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 4 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 5 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 6 (ID 3147) is:
 (nil ⊣)%UT
subgoal 7 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)


apply Betac_trans with ((strip M)[← strip N'])%UT.
8 subgoals, subgoal 1 (ID 3941)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   ((strip M) [ ← strip N])%UT ≡ ((strip M) [ ← strip N'])%UT

subgoal 2 (ID 3942) is:
 ((strip M) [ ← strip N'])%UT ≡ ((strip M') [ ← strip N'])%UT
subgoal 3 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 4 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 5 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 6 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 7 (ID 3147) is:
 (nil ⊣)%UT
subgoal 8 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)

intuition.
7 subgoals, subgoal 1 (ID 3942)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢ strip A : !s1%UT
  H6 : strip_env Γ ⊢ strip A : !s1%UT
  H7 : strip A ≡ strip A
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢ strip A' : !s1%UT
  H8 : strip_env Γ ⊢ strip A' : !s1%UT
  H9 : strip A' ≡ strip A'
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢ strip A0 : !s1%UT
  H10 : strip_env Γ ⊢ strip A : !s1%UT
  H11 : strip A0 ≡ strip A
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢ strip A0 : !s1%UT
  H12 : strip_env Γ ⊢ strip A' : !s1%UT
  H13 : strip A0 ≡ strip A'
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H14 : strip A :: strip_env Γ ⊢ strip B : !s2%UT
  H15 : strip B ≡ strip B
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢ strip M : strip B
  H16 : strip A :: strip_env Γ ⊢ strip M' : strip B
  H17 : strip M ≡ strip M'
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢ strip N : strip A
  H18 : strip_env Γ ⊢ strip N' : strip A
  H19 : strip N ≡ strip N'
  ============================
   ((strip M) [ ← strip N'])%UT ≡ ((strip M') [ ← strip N'])%UT

subgoal 2 (ID 3118) is:
 (strip_env Γ ⊢ strip M : strip B) /\
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 3 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 4 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 5 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 6 (ID 3147) is:
 (nil ⊣)%UT
subgoal 7 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)

intuition.
6 subgoals, subgoal 1 (ID 3118)
  
  Γ : Env
  M : Term
  N : Term
  A : Term
  B : Term
  s : Sorts
  t : Γ ⊢ M ▹ N : A
  H : (strip_env Γ ⊢ strip M : strip A) /\
      (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
  t0 : Γ ⊢ A ▹ B : !s
  H0 : (strip_env Γ ⊢ strip A : !s%UT) /\
       (strip_env Γ ⊢ strip B : !s%UT) /\ strip A ≡ strip B
  ============================
   (strip_env Γ ⊢ strip M : strip B) /\
   (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N

subgoal 2 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 3 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 4 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 5 (ID 3147) is:
 (nil ⊣)%UT
subgoal 6 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)


destruct H as (? & ? & ?), H0 as (? & ?& ?).
6 subgoals, subgoal 1 (ID 4047)
  
  Γ : Env
  M : Term
  N : Term
  A : Term
  B : Term
  s : Sorts
  t : Γ ⊢ M ▹ N : A
  H : strip_env Γ ⊢ strip M : strip A
  H1 : strip_env Γ ⊢ strip N : strip A
  H2 : strip M ≡ strip N
  t0 : Γ ⊢ A ▹ B : !s
  H0 : strip_env Γ ⊢ strip A : !s%UT
  H3 : strip_env Γ ⊢ strip B : !s%UT
  H4 : strip A ≡ strip B
  ============================
   (strip_env Γ ⊢ strip M : strip B) /\
   (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N

subgoal 2 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 3 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 4 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 5 (ID 3147) is:
 (nil ⊣)%UT
subgoal 6 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)


split.
7 subgoals, subgoal 1 (ID 4049)
  
  Γ : Env
  M : Term
  N : Term
  A : Term
  B : Term
  s : Sorts
  t : Γ ⊢ M ▹ N : A
  H : strip_env Γ ⊢ strip M : strip A
  H1 : strip_env Γ ⊢ strip N : strip A
  H2 : strip M ≡ strip N
  t0 : Γ ⊢ A ▹ B : !s
  H0 : strip_env Γ ⊢ strip A : !s%UT
  H3 : strip_env Γ ⊢ strip B : !s%UT
  H4 : strip A ≡ strip B
  ============================
   strip_env Γ ⊢ strip M : strip B

subgoal 2 (ID 4050) is:
 (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
subgoal 3 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 4 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 5 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 6 (ID 3147) is:
 (nil ⊣)%UT
subgoal 7 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)

apply PTS.Cnv with (strip A) s; trivial.
6 subgoals, subgoal 1 (ID 4050)
  
  Γ : Env
  M : Term
  N : Term
  A : Term
  B : Term
  s : Sorts
  t : Γ ⊢ M ▹ N : A
  H : strip_env Γ ⊢ strip M : strip A
  H1 : strip_env Γ ⊢ strip N : strip A
  H2 : strip M ≡ strip N
  t0 : Γ ⊢ A ▹ B : !s
  H0 : strip_env Γ ⊢ strip A : !s%UT
  H3 : strip_env Γ ⊢ strip B : !s%UT
  H4 : strip A ≡ strip B
  ============================
   (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N

subgoal 2 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 3 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 4 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 5 (ID 3147) is:
 (nil ⊣)%UT
subgoal 6 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)

split.
7 subgoals, subgoal 1 (ID 4055)
  
  Γ : Env
  M : Term
  N : Term
  A : Term
  B : Term
  s : Sorts
  t : Γ ⊢ M ▹ N : A
  H : strip_env Γ ⊢ strip M : strip A
  H1 : strip_env Γ ⊢ strip N : strip A
  H2 : strip M ≡ strip N
  t0 : Γ ⊢ A ▹ B : !s
  H0 : strip_env Γ ⊢ strip A : !s%UT
  H3 : strip_env Γ ⊢ strip B : !s%UT
  H4 : strip A ≡ strip B
  ============================
   strip_env Γ ⊢ strip N : strip B

subgoal 2 (ID 4056) is:
 strip M ≡ strip N
subgoal 3 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 4 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 5 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 6 (ID 3147) is:
 (nil ⊣)%UT
subgoal 7 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)

apply PTS.Cnv with (strip A) s; trivial.
6 subgoals, subgoal 1 (ID 4056)
  
  Γ : Env
  M : Term
  N : Term
  A : Term
  B : Term
  s : Sorts
  t : Γ ⊢ M ▹ N : A
  H : strip_env Γ ⊢ strip M : strip A
  H1 : strip_env Γ ⊢ strip N : strip A
  H2 : strip M ≡ strip N
  t0 : Γ ⊢ A ▹ B : !s
  H0 : strip_env Γ ⊢ strip A : !s%UT
  H3 : strip_env Γ ⊢ strip B : !s%UT
  H4 : strip A ≡ strip B
  ============================
   strip M ≡ strip N

subgoal 2 (ID 3129) is:
 (strip_env Γ ⊢ strip M : strip A) /\
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 3 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 4 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 5 (ID 3147) is:
 (nil ⊣)%UT
subgoal 6 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)

trivial.
5 subgoals, subgoal 1 (ID 3129)
  
  Γ : Env
  M : Term
  N : Term
  A : Term
  B : Term
  s : Sorts
  t : Γ ⊢ M ▹ N : B
  H : (strip_env Γ ⊢ strip M : strip B) /\
      (strip_env Γ ⊢ strip N : strip B) /\ strip M ≡ strip N
  t0 : Γ ⊢ A ▹ B : !s
  H0 : (strip_env Γ ⊢ strip A : !s%UT) /\
       (strip_env Γ ⊢ strip B : !s%UT) /\ strip A ≡ strip B
  ============================
   (strip_env Γ ⊢ strip M : strip A) /\
   (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N

subgoal 2 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 3 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 4 (ID 3147) is:
 (nil ⊣)%UT
subgoal 5 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)


destruct H as (? & ? & ?), H0 as (? & ?& ?).
5 subgoals, subgoal 1 (ID 4078)
  
  Γ : Env
  M : Term
  N : Term
  A : Term
  B : Term
  s : Sorts
  t : Γ ⊢ M ▹ N : B
  H : strip_env Γ ⊢ strip M : strip B
  H1 : strip_env Γ ⊢ strip N : strip B
  H2 : strip M ≡ strip N
  t0 : Γ ⊢ A ▹ B : !s
  H0 : strip_env Γ ⊢ strip A : !s%UT
  H3 : strip_env Γ ⊢ strip B : !s%UT
  H4 : strip A ≡ strip B
  ============================
   (strip_env Γ ⊢ strip M : strip A) /\
   (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N

subgoal 2 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 3 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 4 (ID 3147) is:
 (nil ⊣)%UT
subgoal 5 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)


split.
6 subgoals, subgoal 1 (ID 4080)
  
  Γ : Env
  M : Term
  N : Term
  A : Term
  B : Term
  s : Sorts
  t : Γ ⊢ M ▹ N : B
  H : strip_env Γ ⊢ strip M : strip B
  H1 : strip_env Γ ⊢ strip N : strip B
  H2 : strip M ≡ strip N
  t0 : Γ ⊢ A ▹ B : !s
  H0 : strip_env Γ ⊢ strip A : !s%UT
  H3 : strip_env Γ ⊢ strip B : !s%UT
  H4 : strip A ≡ strip B
  ============================
   strip_env Γ ⊢ strip M : strip A

subgoal 2 (ID 4081) is:
 (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N
subgoal 3 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 4 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 5 (ID 3147) is:
 (nil ⊣)%UT
subgoal 6 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)

apply PTS.Cnv with (strip B) s; intuition.
5 subgoals, subgoal 1 (ID 4081)
  
  Γ : Env
  M : Term
  N : Term
  A : Term
  B : Term
  s : Sorts
  t : Γ ⊢ M ▹ N : B
  H : strip_env Γ ⊢ strip M : strip B
  H1 : strip_env Γ ⊢ strip N : strip B
  H2 : strip M ≡ strip N
  t0 : Γ ⊢ A ▹ B : !s
  H0 : strip_env Γ ⊢ strip A : !s%UT
  H3 : strip_env Γ ⊢ strip B : !s%UT
  H4 : strip A ≡ strip B
  ============================
   (strip_env Γ ⊢ strip N : strip A) /\ strip M ≡ strip N

subgoal 2 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 3 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 4 (ID 3147) is:
 (nil ⊣)%UT
subgoal 5 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)

split.
6 subgoals, subgoal 1 (ID 4102)
  
  Γ : Env
  M : Term
  N : Term
  A : Term
  B : Term
  s : Sorts
  t : Γ ⊢ M ▹ N : B
  H : strip_env Γ ⊢ strip M : strip B
  H1 : strip_env Γ ⊢ strip N : strip B
  H2 : strip M ≡ strip N
  t0 : Γ ⊢ A ▹ B : !s
  H0 : strip_env Γ ⊢ strip A : !s%UT
  H3 : strip_env Γ ⊢ strip B : !s%UT
  H4 : strip A ≡ strip B
  ============================
   strip_env Γ ⊢ strip N : strip A

subgoal 2 (ID 4103) is:
 strip M ≡ strip N
subgoal 3 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 4 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 5 (ID 3147) is:
 (nil ⊣)%UT
subgoal 6 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)

apply PTS.Cnv with (strip B) s; intuition.
5 subgoals, subgoal 1 (ID 4103)
  
  Γ : Env
  M : Term
  N : Term
  A : Term
  B : Term
  s : Sorts
  t : Γ ⊢ M ▹ N : B
  H : strip_env Γ ⊢ strip M : strip B
  H1 : strip_env Γ ⊢ strip N : strip B
  H2 : strip M ≡ strip N
  t0 : Γ ⊢ A ▹ B : !s
  H0 : strip_env Γ ⊢ strip A : !s%UT
  H3 : strip_env Γ ⊢ strip B : !s%UT
  H4 : strip A ≡ strip B
  ============================
   strip M ≡ strip N

subgoal 2 (ID 3136) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
subgoal 3 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 4 (ID 3147) is:
 (nil ⊣)%UT
subgoal 5 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)

trivial.
4 subgoals, subgoal 1 (ID 3136)
  
  Γ : Env
  s : Term
  t : Term
  T : Term
  t0 : Γ ⊢ s ▹ t : T
  H : (strip_env Γ ⊢ strip s : strip T) /\
      (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
  ============================
   (strip_env Γ ⊢ strip s : strip T) /\
   (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t

subgoal 2 (ID 3146) is:
 (strip_env Γ ⊢ strip s : strip T) /\
 (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u
subgoal 3 (ID 3147) is:
 (nil ⊣)%UT
subgoal 4 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)


eauto.
3 subgoals, subgoal 1 (ID 3146)
  
  Γ : Env
  s : Term
  t : Term
  u : Term
  T : Term
  t0 : Γ ⊢ s ▹▹ t : T
  H : (strip_env Γ ⊢ strip s : strip T) /\
      (strip_env Γ ⊢ strip t : strip T) /\ strip s ≡ strip t
  t1 : Γ ⊢ t ▹▹ u : T
  H0 : (strip_env Γ ⊢ strip t : strip T) /\
       (strip_env Γ ⊢ strip u : strip T) /\ strip t ≡ strip u
  ============================
   (strip_env Γ ⊢ strip s : strip T) /\
   (strip_env Γ ⊢ strip u : strip T) /\ strip s ≡ strip u

subgoal 2 (ID 3147) is:
 (nil ⊣)%UT
subgoal 3 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using ,)


destruct H as (? & ? & ?), H0 as ( ? & ?& ?); eauto.
2 subgoals, subgoal 1 (ID 3147)
  
  ============================
   (nil ⊣)%UT

subgoal 2 (ID 3154) is:
 (strip A :: strip_env Γ ⊣)%UT
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using , ?4160 using ,)


trivial.
1 subgoals, subgoal 1 (ID 3154)
  
  Γ : Env
  A : Term
  A' : Term
  s : Sorts
  t : Γ ⊢ A ▹ A' : !s
  H : (strip_env Γ ⊢ strip A : !s%UT) /\
      (strip_env Γ ⊢ strip A' : !s%UT) /\ strip A ≡ strip A'
  ============================
   (strip A :: strip_env Γ ⊣)%UT

(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using , ?4160 using ,)


destruct H as (? & ?& ?).
1 subgoals, subgoal 1 (ID 4216)
  
  Γ : Env
  A : Term
  A' : Term
  s : Sorts
  t : Γ ⊢ A ▹ A' : !s
  H : strip_env Γ ⊢ strip A : !s%UT
  H0 : strip_env Γ ⊢ strip A' : !s%UT
  H1 : strip A ≡ strip A'
  ============================
   (strip A :: strip_env Γ ⊣)%UT

(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using , ?4160 using ,)

eauto.
No more subgoals.
(dependent evars: ?3263 using , ?3421 using , ?3450 using , ?3608 using ?3615 , ?3609 using ?3617 , ?3610 using ?3618 , ?3615 using , ?3617 using , ?3618 using , ?3623 using , ?3830 using ?3837 , ?3831 using ?3839 , ?3832 using ?3840 , ?3837 using , ?3839 using , ?3840 using , ?3845 using , ?3861 using ?3868 , ?3862 using ?3870 , ?3863 using ?3871 , ?3868 using , ?3870 using , ?3871 using , ?3876 using , ?4160 using , ?4217 using ,)


Qed.
FromPTSATR_to_PTS is defined



Lemma FromPTSATR_to_PTSe : (forall Γ M N T, Γ M N : T -> (strip_env Γ) e (strip M) = (strip N) : (strip T)) /\
 (forall Γ M N T, Γ M ▹▹ N : T -> (strip_env Γ) e (strip M) = (strip N) : (strip T)) /\
 (forall Γ, (PTS_ATR.wf Γ) -> ((strip_env Γ) e)%UT).
1 subgoals, subgoal 1 (ID 4237)
  
  ============================
   (forall (Γ : Env) (M N T : Term),
    Γ ⊢ M ▹ N : T -> strip_env Γ ⊢e strip M = strip N : strip T) /\
   (forall (Γ : Env) (M N T : Term),
    Γ ⊢ M ▹▹ N : T -> strip_env Γ ⊢e strip M = strip N : strip T) /\
   (forall Γ : Env, Γ ⊣ -> strip_env Γ ⊣e)

(dependent evars:)


apply PTS_ATR.typ_induc; intros; simpl in *.
12 subgoals, subgoal 1 (ID 4386)
  
  Γ : Env
  x : nat
  A : Term
  w : Γ ⊣
  H : strip_env Γ ⊣e
  i : A ↓ x ⊂ Γ
  ============================
   strip_env Γ ⊢e #x%UT = #x%UT : strip A

subgoal 2 (ID 4393) is:
 strip_env Γ ⊢e !s1%UT = !s1%UT : !s2%UT
subgoal 3 (ID 4407) is:
 strip_env Γ ⊢e (Π (strip A), strip B)%UT = (Π (strip A'), strip B')%UT
 : !s3%UT
subgoal 4 (ID 4424) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT = (λ [strip A'], strip M')%UT
 : (Π (strip A), strip B)%UT
subgoal 5 (ID 4446) is:
 strip_env Γ ⊢e strip M · strip N = strip M' · strip N' : strip B [ ← N]
subgoal 6 (ID 4474) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N = 
 strip M' [ ← N'] : strip B [ ← N]
subgoal 7 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 8 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 9 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 10 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 11 (ID 4514) is:
 nil ⊣e
subgoal 12 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars:)


apply strip_var in i.
12 subgoals, subgoal 1 (ID 4523)
  
  Γ : Env
  x : nat
  A : Term
  w : Γ ⊣
  H : strip_env Γ ⊣e
  i : (strip A ↓ x ⊂ strip_env Γ)%UT
  ============================
   strip_env Γ ⊢e #x%UT = #x%UT : strip A

subgoal 2 (ID 4393) is:
 strip_env Γ ⊢e !s1%UT = !s1%UT : !s2%UT
subgoal 3 (ID 4407) is:
 strip_env Γ ⊢e (Π (strip A), strip B)%UT = (Π (strip A'), strip B')%UT
 : !s3%UT
subgoal 4 (ID 4424) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT = (λ [strip A'], strip M')%UT
 : (Π (strip A), strip B)%UT
subgoal 5 (ID 4446) is:
 strip_env Γ ⊢e strip M · strip N = strip M' · strip N' : strip B [ ← N]
subgoal 6 (ID 4474) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N = 
 strip M' [ ← N'] : strip B [ ← N]
subgoal 7 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 8 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 9 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 10 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 11 (ID 4514) is:
 nil ⊣e
subgoal 12 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars:)

intuition.
11 subgoals, subgoal 1 (ID 4393)
  
  Γ : Env
  s1 : Sorts
  s2 : Sorts
  a : Ax s1 s2
  w : Γ ⊣
  H : strip_env Γ ⊣e
  ============================
   strip_env Γ ⊢e !s1%UT = !s1%UT : !s2%UT

subgoal 2 (ID 4407) is:
 strip_env Γ ⊢e (Π (strip A), strip B)%UT = (Π (strip A'), strip B')%UT
 : !s3%UT
subgoal 3 (ID 4424) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT = (λ [strip A'], strip M')%UT
 : (Π (strip A), strip B)%UT
subgoal 4 (ID 4446) is:
 strip_env Γ ⊢e strip M · strip N = strip M' · strip N' : strip B [ ← N]
subgoal 5 (ID 4474) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N = 
 strip M' [ ← N'] : strip B [ ← N]
subgoal 6 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 7 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 8 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 9 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 10 (ID 4514) is:
 nil ⊣e
subgoal 11 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars:)


intuition.
10 subgoals, subgoal 1 (ID 4407)
  
  Γ : Env
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  A : Term
  A' : Term
  B : Term
  B' : Term
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢e strip A = strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢e strip B = strip B' : !s2%UT
  ============================
   strip_env Γ ⊢e (Π (strip A), strip B)%UT = (Π (strip A'), strip B')%UT
   : !s3%UT

subgoal 2 (ID 4424) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT = (λ [strip A'], strip M')%UT
 : (Π (strip A), strip B)%UT
subgoal 3 (ID 4446) is:
 strip_env Γ ⊢e strip M · strip N = strip M' · strip N' : strip B [ ← N]
subgoal 4 (ID 4474) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N = 
 strip M' [ ← N'] : strip B [ ← N]
subgoal 5 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 6 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 7 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 8 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 9 (ID 4514) is:
 nil ⊣e
subgoal 10 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars:)


apply cPi_eq with s1 s2; trivial.
9 subgoals, subgoal 1 (ID 4424)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢e strip A = strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  ============================
   strip_env Γ ⊢e (λ [strip A], strip M)%UT = (λ [strip A'], strip M')%UT
   : (Π (strip A), strip B)%UT

subgoal 2 (ID 4446) is:
 strip_env Γ ⊢e strip M · strip N = strip M' · strip N' : strip B [ ← N]
subgoal 3 (ID 4474) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N = 
 strip M' [ ← N'] : strip B [ ← N]
subgoal 4 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 5 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 6 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 7 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 8 (ID 4514) is:
 nil ⊣e
subgoal 9 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars:)


apply cLa_eq with s1 s2 s3; trivial.
9 subgoals, subgoal 1 (ID 4562)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢e strip A = strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  ============================
   strip A :: strip_env Γ ⊢e strip B : !s2%UT

subgoal 2 (ID 4446) is:
 strip_env Γ ⊢e strip M · strip N = strip M' · strip N' : strip B [ ← N]
subgoal 3 (ID 4474) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N = 
 strip M' [ ← N'] : strip B [ ← N]
subgoal 4 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 5 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 6 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 7 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 8 (ID 4514) is:
 nil ⊣e
subgoal 9 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars:)


change (strip A::strip_env Γ) with( nil++strip A::strip_env Γ).
9 subgoals, subgoal 1 (ID 4568)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢e strip A = strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  ============================
   nil ++ strip A :: strip_env Γ ⊢e strip B : !s2%UT

subgoal 2 (ID 4446) is:
 strip_env Γ ⊢e strip M · strip N = strip M' · strip N' : strip B [ ← N]
subgoal 3 (ID 4474) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N = 
 strip M' [ ← N'] : strip B [ ← N]
subgoal 4 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 5 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 6 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 7 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 8 (ID 4514) is:
 nil ⊣e
subgoal 9 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars:)


eapply PTSe.conv_in_env.
12 subgoals, subgoal 1 (ID 4585)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢e strip A = strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  ============================
   ?4584 ⊢e strip B : !s2%UT

subgoal 2 (ID 4587) is:
 ?4584 = nil ++ ?4586 :: strip_env Γ
subgoal 3 (ID 4589) is:
 strip_env Γ ⊢e ?4586 = strip A : !?4588%UT
subgoal 4 (ID 4590) is:
 strip_env Γ ⊢e strip A : !?4588%UT
subgoal 5 (ID 4446) is:
 strip_env Γ ⊢e strip M · strip N = strip M' · strip N' : strip B [ ← N]
subgoal 6 (ID 4474) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N = 
 strip M' [ ← N'] : strip B [ ← N]
subgoal 7 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 8 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 9 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 10 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 11 (ID 4514) is:
 nil ⊣e
subgoal 12 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 open, ?4586 open, ?4588 open,)

apply left_reflexivity in H0.
12 subgoals, subgoal 1 (ID 4593)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢e strip A = strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢e strip B : !s2%UT
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  ============================
   ?4592 ⊢e strip B : !s2%UT

subgoal 2 (ID 4587) is:
 ?4592 = nil ++ ?4586 :: strip_env Γ
subgoal 3 (ID 4589) is:
 strip_env Γ ⊢e ?4586 = strip A : !?4588%UT
subgoal 4 (ID 4590) is:
 strip_env Γ ⊢e strip A : !?4588%UT
subgoal 5 (ID 4446) is:
 strip_env Γ ⊢e strip M · strip N = strip M' · strip N' : strip B [ ← N]
subgoal 6 (ID 4474) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N = 
 strip M' [ ← N'] : strip B [ ← N]
subgoal 7 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 8 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 9 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 10 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 11 (ID 4514) is:
 nil ⊣e
subgoal 12 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 open, ?4588 open, ?4592 open,)

apply H0.
11 subgoals, subgoal 1 (ID 4587)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢e strip A = strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  ============================
   strip A :: strip_env Γ = nil ++ ?4586 :: strip_env Γ

subgoal 2 (ID 4589) is:
 strip_env Γ ⊢e ?4586 = strip A : !?4588%UT
subgoal 3 (ID 4590) is:
 strip_env Γ ⊢e strip A : !?4588%UT
subgoal 4 (ID 4446) is:
 strip_env Γ ⊢e strip M · strip N = strip M' · strip N' : strip B [ ← N]
subgoal 5 (ID 4474) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N = 
 strip M' [ ← N'] : strip B [ ← N]
subgoal 6 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 7 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 8 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 9 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 10 (ID 4514) is:
 nil ⊣e
subgoal 11 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 open, ?4588 open, ?4592 using ,)


simpl; reflexivity.
10 subgoals, subgoal 1 (ID 4589)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢e strip A = strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  ============================
   strip_env Γ ⊢e strip A = strip A : !?4588%UT

subgoal 2 (ID 4590) is:
 strip_env Γ ⊢e strip A : !?4588%UT
subgoal 3 (ID 4446) is:
 strip_env Γ ⊢e strip M · strip N = strip M' · strip N' : strip B [ ← N]
subgoal 4 (ID 4474) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N = 
 strip M' [ ← N'] : strip B [ ← N]
subgoal 5 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 6 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 7 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 8 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 9 (ID 4514) is:
 nil ⊣e
subgoal 10 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 open, ?4592 using ,)

apply cRefl.
10 subgoals, subgoal 1 (ID 4596)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢e strip A = strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  ============================
   strip_env Γ ⊢e strip A : !?4588%UT

subgoal 2 (ID 4590) is:
 strip_env Γ ⊢e strip A : !?4588%UT
subgoal 3 (ID 4446) is:
 strip_env Γ ⊢e strip M · strip N = strip M' · strip N' : strip B [ ← N]
subgoal 4 (ID 4474) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N = 
 strip M' [ ← N'] : strip B [ ← N]
subgoal 5 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 6 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 7 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 8 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 9 (ID 4514) is:
 nil ⊣e
subgoal 10 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 open, ?4592 using ,)


apply left_reflexivity in H.
10 subgoals, subgoal 1 (ID 4599)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢e strip A : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  ============================
   strip_env Γ ⊢e strip A : !?4598%UT

subgoal 2 (ID 4590) is:
 strip_env Γ ⊢e strip A : !?4598%UT
subgoal 3 (ID 4446) is:
 strip_env Γ ⊢e strip M · strip N = strip M' · strip N' : strip B [ ← N]
subgoal 4 (ID 4474) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N = 
 strip M' [ ← N'] : strip B [ ← N]
subgoal 5 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 6 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 7 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 8 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 9 (ID 4514) is:
 nil ⊣e
subgoal 10 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 open,)

apply H.
9 subgoals, subgoal 1 (ID 4590)
  
  Γ : Env
  A : Term
  A' : Term
  B : Term
  M : Term
  M' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢e strip A = strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B : !s2
  H0 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t1 : A :: Γ ⊢ M ▹ M' : B
  H1 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  ============================
   strip_env Γ ⊢e strip A : !s1%UT

subgoal 2 (ID 4446) is:
 strip_env Γ ⊢e strip M · strip N = strip M' · strip N' : strip B [ ← N]
subgoal 3 (ID 4474) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N = 
 strip M' [ ← N'] : strip B [ ← N]
subgoal 4 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 5 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 6 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 7 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 8 (ID 4514) is:
 nil ⊣e
subgoal 9 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using ,)


apply left_reflexivity with (strip A'); trivial.
8 subgoals, subgoal 1 (ID 4446)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢e strip A = strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢e strip B = strip B' : !s2%UT
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : strip_env Γ ⊢e strip M = strip M' : (Π (strip A), strip B)%UT
  t2 : Γ ⊢ N ▹ N' : A
  H2 : strip_env Γ ⊢e strip N = strip N' : strip A
  ============================
   strip_env Γ ⊢e strip M · strip N = strip M' · strip N' : strip B [ ← N]

subgoal 2 (ID 4474) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N = 
 strip M' [ ← N'] : strip B [ ← N]
subgoal 3 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 4 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 5 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 6 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 7 (ID 4514) is:
 nil ⊣e
subgoal 8 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using ,)


rewrite strip_subst.
8 subgoals, subgoal 1 (ID 4601)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢e strip A = strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢e strip B = strip B' : !s2%UT
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : strip_env Γ ⊢e strip M = strip M' : (Π (strip A), strip B)%UT
  t2 : Γ ⊢ N ▹ N' : A
  H2 : strip_env Γ ⊢e strip N = strip N' : strip A
  ============================
   strip_env Γ ⊢e strip M · strip N = strip M' · strip N'
   : ((strip B) [ ← strip N])%UT

subgoal 2 (ID 4474) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N = 
 strip M' [ ← N'] : strip B [ ← N]
subgoal 3 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 4 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 5 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 6 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 7 (ID 4514) is:
 nil ⊣e
subgoal 8 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using ,)

apply cApp_eq with (strip A).
9 subgoals, subgoal 1 (ID 4602)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢e strip A = strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢e strip B = strip B' : !s2%UT
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : strip_env Γ ⊢e strip M = strip M' : (Π (strip A), strip B)%UT
  t2 : Γ ⊢ N ▹ N' : A
  H2 : strip_env Γ ⊢e strip N = strip N' : strip A
  ============================
   strip_env Γ ⊢e strip M = strip M' : (Π (strip A), strip B)%UT

subgoal 2 (ID 4603) is:
 strip_env Γ ⊢e strip N = strip N' : strip A
subgoal 3 (ID 4474) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N = 
 strip M' [ ← N'] : strip B [ ← N]
subgoal 4 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 5 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 6 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 7 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 8 (ID 4514) is:
 nil ⊣e
subgoal 9 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using ,)

trivial.
8 subgoals, subgoal 1 (ID 4603)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  B : Term
  B' : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A' : !s1
  H : strip_env Γ ⊢e strip A = strip A' : !s1%UT
  t0 : A :: Γ ⊢ B ▹ B' : !s2
  H0 : strip A :: strip_env Γ ⊢e strip B = strip B' : !s2%UT
  t1 : Γ ⊢ M ▹ M' : Π (A), B
  H1 : strip_env Γ ⊢e strip M = strip M' : (Π (strip A), strip B)%UT
  t2 : Γ ⊢ N ▹ N' : A
  H2 : strip_env Γ ⊢e strip N = strip N' : strip A
  ============================
   strip_env Γ ⊢e strip N = strip N' : strip A

subgoal 2 (ID 4474) is:
 strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N = 
 strip M' [ ← N'] : strip B [ ← N]
subgoal 3 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 4 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 5 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 6 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 7 (ID 4514) is:
 nil ⊣e
subgoal 8 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using ,)

trivial.
7 subgoals, subgoal 1 (ID 4474)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢e strip A = strip A : !s1%UT
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢e strip A' = strip A' : !s1%UT
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢e strip A0 = strip A : !s1%UT
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢e strip A0 = strip A' : !s1%UT
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢e strip N = strip N' : strip A
  ============================
   strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N = 
   strip M' [ ← N'] : strip B [ ← N]

subgoal 2 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 3 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 4 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 5 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 6 (ID 4514) is:
 nil ⊣e
subgoal 7 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using ,)


apply cTrans with ((strip M)[← strip N])%UT.
8 subgoals, subgoal 1 (ID 4604)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢e strip A = strip A : !s1%UT
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢e strip A' = strip A' : !s1%UT
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢e strip A0 = strip A : !s1%UT
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢e strip A0 = strip A' : !s1%UT
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢e strip N = strip N' : strip A
  ============================
   strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N =
   ((strip M) [ ← strip N])%UT : strip B [ ← N]

subgoal 2 (ID 4605) is:
 strip_env Γ ⊢e ((strip M) [ ← strip N])%UT = strip M' [ ← N']
 : strip B [ ← N]
subgoal 3 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 4 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 5 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 6 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 7 (ID 4514) is:
 nil ⊣e
subgoal 8 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using ,)

rewrite !strip_subst.
8 subgoals, subgoal 1 (ID 4606)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢e strip A = strip A : !s1%UT
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢e strip A' = strip A' : !s1%UT
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢e strip A0 = strip A : !s1%UT
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢e strip A0 = strip A' : !s1%UT
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢e strip N = strip N' : strip A
  ============================
   strip_env Γ ⊢e (λ [strip A], strip M)%UT · strip N =
   ((strip M) [ ← strip N])%UT : ((strip B) [ ← strip N])%UT

subgoal 2 (ID 4605) is:
 strip_env Γ ⊢e ((strip M) [ ← strip N])%UT = strip M' [ ← N']
 : strip B [ ← N]
subgoal 3 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 4 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 5 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 6 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 7 (ID 4514) is:
 nil ⊣e
subgoal 8 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using ,)


apply cBeta with s1 s2 s3; trivial.
11 subgoals, subgoal 1 (ID 4608)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢e strip A = strip A : !s1%UT
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢e strip A' = strip A' : !s1%UT
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢e strip A0 = strip A : !s1%UT
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢e strip A0 = strip A' : !s1%UT
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢e strip N = strip N' : strip A
  ============================
   strip_env Γ ⊢e strip A : !s1%UT

subgoal 2 (ID 4609) is:
 strip A :: strip_env Γ ⊢e strip B : !s2%UT
subgoal 3 (ID 4610) is:
 strip A :: strip_env Γ ⊢e strip M : strip B
subgoal 4 (ID 4611) is:
 strip_env Γ ⊢e strip N : strip A
subgoal 5 (ID 4605) is:
 strip_env Γ ⊢e ((strip M) [ ← strip N])%UT = strip M' [ ← N']
 : strip B [ ← N]
subgoal 6 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 7 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 8 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 9 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 10 (ID 4514) is:
 nil ⊣e
subgoal 11 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using ,)


apply left_reflexivity with (strip A); trivial.
10 subgoals, subgoal 1 (ID 4609)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢e strip A = strip A : !s1%UT
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢e strip A' = strip A' : !s1%UT
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢e strip A0 = strip A : !s1%UT
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢e strip A0 = strip A' : !s1%UT
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢e strip N = strip N' : strip A
  ============================
   strip A :: strip_env Γ ⊢e strip B : !s2%UT

subgoal 2 (ID 4610) is:
 strip A :: strip_env Γ ⊢e strip M : strip B
subgoal 3 (ID 4611) is:
 strip_env Γ ⊢e strip N : strip A
subgoal 4 (ID 4605) is:
 strip_env Γ ⊢e ((strip M) [ ← strip N])%UT = strip M' [ ← N']
 : strip B [ ← N]
subgoal 5 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 6 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 7 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 8 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 9 (ID 4514) is:
 nil ⊣e
subgoal 10 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using ,)


apply left_reflexivity with (strip B); trivial.
9 subgoals, subgoal 1 (ID 4610)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢e strip A = strip A : !s1%UT
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢e strip A' = strip A' : !s1%UT
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢e strip A0 = strip A : !s1%UT
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢e strip A0 = strip A' : !s1%UT
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢e strip N = strip N' : strip A
  ============================
   strip A :: strip_env Γ ⊢e strip M : strip B

subgoal 2 (ID 4611) is:
 strip_env Γ ⊢e strip N : strip A
subgoal 3 (ID 4605) is:
 strip_env Γ ⊢e ((strip M) [ ← strip N])%UT = strip M' [ ← N']
 : strip B [ ← N]
subgoal 4 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 5 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 6 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 7 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 8 (ID 4514) is:
 nil ⊣e
subgoal 9 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using ,)


apply left_reflexivity with (strip M'); trivial.
8 subgoals, subgoal 1 (ID 4611)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢e strip A = strip A : !s1%UT
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢e strip A' = strip A' : !s1%UT
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢e strip A0 = strip A : !s1%UT
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢e strip A0 = strip A' : !s1%UT
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢e strip N = strip N' : strip A
  ============================
   strip_env Γ ⊢e strip N : strip A

subgoal 2 (ID 4605) is:
 strip_env Γ ⊢e ((strip M) [ ← strip N])%UT = strip M' [ ← N']
 : strip B [ ← N]
subgoal 3 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 4 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 5 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 6 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 7 (ID 4514) is:
 nil ⊣e
subgoal 8 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using ,)


apply left_reflexivity with (strip N'); trivial.
7 subgoals, subgoal 1 (ID 4605)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢e strip A = strip A : !s1%UT
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢e strip A' = strip A' : !s1%UT
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢e strip A0 = strip A : !s1%UT
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢e strip A0 = strip A' : !s1%UT
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢e strip N = strip N' : strip A
  ============================
   strip_env Γ ⊢e ((strip M) [ ← strip N])%UT = strip M' [ ← N']
   : strip B [ ← N]

subgoal 2 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 3 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 4 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 5 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 6 (ID 4514) is:
 nil ⊣e
subgoal 7 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using ,)


rewrite !strip_subst.
7 subgoals, subgoal 1 (ID 4617)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢e strip A = strip A : !s1%UT
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢e strip A' = strip A' : !s1%UT
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢e strip A0 = strip A : !s1%UT
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢e strip A0 = strip A' : !s1%UT
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢e strip N = strip N' : strip A
  ============================
   strip_env Γ ⊢e ((strip M) [ ← strip N])%UT = ((strip M') [ ← strip N'])%UT
   : ((strip B) [ ← strip N])%UT

subgoal 2 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 3 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 4 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 5 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 6 (ID 4514) is:
 nil ⊣e
subgoal 7 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using ,)


eapply parallel_subst.
9 subgoals, subgoal 1 (ID 4621)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢e strip A = strip A : !s1%UT
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢e strip A' = strip A' : !s1%UT
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢e strip A0 = strip A : !s1%UT
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢e strip A0 = strip A' : !s1%UT
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢e strip N = strip N' : strip A
  ============================
   ?4618 ⊢e strip M = strip M' : strip B

subgoal 2 (ID 4622) is:
 ?4619 ⊢e strip N = strip N' : ?4620
subgoal 3 (ID 4623) is:
 UEM.sub_in_env ?4619 (strip N) ?4620 0 ?4618 (strip_env Γ)
subgoal 4 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 5 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 6 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 7 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 8 (ID 4514) is:
 nil ⊣e
subgoal 9 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using , ?4618 open, ?4619 open, ?4620 open,)


apply H4.
8 subgoals, subgoal 1 (ID 4622)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢e strip A = strip A : !s1%UT
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢e strip A' = strip A' : !s1%UT
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢e strip A0 = strip A : !s1%UT
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢e strip A0 = strip A' : !s1%UT
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢e strip N = strip N' : strip A
  ============================
   ?4619 ⊢e strip N = strip N' : ?4620

subgoal 2 (ID 4623) is:
 UEM.sub_in_env ?4619 (strip N) ?4620 0 (strip A :: strip_env Γ)
   (strip_env Γ)
subgoal 3 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 4 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 5 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 6 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 7 (ID 4514) is:
 nil ⊣e
subgoal 8 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using , ?4618 using , ?4619 open, ?4620 open,)

apply H5.
7 subgoals, subgoal 1 (ID 4623)
  
  Γ : Env
  M : Term
  M' : Term
  N : Term
  N' : Term
  A : Term
  A' : Term
  A0 : Term
  B : Term
  s1 : Sorts
  s2 : Sorts
  s3 : Sorts
  r : Rel s1 s2 s3
  t : Γ ⊢ A ▹ A : !s1
  H : strip_env Γ ⊢e strip A = strip A : !s1%UT
  t0 : Γ ⊢ A' ▹ A' : !s1
  H0 : strip_env Γ ⊢e strip A' = strip A' : !s1%UT
  t1 : Γ ⊢ A0 ▹▹ A : !s1
  H1 : strip_env Γ ⊢e strip A0 = strip A : !s1%UT
  t2 : Γ ⊢ A0 ▹▹ A' : !s1
  H2 : strip_env Γ ⊢e strip A0 = strip A' : !s1%UT
  t3 : A :: Γ ⊢ B ▹ B : !s2
  H3 : strip A :: strip_env Γ ⊢e strip B = strip B : !s2%UT
  t4 : A :: Γ ⊢ M ▹ M' : B
  H4 : strip A :: strip_env Γ ⊢e strip M = strip M' : strip B
  t5 : Γ ⊢ N ▹ N' : A
  H5 : strip_env Γ ⊢e strip N = strip N' : strip A
  ============================
   UEM.sub_in_env (strip_env Γ) (strip N) (strip A) 0
     (strip A :: strip_env Γ) (strip_env Γ)

subgoal 2 (ID 4485) is:
 strip_env Γ ⊢e strip M = strip N : strip B
subgoal 3 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 4 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 5 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 6 (ID 4514) is:
 nil ⊣e
subgoal 7 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using , ?4618 using , ?4619 using , ?4620 using ,)


constructor.
6 subgoals, subgoal 1 (ID 4485)
  
  Γ : Env
  M : Term
  N : Term
  A : Term
  B : Term
  s : Sorts
  t : Γ ⊢ M ▹ N : A
  H : strip_env Γ ⊢e strip M = strip N : strip A
  t0 : Γ ⊢ A ▹ B : !s
  H0 : strip_env Γ ⊢e strip A = strip B : !s%UT
  ============================
   strip_env Γ ⊢e strip M = strip N : strip B

subgoal 2 (ID 4496) is:
 strip_env Γ ⊢e strip M = strip N : strip A
subgoal 3 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 4 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 5 (ID 4514) is:
 nil ⊣e
subgoal 6 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using , ?4618 using , ?4619 using , ?4620 using ,)


apply Cnv_eq with (strip A) s; trivial.
5 subgoals, subgoal 1 (ID 4496)
  
  Γ : Env
  M : Term
  N : Term
  A : Term
  B : Term
  s : Sorts
  t : Γ ⊢ M ▹ N : B
  H : strip_env Γ ⊢e strip M = strip N : strip B
  t0 : Γ ⊢ A ▹ B : !s
  H0 : strip_env Γ ⊢e strip A = strip B : !s%UT
  ============================
   strip_env Γ ⊢e strip M = strip N : strip A

subgoal 2 (ID 4503) is:
 strip_env Γ ⊢e strip s = strip t : strip T
subgoal 3 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 4 (ID 4514) is:
 nil ⊣e
subgoal 5 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using , ?4618 using , ?4619 using , ?4620 using ,)


apply Cnv_eq with (strip B) s; intuition.
4 subgoals, subgoal 1 (ID 4503)
  
  Γ : Env
  s : Term
  t : Term
  T : Term
  t0 : Γ ⊢ s ▹ t : T
  H : strip_env Γ ⊢e strip s = strip t : strip T
  ============================
   strip_env Γ ⊢e strip s = strip t : strip T

subgoal 2 (ID 4513) is:
 strip_env Γ ⊢e strip s = strip u : strip T
subgoal 3 (ID 4514) is:
 nil ⊣e
subgoal 4 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using , ?4618 using , ?4619 using , ?4620 using ,)


eauto.
3 subgoals, subgoal 1 (ID 4513)
  
  Γ : Env
  s : Term
  t : Term
  u : Term
  T : Term
  t0 : Γ ⊢ s ▹▹ t : T
  H : strip_env Γ ⊢e strip s = strip t : strip T
  t1 : Γ ⊢ t ▹▹ u : T
  H0 : strip_env Γ ⊢e strip t = strip u : strip T
  ============================
   strip_env Γ ⊢e strip s = strip u : strip T

subgoal 2 (ID 4514) is:
 nil ⊣e
subgoal 3 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using , ?4618 using , ?4619 using , ?4620 using ,)


eauto.
2 subgoals, subgoal 1 (ID 4514)
  
  ============================
   nil ⊣e

subgoal 2 (ID 4521) is:
 strip A :: strip_env Γ ⊣e
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using , ?4618 using , ?4619 using , ?4620 using , ?4666 using ,)


trivial.
1 subgoals, subgoal 1 (ID 4521)
  
  Γ : Env
  A : Term
  A' : Term
  s : Sorts
  t : Γ ⊢ A ▹ A' : !s
  H : strip_env Γ ⊢e strip A = strip A' : !s%UT
  ============================
   strip A :: strip_env Γ ⊣e

(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using , ?4618 using , ?4619 using , ?4620 using , ?4666 using ,)


econstructor.
1 subgoals, subgoal 1 (ID 4724)
  
  Γ : Env
  A : Term
  A' : Term
  s : Sorts
  t : Γ ⊢ A ▹ A' : !s
  H : strip_env Γ ⊢e strip A = strip A' : !s%UT
  ============================
   strip_env Γ ⊢e strip A : !?4723%UT

(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using , ?4618 using , ?4619 using , ?4620 using , ?4666 using , ?4723 open,)

apply left_reflexivity in H.
1 subgoals, subgoal 1 (ID 4727)
  
  Γ : Env
  A : Term
  A' : Term
  s : Sorts
  t : Γ ⊢ A ▹ A' : !s
  H : strip_env Γ ⊢e strip A : !s%UT
  ============================
   strip_env Γ ⊢e strip A : !?4726%UT

(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using , ?4618 using , ?4619 using , ?4620 using , ?4666 using , ?4723 using ?4726 , ?4726 open,)

apply H.
No more subgoals.
(dependent evars: ?4577 using ?4584 , ?4578 using ?4586 , ?4579 using ?4588 , ?4584 using ?4592 , ?4586 using , ?4588 using ?4598 , ?4592 using , ?4598 using , ?4618 using , ?4619 using , ?4620 using , ?4666 using , ?4723 using ?4726 , ?4726 using ,)


Qed.
FromPTSATR_to_PTSe is defined



Lemma FromPTSATR_to_PTSe_trans : forall Γ M N T, Γ M ▹▹ N : T -> (strip_env Γ) e (strip M) = (strip N) : (strip T).
1 subgoals, subgoal 1 (ID 4733)
  
  ============================
   forall (Γ : Env) (M N T : Term),
   Γ ⊢ M ▹▹ N : T -> strip_env Γ ⊢e strip M = strip N : strip T

(dependent evars:)


induction 1.
2 subgoals, subgoal 1 (ID 4755)
  
  Γ : Env
  s : Term
  t : Term
  T : Term
  H : Γ ⊢ s ▹ t : T
  ============================
   strip_env Γ ⊢e strip s = strip t : strip T

subgoal 2 (ID 4765) is:
 strip_env Γ ⊢e strip s = strip u : strip T
(dependent evars:)

apply FromPTSATR_to_PTSe in H.
2 subgoals, subgoal 1 (ID 4776)
  
  Γ : Env
  s : Term
  t : Term
  T : Term
  H : strip_env Γ ⊢e strip s = strip t : strip T
  ============================
   strip_env Γ ⊢e strip s = strip t : strip T

subgoal 2 (ID 4765) is:
 strip_env Γ ⊢e strip s = strip u : strip T
(dependent evars:)

trivial.
1 subgoals, subgoal 1 (ID 4765)
  
  Γ : Env
  s : Term
  t : Term
  u : Term
  T : Term
  H : Γ ⊢ s ▹▹ t : T
  H0 : Γ ⊢ t ▹▹ u : T
  IHtyp_reds1 : strip_env Γ ⊢e strip s = strip t : strip T
  IHtyp_reds2 : strip_env Γ ⊢e strip t = strip u : strip T
  ============================
   strip_env Γ ⊢e strip s = strip u : strip T

(dependent evars:)


eauto.
No more subgoals.
(dependent evars: ?4794 using ,)


Qed.
FromPTSATR_to_PTSe_trans is defined



With the previous result, we can complete the following chart:
  • ut_typ_eq.v : PTSe -> PTS
  • : PTS -> PTS{atr}
  • : PTS{atr} -> PTS
  • : PTS{atr} -> PTSe
So PTSe -> PTS -> PTS{atr} -> PTSe which prove that PTSe <-> PTS.
Lemma PTS_equiv_PTSe : (forall Γ M T, Γ M : T <-> Γ e M : T) /\
  (forall Γ M N T, Γ e M = N : T <-> Γ M : T /\ Γ N : T /\ M N).
1 subgoals, subgoal 1 (ID 4862)
  
  ============================
   (forall (Γ : UEM.Env) (M T : UTM.Term), Γ ⊢ M : T <-> Γ ⊢e M : T) /\
   (forall (Γ : UEM.Env) (M N T : UTM.Term),
    Γ ⊢e M = N : T <-> (Γ ⊢ M : T) /\ (Γ ⊢ N : T) /\ M ≡ N)

(dependent evars:)


split.
2 subgoals, subgoal 1 (ID 4864)
  
  ============================
   forall (Γ : UEM.Env) (M T : UTM.Term), Γ ⊢ M : T <-> Γ ⊢e M : T

subgoal 2 (ID 4865) is:
 forall (Γ : UEM.Env) (M N T : UTM.Term),
 Γ ⊢e M = N : T <-> (Γ ⊢ M : T) /\ (Γ ⊢ N : T) /\ M ≡ N
(dependent evars:)

intros.
2 subgoals, subgoal 1 (ID 4868)
  
  Γ : UEM.Env
  M : UTM.Term
  T : UTM.Term
  ============================
   Γ ⊢ M : T <-> Γ ⊢e M : T

subgoal 2 (ID 4865) is:
 forall (Γ : UEM.Env) (M N T : UTM.Term),
 Γ ⊢e M = N : T <-> (Γ ⊢ M : T) /\ (Γ ⊢ N : T) /\ M ≡ N
(dependent evars:)

split; intros.
3 subgoals, subgoal 1 (ID 4872)
  
  Γ : UEM.Env
  M : UTM.Term
  T : UTM.Term
  H : Γ ⊢ M : T
  ============================
   Γ ⊢e M : T

subgoal 2 (ID 4873) is:
 Γ ⊢ M : T
subgoal 3 (ID 4865) is:
 forall (Γ : UEM.Env) (M N T : UTM.Term),
 Γ ⊢e M = N : T <-> (Γ ⊢ M : T) /\ (Γ ⊢ N : T) /\ M ≡ N
(dependent evars:)


apply FromPTS_to_PTSATR in H.
3 subgoals, subgoal 1 (ID 4882)
  
  Γ : UEM.Env
  M : UTM.Term
  T : UTM.Term
  H : exists (Γ' : Env) (M' A' : Term),
        strip_env Γ' = Γ /\ strip M' = M /\ strip A' = T /\ Γ' ⊢ M' ▹ M' : A'
  ============================
   Γ ⊢e M : T

subgoal 2 (ID 4873) is:
 Γ ⊢ M : T
subgoal 3 (ID 4865) is:
 forall (Γ : UEM.Env) (M N T : UTM.Term),
 Γ ⊢e M = N : T <-> (Γ ⊢ M : T) /\ (Γ ⊢ N : T) /\ M ≡ N
(dependent evars:)

destruct H as (Γ' & M' & T'& ? & ? & ? & ?).
3 subgoals, subgoal 1 (ID 4906)
  
  Γ : UEM.Env
  M : UTM.Term
  T : UTM.Term
  Γ' : Env
  M' : Term
  T' : Term
  H : strip_env Γ' = Γ
  H0 : strip M' = M
  H1 : strip T' = T
  H2 : Γ' ⊢ M' ▹ M' : T'
  ============================
   Γ ⊢e M : T

subgoal 2 (ID 4873) is:
 Γ ⊢ M : T
subgoal 3 (ID 4865) is:
 forall (Γ : UEM.Env) (M N T : UTM.Term),
 Γ ⊢e M = N : T <-> (Γ ⊢ M : T) /\ (Γ ⊢ N : T) /\ M ≡ N
(dependent evars:)


apply FromPTSATR_to_PTSe in H2.
3 subgoals, subgoal 1 (ID 4917)
  
  Γ : UEM.Env
  M : UTM.Term
  T : UTM.Term
  Γ' : Env
  M' : Term
  T' : Term
  H : strip_env Γ' = Γ
  H0 : strip M' = M
  H1 : strip T' = T
  H2 : strip_env Γ' ⊢e strip M' = strip M' : strip T'
  ============================
   Γ ⊢e M : T

subgoal 2 (ID 4873) is:
 Γ ⊢ M : T
subgoal 3 (ID 4865) is:
 forall (Γ : UEM.Env) (M N T : UTM.Term),
 Γ ⊢e M = N : T <-> (Γ ⊢ M : T) /\ (Γ ⊢ N : T) /\ M ≡ N
(dependent evars:)

rewrite H in H2.
3 subgoals, subgoal 1 (ID 4919)
  
  Γ : UEM.Env
  M : UTM.Term
  T : UTM.Term
  Γ' : Env
  M' : Term
  T' : Term
  H : strip_env Γ' = Γ
  H0 : strip M' = M
  H1 : strip T' = T
  H2 : Γ ⊢e strip M' = strip M' : strip T'
  ============================
   Γ ⊢e M : T

subgoal 2 (ID 4873) is:
 Γ ⊢ M : T
subgoal 3 (ID 4865) is:
 forall (Γ : UEM.Env) (M N T : UTM.Term),
 Γ ⊢e M = N : T <-> (Γ ⊢ M : T) /\ (Γ ⊢ N : T) /\ M ≡ N
(dependent evars:)

rewrite H0 in H2.
3 subgoals, subgoal 1 (ID 4921)
  
  Γ : UEM.Env
  M : UTM.Term
  T : UTM.Term
  Γ' : Env
  M' : Term
  T' : Term
  H : strip_env Γ' = Γ
  H0 : strip M' = M
  H1 : strip T' = T
  H2 : Γ ⊢e M = M : strip T'
  ============================
   Γ ⊢e M : T

subgoal 2 (ID 4873) is:
 Γ ⊢ M : T
subgoal 3 (ID 4865) is:
 forall (Γ : UEM.Env) (M N T : UTM.Term),
 Γ ⊢e M = N : T <-> (Γ ⊢ M : T) /\ (Γ ⊢ N : T) /\ M ≡ N
(dependent evars:)

rewrite H1 in H2.
3 subgoals, subgoal 1 (ID 4923)
  
  Γ : UEM.Env
  M : UTM.Term
  T : UTM.Term
  Γ' : Env
  M' : Term
  T' : Term
  H : strip_env Γ' = Γ
  H0 : strip M' = M
  H1 : strip T' = T
  H2 : Γ ⊢e M = M : T
  ============================
   Γ ⊢e M : T

subgoal 2 (ID 4873) is:
 Γ ⊢ M : T
subgoal 3 (ID 4865) is:
 forall (Γ : UEM.Env) (M N T : UTM.Term),
 Γ ⊢e M = N : T <-> (Γ ⊢ M : T) /\ (Γ ⊢ N : T) /\ M ≡ N
(dependent evars:)

apply left_reflexivity with M; trivial.
2 subgoals, subgoal 1 (ID 4873)
  
  Γ : UEM.Env
  M : UTM.Term
  T : UTM.Term
  H : Γ ⊢e M : T
  ============================
   Γ ⊢ M : T

subgoal 2 (ID 4865) is:
 forall (Γ : UEM.Env) (M N T : UTM.Term),
 Γ ⊢e M = N : T <-> (Γ ⊢ M : T) /\ (Γ ⊢ N : T) /\ M ≡ N
(dependent evars:)


apply FromPTSe_to_PTS in H.
2 subgoals, subgoal 1 (ID 4943)
  
  Γ : UEM.Env
  M : UTM.Term
  T : UTM.Term
  H : Γ ⊢ M : T
  ============================
   Γ ⊢ M : T

subgoal 2 (ID 4865) is:
 forall (Γ : UEM.Env) (M N T : UTM.Term),
 Γ ⊢e M = N : T <-> (Γ ⊢ M : T) /\ (Γ ⊢ N : T) /\ M ≡ N
(dependent evars:)

trivial.
1 subgoals, subgoal 1 (ID 4865)
  
  ============================
   forall (Γ : UEM.Env) (M N T : UTM.Term),
   Γ ⊢e M = N : T <-> (Γ ⊢ M : T) /\ (Γ ⊢ N : T) /\ M ≡ N

(dependent evars:)


intros.
1 subgoals, subgoal 1 (ID 4947)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  T : UTM.Term
  ============================
   Γ ⊢e M = N : T <-> (Γ ⊢ M : T) /\ (Γ ⊢ N : T) /\ M ≡ N

(dependent evars:)

split; intros.
2 subgoals, subgoal 1 (ID 4951)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  T : UTM.Term
  H : Γ ⊢e M = N : T
  ============================
   (Γ ⊢ M : T) /\ (Γ ⊢ N : T) /\ M ≡ N

subgoal 2 (ID 4952) is:
 Γ ⊢e M = N : T
(dependent evars:)


apply FromPTSe_to_PTS in H.
2 subgoals, subgoal 1 (ID 4962)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  T : UTM.Term
  H : (Γ ⊢ M : T) /\ (Γ ⊢ N : T) /\ M ≡ N
  ============================
   (Γ ⊢ M : T) /\ (Γ ⊢ N : T) /\ M ≡ N

subgoal 2 (ID 4952) is:
 Γ ⊢e M = N : T
(dependent evars:)

trivial.
1 subgoals, subgoal 1 (ID 4952)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  T : UTM.Term
  H : (Γ ⊢ M : T) /\ (Γ ⊢ N : T) /\ M ≡ N
  ============================
   Γ ⊢e M = N : T

(dependent evars:)


destruct H as ( ? & ?& ?).
1 subgoals, subgoal 1 (ID 4970)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  T : UTM.Term
  H : Γ ⊢ M : T
  H0 : Γ ⊢ N : T
  H1 : M ≡ N
  ============================
   Γ ⊢e M = N : T

(dependent evars:)

apply Betac_confl in H1 as (P & ?& ?).
1 subgoals, subgoal 1 (ID 4980)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  T : UTM.Term
  H : Γ ⊢ M : T
  H0 : Γ ⊢ N : T
  P : UTM.Term
  H1 : (M →→ P)%UT
  H2 : (N →→ P)%UT
  ============================
   Γ ⊢e M = N : T

(dependent evars:)

apply cTrans with P.
2 subgoals, subgoal 1 (ID 4981)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  T : UTM.Term
  H : Γ ⊢ M : T
  H0 : Γ ⊢ N : T
  P : UTM.Term
  H1 : (M →→ P)%UT
  H2 : (N →→ P)%UT
  ============================
   Γ ⊢e M = P : T

subgoal 2 (ID 4982) is:
 Γ ⊢e P = N : T
(dependent evars:)


apply FromPTS_to_PTSATR in H as (Γ1 & M1 & T1 & ? & ? & ?& ?).
2 subgoals, subgoal 1 (ID 5015)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  T : UTM.Term
  H0 : Γ ⊢ N : T
  P : UTM.Term
  H1 : (M →→ P)%UT
  H2 : (N →→ P)%UT
  Γ1 : Env
  M1 : Term
  T1 : Term
  H : strip_env Γ1 = Γ
  H3 : strip M1 = M
  H4 : strip T1 = T
  H5 : Γ1 ⊢ M1 ▹ M1 : T1
  ============================
   Γ ⊢e M = P : T

subgoal 2 (ID 4982) is:
 Γ ⊢e P = N : T
(dependent evars:)

destruct (L33' M1 P) as (P1 & ? & ?).
3 subgoals, subgoal 1 (ID 5021)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  T : UTM.Term
  H0 : Γ ⊢ N : T
  P : UTM.Term
  H1 : (M →→ P)%UT
  H2 : (N →→ P)%UT
  Γ1 : Env
  M1 : Term
  T1 : Term
  H : strip_env Γ1 = Γ
  H3 : strip M1 = M
  H4 : strip T1 = T
  H5 : Γ1 ⊢ M1 ▹ M1 : T1
  ============================
   (strip M1 →→ P)%UT

subgoal 2 (ID 5029) is:
 Γ ⊢e M = P : T
subgoal 3 (ID 4982) is:
 Γ ⊢e P = N : T
(dependent evars:)


rewrite H3; trivial.
2 subgoals, subgoal 1 (ID 5029)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  T : UTM.Term
  H0 : Γ ⊢ N : T
  P : UTM.Term
  H1 : (M →→ P)%UT
  H2 : (N →→ P)%UT
  Γ1 : Env
  M1 : Term
  T1 : Term
  H : strip_env Γ1 = Γ
  H3 : strip M1 = M
  H4 : strip T1 = T
  H5 : Γ1 ⊢ M1 ▹ M1 : T1
  P1 : Term
  H6 : strip P1 = P
  H7 : M1 →→ P1
  ============================
   Γ ⊢e M = P : T

subgoal 2 (ID 4982) is:
 Γ ⊢e P = N : T
(dependent evars:)

subst.
2 subgoals, subgoal 1 (ID 5051)
  
  N : UTM.Term
  Γ1 : Env
  M1 : Term
  T1 : Term
  H5 : Γ1 ⊢ M1 ▹ M1 : T1
  P1 : Term
  H7 : M1 →→ P1
  H2 : (N →→ strip P1)%UT
  H1 : (strip M1 →→ strip P1)%UT
  H0 : strip_env Γ1 ⊢ N : strip T1
  ============================
   strip_env Γ1 ⊢e strip M1 = strip P1 : strip T1

subgoal 2 (ID 4982) is:
 Γ ⊢e P = N : T
(dependent evars:)

apply FromPTSATR_to_PTSe_trans.
2 subgoals, subgoal 1 (ID 5052)
  
  N : UTM.Term
  Γ1 : Env
  M1 : Term
  T1 : Term
  H5 : Γ1 ⊢ M1 ▹ M1 : T1
  P1 : Term
  H7 : M1 →→ P1
  H2 : (N →→ strip P1)%UT
  H1 : (strip M1 →→ strip P1)%UT
  H0 : strip_env Γ1 ⊢ N : strip T1
  ============================
   Γ1 ⊢ M1 ▹▹ P1 : T1

subgoal 2 (ID 4982) is:
 Γ ⊢e P = N : T
(dependent evars:)


apply SR_trans'; trivial.
1 subgoals, subgoal 1 (ID 4982)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  T : UTM.Term
  H : Γ ⊢ M : T
  H0 : Γ ⊢ N : T
  P : UTM.Term
  H1 : (M →→ P)%UT
  H2 : (N →→ P)%UT
  ============================
   Γ ⊢e P = N : T

(dependent evars:)


apply cSym.
1 subgoals, subgoal 1 (ID 5055)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  T : UTM.Term
  H : Γ ⊢ M : T
  H0 : Γ ⊢ N : T
  P : UTM.Term
  H1 : (M →→ P)%UT
  H2 : (N →→ P)%UT
  ============================
   Γ ⊢e N = P : T

(dependent evars:)


apply FromPTS_to_PTSATR in H0 as (Γ1 & N1 & T1 & ? & ? & ?& ?).
1 subgoals, subgoal 1 (ID 5088)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  T : UTM.Term
  H : Γ ⊢ M : T
  P : UTM.Term
  H1 : (M →→ P)%UT
  H2 : (N →→ P)%UT
  Γ1 : Env
  N1 : Term
  T1 : Term
  H0 : strip_env Γ1 = Γ
  H3 : strip N1 = N
  H4 : strip T1 = T
  H5 : Γ1 ⊢ N1 ▹ N1 : T1
  ============================
   Γ ⊢e N = P : T

(dependent evars:)

destruct (L33' N1 P) as (P1 & ? & ?).
2 subgoals, subgoal 1 (ID 5094)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  T : UTM.Term
  H : Γ ⊢ M : T
  P : UTM.Term
  H1 : (M →→ P)%UT
  H2 : (N →→ P)%UT
  Γ1 : Env
  N1 : Term
  T1 : Term
  H0 : strip_env Γ1 = Γ
  H3 : strip N1 = N
  H4 : strip T1 = T
  H5 : Γ1 ⊢ N1 ▹ N1 : T1
  ============================
   (strip N1 →→ P)%UT

subgoal 2 (ID 5102) is:
 Γ ⊢e N = P : T
(dependent evars:)


rewrite H3; trivial.
1 subgoals, subgoal 1 (ID 5102)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  T : UTM.Term
  H : Γ ⊢ M : T
  P : UTM.Term
  H1 : (M →→ P)%UT
  H2 : (N →→ P)%UT
  Γ1 : Env
  N1 : Term
  T1 : Term
  H0 : strip_env Γ1 = Γ
  H3 : strip N1 = N
  H4 : strip T1 = T
  H5 : Γ1 ⊢ N1 ▹ N1 : T1
  P1 : Term
  H6 : strip P1 = P
  H7 : N1 →→ P1
  ============================
   Γ ⊢e N = P : T

(dependent evars:)

subst.
1 subgoals, subgoal 1 (ID 5124)
  
  M : UTM.Term
  Γ1 : Env
  N1 : Term
  T1 : Term
  H5 : Γ1 ⊢ N1 ▹ N1 : T1
  P1 : Term
  H7 : N1 →→ P1
  H1 : (M →→ strip P1)%UT
  H2 : (strip N1 →→ strip P1)%UT
  H : strip_env Γ1 ⊢ M : strip T1
  ============================
   strip_env Γ1 ⊢e strip N1 = strip P1 : strip T1

(dependent evars:)

apply FromPTSATR_to_PTSe_trans.
1 subgoals, subgoal 1 (ID 5125)
  
  M : UTM.Term
  Γ1 : Env
  N1 : Term
  T1 : Term
  H5 : Γ1 ⊢ N1 ▹ N1 : T1
  P1 : Term
  H7 : N1 →→ P1
  H1 : (M →→ strip P1)%UT
  H2 : (strip N1 →→ strip P1)%UT
  H : strip_env Γ1 ⊢ M : strip T1
  ============================
   Γ1 ⊢ N1 ▹▹ P1 : T1

(dependent evars:)


apply SR_trans'; trivial.
No more subgoals.
(dependent evars:)


Qed.
PTS_equiv_PTSe is defined



Print Assumptions PTS_equiv_PTSe.
Axioms:
Ax : Sorts -> Sorts -> Prop
Rel : Sorts -> Sorts -> Sorts -> Prop
Sorts : Set



Lemma PTSe_SR : forall Γ M N T, Γ e M : T -> (M N)%UT -> Γ e M = N : T.
1 subgoals, subgoal 1 (ID 5133)
  
  ============================
   forall (Γ : UEM.Env) (M N T : UTM.Term),
   Γ ⊢e M : T -> (M → N)%UT -> Γ ⊢e M = N : T

(dependent evars:)


intros.
1 subgoals, subgoal 1 (ID 5139)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  T : UTM.Term
  H : Γ ⊢e M : T
  H0 : (M → N)%UT
  ============================
   Γ ⊢e M = N : T

(dependent evars:)


apply FromPTSe_to_PTS in H.
1 subgoals, subgoal 1 (ID 5158)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  T : UTM.Term
  H : Γ ⊢ M : T
  H0 : (M → N)%UT
  ============================
   Γ ⊢e M = N : T

(dependent evars:)


apply FromPTS_to_PTSATR in H as (Γ' & M' & T' & ? & ? & ? & ?).
1 subgoals, subgoal 1 (ID 5191)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  T : UTM.Term
  H0 : (M → N)%UT
  Γ' : Env
  M' : Term
  T' : Term
  H : strip_env Γ' = Γ
  H1 : strip M' = M
  H2 : strip T' = T
  H3 : Γ' ⊢ M' ▹ M' : T'
  ============================
   Γ ⊢e M = N : T

(dependent evars:)


subst.
1 subgoals, subgoal 1 (ID 5202)
  
  N : UTM.Term
  Γ' : Env
  M' : Term
  T' : Term
  H3 : Γ' ⊢ M' ▹ M' : T'
  H0 : (strip M' → N)%UT
  ============================
   strip_env Γ' ⊢e strip M' = N : strip T'

(dependent evars:)

apply L33 in H0 as (N' & ? & ?).
1 subgoals, subgoal 1 (ID 5212)
  
  N : UTM.Term
  Γ' : Env
  M' : Term
  T' : Term
  H3 : Γ' ⊢ M' ▹ M' : T'
  N' : Term
  H : strip N' = N
  H0 : M' → N'
  ============================
   strip_env Γ' ⊢e strip M' = N : strip T'

(dependent evars:)

subst.
1 subgoals, subgoal 1 (ID 5215)
  
  Γ' : Env
  M' : Term
  T' : Term
  H3 : Γ' ⊢ M' ▹ M' : T'
  N' : Term
  H0 : M' → N'
  ============================
   strip_env Γ' ⊢e strip M' = strip N' : strip T'

(dependent evars:)


apply FromPTSATR_to_PTSe_trans.
1 subgoals, subgoal 1 (ID 5216)
  
  Γ' : Env
  M' : Term
  T' : Term
  H3 : Γ' ⊢ M' ▹ M' : T'
  N' : Term
  H0 : M' → N'
  ============================
   Γ' ⊢ M' ▹▹ N' : T'

(dependent evars:)

eapply SR_trans'.
2 subgoals, subgoal 1 (ID 5217)
  
  Γ' : Env
  M' : Term
  T' : Term
  H3 : Γ' ⊢ M' ▹ M' : T'
  N' : Term
  H0 : M' → N'
  ============================
   M' →→ N'

subgoal 2 (ID 5218) is:
 Γ' ⊢ M' ▹ M' : T'
(dependent evars:)


intuition.
1 subgoals, subgoal 1 (ID 5218)
  
  Γ' : Env
  M' : Term
  T' : Term
  H3 : Γ' ⊢ M' ▹ M' : T'
  N' : Term
  H0 : M' → N'
  ============================
   Γ' ⊢ M' ▹ M' : T'

(dependent evars:)

apply H3.
No more subgoals.
(dependent evars:)


Qed.
PTSe_SR is defined



Lemma PTSe_SR_trans : forall Γ M N T, Γ e M : T -> (M →→ N)%UT -> Γ e M = N : T.
1 subgoals, subgoal 1 (ID 5238)
  
  ============================
   forall (Γ : UEM.Env) (M N T : UTM.Term),
   Γ ⊢e M : T -> (M →→ N)%UT -> Γ ⊢e M = N : T

(dependent evars:)


intros.
1 subgoals, subgoal 1 (ID 5244)
  
  Γ : UEM.Env
  M : UTM.Term
  N : UTM.Term
  T : UTM.Term
  H : Γ ⊢e M : T
  H0 : (M →→ N)%UT
  ============================
   Γ ⊢e M = N : T

(dependent evars:)


induction H0.
3 subgoals, subgoal 1 (ID 5261)
  
  Γ : UEM.Env
  T : UTM.Term
  M : UTM.Term
  H : Γ ⊢e M : T
  ============================
   Γ ⊢e M = M : T

subgoal 2 (ID 5266) is:
 Γ ⊢e M = N : T
subgoal 3 (ID 5276) is:
 Γ ⊢e M = P : T
(dependent evars:)


now apply cRefl.
2 subgoals, subgoal 1 (ID 5266)
  
  Γ : UEM.Env
  T : UTM.Term
  M : UTM.Term
  H : Γ ⊢e M : T
  N : UTM.Term
  H0 : (M → N)%UT
  ============================
   Γ ⊢e M = N : T

subgoal 2 (ID 5276) is:
 Γ ⊢e M = P : T
(dependent evars:)


apply PTSe_SR; trivial.
1 subgoals, subgoal 1 (ID 5276)
  
  Γ : UEM.Env
  T : UTM.Term
  M : UTM.Term
  H : Γ ⊢e M : T
  N : UTM.Term
  P : UTM.Term
  H0_ : (M →→ N)%UT
  H0_0 : (N →→ P)%UT
  IHBetas1 : Γ ⊢e M : T -> Γ ⊢e M = N : T
  IHBetas2 : Γ ⊢e N : T -> Γ ⊢e N = P : T
  ============================
   Γ ⊢e M = P : T

(dependent evars:)


assert (Γ e M = N : T).
2 subgoals, subgoal 1 (ID 5567)
  
  Γ : UEM.Env
  T : UTM.Term
  M : UTM.Term
  H : Γ ⊢e M : T
  N : UTM.Term
  P : UTM.Term
  H0_ : (M →→ N)%UT
  H0_0 : (N →→ P)%UT
  IHBetas1 : Γ ⊢e M : T -> Γ ⊢e M = N : T
  IHBetas2 : Γ ⊢e N : T -> Γ ⊢e N = P : T
  ============================
   Γ ⊢e M = N : T

subgoal 2 (ID 5568) is:
 Γ ⊢e M = P : T
(dependent evars:)

intuition.
1 subgoals, subgoal 1 (ID 5568)
  
  Γ : UEM.Env
  T : UTM.Term
  M : UTM.Term
  H : Γ ⊢e M : T
  N : UTM.Term
  P : UTM.Term
  H0_ : (M →→ N)%UT
  H0_0 : (N →→ P)%UT
  IHBetas1 : Γ ⊢e M : T -> Γ ⊢e M = N : T
  IHBetas2 : Γ ⊢e N : T -> Γ ⊢e N = P : T
  H0 : Γ ⊢e M = N : T
  ============================
   Γ ⊢e M = P : T

(dependent evars:)


apply cTrans with N.
2 subgoals, subgoal 1 (ID 5572)
  
  Γ : UEM.Env
  T : UTM.Term
  M : UTM.Term
  H : Γ ⊢e M : T
  N : UTM.Term
  P : UTM.Term
  H0_ : (M →→ N)%UT
  H0_0 : (N →→ P)%UT
  IHBetas1 : Γ ⊢e M : T -> Γ ⊢e M = N : T
  IHBetas2 : Γ ⊢e N : T -> Γ ⊢e N = P : T
  H0 : Γ ⊢e M = N : T
  ============================
   Γ ⊢e M = N : T

subgoal 2 (ID 5573) is:
 Γ ⊢e N = P : T
(dependent evars:)

trivial.
1 subgoals, subgoal 1 (ID 5573)
  
  Γ : UEM.Env
  T : UTM.Term
  M : UTM.Term
  H : Γ ⊢e M : T
  N : UTM.Term
  P : UTM.Term
  H0_ : (M →→ N)%UT
  H0_0 : (N →→ P)%UT
  IHBetas1 : Γ ⊢e M : T -> Γ ⊢e M = N : T
  IHBetas2 : Γ ⊢e N : T -> Γ ⊢e N = P : T
  H0 : Γ ⊢e M = N : T
  ============================
   Γ ⊢e N = P : T

(dependent evars:)


apply IHBetas2.
1 subgoals, subgoal 1 (ID 5574)
  
  Γ : UEM.Env
  T : UTM.Term
  M : UTM.Term
  H : Γ ⊢e M : T
  N : UTM.Term
  P : UTM.Term
  H0_ : (M →→ N)%UT
  H0_0 : (N →→ P)%UT
  IHBetas1 : Γ ⊢e M : T -> Γ ⊢e M = N : T
  IHBetas2 : Γ ⊢e N : T -> Γ ⊢e N = P : T
  H0 : Γ ⊢e M = N : T
  ============================
   Γ ⊢e N : T

(dependent evars:)

apply right_reflexivity in H0; trivial.
No more subgoals.
(dependent evars:)


Qed.
PTSe_SR_trans is defined



End final_mod.
Module final_mod is defined



Module Type Theory (X:term_sig) (Y:pts_sig X) .
Interactive Module Type Theory started


Module PTSATR.
Interactive Module PTSATR started


  Include term_mod X.

  Include env_mod X.

  Include red_mod X.

End PTSATR.
Module PTSATR is defined



Module PTS.
Interactive Module PTS started


  Include ut_term_mod X.

  Include ut_env_mod X.

  Include ut_red_mod X.
Warning: Notation _ →' _ was already used in scope UT_scope


  Include ut_sr_mod X Y.

End PTS.
Module PTS is defined



Module PTSe.
Interactive Module PTSe started


 Include ut_typ_eq_mod X Y PTS PTS PTS PTS.

End PTSe.
Module PTSe is defined



Include glue_mod X Y PTSATR PTSATR PTSATR PTS PTS PTS.

Include final_mod X Y PTSATR PTSATR PTSATR PTS PTS PTS PTS PTSe.


Export PTSATR PTS PTSe.
Warning: Notation _ →' _ was already used in scope UT_scope


End Theory.
Module Type Theory is defined




Index
This page has been generated by coqdoc