Skip to content

Commit 526905f

Browse files
debug and made a new folder for the testing
1 parent 19ee799 commit 526905f

File tree

8 files changed

+184
-94
lines changed

8 files changed

+184
-94
lines changed

hol/policy_to_table/bdd_cake_trans/apply_trans_to_IOLib.sml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -88,24 +88,24 @@ val prog =
8888

8989

9090

91-
val _ = astToSexprLib.write_ast_to_file "../bdd_cake_test/test_bdd_policy.sexp" prog;
91+
val _ = astToSexprLib.write_ast_to_file "../../bdd_cake_test/test_bdd_policy.sexp" prog;
9292

9393

94-
val status_compile_sexp = OS.Process.system "cd ../bdd_cake_test/ && CML_STACK_SIZE=2048 CML_HEAP_SIZE=8192 ./cake --sexp=true --exclude_prelude=true --skip_type_inference=false --jump=false --reg_alg=0 < test_bdd_policy.sexp > test_bdd_policy.cake.S"
94+
val status_compile_sexp = OS.Process.system "cd ../../bdd_cake_test/ && CML_STACK_SIZE=2048 CML_HEAP_SIZE=8192 ./cake --sexp=true --exclude_prelude=true --skip_type_inference=false --jump=false --reg_alg=0 < test_bdd_policy.sexp > test_bdd_policy.cake.S"
9595

9696
val _ = if OS.Process.isSuccess status_compile_sexp
9797
then print "Ja, policy cakeML compilation completed\n"
9898
else (print "Nej, policy cakeML compilation failed\n";
9999
OS.Process.exit OS.Process.failure)
100100

101-
val status_cc = OS.Process.system "cd ../bdd_cake_test/ && cc test_bdd_policy.cake.S basis_ffi.c -lm -o test_bdd_policy.cake -lm"
101+
val status_cc = OS.Process.system "cd ../../bdd_cake_test/ && cc test_bdd_policy.cake.S basis_ffi.c -lm -o test_bdd_policy.cake -lm"
102102

103103
val _ = if OS.Process.isSuccess status_cc
104104
then print "Ja, policy cc compilation completed\n"
105105
else (print "Nej, policy cc compilation failed\n";
106106
OS.Process.exit OS.Process.failure)
107107

108-
val status_exec = OS.Process.system "cd ../bdd_cake_test/ && time ./test_bdd_policy.cake > bdd_policy_cakeml_export.txt";
108+
val status_exec = OS.Process.system "cd ../../bdd_cake_test/ && time ./test_bdd_policy.cake > bdd_policy_cakeml_export.txt";
109109

110110
val _ = if OS.Process.isSuccess status_exec
111111
then print "Ja, policy cc compilation completed\n"
@@ -116,7 +116,7 @@ val _ = if OS.Process.isSuccess status_exec
116116

