Skip to content

Commit 7f1e94c

Browse files
added a rec property 1 for correctness
1 parent 45fee4c commit 7f1e94c

File tree

3 files changed

+231
-57
lines changed

3 files changed

+231
-57
lines changed

hol/bdd_genScript.sml

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ val _ = new_theory "bdd_gen";
3232
Hol_datatype `decision_structure = <| sem : 'a -> ((string,bool) alist) -> 'b option ;
3333
sub : 'a -> string -> bool -> 'a ;
3434
simp : 'a -> 'a ;
35-
final : 'a -> 'b option
35+
final : 'a -> 'b option;
36+
fv : 'a -> string list
3637
|>`;
3738

3839
(* BDD types *)
@@ -356,12 +357,6 @@ Definition order_hold_def:
356357
INDEX_OF x' xl = SOME i'
357358
358359
i' < i)
359-
(*
360-
(ALOOKUP labels n = SOME (non_termn(SOME x, p )) ∧
361-
ALOOKUP labels n' = SOME lbl ==>
362-
is_lbl_leaf(lbl)
363-
)
364-
*)
365360
End
366361

367362

@@ -382,16 +377,16 @@ End
382377

383378
Definition consumed_dom_bdd_def:
384379
consumed_dom_bdd vars_consumed ((root,edges,labels):('a,'b)BDD) =
385-
∀ n pred x.
386-
(ALOOKUP labels n = SOME (non_termn (SOME x,pred))) ⇒
380+
∀ n p x.
381+
(ALOOKUP labels n = SOME (non_termn (SOME x,p))) ⇒
387382
MEM x vars_consumed
388383
End
389384

390385

391386
Definition mv_dom_bdd_def:
392387
mv_dom_bdd mv ((root,edges,labels):('a,'b)BDD) =
393-
∀ n pred x.
394-
(ALOOKUP labels n = SOME (non_termn (SOME x,pred))) ⇒
388+
∀ n p x.
389+
(ALOOKUP labels n = SOME (non_termn (SOME x,p))) ⇒
395390
lookup_is_some mv x
396391
End
397392

@@ -430,27 +425,58 @@ Definition get_prop_def:
430425
End
431426

432427

433-
(*TODO: Double check with Roberto mv_dom_bdd*)
428+
Definition fv_in_p_def:
429+
fv_in_p rec p (mv:(string#bool) list) =
430+
(∀x. MEM x (rec.fv p) ⇒ (∃b. ALOOKUP mv x = SOME b))
431+
End
432+
433+
434+
Definition fv_in_labels_def:
435+
fv_in_labels rec labels mv =
436+
∀ n opx p. (ALOOKUP labels n = SOME (non_termn (opx,p)) ⇒
437+
fv_in_p rec p mv )
438+
End
439+
440+
441+
442+
443+
434444
Definition correct_sem_def:
435445
correct_sem rec (BDD:('a,'b)BDD) =
436-
∀ n mv b r edges labels .
446+
∀ n mv b r edges labels.
437447
BDD = (r,edges,labels) ∧
438448
mv_dom_bdd mv BDD ∧
449+
fv_in_labels rec labels mv ∧
439450
BDD_sem rec BDD mv n b ⇒
440451
b = op_sem rec (get_prop labels n) mv
441452
End
442453

454+
(*
455+
Definition correct_sem_def:
456+
correct_sem rec (BDD:('a,'b)BDD) =
457+
∀ r edges labels.
458+
BDD = (r,edges,labels) ==>
459+
! n .
460+
! mv .
461+
MEM n (all_edges edges)
462+
mv_dom_bdd mv BDD ∧
463+
fv_in_p rec (get_prop labels n) mv ==>
464+
!b .
465+
BDD_sem rec BDD mv n b ⇒
466+
b = op_sem rec (get_prop labels n) mv
467+
End
468+
*)
443469

444470

445471

446-
447-
448-
472+
Definition prop1_def:
473+
prop1 (rec:('a,'b)decision_structure) =
474+
∀ mv h b p.
475+
ALOOKUP mv h = SOME b ∧ fv_in_p rec p mv ⇒
476+
(rec.sem (rec.simp (rec.sub p h b)) mv = rec.sem p mv)
477+
End
449478

450479

451-
(******************************************************)
452-
(* CORRECNTESS *)
453-
(******************************************************)
454480

455481
(* general rec type , also Ps here are generic also rec is generic ------------- START HERE*)
456482
(*

hol/bdd_gen_mergeScript.sml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -726,7 +726,11 @@ Proof
726726
gvs[get_prop_def]>>
727727
gvs[Once BDD_sem_cases]>>
728728

729-
gvs[ALOOKUP_ADELKEY]
729+
gvs[ALOOKUP_ADELKEY] >>
730+
rgs[op_sem_def] >>
731+
gvs[AllCaseEqs()]>>
732+
cheat
733+
730734
]
731735
QED
732736

0 commit comments

Comments
 (0)