< 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.