117117
(*
118118
119-
cp test_bdd_policy.sexp ../bdd_cake_test
119+
cp test_bdd_policy.sexp ../../bdd_cake_test
120120
121121
CML_STACK_SIZE=2048 CML_HEAP_SIZE=8192 ./cake --sexp=true --exclude_prelude=true --skip_type_inference=false --jump=false --reg_alg=0 < test_bdd_policy.sexp > test_bdd_policy.cake.S
122122
@@ -134,7 +134,7 @@ time ./test_bdd_policy.cake > bdd_policy_cakeml_export.txt
134134

135135

136136

137-
val ins = TextIO.openIn "../bdd_cake_test/bdd_policy_cakeml_export.txt";
137+
val ins = TextIO.openIn "../../bdd_cake_test/bdd_policy_cakeml_export.txt";
138138
val policy_content_str = TextIO.inputAll ins;
139139
val _ = TextIO.closeIn ins;
140140

@@ -224,10 +224,10 @@ val prog =
224224

225225

226226

227-
val _ = astToSexprLib.write_ast_to_file "../bdd_cake_test/test_bdd_table.sexp" prog;
227+
val _ = astToSexprLib.write_ast_to_file "../../bdd_cake_test/test_bdd_table.sexp" prog;
228228

229229

230-
val status = OS.Process.system "cd ../bdd_cake_test/ && CML_STACK_SIZE=2048 CML_HEAP_SIZE=8192 ./cake --sexp=true --exclude_prelude=true --skip_type_inference=false --jump=false --reg_alg=0 < test_bdd_table.sexp > test_bdd_table.cake.S && cc test_bdd_table.cake.S basis_ffi.c -lm -o test_bdd_table.cake -lm && cd ../bdd_cake_test/ && time ./test_bdd_table.cake > bdd_table_cakeml_export.txt"
230+
val status = OS.Process.system "cd ../../bdd_cake_test/ && CML_STACK_SIZE=2048 CML_HEAP_SIZE=8192 ./cake --sexp=true --exclude_prelude=true --skip_type_inference=false --jump=false --reg_alg=0 < test_bdd_table.sexp > test_bdd_table.cake.S && cc test_bdd_table.cake.S basis_ffi.c -lm -o test_bdd_table.cake -lm && time ./test_bdd_table.cake > bdd_table_cakeml_export.txt"
231231

232232
val _ = if OS.Process.isSuccess status
233233
then print "Ja, table cakeML compilation completed\n"
@@ -244,7 +244,7 @@ val _ = (max_print_depth := 200);
244244

245245

246246

247-
val ins = TextIO.openIn "../bdd_cake_test/bdd_table_cakeml_export.txt";
247+
val ins = TextIO.openIn "../../bdd_cake_test/bdd_table_cakeml_export.txt";
248248
val tbl_content_str = TextIO.inputAll ins;
249249
val _ = TextIO.closeIn ins;
250250

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<<HOL message: Created theory "internet_firewall_1">>
2+
Saved definition ____ "policy_order_test_def"
3+
Translating policy_order_test
4+
Adding nsLookup representation thms for 646 consts [sptrees_bdd_trans_Prog_env_119, sptrees_bdd_trans_Prog_env_118, ..., CommandLineProg_env_2]
5+
Adding nsLookup representation thms for [init_env]
6+
Saved theorem _______ "policy_order_test_refs_def"
7+
Saved theorem _______ "nsLookup_internet_firewall_1_env_pfun_eqs"
8+
Saved theorem _______ "policy_order_test_v_thm"
9+
Saved definition ____ "policy_content_test_def"
10+
Translating policy_content_test
11+
Adding nsLookup representation thms for [internet_firewall_1_env]
12+
Saved theorem _______ "policy_content_test_refs_def"
13+
Saved theorem _______ "nsLookup_internet_firewall_1_env_0_pfun_eqs"
14+
Saved theorem _______ "policy_content_test_v_thm"
15+
Saved definition ____ "policy_main_hol4_def"
16+
Translating policy_main_hol4
17+
Adding nsLookup representation thms for [internet_firewall_1_env_0]
18+
Saved theorem _______ "nsLookup_internet_firewall_1_env_1_pfun_eqs"
19+
Saved CHEAT _________ "policy_main_hol4_v_thm"
20+
Saved theorem _______ "nsLookup_internet_firewall_1_env_2_pfun_eqs"
21+
Ja, policy cakeML compilation completed
22+
Ja, policy cc compilation completed
23+
0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 1920maxresident)k
24+
0inputs+8outputs (0major+139minor)pagefaults 0swaps
25+
Ja, policy cc compilation completed
26+
Saved definition ____ "table_content_test_def"
27+
Translating table_content_test
28+
Adding nsLookup representation thms for [internet_firewall_1_env_2, internet_firewall_1_env_1]
29+
Saved theorem _______ "table_content_test_refs_def"
30+
Saved theorem _______ "nsLookup_internet_firewall_1_env_3_pfun_eqs"
31+
Saved theorem _______ "table_content_test_v_thm"
32+
Saved definition ____ "table_main_hol4_def"
33+
Translating table_main_hol4
34+
Adding nsLookup representation thms for [internet_firewall_1_env_3]
35+
Saved theorem _______ "nsLookup_internet_firewall_1_env_4_pfun_eqs"
36+
Saved theorem _______ "table_main_hol4_v_thm"
37+
Saved theorem _______ "nsLookup_internet_firewall_1_env_5_pfun_eqs"
38+
0.00user 0.00system 0:00.00elapsed 100%CPU (0avgtext+0avgdata 2080maxresident)k
39+
0inputs+16outputs (0major+214minor)pagefaults 0swaps
40+
Ja, table cakeML compilation completed
41+
Adding nsLookup representation thms for [internet_firewall_1_env_5, internet_firewall_1_env_4]
42+
Exporting theory "internet_firewall_1" ... done.
43+
Theory "internet_firewall_1" took 21.0s to build
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
internet_firewall_1Script.uo: /home/anoud/HOL/sigobj/HolKernel.uo /home/anoud/HOL/sigobj/Parse.uo /home/anoud/Desktop/HOL4P4/hol/policy_to_table/bdd_cake_trans/apply_trans_to_IOLib.uo /home/anoud/Desktop/HOL4P4/hol/policy_to_table/bdd_utilsLib.uo /home/anoud/HOL/sigobj/boolLib.uo /home/anoud/HOL/sigobj/bossLib.uo /home/anoud/HOL/sigobj/liteLib.uo /home/anoud/Desktop/HOL4P4/hol/policy_to_table/policy_arith_to_varTheory.uo /home/anoud/HOL/sigobj/simpLib.uo /home/anoud/Desktop/HOL4P4/hol/policy_to_table/bdd_cake_trans/sptrees_fwd_proofLib.uo
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/home/anoud/HOL/bin/Holmake
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# includes
2+
# ----------------------------------
3+
DEPENDENCIES = ..
4+
5+
6+
# configuration
7+
# ----------------------------------
8+
HOLHEAP = ../bdd_cake_trans-heap
9+
NEWHOLHEAP = internet_firewall-heap
10+
11+
HEAPINC_EXTRA = wordsLib
12+
13+
14+
# included lines follow
15+
# ----------------------------------
16+
17+
# automatic Holmake targets (all theories and non-"Script.sml" .sml files)
18+
# automatic heap inclusion by name pattern
19+
# ----------------------------------
20+
SMLFILES = $(subst *.sml,, $(patsubst %Script.sml,%Theory.sml,$(wildcard *.sml)))
21+
TARGETS = $(patsubst %.sml,%.uo,$(SMLFILES))
22+
23+
HEAPINC = $(subst *Theory,,$(patsubst %Script.sml,%Theory ,$(wildcard *Script.sml))) \
24+
$(subst *Syntax,,$(patsubst %.sml,% ,$(wildcard *Syntax.sml))) \
25+
$(subst *Simps,, $(patsubst %.sml,% ,$(wildcard *Simps.sml ))) \
26+
$(subst *Lib,, $(patsubst %.sml,% ,$(wildcard *Lib.sml ))) \
27+
$(HEAPINC_EXTRA)
28+
29+
30+
# general configs
31+
# ----------------------------------
32+
all: $(TARGETS) $(if $(NEWHOLHEAP),$(NEWHOLHEAP),)
33+
34+
INCLUDES = $(DEPENDENCIES) $(if $(HOLHEAP),$(shell dirname $(HOLHEAP)),)
35+
36+
EXTRA_CLEANS = $(if $(NEWHOLHEAP),$(NEWHOLHEAP) $(NEWHOLHEAP).o,) \
37+
$(wildcard *.exe) \
38+
$(wildcard *.sexp) \
39+
$(wildcard *.S) \
40+
$(wildcard *.o) \
41+
$(wildcard *~)
42+
43+
OPTIONS = QUIT_ON_FAILURE
44+
45+
default: all
46+
47+
.PHONY: all default
48+
49+
50+
# holheap part
51+
# ----------------------------------
52+
ifdef POLY
53+
54+
$(NEWHOLHEAP): $(TARGETS) $(HOLHEAP)
55+
$(protect $(HOLDIR)/bin/buildheap) $(if $(HOLHEAP),-b $(HOLHEAP),) -o $@ $(HEAPINC)
56+
57+
endif
58+

