< Module simple_imp:assert.
< Prove_Constraint simple_imp:host:proj_e_unique. Proof completed.
< Prove_Constraint simple_imp:host:proj_e_is. Proof completed.
< Prove_Constraint simple_imp:host:proj_rf_unique. Proof completed.
< Prove_Constraint simple_imp:host:proj_rf_is. Proof completed.
< Prove_Constraint simple_imp:host:proj_c_unique. Variables: C2 E Hyp : |{c}- assert E ~~> noop Hyp1 : |{c}- assert E ~~> C2 ============================ noop = C2
< case Hyp1. Variables: E Hyp : |{c}- assert E ~~> noop ============================ noop = noop
< search. Proof completed.
< Prove_Constraint simple_imp:host:proj_c_is. Variables: E Hyp : |{c}- assert E ~~> noop Hyp1 : is_c (assert E) ============================ is_c noop
< search. Proof completed.
< Prove_Constraint simple_imp:host:proj_recFields_unique. Proof completed.
< Prove_Constraint simple_imp:host:proj_recFields_is. Proof completed.
< Prove_Constraint simple_imp:host:proj_ty_unique. Proof completed.
< Prove_Constraint simple_imp:host:proj_ty_is. Proof completed.
< Prove_Constraint simple_imp:host:proj_value_unique. Proof completed.
< Prove_Constraint simple_imp:host:proj_value_is. Proof completed.
< Prove simple_imp:host:vars_join, simple_imp:host:vars_rf_join. Proof completed.
< Prove simple_imp:host:vars_unique, simple_imp:host:vars_rf_unique. Proof completed.
< Prove_Constraint simple_imp:host:proj_e_vars_exist. Proof completed.
< Prove_Constraint simple_imp:host:proj_e_vars. Proof completed.
< Prove_Constraint simple_imp:host:proj_rf_vars_exist. Proof completed.
< Prove_Constraint simple_imp:host:proj_rf_vars. Proof completed.
< Prove simple_imp:host:vars_is, simple_imp:host:vars_rf_is. Proof completed.
< Prove simple_imp:host:vars_exist, simple_imp:host:vars_rf_exist. Proof completed.
< Prove simple_imp:host:typeOf_unique, simple_imp:host:typeRecFields_unique. Proof completed.
< Prove simple_imp:host:typeOK_unique. Subgoal 8: Variables: G1 G2 E IH : forall G C G1 G2, typeOK G C G1 * -> typeOK G C G2 -> G1 = G2 Ty1 : typeOK G1 (assert E) G1 @ Ty2 : typeOK G1 (assert E) G2 Ty3 : typeOf G1 E boolTy ============================ G1 = G2
< case Ty2. Subgoal 8: Variables: G2 E IH : forall G C G1 G2, typeOK G C G1 * -> typeOK G C G2 -> G1 = G2 Ty1 : typeOK G2 (assert E) G2 @ Ty3 : typeOf G2 E boolTy H1 : typeOf G2 E boolTy ============================ G2 = G2
< search. Proof completed.
< Prove_Constraint simple_imp:host:proj_eval_e. Proof completed.
< Prove simple_imp:host:eval_e_unique, simple_imp:host:eval_rf_unique. Proof completed.
< Prove simple_imp:host:update_rec_fields_unique. Proof completed.
< Prove_Constraint simple_imp:host:proj_c_eval. Variables: G G2 E Hyp : |{c}- assert E ~~> noop Hyp1 : eval_c G (assert E) G2 ============================ exists G', eval_c G noop G'
< Ev: case Hyp1. Variables: G2 E Hyp : |{c}- assert E ~~> noop Ev : eval_e G2 E trueVal ============================ exists G', eval_c G2 noop G'
< search. Proof completed.
< Add_Ext_Size simple_imp:host:eval_c. Proof completed.
< Add_Proj_Rel simple_imp:host:eval_c. Proof completed.
< Prove_Ext_Ind simple_imp:host:eval_c. Subgoal 10: Variables: G1 E IH : forall N G C G1, <eval_c {ES}> G C G1 N -> acc N * -> <eval_c {P}> G C G1 IH1 : forall N G C G1, <eval_c {ES}> G C G1 N ** -> acc N @ -> <eval_c {P}> G C G1 R : <eval_c {ES}> G1 (assert E) G1 1 @@ Acc : acc 1 @ R1 : eval_e G1 E trueVal ============================ <eval_c {P}> G1 (assert E) G1
< search. Proof completed.
< Prove simple_imp:host:eval_c_unique. Subgoal 10: Variables: G1 G2 E IH : forall G C G1 G2, eval_c G C G1 * -> eval_c G C G2 -> G1 = G2 Ev1 : eval_c G1 (assert E) G1 @ Ev2 : eval_c G1 (assert E) G2 Ev3 : eval_e G1 E trueVal ============================ G1 = G2
< case Ev2. Subgoal 10: Variables: G2 E IH : forall G C G1 G2, eval_c G C G1 * -> eval_c G C G2 -> G1 = G2 Ev1 : eval_c G2 (assert E) G2 @ Ev3 : eval_e G2 E trueVal H1 : eval_e G2 E trueVal ============================ G2 = G2
< search. Proof completed.
< Prove_Constraint simple_imp:host:proj_c_eval_results. Variables: G G1 G2 X V E Hyp : |{c}- assert E ~~> noop Hyp1 : eval_c G (assert E) G1 Hyp2 : eval_c G noop G2 Hyp3 : lookup G1 X V ============================ lookup G2 X V
< case Hyp1. Variables: G1 G2 X V E Hyp : |{c}- assert E ~~> noop Hyp2 : eval_c G1 noop G2 Hyp3 : lookup G1 X V H1 : eval_e G1 E trueVal ============================ lookup G2 X V
< case Hyp2. Variables: G2 X V E Hyp : |{c}- assert E ~~> noop Hyp3 : lookup G2 X V H1 : eval_e G2 E trueVal ============================ lookup G2 X V
< search. Proof completed.
< Prove_Constraint simple_imp:host:proj_c_eval_results_back. Variables: G G1 G2 X V E Hyp : |{c}- assert E ~~> noop Hyp1 : eval_c G (assert E) G1 Hyp2 : eval_c G noop G2 Hyp3 : lookup G2 X V ============================ lookup G1 X V
< case Hyp1. Variables: G1 G2 X V E Hyp : |{c}- assert E ~~> noop Hyp2 : eval_c G1 noop G2 Hyp3 : lookup G2 X V H1 : eval_e G1 E trueVal ============================ lookup G1 X V
< case Hyp2. Variables: G2 X V E Hyp : |{c}- assert E ~~> noop Hyp3 : lookup G2 X V H1 : eval_e G2 E trueVal ============================ lookup G2 X V
< search. Proof completed.
< Prove simple_imp:host:vars_eval_same_result, simple_imp:host:vars_equal_rf_same_result. Proof completed.