Nuprl Theory hoare

(only non hidden objects are presented)

DISPcond_dfcond{ < i:level > }( < f:f:* > ; < s:s:* > )== Cond Cond== Cond
ABScondCond == Env
MLcond_softadd_soft_abs ``cond``;;
DISPhoare_df({ < e:env-var > . < P:pre-cond:* > } < st:stmt:* > { < e:env-var > . < Q:post-cond:* > } wrt < f:f:* > ; < s:s:* > ) == { < P > } < st > { < Q > } { < P:pre-cond:* > } < st:stmt:* > { < Q:post-cond:* > }== { < P > } < st > { < Q > }
ABShoare{P[e]} st {Q[e]} == p:Env P[p] st p in! StmtValue(f;s) IsNorm(st p) Q[env(st p)]
THMhoare_wff:Atom . s:Spec. P,Q:Cond. st:Stmt. {P[e]} st {Q[e]}
THMhoare_skipf:Atom . s:Spec. P,Q:Cond. (e:Env. P[e] Q[e]) {P[e]} skip {Q[e]}
THMenv_seqf:Atom . s:Spec. st1,st2:Stmt. p:Env. st1 p in! StmtValue(f;s) IsNorm(st1 p) st1; st2 p = st2 env(st1 p)
THMinduce_seqf:Atom . s:Spec. p:Env. st1,st2:Stmt. st1; st2 p in! StmtValue(f;s) st1 p in! StmtValue(f;s)
THMis_norm_seqf:Atom . s:Spec. st1,st2:Stmt. p:Env. st1; st2 p in! StmtValue(f;s) IsNorm(st1; st2 p) IsNorm(st1 p)
THMhoare_seqf:Atom . s:Spec. P,Q:Cond. st1,st2:Stmt. (R:Cond. {P[en]} st1 {R en} {R en} st2 {Q[en]}) {P[en]} st1; st2 {Q[en]}
MLhoare_seq_taclet HoareSeq t = BLemma `hoare_seq` THENM (With t (D 0) THENL [Id; Reduce 0 THEN D 0; MemCD THEN BLemma `hoare_wf`]) ;;
THMhoare_var_assig_intf:Atom . s:Spec. P,Q:Cond. v:Atom. z:. (en:Env. P[en] Q[en{(v:int) - > JConst(z;int)}]) {P[en]} (v:int) := (z) {Q[en]}
THMhoare_var_assig_varf:Atom . s:Spec. P,Q:Cond. t:Type. v,w:Atom. (en:Env. P[en] Q[en{(v:t) - > en w t}]) {P[en]} (v:t) := (w:t) {Q[en]}
MLhoare_taclet Hoare = (BLemma `hoare_var_assig_int` THENM Unfold `env_update` 0 THENM Reduce 0 THENM RWH eq_atom_evalC 0 THENM Reduce 0) ORELSE (BLemma `hoare_var _assig_var` THENM Unfold `env_update` 0 THENM Reduce 0 THENM RWH eq_at om_evalC 0 THENM Reduce 0) ORELSE Id ;;
THMand_hoaref:Atom . s:Spec. P1,P2,Q1,Q2:Cond. st:Stmt. {P1[en]} st {Q1[en]} {P2[en]} st {Q2[en]} {P1[en] P2[en]} st {Q1[en] Q2[en]}

the other theories