hol/policy_to_table/bdd_cake_trans/internet_firewall_1Script.sml renamed to hol/policy_to_table/bdd_cake_trans/internet_firewall_policies/internet_firewall_1Script.sml

File renamed without changes.

hol/policy_to_table/bdd_cake_trans/sptrees_fwd_proofLib.sig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ sig
33
include Abbrev
44

55

6-
val sptrees_convert_arith_policy_to_interval_tables : term * term * term * term * term -> thm
6+
val convert_arith_policy_to_interval_tables : term * term * term * term * term -> thm
77
val time_stage : string * Timer.cpu_timer * Timer.real_timer -> {sys: Time.time, usr: Time.time} * Time.time
88

99

hol/policy_to_table/bdd_cake_trans/sptrees_fwd_proofLib.sml

Lines changed: 71 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -59,142 +59,129 @@ open apply_trans_to_IOLib;
5959

6060
fun sptrees_convert_arith_policy_to_interval_tables (arith_policy, policy_me, test_pd_type, policy_full_order, policy_order) =
6161

62-
let
62+
let
6363

6464

6565

66-
(***********************)
67-
(* STAGE 1 *)
68-
(***********************)
69-
70-
(*convert arith policy to var policy*)
71-
val arith_policy_eval = EVAL “convert_arith_to_var_policy ^arith_policy ^policy_me”;
72-
val var_policy = optionSyntax.dest_some (rhs (concl arith_policy_eval));
73-
74-
75-
(* first establish distinction of domain and range of me*)
76-
val policy_me_fst_distinct = EVAL “ALL_DISTINCT (MAP FST ^policy_me)”;
77-
val policy_me_snd_distinct = EVAL “ALL_DISTINCT (MAP SND ^policy_me)”;
78-
79-
val all_distinct_conj = CONJ policy_me_fst_distinct policy_me_snd_distinct;
80-
81-
82-
(* Theorem of correctness for conversion from arith policy to var policy *)
83-
val arith_policy_var_policy_thm = REWRITE_RULE[all_distinct_conj, arith_policy_eval]
84-
(ISPECL[arith_policy, var_policy, policy_me] policy_airth_to_var_sem_conversion_correct);
85-
86-
87-
(***********************)
88-
(* STAGE 2 *)
89-
(***********************)
90-
91-
92-
93-
val (final_policy_bdd, tbl, final_table_bdd) =
94-
apply_trans_to_IOLib.sptrees_gen_bdds_policy_and_table (var_policy, policy_order, policy_full_order);
95-
66+
(***********************)
67+
(* STAGE 1 *)
68+
(***********************)
9669

