Skip to content

Commit e1583f3

Browse files
committed
Simplify POPLmark proofs
1 parent a1c9659 commit e1583f3

File tree

1 file changed

+7
-39
lines changed

1 file changed

+7
-39
lines changed

case_studies/POPLmark/POPLmark_2B.thy

Lines changed: 7 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -953,28 +953,8 @@ proof -
953953
apply (auto simp: pat.Sb_cong restrict_def)
954954
apply (rule trm.Sb_cong)
955955
apply (auto simp: IImsupp_def SSupp_def restrict_def pat.set_bd_UNIV)
956-
apply (metis (no_types, lifting) card_of_subset_bound mem_Collect_eq subsetI trm.set_bd_UNIV(1))
957-
apply (metis (no_types, lifting) card_of_subset_bound mem_Collect_eq subsetI trm.set_bd_UNIV(2))
958-
subgoal for x1 x2 x3
959-
apply (rule card_of_subset_bound[of _ "PTVars x1 \<union> FTVars x2 \<union> FTVars x3"])
960-
apply blast
961-
using pat.set_bd_UNIV trm.set_bd_UNIV infinite_class.Un_bound by meson
962-
subgoal for x1 x2 x3
963-
apply (rule card_of_subset_bound[of _ "FVars x2 \<union> FVars x3"])
964-
apply blast
965-
using pat.set_bd_UNIV trm.set_bd_UNIV infinite_class.Un_bound by meson
966956
apply (rule trm.Sb_cong)
967957
apply (auto simp: IImsupp_def SSupp_def restrict_def pat.set_bd_UNIV)
968-
apply (metis (no_types, lifting) card_of_subset_bound mem_Collect_eq subsetI trm.set_bd_UNIV(1))
969-
apply (metis (no_types, lifting) card_of_subset_bound mem_Collect_eq subsetI trm.set_bd_UNIV(2))
970-
subgoal for x1 x2 x3
971-
apply (rule card_of_subset_bound[of _ "PTVars x1 \<union> FTVars x2 \<union> FTVars x3"])
972-
apply blast
973-
using pat.set_bd_UNIV trm.set_bd_UNIV infinite_class.Un_bound by meson
974-
subgoal for x1 x2 x3
975-
apply (rule card_of_subset_bound[of _ "FVars x2 \<union> FVars x3"])
976-
apply blast
977-
using pat.set_bd_UNIV trm.set_bd_UNIV infinite_class.Un_bound by meson
978958
by (meson disjoint_iff_not_equal not_in_supp_alt)
979959
qed
980960

@@ -1205,15 +1185,14 @@ binder_inductive step
12051185
apply (auto)
12061186
apply (subst tvsubst_comp)
12071187
apply (auto simp: supp_def[symmetric] intro!: var_class.UN_bound)
1208-
apply (auto simp: ordLeq_ordLess_trans[OF card_of_image] pat.set_bd_UNIV)
12091188
apply (rule trm.Sb_cong)
1210-
apply (auto simp: infinite_UNIV SSupp_trm_restrict restrict_def intro!: trm.SSupp_Sb_bound trm.IImsupp_Sb_bound)
1189+
apply (auto simp: SSupp_trm_restrict restrict_def intro!: trm.SSupp_Sb_bound trm.IImsupp_Sb_bound)
12111190
apply (subst trm.subst)
1212-
apply (auto simp: infinite_UNIV SSupp_trm_restrict restrict_def)
1191+
apply (auto simp: SSupp_trm_restrict restrict_def)
12131192
apply (subst trm.subst)
1214-
apply (auto simp: infinite_UNIV SSupp_trm_restrict restrict_def)
1193+
apply (auto simp: SSupp_trm_restrict restrict_def)
12151194
done
1216-
apply (auto simp: infinite_UNIV intro!: trm.Un_bound trm.set_bd_UNIV)
1195+
apply (auto intro!: trm.Un_bound trm.set_bd_UNIV)
12171196
done
12181197
subgoal for VV l v
12191198
by auto
@@ -1540,21 +1519,16 @@ next
15401519
apply (subst (asm) tvsubst_comp)
15411520
apply (auto 0 0 intro!: cmin_greater) [3]
15421521
apply (metis Int_bound2 PVars_PRec SSupp_trm_restrict nonrep_PRec_lfdelete pat.set_bd_UNIV(2))
1543-
apply (metis Int_bound2 PVars_PRec SSupp_trm_restrict nonrep_PRec_lfdelete pat.set_bd_UNIV(2))
1544-
apply auto
1545-
apply (metis PVars_PRec nonrep_PRec_lfdelete pat.set_bd_UNIV(2))
1522+
apply (auto simp: IImsupp_restrict_bound)
15461523
apply (erule arg_cong[where f="\<lambda>t. typing _ t _", THEN iffD1, rotated])
15471524
apply (rule trm.Sb_cong)
15481525
apply (auto 0 0 intro!: trm.SSupp_Sb_bound trm.IImsupp_Sb_bound pat.set_bd_UNIV) [5]
1549-
apply (metis PVars_PRec nonrep_PRec_lfdelete pat.set_bd_UNIV(2))+
15501526
apply (metis IImsupp_restrict_bound PVars_PRec pat.set_bd_UNIV(2) trm.set_bd_UNIV(1))
15511527
apply (rule refl)
15521528
apply (auto simp: restrict_def nonrep_PRec_def values_lfin_iff)
15531529
subgoal for x P' l'
15541530
apply (rule trans[OF trm.Sb_cong(1) tvsubst_id])
15551531
apply (auto 0 0 simp: restrict_def intro!: cmin_greater)
1556-
apply (metis Int_bound2 PVars_PRec SSupp_trm_restrict nonrep_PRec_lfdelete pat.set_bd_UNIV(2) prems(6))
1557-
apply (metis Int_bound2 PVars_PRec SSupp_trm_restrict nonrep_PRec_lfdelete pat.set_bd_UNIV(2) prems(6))
15581532
apply (cases "l = l'")
15591533
apply simp
15601534
using match_FVars[of \<sigma> P v x]
@@ -1563,21 +1537,15 @@ next
15631537
done
15641538
subgoal for x P' l'
15651539
apply (subst trm.subst)
1566-
apply (auto 0 0) [2]
1567-
apply (metis Int_bound2 PVars_PRec SSupp_trm_restrict nonrep_PRec_lfdelete pat.set_bd_UNIV(2) prems(6))
1568-
apply (metis IImsupp_restrict_bound PVars_PRec nonrep_PRec_lfdelete pat.set_bd_UNIV(2) prems(6)
1569-
trm.set_bd_UNIV(1))
1540+
apply (auto 0 0) [3]
15701541
apply (auto simp: restrict_def)
15711542
apply (cases "l = l'")
15721543
apply (metis lfin_label_inject)
15731544
apply (meson lfin_lfdeleteI values_lfin_iff)
15741545
done
15751546
subgoal for x
15761547
apply (subst trm.subst)
1577-
apply (auto 0 0) [2]
1578-
apply (metis Int_bound2 PVars_PRec SSupp_trm_restrict nonrep_PRec_lfdelete pat.set_bd_UNIV(2) prems(6))
1579-
apply (metis IImsupp_restrict_bound PVars_PRec nonrep_PRec_lfdelete pat.set_bd_UNIV(2) prems(6)
1580-
trm.set_bd_UNIV(1))
1548+
apply (auto 0 0) [3]
15811549
apply (auto simp: restrict_def)
15821550
apply (metis lfin_lfdelete values_lfin_iff)
15831551
done

0 commit comments

Comments
 (0)