Skip to content

Commit c24db64

Browse files
committed
More fixes for changes in HOL
1 parent abb76c0 commit c24db64

8 files changed

+38
-34
lines changed

compiler/backend/passes/proofs/state_to_cakeProofScript.sml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1908,7 +1908,7 @@ Proof
19081908
qexists0 >> reverse $ rw[step_rel_cases]
19091909
>- (gvs[store_lookup_def] >> Cases_on `cst` >> gvs[]) >>
19101910
gvs[state_rel, ADD1] >> rpt $ goal_assum $ drule_at Any >>
1911-
imp_res_tac LIST_REL_LENGTH >> simp[]
1911+
imp_res_tac LIST_REL_LENGTH >> simp[SNOC_APPEND]
19121912
) >>
19131913
(* AtomOp *)
19141914
gvs[application_def, sstep] >>

compiler/backend/passes/proofs/thunk_combine_Forcing_LambdasScript.sml

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1179,7 +1179,7 @@ Proof
11791179
qspecl_then [‘eL’] assume_tac SNOC_CASES >> gs [ADD1] >>
11801180
rename1 ‘SNOC v vL’ >> Cases_on ‘vL’ >> gs []
11811181
>- gs [eval_to_def, dest_anyClosure_def] >>
1182-
gvs [FOLDR_SNOC, FOLDL_APPEND, eval_to_def] >>
1182+
gvs [FOLDR_SNOC, FOLDL_APPEND, eval_to_def, SNOC_APPEND] >>
11831183
rename1 ‘SUC (LENGTH vL) = LENGTH eL’ >>
11841184
first_x_assum $ qspecl_then [‘eL’, ‘Lam v e’, ‘k’] assume_tac >>
11851185
gvs [subst_def, eval_to_def, dest_anyClosure_def] >>
@@ -1209,7 +1209,7 @@ Proof
12091209
qspecl_then [‘eL’] assume_tac SNOC_CASES >> gs [ADD1] >>
12101210
rename1 ‘SNOC v vL’ >> Cases_on ‘vL’ >> gs []
12111211
>- gs [eval_to_def, dest_anyClosure_def] >>
1212-
gvs [FOLDR_SNOC, FOLDL_APPEND, eval_to_def] >>
1212+
gvs [FOLDR_SNOC, FOLDL_APPEND, eval_to_def, SNOC_APPEND] >>
12131213
rename1 ‘SUC (LENGTH vL) = LENGTH eL’ >>
12141214
gs [subst_def, eval_to_def, dest_anyClosure_def] >>
12151215
AP_TERM_TAC >>
@@ -1252,7 +1252,7 @@ Proof
12521252
qspecl_then [‘eL’] assume_tac SNOC_CASES >> gs [ADD1] >>
12531253
rename1 ‘SNOC v vL’ >> Cases_on ‘vL’ >> gs []
12541254
>- (gs [eval_to_def, dest_anyClosure_def]) >>
1255-
gs [FOLDR_SNOC, FOLDL_APPEND, eval_to_def]
1255+
gs [FOLDR_SNOC, FOLDL_APPEND, eval_to_def, SNOC_APPEND]
12561256
QED
12571257