70+
(*convert arith policy to var policy*)
71+
val arith_policy_eval = EVAL “convert_arith_to_var_policy ^arith_policy ^policy_me”;
72+
val var_policy = optionSyntax.dest_some (rhs (concl arith_policy_eval));
9773

98-
val get_i_policy = bdd_utilsLib.pairBDDs (final_policy_bdd, final_table_bdd);
9974

75+
(* first establish distinction of domain and range of me*)
76+
val policy_me_fst_distinct = EVAL “ALL_DISTINCT (MAP FST ^policy_me)”;
77+
val policy_me_snd_distinct = EVAL “ALL_DISTINCT (MAP SND ^policy_me)”;
10078

79+
val all_distinct_conj = CONJ policy_me_fst_distinct policy_me_snd_distinct;
10180

10281

103-
val eval_policy_full_opt = mk_thm ( [], “mk_BDDPred_opt policy_structure (0,[],[(0, non_termn (NONE, ^var_policy))]) [] ^policy_order 1 = SOME ^final_policy_bdd”);
82+
(* Theorem of correctness for conversion from arith policy to var policy *)
83+
val arith_policy_var_policy_thm = REWRITE_RULE[all_distinct_conj, arith_policy_eval]
84+
(ISPECL[arith_policy, var_policy, policy_me] policy_airth_to_var_sem_conversion_correct);
10485

105-
val eval_table_full_opt_auto = mk_thm ( [], “mk_BDDPred_opt table_structure (0,[],[(0, non_termn (NONE, ^tbl))]) [] ^policy_order 1 = SOME ^final_table_bdd ”);
10686

87+
(***********************)
88+
(* STAGE 2 *)
89+
(***********************)
10790

10891

109-
val var_eq_thm_extract = REWRITE_CONV [correct_var_policy_var_tables_exec_def, eval_policy_full_opt , eval_table_full_opt_auto] “correct_var_policy_var_tables_exec ^var_policy ^tbl ^policy_order ^get_i_policy”;
11092

111-
val var_eq_thm_extract_red = computeLib.RESTR_EVAL_RULE [“correct_var_policy_var_tables_exec”, “sem_tables”,“sem_policy”, “mv_dom_vars”] var_eq_thm_extract;
93+
val (final_policy_bdd, tbl, final_table_bdd) =
94+
apply_trans_to_IOLib.sptrees_gen_bdds_policy_and_table (var_policy, policy_order, policy_full_order);
11295

