Library ifsound


The soundness proofs of the 'if-then' and 'if-then-else' rules

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 if_rule_sound : forall Spec sd I r ri p q e tp s1 s2,
               (p ==> EX v , Rv e @ tp == v) ->
               RuleSem Spec sd I r ri (p//\\ Aistrue e) s1 q ->
                RuleSem Spec sd I r ri (p //\\ Aisfalse e) s2 q ->
                 RuleSem Spec sd I r ri p (sif e s1 s2) q.

Lemma ift_rule_sound : forall Spec sd I r ri p q e tp s,
               (p ==> EX v , Rv e @ tp == v) ->
               (p//\\ Aisfalse e ==> q) ->
               RuleSem Spec sd I r ri (p//\\ Aistrue e) s q ->
                 RuleSem Spec sd I r ri p (sifthen e s) q.