Skip to content

Commit 8fc15e0

Browse files
committed
definitions for constant terms 0 and 1; more notation for syntax; bundles for notation of HOL and Word
1 parent 6c7609c commit 8fc15e0

12 files changed

+621
-474
lines changed

Axioms.thy

+19-19
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,12 @@ lemma constFcong_valid:"valid constFcongAxiom"
6464
proof (simp add: constFcongAxiom_def valid_def, rule allI, rule impI, rule allI, rule allI, rule impI, unfold empty_def)
6565
fix I::"interp" and a b
6666
assume good_interp:"is_interp I"
67-
assume fn:"Functions I Ix (\<chi> i. dterm_sem I (Const (bword_zero)) (a, b)) = Functions I Iy (\<chi> i. dterm_sem I (Const (bword_zero)) (a, b))"
68-
have vec_eq:"(\<chi> i. dterm_sem I (if i = Ix then $f Ix (\<lambda>i. Const (bword_zero)) else Const (bword_zero)) (a, b)) = (\<chi> i. dterm_sem I (if i = Ix then $f Iy (\<lambda>i. Const (bword_zero)) else Const (bword_zero)) (a, b))"
67+
assume fn:"Functions I Ix (\<chi> i. dterm_sem I \<^bold>0 (a, b)) = Functions I Iy (\<chi> i. dterm_sem I \<^bold>0 (a, b))"
68+
have vec_eq:"(\<chi> i. dterm_sem I (if i = Ix then $f Ix (\<lambda>i. \<^bold>0) else \<^bold>0) (a, b)) = (\<chi> i. dterm_sem I (if i = Ix then $f Iy (\<lambda>i. \<^bold>0) else \<^bold>0) (a, b))"
6969
apply(rule vec_extensionality)
7070
using fn by (auto simp add: empty_def)
71-
then show "Predicates I Ix (\<chi> i. dterm_sem I (if i = Ix then $f Ix (\<lambda>i. Const (bword_zero)) else Const (bword_zero)) (a, b)) =
72-
Predicates I Ix (\<chi> i. dterm_sem I (if i = Ix then $f Iy (\<lambda>i. Const (bword_zero)) else Const (bword_zero)) (a, b))"
71+
then show "Predicates I Ix (\<chi> i. dterm_sem I (if i = Ix then $f Ix (\<lambda>i. \<^bold>0) else \<^bold>0) (a, b)) =
72+
Predicates I Ix (\<chi> i. dterm_sem I (if i = Ix then $f Iy (\<lambda>i. \<^bold>0) else \<^bold>0) (a, b))"
7373
by auto
7474
qed
7575

@@ -146,11 +146,11 @@ proof (unfold allInstAxiom_def, unfold valid_def, rule allI, rule allI, rule imp
146146
let ?fs = "dterm_sem I ?f \<nu>"
147147
assume "is_interp I"
148148
assume pre:"(\<forall>r. Predicates I Ix
149-
(\<chi> i. dterm_sem I (if i = Ix then trm.Var Ix else Const (bword_zero)) (\<chi> y. if Ix = y then r else fst \<nu> $ y, snd \<nu>)))"
150-
have arg_eq:"(\<chi> i. dterm_sem I (if i = Ix then trm.Var Ix else Const (bword_zero)) (\<chi> y. if Ix = y then ?fs else fst \<nu> $ y, snd \<nu>))
151-
= (\<chi> i. dterm_sem I (if i = Ix then ?f else Const (bword_zero)) (fst \<nu> , snd \<nu>))"
149+
(\<chi> i. dterm_sem I (if i = Ix then trm.Var Ix else \<^bold>0) (\<chi> y. if Ix = y then r else fst \<nu> $ y, snd \<nu>)))"
150+
have arg_eq:"(\<chi> i. dterm_sem I (if i = Ix then trm.Var Ix else \<^bold>0) (\<chi> y. if Ix = y then ?fs else fst \<nu> $ y, snd \<nu>))
151+
= (\<chi> i. dterm_sem I (if i = Ix then ?f else \<^bold>0) (fst \<nu> , snd \<nu>))"
152152
by(rule vec_extensionality,auto)
153-
show "Predicates I Ix (\<chi> i. dterm_sem I (if i = Ix then ?f else Const (bword_zero)) \<nu>)"
153+
show "Predicates I Ix (\<chi> i. dterm_sem I (if i = Ix then ?f else \<^bold>0) \<nu>)"
154154
using spec[OF pre, of ?fs] arg_eq by auto
155155
qed
156156