113-
val var_policy_var_table_thm = SIMP_RULE bool_ss [correct_var_policy_var_tables_exec_thm1] var_eq_thm_extract_red;
11496

11597

98+
val get_i_policy = bdd_utilsLib.pairBDDs (final_policy_bdd, final_table_bdd);
11699

117100

118101

119-
(***********************)
120-
(* STAGE 3 *)
121-
(***********************)
122102

103+
val eval_policy_full_opt = mk_thm ( [], “mk_BDDPred_opt policy_structure (0,[],[(0, non_termn (NONE, ^var_policy))]) [] ^policy_order 1 = SOME ^final_policy_bdd”);
104+
val eval_table_full_opt_auto = mk_thm ( [], “mk_BDDPred_opt table_structure (0,[],[(0, non_termn (NONE, ^tbl))]) [] ^policy_order 1 = SOME ^final_table_bdd ”);
123105

124106

125-
(* covert var table to interval table *)
126-
val only_var_table = fst (dest_pair tbl);
127-
val convert_to_interval = EVAL “convert_var_to_sinterval_tables ^only_var_table ^policy_me ^test_pd_type”;
128-
val only_interval_table1 = optionSyntax.dest_some(rhs (concl convert_to_interval));
129107

108+
val var_eq_thm_extract = REWRITE_CONV [correct_var_policy_var_tables_exec_def, eval_policy_full_opt , eval_table_full_opt_auto] “correct_var_policy_var_tables_exec ^var_policy ^tbl ^policy_order ^get_i_policy”;
109+
val var_eq_thm_extract_red = computeLib.RESTR_EVAL_RULE [“correct_var_policy_var_tables_exec”, “sem_tables”,“sem_policy”, “mv_dom_vars”] var_eq_thm_extract;
110+
val var_policy_var_table_thm = SIMP_RULE bool_ss [correct_var_policy_var_tables_exec_thm1] var_eq_thm_extract_red;
130111

131-
(* Theorem of correctness for conversion from var table to inteval table *)
132-
val var_table_sinterval_tbl_thm =
133-
REWRITE_RULE [convert_to_interval] (ISPECL[only_var_table, only_interval_table1, “0:num”, policy_me, test_pd_type ] correct_tables_from_var_to_sinterval_thm);
134112

113+
(***********************)
114+
(* STAGE 3 *)
115+
(***********************)
135116

117+
(* covert var table to interval table *)
118+
val only_var_table = fst (dest_pair tbl);
119+
val convert_to_interval = EVAL “convert_var_to_sinterval_tables ^only_var_table ^policy_me ^test_pd_type”;
120+
val only_interval_table1 = optionSyntax.dest_some(rhs (concl convert_to_interval));
136121

137122

123+
(* Theorem of correctness for conversion from var table to inteval table *)
124+
val var_table_sinterval_tbl_thm =
125+
REWRITE_RULE [convert_to_interval] (ISPECL[only_var_table, only_interval_table1, “0:num”, policy_me, test_pd_type ] correct_tables_from_var_to_sinterval_thm);
138126

139127

140-
(***********************)
141-
(* FINAL PROOF *)
142-
(***********************)
143128

144-
val start_cpu_final = Timer.startCPUTimer ();
145-
val start_real_final = Timer.startRealTimer ();
146129

147130

148131

149-
(* to glue the theorems we need to take care of the conditions/ assumptions *)
132+
(***********************)
133+
(* FINAL PROOF *)
134+
(***********************)
150135

151-
(* condition1 *)
152-
val every_lval_in_me_in_type_thm = EVAL “every_lval_in_me_in_type ^test_pd_type ^policy_me”;
153-
val cond1_thm = REWRITE_RULE [every_lval_in_me_in_type_thm, policy_me_fst_distinct] (ISPECL[policy_me, test_pd_type ] lval_in_me_distinct_imp_cond1);
136+
val start_cpu_final = Timer.startCPUTimer ();
137+
val start_real_final = Timer.startRealTimer ();
154138

155139

156-
(* condition2 *)
157-
val in_order_then_in_me_thm = EVAL “in_order_then_in_me ^policy_order ^policy_me”;
158-
val ops_in_me_length_format_thm = EVAL “ops_in_me_length_format ^test_pd_type ^policy_me”;
159140

