Library can_change_aop_proof
Require Import include.
Require Import memory.
Require Import memdata.
Require Import assertion.
Require Import absop.
Require Import simulation.
Require Import language.
Require Import opsem.
Require Import os_program.
Require Import os_spec.
Require Import inferules.
Require Import os_code_notations.
Require Import os_code_defs.
Require Import os_ucos_h.
Require Import os_time.
Require Import baseTac.
Require Import auxdef.
Require Import seplog_lemmas.
Require Import seplog_tactics.
Require Import derivedrules.
Require Import hoare_conseq.
Require Import symbolic_execution.
Require Import hoare_assign.
Require Import hoare_lemmas.
Require Import BaseAsrtDef.
Require Import inv_prop.
Require Import InternalFunSpec.
Require Import IntLib.
Require Import List.
Set Implicit Arguments.
Theorem can_change_aop_ptrmapsto :
forall l t v,
can_change_aop (PV l @ t |-> v).
Theorem can_change_aop_lvarenv :
forall x t a,
can_change_aop (L& x @ t == a).
Theorem can_change_aop_gvarenv :
forall x t a,
can_change_aop (G& x @ t == a).
Hint Resolve can_change_aop_ptrmapsto can_change_aop_lvarenv can_change_aop_gvarenv : can_change_aop.
Theorem can_change_aop_lvarmapsto :
forall x t v,
can_change_aop (LV x @ t |-> v).
Theorem can_change_aop_gvarmapsto :
forall x t v,
can_change_aop (GV x @ t |-> v).
Hint Resolve can_change_aop_lvarmapsto can_change_aop_gvarmapsto : can_change_aop.
Theorem can_change_aop_ptrarray´ :
forall l n t vl,
can_change_aop (Aarray´ l n t vl).
Hint Resolve can_change_aop_ptrarray´ : can_change_aop.
Theorem can_change_aop_ptrarray :
forall l t vl,
can_change_aop (Aarray l t vl).
Hint Resolve can_change_aop_ptrarray : can_change_aop.
Theorem can_change_aop_lvararray :
forall x t vl,
can_change_aop (LAarray x t vl).
Theorem can_change_aop_gvararray :
forall x t vl,
can_change_aop (GAarray x t vl).
Hint Resolve can_change_aop_lvararray can_change_aop_gvararray : can_change_aop.
Theorem can_change_aop_struct´ :
forall l dls ls,
can_change_aop (Astruct´ l dls ls).
Hint Resolve can_change_aop_struct´ : can_change_aop.
Theorem can_change_aop_struct :
forall l t ls,
can_change_aop (Astruct l t ls).
Hint Resolve can_change_aop_struct : can_change_aop.
Ltac can_change_aop_solver ::=
try unfold OSInv;
try unfold AOSEventFreeList, AOSQFreeList, AOSQFreeBlk, AECBList;
try unfold AOSMapTbl, AOSUnMapTbl, AOSTCBPrioTbl, AOSIntNesting, AOSTCBList, AOSTCBFreeList;
try unfold AOSRdyTblGrp, AOSRdyTbl, AOSRdyGrp, AOSTime, AGVars;
try unfold AOSEvent, AOSEventTbl, AMsgData, AOSQCtr, AOSQBlk, node;
unfold can_change_aop; fold can_change_aop; intuition auto 1 with can_change_aop;simpl;intros; intuition auto 1 with can_change_aop.
Theorem can_change_aop_sllseg :
forall h tn t l next,
can_change_aop (sllseg h tn l t next).
Hint Resolve can_change_aop_sllseg : can_change_aop.
Theorem can_change_aop_node :
forall x v T,
can_change_aop (node x v T).
Hint Resolve can_change_aop_node : can_change_aop.
Theorem can_change_aop_msgq :
forall c d e f,
can_change_aop (AMsgData c d e f).
Hint Resolve can_change_aop_msgq : can_change_aop.
Theorem can_change_aop_aevtdata:
forall vl d , can_change_aop (AEventData vl d).
Hint Resolve can_change_aop_aevtdata : can_change_aop.
Theorem can_change_aop_msgqnode :
forall l vl d c,
can_change_aop (AEventNode l vl d c).
Hint Resolve can_change_aop_msgqnode : can_change_aop.
Theorem can_change_aop_msgqllseg :
forall h tn l msgqls,
can_change_aop (evsllseg h tn l msgqls).
Hint Resolve can_change_aop_msgqllseg : can_change_aop.
Theorem can_change_aop_sll :
forall h l tp next,
can_change_aop (sll h l tp next).
Hint Resolve can_change_aop_sll : can_change_aop.
Theorem can_change_aop_dllseg :
forall h hp t tn l tp pre next,
can_change_aop (dllseg h hp t tn l tp pre next).
Hint Resolve can_change_aop_dllseg : can_change_aop.
Theorem can_change_aop_tcbdllseg :
forall h hp t tn l,
can_change_aop (tcbdllseg h hp t tn l).
Hint Resolve can_change_aop_tcbdllseg : can_change_aop.
Theorem can_change_aop_ecbfsllseg :
forall ls x y, can_change_aop (ecbf_sllseg x y ls OS_EVENT V_OSEventListPtr).
Hint Resolve can_change_aop_ecbfsllseg: can_change_aop.
Theorem can_change_aop_ecbfsll :
forall ls x , can_change_aop (ecbf_sll x ls OS_EVENT V_OSEventListPtr).
Hint Resolve can_change_aop_ecbfsll: can_change_aop.
Theorem can_change_aop_qblkfseg :
forall x y ls, can_change_aop (qblkf_sllseg x y ls OS_Q_FREEBLK V_nextblk).
Hint Resolve can_change_aop_qblkfseg: can_change_aop.
Theorem can_change_aop_qblkf :
forall x ls, can_change_aop (qblkf_sll x ls OS_Q_FREEBLK V_nextblk).
Hint Resolve can_change_aop_qblkf: can_change_aop.
Theorem can_change_aop_OSQInv :
can_change_aop OSInv.