12581258
Theorem eval_to_Apps_Rec_0:
@@ -1315,14 +1315,16 @@ Proof
13151315
Induct using SNOC_INDUCT \\ gs []
13161316
\\ rw [] \\ gs [GSYM LESS_EQ_IFF_LESS_SUC, FOLDL_SNOC]
13171317
\\ rename1 ‘SNOC x eL’
1318+
\\ gvs[SNOC_APPEND]
13181319
\\ qspec_then ‘eL2’ assume_tac SNOC_CASES \\ gvs [FOLDL_APPEND]
1319-
\\ rename1 ‘eL2 ++ [x2]’ \\ gs [SNOC_APPEND]
1320-
\\ dxrule_then assume_tac LESS_EQ_CASES \\ gs [EL_SNOC, EL_LENGTH_SNOC, eval_to_def, EL_APPEND_EQN]
1320+
\\ rename1 ‘SNOC x2 eL2’ \\ gvs[SNOC_APPEND, FOLDL_APPEND]
1321+
\\ dxrule_then assume_tac LESS_EQ_CASES
1322+
\\ gs [EL_SNOC, EL_LENGTH_SNOC, eval_to_def, EL_APPEND_EQN]
13211323
\\ Cases_on ‘eval_to k x2 = INL Diverge’ \\ gs []
13221324
\\ dxrule_then assume_tac eval_to_mono \\ gs [GSYM ADD1]
13231325
>- (‘∃j. ($= +++ v_rel) (eval_to k x) (eval_to (k + j) x2)’
13241326
by (last_x_assum $ qspec_then ‘LENGTH eL2’ assume_tac
1325-
\\ Cases_on ‘eval_to k x = INL Type_error’ \\ gs [])
1327+
\\ Cases_on ‘eval_to k x = INL Type_error’ \\ gs [SF SFY_ss])
13261328
\\ Cases_on ‘eval_to k x’
13271329
>~[‘eval_to k x = INL err’]
13281330
>- (Cases_on ‘err’ \\ gs []
@@ -1333,7 +1335,8 @@ Proof
13331335
\\ impl_tac \\ gs []
13341336
\\ rw []
13351337
\\ last_x_assum $ drule_then assume_tac \\ gs []
1336-
\\ first_x_assum $ irule_at Any)
1338+
\\ first_x_assum $ irule_at Any
1339+
)
13371340
\\ last_x_assum $ qspec_then ‘LENGTH eL2’ assume_tac \\ gs []
13381341
\\ Cases_on ‘eval_to k x2’ \\ gs []
13391342
QED
@@ -1349,9 +1352,9 @@ Theorem eval_to_Apps_arg_Div_combine_rel2:
13491352
Proof
13501353
Induct using SNOC_INDUCT \\ gs []
13511354
\\ rw [] \\ gs [GSYM LESS_EQ_IFF_LESS_SUC, FOLDL_SNOC]
1352-
\\ rename1 ‘SNOC x eL’
1355+
\\ rename1 ‘SNOC x eL’ \\ gvs[SNOC_APPEND]
13531356
\\ qspec_then ‘eL2’ assume_tac SNOC_CASES \\ gvs [FOLDL_APPEND]
1354-
\\ rename1 ‘eL2 ++ [x2]’ \\ gs [SNOC_APPEND]
1357+
\\ rename1 ‘SNOC x2 eL2’ \\ gs [SNOC_APPEND, FOLDL_APPEND]
13551358
\\ dxrule_then assume_tac LESS_EQ_CASES \\ gs [EL_SNOC, EL_LENGTH_SNOC, eval_to_def, EL_APPEND_EQN]
13561359
\\ Cases_on ‘eval_to k x2 = INL Diverge’ \\ gs []
13571360
\\ dxrule_then assume_tac eval_to_mono \\ gs [GSYM ADD1]
@@ -1417,11 +1420,11 @@ Theorem eval_to_Apps_Div_or_INR:
14171420
Proof
14181421
Induct using SNOC_INDUCT \\ gs [FOLDL_SNOC]
14191422
\\ gen_tac \\ gen_tac \\ qspec_then ‘vL1’ assume_tac SNOC_CASES
1420-
\\ gs [GSYM ADD1, FOLDL_APPEND]
1423+
\\ gs [GSYM ADD1, FOLDL_APPEND, SNOC_APPEND]
14211424
\\ rw []
14221425
\\ once_rewrite_tac [eval_to_def] \\ gs []
14231426
\\ first_assum $ qspec_then ‘LENGTH eL’ assume_tac \\ gs [EL_LENGTH_SNOC, EL_APPEND_EQN]
1424-
\\ Cases_on ‘eval_to k x’ \\ gs []
1427+
\\ Cases_on ‘eval_to k x’
14251428
\\ rename1 ‘LIST_REL _ (vL1 ++ [v1])’
14261429
\\ last_x_assum $ qspecl_then [‘vL1’, ‘e’, ‘k’] mp_tac \\ gs []
14271430
\\ impl_tac
@@ -1455,7 +1458,7 @@ Theorem eval_to_Apps_LIST_INR:
14551458
∀eL vL e k. LIST_REL (λe v. ∀j. eval_to (j + k) e = INR v) eL vL
14561459
⇒ ∀j. k ≤ j ⇒ eval_to j (Apps e eL) = eval_to j (Apps e (MAP Value vL))
14571460
Proof
1458-
Induct using SNOC_INDUCT \\ gs [LIST_REL_SNOC, PULL_EXISTS, FOLDL_APPEND, FOLDL_SNOC]
1461+
Induct using SNOC_INDUCT \\ gs [LIST_REL_SNOC, PULL_EXISTS, FOLDL_APPEND, FOLDL_SNOC, SNOC_APPEND]
14591462
\\ rw [] \\ last_x_assum $ drule_all_then assume_tac
14601463
\\ gs [eval_to_def]
14611464
\\ first_x_assum $ qspec_then ‘j - k’ assume_tac