160-
val cond2_thm = REWRITE_RULE [every_lval_in_me_in_type_thm, policy_me_fst_distinct,
161-
in_order_then_in_me_thm, ops_in_me_length_format_thm]
162-
(ISPECL[policy_me, test_pd_type, policy_order ]
163-
wf_format_imp_cond2);
141+
(* to glue the theorems we need to take care of the conditions/ assumptions *)
164142

165-
(* condition3 *)
166-
val cond3_thm = REWRITE_RULE [every_lval_in_me_in_type_thm, policy_me_fst_distinct,
167-
in_order_then_in_me_thm, ops_in_me_length_format_thm]
168-
(ISPECL[policy_me, test_pd_type]
169-
wf_format_imp_cond3);
143+
(* condition1 *)
144+
val every_lval_in_me_in_type_thm = EVAL “every_lval_in_me_in_type ^test_pd_type ^policy_me”;
145+
val cond1_thm = REWRITE_RULE [every_lval_in_me_in_type_thm, policy_me_fst_distinct] (ISPECL[policy_me, test_pd_type ] lval_in_me_distinct_imp_cond1);
170146

171147

172-
val final_thm = prove(
173-
“! packet_input .
174-
wf_packet ^test_pd_type packet_input ⇒
175-
sem_arith_policy ^arith_policy packet_input =
176-
sem_sinterval_tables (^only_interval_table1,0) packet_input”
177-
,
148+
(* condition2 *)
149+
val in_order_then_in_me_thm = EVAL “in_order_then_in_me ^policy_order ^policy_me”;
150+
val ops_in_me_length_format_thm = EVAL “ops_in_me_length_format ^test_pd_type ^policy_me”;
178151

179-
rpt strip_tac >>
152+
val cond2_thm = REWRITE_RULE [every_lval_in_me_in_type_thm, policy_me_fst_distinct,
153+
in_order_then_in_me_thm, ops_in_me_length_format_thm]
154+
(ISPECL[policy_me, test_pd_type, policy_order ]
155+
wf_format_imp_cond2);
180156

181-
assume_tac arith_policy_var_policy_thm >>
182-
first_x_assum (strip_assume_tac o (Q.SPECL [‘packet_input’,‘(create_mv ^policy_me packet_input)’])) >>
157+
(* condition3 *)
158+
val cond3_thm = REWRITE_RULE [every_lval_in_me_in_type_thm, policy_me_fst_distinct,
159+
in_order_then_in_me_thm, ops_in_me_length_format_thm]
160+
(ISPECL[policy_me, test_pd_type]
161+
wf_format_imp_cond3);
183162

184-
assume_tac var_policy_var_table_thm >>
185-
first_x_assum (strip_assume_tac o (Q.SPECL [‘(create_mv ^policy_me packet_input)’])) >>
186163

164+
val final_thm = prove(
165+
“! packet_input .
166+
wf_packet ^test_pd_type packet_input ⇒
167+
sem_arith_policy ^arith_policy packet_input =
168+
sem_sinterval_tables (^only_interval_table1,0) packet_input”
169+
,
187170

188-
assume_tac var_table_sinterval_tbl_thm >>
189-
first_x_assum (strip_assume_tac o (Q.SPECL [‘packet_input’,‘(create_mv ^policy_me packet_input)’])) >>
171+
rpt strip_tac >>
190172

191-
fs[cond1_thm, cond2_thm, cond3_thm]
192-
);
173+
assume_tac arith_policy_var_policy_thm >>
174+
first_x_assum (strip_assume_tac o (Q.SPECL [‘packet_input’,‘(create_mv ^policy_me packet_input)’])) >>
193175

176+
assume_tac var_policy_var_table_thm >>
177+
first_x_assum (strip_assume_tac o (Q.SPECL [‘(create_mv ^policy_me packet_input)’])) >>
194178

195179

180+
assume_tac var_table_sinterval_tbl_thm >>
181+
first_x_assum (strip_assume_tac o (Q.SPECL [‘packet_input’,‘(create_mv ^policy_me packet_input)’])) >>
196182

197-
183+
fs[cond1_thm, cond2_thm, cond3_thm]
184+
);
198185

199186

200187
in

0 commit comments

Comments
 (0)