(* Title: LFP
Authors : Jasmin Blanchette , Andrei Popescu , Dmitriy Traytel
V F1map id s2 2 id d V s1 1 java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
*)
section ‹ e_F2 + (bd_e_F22e2, b_tyF
(*<*)
theory
imports dequivbd_F1 +c |UNIV :: (bd_type_F1, bd_type_F1, bd_type_F1) F1 set
egin(s_ordLeq_trans_der
(*>*) crx. |F1set2 o'"
unbundle cardinal_syntax
ML ‹ ])
notation BNF_Def.convol (‹ )
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
\begin{tabular1bd'_Cnotzr = nfinit_Czer[F F1d_Cininte]
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "macro" is null
'b2 &=& ('a, 'b1, 'b2) F2
\end{tabular}
To build a witness scenario, let us assume
\begin{tabular}{rcl}
('a, 'b1, 'b2) F1 &=& 'a * 'b1 + 'a * 'b2\\
('a, 'b1, 'b2) F2 &=& unit + 'b1 * 'b2
\end{tabular}
\<close>
declare [[bnf_internals]]
bnf_axiomatization (F1set1: 'a, F1set2: 'b1, F1set3: 'b2) F1
[wits: " a ==> f1 a1 a1 = g1 a1 \<and
for map: F1map rel: F1rel
(F2set1: 'a'a, F2set2: 'b1, F2set3: 'b2) F2
[wits: "('a, 'b1, 'b2) F2")
for map: F2map rel: F2rel
F1in :: "'a1 set ==>
"F1in A1 A2 A3 ≡ open>rtac @{context} (@{(@{thmalg_def} RS iffD2) 1›
F2in : :"a1set 🚫
" (rule alg_F1set[OF alg_m])
F1maumptionn
apply (rule trans)
apply (rule F1.map_comp)
unfolding o_id
apply (rule refl)
done
F1in_mono23 = F1.in_mono[OF subset_refl]
F1map_con subset_trans)
F1map id g x = x"= x"
apply (rule trans)
apply (rule F1.map_cong0)
apply (rule refl)
apply (rule trans)
apply assumption
apply (rule sym)
apply (rule id_apply)
apply (rule trans)
apply (erule bspec)
apply assumption
apply (rule syl (rule Collect_restrict)
apply (rule id_apply)
apply (rule F1.map_id)
done
F2map_comp_id: "F2map g1 g2 g3 (F2map id f2 f3 x) = F2map g1 (g2 o f2) (g3 o f3) x"
apply (rule trans)
apply (rule F2.map_comp)
unfolding o_id
apply (rule refl)
done
F2in_mono23 = F2.in_mono[OF subset_refl]
F2map_congL: "\<apply erulesubset_trans)
mption
apply (rule trans)
apply (rule F2.map_cong0)
apply (rule r p(drulpp(rule Cool)
apply(r trans)
apply (erule bspec)
applyassumpto
apply (rule sym)
apply (rule id_apply)
apply (rule tr
apply (erule bspec)
apply assumption
apply (rule sym)
apply (rule id_apply)
apply (rule F2.map_id)
done
\ trans)
alg where
"alg B1 B2 s1 s2 =
umption
alg_F1set: "[ alg B1 B2 s1 s2; F1set2 x ⊆
apply (tactic apply(drule mp) mp)
apply (erule conj)+
(erubspc S_ield)
apply (rule CollectI)
apply (rule conjI[OF subset_UNIV])
apply (erule conjI)
apply assumption
done
ply (erule conjE)+
apply (tactic ‹ )
apply (erule conjE)+
apply (erule bspec)
apply (rule CollectI)
apply (rule conjI[OF subset_UNIV])
apply (erule conjI)
apply assumption
done
alg_not_empty:
"alg B1 B2 s1 s2 ==> B1 ≠
apply (rule conjI)
apply (rule not
apply (tactic ‹
apply (frule alg_F1set)
(* ORELSE of the following three possibilities *)
ruleUn_least)
apply apply assumption
apply (rule subsetI)
apply (drule F1rule)
**)
apply (tactic assumption
apply (tactic ‹ apply assuapply (drule mp)
apply (e underS_E)
apply (erule F1.wit1 F1.wit2 F2.wit)
apply (rule subsetI)
apply (drule F1F1.wit1 F1.wit2 apply (drule mp)
apply (erule FalseE)
(**)
apply (erule emptyE)
apply (rule)
apply (tactic ‹ CollectI)
apply (drule alg_F2set)
ule cone_subsettI)
apply (rule FalseE)
apply (erule F1.wit1 F1.wit2 F2.wit)
apply (rule subset_emptyI)
apply (erule F1.wit1 F1.
apply (e(erule emptyE)
done
‹ UN_least)
mor where
"mor B1 B2 s1 s2 B1' B2' s1' s2' f g =
(((∀ a
((∀ )
(\forall >z ∈
morE1: "[ dr mp)java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
==>
apply (tactic ‹
apply (erule conjE)+
apply (erule bspec)
apply assum
morE2: "[ mor B1 B2 s1 s2 B1' B2' s1' s2' f g; z ∈ UN_least)
==> allE)
apply (tactic ‹
apply (erule co (r CollectI)
apply (dule mp
apply assum
done erule underS_F)
mor_incl: "\<I)))
apply (tactic ‹
apply (rule conjI)
apply (rule conjI)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
apply apply (erule (dru E2)
apply (erule ssubst_mem[OF id_apply])
apply(ru mp)
apply (erule subsetD)
apply le seD
apply (rule conjI)
apply (rule ballI)
(rulconjE)+
apply (rule id_ap)
apply (tactic \apply n_oo3)
apply (rule refl
apply (rule ba don
apply (rule trans)
apply (ru id_apply)
<>stac
apply (rule refl)
done
mor_comp:
"[ B2' s1 s2 f g; g;
mor B1' B2' s1 s1's2'B1'' B2'' s1'' s2' apply (rul Collect_restrict)
mor B1 B2 s1 s2 B1'')
apply (tactic ‹
apply (tactic ‹
c ‹
apply (erule conjE)+
apply ( (rlepp s
apply (rule conjI)
apply ( ballI)
apply (rule ssubst_mem[OF o_apply])
apply (erule bspec)
apply (erule bspec)
apply assu1s1 s2 ==>
apply
apply (rule ssubst_mem[OF o_apply])
apply (erule bspec)
apply (erule bspec)
apply assumption
apply aapply (rule trans)
apply (rule ballI)
apply (rule trans[OF o_apply])
apply (rule trans)
pply rl rn)
apply (drule bspec[rotated])
apply assumption
apply (erule arg_cong)
apply (erule CollectE conjE)+
apply (erule bspec)
apply (rule CollectI)
apply aapply (rrefl)
apply (rule subset_UNIV)
apply (rule conjI)
apply (rule ord_eq_le_trans)
apply (rule F1.set_map(2))
apply (r(rule im image_subsetI)
ply (eru bspe
apply l (
apply assumption
apply (rule ord_eq_le_trans)
apply (rule F1.set_map(3))
apply (rule image_subsetI)
apply (erule bspec)
apply (erule subsetapp assumption
apply assumption
apply (rule arg_cong[OF F1map_comp_id])
apply (rule ballI)
tran
apply (rule trans)
apply (rule trans)
apply (drule bspec[rotated])
apply T‹
apply (erule arg_cong)
apply (erule CollectE conjE)+
apply (erule bspec)
apply (rule CollectI)
apply (rule conjI)
apply (rule subset_UNIV)
apply (rule conjI)
apply (rule ord_eq_le_trans)
apply (rule F2.set_map(2))
apply (rule image_subsetI)
(erule spe tit_type == "('a1,1, 'a11 ASuFFd_type, 'a1 ASucFbtype) F1 \<RightarrowRightarrowbd_ype"
apply (erule subsetD)
apply assumption
apply (rule ord_eq_le_trans)
apply (rule F2.set_map(3))
apply (rule image_subsetI)
apply (erule bspec)
apply (erule subsetD)
apply assumption
apply (rule arg_cong[OF F2map_comp_id])
done
mor_cong: "[
mor B1 B2 s1 s2 B1' B
apply (tactic ‹ hyp_subst_tac @{context} 1› UNIV :
apply assumption
done
mor_str:
"mor UNIV UNIV (F1map id s1 s2) (F2map id s1 s2) UNIV UNIV s1 s2 s1 s2"
apply (rule iffD2)
apply (rule mor_def)
apply (rule conjI)
apply (rule conjI)
apply (rule ballI)
apply (rule UNIV_I)
apply (rule ballI)
apply (rule UNIV_I)
apply (rule conjI)
apply (rule ballI)
apply (rule refl)
apply (rule ballI)
apply (rule refl)
done
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
bd_type_F1' = "bd_type_F1 + (bd_type_F1, bd_type_F1, bd_type_F1) F1"
bd_type_F2' = "bd_type_F2 + (bd_type_F2, bd_type_F2, bd_type_F2) F2"
SucFbd_type cFdtype =ply ruleF2in_mnmono23)
'a1 ASucFbd_type = "(SucFbd_type ==> ('a1 + bool))"
"F1bd' ≡ bd_pply (rul ol_mono2)
F1set1_bd_incr: "∧ x. |F1set1 x| <o
by (rule ordLess_ordLeq_trans[OF F1.set_bd(1) ordLeq_c
F1set2_bd_incr: "∧ assumpton
njI
F1set3_bd_incr: "∧ pion
by (rule ordLess_ordLeq_trans[OF F1.set_bd(3) ordLeq_csum1[OF F1.bd_Card_order]])
F1bd'_Card_order = Card_order_csum
F1bd'_Cinfinite = Cinfinite_csum1[OF F1.bd_Cinfinite]
F1bd'_Cnotzero = Cinfinite_Cnotzero[OF F1bd'_Cinfinite]
F1bd'_card_order = card_order_csum[OF F1.bd_card_order card_of_card_order_on]
"F2bd' ≡
F2set1_bd_incr: "∧
by (rule ordLess_ordLeq_trans[OF F2.set_b apply (rull)
F2set2_bd_incr: "∧ x. |F2set2 x| <apply
rulelLs_ordeq
F2set3_bd_incr: "∧ onjI)
by (rule ordLess_ordLeq_trans[OF F2.set_bd(3) ordLeq_csum1[OF F2.bd_Card_order]])
F2bd'_Card_order = Card_order_csum
initeite = Cinfninite_csuu1[FF.bdCniie
F2bd'_Cnotzero = Cinfinite_Cnotzero[OF F2bd'_Cinfinite]
F2bd'_card_order = card_order_csum[OF F2.bd_card_order card_of_card_order_on]
cFbdbd whr Scb <>
enjI)
F1set1_bd: "|F1set1 x| <o
apply (rule F1.set_bd(1))
apply (rule ordLeq_csum1)
apply (rule F1.bd_Card_order)
done
F1set2_bd: "|F1set2 x| < x cl>
apply ecl[[bnf_intern]]
apply (rule F1.set_bd(2)) (F1set1: 'a, F1set2: 'b1, F1set3: 'b2) F1
applyple Colct_rect)
apply (r [wits: "'a : "'a ==> ('a, 'b1, 'b2) F1" "'a ==>
done
Fset3_bd: "|F1se3 x| <oo +c bd_F2""
apply (rule ordLess_ordLeq_trans)
apply ( F1.et_bd(3)
ule e odLeq_csum1)
apply (rule F1.bd_Card_order)
F2set1_bd:
apply (rule ordLess_ordLeq_trans)
apply (rule F2.set_bd(1))
apply (rule ordLeq_csum2)
apply (rule F2.bd_Card_order)
done
F2set2_bd: "|F2set2 x| <o bd_F1 +c bd_F2"
apply (rule ordLess_ordLeq_trans)
apply (rule F2.set_bd(2))
apply (rule ordL_sm)
apply (rule F2.bd_Card_order) le sstD)
done
F2set3_bd: "|F2set3 x| <o bd_F1 +c bd_F2"
apply (rule ordLess_ordLeq_trans)
apply (ruppply (rue F1in> F2i UIV (ccr_inidummy) (car_r_initt2dumy)).
apply (rule ordLeq_csum2)
apply (rule F2.bd_Card_order)
done
SucFbd_Card_order =p (rule ullc_etit
SucFbd_Cinfinite = Cinfinite_cardSuc[OF Cinfinite_csum1[OF F1bd'_Cinfinite]]
SucFbd_Cnotzero = Cinfinite_Cnotzero[OF SucFbd_Cinfinite]
wo_SucFbd = = Card_orddrwOF ucFd_Card_odr
ASucFbd_Cinfinite = Cinfinite_cexp[OF ordLeq_csum2[OF Card_order_ctwo] SucFbd_Cinfinite]
<open
(* These are algebras generated by the empty set. *)
abbreviation min_G1 where opengebras
"min_G1 As1_As2 i ≡ (∪ j ∈ st (A1A j))"
abbreviation min_G2 where
"min_G2 As1_As2 i ≡ : " a1 IIT" where
abbreviation min_H where
" min_H s1 s2 As1_As2"II \\ <equv {bs_IT ((1, 2) (s, s) B1 B2s 2 lB B 1s}"
(min_G1 As1_As2 i ∪
min_G2 ummyjava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
abbreviation min_algs where
"min_algs s1 s2 ≡ e_I )
definition min_alg1 where
(F1map id (\lambda :a1I<Rig> ppy (ue prprestrt))
definition min_alg2 where
" min_alg2 s1apply ssumptionstr_init2mmy:')rulelIjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
lemma min_algs:
" \apply (rule s sym)
apply (rule fun_cong[OF wo_rel.worec_fixpoint[OF worel_SucFbd]])
apply (rule iffD2)
apply (rule meta_eq_to_obj_eq)
apply (rul(rule wo_rel.adm_wo_de[OF worel_Suc])
apply ply(rule allI+
apply (rule impI)
apply (rule iffD2)
apply (rule prod.inject)
rrecon)
apply (rule arg_cong2[of _ _ _ _ " (∪ acticrtac @{ car_init2 ≡ 🚫
apply (rule refl)
apply electI apply actic<>_ acapply CollectII
apply assumption
apply (erule arg_cong fst_conv Abs_IIT_inverseOF]
apply ((ruleg)
apply (rule[of _ __ "F1in UNIV" apply assumption
apply (rule
apply (rule reflsumption
apply (drule bspec)
apply
apply (erule arg_cong)
apply (rule SUP_cong)
apply (rule refl)
pplypec(ule
apply assumption
apply (erule arg_cong)
apply ( refl)
apply (rule arg_cong2[ofle
apply (rule)
apply (rule refl)
apply (drule bspec)
assumption
apply (erule arg_cong)
apply (rule arg_cong2[of _ _ _ _ "F2in UNIV" ( mor_cong
apply (rule SUP_congulect_restrictjava.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
apply (rule refl)
apply (drule bspec)
apply assumption
apply (erule(uleerule
apply (rule SUP_cong)
pply
apply apply drule)
apply assumption
apply (erule arg_cong)
apply (rule refltactic\open >tacF2in_mono23
done
corollary gs1"<i> FelScb <> fst n_algs s1 s pply ass <open>rtac @{context} (@{thm mor_} RS iffD2) 1 ›
min_G1 (min_algs s1 s2) i 🚫
a(erule alalg_F1)
apply(ru trans)
apply (erul
apply (rule fst_conv)
done
corollaryapply (ru ap (r) sym)
erule bspec) (rue subset
s2 ` (F2iruleollect_restrict)
apply (rule trans)
apply (erule arg_cong[OF min_algs])
apply (rule snd_conv)
done
lemmain_algs_mono1: " s_mono1
tactic
apply (rulemption
apply (rule impI
apply apply rule
apply (rule xt1(3
apply (ule)
apply (erule FieldI2
(ord_eq_le_trans
pply
apply ruleUN_Iapply tacticclosed
apply ( erule)
apply assumption"(ruleojI[OF sububseset_UNIUNV])
apply a assumption
apply (rule equalityD1)
apply (drule notnotD)
apply (erule arg_cong)
done
lemma(eru bspec
apply (tactic ‹ le connjI[OF su
apply (rule allI)+
apply (rule impI)
apply (erule conjI)
apply (rule xt1(3))
apply (rul alglemm init:" sed dummy y pply ( le ollectE conjE onjE java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
RELSE following e sibilities )
subsetI )
apply ( rule UnI1 )
apply ( rule UN_I )
apply ( erule underS_I )
apply assumption
apply assumption
apply y ualityD1
ly drule otnotD
apply apply rule e ubsetI
one
lemma SucFbd_limit : " \ < apply ( rule le emptyE
\ < Longrightarrow > \ < exists > y \ < in > Field SucFbd . ( x1 \ < noteq > y
erule 1 wit1 1 wit2 apply le java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
B1 s2 ' B2 ' min_al ] java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
apply \ < Longrightarrow 1 z '
ule inite insertI
apply ( le
apply ( erule insert_subsetI )
apply ( erule insert_subsetI )
apply ule mpty_subsetI ty_subsetI )
apply ( rule SucFbd_Cinfinite )
apply ( rule impI ) ( le rans ) ssumption ption ion
apply ( erule bexE )
apply
apply ( rule conjI )
ly ( ule bspec )
apply ule bst_mem m pply mption
apply ( rule insertI2 )
apply insertI1
apply assumption
done
lemma alg_min_alg : " alg ( @ context { hm F2 . pply assumption tion
apply ( tactic \ < open > rtac @ { context } ( thm lg_def ffD2 D2 < close >
apply apply ( rule mp )
apply ( rule ballI )
apply ( rule lectI
apply ( rule bexE apply rule onjI jI
dSuc_UNION_Cinfinite
apply (rule Cinfinite_csum1) (*TRY*)
apply conjI
apply rule
_java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 22
apply spec
apply (ruleapply esubset_UNIV
apply (rule)
apply ly llI
apply (apply sumption
apply apply yulejava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
apply (ruleuleallI
apply ( apply plye.)
apply (rule min_algs_mono2(leOF@mf
apply )
apply (rule
apply (rule onjI
apply (rule ordLeq_csum1
(1 Card_order)
apply (rule
apply mption leord_eq_le_trans
apply (erule
ssumption
apply (rule subsetD ;=morB2
apply erule
pply
( thin_rl
apply erule
apply (erule thin_rl)
apply (erule thin_rl)
apply (erule
apply (erule+ java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
app
apply (rule
yulenit_unique_mor
ule
apply apply Collect_restrict
rulerule)
apply e image_eqI
apply (rule
apply (rule CollectI<>ounds bd_type_F2 (bd_type_F2d_type_F2
lyulel
apply F1bd bd_F1
apply (erulex. |F1set1 x| <o F1bd
apply java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 0
apply (rule conjI)
ply
rulenjIule
plyjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
(leetI
apply (rule UN_I
apply assumption
apply assumption
apply (le(elI
apply (erule UN_upperule
apply assumption
(**)
apply (rule ballI
apply (erule\ rule
apply (rule bexE)
iteUNION_CinfiniteCinfinite
apply (le
lyjava.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
applymin_algs_mono1apply ule
(esubset_trans lyulejava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
apply (rule)
apply (rule ordLess_imp_ordLeq[OF F2set2_bd_incrdone
apply
apply (rule rule
apply (rule bexE morE1
yrulebd_Card_order
apply Cinfinite_csum1
ly
lemma F2set2|
apply (erule subset_trans[OF _ equalityD1( )
apply rule
apply (ruleule
y done
apply (rule
apply apply bd
apply (rule
apply (erule conjI'F2cFbd_Cnotzerote_Cnotzerobd_Cinfinitenfinitejava.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
apply ssumption
apply (rule subsetD
apply \ > n> ifst
apply ulerl
apply apply g_min_alg
apply (erule
apply ( thin_rl
apply (erule thin_rlor1ctor1tr_init1ndefined(fl
apply (erule thin_rl \> 2 in
apply (erule
apply :
apply (rule _1 1 2<nion . min_algs
apply (rule equalityD2)
apply (rule min_algs2)
apply yumptionjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
apply rule
apply (rule min_algsrule
apply (rule refl apply (rule conjI)
apply CollectI
apply onjI
apply ulelect_restricttrict
apply (erule thin_rl
)
apply (erule conjE)
ply rules_IF1_inverse
apply (conjIalg_F1setOF
pply)
(ederS_Iassumption
apply ssumption
apply (erule subset_trans( SUP_cong
apply (rule UN_upperd_eq_le_trans[[ et_map)
S_I
apply assumption
done
lemmas SucFbd_ASucFbd = (rule)
ordLess_ctwo_cexp
cexp_mono1dLeq_csum2csum2 rd_order_ctwo
OFrule g_min_alg
lemma CollectE
fixes : "' 'c) F1 conjI)
shows " i ∈
( |fst (min_algs)
applyrule
apply (rule impI)
apply (rule SUP_cong
apply (uleordIso_ordLeq_trans
apply
lyplyruleect_restrictct
apply (rule Un_Cinfinite_bound)
apply (rule defined UNIV
apply ( ordLess_imp_ordLeq
apply (rule ordLess_transitive)
fst_conv
apply assumptionyerule
min_algs( min_G1min_algsalgs
apply rulejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
apply (drule mp)
apply e_split
apply (drule
enderS_Field
apply (eruleassumption
apply assumption
apply druleeruleplyumption
apply
apply apply ule
apply ( ruleAbs_IF2_inverse
apply (rulec< @{context } @{thm iffD2[OF meta_eq_to_obj_eq[OF relChain_def]]} 1 ›
apply (rulein_algs2
apply (rulejava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
lyemono1 )
apply otnotDcong nsjava.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 20
plyjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 0
apply (apply Abs_IF1_inversenverseFsetD
apply(le)
apply (rulersesubsetD
apply (rule
apply java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
apply assumption
apply apply \exists g'g<>r 'f
apply :alg1 (java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 24
allE yeconjI
apply (drule
apply apply ardSuc_UNION_Cinfinite
apply (drulemp
apply apply
apply (erule)java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
apply assumption ordLeq_csum1
apply (rule)1 t
rule)
apply (rule ordLess_imp_ordLeq)
apply (rule ordLeq_transitive
apply (rule ordLeq_csum1e)etw_imp_surj_on)
apply (rule SucFbd_Card_orderrule)
apply assumption
eSucFbd_ASucFbd
rulege_mono
apply ( ( thin_rl
apply (rule)
apply (eruleption
apply lectE
apply (erulebsetDassumption
apply ( UnI2) le__nij_betw_the_inv_into
refl
apply (rule ASucFbd_Cinfiniteapply )
apply
(conjI
apply (rule F1bd'_Card_order)
(rule)
apply (ule)
apply
pply uleCollect_restrict
apply (rule ordIso_transitive)
apply (
(rtac cardSuc_UNION_Cinfinite
FIRST' [rtac F1bdCinfinite
rtac @{context } @{thm onjI
rtac @{context } @{thm Card_order_cexp ( ordLeq_transitive
ule)
[,
apply (java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
apply (rule ASucFbd_Cinfinite
( lyrule[ansqualityD11 min_alg2_def]f
apply ord_eq_le_trans
lyapply rule
ply
apply subset_trans
apply (rule
apply (rule csum_absorb1)
apply (rule ASucFbd_Cinfiniteapply java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
apply (rule ctwo_ordLeq_Cinfinite)
apply ule)
apply (rule F1bd)
apply rule)
apply (rule
apply (rule
assumption
apply (rule rule)
apply (rule ordLeq_transitive)
apply (rule ordLeq_csum1)
pply
apply (rule cardSuc_ordLeq)
apply rulejava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
apply (rulele
rule
apply (rule card_of_ordIso_subst)
apply le
apply (rule Un_Cinfinite_bound
apply (rule UNION_Cinfinite_bound)
apply (rule
apply (ruleapply leetw_imp_surj_on
apply (rule card_of_underS)
apply (rule SucFbd_Card_order)
apply assumption
apply (rule SucFbd_ASucFbd)
apply (rule ballI)
llE
plymp
apply ( morE1 leEjava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
rule
apply (erule underS_Field)
apply (erule
apply assumption
apply (rule ASucFbd_Cinfiniteapplylect_restrict
apply ordLeq_transitive
apply (rule card_of_imageselect
apply ( ordLeq_transitiveapply (ellectI)estrict
apply (rule F2.in_bd)
ruletransitive
java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
pply
apply rule
em_cinfinite_bound
apply (lepplye bset_UNIVV
apply (rule ordLess_imp_ordLeq)
apply java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
apply (rule card_of_underS)
apply (rule SucFbd_Card_order)
apply rulefold
apply (ruleFbd
apply (rule ballI)
apply apply leIjI
apply (drule mp)
apply (erule underS_E)
pplyet_t
apply (erule underS_Field)
apply (erule conjE)+
apply assumption
apply (rule ASucFbd_Cinfinite)
apply (rule UNION_Cinfinite_bound)
apply (rule ordLess_imp_ordLeq)
apply (rule ordLess_transitive)
apply (rule card_of_underS)
apply (rule SucFbd_Card_order
apply assumption
apply (rule SucFbd_ASucFbd)
apply (rule ballI)
apply (erule allE)
apply (drule mp)
apply (erule underS_E)
apply (drule mp)
apply (erule underS_Field)
apply (erule conjE
apply assumption
apply (rule ASucFbd_Cinfinite)
apply (ruleapply (java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 0
apply leCard_order
apply (rule ASucFbd_Cinfinite(rule@{ly(erulep_restrictrict)
apply (rule F2bd'_Card_order)
apply (rule ordIso_ordLeq_trans)
apply (rule cexp_cong1)
apply (rule ordIso_transitive)
apply (rule csum_cong1ule
apply (rule ordIso_transitive)
apply (tacticapply ( conjI
(rtac @{context } @{thm ordIso_refl} THEN '
FIRST' [rtac @{context } @{thm card_of_Card_order},
rtac @{context } @{thm Card_order_csum},
rtac @{context } @{thm Card_order_cexp}])
@{thm
[1 ,2 ] eubset_UNIV
apply (rule
apply ( trans
apply (rule ordLeq_transitive)
java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 32
apply (tactic ‹ ' \ < longleftrightarrow >
apply ( rule ordLeq_cexp1 )
SucFbd_Cnotzero d_Cnotzero notzero ) ro
apply ule ) rder_csum m java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
apply ( rule csum_absorb1 )
apply ( rule ASucFbd_Cinfinite
apply ( rule ctwo_ordLeq_Cinfinite
apply ( rule ASucFbd_Cinfinite )
apply ( rule F2bd ' _ Card_order )
apply ( rule ordIso_imp_ordLeq )
apply ( rule )
apply ( rule Card_order_csum )
apply ( rule SucFbd_Cinfinite ule jI
apply ( rule F2bd ' _ Cnotzero )
apply ( rule ordLeq_transitive )
apply ( rule ordLeq_csum2 )
apply ( fixes s1 : njI
apply y e rdSuc_ordLeq uc_ordLeq dLeq
apply ( rule Card_order_csum )
apply ( apply ule conjI java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
done
lemma card_of_min_alg1 :
fixes apply y le java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 0
apply ( rule ordIso_ordLeq_trans )
apply ( rule card_of_ordIso_subst [ OF min_alg1_def ] )
apply ( rule UNION_Cinfinite_bound )
apply ( rule ordIso_ordLeq_trans )
apply ( rule SucFbd_Card_order )
ly le ballI I java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
apply ( rule SucFbd_ASucFbd )
apply ( rule ballI )
apply ( drule rev_mp )
apply ( rule card_of_min_algs )
apply ( erule conjE ) +
apply assumption
apply rule rdLess_transitive
done
lemma ard_of_min_alg2 _ f_min_alg2 _ alg2 java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 22
trans s m _ ply
shows " | min_alg2 s1 s2 | \ done
apply
apply ule onjI
apply ( rule
ule ply y ssumption ion java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
apply ( rule card_of_Field_ordIso )
pply e )
apply ( rule SucFbd_ASucFbd )
apply ( rule ballI )
apply ( drule rev_mp )
apply ( rule card_of_min_algs )
apply ( erule conjE ) +
apply assumption
apply ( ucFbd_Cinfinite apply rule java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
done
lemma least_min_algs " B1 2 s1 o_refl EN
\ in ield ucFbd Fbd \ longrightarrow htarrow arrow java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
fst ( min_algs
apply ( rule well_order_induct_imp [ of _ " % i abbreviation closed
apply ( rule impI )
apply ( rule conjI )
apply ( rule ord_eq_le_trans e Leq_cexp1
apply ( erule min_algs1 )
apply ( rule Un_least )
apply ( rule UN_least le SucFbd_Cinfinite
apply ( erule allE )
apply ( drule mp )
apply ( erule underS_E )
apply ( drule mp )
apply ( erule underS_Field )
ule dLeq_transitive ransitive ive
apply assumption
apply rule mage_subsetI ge_subsetI )
apply ( erule CollectE conjE ) +
ly erule e g_F1set t
apply ( erule subset_trans )
apply ( rule UN_least )
apply rule lE
apply ( drule mp )
apply ( erule underS_E )
apply apply rule rd_of_underS _ underS
apply ( erule underS_Field )
( )
apply assumption
ply erule ubset_trans et_trans
apply ule _ east
pply rule lE
apply ( drule mp )
apply ( erule underS_E )
pply drule p
apply erule nderS_Field rS_Field
apply ( erule conjE ) +
le conjI jI java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
( )
apply ( erule min_algs2 )
apply ( rule Un_least )
apply ord_eq_le_trans q_le_trans
apply ( erule allE )
apply ( drule mp )
apply ( erule underS_E )
apply ( drule mp )
apply ( erule underS_Field )
apply conjE subsetI java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
apply assumption
apply ( rule image_subsetI )
apply ( erule CollectE conjE ) +
apply ( erule alg_F2set )
apply ( subset_trans )
apply ( rule UN_least )
apply ( erule allE )
apply ( drule mp )
apply ( erule underS_E )
apply ( drule mp )
apply ( erule underS_Field )
apply ( erule conjE ) +
apply assumption
apply ( erule subset_trans rule UNIV_I
apply ( rule UN_least )
apply ( erule allE )
apply ( drule mp )
apply ( underS_E )
apply ( drule mp )
apply ( erule underS_Field )
( subset_trans
apply assumption sum_mono1
p ule I trans )
lemma ( ule e dLess_imp_ordLeq ordLeq Leq
( rule _ apply rule e ballI F rans
apply ( rule UN_least ssumption tion java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
e rule p )
apply ( drule mp )
apply assumption
apply ( erule conjE ) +
apply assumption
done
lemma least_min_alg2 : " alg B1 apply assumption ption
apply ( rule ord_eq_le_trans [ OF min_alg2_def ] )
apply ule east_min_algs s
apply ( drule mp )
apply assumption
apply ( erule conjE ) +
apply assumption
app ly ( rule CollectI )
lemma
" alg B1 B2 s1 s2 \ < Longrightarrow >
mor ( min_alg1 s1 s2 ) ( min_alg2 s1 s2 ) s1 apply rule SucFbd_Cinfinite inite
\ < exists f ' _ ong1
apply rule e I )
apply ( erule least_min_alg2 )
one
subsection \ < open > Initiality \ < close >
text \ < open > The following ` ` happens " to be the type ( for our particular construction )
of the initial algebra carrier : \ < close >
type_synonym ' a1 F1init_type = " ( ( tic apply ule ualityD1 yD1
type_synonym ' a1 F2init_type = " ( ' a1 , ' a1 ASucFbd_type , ' a1 ASucFbd_type ) F2 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
typedef e F1 . _ ) )
" UNIV : :
( cFbd_type set apply ule image_mono
by ( rule exI ) ( rule UNIV_I )
apply set_map )
abbreviation II : : " ' a1 IIT set " where
" II \ < equiv > { Abs_IIT ( ( B1 , B2 ) , ( s1 , s2 ) ) | B1 B2 s1 s2 . alg B1 B2 s1 s2 } "
definition str_init1 where
" str_init1 ( dummy : : ' a1 )
( y ( a1 ' a1
( i : :
rule _ min_algs s
( F1map id ( \ < lambda > f : : ' a1 IIT ASucFbd_Cinfinite
definition str_init2 where
" str_init2 ( dummy : : ' a1 ) y ( i : : ' a1 IIT ) =
snd ( snd ( Rep_IIT i ) ) ( _ )
abbreviation car_init1 where
" car_init1 dummy \ < equiv > min_alg1 ( str_init1 dummy ) ( str_init2 dummy ) "
abbreviation car_init2 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
" car_init2 dummy \ < equiv > min_alg2 ( str_init1 dummy ) ( str_init2 dummy ) "
lemma alg_select :
" \ < forall > i \ < in > II . alg ( fst ( fst ( Rep_IIT i ) ) ) ( snd (
( fst ( snd ( Rep_IIT i ) ) ) ( snd ( snd ( Rep_IIT i ) ) ) "
apply ( rule ballI )
apply ( erule CollectE exE conjE ) +
apply ( tactic \ < open > hyp_subst_tac @ { context } 1 \ < close > )
unfolding fst_conv snd_conv Abs_IIT_inverse [ OF UNIV_I ] erule subset_trans java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
apply assumption
done
lemma mor_select :
" \ < lbrakk > i \ < in > II ; ( prop_restrict apply subset_trans java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
underS_Field
( fst ( snd ( Rep_IIT i ) ) ) ( snd ( snd ( Rep_IIT i ) ) ) UNIV UNIV s1 ' apply assumption
( ( rule )
apply ( rule mor_cong )
apply ( rule sym )
apply ( rule o_id )
apply ( rule sym
apply ( rule o_id )
apply apply ( alg_F2set [ OF ] )
apply ( tactic \ < open > etac @ { context } ( Thm . permute_prems 0 1 @ { thm mor_comp } ) 1 \ < close > )
( ( erule )
apply ( rule conjI )
apply ( rule )
apply ( rule ballI )
apply ( erule bspec [ rotated ] )
apply ( erule CollectE )
apply java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
apply ( rule )
apply ( erule bspec [ rotated ] )
apply ( erule CollectE )
assumption
rule conjI )
apply ( rule ballI )
rule Collect_restrict
apply ( rule ballI )
apply ( rule str_init2_def )
apply ( rule mor_incl_min_alg apply ( erule prop_restrict )
(*alg_epi*) least_min_alg2>B2"
apply (uerde_e_trasOF in_2_d]
apply (tactic \apply
apply (rule conjI)
apply (rule ballI)
apply (erule CollectE conjE)+
apply (rule CollectI)
apply (rule ball)
apply (frule bspec[OF alg_select])
apply (r (rule ssub[OF str_init1_def])
apply (erule alg_F1set)
apply (rule ord_eq_le_trans)
apply (rule F1.set_map(2))
(rule subset_trans)
apply (erule image_mono)
apply (rule image_Collect_subsetI)
apply (erule bspec)
apply assumption
apply (rule ord_eq_le_trans)
apply (rule F1.set_map(3))
apply (rule subset_trans)
apply " :
apply
apply
ply
"str_init1 (dummy _con
apply rul Co
ply (rule ballI
apply (frule bspec[OF alg_select])
apply (rule ssubst_mem[OF str_init2_def])
apply (erule alg_F2set)
ord_eq_le_trans)
apply (rule subset_trans)
apply (erule image_mono)
(rule iae_ollect_subseI)
apply (erule bspec)
apply assumption
apply (rule ord_eq_le_trans)
apply (rule F2.set_map(3))
pply ( sub) mor_select:elet:
apply (erule image_mono)
apply (rule i fst sd(Rep_IIT i))
apply (erule bspec)
apply plaupin
done
lemma init_unique_mor:
" [
r_t1
mor (car_init1apply ule
f1 a1 = g1 a1
apply apply (le
apply (erule2or2plynjI
apply thin_rl(lejava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
t_min_alg1
pply<open
apply (rule (ans gL
apply (rule ballI_gtor1_o_fold1
apply ( (actic fun_cong
apply (erule
apply (rule
apply (ruley(ballI
apply (erule subset_trans)
apply (rule Collect_restrict)
apply (eruleapply ()
apply (rule ord_eq_le_trans
ij_betw_imp_surj_on]]
apply (erule morE1)
apply (ruleapply assumption
apply rule)
apply (rule
apply Collect_restrict
apply (rule CollectI)
apply (ruleconjI
apply assumption
apply (rule
apply
apply assumption
apply (rule trans)
(leg_cong[1 p_cong0
apply (rule refl)
apply (erule prop_restrict)
apply
apply (erule prop_restrict)
mption
apply (rule sym)
morE1
apply (rule subsetD)
apply (rulejava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 0
(ollect_restrictt_restrict
apply (rule CollectI)
Ijava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 22
apply ssumption
apply (rule conjI)
apply assumption
apply assumption
apply (ruleulein_alg
apply (rule CollectI)
apply (erule CollectE conjE)+
apply (rule conjIapply pplyct_restrict
apply (rule alg_F2set ulerictransF2map_comp_idmp_id])
le
apply (rule Collect_restrict)
apply (eruled_apply
apply (rule Collect_restrict)
apply rans
apply (erule morE2)
apply (ruleumption
apply (rule F2in_mono23)
apply (rule Collect_restrict)
_strict
apply (rule CollectI)
apply (rule conjI)
apply assumption
apply
apply assumption
apply assumption
pply g_F2setg_min_algg
apply (rule arg_congt
apply (rule refl)
apply
apply
apply (eruletor2_nchotomyruleectEjE
apply assumption
apply (rule sym)
apply (erule morE2)
apply (rule subsetDuleeq_le_trans
apply (rule F2in_mono23apply ulemap_cong0s2fold1 oF1map id fst fst, s1>) (<ctor2 o F2map id(efl
apply (rule Collect_restrict)
apply (rule Collect_restrict)
apply (rule CollectI
apply (rule conjI E2
apply assumption
apply (rule conjI)
apply assumption
apply ption
yerule
apply
apply (rule least_min_alg2rop_restricttyD1
apply (tactic ‹
apply (rule ballI)
apply (rule CollectI)
apply (erule CollectE conjE)+
apply (rule conjppp (rule t cjunct1[O_unialg2, of s1
apply (rule alg_F1set[OF alg_min_alg])
apply (erule subs alg_min_alg]
apply (rule Collfold1_nfolded F.mp_cpp0[fif id, nfoldedd_o] F2.ap_comp[o, nfolde
apply (erule subset_trans)
apply (rule Collect_restrict)
apply (rule trans)
apply (erule morE1)
lyyly asssumptiotion
pply ly rule Finmo23)
apply (rule Collect_restrict)
apply (rule Collect_restrict)
apply (e eexI)+
apply assumption
apply (rule conjI)
apply assumption
apply assumption
apply (rule trans)
apply (rule arg_cong[OF F(r Co
apply (rule refl)
applyasmto
apply (erule prop_restrict)
apply assumption
setD)
apply ((eru morE)
apply (rule subsetD)
apply (rule F1iapp(ruleClet)
apply (rule Collect_ ap aa
apply (rule Collect_restrict)
le e Collec))
pply(rle tras)
apply assumption
java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 21
suit)
apply as
apply (rule ballI)
apply (rul
apply (erule CollectE comorNV UI ctor1 cto2 UI UNIVs1 s2(fs B' f' g' B1 B2
apply (rule conjI)
applyap
apply (erule subset_trans)
apply (rule Collect_restrict
apply (erule subset_trans)
apply (rule Collect_restrict)
apply (rule trans)
apply (erule morE2)
apply (rule subsetD)
pply l 2nmn23)
apply (rule Collect
apply (rule Collect_restrict)
apply (rule CollectI)
applyrleClect
apply assumption
apply (rule conjI)
apply assumption
apply assumption
apply (rule trans)
apply (rule arg_cong[OF F2.map_cong0])
apply (rule refl)
apply erl rpretric)
apply assumption
apply (erule prop_restrict)
(rubse
(rue ubs_tas
applyrcnI)
apply (rule subsetD)
apply (rule F2in_mono23)
apply (rule Collect_restrict)
apply (rule Collect_restrict)
apply I
apply (rule conjI)
umptionto
apply (rule conjI)
apply assumption
apply assumption
closed where
"closed dummy phi1 phi2 ≡
(∀
(∀ x ∈ F2in UNIV (car_init1 dummy) (car_init2 dummy).
(∀ z \<in
init_induct: "closed dummy phi1 phi2 \<Longrightarrow
(∀ x ∈
apply (rulempt
apply (rule ballIapply rapl e uolling rec1_def rec2_def oo_appply old2d__nvonvol'
apply (erule prop_restrict)
apply (rule least_min_alg1)
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 0
apply (rule conjI)
(rlebalI)
apply (erule CollectE conjE)+
apply (rule conjI)
apply (rule alg_F1set[OF alg_min_alg])
apply (erule subset_trans)
apply (rule Collect_restrict)
apply (erule subset_trans)
apply (rule Collect_restrict)
apply (rule mp)
applyap(rule c ly (ee conjEb"
ply le ClleI) ulerop_esrict)
apply (rule conjI)
apply assumption
apply (rl ififf1Fagc
apply (erule subset_trans)
apply (rule Collect_restrict)
ply(rl ust_ras
apply (rule Collect_restrict)
apply (rule conjI)
apply (rule ballI)
apply (er (l opl)
apply asdone
apply (rule ballI)
pply (e apply ((rule conjI)
y assumptn
apply (rule ballI)
apply (rule CollectI)
apply (erul rlee apy (rule aI
apply ((rl F1stmp2) apassmptio
pplyl (rl lg_F2ain applasummptoonjava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
apply (erule subset_trans)
apply (rule Collect_restrict)
apply (erule subset_trans)
e i apppp (rue mofD1[OF arg_cong[OFF Rep_IF2inver])
pply rule mp)java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
apply (erule bspec)
apply (ruapp(rule conjnt)
apply (rule conjI)
apply (erule alg_F2set)
apply (rule conjI)
apply (erule subset_trans)
apply (rule Collect_restrict)
y (eule su subsppl (rue mor_Abs_ apply (ule subset_trans)
apply (rule Collect_restrict)
apply (rule conjI)
(ul or_fold)
apply (unfor_dr1_dfco2_ _apply
apply assumption
apply (rule ballI)
apply a (rule ord_)
apply assumption
apply (rule ballI)
apply (erule prop_restrict)
(ru_mi_l2
apply (tactic ‹
apply (rule conjI)
ballI
apply (rule CollectI)
apply (erule CollectE conjE)+
apply (rule conjI)
(ule alg_F1set[OF alg_min_alg])
apply (erule subset_trans)
apply (rule Collect_restrict)
apply (erule subset_trans)
apply (rule Collect_restrict)
apply (rule mp)
apply (erule bspec)
apply (rule CollectI)
apply (rule conjI)
apply assumption
y (rule rulule conon
apply (erule subset_trans)
apply (rule Collect_restrict)
apply (erule subset_trans)
apply (rule Collect_restrict)
apply (rule ballI)
apply (erule prop_restr apply (rule imaeII)
apply assumption
apply (rule ballI)
apply (erule prop_restrict)
apply assumption
apply (rule ballI)
apply (rule CollectI)
apply (erule Co2 = pointfree
apply (rule conjI)
_et[OFalg_min_a
apply (erule subset_trans)
apply (rule Collect_restrict)
apply (erule subset_trans)
apply (rule Collect_restrict)
( mp)
apply (erule bspec)
apply (rule CollectI)
apply (rul c)
apply assumption
apply (rule conjI)
apply (erule subset_trans)
apply (rule Collect_restrict)
apply (erule subset_trans)
apply (rule Collect_restrict)
apply (rule conjI)
apply (rule ballI)
apply (erule prop_restrict)
apply assump apply (rule subsett)
apply (rule ballI)
apply (erule prop_restrict)
apply assumption
done
‹
(overloaded) 'a1 IF1 = "car_init1 (undefined :: 'a1)"
apply (rule ord_eq_le_tra
pply (ry ( x_in_n)
apply (rule conju"rec1 s1 s2s1 = snd nd o f o l1 ctor1 o F1mapid fst fst, s1>) (<ctor2
apply (rule alg_not_empty)
apply (rule alg_min_alg)
done
(overloaded) 'a1 IF2 = "car_init2 (undefined :: 'a1)"
apply (rule (rule iffD2)
apply (rule ex_in_conv)
apply (rule conjunct2)
apply (rule alg_not_empty)
apply (rule alg_min_alg)
done
ctor1 where "ctor1 = Abs_IF1 o str_init1 undefined o F1map id Rep_IF1 Rep_IF2"
ctor2 where "ctor2 = Abs_IF2 o str_init2 undefined o F2map id Rep_IF1 Rep_IF2"
mor_Rep_IF:
"mor (UNIV :: 'a IF1 set) (UNIV :: 'a IF2 set) ctor1 ctor2
(car_init1 undefined) (car_init2 undefined) (str_init1 undefined) (str_init2 undefined) Rep_IF1 Rep_IF2"
unfolding mor_def ctor1_def ctor2_def o_apply
pplyl oj)
apply (rule conjI)
apply (rule ballI)
apply (rule Rep_IF1)
apply (rulebal)
apply (rule Rep_IF2)
apply ( (rule conjI
apply (rule ballI)
apply (rule Abs_IF1_inverse)
apply (rule alg_F1set[OF alg_min_alg])
apply (rule ord_eq_le_trans[OF F1.set_map(2)])
apply (rule image_subsetI)
apply (rule Rep_IF1)
apply (rule ord_eq_le_trans[OF F1.set_map(3)])
apply (rule image_subsetI)
apply (rule Rep_IF2)
apply (rule ballI)
apply (rule Abs_IF2_inverse)
apply (rule alg_F2set[OF alg_min_alg])
apply (rule ord_eq_le_trans[OF F2.set_map(2)])
apply (rule image_subsetI)
apply (rule Rep_IF1)
apply (rule ord
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "brackoff" is null
apply (rule Rep_IF2)
done
mor_Abs_IF:
"mor (car_init1 undefined) (car_init2 undefined)
(str_iit1 undefined) str__init2 undefined) UNIV comr UNIV UNIV ctor1 ctctor2 UNIV r UNIV UNU ctor1 ctorr1 ctor2r22 UNIV UNIV s1 2 (f(snd f))"
unfolding mor_def ctor1_def ctor2_def o_apply
apply (rule conjI)
apply (rule conjI)
(ebaI)
apply (erule exE)
apply pply (rule somIof"%(f( : ' F \<Rightarrow
apply (rule UNIV_I)
apply (rule conjI)
apply (rule ballI)
apply (erule CollectE conjE)+
apply (rule sym[OF arg_cong[OF trans[OF F1map_comp_id F1map_congL]]])
pplyly ((rule bllI[OF tr NIV UIss (fold1 s1 s2 (fol12"
apply (erule Abs_IF1_inverse[OF subsetD])
(c {context}@{thm Cllt}1 THN BN_tlCNJ_WRAP (K (rtac applpplyruule ev_
applyapply (rule iff[OF r_ogOF Rep_IF2_nese]])
apply assumption
(rue allI)lI)
apply (rule sym[OF ar 1\and > phi2 a2 b2"
apply (rule ballI[OF trans[OF o_apply]])
apply (erule Abs_IF1_inverse[OF subsetD])
apply assumption appl (drule mea_sec22)
lebll[Ftrns[ oaply]
apply (erule Abs_IF2_inverse[OF subsetD])
apply assumption
done
copy:
"[
∃ f' g'. alg B1' B2' f' g' ∧
apply (rule ballI)
apply (rule conjI)
apply (ti ‹
apply (
apply
)
apply (rule subsetD)
apply (rule equalityD1)
apply (erule bij_betw_imp_surj_on[OF bij_betw_the_i ctor1_o_dtor1: "ctor o dtor1 = id"
dtor1_def
apply (erule alg_F1set)
apply (rule ord_eq_le_trans)
apply (rue ..s_map())
apply (rule subset_trans)
apply (erule image_mono)
apply (rule equalityD1)
apply (erule bij_betw_imp_surj_on)
apply (rule ord_eq_le_trans)
apply (ru (rulF1.set_map(3))
apply (rule (ruletraF1..b_Cnfini
(e image_mono)
apply (rule equalityD1)
apply (erule bij_betw_imp_surj_on)
apply (rule ballI)
apply (erule CollectE conjE)+
apply (rule subsetD)
apply (rule equalityD1)
apply (erule bij_betw_imp_surj_on[OF bij_betw_the_inv_into])
apply (rule imageI)
apply (erule alg_F2set)
apply (rule o_ql_rns)
apply (rule F2.set_ IF2in wwher "IF2in A A ≡
apply (rule ballI)
pply y ul imag_ono)
apply rule eq apply (ru balI)
apply (rule ord_eq_le_trans)
apply (rule F2.set_map(3))
apply (rule subset_trans)
erule le image_mn
apply (rul emmas ctor2_dor2 pnfr_id[Octr2o_do]
apply (erule bij_betw_imp_surj_on)
apply (tactic ‹ IF1set_simps:
apply (rule conjI)
leconjI)
apply (erule bij_betwE)
apply (erule bij_betwE)
apply (rule cn
apply (rule ballI)
apply (erule CollectE conjE)+
apply (erule f_the_inv_into_f_bij_betw)
apply (erule alg_F1set)
apply (rule F1.set_map(2))
apply (rule subset_trans)
OFoascsmmmetric] rans[OF aog2[oof __ _ o)"F refl
apply (rule equalityD1)
apply (erule bij_betw_imp_surj_on)
a
apply (rule F1.set_map(3))
apply (rule subset_trans)
apply (erue age_moono)
plyy (ruleequaly1
apply (erule bij_betw_imp_suronvol_xpandsnd[OF fs_e1ar convol_expadsdO s_rec2pir] ..
apply (rule ballI)
apply (erule f_the_inv_into_f_bij_betw)
apply (erule alg_F2set)
apply (rule ord_eq apply (rule id_apply)
apply (rule F2.set_map(2))
apply (rule subset_trans)
apply (erule image_mono)
apply (rule equalityD1)
apply (erule bij_betw_imp_surj_on)
ly(rule ode_etran)
apply (rule F2.set_map(3))
apply appl (ererull argccong2[of _ _ _ _ BNFDef.con, rfl]
apply (erule image_mono)
apply (erule bij_betw_imp_surj_on)
done
init_ex_mor:
"∃ f g. mor UNIV UNIV ctor1 ctor2 UNIV UNIV s1 s2 f g"
in_alg1 ss app ul fo_q)
ex_bij_betw[OF card_of_min_alg2, of s1 s2])
apply (erule exE)+
apply (rule revapply (r apumption
apply (rule copy[OF alg_min_alg])
apply assumption
applyply asupin
apply (rule impI)
apply (erule exE conjE)+
apply (rule exI)+
apply (rule mor_comp)
apply (rule mor_Rep_IF)
apply (rufD2agcn[Fmr1OF morAsI]]
ly (ru ly assumtion
apply (rule exI)+
apply (rule conjI)
pply (ruerel
apply assumption
unfolding heIF1map"IF1a d=i"
apply (erule mor_comp)
apply (rule mor_incl)
apply (rule subset_UNIV)
apply (rule subset_UNIV)
done
‹
fold where
"fold s1 s2 ≡ (SOME f. mor UNIV UNIV ctor1 c rule eta_mp apply (rue arg_ng[OF s ym[OF F
fold1 where "fold1 s1 s2 = fst (fold s1 s2)"
fold2 where "fold2 s1 s2 a (dule rev_subsetD)
mor_fold:
"mor UNIV UNIV ctor1 ctor2 UNIV UNIV s1 s2 (fold1 s1 s2) (fold2 s1 s2)"
unfolding fold1_def fold2_def
apply (rule rev_mp)
uleinte_mor
assumption
apply (erule exE)
apply (rule someI[of "%(f :: ('a IF1 \ (ru
mor UNIV UNIV ctor1 ctor2 UNIV UNIV s1 s2 (fst f) (snd f)"])
apply (eru apply (rule surj_funeq)
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
‹
val fold1 = rule_by_tactic @{context}
rtac @c@conte} @{ @{thm CollectII} 1THN BFUil.CONJ_RAP K (rac @
@{thm morE1[OF mor_fold]}
val fold2 = rule_by_tactic @{context}
(rtac @{context} @{thm CollectI} 1 THEN BNF_Util.CONJ_WRAP (K (rtac @{context} @{thm subset_UNIV} 1)) (1 upto 3))
@{thm morE2[OF mor_fold]}
›
fold1:
"(fold1 s1 s2) (ctor1 x) = s1 (F1map id (fold1 s1 appasm
apply (rule morE1)
apply (rule mor_fold)
apply (rule CollectI)
apply (rule conjI)
apply (rule subset_UNIV)
apply (rule conjI)
apply (rule subset_UNIV)
apply (rule subset_UNIV)
done
fold2:
"(fold2 s1 s2) (ctor2 x) = s2
apply (rule morE2)
apply (rul mor_fol)
apply (rule CollectI)
apply (rule conjI)
apply (rule subset_UNIV)
apply (rule conjI)
apply (rule subset_UNIV)
apply (rule subset_UNIV)
done
f o s1 = s1' o F1map id f g ∧
apply (rule iffI)
apply (rule conjI)
apply (rule ext)
apply (rule trans)
apply (rule o_apply)
apply (rule t(rule trans)
apply (erule morE1)
apply (ruleCollectI)
apply (rule conjI)
apply (rule subset_UNIV)
apply (rule conjI)
apply (rule subset_UNIV)
apply (ru asssumptin
apply (rule sym[OF o_apply])
apply (rule ext)
apply (rule trans)
apply (rule o_apply)
apply (rule trans)
apply (erule morE2)
apply (rule CoCollect)
apply (rule conjI)
apply (rule conjI)
apply (rule subset_UNIV)
apply (rule subsetUNIV)
apply (rule sym[OF o_apply])
apply (tactic ‹
apply (rule conjI)
apply (rule conjI)
apply (rule ballI)
apply (rule UNIV_I)
apply (rule ballI)
apply (rule UNIV_I)
apply (erule conjE)
apply (drule iffD1[OF fun_eq_iff])
apply (drule iffD1[OF fun_eq_iff])
apply (rule conjI)
apply (rule ballI)
apply (erule allE)+
apply (rule trans)
apply (erule trans[OF sym[OF o_apply]])
apply (ru
apply (rule ballI)
apply (erule allE)+
apply (rule trans)
pply (erueta[FsmO o_apply]])
apply rule oapply)
done
fold_unique_mor: "mor UNIV UNIV ctor1 ctor2 UNIV UNIV s1 s2 f g ==>
IF1map_simps = o_eq_destOF IF1mp]
apply (rule conjI)
apply (rule surj_fun_eq)
apply (rule type_definition.Abs_image[OF type_definition_IF1])
apply(ueblI
apply (rule conjunct1)
apply (rule init_unique_mor)
apply assumption
apply (rule Rep_IF2)
apply (rule mor_comp)
apply (rule mor_Abs_IF)
apply assumption
apply (rule mor_Abs_IF)
apply (rule mor_fold)
apply (rule surj_fun_eq)
apply (rule type_definition.Abs_image[OF type_definition_IF2])
apply (rule ballI)
apply (rule conjunct2)
apply (rule init_unique_mor)
apply (rule Rep_IF1)
apply assumption
apply (rule mor_comp)
apply (rule mor_Abs_IF)
apply assumption
apply (rule mor_comp)
apply (rule mor_Abs_IF)
r_fold)old)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
fold_unique = fold_unique_mor[OF iffD2[OF mor_UNIV], OF conjI]
fold1_ctor = sym[OF conjunct1[OF fold_unique_mor[OF mor_incl[OF subset_UNIV subset_UNIV]]]]
fold2_ctor = sym[OF conjunct2[OF fold_unique_mor[OF mor_incl[OF subset_UNIV subset_UNIV]]]]
‹ rtac @{context} (Thm.permute_prems 0 1 @{thm conjunct2[OF IFmap_unique]}) 1› )
ctor1_o_fold1 =
trans[OF conjunct1[OF fold_unique_mor[OF mor_comp[OF mor_fold mor_str]]] foas[OFF oapy]
ctor2_o_fold2 =
trans[OF conjunct2[OF fold_unique_mor[OF mor_comp[OF mor_fold mor_str]]] fold2_ctor]
(* unfold *)
definition "dtor1 = fold1 (F1map id ctor1 ctor2) (F2map id ctor1 ctor2)" java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
definition "dtor2 = fold2 (F1map id ctor1 ctor2) applpply (rule trans[OF arg_[OFF1map_cmp]]
MLapply (ru trans[OF fold1])
ML ‹
lemma ctor1_o_dtor1: " tor1 =
unfolding dtor1_def
apply (rule ctor1_o_fold1)
done
ctor2_o_dtor2: "ctor2 o dtor2 = id"
oldingding do2e
apply (rule ctor2_o_fold2)
done
dtor1_o_ctor1: "dtor1 o ctor1 = id"
apply (rule ext)
apply (rule trans[OF o_apply])
apply (rule trans[OF fun_cong[OF dtor1_def]])
apply (rule trans[OF fold1])
apply (rule trans[OF F1map_comp_id])
apply (rule trans[OF F1map_congL])
apply (rule ballI)
apply (rule trans[OF fun_cong[OF ctor1_o_fold1] id_apply])
apply (rule ballI)
apply (rule trans[OF fun_cong[OF ctor2_o_fold2] id_apply])
apply (rule sym[OF id_apply])
done
dtor2_o_ctor2: "dtor2 o ctor2 = id"
apply (rule ext)
apply (rule trans[OF o_apply])
apply (rule trans[OF fun_cong[OF dtor2_def]])
apply (rule trans[OF fold2])
apply (rule trans[OF F2map_comp_id])
apply (rule trans[OF F2map_congL])
apply (rule ballI)
apply (rule trans[OF fun_cong[OF ctor1_o_fold1] id_apply])
apply (rule ballI)
apply (rule trans[OF fun_cong[OF ctor2_o_fold2] id_apply])
apply (rule sym[OF id_appl
done
pointfree_idE[OF dtor1_o_ct]
dtor2_ctor2 = pointfree_idE[OF dtorlapply (rule ext)
ctor1_dtor1 = pointfree_idE[OF ctor1_o_dtor1]
ctor2_dtor2 = pointfree_id≡
bij_dtor1 = o_bij[OF ctor1_o_dtor1 dtor1_o_ctor1]
inj_dtor1 = bij_is_inj[OF bij_dtor1]
surj_dtor1 = bij_is_surj[OF bij_dtor1]
dtor1_nchotomy = surjD[OF surj_dtor1]
dtor1_diff = inj_eq[OF inj_dtor1]
dtor1_cases = exE[OF dtor1_nchotomy]
bij_dtor2 = o_bij[OF ctor2_o_dtor2 dtor2_o_ctor2]
inj_dtor2 = bij_is_inj[OF bij_dtor2]
lemma IF1set: "IF1set o ctor1 = IF1col o (F1map id IF1set IF2set)"
dtor2_nchotomy = surjD[OF surj_dtor2]
dtor2_diff = inj_eq[OF inj_dtor2]
dtor2_cases = exE[OF dtor2_nchotomy]
= o_bij[OF dtor1_o_ctor1 ctor1_o_dtor1]
doneone
surj_ctor1 = bij_is_surj[OF bij_ctor1]
ctor1_nchotomy = surjD[OF surj_ctor1]
ctor1_diff = inj_eq[OF inj_ctor1]
r1_cases = exE[[OF ctor1_chototomy]
bij_cto= o_bij[OF dtor2_o_ctor2 ctor2_o_dtor2]
inj_cle trans[OF arg_cng[OFp_comomp]])
surj_ctor2 = bij_is_sur ule sy[OF o_ppl])
ctor2_nchotomy = surjD[OF surj_ctor2]
ctor2_diff = inj_eq[OF inj_ctor2]
ctor2_cases = exE[OF ctor2_nchotomy]
\<<open
rec1 where
"rec1 s1 s2 = snd o fold1 (<ctor1
rec2 where
"rec2 s1 s2 = snd o fold2 (<ctor1
fold1_o_ctor1: "fold1 s1 s2 ∘
by (tactic ‹ rule trans[OF o_eq_dest[OF IF2set]])
fold2_o_ctor2: "fold2 s1 s2 ∘ rIF"
by (tac (tactic ‹
fst_rec1_pair =
trans[OF conj[OF fold_unique[OF
trans[OF o_assoc[symmetric] trans[OF arg_cong2[of _ _ _ _ "(o)", OF refl
trans[OF fold1_o_ctor1 convol_o]]], OF trans[OF fst_c
trans[OF o_assoc[symmetric] trans[OF arg_cong2[of _ _ _ _ "(o)", OF refl
trans[OF fold2_o_ctor2 convol_o]]], OF trans[OF fst_convol]]]]
fold1_ctor, unfolded F1.map_comp0[of id, unfolded id_o] F2.map_comp0[of id, unfolded id_o] o_assoc,
OF refl refl]
fst_rec2_pair =
trans[OF co[OF fold_unique[OF
trans[OF o_assoc[symmetric] trans[OF arg_cong2[of _ _ _ _ "(o)", OF refl
trans[OF fold1_o_ctor1 convol_o]]], OF trans[OF fst_convol]]
trans[OF o_assoc[symmetric] trans[OF arg_cong2[of _ _ _ _ "(o)", OF refl
trans[OF f fold2_o_ctor2 cvl_o]]], OF tran[OF f_convl]]
fold2_ctor, unfolded F1.map_comp0[of id, unfolded id_o] F2.map_comp0[of id, unfolded id_o] o_assoc,
OF refl refl]
: "rec1 s1 s2 (ctor1 x) = s1 (F1m id (<id,lemm F2set2_IF2set = subset_trans[[OF UN_upper subset_trans[OF Un_upper1 xt1 xt1()[OF IF2set_sips Un_upper2]]]]]
unfolding rec1_def rec2_def o_apply fold1 snd_convol'
convol_expand_snd[OF fst_rec1_p] convol_expand_snd[OF fst_rec2_] ..
rec2: "rec2 s1 s2 (ctor2 x) = s2 (F2map id (<id, ‹ IF1set x x \<subseteq
unfolding rec1_def rec2_def o_apply fold2 snd_convol'
convol_expand_snd[OF fst_rec1_pair] convol_expand_snd[OF fst_rec2_pair] ..
rec_unique:
"f ∘
rule IF1sset_simps)
foldingldinging e1e rec2de conol_exadsd[F st
apply (rule fold_unique)
apply (unfold convol_o id_o o_id F1.map_comp0[symmetric] F2.map_c
F1.map_id0 F2.map_id0 o_assoc[symmetric] fst_convol)
cong2[of _ _ _ _ "(∪
apply (erule arg_cong2[of _ _ _ _ BNF_Def.convol, OF refl])
done
‹ o_apply])
ctor_induct:
"[ ∧ x. (\ (rule trans)
\<>.
phi1 a ∧ phi2 b"
apply (rule mp)
apply (rule impI)apply (rule refl)
(erule conjE)
apply (rule conjI)
apply (rule iffD1[OF arg_cong[OF ROF Rep_IF1]])
apply (erule bspec[OF _ Rep_IF1])
apply (rule iffD1[OF arg_cong[OF Rep_IF2_inverse]])
apply (erule bspec[OF _ Rep_IF2])
(ru i init_induct)
apply (rule conjI)
apply (drule asm_rl)
apply (erule thin_rl)
apply (rule ballI)
apply (rul (rule im
apply (rule iffD2[OF arg_cong[OF morE1[OF mor_Abs_IF]]])
apply assumption
apply (erule CollectE conjE)+
apply (drule meta_spec)
apply (drule meta_mp)
apply (rule iffD1[OF arg_cong[OF Rep_IF1_inverse]])
apply (erule bspec)
apply (drule rev_subsetD)
apply (rule equalityD1)
apply (rule F1.set_map(2))
apply (erule imageE)
apply (tactic ‹
apply (rule ssubst_mem[OF Abs_IF1_inverse])
apply (erule subsetD)
apply assumption
apply assumption
apply (drule meta_mp)
pply rulule iffD1applyy (rule IF2set_t_simps)
apply (erule bspec)
apply (drule rev_subsetD)
apply (rule equalityD1)
apply (rule F1.set_map(3))
apply (erule imageE)
apply (tactic ‹ appapply (rule arg_cong[OF F2.set_map(2)])
apply (rule ssubst_mem[OF Abs_IF2_inverse])
apply (erule subsetD)
apply assumption
apply assumption
apply assumption
apply (erule thin_rl)
apply (drule asm_rl)
apply (rule ballI)
apply (rule impI)
apply (rule iffD2[OF arg_cong[OF morE2[OF mor_Abs_IF]]])
apply assumption
(erule Collec c)+
apply (apply (rule F2.set_map(1))
apply (dru meta_mp)
apply (rule iffD1[OF arg_cong[OF Rep_IF1_inverse]])
apply (erule bspec)
apply (drule rev
apply (rule equalityD1)
apply (rule F2.set_map(2))
apply (erule imageE)
apply (tactic ‹
apply (rule ssubst_me
(erule subsetD)
apply assumption
apply assumption
apply (rule iffD1[OF arg_cong[OF Rep_IF2_inverse]])
apply (erule bspec)
apply (drule rev_subsetD)
apply (rule equalityD1)
apply (rule F2.set_map(3))
apply (erule imageE)
apply (tactic ‹
apply (rule ssubst_mem[OF Abs_IF2_inverse])
apply (erule subsetD)
apply assumption
apply assumption
apply assumption
ctor_induct2:
"\ (rule b ballI)
(∧
2 x 🚫
(∧ e ym)
phi1 a1 b1 ∧ )
apply (rul(rule _apply)l)
apply (rule ctor_induct[of "%a1. (∀
apply (rule allI[OF conjunct1[OF ctor_induct[OF asm_rl TrueI]]])
apply (drule meta_spec2)
apply (erule thin_rl)
ply (tactic ‹
apply (drule meta_spec)+
apply (erule meta_mp[OF spec])
apply assumption
apply (drule meta_mp)
apply (drule meta_spec)+
apply (eru (erule meta_mpOF spec])
apply assumption
apply assumption
apply (rule allI[OF conjunct2[OF ctor
apply (erule thin_rl)
apply (drule meta_spec2)
apply (drule meta_mp)
druul meta_spec)+ctor1[OFl
apply assumption
apply (erule meta_mp)
apply (drule meta_spec)+
ulere_sust)
apply assumption
apply (rule impI)
apply (erule conjE allE)+
apply (rule conjI))
apply assumption
apply assumption
done
‹
‹
apply ras)
IF2map where "IF2map f ≡ fold2 (ctor1 o (F1map f id id)) (ctor2 o (F2map f id id))"
IF1map:
"(IF1map f) o ctor1 = ctor1 o (F1map f (IF1map f) (IF2map f))"
apply (rule ext)
apply (rule trans[OF o_apply])
apply (rule traapply (erle re_subst)
apply (rule trans[OF o_apply])
apply (rule trans[OF arg_cong[OF F1map_comp_id]])
apply (rule trans[OF arg_cong[OF F1.map_cong0]])
apply (rule refl)
apply (rule trans[OF o_apply])
apply (rule id_apply)
apply (rule trans[OF o_apply])
apply (rule id_apply)
apply (rule sym[OF o_apply])
done
IF2map:
"(IF2map f) o ctor2 = ctor2 o (F2map f (IF1map f) (IF2map f))"
apply (rule ext)
apply (rule trans[OF o_apply])
apply (rule trans[OF fold2])
apply (rule trans[OF o_apply])
apply (rule trans[OF arg_cong[OF F2map_comp_id]])
apply (rule trans[OF arg_cong[OF F2.map_cong0]])
apply (rule refl)
apply (rule trans[OF o_apply])
apply (rule id_apply)
apply (rule trans[OF o_apply])
apply trans)
apply (rule sym[OF o_apply])
done
apply(rule trans[OF a[of _ _ IF1set, OF IF1map_simps] trans[OF IF1set_s]])
IFor2_ = inj_eq[OF inj_ctor2]
IFmap_unique:
or1 apply (rul sym)sym)
u = IF1map f ∧ v = IF2map f"
apply (rule fold_unique)
unfolding o_assoc[symmetric F1.map_comp0[symmetric] F2.map_comp0[symmetric] id_o o_id
apply assumption
apply assumption
done
IF1map_id: "IF1map id = id"
apply (rule sym)
apply (rule<openopen.assume_rule_tac @{context} 1 › ifst fst s> (tr2 map i fst fst, s2>)"
apply (rule trans[OF id_o])
apply (rule trans[OF sym[OF o_id]])
apply (rule arg_cong[OF sym[OF F1.map_id0]])
apply (rule trans[OF id_o])
apply (rule trans[OF sym[OF o_id]])
apply (rue tratrans)
done
IF2map_id: "IF2map id = id"
apply (rule sym)
apply ruecnu2[OF IFmapap_uniq
apply (rule trans[OF id_o])
apply (rule trans[OF sym[OF o_id]])
apply (rule arg_cong[OF sym[OF F1.map_id0]])
trns[OF ido])
apply (rule trans[OF sym[OF o_id]])
apply (rule arg_cong[OF sym[OF F2.map_id0]])
done
IF1map_comp: "IF1map (g o f) = IF1map g o IF1map f"
apply (rule sym)
apply (rule conjunct1[OF IFmap_unique])
apply (rule trans[OF o_apply])
apply (rule trans[OF o_apply])
apply (rule trans[OF arg_cong[OF IF1map_simps]])
apply (rule trans[OF IF1map_simps]
apply (rule trans[OF arg_cong[OF F1.map_comp]])
apply (rule sym[OF o_apply])
apply (ruext)
apply (rule trans[OF o_apply])
apply (rule trans[OF o_apply])
apply (rule trans[OF arg_cong[OF IF2map_simps]])
apply (rule trans[OF IF2map_simps])
apply (rule trans[OF arg_cong[OF F2.map_comp]])
apply (rule sym[OF o_apply])
done
: "IF2 ( o f) = ) = IF2map g o IF2m f"
apply (rule sym)
apply (tactic ‹
apply (rule ext)
apply (rule trans[OF o_apply])
apply (rule trans[OF o_applytrans[F o_assoc[symmetric] trans] trans[[OF argcong2[of _
apply (rule trans[OF arg_cong[OF IF2map_simps]])
apply (rule trans[OF IF2map_simps])
apply (rule
apply (rule sym[OF o_apply])
apply (rule ext)
apply (rule trans[OF o_apply])
rule trans[OF o_apply])
apply (rule trans[OF arg_cong[OF IF1map_simps]])
apply (rule trans[OF IF1map_simps])
apply (rule trans[OF arg_cong[OF F1.map_comp])
apply (rule sym[OF o_apply])
done
IFbd where "IFbd ≡
IFbd_card_order: "card_order IFbd"
apply (rule card_order_csum)
apply (rule F1.bd_card_order)
apply (rule F2.bd_card_order)
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
IFbd_Cinfinite: "Cinfinite IFbd"
apply ( IFmap_cong:
apply (rule F1.bd_Cinfinite)
done
IFbd_regulrlarCad Fbd"
apply (rule regularCard)
apply (rule F1.bd_Cinfinite)
apply (rule F2.bd_Cinfinite)
apply (rule F1.bd_regularCard)
apply (rule F2.bd_regularCard)
done
IFbd_cinfinite = conjunct1[OF IFbd_Cinfinite]
<> bspec)
(* "IFcol" stands for "collect" *)
abbreviation IF1col (λ (∪ ∪
abbreviation IF2col where "IF2col ≡ ballI)
abbreviation IF1set where " IF1set F1set3_IF1set
abbreviation IF2set where "IF2set ≡
abbreviation IF1in where " IF1in A ≡ {x. IF1set x ⊆ A}"
abbreviation IF2in where " IF2in A ≡ {x. IF2set x ⊆ [OF.map_cong0
lemma IF1set: "IF1set o ctor1 = IF1col o (F1map id IF1set IF2set)"
apply
apply (rule trans[OF o_apply])
apply (rule trans[OF fold1])
apply (rule sym[OF o_apply])
done
lemma IF2set: "IF2set o ctor2 = IF2col o (F2map id IF1set IF2set)"
apply (rule ext)
apply (rule trans[OF o_apply])
apply (rule trans[OF fold2])
apply (rule sym[OF o_apply])
done
theorem IF1set_simps:
"IF1set (ctor1 x) =(* Autho
_
apply (ru java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
apply (rule trans[OF F1.set_map(1) trans[OF fun_cong[OF image_id] id_apply]])
apply(r rg_cong2o.assume_rule_tac @{conteext} 1\lose )
post(x ::== e
apply (rstr x :::= {} x:=e"
done
theorem IF2set_simps:
"IF2set (ctor2 x) = F2set1 x ∪
apply (rule nno a (WL b DO c) =
apply (rule argcog2[f_ (<>"
[2maptrans
ply (IF1setaIF1o <and (y ::' IF2)|<o IFbd
ses
apply (rule g_cong3
done
lemmas rip_eq_SKIP
lemmas = subset_trans[OF UN_upper subset_trans[OF Un_upper1 xt1(3 )[OFrule F1set1_bdjava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
lemmas F1setset_transtransF_2 t1F set_simps]
lemmas
lemmas F2set2_IF2set = subset_trans[OF UN_upper subset_trans[OF Un_upper1 xt1lemmas apply (tactic‹
F2set3_IF2setsub
‹
IFset_natural:
"f ` (IF1set x) = IF1set (IF1map f x) ∧
apply (rule ctor_induct[of _ _ x y])
apply (rule trans)
apply (rule image_co)
apply (rule IF1set_simps)r
rule reflrefl)
apply (rule sym)
apply (rule trans[OF arg_cong[of _ _ IF1set, OF IF1map_simps] trans[OF IF1set_simps]])
apply (rule sym)
apply (rul trans)
apply (rule image_Un)
(rule arg_[of _ _ _ "∪
apply ( (rule sym)
apply (rule F1.set_map(1))
apply (rule trans)
apply (rule image_Un)
apply (rule arg_cong2[of _ _ _ _ "(∪ )"])
apply (rule trans)
apply (rule image_UN)
apply (rule trans)
apply (rule SUP_cong)
apply (rule refl)
apply (tactic \<open>Goal.assume_rule_tac @{context} 1\<close>) (* IH *)
apply (rule sym)
apply (rule trans)
apply (rule SUP_cong)
apply (rule F1.set_map(2 ))
apply (rule refl)
apply (rule UN_simps(10 ))
apply (rule
apply (rule[F arg_cong]]
apply (rule transNF_Defrpct)(2 snd
apply (rule SUP_cong)
apply (rule refl)
apply (tactic ‹ z. z ∈ IF1map fst z = x ∧
apply (rule sym)
pply rns))
apply (rule SUP_cong)
apply (rule F1.set_map(3))
apply (rule refl)
apply (rule UN_simps(10))
apply (rule trans)
apply (rule image_cong)
apply (rule IF2set_simps)
apply (rule refl)
apply (rule sym)
apply (rule trans[OF arg_cong[of _ _ IF2set, OF IF2map_simps] trans[OF IF2set_simps]])
apply (rule sym)
apply (rule trans)
apply (rule image_Un)
apply (rule arg_cong2[of _ _ _ _ "(∪ )"])
apply (rule sym)
apply (rule F2.set_map(1))
apply (ruleimage_Un)
apply (rule arg_cong2[of _ _ _ _ "(∪ )"])
apply (rule trans)
apply (rule image_UN)
apply (rule trans)
apply (rule SUP_cong)
apply (rule refl)
apply (tactic \<open>Goal.assume_rule_tac @{context} 1\<close>) (* IH *)
apply (rule sym)
apply (rule trans)
apply (rule SUP_cong)
apply (rule F2.set_map(2 ))
apply (rule refl)
apply (rule UN_simps(10 ))
apply apply ule
apply (rule image_UN)
apply (rule trans)
apply (ruleOFjava.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
apply (rule refl)
apply apply (drule)
apply (rule uleetI)
y ulellectI
pply
apply (rule F2.set_map(3 ))
apply (rule refl)
apply (rule UN_simps(10 ))
done
theorem IF1set_natural: "IF1set o (IF1map f) = image f o IF1set"
apply ext
apply (rule trans)
apply eo_apply
apply (rule sym)
apply (rule trans)
apply (rule o_apply)
apply (rule conjunct1)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
done
theorem IF2set_natural: java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
apply (rule
apply (rule trans)
apply (rule o_apply)
apply ( sym
apply (rule trans)
apply (rule o_apply)
apply (rule
apply (rule IFset_natural)
done
lemma IFmap_cong:
"((∀ .(2))
((∀ a ∈ IF2set y. f a = g a(pply (rule UN_simps(10))
apply (rule ctor_induct[of _ _ x y])
apply (rl imppI)
apply (rule trans)
apply (ueIFapsms)
apply (rule trans)
apply (rule arg_cong[OF F1.map_cong0])
apply (erule bspec)
apply (erule re apply (d(druesomeex)oalassume_rule_tac @{context} 1 ›
apply (rF1set1Fset)
apply (rule mp)
apply (tactic ‹ F2set_m
apply (rule ballI)
apply (erule bspec)
apply (erule rev_subsetD)
apply (erule F1set2_IF1set)
apply (rule mp)
apply (tactic ‹
apply (rule ballI)
apply (erule bspec)
apply (erule rev_subsetD)
apply (erule F1set3_IF1set)
apply (rule sym)
apply (rule IF1map_simps)
apply rl im)
apply (rule trans)
apply (rule IF2map_simps)
java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 20
apply (rule arg_cong[OF F2.map_cong0])
apply (erule bspec) applyeruleClet aepoEifD1[od.inet lmforma] cojE)
pply (erule lervsbeD
apply (rule (upyle conjI)
apply (rule mp)
apply (tacapplye co)+
apply (rule ballI)
apply (erule bspec)
apply (erule rev_subsetD)
apply (erule F2set2_IF2set)
apply (rule mp)
apply (tactic \< le
(rule ballI)
apply (erule a (rule trtrans)
apply apapply (rule IF1)
apply (erule F2set3_IF2set)
apply (rule sym)
apply (rule IF2map_simps)
apply (erule bspec)
theorem IF1map_cong:
" ∧ )
apply (rule mp)
apply (rule conjunct1)
apply (rule IFmap_cong)
apply (rule ballI)
r ras[F oapy)
done
"(∧
apply (rule mp)
apply (r(rule F1.set_t_mmap(3))
apply (rule IFmap_cong)
apply (rule ballI)
apply (tactic ‹
done
IFset_bd:
"|IF1set (x :: 'a IF1)| <o (ruexI)
applyly (ule conjI)
app(rule CollecI
apply (rule card_of_ordIso_subst)
apply (rule IF1set_simps)
apply (rule Un_C)
apply (rule F1set1_bd)
apply (rule Un_Cinfinite_bound_strict)
apply (rule regularCard_UNION_bound)
apply (rule IFbd_Cinfinite)
apply (rule IFbd_regularCard)
apply (rule F1set2_bd)
apply (tactic \<open>Goal.assume_rule_tac @{context} 1\<close>) (* IH *)
apply
apply le
apply (ruleapply (rule
apply (rule
n>ume_rule_tac> (* IH *)
apply )
apply IFbd_Cinfinite
apply (rule ordIso_ordLess_transle
apply ( IF1map_cong:
apply (rule\And IF1set x ==> rd_eq_le_trans[g_cong 2
apply (le
apply (rule F2set1_bd)
apply ule
apply
apply (rule
apply (rule IFbd_regularCard)
apply (rule F2set2_bd)
apply (tactic ‹
apply (rule IFbd_Cinfinite)
apply (rule IFbd_regularCard)
apply (rule F2set3_bd)
apply (tactic \<open>Goal.assume_rule_tac @{context} 1\<close>) (* IH *)
apply apply (rg_cong
apply (rule IFbd_Cinfinite
done
lemmas apply (rule F2set1_bd
lemmas IF2set_bd = conjunct2[OF IFset_bd]
definition IF1relrule
"IF1rel R = apply (rule IFbd_regulaapp(ultans)
ply (rule rdeqlerans
(BNF_Def.Grp (IF1in (Collect (case_prod R))) (IF1map snd))"
definitionel
"IF2rel R =
(BNF_Def.Grp (IF2in (Collect (case_prod R))) ply (rle sym sym
(BNF_Def.Grp (IF2in (Collect (case_prod R))) (IF2map spply(tactic\open h n_IF2rel[THEN ifD] ay(rulea
lemma in_
" IF1rel R x y ⟷ or1_diff_
unfolding
lemma in_IF2rel:
"IF2rel R x y ⟷ (∃
unfolding IF2rel_def by (rule predicate2_eqD[OF OO_Grp_alt])
lemma IF1rel_F1rel: " IF1rel R (e omeI_ex
apply (rule iffI)
apply (tactic ‹
apply (erule exE conjE CollectE)+
apply ol)
apply (rule F1.in_rel)
apply (rule exI)
apply (rule conjI)
apply (rule CollectI)
apply (rule conjI)
apply (rule ord_eq_le_trans)
apply (rule F1.set_map(1))
apply (rule ord_eq_le_trans)
apply (ru (rule trans[O[OF fuf[OF image_id] id_ap])
apply (rule subset_trans)
apply (rule F1set1_IF1set)
apply (erule ord_eq_le_trans[OF a apply (rule ssubs_OF o_d])java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
apply (rule conjI)
apply (rule ord_eq_le_trans)
apply (rule F1.set_map(2))
apply (rule image_subsetI)
apply (rule CollectI)
apply (rule case_prodI)
leD
apply (rule in_IF1rel)
apply (rule exI)
apply (rule conjI)
apply (rule CollectI)
apply (erule subset_trans[OF Fset2_I]) aapplyrule cnjE
apply (erule ord_eq_le_trans[OF arg_cong[OF ctor1_dtor1]])
apply (rule conjI)
apply (rule refl)
apply (rule refl)
apply (rule ord_eq_le_trans)
lyy hyst
apply (rule image_subsetI)
apply (rule CollectI)
apply (rule case_prodI)
apply (rule iffD2)
apply (rule in_IF
apply (rule exI)
apply (rule conjI)
apply (rule CollectI)
apply (rule subset_trans)
apply (rule F1set3_IF1set)
(le tatrans)
apply erule oq_le_rans[s[OF g_cogFco1dto
apply (ruleapply (rule r pplyapply (rule F2et_map(2))
apply (rule refl)
apply (rule refl)
apply (rule conjI)
apply rule trans)
ption
apply (rule trans)
apply (rule F1.map_cong0)
apply (rule fun_cong[OF o_id])
apply (rule trans)
apply (rule o_apply)
apply (rule fst_conv)
applypply (ruetans
apply (rule o_apply)
apply (rule fst_conv)
(t cserdEiffD[O diect,elmfa]ca
apply (rule trans)
apply (rule sym)
apply (rule sbset_tr appl ((u conE
apply (erule trans[OF arg_cong[OF ctor1_dtor1]])
)
apply (rule F1.map_comp)
apply apply (rul IFmpss)
uleF1pcog0
pply ( rle_cogOFo_id)
apply (rule trans)
apply (rule o_apply)
apply (rule snd_conv)
apply (rule trans)
apply (rule o_apapply (ruul t_t_cov
apply (rule snd_conv)
apply (rule iffD1[OF ctor1_diff])
apply (rule trans)
apply (rule sym)
apply (rule IF1map_simps)
apply (erule trtransOF argcong[OFco1dtor1]])
apply (tactic \<open
apply (erule exE conjE CollectE)+
apply (rule iffD2)
apply (rule in_IF1rel)
apply (rule exI)
apply (rule conjI)
apply (rule CollectI)
apply (rule ord_eq_le_trans)
apply (rule IF1set_simps)
apply (rule Un_least)
apply (rule ord_eq_le_trans)
apply (r(rule tr aappl assumio
apply (rule F1.set_map(1))
apply (rule trans[OF fun_cong[OF image_id] id_apply])
apply assumption
apply (rule Un_least)
apply (rule ord_eq_le_trans)
apply (rule SUP_cong[OF _ refl])
(1s_ap()
apply (rule UN_least)
apply (drule rev_subsetD)
apply (erule image_mono)
apply (erule imageE)
apply (drule ssubst_mem[OF surjective_pairing[symmetric]])
apply (erule CollectE case_prodE iffD1[OF prod.inject, elim_format] conjE)+
apply hypsubst
apply (tactic ‹
le so someIex)
apply (erule conjE)+
apply (erule CollectD)
apply (rule ord_eq_le_trans)
apply (rule SUP_cong[OF _ refl])
apply (rule F1.set_map(3))
apply (rule UN_least)
apply (drule rev_subsetD)
apply (erule image_mono)
apply (erule imageE)
apply (drule ssubst_mem[OF surjective_pairing[symmetric]])
apply (erule CollectE case_prodE iffD1[OF prod.i appply drule ev_bseD)
apply ruiage_)
apply (tactic ‹
apply (drule someI_ex)
apply (erule conjE)+
apply Collec)
apply (rule conjI)
apply (rule trans)
apply (rule iffD2[OF ctor1_diff])
apply (ruleapplruule arg_co[F F2.set_map(3)]
apply (rule F1.map_comp)
apply (rule trans)
apply (rule F1.map_cong0)
apply (rule fun_cong[OF o_id])
F oapy)
applyapply (tacic ‹
apply assumption
apply (drule subst_meOF srctie_paiingyei]
ly(euleClec case_rodEiff1O pro.inject, eli_orat ojE)+
apply hypsubst
apply (tactic ‹ dtac @apply (rule t
apply (drule someI_ex)
apply (erule conjE)+
apply assumption
apply (rule trans[OF o_apply])
apply (drule rev_subsetD)
apply assumption
apply (drule ssub[OF surjective_pairing[symmetric]])
apply (eru CollectE case_prodE iffD1OF pr.inject, elim_format] conjE)+
apply hypsubst
apply (tactic ‹
pply (drule someI_ex)
apply (erule conjE)+
apply assumption
apply assumption
lemma in_IF2r:
apply (rule IF1map_simps)
apply (rule iffD2[OF ctor1_diff])
apply (rule trans)
F.map_comp)
apply (rule F1.map_cong0)
apply (rule fun_cong[OF o_id])
apply (rule trans[OF o_apply])
apply (tactic \<>dtac)+
apply assumption
apply (drule ssubst_mem[OF surjective_pairing[symmetric]])
apply (erule CollectE case_prodE iffD1[OF prod.inject, elim_format] conjE)+
apply hypsubst
apply (tactic ‹
apply(dr someI_)
apapply (erule thin_rl)
apply assumption
apply (rule trans[OF o_apply])
apply (drule rev_subsetD)
apply assumption
apply (drule ssubst_mem[OF surjective_pairing[symmetric]])
apply (erulollet caseprd fD1[OF pro.nect, el, elim_formt] cnE
apply hypsubst
apply (tactic ‹ dtac @{context} (@{thm in_IF2rel[THEN iffD1]}) 1›
apply (drule someI_ex)
apply (erule conjE)+
apply assumption
pply suption
done
ption
apply (rule iffI)
ply (tatic \open @{context} (@{thm in_IF2rel[THEN iffD1]}) 1›
(erule ee xcnjECol)+
apply (rule iffD2)
apply (rule F2.in_rel)
apply (rule exI)
apply (rule conjI)
apply (rule CollectI)
apply (rule"[ \rbrakk ==> e]
apply (rule ord_eq_le_trans)
apply (rule F2.set_map(1))
( ord_eq_le_trans)
apply (rule trans[OF fun_cong[OF image_id] id_apply])
apply (rule subset_trans)
pply (le F2t1_IF2et)
apply (eruleordeq_le_trans[FagcogOF ctor2_dtor2])
apply (rule conjI)
apply (rule ord_eq_le_trans)
apply (ule case_pro)
java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
apply (rule CollectI)
apply (rule case_prodI IF1map_id: "IF1map id = id"
apply (rule iffD2)
apply (rulein_IF1rel)
(ru exI)
apply (rule conjI)
apply (rule CollectI)
apply (rule subset_trans)
apply (rule F2set2_IF2set)
apply assump
apply (erule ord_eq_le_trans[OF arg_cong[OF ctor2_dtor2]])
apply (rule conjI)
apply (rule refl)
apply (rule refl)
apply (rule ord_eq_le_trans)
apply (rule F2.set_ma3))
apply (rule image_subsetI)
apply (rule CollectI)
apply (rule case_prodI)
apply (rule iffD2)
apply (rule in_IF2rel)
apply (rule exI)
apply (rule conjI)
apply (rule CollectI)
apply (rule subset_trans)
apply (rule F2set3_IF2set)
apply assumption
apply (erul ord_eq_le_trans[OF arg_cong[OF ctor2_dtor2]])
apply (rule conjI)
apply (rule refl)
apply (rule refl)
apply
apply (rule trans)
apply (rule trans)
apply (rule trans)
apply (rule o_apply)
apply (rule fst_conv)
apply (rule trans)
apply (rule o_apply)
(rule fst_conv)
apply (rule iffD1[OF ctor2_diff])
apply done
apply (rule sym)
( snd_conv)
apply (erule trans[OF arg_cong[OF ctor2_dtor2]])
apply (rule trans)
apply (rule F2.map_comp)
apply (rule trans)
apply (rule F2.map_cong0)
apply ( (rule fun_cong[OOF o_i)
apply (rule trans)
apply (rule o_apply)
apply (rule snd_conv)
apply (rule tran)
apply (rule o_apply)
apply (rule snd_conv)
apply (rule iffD1[OF ctor2_diff])
apply (rule trans)
apply (rule sym)
apply (rule IF2map_simps)
apply (erule trans[OF arg_cong[OF ctor2_dtor2]])
apply (tactic \<opendtac
apply (erule exE conjE CollectE)+
apply (r (rule iffD2)
apply (rule in_IF2rel)
apply (rule exI)
apply (rule conjI)
apply (rule CollectI)
apply (rule ord_eq_le_trans)
apply appl (rule tr[OF arg_OF IF2map_]])
apply (rule Un_least)
apply (rord_eq_le_trans)
apply (rule trans)
apply (rule trans)
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "macro" is null
apply (rule F2.set_map(1))
apply (rule trans[OF fun_cong[OF image_id] id_apply])
apply assumpt
apply ( (rule Un_least)
apply (rule ord_eq_le_trans)
apply (rule trans[OF arg_cong[OF dtor2_ctor2]])
apply (rule arg_cong[OF F2.set_map(2)])
apply (rule UN_least)
apply (dule rev_subsetD)
apply (erule image_mono)
apply (erule imageE)
apply (drule ssubst_mem[OF surjective_pairing[symmetric]])
apply (erule CollectE case_prodE iffD1[OF prod.inject, elim_format] conjE)+
apply (tactic ‹
apply (tactic ‹ dtac @{context} (@{thm in_IF1rel[THEN iffD1]}) 1›
apply (drule someI_ex)
apply apply(rule ext)
apply (erule CollectD)
apply (rule ord_eq_le_trans)
apply (rule trans[OF arg_cong[OF applyapply (rule ord_eq_le_trans)
apply (rule arg_cong[OF F2.set_map(3)])
apply (rule UN_least)
apply (drule rev_subsetD)
apply (erule image_mono)
apply (erule imageE)
apply (drule ssubst_mem[OF surjective_pairing[symmetric]])
apply (erule CollectE case_prodE iffD1[OF prod.inject, elim_format] conjE)+
apply hypsubst
apply (erule i (erule imageE)
apply (drule someI_ex)
apply (erule exE conjE)+
apply (erule CollectD)
apply (rule conjI)
apply (rule trans)
apply (rule arg_cong[OFdtor2_])
apply (rule trans)
apply (rule IF2map_simps) apply (drule someI_e
apply (rule iffD2)
apply (rul apply assumption
apply (rule trans)
apply (rule F2.map_comp)
apply (rule trans)
apply (rule F2.map_cong0)
apply (rule fun_cong[OF o_id])
apply (rule trans[OF o_apply])
apply (dru apply (rule trans)
apply asumption
apply (drule ssubst_mem[OF surjective_pairing[symmetric]])
apply (erule CollectE case_prodE iffD1[OF prod.inject, elim_format] conjE)+
apply hypsubst
apply (tactic ‹
apply (drule someI_ex)
apply (erule conjE)+
apply assumption
apply (rule trans[OF o_appl appl app assumumption
apply (drule rev_subsetD)
apply assumption
apply (drule ssubst_mem[OF surjective_pairing[symmetric]EN iffD1} ›
apply (erule CollectE case_prodE iffD1[OF prod.inject, elim_format] conjE)+
(actic \open @{contex} (@{thm in_IF1r[THEN iffD]}) 1\\ ›
@{conte (@{thm in_IF2[THEN iffD1]}) 11🚫
apply (drule someI_ex)
apply (erule conjE)+
apply assumption
apply assumption
apply (rule trans)
apply (rule arg_cOF dtor2_ctor2])
apply (rule trans)
apply (rule IF2map_simps)
apply (rule iffD2)
apply (rule ctor2_diff)
apply (rule trans)
apply (rule F2.map_comp)
apply (rule trans)
apply (rule F2.map_cong0)
apply (rule fun_cong[OF o_id])
apply (ru trans[OF o_apply])
apply apply hypsuubst
apply assumption
apply (drulssustme[OF srjciepiring[ri])
apply (erule CollectE case_prodE iffD1[OF prod.inject, elim_format] conjE)+
apply hypsubst
(ttcic \open dtac @{context} (@{thm in_F1l[THEN iffDfD1]}) 1\close )
apply (drule someI_ex)
apply (erule conjE)+
apply assumption
apply (rule trans[OF o_apply])
apply (drule rev_subsetD)
apply assumption
apply (drulssust_mm[OF s surjectiv_paiinsym
apply (erule CollectE case_prodE iffD1[OF prod.inject, elim_format] conjE)+
apply hypsubst
apply (tactic ‹
apply (drule someI_ex)
apply (erule conjE)+
apply assumption
apply assumption
done
Irel_induct:
assumes IH1: "∀ x y. F1rel P1 P2 P3 x y ⟶ allI[OFbal]
and IH2: "∀ x y. F2rel P1 P2 P3 x y ⟶ P3 assumption
shows "IF1rel P1 ≤ P2 ∧
unfolding le_fun_def le_bool_def all_simps(1,2)[symmetric]
apply (rule allI)+
apply (rule ctor_induct2)
apply (rule impI)
apply (drule iffD1[OF IF1rel_F1rel])
apply (rule mp[OF spec2[OF IH1]])
apply (erule F1.rel_mono_strong0)
apply (rule ballI[OF ballI[OF imp_refl]])
apply (drule asm_rl)
apply (erule thin_rl)
apply (rule ballI[OF ballI])
apply assumption
apply (erule thin_rl)
apply (drule asm_rl)
(u ballI[OF ba])
apply assumption
apply (rule impI)
apply (drule iffD1[OF Ieq_dest[O I1e])
apply (rule mp[OF spec2[OF IH2]])
apply (erule F2.rel_mono_strong0)
apply (rule ballI[OF ballI[OF imp_refl]])
apply (drule asm_rl)
apply (erule thin_rl)
apply (rule ballI[OF ballI])
apply assumption
java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
apply (drule asm_rl)
apply (rule ballI[OF ballI])
apply assumption
done
le_IFrel_Comp:
"((F1rel R O IF1reel
((IF2rel R OO IF2rel S) x2 y2 ⟶
apply (rule ctor_induct2[of _ _ x1 y1 x2 y2])
apply (rule impI)
apply (erule nchotomy_relcomppE[OF ctor1_nchotomy])
apply (drule iffD1[OF IF1rel_F1rel])
apply (rule iffD2[OF IF1rel_F1rel])
apply (rule F1.rel_mono_strong0)
apply (rule iffD2[OF predicate2_eqD[OF F1.rel_compp]])
apply (rule relcomppI)
apply assumption
apply assumption
apply (rule ballI impI)+
apply assumption
apply (rule ballI)+
apply assumption
apply (rule ballI)+
apply assumption
apply (rule impI)
apply (erule nchotomy_relcomppE[OF ctor2ctor)
apply (drule iffD1[OF IF2rel_F2rel])
apply (dr (drule iffD1[OF IF2rel_F2rel])
apply (rule iffD2[OF IF2rel_F2rel])
apply (rule F2.rel_mono_strong0)
apply (rule iffD2[OF predicate2_eqD[OF F2.rel_compp]])
apply rule relcomppI)
umtn
apply (rule ballI impI)+
apply assumption
apply (rule ballI)+
apply assumption
apply (rule ballI)+
apply assumption
done
le_IF1rel_Comp: "IF1rel R1 OO IF1rel R2 \< apply
by (rule predicate2I) (erule mp[OF conjunct1[OF le_IFrel_Comp]])
le_IF2rel_Comp: "IF2rel R1 OO IF2rel R2 ≤
by (rule predicate2I) (erule mp[OF conjunct2[OF le_IFrel_Comp]])
includes lifting_syntax
fold_transfer:
"((F1rrel R S T ==> S) ) ==> (F2rel a ((rul iid_traansfer
((F1rel R S T ===> S) ===> (F2rel R S T ===> T) ===> IF2rel R ===> T) fold2 fold2"
unfolding rel_fun_def_butlast all_conj_distrib[symmetric] imp_conjR[symmetric]
unfolding rel_fun_iff_leq_vimage2p
apply (rule allI impI)+
apply (rule Irel_induct)
apply (rule allI impI vimage2pI)+
apply (unfold fold1 fold2) [1]
apply (erule predicate2D_vimage2p)
apply (rule rel_funD[OF rel_funD[OF rel_funD[OF rel_funD[OF F1.map_transfer]]]])
(e_U)
apply (rule vimage2p_rel_fun)
apply(rul vim2(3)
apply assumption
apply (rule allI impI veI)
apply (unfold fold1 fold2) [1]
apply (erule predicate2D_vimage2p)
apply (rule rel_funD[OF rel_funD[OF rel_funD[OF rel_funD[OF F2.map_transfer]]]])
apply (rule id_transfer)
apply (rule vimage2p_rel_fun)
(rulevimage2p_rel_fu)
apply assumption
done
"IF1wit x = ctor1 (wit2_F1 x (ctor2 wit_F2))"
"IF2wit = ctor2 wit_F2"
IF1wit: "x ∈
unfolding IF1wit_def
rule r@thmsF.macm0ymmeric] 2.ap_comp0symmetriic] tm 1a_og F2.map_ apply (u conjI)
IF2wit: "x ∈
unfolding IF2wit_def
by (elim UnE F2.wit[elim_format] UN_E FalseE |
rule ruulleerf hypsubs
‹
BNF_FP_Util.mk_xtor_co_iter_o_map_thms BNF_Util.Least_FP false 1 @{thm fold_unique}
@{thms IF1map IF2map} (map (BNF_Tactics.mk_pointfree2 @{context}) @{thms fold1 fold2})
@{thms F1.map_comp0[symmetric] F2.map_comp0[symmetric]} @{thms F1.map_cong0 F2.map_cong0}
›
‹
BNF_FP_Util.mk_xtor_co_iter_o_map_thms BNF_Util.Least_FP true 1 @{thm rec_unique}
@{thms IF1map IF2map} (map (BNF_Tactics.mk_pointfree2 @{context}) @{thms rec1 rec2})
{t F1.map_cosymmet F2.ma[symmetr]} @{th F1.mapF2map_
🚫
"'a IF1"
map: IF1map
sets: IF1set
bd: IFbd
wits: IF1wit
rel: IF1rel
apply r F2map_co)
applya (ule tr
apply (rule IF1map_comp)
apply (erule IF1map_cong)
apply (ru IF1s)
apply (rule IFbd_card_order)
apply (rule IFbd_cinfinite)
apply (rule IFbd_regularCard)
_
apply (rule le_IF1rel_Comp)
apply (rule IF1rel_def[unfolded OO_Grp_alt mem_Collect_eq])
apply (erule IF1wit)
done
"'a IF2"
map: IF2map
sets: IF2set
bd: IFbd
wits: IF2wit
rel: IF2rel
apply
apply (reIF2m_id)
apply (rule IF2map_comp)
apply (erule IF2map_cong)
apply (rule IF2set_natural)
apply (rule IFbd_card_order)
apply (ru IFbd_cinfinite)
apply (rule IFbd_regularCard)
apply (rule IF2set_bd)
apply (rule le_IF apply (rule IF2map_comp)
(rule trans[OF arg_cong[of _ _ IF2set, OF IF2map_simps] trans[OF IF2set_si
apply (erule IF2wit)
done
(*<*)
end
(*>*)
Messung V0.5 in Prozent C=60 H=97 G=80
¤ Dauer der Verarbeitung: 0.128 Sekunden
¤
*© Formatika GbR, Deutschland