Definition store_lemma (temp : PTree.t (type * bool)) (var : PTree.t type)
(ret : type) (gt : PTree.t type) (t t_root : type) (e0 e1 e2: Clight.expr)
(efs : list efield) (tts : list type)
(e : type_id_env) (lr : LLRR) (n: nat): my_lemma.
reify_lemma reify_vst (semax_store_localD temp var ret gt t t_root e0 e1 e2 efs tts e lr n).
Defined.
(* Print store_lemma. *)
Section tbled.
Variable n : nat.
Variable tbl : SymEnv.functions RType_typ.
Let RSym_sym := RSym_sym tbl.
Existing Instance RSym_sym.
Let Expr_expr_fs := Expr_expr_fs tbl.
Existing Instance Expr_expr_fs.
Let Expr_ok_fs := Expr_ok_fs tbl.
Existing Instance Expr_ok_fs.
Let ExprVar_expr := @ExprVariables.ExprVar_expr typ func.
Existing Instance ExprVar_expr.
Existing Instance MA.
Existing Instance rtac_base.MentionsAnyOk.

(* Specifications: *)
Lemma load_store_sound_aux:
forall t_root, (@funcAs typ func RType_typ
(func_defs.RSym_sym tbl)
(@inr
(sum
(sum SymEnv.func
(ModularFunc.ILogicFunc.ilfunc
typ))
(BILogicFunc.bilfunc typ))
func' (Sep (fdata_at t_root)))
(tyArr tyshare
(tyArr
(reptyp t_root)
(tyArr tyval tympred))) =
Some
(fun (sh : share) (rt : typD (reptyp t_root)) (v : val) =>
data_at sh t_root (reptyp_reptype t_root rt) v)).
Lemma APPLY_sound_store_lemma: forall (temp : PTree.t (type * bool)) (var : PTree.t type)
(ret : type) (gt : PTree.t type) (t t_root : type)
(e0 e1 e2 : Clight.expr) (efs : list efield) (tts : list type)
(e : type_id_env) (lr : LLRR) (n : nat),
rtac_sound (EAPPLY typ func (store_lemma temp var ret gt t t_root e0 e1 e2 efs tts e lr n)).
Lemma APPLY_sound_load_lemma: forall (temp : PTree.t (type * bool)) (var : PTree.t type)
(ret : type) (gt : PTree.t type) (id : ident) (t t_root : type)
(e0 e1 : Clight.expr) (efs : list efield) (tts : list type)
(e : type_id_env) (lr : LLRR) (n : nat),
rtac_sound (EAPPLY typ func (load_lemma temp var ret gt id t t_root e0 e1 efs tts e lr n)).