< Module walkthrough:big_step.
< Prove walkthrough:host:typeOf_unique. Proof completed.
< Prove walkthrough:host:ty_lookup. Proof completed.
< Prove walkthrough:host:subst_type_preservation. Proof completed.
< Prove walkthrough:host:type_preservation. Proof completed.
< Prove_Constraint walkthrough:host:proj_type_same. Proof completed.
< Add_Ext_Size walkthrough:host:eval. Proof completed.
< Add_Proj_Rel walkthrough:host:eval. Proof completed.
< Prove_Ext_Ind walkthrough:host:eval. Proof completed.
< Extensible_Theorem big_step_type_preservation : forall T Ty T', Ty : typeOf [] T Ty -> Big : big_step T T' -> typeOf [] T' Ty on Big. Subgoal 1: Variables: Ty T' IH : forall T Ty T', typeOf [] T Ty -> big_step T T' * -> typeOf [] T' Ty Ty : typeOf [] T' Ty Big : big_step T' T' @ Big1 : value T' ============================ typeOf [] T' Ty
< search. Subgoal 2: Variables: T Ty T' T3 IH : forall T Ty T', typeOf [] T Ty -> big_step T T' * -> typeOf [] T' Ty Ty : typeOf [] T Ty Big : big_step T T' @ Big1 : eval T T3 Big2 : big_step T3 T' * ============================ typeOf [] T' Ty
< apply type_preservation to Ty Big1. Subgoal 2: Variables: T Ty T' T3 IH : forall T Ty T', typeOf [] T Ty -> big_step T T' * -> typeOf [] T' Ty Ty : typeOf [] T Ty Big : big_step T T' @ Big1 : eval T T3 Big2 : big_step T3 T' * H1 : typeOf [] T3 Ty ============================ typeOf [] T' Ty
< apply IH to _ Big2. Subgoal 2: Variables: T Ty T' T3 IH : forall T Ty T', typeOf [] T Ty -> big_step T T' * -> typeOf [] T' Ty Ty : typeOf [] T Ty Big : big_step T T' @ Big1 : eval T T3 Big2 : big_step T3 T' * H1 : typeOf [] T3 Ty H2 : typeOf [] T' Ty ============================ typeOf [] T' Ty
< search. Subgoal 3: Variables: Ty T' T_T IH : forall T Ty T', typeOf [] T Ty -> big_step T T' * -> typeOf [] T' Ty Ty : typeOf [] <unknown I tm> Ty Big : big_step <unknown I tm> T' @ Big1 : [] |{tm}- <unknown I tm> ~~> T_T Big2 : big_step T_T T' * ============================ typeOf [] T' Ty
< apply proj_type_same to Big1 Ty. Subgoal 3: Variables: Ty T' T_T IH : forall T Ty T', typeOf [] T Ty -> big_step T T' * -> typeOf [] T' Ty Ty : typeOf [] <unknown I tm> Ty Big : big_step <unknown I tm> T' @ Big1 : [] |{tm}- <unknown I tm> ~~> T_T Big2 : big_step T_T T' * H1 : typeOf [] T_T Ty ============================ typeOf [] T' Ty
< apply IH to _ Big2. Subgoal 3: Variables: Ty T' T_T IH : forall T Ty T', typeOf [] T Ty -> big_step T T' * -> typeOf [] T' Ty Ty : typeOf [] <unknown I tm> Ty Big : big_step <unknown I tm> T' @ Big1 : [] |{tm}- <unknown I tm> ~~> T_T Big2 : big_step T_T T' * H1 : typeOf [] T_T Ty H2 : typeOf [] T' Ty ============================ typeOf [] T' Ty
< search. Proof completed.