@@ -250,11 +250,11 @@ lemma lessEqualRefl_valid:"valid lessEqualReflAxiom"
250250
by(auto simp add: lessEqualReflAxiom_def valid_def Leq_def)
251251

252252
lemma assign_lem1:
253-
"dterm_sem I (if i = Ix then Syntax.Var Ix else (Const (bword_zero)))
253+
"dterm_sem I (if i = Ix then Syntax.Var Ix else \<^bold>0)
254254
(vec_lambda (\<lambda>y. if Ix = y then Functions I Ix
255255
(vec_lambda (\<lambda>i. dterm_sem I (empty i) \<nu>)) else vec_nth (fst \<nu>) y), snd \<nu>)
256256
=
257-
dterm_sem I (if i = Ix then $f Ix empty else (Const (bword_zero))) \<nu>"
257+
dterm_sem I (if i = Ix then $f Ix empty else \<^bold>0) \<nu>"
258258
by (cases "i = Ix") (auto simp: proj_sing1)
259259

260260
definition assigndAxiom :: "formula"
@@ -338,7 +338,7 @@ proof (unfold CQaxrule_def,rule soundI)
338338
using pres[of 0] apply(auto simp add: Equiv_def Or_def TT_def FF_def pres[of 0])
339339
apply(rule ext)
340340
using pre by auto
341-
have vec_eq:"\<And>a b. (\<chi> i. dterm_sem I (if i = Ix then $$F Ix else Const (bword_zero)) (a, b)) = (\<chi> i. dterm_sem I (if i = Ix then $$F Iy else Const (bword_zero)) (a, b))"
341+
have vec_eq:"\<And>a b. (\<chi> i. dterm_sem I (if i = Ix then $$F Ix else \<^bold>0) (a, b)) = (\<chi> i. dterm_sem I (if i = Ix then $$F Iy else \<^bold>0) (a, b))"
342342
apply(rule vec_extensionality)
343343
using pre2 by(auto)
344344
show "seq_sem I ([], [Equiv(Prop Iz (singleton ($$F Ix)))(Prop Iz (singleton ($$F Iy)))]) = UNIV"
@@ -381,10 +381,10 @@ theorem test_valid: "valid test_axiom"
381381
by (auto simp add: valid_def test_axiom_def)
382382

383383
lemma diff_assign_lem1:
384-
"dterm_sem I (if i = Ix then Syntax.DiffVar Ix else (Const (bword_zero)))
384+
"dterm_sem I (if i = Ix then Syntax.DiffVar Ix else \<^bold>0)
385385
(fst \<nu>, vec_lambda (\<lambda>y. if Ix = y then Functions I Ix (vec_lambda (\<lambda>i. dterm_sem I (empty i) \<nu>)) else vec_nth (snd \<nu>) y))
386386
=
387-
dterm_sem I (if i = Ix then $f Ix empty else (Const (bword_zero))) \<nu>
387+
dterm_sem I (if i = Ix then $f Ix empty else \<^bold>0) \<nu>
388388
"
389389
by (cases "i = Ix") (auto simp: proj_sing1)
390390

@@ -553,16 +553,16 @@ theorem MP_sound: "MP_holds \<phi> \<psi>"
553553

