@@ -45,27 +45,27 @@ val _ = Hol_datatype `
4545(* here 'a would be pred and 'b would be bool *)
4646(* *************************************************)
4747
48- Definition Sem_rule_def :
49- (Sem_rule (Var x) mv = (ALOOKUP mv x) ) /\
50- (Sem_rule True _ = SOME T) /\
51- (Sem_rule False _ = SOME F) /\
52- (Sem_rule (And p q) mv =
53- case (Sem_rule p mv, Sem_rule q mv) of
48+ Definition sem_pred_def :
49+ (sem_pred (Var x) mv = (ALOOKUP mv x) ) /\
50+ (sem_pred True _ = SOME T) /\
51+ (sem_pred False _ = SOME F) /\
52+ (sem_pred (And p q) mv =
53+ case (sem_pred p mv, sem_pred q mv) of
5454 | (SOME b, SOME b') => SOME (b ∧ b')
5555 | (_,_) => NONE
5656 ) /\
57- (Sem_rule (Or p q) mv =
58- case (Sem_rule p mv, Sem_rule q mv) of
57+ (sem_pred (Or p q) mv =
58+ case (sem_pred p mv, sem_pred q mv) of
5959 | (SOME b,SOME b') => SOME (b ∨ b')
6060 | (_,_) => NONE
6161 ) /\
62- (Sem_rule (Not p) mv =
63- case (Sem_rule p mv) of
62+ (sem_pred (Not p) mv =
63+ case (sem_pred p mv) of
6464 | SOME b => SOME (~b)
6565 | _ => NONE
6666 ) /\
67- (Sem_rule (Implies p q) mv =
68- case (Sem_rule p mv, Sem_rule q mv) of
67+ (sem_pred (Implies p q) mv =
68+ case (sem_pred p mv, sem_pred q mv) of
6969 | (SOME b,SOME b') => SOME (b ⇒ b')
7070 | (_,_) => NONE
7171 )
134134
135135
136136
137- (* move to other file the specialized *)
138137Definition pred_final_def:
139138 pred_final p =
140139 case p of
147146Definition pred_structure_def:
148147 pred_structure =
149148 <|
150- sem := Sem_rule ;
149+ sem := sem_pred ;
151150 sub := mk_substitute_pred;
152151 simp := simp_pred;
153152 final := pred_final;
@@ -180,13 +179,13 @@ Proof
180179QED
181180
182181
183- Theorem mem_imp_sem_rule :
182+ Theorem mem_imp_sem_pred :
184183 ∀p mv. (∀x. MEM x (FV p) ⇒ (∃b. ALOOKUP mv x = SOME b)) ⇒
185- Sem_rule p mv ≠ NONE ∧ ∃ b' . Sem_rule p mv = SOME b'
184+ sem_pred p mv ≠ NONE ∧ ∃ b' . sem_pred p mv = SOME b'
186185Proof
187186 Induct >>
188187 rw[simp_pred_def, FV_def] >> gvs[AllCaseEqs()] >>
189- gvs[Sem_rule_def , simp_pred_def] >>
188+ gvs[sem_pred_def , simp_pred_def] >>
190189 rpt (BasicProvers.FULL_CASE_TAC >> gvs[])
191190QED
192191
@@ -195,23 +194,23 @@ QED
195194
196195Theorem simplification_correct:
197196 ∀p mv. (∀x. MEM x (FV p) ⇒ (∃b. ALOOKUP mv x = SOME b)) ⇒
198- Sem_rule p mv = Sem_rule (simp_pred p) mv
197+ sem_pred p mv = sem_pred (simp_pred p) mv
199198Proof
200199 Induct_on `p` >-
201- (rw[simp_pred_def, Sem_rule_def ]) >-
202- (rw[simp_pred_def, Sem_rule_def ]) >-
203- (rw[simp_pred_def, Sem_rule_def ]) >>
200+ (rw[simp_pred_def, sem_pred_def ]) >-
201+ (rw[simp_pred_def, sem_pred_def ]) >-
202+ (rw[simp_pred_def, sem_pred_def ]) >>
204203
205204 rpt strip_tac >>
206- imp_res_tac mem_imp_sem_rule >>
205+ imp_res_tac mem_imp_sem_pred >>
207206
208207 LAST_X_ASSUM (STRIP_ASSUME_TAC o (Q.SPECL [‘mv’])) >>
209208 gvs[FV_def] >>
210- gvs[Sem_rule_def ] >>
209+ gvs[sem_pred_def ] >>
211210
212- rw[Sem_rule_def , simp_pred_def] >>
211+ rw[sem_pred_def , simp_pred_def] >>
213212 rpt (BasicProvers.FULL_CASE_TAC >> gvs[]) >>
214- gvs[Sem_rule_def , simp_pred_def] >>
213+ gvs[sem_pred_def , simp_pred_def] >>
215214
216215 first_x_assum (strip_assume_tac o (Q.SPECL [‘s’])) >>
217216 imp_res_tac simp_pred_imp_mem >>
0 commit comments