compiler/backend/passes/proofs/thunk_remove_unuseful_bindingsScript.sml

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -554,7 +554,7 @@ Proof
554554
\\ ‘OPTREL clean_rel (ALOOKUP (REVERSE xs) s) (ALOOKUP (REVERSE ys) s)’
555555
by (irule LIST_REL_OPTREL
556556
\\ gvs [LIST_REL_EL_EQN, ELIM_UNCURRY, LIST_EQ_REWRITE, EL_MAP])
557-
\\ gvs [REVERSE_APPEND]
557+
\\ gvs [REVERSE_APPEND, SNOC_APPEND]
558558
\\ IF_CASES_TAC \\ gvs []
559559
\\ gvs [OPTREL_def]
560560
\\ rpt $ dxrule_then assume_tac ALOOKUP_MEM \\ gvs [EVERY_MEM, MEM_MAP, PULL_EXISTS, FORALL_PROD]
@@ -577,7 +577,7 @@ Proof
577577
\\ ‘OPTREL clean_rel (ALOOKUP (REVERSE xs) s) (ALOOKUP (REVERSE ys) s)’
578578
by (irule LIST_REL_OPTREL
579579
\\ gvs [LIST_REL_EL_EQN, ELIM_UNCURRY, LIST_EQ_REWRITE, EL_MAP])
580-
\\ gvs [REVERSE_APPEND] \\ IF_CASES_TAC
580+
\\ gvs [REVERSE_APPEND, SNOC_APPEND] \\ IF_CASES_TAC
581581
\\ gvs [OPTREL_def]
582582
\\ rpt $ dxrule_then assume_tac ALOOKUP_MEM \\ gvs [EVERY_MEM, MEM_MAP, PULL_EXISTS]
583583
\\ last_x_assum $ dxrule_then assume_tac
@@ -611,7 +611,7 @@ Proof
611611
\\ ‘OPTREL clean_rel (ALOOKUP (REVERSE xs) s) (ALOOKUP (REVERSE ys) s)’
612612
by (irule LIST_REL_OPTREL
613613
\\ gvs [LIST_REL_EL_EQN, ELIM_UNCURRY, LIST_EQ_REWRITE, EL_MAP])
614-
\\ gvs [REVERSE_APPEND]
614+
\\ gvs [REVERSE_APPEND, SNOC_APPEND]
615615
\\ rename1 ‘¬MEM v _’ \\ rename1 ‘v = s’ \\ Cases_on ‘v = s’ \\ gvs []
616616
\\ gvs [OPTREL_def]
617617
\\ rpt $ dxrule_then assume_tac ALOOKUP_MEM \\ gvs [EVERY_MEM, MEM_MAP, PULL_EXISTS]
@@ -751,7 +751,7 @@ Proof
751751
\\ qspecl_then [‘MAP (λ(v,e). (v, Recclosure f v)) f’, ‘x’] assume_tac subst_notin_frees
752752
\\ gvs [MAP_MAP_o, combinTheory.o_DEF, LAMBDA_PROD, GSYM FST_THM,
753753
EVERY_MEM, DISJOINT_ALT, subst_funs_def])
754-
>- (gvs [eval_to_def, subst_funs_def, MAP_APPEND, subst_APPEND]
754+
>- (gvs [eval_to_def, subst_funs_def, MAP_APPEND, subst_APPEND, SNOC_APPEND]
755755
\\ IF_CASES_TAC >- (qexists_tac ‘0’ \\ gs []) \\ gs [subst1_notin_frees]
756756
\\ last_x_assum $ qspec_then ‘k - 1’ assume_tac \\ gvs [] \\ pop_assum irule
757757
\\ irule clean_rel_subst
@@ -890,7 +890,7 @@ Proof
890890
by (irule LIST_REL_OPTREL
891891
\\ gvs [LIST_REL_EL_EQN, ELIM_UNCURRY, EL_MAP, LIST_EQ_REWRITE])
892892
\\ gs [OPTREL_def]
893-
>- (qexists_tac ‘j’ \\ gvs [REVERSE_APPEND]
893+
>- (qexists_tac ‘j’ \\ gvs [REVERSE_APPEND, SNOC_APPEND]
894894
\\ IF_CASES_TAC \\ gvs [])
895895
\\ rename1 ‘clean_rel x0 y0’
896896
\\ ‘MEM (s, x0) xs’ by (rpt $ dxrule_then assume_tac ALOOKUP_MEM \\ gvs [])
@@ -899,6 +899,7 @@ Proof
899899
\\ Cases_on ‘x0’ \\ gvs [ok_bind_def, clean_rel_def]
900900
>~[‘subst_funs ys e2’]
901901
>- (rename1 ‘clean_rel e1 e2’
902+
\\ gvs[SNOC_APPEND]
902903
\\ rename1 ‘xs ++ [(v,w)]’
903904
\\ last_x_assum $ qspecl_then [‘subst_funs (xs++[(v,w)]) e1’, ‘subst_funs ys e2’] mp_tac
904905
\\ impl_tac
@@ -919,21 +920,21 @@ Proof
919920
\\ Cases_on ‘eval_to (k - 1) (subst_funs ys e2) = INL Diverge’ \\ gs []
920921
>- (qexists_tac ‘0
921922
\\ Cases_on ‘eval_to k x = INL Diverge’ \\ gs []
922-
\\ dxrule_then (qspecl_then [‘j + k’] assume_tac) eval_to_mono \\ gs [REVERSE_APPEND]
923+
\\ dxrule_then (qspecl_then [‘j + k’] assume_tac) eval_to_mono \\ gs [REVERSE_APPEND, SNOC_APPEND]
923924
\\ IF_CASES_TAC \\ gvs []
924925
\\ Cases_on ‘eval_to (k - 1) (subst_funs (xs ++ [(v,w)]) e1) = INL Diverge’ \\ gs []
925926
\\ dxrule_then (qspecl_then [‘j2 + k - 1’] assume_tac) eval_to_mono \\ gs [])
926927
\\ qexists_tac ‘j + j2’
927928
\\ ‘eval_to (j + j2 + k) x = eval_to (j + k) x’ by (irule eval_to_mono \\ gvs [])
928-
\\ gvs [REVERSE_APPEND]
929+
\\ gvs [REVERSE_APPEND, SNOC_APPEND]
929930
\\ IF_CASES_TAC \\ gvs []
930931
\\ ‘eval_to (j + (j2 + k) - 1) (subst_funs (xs++[(v,w)]) e1)
931932
= eval_to (j2 + k - 1) (subst_funs (xs++[(v,w)]) e1)’
932933
by (irule eval_to_mono
933934
\\ Cases_on ‘eval_to (j2 + k - 1) (subst_funs (xs++[(v,w)]) e1)’
934935
\\ Cases_on ‘eval_to (k - 1) (subst_funs ys e2)’ \\ gvs [])
935936
\\ gvs [])
936-
\\ qexists_tac ‘j’ \\ gvs [REVERSE_APPEND]
937+
\\ qexists_tac ‘j’ \\ gvs [REVERSE_APPEND, SNOC_APPEND]
937938
\\ IF_CASES_TAC \\ gvs []
938939
\\ rpt $ dxrule_then assume_tac ALOOKUP_MEM \\ gs []
939940
\\ last_x_assum $ kall_tac \\ last_x_assum $ kall_tac
@@ -1347,7 +1348,7 @@ Proof
13471348
\\ ‘OPTREL clean_rel (ALOOKUP (REVERSE xs) s) (ALOOKUP (REVERSE ys) s)’
13481349
by (irule LIST_REL_OPTREL
13491350
\\ gvs [LIST_REL_EL_EQN, ELIM_UNCURRY, EL_MAP, LIST_EQ_REWRITE])
1350-
\\ gvs [REVERSE_APPEND] \\ IF_CASES_TAC \\ gs []
1351+
\\ gvs [REVERSE_APPEND, SNOC_APPEND] \\ IF_CASES_TAC \\ gs []
13511352
\\ gs [OPTREL_def]
13521353
\\ qpat_x_assum ‘clean_rel x0 _’ mp_tac
13531354
\\ ‘ok_bind x0’ by (rpt $ dxrule_then assume_tac ALOOKUP_MEM \\ gvs [EVERY_MEM, MEM_MAP, PULL_EXISTS]

compiler/backend/passes/proofs/thunk_split_Forcing_LamProofScript.sml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,7 +1110,7 @@ Proof
11101110
qpat_x_assum ‘LENGTH l3 = LENGTH (FILTER FST (ZIP (bL, REVERSE l)))’ mp_tac >>
11111111
rpt $ pop_assum kall_tac >>
11121112
qid_spec_tac ‘l3’ >> qid_spec_tac ‘bL’ >>
1113-
Induct_on ‘l’ using SNOC_INDUCT >> simp [merge_inside_def, REVERSE_SNOC] >>
1113+
Induct_on ‘l’ using SNOC_INDUCT >> simp [merge_inside_def, REVERSE_SNOC, SNOC_APPEND] >>
11141114
gen_tac >> Cases >> simp [] >>
11151115
IF_CASES_TAC >> simp [merge_inside_def] >>
11161116
Cases >> simp [merge_inside_def]) >>
@@ -1362,7 +1362,7 @@ Proof
13621362
by (Cases_on ‘row’ >> gs [] >>
13631363
rename1 ‘my_function_row _ (h::_)’ >> PairCases_on ‘h’ >>
13641364
gs [rows_of_def, freevars_def] >>
1365-
gs [SUBSET_DEF]) >>
1365+
metis_tac[SUBSET_DEF]) >>
13661366
pop_assum mp_tac >>
13671367
dxrule_then (drule_then mp_tac) SUBSET_TRANS >>
13681368
qpat_x_assum ‘set_of s2 ⊆ set_of s3’ mp_tac >>

typeclass/typing/pure_tcexp_typingPropsScript.sml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1428,8 +1428,7 @@ Proof
14281428
>- (
14291429
first_x_assum $ irule_at (Pos last) >>
14301430
gvs[MAP_MAP_o,combinTheory.o_DEF,LAMBDA_PROD] >>
1431-
first_x_assum $ resolve_then (Pos hd)
1432-
mp_tac APPEND_ASSOC_four >>
1431+
first_x_assum $ resolve_then (Pos hd) mp_tac EQ_REFL >>
14331432
disch_then $ qspec_then `MAP (tshift (LENGTH new)) ts` mp_tac >>
14341433
impl_tac
14351434
>- (
@@ -1460,7 +1459,7 @@ Proof
14601459
last_x_assum drule >>
14611460
ntac 2 (pairarg_tac >> gvs[]) >>
14621461
strip_tac >>
1463-
first_x_assum $ resolve_then (Pos hd) mp_tac APPEND_ASSOC_four >>
1462+
first_x_assum $ resolve_then (Pos hd) mp_tac EQ_REFL >>
14641463
disch_then $ qspec_then `MAP (tshift (LENGTH vars)) ts` mp_tac >>
14651464
impl_tac
14661465
>- (
@@ -1476,7 +1475,7 @@ Proof
14761475
first_x_assum drule >>
14771476
rw[type_ok_def] >>
14781477
dxrule_then irule kind_ok_subst_db_APPEND >>
1479-
irule_at (Pos $ el 2) APPEND_ASSOC_four >>
1478+
irule_at (Pos $ el 2) EQ_REFL >>
14801479
rw[LIST_REL_EL_EQN,EL_MAP] >>
14811480
first_x_assum $ drule_then strip_assume_tac >>
14821481
dxrule_then irule kind_ok_shift_db_APPEND >>
@@ -1934,7 +1933,7 @@ Proof
19341933
first_x_assum drule >>
19351934
rw[type_ok_def] >>
19361935
dxrule_then irule kind_ok_shift_db_APPEND >>
1937-
irule_at (Pos hd) APPEND_ASSOC_four >>
1936+
irule_at (Pos hd) EQ_REFL >>
19381937
simp[]
19391938
)
19401939
>- (

typeclass/typing/typeclass_kindCheckScript.sml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ Theorem kind_wf_cons_types:
235235
Proof
236236
Induct_on `ts` using SNOC_INDUCT >>
237237
rw[cons_types_def,kind_arrows_def,kind_arrows_APPEND,
238-
cons_types_SNOC,LIST_REL_SNOC,PULL_EXISTS] >>
238+
cons_types_SNOC,LIST_REL_SNOC,PULL_EXISTS, SNOC_APPEND] >>
239239
metis_tac[]
240240
QED
241241

typeclass/typing/typeclass_typesPropsScript.sml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ QED
386386
Theorem ty_args_SNOC:
387387
ty_args (Cons t1 t2) = SNOC t2 (ty_args t1)
388388
Proof
389-
simp[ty_args_def,ty_args_aux_SNOC]
389+
simp[ty_args_def,ty_args_aux_SNOC,SNOC_APPEND]
390390
QED
391391

392392
Theorem ty_args_alt:
@@ -573,7 +573,7 @@ Theorem subst_db_ty_args:
573573
| a => MAP (subst_db skip ts) (ty_args t)
574574
Proof
575575
ho_match_mp_tac subst_db_ind >>
576-
rw[subst_db_def,ty_args_alt,head_ty_def] >>
576+
rw[subst_db_def,ty_args_alt,head_ty_def,SNOC_APPEND] >>
577577
TOP_CASE_TAC >>
578578
IF_CASES_TAC >>
579579
rw[]
@@ -599,7 +599,7 @@ Theorem shift_db_ty_args:
599599
MAP (shift_db skip n) (ty_args t)
600600
Proof
601601
ho_match_mp_tac shift_db_ind >>
602-
rw[shift_db_def,ty_args_alt]
602+
rw[shift_db_def,ty_args_alt,SNOC_APPEND]
603603
QED
604604

605605
(******************** Properties of types ********************)

typeclass/typing/typeclass_typingProofScript.sml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3094,7 +3094,7 @@ Proof
30943094
irule_at (Pat `Functions (_::_) _ = _`) Functions_CONS_alt >>
30953095
simp[cons_types_def] >>
30963096
irule_at (Pat `Functions _ _ = Functions _ _`) EQ_REFL >>
3097-
simp[kind_ok,LLOOKUP_THM,EL_APPEND_EQN,specialises_def] >>
3097+
simp[kind_ok,LLOOKUP_THM,EL_APPEND_EQN,specialises_def,SNOC_APPEND] >>
30983098
qrefine `GENLIST TypeVar (LENGTH meth_pred_type0)` >>
30993099
rw[LIST_REL_EL_EQN,kind_ok,oEL_THM,EL_APPEND_EQN] >>
31003100
DEP_REWRITE_TAC[subst_db_sub_tshift_TypeVar] >>
@@ -4103,6 +4103,7 @@ Proof
41034103
first_x_assum drule >>
41044104
simp[Abbr`pred_ty_scheme`,PULL_EXISTS,
41054105
translate_pred_type_scheme_get_method_type] >>
4106+
gvs[SNOC_APPEND] >>
41064107
rw[translate_predicate_def] >>
41074108
simp[ELIM_UNCURRY,SRULE[ELIM_UNCURRY] ALOOKUP_MAP_2] >>
41084109
simp[tcons_to_type_def,cons_types_def] >>

0 commit comments

Comments
 (0)