Library chkissound


the soundness proof of the 'checkis' rule

Require Import include.
Require Import memory.
Require Import memdata.
Require Import language.
Require Import opsem.
Require Import assertion.
Require Import simulation.
Require Import lemmasforseplog.
Require Import inferules.
Require Import tacticsforseplog.
Require Import includeLib.
Require Import baseTac.
Require Import auxdef.

 Lemma store_join_map_join :
    forall Mf x4 x10 Ms x3 b v ,
                                 MemMod.join x3 Mf x4 ->
  MemMod.join x10 Ms x3->
  mapstoval (b, Int.unsigned Int.zero) Tint32 v x10 ->
            store Tint32 x4 (b, 0%Z) = Some ->
  exists M1 M2 , MemMod.join M2 Mf /\ MemMod.join M1 Ms M2 /\
                 mapstoval (b, Int.unsigned Int.zero) Tint32 M1.

Lemma checkis_rule_sound: forall Spec sd I r ri x aop isr is ie v cs,
                            RuleSem Spec sd I r ri
                                    ((OS[isr, ie, is, cs] ** LV x @ Tint32 |-> v) //\\ <|aop|>)
                                    (sprim (checkis x))
                                    (OS[isr, ie, is, cs] ** LV x @ Tint32 |-> (is_length is) //\\ <|aop|>).