554554
lemma CT_lemma:"\<And>I::interp. \<And> a::(real, ident) vec. \<And> b::(real, ident) vec. \<forall>I::interp. is_interp I \<longrightarrow> (\<forall>a b. dterm_sem I \<theta> (a, b) = dterm_sem I \<theta>' (a, b)) \<Longrightarrow>
555555
is_interp I \<Longrightarrow>
556-
Functions I var (vec_lambda (\<lambda>i. dterm_sem I (if i = Ix then \<theta> else (Const (bword_zero))) (a, b))) =
557-
Functions I var (vec_lambda (\<lambda>i. dterm_sem I (if i = Ix then \<theta>' else (Const (bword_zero))) (a, b)))"
556+
Functions I var (vec_lambda (\<lambda>i. dterm_sem I (if i = Ix then \<theta> else \<^bold>0) (a, b))) =
557+
Functions I var (vec_lambda (\<lambda>i. dterm_sem I (if i = Ix then \<theta>' else \<^bold>0) (a, b)))"
558558
proof -
559559
fix I :: "interp" and a :: "(real, ident) vec" and b :: "(real, ident) vec"
560560
assume a1: "is_interp I"
561561
assume "\<forall>I::interp. is_interp I \<longrightarrow> (\<forall>a b. dterm_sem I \<theta> (a, b) = dterm_sem I \<theta>' (a, b))"
562-
then have "\<forall>i. dterm_sem I (if i = Ix then \<theta>' else (Const (bword_zero))) (a, b) = dterm_sem I (if i = Ix then \<theta> else (Const (bword_zero))) (a, b)"
562+
then have "\<forall>i. dterm_sem I (if i = Ix then \<theta>' else \<^bold>0) (a, b) = dterm_sem I (if i = Ix then \<theta> else \<^bold>0) (a, b)"
563563
using a1 by presburger
564-
then show "Functions I var (vec_lambda (\<lambda>i. dterm_sem I (if i = Ix then \<theta> else (Const (bword_zero))) (a, b)))
565-
= Functions I var (vec_lambda (\<lambda>i. dterm_sem I (if i = Ix then \<theta>' else (Const (bword_zero))) (a, b)))"
564+
then show "Functions I var (vec_lambda (\<lambda>i. dterm_sem I (if i = Ix then \<theta> else \<^bold>0) (a, b)))
565+
= Functions I var (vec_lambda (\<lambda>i. dterm_sem I (if i = Ix then \<theta>' else \<^bold>0) (a, b)))"
566566
by presburger
567567
qed
568568

@@ -580,7 +580,7 @@ proof (auto simp only: CQ_holds_def valid_def equals_sem vec_extensionality vec_
580580
assume good:"is_interp I"
581581
have sem_eq:"dterm_sem I \<theta> (a,b) = dterm_sem I \<theta>' (a,b)"
582582
using sem good by auto
583-
have feq:"(\<chi> i. dterm_sem I (if i = Ix then \<theta> else Const (bword_zero)) (a, b)) = (\<chi> i. dterm_sem I (if i = Ix then \<theta>' else Const (bword_zero)) (a, b))"
583+
have feq:"(\<chi> i. dterm_sem I (if i = Ix then \<theta> else \<^bold>0) (a, b)) = (\<chi> i. dterm_sem I (if i = Ix then \<theta>' else \<^bold>0) (a, b))"
584584
apply(rule vec_extensionality)
585585
using sem_eq by auto
586586
then show "(a, b) \<in> fml_sem I ($\<phi> var (singleton \<theta>) \<leftrightarrow> $\<phi> var (singleton \<theta>'))"

Denotational_Semantics.thy

+16-1
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,9 @@ where
206206
| Frechet_Diff:"frechet I (Differential d) v = undefined"
207207
| Frechet_Funl:"frechet I ($$F f) v = undefined"
208208

209+
lemma Frechet_Zero[simp]: "frechet I \<^bold>0 v = (\<lambda>_. 0)"
210+
by (simp add: Zero_def)
211+
209212
definition directional_derivative :: "interp \<Rightarrow> trm \<Rightarrow> state \<Rightarrow> real"
210213
where "directional_derivative I t = (\<lambda>v. frechet I t (fst v) (snd v))"
211214

@@ -382,10 +385,22 @@ lemma box_sem [simp]:"fml_sem I (Box \<alpha> \<phi>) = {\<nu>. \<forall> \<omeg
382385
lemma forall_sem [simp]:"fml_sem I (Forall x \<phi>) = {v. \<forall>r. (repv v x r) \<in> fml_sem I \<phi>}"
383386
unfolding Forall_def fml_sem.simps
384387
using Collect_cong by (auto)
385-
388+
386389
lemma greater_sem[simp]:"fml_sem I (Greater \<theta> \<theta>') = {v. dterm_sem I \<theta> v > dterm_sem I \<theta>' v}"
387390
unfolding Greater_def by auto
388391

392+
lemma sterm_sem_zero[simp]: "sterm_sem I \<^bold>0 \<nu> = 0"
393+
by (auto simp: Zero_def bword_zero.rep_eq)
394+
395+
lemma dterm_sem_zero[simp]: "dterm_sem I \<^bold>0 = (\<lambda>_. 0)"
396+
by (auto simp: Zero_def bword_zero.rep_eq)
397+
398+
lemma sterm_sem_one[simp]: "sterm_sem I \<^bold>1 \<nu> = 1"
399+
by (auto simp: One_def bword_one.rep_eq)
400+
401+
lemma dterm_sem_one[simp]: "dterm_sem I \<^bold>1 = (\<lambda>_. 1)"
402+
by (auto simp: One_def bword_one.rep_eq)
403+
389404
lemma loop_sem:"prog_sem I (Loop \<alpha>) = (prog_sem I \<alpha>)\<^sup>*"
390405
by (auto)
391406

0 commit comments

Comments
 (0)