# HG changeset patch # User Chengsong # Date 1635861479 0 # Node ID f65444d29e74de48cd9b2366a430a0f789d4f23d # Parent 5499ba68188c18437cc4d74b1e6a753833c9b5e4 a diff -r 5499ba68188c -r f65444d29e74 thys2/Journal/Paper.tex --- a/thys2/Journal/Paper.tex Mon Nov 01 10:52:44 2021 +0000 +++ b/thys2/Journal/Paper.tex Tue Nov 02 13:57:59 2021 +0000 @@ -47,7 +47,7 @@ % \isatagdocument % -\isamarkupsection{Introduction% +\isamarkupsection{Core of the proof% } \isamarkuptrue% % @@ -69,12 +69,93 @@ In the previous work, Ausaf and Urban established the below equality: \begin{lemma} -\isa{{\normalsize{}If\,}\ v\ {\isacharcolon}{\kern0pt}\ {\isacharparenleft}{\kern0pt}r\mbox{$^\downarrow$}{\isacharparenright}{\kern0pt}{\isacharbackslash}{\kern0pt}c\ {\normalsize \,then\,}\ retrieve\ {\isacharparenleft}{\kern0pt}r\mbox{$\bbslash$}c{\isacharparenright}{\kern0pt}\ v\ {\isacharequal}{\kern0pt}\ retrieve\ r\ {\isacharparenleft}{\kern0pt}inj\ {\isacharparenleft}{\kern0pt}r\mbox{$^\downarrow$}{\isacharparenright}{\kern0pt}\ c\ v{\isacharparenright}{\kern0pt}{\isachardot}{\kern0pt}} +\isa{{\normalsize{}If\,}\ v\ {\isacharcolon}{\kern0pt}\ r{\isacharbackslash}{\kern0pt}s\ {\normalsize \,then\,}\ Some\ {\isacharparenleft}{\kern0pt}flex\ r\ id\ s\ v{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ decode\ {\isacharparenleft}{\kern0pt}retrieve\ {\isacharparenleft}{\kern0pt}r\mbox{$^\uparrow$}\mbox{$\bbslash$}s{\isacharparenright}{\kern0pt}\ v{\isacharparenright}{\kern0pt}\ r{\isachardot}{\kern0pt}} +\end{lemma} + +This lemma establishes a link with the lexer without bit-codes. + +With it we get the correctness of bit-coded algorithm. +\begin{lemma} +\isa{lexer\mbox{$_b$}\ r\ s\ {\isacharequal}{\kern0pt}\ lexer\ r\ s} \end{lemma} -This lemma links the derivative of a bit-coded regular expression with -the regular expression itself before the derivative. +However what is not certain is whether we can add simplification +to the bit-coded algorithm, without breaking the correct lexing output. +This might sound trivial in the case of producing a YES/NO answer, +but once we require a lexing output to be produced (which is required +in applications like compiler front-end, malicious attack domain extraction, +etc.), it is not straightforward if we still extract what is needed according +to the POSIX standard. + +By simplification, we mean specifically the following rules: + +\begin{center} + \begin{tabular}{lcl} + \isa{\mbox{}\inferrule{\mbox{}}{\mbox{ASEQ\ bs\ AZERO\ r\isactrlsub {\isadigit{2}}\ {\isasymleadsto}\ AZERO}}}\\ + \isa{\mbox{}\inferrule{\mbox{}}{\mbox{ASEQ\ bs\ r\isactrlsub {\isadigit{1}}\ AZERO\ {\isasymleadsto}\ AZERO}}}\\ + \isa{\mbox{}\inferrule{\mbox{}}{\mbox{ASEQ\ bs\ {\isacharparenleft}{\kern0pt}AONE\ bs\isactrlsub {\isadigit{1}}{\isacharparenright}{\kern0pt}\ r\isactrlsub {\isadigit{1}}\ {\isasymleadsto}\ fuse\ {\isacharparenleft}{\kern0pt}bs\ {\isacharat}{\kern0pt}\ bs\isactrlsub {\isadigit{1}}{\isacharparenright}{\kern0pt}\ r\isactrlsub {\isadigit{1}}}}}\\ + \isa{\mbox{}\inferrule{\mbox{bs\ {\isasymleadsto}\ r\isactrlsub {\isadigit{1}}}}{\mbox{ASEQ\ bs\ bs\ r{\isadigit{3}}{\isachardot}{\kern0pt}{\isadigit{0}}\ {\isasymleadsto}\ ASEQ\ bs\ r\isactrlsub {\isadigit{1}}\ r{\isadigit{3}}{\isachardot}{\kern0pt}{\isadigit{0}}}}}\\ + \isa{\mbox{}\inferrule{\mbox{bs\ {\isasymleadsto}\ r\isactrlsub {\isadigit{2}}}}{\mbox{ASEQ\ bs\ r{\isadigit{1}}{\isachardot}{\kern0pt}{\isadigit{0}}\ bs\ {\isasymleadsto}\ ASEQ\ bs\ r{\isadigit{1}}{\isachardot}{\kern0pt}{\isadigit{0}}\ r\isactrlsub {\isadigit{2}}}}}\\ + \isa{\mbox{}\inferrule{\mbox{bs\ {\isasymleadsto}\ r\isactrlsub {\isadigit{1}}}}{\mbox{AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}{\isachardot}{\kern0pt}{\isadigit{0}}\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}bs{\isacharbrackright}{\kern0pt}\ {\isacharat}{\kern0pt}\ rs{\isadigit{2}}{\isachardot}{\kern0pt}{\isadigit{0}}{\isacharparenright}{\kern0pt}\ {\isasymleadsto}\ AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}{\isachardot}{\kern0pt}{\isadigit{0}}\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}r\isactrlsub {\isadigit{1}}{\isacharbrackright}{\kern0pt}\ {\isacharat}{\kern0pt}\ rs{\isadigit{2}}{\isachardot}{\kern0pt}{\isadigit{0}}{\isacharparenright}{\kern0pt}}}}\\ + \isa{\mbox{}\inferrule{\mbox{}}{\mbox{AALTs\ bs\ {\isacharparenleft}{\kern0pt}r\isactrlsub {\isadigit{2}}\ {\isacharat}{\kern0pt}\ AZERO\mbox{$\,$}{\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\mbox{$\,$}rsb{\isacharparenright}{\kern0pt}\ {\isasymleadsto}\ AALTs\ bs\ {\isacharparenleft}{\kern0pt}r\isactrlsub {\isadigit{2}}\ {\isacharat}{\kern0pt}\ rsb{\isacharparenright}{\kern0pt}}}}\\ + \isa{\mbox{}\inferrule{\mbox{}}{\mbox{AALTs\ bs\ {\isacharparenleft}{\kern0pt}r\isactrlsub {\isadigit{1}}\ {\isacharat}{\kern0pt}\ AALTs\ bs{\isadigit{1}}{\isachardot}{\kern0pt}{\isadigit{0}}\ rs{\isadigit{1}}{\isachardot}{\kern0pt}{\isadigit{0}}\mbox{$\,$}{\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\mbox{$\,$}rsb{\isacharparenright}{\kern0pt}\ {\isasymleadsto}\ AALTs\ bs\ {\isacharparenleft}{\kern0pt}r\isactrlsub {\isadigit{1}}\ {\isacharat}{\kern0pt}\ map\ {\isacharparenleft}{\kern0pt}fuse\ bs{\isadigit{1}}{\isachardot}{\kern0pt}{\isadigit{0}}{\isacharparenright}{\kern0pt}\ rs{\isadigit{1}}{\isachardot}{\kern0pt}{\isadigit{0}}\ {\isacharat}{\kern0pt}\ rsb{\isacharparenright}{\kern0pt}}}}\\ + \isa{\mbox{}\inferrule{\mbox{}}{\mbox{AALTs\ bs\ {\isacharparenleft}{\kern0pt}map\ {\isacharparenleft}{\kern0pt}fuse\ r\isactrlsub {\isadigit{2}}{\isacharparenright}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}\ {\isasymleadsto}\ AALTs\ {\isacharparenleft}{\kern0pt}bs\ {\isacharat}{\kern0pt}\ r\isactrlsub {\isadigit{2}}{\isacharparenright}{\kern0pt}\ rs}}}\\ + \isa{\mbox{}\inferrule{\mbox{}}{\mbox{AALTs\ {\isacharparenleft}{\kern0pt}bs\ {\isacharat}{\kern0pt}\ r\isactrlsub {\isadigit{1}}{\isacharparenright}{\kern0pt}\ rs\ {\isasymleadsto}\ AALTs\ bs\ {\isacharparenleft}{\kern0pt}map\ {\isacharparenleft}{\kern0pt}fuse\ r\isactrlsub {\isadigit{1}}{\isacharparenright}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}}}}\\ + \isa{\mbox{}\inferrule{\mbox{}}{\mbox{AALTs\ bs\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isasymleadsto}\ AZERO}}}\\ + \isa{\mbox{}\inferrule{\mbox{}}{\mbox{AALTs\ bs\ {\isacharbrackleft}{\kern0pt}r\isactrlsub {\isadigit{1}}{\isacharbrackright}{\kern0pt}\ {\isasymleadsto}\ fuse\ bs\ r\isactrlsub {\isadigit{1}}}}}\\ + \isa{\mbox{}\inferrule{\mbox{bs\mbox{$^\downarrow$}\ {\isacharequal}{\kern0pt}\ r\isactrlsub {\isadigit{2}}\mbox{$^\downarrow$}}}{\mbox{AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}bs{\isacharbrackright}{\kern0pt}\ {\isacharat}{\kern0pt}\ rsb\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}r\isactrlsub {\isadigit{2}}{\isacharbrackright}{\kern0pt}\ {\isacharat}{\kern0pt}\ rsc{\isacharparenright}{\kern0pt}\ {\isasymleadsto}\ AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}bs{\isacharbrackright}{\kern0pt}\ {\isacharat}{\kern0pt}\ rsb\ {\isacharat}{\kern0pt}\ rsc{\isacharparenright}{\kern0pt}}}}\\ + + + \isa{\mbox{}\inferrule{\mbox{}}{\mbox{Empty\ {\isacharcolon}{\kern0pt}\ \isactrlbold {\isadigit{1}}}}} & + \isa{\mbox{}\inferrule{\mbox{}}{\mbox{Char\ c\ {\isacharcolon}{\kern0pt}\ c}}}\\[4mm] + \isa{\mbox{}\inferrule{\mbox{v\isactrlsub {\isadigit{1}}\ {\isacharcolon}{\kern0pt}\ r\isactrlsub {\isadigit{1}}}}{\mbox{Left\ v\isactrlsub {\isadigit{1}}\ {\isacharcolon}{\kern0pt}\ r\isactrlsub {\isadigit{1}}\ {\isacharplus}{\kern0pt}\ r\isactrlsub {\isadigit{2}}}}} & + \isa{\mbox{}\inferrule{\mbox{v\isactrlsub {\isadigit{2}}\ {\isacharcolon}{\kern0pt}\ r\isactrlsub {\isadigit{1}}}}{\mbox{Right\ v\isactrlsub {\isadigit{2}}\ {\isacharcolon}{\kern0pt}\ r\isactrlsub {\isadigit{2}}\ {\isacharplus}{\kern0pt}\ r\isactrlsub {\isadigit{1}}}}}\\[4mm] + \isa{\mbox{}\inferrule{\mbox{v\isactrlsub {\isadigit{1}}\ {\isacharcolon}{\kern0pt}\ r\isactrlsub {\isadigit{1}}}\\\ \mbox{v\isactrlsub {\isadigit{2}}\ {\isacharcolon}{\kern0pt}\ r\isactrlsub {\isadigit{2}}}}{\mbox{Seq\ v\isactrlsub {\isadigit{1}}\ v\isactrlsub {\isadigit{2}}\ {\isacharcolon}{\kern0pt}\ r\isactrlsub {\isadigit{1}}\ {\isasymcdot}\ r\isactrlsub {\isadigit{2}}}}} & + \isa{\mbox{}\inferrule{\mbox{{\isasymforall}v{\isasymin}vs{\isachardot}{\kern0pt}\ v\ {\isacharcolon}{\kern0pt}\ r\ {\isasymand}\ {\isacharbar}{\kern0pt}v{\isacharbar}{\kern0pt}\ {\isasymnoteq}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}}}{\mbox{Stars\ vs\ {\isacharcolon}{\kern0pt}\ r\isactrlsup {\isasymstar}}}} + + + \end{tabular} +\end{center} + +And these can be made compact by the following simplification function: + +\begin{center} + \begin{tabular}{lcl} + \isa{bsimp\ {\isacharparenleft}{\kern0pt}ASEQ\ bs\ r\isactrlsub {\isadigit{1}}\ r\isactrlsub {\isadigit{2}}{\isacharparenright}{\kern0pt}} & $\dn$ & \isa{bsimp{\isacharunderscore}{\kern0pt}ASEQ\ bs\ {\isacharparenleft}{\kern0pt}bsimp\ r\isactrlsub {\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bsimp\ r\isactrlsub {\isadigit{2}}{\isacharparenright}{\kern0pt}}\\ + \isa{bsimp\ {\isacharparenleft}{\kern0pt}AALTs\ bs{\isadigit{1}}{\isachardot}{\kern0pt}{\isadigit{0}}\ rs{\isacharparenright}{\kern0pt}} & $\dn$ & \isa{bsimp{\isacharunderscore}{\kern0pt}AALTs\ bs{\isadigit{1}}{\isachardot}{\kern0pt}{\isadigit{0}}\ {\isacharparenleft}{\kern0pt}distinctBy\ {\isacharparenleft}{\kern0pt}flts\ {\isacharparenleft}{\kern0pt}map\ bsimp\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ erase\ {\isasymemptyset}{\isacharparenright}{\kern0pt}}\\ + \isa{bsimp\ AZERO} & $\dn$ & \isa{AZERO}\\ + \isa{{\isacharparenleft}{\kern0pt}r\isactrlsub {\isadigit{1}}\ {\isacharplus}{\kern0pt}\ r\isactrlsub {\isadigit{2}}{\isacharparenright}{\kern0pt}\mbox{$^\uparrow$}} & $\dn$ & \isa{AALT\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}fuse\ {\isacharbrackleft}{\kern0pt}Z{\isacharbrackright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}r\isactrlsub {\isadigit{1}}\mbox{$^\uparrow$}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}fuse\ {\isacharbrackleft}{\kern0pt}S{\isacharbrackright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}r\isactrlsub {\isadigit{2}}\mbox{$^\uparrow$}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}}\\ +\end{tabular} +\end{center} + +The core idea of the proof is that two regular expressions, +if "isomorphic" up to a finite number of rewrite steps, will +remain so when we take derivative on both of them. +This can be expressed by the following rewrite relation lemma: +\begin{lemma} +\isa{{\isacharparenleft}{\kern0pt}r\mbox{$\bbslash$}s{\isacharparenright}{\kern0pt}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ bders{\isacharunderscore}{\kern0pt}simp\ r\ s} +\end{lemma}% +\end{isamarkuptext}\isamarkuptrue% +% +\isadelimdocument +% +\endisadelimdocument +% +\isatagdocument +% +\isamarkupsection{Introduction% +} +\isamarkuptrue% +% +\endisatagdocument +{\isafolddocument}% +% +\isadelimdocument +% +\endisadelimdocument +% +\begin{isamarkuptext}% Brzozowski \cite{Brzozowski1964} introduced the notion of the {\em derivative} \isa{r{\isacharbackslash}{\kern0pt}c} of a regular expression \isa{r} w.r.t.\ a character~\isa{c}, and showed that it gave a simple solution to the @@ -1586,1311 +1667,1311 @@ \end{isabellebody}% \endinput %:%file=~/Dropbox/Workspace/journalpaper/lexing/thys2/Journal/Paper.thy%:% -%:%50=136%:% -%:%62=141%:% -%:%63=142%:% -%:%64=143%:% -%:%65=144%:% -%:%66=145%:% -%:%67=146%:% -%:%68=147%:% -%:%69=148%:% -%:%70=149%:% -%:%71=150%:% -%:%72=151%:% -%:%73=152%:% -%:%74=153%:% -%:%75=154%:% -%:%76=155%:% -%:%77=156%:% -%:%78=157%:% -%:%79=158%:% -%:%80=159%:% -%:%81=160%:% -%:%81=161%:% -%:%82=162%:% -%:%83=163%:% -%:%84=164%:% -%:%85=165%:% -%:%86=166%:% -%:%87=167%:% -%:%88=168%:% -%:%89=169%:% -%:%90=170%:% -%:%91=171%:% -%:%92=172%:% -%:%93=173%:% -%:%94=174%:% -%:%95=175%:% -%:%96=176%:% -%:%97=177%:% -%:%98=178%:% -%:%99=179%:% -%:%100=180%:% -%:%101=181%:% -%:%102=182%:% -%:%103=183%:% -%:%104=184%:% -%:%105=185%:% -%:%106=186%:% -%:%107=187%:% -%:%108=188%:% -%:%109=189%:% -%:%110=190%:% -%:%111=191%:% -%:%112=192%:% -%:%113=193%:% -%:%114=194%:% -%:%115=195%:% -%:%116=196%:% -%:%117=197%:% -%:%118=198%:% -%:%119=199%:% -%:%120=200%:% -%:%121=201%:% -%:%122=202%:% -%:%123=203%:% -%:%124=204%:% -%:%125=205%:% -%:%126=206%:% -%:%127=207%:% -%:%128=208%:% -%:%129=209%:% -%:%130=210%:% -%:%131=211%:% -%:%132=212%:% -%:%133=213%:% -%:%134=214%:% -%:%135=215%:% -%:%136=216%:% -%:%137=217%:% -%:%138=218%:% -%:%139=219%:% -%:%140=220%:% -%:%141=221%:% -%:%142=222%:% -%:%143=223%:% -%:%144=224%:% -%:%145=225%:% -%:%145=226%:% -%:%146=227%:% -%:%147=228%:% -%:%148=229%:% -%:%149=230%:% -%:%150=231%:% -%:%151=232%:% -%:%152=233%:% -%:%153=234%:% -%:%154=235%:% -%:%155=236%:% -%:%156=237%:% -%:%157=238%:% -%:%158=239%:% -%:%159=240%:% -%:%160=241%:% -%:%161=242%:% -%:%162=243%:% -%:%163=244%:% -%:%164=245%:% -%:%165=246%:% -%:%166=247%:% -%:%167=248%:% -%:%168=249%:% -%:%169=250%:% -%:%170=251%:% -%:%171=252%:% -%:%172=253%:% -%:%173=254%:% -%:%174=255%:% -%:%175=256%:% -%:%176=257%:% -%:%177=258%:% -%:%178=259%:% -%:%179=260%:% -%:%180=261%:% -%:%181=262%:% -%:%182=263%:% -%:%183=264%:% -%:%184=265%:% -%:%185=266%:% -%:%186=267%:% -%:%187=268%:% -%:%188=269%:% -%:%189=270%:% -%:%190=271%:% -%:%191=272%:% -%:%192=273%:% -%:%193=274%:% -%:%194=275%:% -%:%195=276%:% -%:%196=277%:% -%:%197=278%:% -%:%198=279%:% -%:%199=280%:% -%:%200=281%:% -%:%201=282%:% -%:%202=283%:% -%:%203=284%:% -%:%204=285%:% -%:%205=286%:% -%:%206=287%:% -%:%207=288%:% -%:%208=289%:% -%:%209=290%:% -%:%210=291%:% -%:%211=292%:% -%:%212=293%:% -%:%213=294%:% -%:%214=295%:% -%:%215=296%:% -%:%216=297%:% -%:%217=298%:% -%:%218=299%:% -%:%219=300%:% -%:%220=301%:% -%:%221=302%:% -%:%222=303%:% -%:%223=304%:% -%:%224=305%:% -%:%225=306%:% -%:%226=307%:% -%:%227=308%:% -%:%228=309%:% -%:%229=310%:% -%:%230=311%:% -%:%231=312%:% -%:%232=313%:% -%:%233=314%:% -%:%234=315%:% -%:%235=316%:% -%:%236=317%:% -%:%237=318%:% -%:%238=319%:% -%:%239=320%:% -%:%240=321%:% -%:%241=322%:% -%:%242=323%:% -%:%243=324%:% -%:%244=325%:% -%:%245=326%:% -%:%246=327%:% -%:%247=328%:% -%:%248=329%:% -%:%249=330%:% -%:%250=331%:% -%:%259=335%:% +%:%50=134%:% +%:%62=136%:% +%:%63=137%:% +%:%64=138%:% +%:%65=139%:% +%:%66=140%:% +%:%67=141%:% +%:%68=142%:% +%:%69=143%:% +%:%70=144%:% +%:%71=145%:% +%:%72=146%:% +%:%73=147%:% +%:%74=148%:% +%:%75=149%:% +%:%76=150%:% +%:%77=151%:% +%:%78=152%:% +%:%79=153%:% +%:%80=154%:% +%:%81=155%:% +%:%82=156%:% +%:%83=157%:% +%:%84=158%:% +%:%85=159%:% +%:%86=160%:% +%:%87=161%:% +%:%88=162%:% +%:%89=163%:% +%:%90=164%:% +%:%91=165%:% +%:%92=166%:% +%:%93=167%:% +%:%94=168%:% +%:%95=169%:% +%:%96=170%:% +%:%97=171%:% +%:%98=172%:% +%:%99=173%:% +%:%100=174%:% +%:%101=175%:% +%:%102=176%:% +%:%103=177%:% +%:%104=178%:% +%:%105=179%:% +%:%106=180%:% +%:%107=181%:% +%:%108=182%:% +%:%109=183%:% +%:%110=184%:% +%:%111=185%:% +%:%112=186%:% +%:%113=187%:% +%:%114=188%:% +%:%115=189%:% +%:%116=190%:% +%:%117=191%:% +%:%118=192%:% +%:%119=193%:% +%:%120=194%:% +%:%121=195%:% +%:%122=196%:% +%:%123=197%:% +%:%124=198%:% +%:%125=199%:% +%:%126=200%:% +%:%127=201%:% +%:%128=202%:% +%:%129=203%:% +%:%130=204%:% +%:%131=205%:% +%:%132=206%:% +%:%133=207%:% +%:%134=208%:% +%:%135=209%:% +%:%136=210%:% +%:%137=211%:% +%:%138=212%:% +%:%147=217%:% +%:%159=223%:% +%:%160=224%:% +%:%161=225%:% +%:%162=226%:% +%:%162=227%:% +%:%163=228%:% +%:%164=229%:% +%:%165=230%:% +%:%166=231%:% +%:%167=232%:% +%:%168=233%:% +%:%169=234%:% +%:%170=235%:% +%:%171=236%:% +%:%172=237%:% +%:%173=238%:% +%:%174=239%:% +%:%175=240%:% +%:%176=241%:% +%:%177=242%:% +%:%178=243%:% +%:%179=244%:% +%:%180=245%:% +%:%181=246%:% +%:%182=247%:% +%:%183=248%:% +%:%184=249%:% +%:%185=250%:% +%:%186=251%:% +%:%187=252%:% +%:%188=253%:% +%:%189=254%:% +%:%190=255%:% +%:%191=256%:% +%:%192=257%:% +%:%193=258%:% +%:%194=259%:% +%:%195=260%:% +%:%196=261%:% +%:%197=262%:% +%:%198=263%:% +%:%199=264%:% +%:%200=265%:% +%:%201=266%:% +%:%202=267%:% +%:%203=268%:% +%:%204=269%:% +%:%205=270%:% +%:%206=271%:% +%:%207=272%:% +%:%208=273%:% +%:%209=274%:% +%:%210=275%:% +%:%211=276%:% +%:%212=277%:% +%:%213=278%:% +%:%214=279%:% +%:%215=280%:% +%:%216=281%:% +%:%217=282%:% +%:%218=283%:% +%:%219=284%:% +%:%220=285%:% +%:%221=286%:% +%:%222=287%:% +%:%223=288%:% +%:%224=289%:% +%:%225=290%:% +%:%226=291%:% +%:%226=292%:% +%:%227=293%:% +%:%228=294%:% +%:%229=295%:% +%:%230=296%:% +%:%231=297%:% +%:%232=298%:% +%:%233=299%:% +%:%234=300%:% +%:%235=301%:% +%:%236=302%:% +%:%237=303%:% +%:%238=304%:% +%:%239=305%:% +%:%240=306%:% +%:%241=307%:% +%:%242=308%:% +%:%243=309%:% +%:%244=310%:% +%:%245=311%:% +%:%246=312%:% +%:%247=313%:% +%:%248=314%:% +%:%249=315%:% +%:%250=316%:% +%:%251=317%:% +%:%252=318%:% +%:%253=319%:% +%:%254=320%:% +%:%255=321%:% +%:%256=322%:% +%:%257=323%:% +%:%258=324%:% +%:%259=325%:% +%:%260=326%:% +%:%261=327%:% +%:%262=328%:% +%:%263=329%:% +%:%264=330%:% +%:%265=331%:% +%:%266=332%:% +%:%267=333%:% +%:%268=334%:% +%:%269=335%:% +%:%270=336%:% %:%271=337%:% %:%272=338%:% -%:%272=339%:% -%:%273=340%:% -%:%274=341%:% -%:%275=342%:% -%:%276=343%:% -%:%277=344%:% -%:%278=345%:% -%:%279=346%:% -%:%280=347%:% -%:%281=348%:% -%:%282=349%:% -%:%283=350%:% -%:%284=351%:% -%:%285=352%:% -%:%286=353%:% -%:%287=354%:% -%:%288=355%:% -%:%289=356%:% -%:%290=357%:% -%:%291=358%:% -%:%292=359%:% -%:%293=360%:% -%:%294=361%:% -%:%295=362%:% -%:%296=363%:% -%:%297=364%:% -%:%298=365%:% -%:%299=366%:% -%:%300=367%:% -%:%301=368%:% -%:%302=369%:% -%:%303=370%:% -%:%304=371%:% -%:%305=372%:% -%:%306=373%:% -%:%307=374%:% -%:%308=375%:% -%:%309=376%:% -%:%310=377%:% -%:%311=378%:% -%:%311=379%:% -%:%312=380%:% -%:%313=381%:% -%:%314=382%:% -%:%315=383%:% -%:%316=384%:% -%:%316=385%:% -%:%317=386%:% -%:%318=387%:% -%:%319=388%:% -%:%320=389%:% -%:%321=390%:% -%:%322=391%:% -%:%323=392%:% -%:%324=393%:% -%:%325=394%:% -%:%326=395%:% -%:%327=396%:% -%:%328=397%:% -%:%329=398%:% -%:%330=399%:% -%:%331=400%:% -%:%332=401%:% -%:%333=402%:% -%:%334=403%:% -%:%335=404%:% -%:%336=405%:% -%:%337=406%:% -%:%338=407%:% -%:%339=408%:% -%:%340=409%:% -%:%341=410%:% -%:%342=411%:% -%:%343=412%:% -%:%344=413%:% -%:%345=414%:% -%:%346=415%:% -%:%347=416%:% -%:%348=417%:% -%:%349=418%:% -%:%350=419%:% -%:%351=420%:% -%:%352=421%:% -%:%353=422%:% -%:%354=423%:% -%:%355=424%:% -%:%356=425%:% -%:%357=426%:% -%:%358=427%:% -%:%359=428%:% -%:%360=429%:% -%:%361=430%:% -%:%362=431%:% -%:%363=432%:% -%:%364=433%:% -%:%365=434%:% -%:%366=435%:% -%:%367=436%:% -%:%368=437%:% -%:%369=438%:% -%:%370=439%:% -%:%371=440%:% -%:%372=441%:% -%:%373=442%:% -%:%374=443%:% -%:%375=444%:% -%:%376=445%:% -%:%377=446%:% -%:%378=447%:% -%:%379=448%:% -%:%380=449%:% -%:%381=450%:% -%:%382=451%:% -%:%383=452%:% -%:%384=453%:% -%:%385=454%:% -%:%386=455%:% -%:%387=456%:% -%:%388=457%:% -%:%389=458%:% -%:%390=459%:% -%:%391=460%:% -%:%392=461%:% -%:%393=462%:% -%:%394=463%:% -%:%395=464%:% -%:%396=465%:% -%:%397=466%:% -%:%398=467%:% -%:%399=468%:% -%:%400=469%:% -%:%401=470%:% -%:%402=471%:% -%:%403=472%:% -%:%404=473%:% -%:%405=474%:% -%:%414=478%:% -%:%426=482%:% -%:%427=483%:% -%:%428=484%:% -%:%429=485%:% -%:%430=486%:% -%:%431=487%:% -%:%432=488%:% -%:%433=489%:% -%:%434=490%:% -%:%435=491%:% -%:%436=492%:% -%:%437=493%:% -%:%438=494%:% -%:%439=495%:% -%:%440=496%:% -%:%441=497%:% -%:%442=498%:% -%:%443=499%:% -%:%444=500%:% -%:%445=501%:% -%:%446=502%:% -%:%447=503%:% -%:%448=504%:% -%:%449=505%:% -%:%450=506%:% -%:%451=507%:% -%:%452=508%:% -%:%453=509%:% -%:%454=510%:% -%:%455=511%:% -%:%456=512%:% -%:%457=513%:% -%:%458=514%:% -%:%459=515%:% -%:%460=516%:% -%:%461=517%:% -%:%462=518%:% -%:%463=519%:% -%:%464=520%:% -%:%465=521%:% -%:%466=522%:% -%:%467=523%:% -%:%468=524%:% -%:%469=525%:% -%:%470=526%:% -%:%471=527%:% -%:%472=528%:% -%:%473=529%:% -%:%474=530%:% -%:%475=531%:% -%:%476=532%:% -%:%477=533%:% -%:%478=534%:% -%:%479=535%:% -%:%480=536%:% -%:%481=537%:% -%:%482=538%:% -%:%483=539%:% -%:%484=540%:% -%:%485=541%:% -%:%486=542%:% -%:%487=543%:% -%:%488=544%:% -%:%489=545%:% -%:%490=546%:% -%:%491=547%:% -%:%492=548%:% -%:%493=549%:% -%:%494=550%:% -%:%495=551%:% -%:%496=552%:% -%:%497=553%:% -%:%498=554%:% -%:%499=555%:% -%:%500=556%:% -%:%501=557%:% -%:%502=558%:% -%:%503=559%:% -%:%504=560%:% -%:%505=561%:% -%:%506=562%:% -%:%507=563%:% -%:%508=564%:% -%:%509=565%:% -%:%510=566%:% -%:%511=567%:% -%:%512=568%:% -%:%513=569%:% -%:%514=570%:% -%:%515=571%:% -%:%516=572%:% -%:%517=573%:% -%:%518=574%:% -%:%519=575%:% -%:%520=576%:% -%:%521=577%:% -%:%522=578%:% -%:%523=579%:% -%:%524=580%:% -%:%525=581%:% -%:%526=582%:% -%:%527=583%:% -%:%528=584%:% -%:%529=585%:% -%:%530=586%:% -%:%531=587%:% -%:%532=588%:% -%:%533=589%:% -%:%534=590%:% -%:%535=591%:% -%:%536=592%:% -%:%537=593%:% -%:%538=594%:% -%:%539=595%:% -%:%540=596%:% -%:%540=597%:% -%:%541=598%:% -%:%541=599%:% -%:%542=600%:% -%:%543=601%:% -%:%543=602%:% -%:%544=603%:% -%:%545=604%:% -%:%546=605%:% -%:%547=606%:% -%:%548=607%:% -%:%549=608%:% -%:%550=609%:% -%:%551=610%:% -%:%552=611%:% -%:%553=612%:% -%:%554=613%:% -%:%555=614%:% -%:%556=615%:% -%:%557=616%:% -%:%558=617%:% -%:%559=618%:% -%:%560=619%:% -%:%561=620%:% -%:%562=621%:% -%:%563=622%:% -%:%564=623%:% -%:%565=624%:% -%:%566=625%:% -%:%567=626%:% -%:%568=627%:% -%:%569=628%:% -%:%570=629%:% -%:%571=630%:% -%:%572=631%:% -%:%573=632%:% -%:%574=633%:% -%:%575=634%:% -%:%576=635%:% -%:%577=636%:% -%:%578=637%:% -%:%579=638%:% -%:%580=639%:% -%:%581=640%:% -%:%582=641%:% -%:%583=642%:% -%:%584=643%:% -%:%585=644%:% -%:%586=645%:% -%:%587=646%:% -%:%588=647%:% -%:%589=648%:% -%:%590=649%:% -%:%591=650%:% -%:%592=651%:% -%:%593=652%:% -%:%594=653%:% -%:%595=654%:% -%:%596=655%:% -%:%597=656%:% -%:%598=657%:% -%:%599=658%:% -%:%599=659%:% -%:%599=660%:% -%:%600=661%:% -%:%601=662%:% -%:%602=663%:% -%:%603=664%:% -%:%604=665%:% -%:%605=666%:% -%:%606=667%:% -%:%607=668%:% -%:%608=669%:% -%:%608=670%:% -%:%609=671%:% -%:%610=672%:% -%:%611=673%:% -%:%612=674%:% -%:%613=675%:% -%:%614=676%:% -%:%615=677%:% -%:%616=678%:% -%:%617=679%:% -%:%618=680%:% -%:%619=681%:% -%:%620=682%:% -%:%621=683%:% -%:%622=684%:% -%:%623=685%:% -%:%624=686%:% -%:%625=687%:% -%:%626=688%:% -%:%627=689%:% -%:%628=690%:% -%:%629=691%:% -%:%630=692%:% -%:%631=693%:% -%:%632=694%:% -%:%633=695%:% -%:%634=696%:% -%:%635=697%:% -%:%636=698%:% -%:%637=699%:% -%:%638=700%:% -%:%639=701%:% -%:%640=702%:% -%:%641=703%:% -%:%642=704%:% -%:%643=705%:% -%:%643=706%:% -%:%644=707%:% -%:%645=708%:% -%:%646=709%:% -%:%647=710%:% -%:%648=711%:% -%:%649=712%:% -%:%650=713%:% -%:%650=714%:% -%:%651=715%:% -%:%652=716%:% -%:%653=717%:% -%:%653=718%:% -%:%654=719%:% -%:%655=720%:% -%:%656=721%:% -%:%657=722%:% -%:%658=723%:% -%:%659=724%:% -%:%660=725%:% -%:%661=726%:% -%:%662=727%:% -%:%663=728%:% -%:%664=729%:% -%:%664=730%:% -%:%665=731%:% -%:%666=732%:% -%:%667=733%:% -%:%668=734%:% -%:%668=735%:% -%:%669=736%:% -%:%670=737%:% -%:%671=738%:% -%:%672=739%:% -%:%673=740%:% -%:%674=741%:% -%:%675=742%:% -%:%676=743%:% -%:%677=744%:% -%:%678=745%:% -%:%679=746%:% -%:%680=747%:% -%:%681=748%:% -%:%682=749%:% -%:%683=750%:% -%:%684=751%:% -%:%685=752%:% -%:%686=753%:% -%:%687=754%:% -%:%688=755%:% -%:%689=756%:% -%:%690=757%:% -%:%691=758%:% -%:%692=759%:% -%:%693=760%:% -%:%694=761%:% -%:%695=762%:% -%:%696=763%:% -%:%697=764%:% -%:%698=765%:% -%:%699=766%:% -%:%700=767%:% -%:%701=768%:% -%:%702=769%:% -%:%703=770%:% -%:%704=771%:% -%:%705=772%:% -%:%706=773%:% -%:%707=774%:% -%:%708=775%:% -%:%709=776%:% -%:%710=777%:% -%:%711=778%:% -%:%712=779%:% -%:%713=780%:% -%:%714=781%:% -%:%715=782%:% -%:%716=783%:% -%:%717=784%:% -%:%718=785%:% -%:%719=786%:% -%:%720=787%:% -%:%721=788%:% -%:%722=789%:% -%:%723=790%:% -%:%724=791%:% -%:%725=792%:% -%:%726=793%:% -%:%726=794%:% -%:%727=795%:% -%:%728=796%:% -%:%729=797%:% -%:%730=798%:% -%:%731=799%:% -%:%732=800%:% -%:%733=801%:% -%:%734=802%:% -%:%735=803%:% -%:%736=804%:% -%:%737=805%:% -%:%738=806%:% -%:%739=807%:% -%:%740=808%:% -%:%741=809%:% -%:%742=810%:% -%:%743=811%:% -%:%744=812%:% -%:%745=813%:% -%:%746=814%:% -%:%747=815%:% -%:%748=816%:% -%:%749=817%:% -%:%750=818%:% -%:%751=819%:% -%:%752=820%:% -%:%753=821%:% -%:%754=822%:% -%:%755=823%:% -%:%756=824%:% -%:%757=825%:% -%:%758=826%:% -%:%759=827%:% -%:%759=828%:% -%:%760=829%:% -%:%761=830%:% -%:%762=831%:% -%:%763=832%:% -%:%764=833%:% -%:%765=834%:% -%:%766=835%:% -%:%767=836%:% -%:%768=837%:% -%:%769=838%:% -%:%770=839%:% -%:%771=840%:% -%:%772=841%:% -%:%773=842%:% -%:%774=843%:% -%:%775=844%:% -%:%776=845%:% -%:%777=846%:% -%:%778=847%:% -%:%779=848%:% -%:%780=849%:% -%:%781=850%:% -%:%782=851%:% -%:%783=852%:% -%:%784=853%:% -%:%785=854%:% -%:%786=855%:% -%:%787=856%:% -%:%788=857%:% -%:%789=858%:% -%:%789=859%:% -%:%790=860%:% -%:%791=861%:% -%:%792=862%:% -%:%793=863%:% -%:%794=864%:% -%:%795=865%:% -%:%796=866%:% -%:%797=867%:% -%:%797=868%:% -%:%798=869%:% -%:%799=870%:% -%:%800=871%:% -%:%801=872%:% -%:%802=873%:% -%:%803=874%:% -%:%804=875%:% -%:%805=876%:% -%:%806=877%:% -%:%807=878%:% -%:%808=879%:% -%:%809=880%:% -%:%810=881%:% -%:%811=882%:% -%:%812=883%:% -%:%813=884%:% -%:%814=885%:% -%:%815=886%:% -%:%816=887%:% -%:%817=888%:% -%:%818=889%:% -%:%819=890%:% -%:%820=891%:% -%:%821=892%:% -%:%822=893%:% -%:%823=894%:% -%:%824=895%:% -%:%825=896%:% -%:%826=897%:% -%:%827=898%:% -%:%828=899%:% -%:%829=900%:% -%:%830=901%:% -%:%831=902%:% -%:%832=903%:% -%:%833=904%:% -%:%834=905%:% -%:%834=906%:% -%:%834=907%:% -%:%835=908%:% -%:%835=909%:% -%:%835=910%:% -%:%836=911%:% -%:%837=912%:% -%:%837=913%:% -%:%838=914%:% -%:%839=915%:% -%:%840=916%:% -%:%841=917%:% -%:%842=918%:% -%:%843=919%:% -%:%844=920%:% -%:%845=921%:% -%:%846=922%:% -%:%847=923%:% -%:%848=924%:% -%:%849=925%:% -%:%850=926%:% -%:%851=927%:% -%:%852=928%:% -%:%853=929%:% -%:%854=930%:% -%:%855=931%:% -%:%856=932%:% -%:%857=933%:% -%:%858=934%:% -%:%859=935%:% -%:%860=936%:% -%:%861=937%:% -%:%862=938%:% -%:%863=939%:% -%:%864=940%:% -%:%865=941%:% -%:%866=942%:% -%:%867=943%:% -%:%868=944%:% -%:%869=945%:% -%:%870=946%:% -%:%871=947%:% -%:%871=948%:% -%:%872=949%:% -%:%873=950%:% -%:%874=951%:% -%:%874=952%:% -%:%874=953%:% -%:%874=954%:% -%:%875=955%:% -%:%876=956%:% -%:%877=957%:% -%:%878=958%:% -%:%879=959%:% -%:%880=960%:% -%:%881=961%:% -%:%882=962%:% -%:%883=963%:% -%:%884=964%:% -%:%885=965%:% -%:%886=966%:% -%:%887=967%:% -%:%888=968%:% -%:%889=969%:% -%:%890=970%:% -%:%891=971%:% -%:%892=972%:% -%:%893=973%:% -%:%894=974%:% -%:%895=975%:% -%:%896=976%:% -%:%897=977%:% -%:%898=978%:% -%:%899=979%:% -%:%900=980%:% -%:%901=981%:% -%:%902=982%:% -%:%903=983%:% -%:%904=984%:% -%:%905=985%:% -%:%906=986%:% -%:%907=987%:% -%:%908=988%:% -%:%909=989%:% -%:%910=990%:% -%:%911=991%:% -%:%920=995%:% -%:%932=999%:% -%:%933=1000%:% -%:%934=1001%:% -%:%935=1002%:% -%:%936=1003%:% -%:%937=1004%:% -%:%938=1005%:% -%:%939=1006%:% -%:%940=1007%:% -%:%941=1008%:% -%:%942=1009%:% -%:%943=1010%:% -%:%944=1011%:% -%:%945=1012%:% -%:%946=1013%:% -%:%947=1014%:% -%:%948=1015%:% -%:%949=1016%:% -%:%950=1017%:% -%:%951=1018%:% -%:%952=1019%:% -%:%953=1020%:% -%:%954=1021%:% +%:%273=339%:% +%:%274=340%:% +%:%275=341%:% +%:%276=342%:% +%:%277=343%:% +%:%278=344%:% +%:%279=345%:% +%:%280=346%:% +%:%281=347%:% +%:%282=348%:% +%:%283=349%:% +%:%284=350%:% +%:%285=351%:% +%:%286=352%:% +%:%287=353%:% +%:%288=354%:% +%:%289=355%:% +%:%290=356%:% +%:%291=357%:% +%:%292=358%:% +%:%293=359%:% +%:%294=360%:% +%:%295=361%:% +%:%296=362%:% +%:%297=363%:% +%:%298=364%:% +%:%299=365%:% +%:%300=366%:% +%:%301=367%:% +%:%302=368%:% +%:%303=369%:% +%:%304=370%:% +%:%305=371%:% +%:%306=372%:% +%:%307=373%:% +%:%308=374%:% +%:%309=375%:% +%:%310=376%:% +%:%311=377%:% +%:%312=378%:% +%:%313=379%:% +%:%314=380%:% +%:%315=381%:% +%:%316=382%:% +%:%317=383%:% +%:%318=384%:% +%:%319=385%:% +%:%320=386%:% +%:%321=387%:% +%:%322=388%:% +%:%323=389%:% +%:%324=390%:% +%:%325=391%:% +%:%326=392%:% +%:%327=393%:% +%:%328=394%:% +%:%329=395%:% +%:%330=396%:% +%:%331=397%:% +%:%340=404%:% +%:%352=406%:% +%:%353=407%:% +%:%353=408%:% +%:%354=409%:% +%:%355=410%:% +%:%356=411%:% +%:%357=412%:% +%:%358=413%:% +%:%359=414%:% +%:%360=415%:% +%:%361=416%:% +%:%362=417%:% +%:%363=418%:% +%:%364=419%:% +%:%365=420%:% +%:%366=421%:% +%:%367=422%:% +%:%368=423%:% +%:%369=424%:% +%:%370=425%:% +%:%371=426%:% +%:%372=427%:% +%:%373=428%:% +%:%374=429%:% +%:%375=430%:% +%:%376=431%:% +%:%377=432%:% +%:%378=433%:% +%:%379=434%:% +%:%380=435%:% +%:%381=436%:% +%:%382=437%:% +%:%383=438%:% +%:%384=439%:% +%:%385=440%:% +%:%386=441%:% +%:%387=442%:% +%:%388=443%:% +%:%389=444%:% +%:%390=445%:% +%:%391=446%:% +%:%392=447%:% +%:%392=448%:% +%:%393=449%:% +%:%394=450%:% +%:%395=451%:% +%:%396=452%:% +%:%397=453%:% +%:%397=454%:% +%:%398=455%:% +%:%399=456%:% +%:%400=457%:% +%:%401=458%:% +%:%402=459%:% +%:%403=460%:% +%:%404=461%:% +%:%405=462%:% +%:%406=463%:% +%:%407=464%:% +%:%408=465%:% +%:%409=466%:% +%:%410=467%:% +%:%411=468%:% +%:%412=469%:% +%:%413=470%:% +%:%414=471%:% +%:%415=472%:% +%:%416=473%:% +%:%417=474%:% +%:%418=475%:% +%:%419=476%:% +%:%420=477%:% +%:%421=478%:% +%:%422=479%:% +%:%423=480%:% +%:%424=481%:% +%:%425=482%:% +%:%426=483%:% +%:%427=484%:% +%:%428=485%:% +%:%429=486%:% +%:%430=487%:% +%:%431=488%:% +%:%432=489%:% +%:%433=490%:% +%:%434=491%:% +%:%435=492%:% +%:%436=493%:% +%:%437=494%:% +%:%438=495%:% +%:%439=496%:% +%:%440=497%:% +%:%441=498%:% +%:%442=499%:% +%:%443=500%:% +%:%444=501%:% +%:%445=502%:% +%:%446=503%:% +%:%447=504%:% +%:%448=505%:% +%:%449=506%:% +%:%450=507%:% +%:%451=508%:% +%:%452=509%:% +%:%453=510%:% +%:%454=511%:% +%:%455=512%:% +%:%456=513%:% +%:%457=514%:% +%:%458=515%:% +%:%459=516%:% +%:%460=517%:% +%:%461=518%:% +%:%462=519%:% +%:%463=520%:% +%:%464=521%:% +%:%465=522%:% +%:%466=523%:% +%:%467=524%:% +%:%468=525%:% +%:%469=526%:% +%:%470=527%:% +%:%471=528%:% +%:%472=529%:% +%:%473=530%:% +%:%474=531%:% +%:%475=532%:% +%:%476=533%:% +%:%477=534%:% +%:%478=535%:% +%:%479=536%:% +%:%480=537%:% +%:%481=538%:% +%:%482=539%:% +%:%483=540%:% +%:%484=541%:% +%:%485=542%:% +%:%486=543%:% +%:%495=547%:% +%:%507=551%:% +%:%508=552%:% +%:%509=553%:% +%:%510=554%:% +%:%511=555%:% +%:%512=556%:% +%:%513=557%:% +%:%514=558%:% +%:%515=559%:% +%:%516=560%:% +%:%517=561%:% +%:%518=562%:% +%:%519=563%:% +%:%520=564%:% +%:%521=565%:% +%:%522=566%:% +%:%523=567%:% +%:%524=568%:% +%:%525=569%:% +%:%526=570%:% +%:%527=571%:% +%:%528=572%:% +%:%529=573%:% +%:%530=574%:% +%:%531=575%:% +%:%532=576%:% +%:%533=577%:% +%:%534=578%:% +%:%535=579%:% +%:%536=580%:% +%:%537=581%:% +%:%538=582%:% +%:%539=583%:% +%:%540=584%:% +%:%541=585%:% +%:%542=586%:% +%:%543=587%:% +%:%544=588%:% +%:%545=589%:% +%:%546=590%:% +%:%547=591%:% +%:%548=592%:% +%:%549=593%:% +%:%550=594%:% +%:%551=595%:% +%:%552=596%:% +%:%553=597%:% +%:%554=598%:% +%:%555=599%:% +%:%556=600%:% +%:%557=601%:% +%:%558=602%:% +%:%559=603%:% +%:%560=604%:% +%:%561=605%:% +%:%562=606%:% +%:%563=607%:% +%:%564=608%:% +%:%565=609%:% +%:%566=610%:% +%:%567=611%:% +%:%568=612%:% +%:%569=613%:% +%:%570=614%:% +%:%571=615%:% +%:%572=616%:% +%:%573=617%:% +%:%574=618%:% +%:%575=619%:% +%:%576=620%:% +%:%577=621%:% +%:%578=622%:% +%:%579=623%:% +%:%580=624%:% +%:%581=625%:% +%:%582=626%:% +%:%583=627%:% +%:%584=628%:% +%:%585=629%:% +%:%586=630%:% +%:%587=631%:% +%:%588=632%:% +%:%589=633%:% +%:%590=634%:% +%:%591=635%:% +%:%592=636%:% +%:%593=637%:% +%:%594=638%:% +%:%595=639%:% +%:%596=640%:% +%:%597=641%:% +%:%598=642%:% +%:%599=643%:% +%:%600=644%:% +%:%601=645%:% +%:%602=646%:% +%:%603=647%:% +%:%604=648%:% +%:%605=649%:% +%:%606=650%:% +%:%607=651%:% +%:%608=652%:% +%:%609=653%:% +%:%610=654%:% +%:%611=655%:% +%:%612=656%:% +%:%613=657%:% +%:%614=658%:% +%:%615=659%:% +%:%616=660%:% +%:%617=661%:% +%:%618=662%:% +%:%619=663%:% +%:%620=664%:% +%:%621=665%:% +%:%621=666%:% +%:%622=667%:% +%:%622=668%:% +%:%623=669%:% +%:%624=670%:% +%:%624=671%:% +%:%625=672%:% +%:%626=673%:% +%:%627=674%:% +%:%628=675%:% +%:%629=676%:% +%:%630=677%:% +%:%631=678%:% +%:%632=679%:% +%:%633=680%:% +%:%634=681%:% +%:%635=682%:% +%:%636=683%:% +%:%637=684%:% +%:%638=685%:% +%:%639=686%:% +%:%640=687%:% +%:%641=688%:% +%:%642=689%:% +%:%643=690%:% +%:%644=691%:% +%:%645=692%:% +%:%646=693%:% +%:%647=694%:% +%:%648=695%:% +%:%649=696%:% +%:%650=697%:% +%:%651=698%:% +%:%652=699%:% +%:%653=700%:% +%:%654=701%:% +%:%655=702%:% +%:%656=703%:% +%:%657=704%:% +%:%658=705%:% +%:%659=706%:% +%:%660=707%:% +%:%661=708%:% +%:%662=709%:% +%:%663=710%:% +%:%664=711%:% +%:%665=712%:% +%:%666=713%:% +%:%667=714%:% +%:%668=715%:% +%:%669=716%:% +%:%670=717%:% +%:%671=718%:% +%:%672=719%:% +%:%673=720%:% +%:%674=721%:% +%:%675=722%:% +%:%676=723%:% +%:%677=724%:% +%:%678=725%:% +%:%679=726%:% +%:%680=727%:% +%:%680=728%:% +%:%680=729%:% +%:%681=730%:% +%:%682=731%:% +%:%683=732%:% +%:%684=733%:% +%:%685=734%:% +%:%686=735%:% +%:%687=736%:% +%:%688=737%:% +%:%689=738%:% +%:%689=739%:% +%:%690=740%:% +%:%691=741%:% +%:%692=742%:% +%:%693=743%:% +%:%694=744%:% +%:%695=745%:% +%:%696=746%:% +%:%697=747%:% +%:%698=748%:% +%:%699=749%:% +%:%700=750%:% +%:%701=751%:% +%:%702=752%:% +%:%703=753%:% +%:%704=754%:% +%:%705=755%:% +%:%706=756%:% +%:%707=757%:% +%:%708=758%:% +%:%709=759%:% +%:%710=760%:% +%:%711=761%:% +%:%712=762%:% +%:%713=763%:% +%:%714=764%:% +%:%715=765%:% +%:%716=766%:% +%:%717=767%:% +%:%718=768%:% +%:%719=769%:% +%:%720=770%:% +%:%721=771%:% +%:%722=772%:% +%:%723=773%:% +%:%724=774%:% +%:%724=775%:% +%:%725=776%:% +%:%726=777%:% +%:%727=778%:% +%:%728=779%:% +%:%729=780%:% +%:%730=781%:% +%:%731=782%:% +%:%731=783%:% +%:%732=784%:% +%:%733=785%:% +%:%734=786%:% +%:%734=787%:% +%:%735=788%:% +%:%736=789%:% +%:%737=790%:% +%:%738=791%:% +%:%739=792%:% +%:%740=793%:% +%:%741=794%:% +%:%742=795%:% +%:%743=796%:% +%:%744=797%:% +%:%745=798%:% +%:%745=799%:% +%:%746=800%:% +%:%747=801%:% +%:%748=802%:% +%:%749=803%:% +%:%749=804%:% +%:%750=805%:% +%:%751=806%:% +%:%752=807%:% +%:%753=808%:% +%:%754=809%:% +%:%755=810%:% +%:%756=811%:% +%:%757=812%:% +%:%758=813%:% +%:%759=814%:% +%:%760=815%:% +%:%761=816%:% +%:%762=817%:% +%:%763=818%:% +%:%764=819%:% +%:%765=820%:% +%:%766=821%:% +%:%767=822%:% +%:%768=823%:% +%:%769=824%:% +%:%770=825%:% +%:%771=826%:% +%:%772=827%:% +%:%773=828%:% +%:%774=829%:% +%:%775=830%:% +%:%776=831%:% +%:%777=832%:% +%:%778=833%:% +%:%779=834%:% +%:%780=835%:% +%:%781=836%:% +%:%782=837%:% +%:%783=838%:% +%:%784=839%:% +%:%785=840%:% +%:%786=841%:% +%:%787=842%:% +%:%788=843%:% +%:%789=844%:% +%:%790=845%:% +%:%791=846%:% +%:%792=847%:% +%:%793=848%:% +%:%794=849%:% +%:%795=850%:% +%:%796=851%:% +%:%797=852%:% +%:%798=853%:% +%:%799=854%:% +%:%800=855%:% +%:%801=856%:% +%:%802=857%:% +%:%803=858%:% +%:%804=859%:% +%:%805=860%:% +%:%806=861%:% +%:%807=862%:% +%:%807=863%:% +%:%808=864%:% +%:%809=865%:% +%:%810=866%:% +%:%811=867%:% +%:%812=868%:% +%:%813=869%:% +%:%814=870%:% +%:%815=871%:% +%:%816=872%:% +%:%817=873%:% +%:%818=874%:% +%:%819=875%:% +%:%820=876%:% +%:%821=877%:% +%:%822=878%:% +%:%823=879%:% +%:%824=880%:% +%:%825=881%:% +%:%826=882%:% +%:%827=883%:% +%:%828=884%:% +%:%829=885%:% +%:%830=886%:% +%:%831=887%:% +%:%832=888%:% +%:%833=889%:% +%:%834=890%:% +%:%835=891%:% +%:%836=892%:% +%:%837=893%:% +%:%838=894%:% +%:%839=895%:% +%:%840=896%:% +%:%840=897%:% +%:%841=898%:% +%:%842=899%:% +%:%843=900%:% +%:%844=901%:% +%:%845=902%:% +%:%846=903%:% +%:%847=904%:% +%:%848=905%:% +%:%849=906%:% +%:%850=907%:% +%:%851=908%:% +%:%852=909%:% +%:%853=910%:% +%:%854=911%:% +%:%855=912%:% +%:%856=913%:% +%:%857=914%:% +%:%858=915%:% +%:%859=916%:% +%:%860=917%:% +%:%861=918%:% +%:%862=919%:% +%:%863=920%:% +%:%864=921%:% +%:%865=922%:% +%:%866=923%:% +%:%867=924%:% +%:%868=925%:% +%:%869=926%:% +%:%870=927%:% +%:%870=928%:% +%:%871=929%:% +%:%872=930%:% +%:%873=931%:% +%:%874=932%:% +%:%875=933%:% +%:%876=934%:% +%:%877=935%:% +%:%878=936%:% +%:%878=937%:% +%:%879=938%:% +%:%880=939%:% +%:%881=940%:% +%:%882=941%:% +%:%883=942%:% +%:%884=943%:% +%:%885=944%:% +%:%886=945%:% +%:%887=946%:% +%:%888=947%:% +%:%889=948%:% +%:%890=949%:% +%:%891=950%:% +%:%892=951%:% +%:%893=952%:% +%:%894=953%:% +%:%895=954%:% +%:%896=955%:% +%:%897=956%:% +%:%898=957%:% +%:%899=958%:% +%:%900=959%:% +%:%901=960%:% +%:%902=961%:% +%:%903=962%:% +%:%904=963%:% +%:%905=964%:% +%:%906=965%:% +%:%907=966%:% +%:%908=967%:% +%:%909=968%:% +%:%910=969%:% +%:%911=970%:% +%:%912=971%:% +%:%913=972%:% +%:%914=973%:% +%:%915=974%:% +%:%915=975%:% +%:%915=976%:% +%:%916=977%:% +%:%916=978%:% +%:%916=979%:% +%:%917=980%:% +%:%918=981%:% +%:%918=982%:% +%:%919=983%:% +%:%920=984%:% +%:%921=985%:% +%:%922=986%:% +%:%923=987%:% +%:%924=988%:% +%:%925=989%:% +%:%926=990%:% +%:%927=991%:% +%:%928=992%:% +%:%929=993%:% +%:%930=994%:% +%:%931=995%:% +%:%932=996%:% +%:%933=997%:% +%:%934=998%:% +%:%935=999%:% +%:%936=1000%:% +%:%937=1001%:% +%:%938=1002%:% +%:%939=1003%:% +%:%940=1004%:% +%:%941=1005%:% +%:%942=1006%:% +%:%943=1007%:% +%:%944=1008%:% +%:%945=1009%:% +%:%946=1010%:% +%:%947=1011%:% +%:%948=1012%:% +%:%949=1013%:% +%:%950=1014%:% +%:%951=1015%:% +%:%952=1016%:% +%:%952=1017%:% +%:%953=1018%:% +%:%954=1019%:% +%:%955=1020%:% +%:%955=1021%:% %:%955=1022%:% -%:%956=1023%:% -%:%957=1024%:% -%:%958=1025%:% -%:%959=1026%:% -%:%960=1027%:% -%:%961=1028%:% -%:%962=1029%:% -%:%963=1030%:% -%:%964=1031%:% -%:%965=1032%:% -%:%966=1033%:% -%:%967=1034%:% -%:%968=1035%:% -%:%969=1036%:% -%:%970=1037%:% -%:%971=1038%:% -%:%972=1039%:% -%:%973=1040%:% -%:%974=1041%:% -%:%975=1042%:% -%:%976=1043%:% -%:%977=1044%:% -%:%978=1045%:% -%:%979=1046%:% -%:%980=1047%:% -%:%981=1048%:% -%:%982=1049%:% -%:%983=1050%:% -%:%984=1051%:% -%:%985=1052%:% -%:%986=1053%:% -%:%987=1054%:% -%:%988=1055%:% -%:%989=1056%:% -%:%990=1057%:% -%:%991=1058%:% -%:%992=1059%:% -%:%993=1060%:% -%:%994=1061%:% -%:%995=1062%:% -%:%996=1063%:% -%:%997=1064%:% -%:%998=1065%:% -%:%999=1066%:% -%:%1000=1067%:% -%:%1001=1068%:% -%:%1002=1069%:% -%:%1003=1070%:% -%:%1004=1071%:% -%:%1005=1072%:% -%:%1006=1073%:% -%:%1007=1074%:% -%:%1008=1075%:% -%:%1009=1076%:% -%:%1010=1077%:% -%:%1011=1078%:% -%:%1012=1079%:% -%:%1013=1080%:% -%:%1014=1081%:% -%:%1015=1082%:% -%:%1016=1083%:% -%:%1017=1084%:% -%:%1018=1085%:% -%:%1019=1086%:% -%:%1020=1087%:% -%:%1021=1088%:% -%:%1022=1089%:% -%:%1023=1090%:% -%:%1024=1091%:% -%:%1025=1092%:% -%:%1026=1093%:% -%:%1027=1094%:% -%:%1028=1095%:% -%:%1029=1096%:% -%:%1030=1097%:% -%:%1031=1098%:% -%:%1032=1099%:% -%:%1033=1100%:% -%:%1034=1101%:% -%:%1035=1102%:% -%:%1036=1103%:% -%:%1037=1104%:% -%:%1038=1105%:% -%:%1039=1106%:% -%:%1040=1107%:% -%:%1041=1108%:% -%:%1042=1109%:% -%:%1043=1110%:% -%:%1044=1111%:% -%:%1045=1112%:% -%:%1046=1113%:% -%:%1047=1114%:% -%:%1047=1115%:% -%:%1048=1116%:% -%:%1049=1117%:% -%:%1050=1118%:% -%:%1051=1119%:% -%:%1052=1120%:% -%:%1053=1121%:% -%:%1054=1122%:% -%:%1055=1123%:% -%:%1056=1124%:% -%:%1057=1125%:% -%:%1058=1126%:% -%:%1058=1127%:% -%:%1059=1128%:% -%:%1060=1129%:% -%:%1061=1130%:% -%:%1062=1131%:% -%:%1063=1132%:% -%:%1064=1133%:% -%:%1065=1134%:% -%:%1066=1135%:% -%:%1067=1136%:% -%:%1068=1137%:% -%:%1069=1138%:% -%:%1070=1139%:% -%:%1071=1140%:% -%:%1072=1141%:% -%:%1073=1142%:% -%:%1074=1143%:% -%:%1075=1144%:% -%:%1076=1145%:% -%:%1077=1146%:% -%:%1078=1147%:% -%:%1079=1148%:% -%:%1080=1149%:% -%:%1081=1150%:% -%:%1082=1151%:% -%:%1083=1152%:% -%:%1084=1153%:% -%:%1085=1154%:% -%:%1086=1155%:% -%:%1087=1156%:% -%:%1088=1157%:% -%:%1089=1158%:% -%:%1090=1159%:% -%:%1091=1160%:% -%:%1092=1161%:% -%:%1093=1162%:% -%:%1094=1163%:% -%:%1095=1164%:% -%:%1096=1165%:% -%:%1097=1166%:% -%:%1098=1167%:% -%:%1099=1168%:% -%:%1100=1169%:% -%:%1101=1170%:% -%:%1102=1171%:% -%:%1103=1172%:% -%:%1104=1173%:% -%:%1105=1174%:% -%:%1106=1175%:% -%:%1107=1176%:% -%:%1108=1177%:% -%:%1109=1178%:% -%:%1110=1179%:% -%:%1111=1180%:% -%:%1112=1181%:% -%:%1112=1182%:% -%:%1112=1183%:% -%:%1113=1184%:% -%:%1114=1185%:% -%:%1114=1186%:% -%:%1114=1187%:% -%:%1114=1188%:% -%:%1115=1189%:% -%:%1116=1190%:% -%:%1117=1191%:% -%:%1118=1192%:% -%:%1119=1193%:% -%:%1119=1194%:% -%:%1120=1195%:% -%:%1121=1196%:% -%:%1122=1197%:% -%:%1123=1198%:% -%:%1124=1199%:% -%:%1125=1200%:% -%:%1126=1201%:% -%:%1127=1202%:% -%:%1128=1203%:% -%:%1129=1204%:% -%:%1130=1205%:% -%:%1131=1206%:% -%:%1132=1207%:% -%:%1133=1208%:% -%:%1134=1209%:% -%:%1135=1210%:% -%:%1136=1211%:% -%:%1137=1212%:% -%:%1138=1213%:% -%:%1139=1214%:% -%:%1140=1215%:% -%:%1141=1216%:% -%:%1142=1217%:% -%:%1143=1218%:% -%:%1144=1219%:% -%:%1145=1220%:% -%:%1146=1221%:% -%:%1147=1222%:% -%:%1148=1223%:% -%:%1149=1224%:% -%:%1150=1225%:% -%:%1151=1226%:% -%:%1152=1227%:% -%:%1153=1228%:% -%:%1154=1229%:% -%:%1155=1230%:% -%:%1156=1231%:% -%:%1157=1232%:% -%:%1158=1233%:% -%:%1159=1234%:% -%:%1160=1235%:% -%:%1161=1236%:% -%:%1162=1237%:% -%:%1163=1238%:% -%:%1164=1239%:% -%:%1165=1240%:% -%:%1166=1241%:% -%:%1167=1242%:% -%:%1167=1243%:% -%:%1168=1244%:% -%:%1168=1245%:% -%:%1169=1246%:% -%:%1169=1247%:% -%:%1170=1248%:% -%:%1171=1249%:% -%:%1172=1250%:% -%:%1173=1251%:% -%:%1174=1252%:% -%:%1175=1253%:% -%:%1176=1254%:% -%:%1176=1255%:% -%:%1177=1256%:% -%:%1177=1257%:% -%:%1178=1258%:% -%:%1178=1259%:% -%:%1179=1260%:% -%:%1180=1261%:% -%:%1181=1262%:% -%:%1182=1263%:% -%:%1183=1264%:% -%:%1184=1265%:% -%:%1185=1266%:% -%:%1186=1267%:% -%:%1187=1268%:% -%:%1188=1269%:% -%:%1189=1270%:% -%:%1190=1271%:% -%:%1191=1272%:% -%:%1192=1273%:% -%:%1193=1274%:% -%:%1194=1275%:% -%:%1195=1276%:% -%:%1196=1277%:% -%:%1197=1278%:% -%:%1198=1279%:% -%:%1199=1280%:% -%:%1200=1281%:% -%:%1201=1282%:% -%:%1202=1283%:% -%:%1203=1284%:% -%:%1204=1285%:% -%:%1205=1286%:% -%:%1206=1287%:% -%:%1207=1288%:% -%:%1208=1289%:% -%:%1209=1290%:% -%:%1209=1291%:% -%:%1210=1292%:% -%:%1211=1293%:% -%:%1212=1294%:% -%:%1213=1295%:% -%:%1214=1296%:% -%:%1215=1297%:% -%:%1216=1298%:% -%:%1216=1299%:% -%:%1217=1300%:% -%:%1218=1301%:% -%:%1219=1302%:% -%:%1219=1303%:% -%:%1220=1304%:% -%:%1221=1305%:% -%:%1222=1306%:% -%:%1222=1307%:% -%:%1223=1308%:% -%:%1223=1309%:% -%:%1224=1310%:% -%:%1224=1311%:% -%:%1225=1312%:% -%:%1226=1313%:% -%:%1227=1314%:% -%:%1227=1315%:% -%:%1228=1316%:% -%:%1228=1317%:% -%:%1229=1318%:% -%:%1229=1319%:% -%:%1229=1320%:% -%:%1229=1321%:% -%:%1230=1322%:% -%:%1230=1323%:% -%:%1231=1324%:% -%:%1232=1325%:% -%:%1232=1327%:% -%:%1232=1328%:% -%:%1232=1329%:% -%:%1232=1330%:% -%:%1232=1331%:% -%:%1233=1332%:% -%:%1233=1333%:% -%:%1234=1334%:% -%:%1234=1335%:% -%:%1235=1336%:% -%:%1235=1337%:% -%:%1236=1338%:% -%:%1237=1339%:% -%:%1238=1340%:% -%:%1239=1341%:% -%:%1239=1342%:% -%:%1240=1343%:% -%:%1240=1344%:% -%:%1241=1345%:% -%:%1242=1346%:% -%:%1242=1347%:% -%:%1243=1348%:% -%:%1244=1349%:% -%:%1245=1350%:% -%:%1246=1351%:% -%:%1247=1352%:% -%:%1248=1353%:% -%:%1249=1354%:% -%:%1250=1355%:% -%:%1251=1356%:% -%:%1252=1357%:% -%:%1253=1358%:% -%:%1254=1359%:% -%:%1255=1360%:% -%:%1256=1361%:% -%:%1257=1362%:% -%:%1258=1363%:% -%:%1259=1364%:% -%:%1260=1365%:% -%:%1261=1366%:% -%:%1262=1367%:% -%:%1263=1368%:% -%:%1264=1369%:% -%:%1265=1370%:% -%:%1266=1371%:% -%:%1267=1372%:% -%:%1268=1373%:% -%:%1269=1374%:% -%:%1270=1375%:% -%:%1271=1376%:% -%:%1272=1377%:% -%:%1273=1378%:% -%:%1274=1379%:% -%:%1275=1380%:% -%:%1276=1381%:% -%:%1277=1382%:% -%:%1278=1383%:% -%:%1279=1384%:% -%:%1280=1385%:% -%:%1281=1386%:% -%:%1282=1387%:% -%:%1283=1388%:% -%:%1284=1389%:% -%:%1285=1390%:% -%:%1286=1391%:% -%:%1287=1392%:% -%:%1288=1393%:% -%:%1289=1394%:% -%:%1290=1395%:% -%:%1291=1396%:% -%:%1292=1397%:% -%:%1293=1398%:% -%:%1302=1402%:% -%:%1314=1409%:% -%:%1315=1410%:% -%:%1316=1411%:% -%:%1317=1412%:% -%:%1318=1413%:% -%:%1319=1414%:% -%:%1320=1415%:% -%:%1329=1420%:% -%:%1341=1424%:% -%:%1342=1425%:% -%:%1343=1426%:% -%:%1344=1427%:% -%:%1345=1428%:% -%:%1346=1429%:% -%:%1347=1430%:% -%:%1348=1431%:% -%:%1349=1432%:% -%:%1350=1433%:% -%:%1351=1434%:% -%:%1352=1435%:% -%:%1353=1436%:% -%:%1354=1437%:% -%:%1355=1438%:% -%:%1356=1439%:% -%:%1357=1440%:% -%:%1358=1441%:% -%:%1359=1442%:% -%:%1360=1443%:% -%:%1361=1444%:% -%:%1362=1445%:% -%:%1363=1446%:% -%:%1364=1447%:% -%:%1365=1448%:% -%:%1366=1449%:% -%:%1367=1450%:% -%:%1368=1451%:% -%:%1369=1452%:% -%:%1370=1453%:% -%:%1371=1454%:% -%:%1372=1455%:% -%:%1373=1456%:% -%:%1374=1457%:% -%:%1375=1458%:% -%:%1376=1459%:% -%:%1377=1460%:% -%:%1378=1461%:% -%:%1379=1462%:% -%:%1380=1463%:% -%:%1381=1464%:% -%:%1382=1465%:% -%:%1383=1466%:% -%:%1384=1467%:% -%:%1385=1468%:% -%:%1386=1469%:% -%:%1387=1470%:% -%:%1388=1471%:% -%:%1389=1472%:% -%:%1390=1473%:% -%:%1391=1474%:% -%:%1392=1475%:% -%:%1393=1476%:% -%:%1394=1477%:% +%:%955=1023%:% +%:%956=1024%:% +%:%957=1025%:% +%:%958=1026%:% +%:%959=1027%:% +%:%960=1028%:% +%:%961=1029%:% +%:%962=1030%:% +%:%963=1031%:% +%:%964=1032%:% +%:%965=1033%:% +%:%966=1034%:% +%:%967=1035%:% +%:%968=1036%:% +%:%969=1037%:% +%:%970=1038%:% +%:%971=1039%:% +%:%972=1040%:% +%:%973=1041%:% +%:%974=1042%:% +%:%975=1043%:% +%:%976=1044%:% +%:%977=1045%:% +%:%978=1046%:% +%:%979=1047%:% +%:%980=1048%:% +%:%981=1049%:% +%:%982=1050%:% +%:%983=1051%:% +%:%984=1052%:% +%:%985=1053%:% +%:%986=1054%:% +%:%987=1055%:% +%:%988=1056%:% +%:%989=1057%:% +%:%990=1058%:% +%:%991=1059%:% +%:%992=1060%:% +%:%1001=1064%:% +%:%1013=1068%:% +%:%1014=1069%:% +%:%1015=1070%:% +%:%1016=1071%:% +%:%1017=1072%:% +%:%1018=1073%:% +%:%1019=1074%:% +%:%1020=1075%:% +%:%1021=1076%:% +%:%1022=1077%:% +%:%1023=1078%:% +%:%1024=1079%:% +%:%1025=1080%:% +%:%1026=1081%:% +%:%1027=1082%:% +%:%1028=1083%:% +%:%1029=1084%:% +%:%1030=1085%:% +%:%1031=1086%:% +%:%1032=1087%:% +%:%1033=1088%:% +%:%1034=1089%:% +%:%1035=1090%:% +%:%1036=1091%:% +%:%1037=1092%:% +%:%1038=1093%:% +%:%1039=1094%:% +%:%1040=1095%:% +%:%1041=1096%:% +%:%1042=1097%:% +%:%1043=1098%:% +%:%1044=1099%:% +%:%1045=1100%:% +%:%1046=1101%:% +%:%1047=1102%:% +%:%1048=1103%:% +%:%1049=1104%:% +%:%1050=1105%:% +%:%1051=1106%:% +%:%1052=1107%:% +%:%1053=1108%:% +%:%1054=1109%:% +%:%1055=1110%:% +%:%1056=1111%:% +%:%1057=1112%:% +%:%1058=1113%:% +%:%1059=1114%:% +%:%1060=1115%:% +%:%1061=1116%:% +%:%1062=1117%:% +%:%1063=1118%:% +%:%1064=1119%:% +%:%1065=1120%:% +%:%1066=1121%:% +%:%1067=1122%:% +%:%1068=1123%:% +%:%1069=1124%:% +%:%1070=1125%:% +%:%1071=1126%:% +%:%1072=1127%:% +%:%1073=1128%:% +%:%1074=1129%:% +%:%1075=1130%:% +%:%1076=1131%:% +%:%1077=1132%:% +%:%1078=1133%:% +%:%1079=1134%:% +%:%1080=1135%:% +%:%1081=1136%:% +%:%1082=1137%:% +%:%1083=1138%:% +%:%1084=1139%:% +%:%1085=1140%:% +%:%1086=1141%:% +%:%1087=1142%:% +%:%1088=1143%:% +%:%1089=1144%:% +%:%1090=1145%:% +%:%1091=1146%:% +%:%1092=1147%:% +%:%1093=1148%:% +%:%1094=1149%:% +%:%1095=1150%:% +%:%1096=1151%:% +%:%1097=1152%:% +%:%1098=1153%:% +%:%1099=1154%:% +%:%1100=1155%:% +%:%1101=1156%:% +%:%1102=1157%:% +%:%1103=1158%:% +%:%1104=1159%:% +%:%1105=1160%:% +%:%1106=1161%:% +%:%1107=1162%:% +%:%1108=1163%:% +%:%1109=1164%:% +%:%1110=1165%:% +%:%1111=1166%:% +%:%1112=1167%:% +%:%1113=1168%:% +%:%1114=1169%:% +%:%1115=1170%:% +%:%1116=1171%:% +%:%1117=1172%:% +%:%1118=1173%:% +%:%1119=1174%:% +%:%1120=1175%:% +%:%1121=1176%:% +%:%1122=1177%:% +%:%1123=1178%:% +%:%1124=1179%:% +%:%1125=1180%:% +%:%1126=1181%:% +%:%1127=1182%:% +%:%1128=1183%:% +%:%1128=1184%:% +%:%1129=1185%:% +%:%1130=1186%:% +%:%1131=1187%:% +%:%1132=1188%:% +%:%1133=1189%:% +%:%1134=1190%:% +%:%1135=1191%:% +%:%1136=1192%:% +%:%1137=1193%:% +%:%1138=1194%:% +%:%1139=1195%:% +%:%1139=1196%:% +%:%1140=1197%:% +%:%1141=1198%:% +%:%1142=1199%:% +%:%1143=1200%:% +%:%1144=1201%:% +%:%1145=1202%:% +%:%1146=1203%:% +%:%1147=1204%:% +%:%1148=1205%:% +%:%1149=1206%:% +%:%1150=1207%:% +%:%1151=1208%:% +%:%1152=1209%:% +%:%1153=1210%:% +%:%1154=1211%:% +%:%1155=1212%:% +%:%1156=1213%:% +%:%1157=1214%:% +%:%1158=1215%:% +%:%1159=1216%:% +%:%1160=1217%:% +%:%1161=1218%:% +%:%1162=1219%:% +%:%1163=1220%:% +%:%1164=1221%:% +%:%1165=1222%:% +%:%1166=1223%:% +%:%1167=1224%:% +%:%1168=1225%:% +%:%1169=1226%:% +%:%1170=1227%:% +%:%1171=1228%:% +%:%1172=1229%:% +%:%1173=1230%:% +%:%1174=1231%:% +%:%1175=1232%:% +%:%1176=1233%:% +%:%1177=1234%:% +%:%1178=1235%:% +%:%1179=1236%:% +%:%1180=1237%:% +%:%1181=1238%:% +%:%1182=1239%:% +%:%1183=1240%:% +%:%1184=1241%:% +%:%1185=1242%:% +%:%1186=1243%:% +%:%1187=1244%:% +%:%1188=1245%:% +%:%1189=1246%:% +%:%1190=1247%:% +%:%1191=1248%:% +%:%1192=1249%:% +%:%1193=1250%:% +%:%1193=1251%:% +%:%1193=1252%:% +%:%1194=1253%:% +%:%1195=1254%:% +%:%1195=1255%:% +%:%1195=1256%:% +%:%1195=1257%:% +%:%1196=1258%:% +%:%1197=1259%:% +%:%1198=1260%:% +%:%1199=1261%:% +%:%1200=1262%:% +%:%1200=1263%:% +%:%1201=1264%:% +%:%1202=1265%:% +%:%1203=1266%:% +%:%1204=1267%:% +%:%1205=1268%:% +%:%1206=1269%:% +%:%1207=1270%:% +%:%1208=1271%:% +%:%1209=1272%:% +%:%1210=1273%:% +%:%1211=1274%:% +%:%1212=1275%:% +%:%1213=1276%:% +%:%1214=1277%:% +%:%1215=1278%:% +%:%1216=1279%:% +%:%1217=1280%:% +%:%1218=1281%:% +%:%1219=1282%:% +%:%1220=1283%:% +%:%1221=1284%:% +%:%1222=1285%:% +%:%1223=1286%:% +%:%1224=1287%:% +%:%1225=1288%:% +%:%1226=1289%:% +%:%1227=1290%:% +%:%1228=1291%:% +%:%1229=1292%:% +%:%1230=1293%:% +%:%1231=1294%:% +%:%1232=1295%:% +%:%1233=1296%:% +%:%1234=1297%:% +%:%1235=1298%:% +%:%1236=1299%:% +%:%1237=1300%:% +%:%1238=1301%:% +%:%1239=1302%:% +%:%1240=1303%:% +%:%1241=1304%:% +%:%1242=1305%:% +%:%1243=1306%:% +%:%1244=1307%:% +%:%1245=1308%:% +%:%1246=1309%:% +%:%1247=1310%:% +%:%1248=1311%:% +%:%1248=1312%:% +%:%1249=1313%:% +%:%1249=1314%:% +%:%1250=1315%:% +%:%1250=1316%:% +%:%1251=1317%:% +%:%1252=1318%:% +%:%1253=1319%:% +%:%1254=1320%:% +%:%1255=1321%:% +%:%1256=1322%:% +%:%1257=1323%:% +%:%1257=1324%:% +%:%1258=1325%:% +%:%1258=1326%:% +%:%1259=1327%:% +%:%1259=1328%:% +%:%1260=1329%:% +%:%1261=1330%:% +%:%1262=1331%:% +%:%1263=1332%:% +%:%1264=1333%:% +%:%1265=1334%:% +%:%1266=1335%:% +%:%1267=1336%:% +%:%1268=1337%:% +%:%1269=1338%:% +%:%1270=1339%:% +%:%1271=1340%:% +%:%1272=1341%:% +%:%1273=1342%:% +%:%1274=1343%:% +%:%1275=1344%:% +%:%1276=1345%:% +%:%1277=1346%:% +%:%1278=1347%:% +%:%1279=1348%:% +%:%1280=1349%:% +%:%1281=1350%:% +%:%1282=1351%:% +%:%1283=1352%:% +%:%1284=1353%:% +%:%1285=1354%:% +%:%1286=1355%:% +%:%1287=1356%:% +%:%1288=1357%:% +%:%1289=1358%:% +%:%1290=1359%:% +%:%1290=1360%:% +%:%1291=1361%:% +%:%1292=1362%:% +%:%1293=1363%:% +%:%1294=1364%:% +%:%1295=1365%:% +%:%1296=1366%:% +%:%1297=1367%:% +%:%1297=1368%:% +%:%1298=1369%:% +%:%1299=1370%:% +%:%1300=1371%:% +%:%1300=1372%:% +%:%1301=1373%:% +%:%1302=1374%:% +%:%1303=1375%:% +%:%1303=1376%:% +%:%1304=1377%:% +%:%1304=1378%:% +%:%1305=1379%:% +%:%1305=1380%:% +%:%1306=1381%:% +%:%1307=1382%:% +%:%1308=1383%:% +%:%1308=1384%:% +%:%1309=1385%:% +%:%1309=1386%:% +%:%1310=1387%:% +%:%1310=1388%:% +%:%1310=1389%:% +%:%1310=1390%:% +%:%1311=1391%:% +%:%1311=1392%:% +%:%1312=1393%:% +%:%1313=1394%:% +%:%1313=1396%:% +%:%1313=1397%:% +%:%1313=1398%:% +%:%1313=1399%:% +%:%1313=1400%:% +%:%1314=1401%:% +%:%1314=1402%:% +%:%1315=1403%:% +%:%1315=1404%:% +%:%1316=1405%:% +%:%1316=1406%:% +%:%1317=1407%:% +%:%1318=1408%:% +%:%1319=1409%:% +%:%1320=1410%:% +%:%1320=1411%:% +%:%1321=1412%:% +%:%1321=1413%:% +%:%1322=1414%:% +%:%1323=1415%:% +%:%1323=1416%:% +%:%1324=1417%:% +%:%1325=1418%:% +%:%1326=1419%:% +%:%1327=1420%:% +%:%1328=1421%:% +%:%1329=1422%:% +%:%1330=1423%:% +%:%1331=1424%:% +%:%1332=1425%:% +%:%1333=1426%:% +%:%1334=1427%:% +%:%1335=1428%:% +%:%1336=1429%:% +%:%1337=1430%:% +%:%1338=1431%:% +%:%1339=1432%:% +%:%1340=1433%:% +%:%1341=1434%:% +%:%1342=1435%:% +%:%1343=1436%:% +%:%1344=1437%:% +%:%1345=1438%:% +%:%1346=1439%:% +%:%1347=1440%:% +%:%1348=1441%:% +%:%1349=1442%:% +%:%1350=1443%:% +%:%1351=1444%:% +%:%1352=1445%:% +%:%1353=1446%:% +%:%1354=1447%:% +%:%1355=1448%:% +%:%1356=1449%:% +%:%1357=1450%:% +%:%1358=1451%:% +%:%1359=1452%:% +%:%1360=1453%:% +%:%1361=1454%:% +%:%1362=1455%:% +%:%1363=1456%:% +%:%1364=1457%:% +%:%1365=1458%:% +%:%1366=1459%:% +%:%1367=1460%:% +%:%1368=1461%:% +%:%1369=1462%:% +%:%1370=1463%:% +%:%1371=1464%:% +%:%1372=1465%:% +%:%1373=1466%:% +%:%1374=1467%:% +%:%1383=1471%:% %:%1395=1478%:% %:%1396=1479%:% %:%1397=1480%:% @@ -2898,156 +2979,156 @@ %:%1399=1482%:% %:%1400=1483%:% %:%1401=1484%:% -%:%1402=1485%:% -%:%1403=1486%:% -%:%1404=1487%:% -%:%1405=1488%:% -%:%1406=1489%:% -%:%1407=1490%:% -%:%1408=1491%:% -%:%1409=1492%:% -%:%1410=1493%:% -%:%1411=1494%:% -%:%1412=1495%:% -%:%1413=1496%:% -%:%1414=1497%:% -%:%1415=1498%:% -%:%1416=1499%:% -%:%1417=1500%:% -%:%1418=1501%:% -%:%1419=1502%:% -%:%1420=1503%:% -%:%1421=1504%:% -%:%1422=1505%:% -%:%1423=1506%:% -%:%1424=1507%:% -%:%1425=1508%:% -%:%1426=1509%:% -%:%1427=1510%:% -%:%1428=1511%:% -%:%1429=1512%:% -%:%1430=1513%:% -%:%1430=1629%:% -%:%1431=1630%:% -%:%1432=1631%:% -%:%1433=1632%:% -%:%1434=1633%:% -%:%1434=1794%:% -%:%1435=1795%:% -%:%1436=1796%:% -%:%1437=1797%:% -%:%1438=1798%:% -%:%1439=1799%:% -%:%1440=1800%:% -%:%1441=1801%:% -%:%1442=1802%:% -%:%1443=1803%:% -%:%1444=1804%:% -%:%1445=1805%:% -%:%1446=1806%:% -%:%1447=1807%:% -%:%1448=1808%:% -%:%1449=1809%:% -%:%1450=1810%:% -%:%1451=1811%:% -%:%1452=1812%:% -%:%1453=1813%:% -%:%1453=1814%:% -%:%1454=1815%:% -%:%1454=1816%:% -%:%1454=1817%:% -%:%1455=1818%:% -%:%1455=1819%:% -%:%1456=1820%:% -%:%1457=1821%:% -%:%1458=1822%:% -%:%1459=1823%:% -%:%1460=1824%:% -%:%1461=1825%:% -%:%1462=1826%:% -%:%1463=1827%:% -%:%1464=1828%:% -%:%1465=1829%:% -%:%1466=1830%:% -%:%1467=1831%:% -%:%1468=1832%:% -%:%1469=1833%:% -%:%1470=1834%:% -%:%1471=1835%:% -%:%1472=1836%:% -%:%1472=1837%:% -%:%1473=1838%:% -%:%1474=1839%:% -%:%1475=1840%:% -%:%1475=1841%:% -%:%1475=1842%:% -%:%1476=1843%:% -%:%1477=1844%:% -%:%1478=1845%:% -%:%1478=1846%:% -%:%1479=1847%:% -%:%1479=1848%:% -%:%1480=1849%:% -%:%1481=1850%:% -%:%1482=1851%:% -%:%1483=1852%:% -%:%1484=1853%:% -%:%1485=1854%:% -%:%1486=1855%:% -%:%1487=1856%:% -%:%1488=1857%:% -%:%1489=1858%:% -%:%1490=1859%:% -%:%1491=1860%:% -%:%1492=1861%:% -%:%1493=1862%:% -%:%1494=1863%:% -%:%1495=1864%:% -%:%1496=1865%:% -%:%1505=1870%:% -%:%1517=1874%:% -%:%1518=1875%:% -%:%1519=1876%:% -%:%1520=1877%:% -%:%1521=1878%:% -%:%1522=1879%:% -%:%1523=1880%:% -%:%1524=1881%:% -%:%1525=1882%:% -%:%1526=1883%:% -%:%1527=1884%:% -%:%1528=1885%:% -%:%1529=1886%:% -%:%1530=1887%:% -%:%1531=1888%:% -%:%1532=1889%:% -%:%1533=1890%:% -%:%1534=1891%:% -%:%1535=1892%:% -%:%1536=1893%:% -%:%1537=1894%:% -%:%1538=1895%:% -%:%1539=1896%:% -%:%1540=1897%:% -%:%1541=1898%:% -%:%1542=1899%:% -%:%1543=1900%:% -%:%1544=1901%:% -%:%1545=1902%:% -%:%1546=1903%:% -%:%1547=1904%:% -%:%1548=1905%:% -%:%1549=1906%:% -%:%1550=1907%:% -%:%1551=1908%:% -%:%1552=1909%:% -%:%1553=1910%:% -%:%1554=1911%:% -%:%1555=1912%:% -%:%1556=1913%:% -%:%1557=1914%:% -%:%1558=1915%:% -%:%1559=1916%:% +%:%1410=1489%:% +%:%1422=1493%:% +%:%1423=1494%:% +%:%1424=1495%:% +%:%1425=1496%:% +%:%1426=1497%:% +%:%1427=1498%:% +%:%1428=1499%:% +%:%1429=1500%:% +%:%1430=1501%:% +%:%1431=1502%:% +%:%1432=1503%:% +%:%1433=1504%:% +%:%1434=1505%:% +%:%1435=1506%:% +%:%1436=1507%:% +%:%1437=1508%:% +%:%1438=1509%:% +%:%1439=1510%:% +%:%1440=1511%:% +%:%1441=1512%:% +%:%1442=1513%:% +%:%1443=1514%:% +%:%1444=1515%:% +%:%1445=1516%:% +%:%1446=1517%:% +%:%1447=1518%:% +%:%1448=1519%:% +%:%1449=1520%:% +%:%1450=1521%:% +%:%1451=1522%:% +%:%1452=1523%:% +%:%1453=1524%:% +%:%1454=1525%:% +%:%1455=1526%:% +%:%1456=1527%:% +%:%1457=1528%:% +%:%1458=1529%:% +%:%1459=1530%:% +%:%1460=1531%:% +%:%1461=1532%:% +%:%1462=1533%:% +%:%1463=1534%:% +%:%1464=1535%:% +%:%1465=1536%:% +%:%1466=1537%:% +%:%1467=1538%:% +%:%1468=1539%:% +%:%1469=1540%:% +%:%1470=1541%:% +%:%1471=1542%:% +%:%1472=1543%:% +%:%1473=1544%:% +%:%1474=1545%:% +%:%1475=1546%:% +%:%1476=1547%:% +%:%1477=1548%:% +%:%1478=1549%:% +%:%1479=1550%:% +%:%1480=1551%:% +%:%1481=1552%:% +%:%1482=1553%:% +%:%1483=1554%:% +%:%1484=1555%:% +%:%1485=1556%:% +%:%1486=1557%:% +%:%1487=1558%:% +%:%1488=1559%:% +%:%1489=1560%:% +%:%1490=1561%:% +%:%1491=1562%:% +%:%1492=1563%:% +%:%1493=1564%:% +%:%1494=1565%:% +%:%1495=1566%:% +%:%1496=1567%:% +%:%1497=1568%:% +%:%1498=1569%:% +%:%1499=1570%:% +%:%1500=1571%:% +%:%1501=1572%:% +%:%1502=1573%:% +%:%1503=1574%:% +%:%1504=1575%:% +%:%1505=1576%:% +%:%1506=1577%:% +%:%1507=1578%:% +%:%1508=1579%:% +%:%1509=1580%:% +%:%1510=1581%:% +%:%1511=1582%:% +%:%1511=1698%:% +%:%1512=1699%:% +%:%1513=1700%:% +%:%1514=1701%:% +%:%1515=1702%:% +%:%1515=1863%:% +%:%1516=1864%:% +%:%1517=1865%:% +%:%1518=1866%:% +%:%1519=1867%:% +%:%1520=1868%:% +%:%1521=1869%:% +%:%1522=1870%:% +%:%1523=1871%:% +%:%1524=1872%:% +%:%1525=1873%:% +%:%1526=1874%:% +%:%1527=1875%:% +%:%1528=1876%:% +%:%1529=1877%:% +%:%1530=1878%:% +%:%1531=1879%:% +%:%1532=1880%:% +%:%1533=1881%:% +%:%1534=1882%:% +%:%1534=1883%:% +%:%1535=1884%:% +%:%1535=1885%:% +%:%1535=1886%:% +%:%1536=1887%:% +%:%1536=1888%:% +%:%1537=1889%:% +%:%1538=1890%:% +%:%1539=1891%:% +%:%1540=1892%:% +%:%1541=1893%:% +%:%1542=1894%:% +%:%1543=1895%:% +%:%1544=1896%:% +%:%1545=1897%:% +%:%1546=1898%:% +%:%1547=1899%:% +%:%1548=1900%:% +%:%1549=1901%:% +%:%1550=1902%:% +%:%1551=1903%:% +%:%1552=1904%:% +%:%1553=1905%:% +%:%1553=1906%:% +%:%1554=1907%:% +%:%1555=1908%:% +%:%1556=1909%:% +%:%1556=1910%:% +%:%1556=1911%:% +%:%1557=1912%:% +%:%1558=1913%:% +%:%1559=1914%:% +%:%1559=1915%:% +%:%1560=1916%:% %:%1560=1917%:% %:%1561=1918%:% %:%1562=1919%:% @@ -3058,4 +3139,66 @@ %:%1567=1924%:% %:%1568=1925%:% %:%1569=1926%:% -%:%1582=1932%:% \ No newline at end of file +%:%1570=1927%:% +%:%1571=1928%:% +%:%1572=1929%:% +%:%1573=1930%:% +%:%1574=1931%:% +%:%1575=1932%:% +%:%1576=1933%:% +%:%1577=1934%:% +%:%1586=1939%:% +%:%1598=1943%:% +%:%1599=1944%:% +%:%1600=1945%:% +%:%1601=1946%:% +%:%1602=1947%:% +%:%1603=1948%:% +%:%1604=1949%:% +%:%1605=1950%:% +%:%1606=1951%:% +%:%1607=1952%:% +%:%1608=1953%:% +%:%1609=1954%:% +%:%1610=1955%:% +%:%1611=1956%:% +%:%1612=1957%:% +%:%1613=1958%:% +%:%1614=1959%:% +%:%1615=1960%:% +%:%1616=1961%:% +%:%1617=1962%:% +%:%1618=1963%:% +%:%1619=1964%:% +%:%1620=1965%:% +%:%1621=1966%:% +%:%1622=1967%:% +%:%1623=1968%:% +%:%1624=1969%:% +%:%1625=1970%:% +%:%1626=1971%:% +%:%1627=1972%:% +%:%1628=1973%:% +%:%1629=1974%:% +%:%1630=1975%:% +%:%1631=1976%:% +%:%1632=1977%:% +%:%1633=1978%:% +%:%1634=1979%:% +%:%1635=1980%:% +%:%1636=1981%:% +%:%1637=1982%:% +%:%1638=1983%:% +%:%1639=1984%:% +%:%1640=1985%:% +%:%1641=1986%:% +%:%1642=1987%:% +%:%1643=1988%:% +%:%1644=1989%:% +%:%1645=1990%:% +%:%1646=1991%:% +%:%1647=1992%:% +%:%1648=1993%:% +%:%1649=1994%:% +%:%1650=1995%:% +%:%1663=2001%:% \ No newline at end of file diff -r 5499ba68188c -r f65444d29e74 thys2/Journal/Paper.thy --- a/thys2/Journal/Paper.thy Mon Nov 01 10:52:44 2021 +0000 +++ b/thys2/Journal/Paper.thy Tue Nov 02 13:57:59 2021 +0000 @@ -131,16 +131,11 @@ (*>*) - - -section \Introduction\ - - +section\Core of the proof\ text \ - -This works builds on previous work by Ausaf and Urban using +This paper builds on previous work by Ausaf and Urban using regular expression'd bit-coded derivatives to do lexing that -is both fast and satisfied the POSIX specification. +is both fast and satisfies the POSIX specification. In their work, a bit-coded algorithm introduced by Sulzmann and Lu was formally verified in Isabelle, by a very clever use of flex function and retrieve to carefully mimic the way a value is @@ -148,11 +143,102 @@ In the previous work, Ausaf and Urban established the below equality: \begin{lemma} -@{thm [mode=IfThen] bder_retrieve} +@{thm [mode=IfThen] MAIN_decode} +\end{lemma} + +This lemma establishes a link with the lexer without bit-codes. + +With it we get the correctness of bit-coded algorithm. +\begin{lemma} +@{thm [mode=IfThen] blexer_correctness} \end{lemma} -This lemma links the derivative of a bit-coded regular expression with -the regular expression itself before the derivative. +However what is not certain is whether we can add simplification +to the bit-coded algorithm, without breaking the correct lexing output. +This might sound trivial in the case of producing a YES/NO answer, +but once we require a lexing output to be produced (which is required +in applications like compiler front-end, malicious attack domain extraction, +etc.), it is not straightforward if we still extract what is needed according +to the POSIX standard. + +By simplification, we mean specifically the following rules: + +\begin{center} + \begin{tabular}{lcl} + @{thm[mode=Axiom] rrewrite.intros(1)[of "bs" "r\<^sub>2"]}\\ + @{thm[mode=Axiom] rrewrite.intros(2)[of "bs" "r\<^sub>1"]}\\ + @{thm[mode=Axiom] rrewrite.intros(3)[of "bs" "bs\<^sub>1" "r\<^sub>1"]}\\ + @{thm[mode=Rule] rrewrite.intros(4)[of "r\<^sub>1" "r\<^sub>2" "bs" "r\<^sub>3"]}\\ + @{thm[mode=Rule] rrewrite.intros(5)[of "bs" "r\<^sub>2"]}\\ + @{thm[mode=Rule] rrewrite.intros(6)[of "bs" "r\<^sub>1"]}\\ + @{thm[mode=Axiom] rrewrite.intros(7)[of "bs" "r\<^sub>2"]}\\ + @{thm[mode=Axiom] rrewrite.intros(8)[of "bs" "r\<^sub>1"]}\\ + @{thm[mode=Axiom] rrewrite.intros(9)[of "bs" "r\<^sub>2"]}\\ + @{thm[mode=Axiom] rrewrite.intros(10)[of "bs" "r\<^sub>1"]}\\ + @{thm[mode=Axiom] rrewrite.intros(11)[of "bs" ]}\\ + @{thm[mode=Axiom] rrewrite.intros(12)[of "bs" "r\<^sub>1"]}\\ + @{thm[mode=Rule] rrewrite.intros(13)[of "a\<^sub>1" "a\<^sub>2" "bs" "rs\<^sub>a" "rs\<^sub>b" "rs\<^sub>c"]}\\ + + \end{tabular} +\end{center} + + +And these can be made compact by the following simplification function: + +\begin{center} + \begin{tabular}{lcl} + @{thm (lhs) bsimp.simps(1)[of "bs" "r\<^sub>1" "r\<^sub>2"]} & $\dn$ & @{thm (rhs) bsimp.simps(1)[of "bs" "r\<^sub>1" "r\<^sub>2"]}\\ + @{thm (lhs) bsimp.simps(2)} & $\dn$ & @{thm (rhs) bsimp.simps(2)}\\ + @{thm (lhs) bsimp.simps(3)} & $\dn$ & @{thm (rhs) bsimp.simps(3)}\\ + @{thm (lhs) intern.simps(4)[of "r\<^sub>1" "r\<^sub>2"]} & $\dn$ & @{thm (rhs) intern.simps(4)[of "r\<^sub>1" "r\<^sub>2"]}\\ +\end{tabular} +\end{center} + +where the function $\mathit{bsimp_AALTs}$ + +The core idea of the proof is that two regular expressions, +if "isomorphic" up to a finite number of rewrite steps, will +remain "isomorphic" when we take the same sequence of +derivatives on both of them. +This can be expressed by the following rewrite relation lemma: +\begin{lemma} +@{thm [mode=IfThen] central} +\end{lemma} + +This isomorphic relation implies a property that leads to the +correctness result: +if two (nullable) regular expressions are "rewritable" in many steps +from one another, +then a call to function $textit{bmkeps}$ gives the same +bit-sequence : +\begin{lemma} +@{thm [mode=IfThen] rewrites_bmkeps} +\end{lemma} + +Given the same bit-sequence, the decode function +will give out the same value, which is the output +of both lexers: +\begin{lemma} +@{thm blexer_def} +\end{lemma} + +\begin{lemma} +@{thm blexer_simp_def} +\end{lemma} + +And that yields the correctness result: +\begin{lemma} +@{thm blexersimp_correctness} +\end{lemma} + + +\ + +section \Introduction\ + + +text \ + Brzozowski \cite{Brzozowski1964} introduced the notion of the {\em derivative} @{term "der c r"} of a regular expression \r\ w.r.t.\ @@ -332,6 +418,9 @@ \ + + + section \Preliminaries\ text \\noindent Strings in Isabelle/HOL are lists of characters with diff -r 5499ba68188c -r f65444d29e74 thys2/Journal/SizeBound.tex --- a/thys2/Journal/SizeBound.tex Mon Nov 01 10:52:44 2021 +0000 +++ b/thys2/Journal/SizeBound.tex Tue Nov 02 13:57:59 2021 +0000 @@ -1,7263 +0,0 @@ -% -\begin{isabellebody}% -\setisabellecontext{SizeBound}% -% -\isadelimtheory -\isanewline -% -\endisadelimtheory -% -\isatagtheory -\isacommand{theory}\isamarkupfalse% -\ SizeBound\isanewline -\ \ \isakeyword{imports}\ {\isachardoublequoteopen}Lexer{\isachardoublequoteclose}\ \isanewline -\isakeyword{begin}% -\endisatagtheory -{\isafoldtheory}% -% -\isadelimtheory -% -\endisadelimtheory -% -\isadelimdocument -% -\endisadelimdocument -% -\isatagdocument -% -\isamarkupsection{Bit-Encodings% -} -\isamarkuptrue% -% -\endisatagdocument -{\isafolddocument}% -% -\isadelimdocument -% -\endisadelimdocument -\isacommand{datatype}\isamarkupfalse% -\ bit\ {\isacharequal}{\kern0pt}\ Z\ {\isacharbar}{\kern0pt}\ S\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ code\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}val\ {\isasymRightarrow}\ bit\ list{\isachardoublequoteclose}\isanewline -\isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}code\ Void\ {\isacharequal}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}code\ {\isacharparenleft}{\kern0pt}Char\ c{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}code\ {\isacharparenleft}{\kern0pt}Left\ v{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ Z\ {\isacharhash}{\kern0pt}\ {\isacharparenleft}{\kern0pt}code\ v{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}code\ {\isacharparenleft}{\kern0pt}Right\ v{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ S\ {\isacharhash}{\kern0pt}\ {\isacharparenleft}{\kern0pt}code\ v{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}code\ {\isacharparenleft}{\kern0pt}Seq\ v{\isadigit{1}}\ v{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}code\ v{\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isacharat}{\kern0pt}\ {\isacharparenleft}{\kern0pt}code\ v{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}code\ {\isacharparenleft}{\kern0pt}Stars\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}S{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}code\ {\isacharparenleft}{\kern0pt}Stars\ {\isacharparenleft}{\kern0pt}v\ {\isacharhash}{\kern0pt}\ vs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ \ {\isacharparenleft}{\kern0pt}Z\ {\isacharhash}{\kern0pt}\ code\ v{\isacharparenright}{\kern0pt}\ {\isacharat}{\kern0pt}\ code\ {\isacharparenleft}{\kern0pt}Stars\ vs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ \isanewline -\ \ Stars{\isacharunderscore}{\kern0pt}add\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}val\ {\isasymRightarrow}\ val\ {\isasymRightarrow}\ val{\isachardoublequoteclose}\isanewline -\isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}Stars{\isacharunderscore}{\kern0pt}add\ v\ {\isacharparenleft}{\kern0pt}Stars\ vs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ Stars\ {\isacharparenleft}{\kern0pt}v\ {\isacharhash}{\kern0pt}\ vs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\isanewline -\isacommand{function}\isamarkupfalse% -\isanewline -\ \ decode{\isacharprime}{\kern0pt}\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}bit\ list\ {\isasymRightarrow}\ rexp\ {\isasymRightarrow}\ {\isacharparenleft}{\kern0pt}val\ {\isacharasterisk}{\kern0pt}\ bit\ list{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}decode{\isacharprime}{\kern0pt}\ ds\ ZERO\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Void{\isacharcomma}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}decode{\isacharprime}{\kern0pt}\ ds\ ONE\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Void{\isacharcomma}{\kern0pt}\ ds{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}decode{\isacharprime}{\kern0pt}\ ds\ {\isacharparenleft}{\kern0pt}CH\ d{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Char\ d{\isacharcomma}{\kern0pt}\ ds{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}decode{\isacharprime}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}ALT\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Void{\isacharcomma}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}decode{\isacharprime}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Z\ {\isacharhash}{\kern0pt}\ ds{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}ALT\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}let\ {\isacharparenleft}{\kern0pt}v{\isacharcomma}{\kern0pt}\ ds{\isacharprime}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ decode{\isacharprime}{\kern0pt}\ ds\ r{\isadigit{1}}\ in\ {\isacharparenleft}{\kern0pt}Left\ v{\isacharcomma}{\kern0pt}\ ds{\isacharprime}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}decode{\isacharprime}{\kern0pt}\ {\isacharparenleft}{\kern0pt}S\ {\isacharhash}{\kern0pt}\ ds{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}ALT\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}let\ {\isacharparenleft}{\kern0pt}v{\isacharcomma}{\kern0pt}\ ds{\isacharprime}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ decode{\isacharprime}{\kern0pt}\ ds\ r{\isadigit{2}}\ in\ {\isacharparenleft}{\kern0pt}Right\ v{\isacharcomma}{\kern0pt}\ ds{\isacharprime}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}decode{\isacharprime}{\kern0pt}\ ds\ {\isacharparenleft}{\kern0pt}SEQ\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}let\ {\isacharparenleft}{\kern0pt}v{\isadigit{1}}{\isacharcomma}{\kern0pt}\ ds{\isacharprime}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ decode{\isacharprime}{\kern0pt}\ ds\ r{\isadigit{1}}\ in\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ let\ {\isacharparenleft}{\kern0pt}v{\isadigit{2}}{\isacharcomma}{\kern0pt}\ ds{\isacharprime}{\kern0pt}{\isacharprime}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ decode{\isacharprime}{\kern0pt}\ ds{\isacharprime}{\kern0pt}\ r{\isadigit{2}}\ in\ {\isacharparenleft}{\kern0pt}Seq\ v{\isadigit{1}}\ v{\isadigit{2}}{\isacharcomma}{\kern0pt}\ ds{\isacharprime}{\kern0pt}{\isacharprime}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}decode{\isacharprime}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}STAR\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Void{\isacharcomma}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}decode{\isacharprime}{\kern0pt}\ {\isacharparenleft}{\kern0pt}S\ {\isacharhash}{\kern0pt}\ ds{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}STAR\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Stars\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isacharcomma}{\kern0pt}\ ds{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}decode{\isacharprime}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Z\ {\isacharhash}{\kern0pt}\ ds{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}STAR\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}let\ {\isacharparenleft}{\kern0pt}v{\isacharcomma}{\kern0pt}\ ds{\isacharprime}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ decode{\isacharprime}{\kern0pt}\ ds\ r\ in\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ let\ {\isacharparenleft}{\kern0pt}vs{\isacharcomma}{\kern0pt}\ ds{\isacharprime}{\kern0pt}{\isacharprime}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ decode{\isacharprime}{\kern0pt}\ ds{\isacharprime}{\kern0pt}\ {\isacharparenleft}{\kern0pt}STAR\ r{\isacharparenright}{\kern0pt}\ \isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ in\ {\isacharparenleft}{\kern0pt}Stars{\isacharunderscore}{\kern0pt}add\ v\ vs{\isacharcomma}{\kern0pt}\ ds{\isacharprime}{\kern0pt}{\isacharprime}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -% -\endisadelimproof -% -\isatagproof -\isacommand{by}\isamarkupfalse% -\ pat{\isacharunderscore}{\kern0pt}completeness\ auto% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ decode{\isacharprime}{\kern0pt}{\isacharunderscore}{\kern0pt}smaller{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}decode{\isacharprime}{\kern0pt}{\isacharunderscore}{\kern0pt}dom\ {\isacharparenleft}{\kern0pt}ds{\isacharcomma}{\kern0pt}\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}length\ {\isacharparenleft}{\kern0pt}snd\ {\isacharparenleft}{\kern0pt}decode{\isacharprime}{\kern0pt}\ ds\ r{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isasymle}\ length\ ds{\isachardoublequoteclose}\isanewline -% -\isadelimproof -% -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ ds\ r{\isacharparenright}{\kern0pt}\isanewline -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto\ simp\ add{\isacharcolon}{\kern0pt}\ decode{\isacharprime}{\kern0pt}{\isachardot}{\kern0pt}psimps\ split{\isacharcolon}{\kern0pt}\ prod{\isachardot}{\kern0pt}split{\isacharparenright}{\kern0pt}\isanewline -\isacommand{using}\isamarkupfalse% -\ dual{\isacharunderscore}{\kern0pt}order{\isachardot}{\kern0pt}trans\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}meson\ dual{\isacharunderscore}{\kern0pt}order{\isachardot}{\kern0pt}trans\ le{\isacharunderscore}{\kern0pt}SucI{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{termination}\isamarkupfalse% -\ {\isachardoublequoteopen}decode{\isacharprime}{\kern0pt}{\isachardoublequoteclose}\ \ \isanewline -% -\isadelimproof -% -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}relation\ {\isachardoublequoteopen}inv{\isacharunderscore}{\kern0pt}image\ {\isacharparenleft}{\kern0pt}measure{\isacharparenleft}{\kern0pt}{\isacharpercent}{\kern0pt}cs{\isachardot}{\kern0pt}\ size\ cs{\isacharparenright}{\kern0pt}\ {\isacharless}{\kern0pt}{\isacharasterisk}{\kern0pt}lex{\isacharasterisk}{\kern0pt}{\isachargreater}{\kern0pt}\ measure{\isacharparenleft}{\kern0pt}{\isacharpercent}{\kern0pt}s{\isachardot}{\kern0pt}\ size\ s{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}{\isacharpercent}{\kern0pt}{\isacharparenleft}{\kern0pt}ds{\isacharcomma}{\kern0pt}r{\isacharparenright}{\kern0pt}{\isachardot}{\kern0pt}\ {\isacharparenleft}{\kern0pt}r{\isacharcomma}{\kern0pt}ds{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\ \isanewline -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto\ dest{\isacharbang}{\kern0pt}{\isacharcolon}{\kern0pt}\ decode{\isacharprime}{\kern0pt}{\isacharunderscore}{\kern0pt}smaller{\isacharparenright}{\kern0pt}\isanewline -\isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ less{\isacharunderscore}{\kern0pt}Suc{\isacharunderscore}{\kern0pt}eq{\isacharunderscore}{\kern0pt}le\ snd{\isacharunderscore}{\kern0pt}conv{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{definition}\isamarkupfalse% -\isanewline -\ \ decode\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}bit\ list\ {\isasymRightarrow}\ rexp\ {\isasymRightarrow}\ val\ option{\isachardoublequoteclose}\isanewline -\isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}decode\ ds\ r\ {\isasymequiv}\ {\isacharparenleft}{\kern0pt}let\ {\isacharparenleft}{\kern0pt}v{\isacharcomma}{\kern0pt}\ ds{\isacharprime}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ decode{\isacharprime}{\kern0pt}\ ds\ r\ \isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ in\ {\isacharparenleft}{\kern0pt}if\ ds{\isacharprime}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ then\ Some\ v\ else\ None{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ decode{\isacharprime}{\kern0pt}{\isacharunderscore}{\kern0pt}code{\isacharunderscore}{\kern0pt}Stars{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymforall}v{\isasymin}set\ vs{\isachardot}{\kern0pt}\ {\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ r\ {\isasymand}\ {\isacharparenleft}{\kern0pt}{\isasymforall}x{\isachardot}{\kern0pt}\ decode{\isacharprime}{\kern0pt}\ {\isacharparenleft}{\kern0pt}code\ v\ {\isacharat}{\kern0pt}\ x{\isacharparenright}{\kern0pt}\ r\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}v{\isacharcomma}{\kern0pt}\ x{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isasymand}\ flat\ v\ {\isasymnoteq}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\ \isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}decode{\isacharprime}{\kern0pt}\ {\isacharparenleft}{\kern0pt}code\ {\isacharparenleft}{\kern0pt}Stars\ vs{\isacharparenright}{\kern0pt}\ {\isacharat}{\kern0pt}\ ds{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}STAR\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Stars\ vs{\isacharcomma}{\kern0pt}\ ds{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ vs{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ decode{\isacharprime}{\kern0pt}{\isacharunderscore}{\kern0pt}code{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}decode{\isacharprime}{\kern0pt}\ {\isacharparenleft}{\kern0pt}{\isacharparenleft}{\kern0pt}code\ v{\isacharparenright}{\kern0pt}\ {\isacharat}{\kern0pt}\ ds{\isacharparenright}{\kern0pt}\ r\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}v{\isacharcomma}{\kern0pt}\ ds{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -% -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ v\ r\ arbitrary{\isacharcolon}{\kern0pt}\ ds{\isacharparenright}{\kern0pt}\ \isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ decode{\isacharprime}{\kern0pt}{\isacharunderscore}{\kern0pt}code{\isacharunderscore}{\kern0pt}Stars\ \isacommand{by}\isamarkupfalse% -\ blast% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ decode{\isacharunderscore}{\kern0pt}code{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}decode\ {\isacharparenleft}{\kern0pt}code\ v{\isacharparenright}{\kern0pt}\ r\ {\isacharequal}{\kern0pt}\ Some\ v{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\ \isacommand{unfolding}\isamarkupfalse% -\ decode{\isacharunderscore}{\kern0pt}def\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}smt\ append{\isacharunderscore}{\kern0pt}Nil{\isadigit{2}}\ decode{\isacharprime}{\kern0pt}{\isacharunderscore}{\kern0pt}code\ old{\isachardot}{\kern0pt}prod{\isachardot}{\kern0pt}case{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -% -\endisadelimproof -% -\isadelimdocument -% -\endisadelimdocument -% -\isatagdocument -% -\isamarkupsection{Annotated Regular Expressions% -} -\isamarkuptrue% -% -\endisatagdocument -{\isafolddocument}% -% -\isadelimdocument -% -\endisadelimdocument -\isacommand{datatype}\isamarkupfalse% -\ arexp\ {\isacharequal}{\kern0pt}\ \isanewline -\ \ AZERO\isanewline -{\isacharbar}{\kern0pt}\ AONE\ {\isachardoublequoteopen}bit\ list{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ ACHAR\ {\isachardoublequoteopen}bit\ list{\isachardoublequoteclose}\ char\isanewline -{\isacharbar}{\kern0pt}\ ASEQ\ {\isachardoublequoteopen}bit\ list{\isachardoublequoteclose}\ arexp\ arexp\isanewline -{\isacharbar}{\kern0pt}\ AALTs\ {\isachardoublequoteopen}bit\ list{\isachardoublequoteclose}\ {\isachardoublequoteopen}arexp\ list{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ ASTAR\ {\isachardoublequoteopen}bit\ list{\isachardoublequoteclose}\ arexp\isanewline -\isanewline -\isacommand{abbreviation}\isamarkupfalse% -\isanewline -\ \ {\isachardoublequoteopen}AALT\ bs\ r{\isadigit{1}}\ r{\isadigit{2}}\ {\isasymequiv}\ AALTs\ bs\ {\isacharbrackleft}{\kern0pt}r{\isadigit{1}}{\isacharcomma}{\kern0pt}\ r{\isadigit{2}}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ asize\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ nat{\isachardoublequoteclose}\ \isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}asize\ AZERO\ {\isacharequal}{\kern0pt}\ {\isadigit{1}}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}asize\ {\isacharparenleft}{\kern0pt}AONE\ cs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isadigit{1}}{\isachardoublequoteclose}\ \isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}asize\ {\isacharparenleft}{\kern0pt}ACHAR\ cs\ c{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isadigit{1}}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}asize\ {\isacharparenleft}{\kern0pt}AALTs\ cs\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ Suc\ {\isacharparenleft}{\kern0pt}sum{\isacharunderscore}{\kern0pt}list\ {\isacharparenleft}{\kern0pt}map\ asize\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}asize\ {\isacharparenleft}{\kern0pt}ASEQ\ cs\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ Suc\ {\isacharparenleft}{\kern0pt}asize\ r{\isadigit{1}}\ {\isacharplus}{\kern0pt}\ asize\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}asize\ {\isacharparenleft}{\kern0pt}ASTAR\ cs\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ Suc\ {\isacharparenleft}{\kern0pt}asize\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ \isanewline -\ \ erase\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ rexp{\isachardoublequoteclose}\isanewline -\isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}erase\ AZERO\ {\isacharequal}{\kern0pt}\ ZERO{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}erase\ {\isacharparenleft}{\kern0pt}AONE\ {\isacharunderscore}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ ONE{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}erase\ {\isacharparenleft}{\kern0pt}ACHAR\ {\isacharunderscore}{\kern0pt}\ c{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ CH\ c{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}erase\ {\isacharparenleft}{\kern0pt}AALTs\ {\isacharunderscore}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ ZERO{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}erase\ {\isacharparenleft}{\kern0pt}AALTs\ {\isacharunderscore}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}erase\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}r{\isacharhash}{\kern0pt}rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ ALT\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}erase\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}erase\ {\isacharparenleft}{\kern0pt}ASEQ\ {\isacharunderscore}{\kern0pt}\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ SEQ\ {\isacharparenleft}{\kern0pt}erase\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}erase\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}erase\ {\isacharparenleft}{\kern0pt}ASTAR\ {\isacharunderscore}{\kern0pt}\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ STAR\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ nonalt\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}nonalt\ {\isacharparenleft}{\kern0pt}AALTs\ bs{\isadigit{2}}\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}nonalt\ r\ {\isacharequal}{\kern0pt}\ True{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ good\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\ \isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}good\ AZERO\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}good\ {\isacharparenleft}{\kern0pt}AONE\ cs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ True{\isachardoublequoteclose}\ \isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}good\ {\isacharparenleft}{\kern0pt}ACHAR\ cs\ c{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ True{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}good\ {\isacharparenleft}{\kern0pt}AALTs\ cs\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}good\ {\isacharparenleft}{\kern0pt}AALTs\ cs\ {\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}good\ {\isacharparenleft}{\kern0pt}AALTs\ cs\ {\isacharparenleft}{\kern0pt}r{\isadigit{1}}{\isacharhash}{\kern0pt}r{\isadigit{2}}{\isacharhash}{\kern0pt}rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}{\isasymforall}r{\isacharprime}{\kern0pt}\ {\isasymin}\ set\ {\isacharparenleft}{\kern0pt}r{\isadigit{1}}{\isacharhash}{\kern0pt}r{\isadigit{2}}{\isacharhash}{\kern0pt}rs{\isacharparenright}{\kern0pt}{\isachardot}{\kern0pt}\ good\ r{\isacharprime}{\kern0pt}\ {\isasymand}\ nonalt\ r{\isacharprime}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}good\ {\isacharparenleft}{\kern0pt}ASEQ\ {\isacharunderscore}{\kern0pt}\ AZERO\ {\isacharunderscore}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}good\ {\isacharparenleft}{\kern0pt}ASEQ\ {\isacharunderscore}{\kern0pt}\ {\isacharparenleft}{\kern0pt}AONE\ {\isacharunderscore}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharunderscore}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}good\ {\isacharparenleft}{\kern0pt}ASEQ\ {\isacharunderscore}{\kern0pt}\ {\isacharunderscore}{\kern0pt}\ AZERO{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}good\ {\isacharparenleft}{\kern0pt}ASEQ\ cs\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}good\ r{\isadigit{1}}\ {\isasymand}\ good\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}good\ {\isacharparenleft}{\kern0pt}ASTAR\ cs\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ True{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ fuse\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}bit\ list\ {\isasymRightarrow}\ arexp\ {\isasymRightarrow}\ arexp{\isachardoublequoteclose}\ \isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}fuse\ bs\ AZERO\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}fuse\ bs\ {\isacharparenleft}{\kern0pt}AONE\ cs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ AONE\ {\isacharparenleft}{\kern0pt}bs\ {\isacharat}{\kern0pt}\ cs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\ \isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}fuse\ bs\ {\isacharparenleft}{\kern0pt}ACHAR\ cs\ c{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ ACHAR\ {\isacharparenleft}{\kern0pt}bs\ {\isacharat}{\kern0pt}\ cs{\isacharparenright}{\kern0pt}\ c{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}fuse\ bs\ {\isacharparenleft}{\kern0pt}AALTs\ cs\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ AALTs\ {\isacharparenleft}{\kern0pt}bs\ {\isacharat}{\kern0pt}\ cs{\isacharparenright}{\kern0pt}\ rs{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}fuse\ bs\ {\isacharparenleft}{\kern0pt}ASEQ\ cs\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ ASEQ\ {\isacharparenleft}{\kern0pt}bs\ {\isacharat}{\kern0pt}\ cs{\isacharparenright}{\kern0pt}\ r{\isadigit{1}}\ r{\isadigit{2}}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}fuse\ bs\ {\isacharparenleft}{\kern0pt}ASTAR\ cs\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ ASTAR\ {\isacharparenleft}{\kern0pt}bs\ {\isacharat}{\kern0pt}\ cs{\isacharparenright}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ fuse{\isacharunderscore}{\kern0pt}append{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}fuse\ {\isacharparenleft}{\kern0pt}bs{\isadigit{1}}\ {\isacharat}{\kern0pt}\ bs{\isadigit{2}}{\isacharparenright}{\kern0pt}\ r\ {\isacharequal}{\kern0pt}\ fuse\ bs{\isadigit{1}}\ {\isacharparenleft}{\kern0pt}fuse\ bs{\isadigit{2}}\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ r{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ intern\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}rexp\ {\isasymRightarrow}\ arexp{\isachardoublequoteclose}\ \isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}intern\ ZERO\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}intern\ ONE\ {\isacharequal}{\kern0pt}\ AONE\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}intern\ {\isacharparenleft}{\kern0pt}CH\ c{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ ACHAR\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ c{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}intern\ {\isacharparenleft}{\kern0pt}ALT\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ AALT\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}fuse\ {\isacharbrackleft}{\kern0pt}Z{\isacharbrackright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}intern\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ \isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}{\kern0pt}fuse\ {\isacharbrackleft}{\kern0pt}S{\isacharbrackright}{\kern0pt}\ \ {\isacharparenleft}{\kern0pt}intern\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}intern\ {\isacharparenleft}{\kern0pt}SEQ\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ ASEQ\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}intern\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}intern\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}intern\ {\isacharparenleft}{\kern0pt}STAR\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ ASTAR\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ retrieve\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ val\ {\isasymRightarrow}\ bit\ list{\isachardoublequoteclose}\ \isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}retrieve\ {\isacharparenleft}{\kern0pt}AONE\ bs{\isacharparenright}{\kern0pt}\ Void\ {\isacharequal}{\kern0pt}\ bs{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}retrieve\ {\isacharparenleft}{\kern0pt}ACHAR\ bs\ c{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Char\ d{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bs{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}retrieve\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\ v\ {\isacharequal}{\kern0pt}\ bs\ {\isacharat}{\kern0pt}\ retrieve\ r\ v{\isachardoublequoteclose}\ \isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}retrieve\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}r{\isacharhash}{\kern0pt}rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Left\ v{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bs\ {\isacharat}{\kern0pt}\ retrieve\ r\ v{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}retrieve\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}r{\isacharhash}{\kern0pt}rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Right\ v{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bs\ {\isacharat}{\kern0pt}\ retrieve\ {\isacharparenleft}{\kern0pt}AALTs\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}\ v{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}retrieve\ {\isacharparenleft}{\kern0pt}ASEQ\ bs\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Seq\ v{\isadigit{1}}\ v{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bs\ {\isacharat}{\kern0pt}\ retrieve\ r{\isadigit{1}}\ v{\isadigit{1}}\ {\isacharat}{\kern0pt}\ retrieve\ r{\isadigit{2}}\ v{\isadigit{2}}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}retrieve\ {\isacharparenleft}{\kern0pt}ASTAR\ bs\ r{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Stars\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bs\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}S{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}retrieve\ {\isacharparenleft}{\kern0pt}ASTAR\ bs\ r{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Stars\ {\isacharparenleft}{\kern0pt}v{\isacharhash}{\kern0pt}vs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ \isanewline -\ \ \ \ \ bs\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}Z{\isacharbrackright}{\kern0pt}\ {\isacharat}{\kern0pt}\ retrieve\ r\ v\ {\isacharat}{\kern0pt}\ retrieve\ {\isacharparenleft}{\kern0pt}ASTAR\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ r{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Stars\ vs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\isanewline -\ bnullable\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline -\isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AZERO{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AONE\ bs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ True{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}ACHAR\ bs\ c{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}{\isasymexists}r\ {\isasymin}\ set\ rs{\isachardot}{\kern0pt}\ bnullable\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}ASEQ\ bs\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bnullable\ r{\isadigit{1}}\ {\isasymand}\ bnullable\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}ASTAR\ bs\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ True{\isachardoublequoteclose}\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ \isanewline -\ \ bmkeps\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ bit\ list{\isachardoublequoteclose}\isanewline -\isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}bmkeps{\isacharparenleft}{\kern0pt}AONE\ bs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bs{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bmkeps{\isacharparenleft}{\kern0pt}ASEQ\ bs\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bs\ {\isacharat}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bmkeps\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isacharat}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bmkeps\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bmkeps{\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bs\ {\isacharat}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bmkeps\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bmkeps{\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}r{\isacharhash}{\kern0pt}rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}if\ bnullable{\isacharparenleft}{\kern0pt}r{\isacharparenright}{\kern0pt}\ then\ bs\ {\isacharat}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bmkeps\ r{\isacharparenright}{\kern0pt}\ else\ {\isacharparenleft}{\kern0pt}bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bmkeps{\isacharparenleft}{\kern0pt}ASTAR\ bs\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bs\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}S{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\isanewline -\ bder\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}char\ {\isasymRightarrow}\ arexp\ {\isasymRightarrow}\ arexp{\isachardoublequoteclose}\isanewline -\isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}bder\ c\ {\isacharparenleft}{\kern0pt}AZERO{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bder\ c\ {\isacharparenleft}{\kern0pt}AONE\ bs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bder\ c\ {\isacharparenleft}{\kern0pt}ACHAR\ bs\ d{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}if\ c\ {\isacharequal}{\kern0pt}\ d\ then\ AONE\ bs\ else\ AZERO{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bder\ c\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ AALTs\ bs\ {\isacharparenleft}{\kern0pt}map\ {\isacharparenleft}{\kern0pt}bder\ c{\isacharparenright}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bder\ c\ {\isacharparenleft}{\kern0pt}ASEQ\ bs\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ \isanewline -\ \ \ \ \ {\isacharparenleft}{\kern0pt}if\ bnullable\ r{\isadigit{1}}\isanewline -\ \ \ \ \ \ then\ AALT\ bs\ {\isacharparenleft}{\kern0pt}ASEQ\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bder\ c\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}fuse\ {\isacharparenleft}{\kern0pt}bmkeps\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bder\ c\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ else\ ASEQ\ bs\ {\isacharparenleft}{\kern0pt}bder\ c\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bder\ c\ {\isacharparenleft}{\kern0pt}ASTAR\ bs\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ ASEQ\ bs\ {\isacharparenleft}{\kern0pt}fuse\ {\isacharbrackleft}{\kern0pt}Z{\isacharbrackright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bder\ c\ r{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}ASTAR\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ \isanewline -\ \ bders\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ string\ {\isasymRightarrow}\ arexp{\isachardoublequoteclose}\isanewline -\isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}bders\ r\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bders\ r\ {\isacharparenleft}{\kern0pt}c{\isacharhash}{\kern0pt}s{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bders\ {\isacharparenleft}{\kern0pt}bder\ c\ r{\isacharparenright}{\kern0pt}\ s{\isachardoublequoteclose}\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ bders{\isacharunderscore}{\kern0pt}append{\isacharcolon}{\kern0pt}\isanewline -\ \ {\isachardoublequoteopen}bders\ r\ {\isacharparenleft}{\kern0pt}s{\isadigit{1}}\ {\isacharat}{\kern0pt}\ s{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bders\ {\isacharparenleft}{\kern0pt}bders\ r\ s{\isadigit{1}}{\isacharparenright}{\kern0pt}\ s{\isadigit{2}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ s{\isadigit{1}}\ arbitrary{\isacharcolon}{\kern0pt}\ r\ s{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ bnullable{\isacharunderscore}{\kern0pt}correctness{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}nullable\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bnullable\ r{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ r\ rule{\isacharcolon}{\kern0pt}\ erase{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}erase\ {\isacharparenleft}{\kern0pt}fuse\ bs\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ erase\ r{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ r\ rule{\isacharcolon}{\kern0pt}\ erase{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{thm}\isamarkupfalse% -\ Posix{\isachardot}{\kern0pt}induct\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ erase{\isacharunderscore}{\kern0pt}intern\ {\isacharbrackleft}{\kern0pt}simp{\isacharbrackright}{\kern0pt}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}erase\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ r{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all\ add{\isacharcolon}{\kern0pt}\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ erase{\isacharunderscore}{\kern0pt}bder\ {\isacharbrackleft}{\kern0pt}simp{\isacharbrackright}{\kern0pt}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}erase\ {\isacharparenleft}{\kern0pt}bder\ a\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ der\ a\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ r\ rule{\isacharcolon}{\kern0pt}\ erase{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all\ add{\isacharcolon}{\kern0pt}\ erase{\isacharunderscore}{\kern0pt}fuse\ bnullable{\isacharunderscore}{\kern0pt}correctness{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ erase{\isacharunderscore}{\kern0pt}bders\ {\isacharbrackleft}{\kern0pt}simp{\isacharbrackright}{\kern0pt}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}erase\ {\isacharparenleft}{\kern0pt}bders\ r\ s{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ ders\ s\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ s\ arbitrary{\isacharcolon}{\kern0pt}\ r\ {\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ retrieve{\isacharunderscore}{\kern0pt}encode{\isacharunderscore}{\kern0pt}STARS{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymforall}v{\isasymin}set\ vs{\isachardot}{\kern0pt}\ {\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ r\ {\isasymand}\ code\ v\ {\isacharequal}{\kern0pt}\ retrieve\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ v{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}code\ {\isacharparenleft}{\kern0pt}Stars\ vs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ retrieve\ {\isacharparenleft}{\kern0pt}ASTAR\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Stars\ vs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ vs{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ retrieve{\isacharunderscore}{\kern0pt}fuse{\isadigit{2}}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}retrieve\ {\isacharparenleft}{\kern0pt}fuse\ bs\ r{\isacharparenright}{\kern0pt}\ v\ {\isacharequal}{\kern0pt}\ bs\ {\isacharat}{\kern0pt}\ retrieve\ r\ v{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ r\ arbitrary{\isacharcolon}{\kern0pt}\ v\ bs{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto\ elim{\isacharcolon}{\kern0pt}\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{4}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \isacommand{defer}\isamarkupfalse% -\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ retrieve{\isacharunderscore}{\kern0pt}encode{\isacharunderscore}{\kern0pt}STARS\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto\ elim{\isacharbang}{\kern0pt}{\isacharcolon}{\kern0pt}\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ vs{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ x{\isadigit{2}}a{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto\ elim{\isacharbang}{\kern0pt}{\isacharcolon}{\kern0pt}\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ list{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto\ elim{\isacharbang}{\kern0pt}{\isacharcolon}{\kern0pt}\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ retrieve{\isacharunderscore}{\kern0pt}fuse{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}retrieve\ {\isacharparenleft}{\kern0pt}fuse\ bs\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ v\ {\isacharequal}{\kern0pt}\ bs\ {\isacharat}{\kern0pt}\ retrieve\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ v{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\ \isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all\ add{\isacharcolon}{\kern0pt}\ retrieve{\isacharunderscore}{\kern0pt}fuse{\isadigit{2}}{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ retrieve{\isacharunderscore}{\kern0pt}code{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}code\ v\ {\isacharequal}{\kern0pt}\ retrieve\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ v{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ v\ r\ {\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all\ add{\isacharcolon}{\kern0pt}\ retrieve{\isacharunderscore}{\kern0pt}fuse\ retrieve{\isacharunderscore}{\kern0pt}encode{\isacharunderscore}{\kern0pt}STARS{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ bnullable{\isacharunderscore}{\kern0pt}Hdbmkeps{\isacharunderscore}{\kern0pt}Hd{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}bnullable\ a{\isachardoublequoteclose}\ \isanewline -\ \ \isakeyword{shows}\ \ {\isachardoublequoteopen}bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}a\ {\isacharhash}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bs\ {\isacharat}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bmkeps\ a{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bmkeps{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ bmkeps{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ list{\isachardot}{\kern0pt}exhaust{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ r{\isadigit{1}}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymnot}\ bnullable\ a{\isachardoublequoteclose}\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ \ {\isachardoublequoteopen}bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}a\ {\isacharhash}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ rs{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ r{\isadigit{2}}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}x\ {\isasymin}\ set\ rs{\isachardoublequoteclose}\ {\isachardoublequoteopen}bnullable\ x{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ rs{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ \ r{\isadigit{3}}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymnot}\ bnullable\ r{\isachardoublequoteclose}\ \isanewline -\ \ \ \ \ \ \ \ \ \ {\isachardoublequoteopen}\ {\isasymexists}\ x\ {\isasymin}\ set\ rs{\isachardot}{\kern0pt}\ bnullable\ x{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}retrieve\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}mkeps\ {\isacharparenleft}{\kern0pt}erase\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ retrieve\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}r\ {\isacharhash}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}mkeps\ {\isacharparenleft}{\kern0pt}erase\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}r\ {\isacharhash}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ rs\ arbitrary{\isacharcolon}{\kern0pt}\ r\ bs{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ bnullable{\isacharunderscore}{\kern0pt}correctness\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto\ simp\ add{\isacharcolon}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}correctness\ mkeps{\isacharunderscore}{\kern0pt}nullable\ retrieve{\isacharunderscore}{\kern0pt}fuse{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ retrieve{\isacharunderscore}{\kern0pt}fuse{\isadigit{2}}{\isacharbrackleft}{\kern0pt}symmetric{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}smt\ bnullable{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{5}}{\isacharparenright}{\kern0pt}\ erase{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{6}}{\isacharparenright}{\kern0pt}\ insert{\isacharunderscore}{\kern0pt}iff\ list{\isachardot}{\kern0pt}exhaust\ list{\isachardot}{\kern0pt}set{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}\ mkeps{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ mkeps{\isacharunderscore}{\kern0pt}nullable{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ a{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}smt\ append{\isacharunderscore}{\kern0pt}Nil{\isadigit{2}}\ bnullable{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{5}}{\isacharparenright}{\kern0pt}\ erase{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{6}}{\isacharparenright}{\kern0pt}\ fuse{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ insert{\isacharunderscore}{\kern0pt}iff\ list{\isachardot}{\kern0pt}exhaust\ list{\isachardot}{\kern0pt}set{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}\ mkeps{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ mkeps{\isacharunderscore}{\kern0pt}nullable\ retrieve{\isacharunderscore}{\kern0pt}fuse{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x{\isacharequal}{\kern0pt}{\isachardoublequoteopen}a{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x{\isacharequal}{\kern0pt}{\isachardoublequoteopen}bs{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}drule\ meta{\isacharunderscore}{\kern0pt}mp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}drule\ meta{\isacharunderscore}{\kern0pt}mp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ retrieve{\isacharunderscore}{\kern0pt}fuse{\isadigit{2}}{\isacharbrackleft}{\kern0pt}symmetric{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ rs{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}correctness{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}Nil{\isadigit{2}}\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse\ fuse{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ list{\isachardot}{\kern0pt}set{\isacharunderscore}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}\ mkeps{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ mkeps{\isacharunderscore}{\kern0pt}nullable\ nullable{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}correctness{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}Nil{\isadigit{2}}\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{6}}{\isacharparenright}{\kern0pt}\ erase{\isacharunderscore}{\kern0pt}fuse\ fuse{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ list{\isachardot}{\kern0pt}set{\isacharunderscore}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}\ mkeps{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ mkeps{\isacharunderscore}{\kern0pt}nullable\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ t{\isacharcolon}{\kern0pt}\ \isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymforall}r\ {\isasymin}\ set\ rs{\isachardot}{\kern0pt}\ nullable\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}\ {\isasymlongrightarrow}\ bmkeps\ r\ {\isacharequal}{\kern0pt}\ retrieve\ r\ {\isacharparenleft}{\kern0pt}mkeps\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\ \isanewline -\ \ \ \ \ \ \ \ \ \ {\isachardoublequoteopen}nullable\ {\isacharparenleft}{\kern0pt}erase\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}\ bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ retrieve\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}mkeps\ {\isacharparenleft}{\kern0pt}erase\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ rs\ arbitrary{\isacharcolon}{\kern0pt}\ bs{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto\ simp\ add{\isacharcolon}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}correctness{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ rs{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto\ simp\ add{\isacharcolon}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}correctness{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{2}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}assumption{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x{\isacharequal}{\kern0pt}{\isachardoublequoteopen}bs{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}drule\ meta{\isacharunderscore}{\kern0pt}mp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{2}}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ a{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ bnullable{\isacharunderscore}{\kern0pt}Hdbmkeps{\isacharunderscore}{\kern0pt}Hd{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}nullable\ {\isacharparenleft}{\kern0pt}erase\ a{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{2}}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ bnullable{\isacharunderscore}{\kern0pt}correctness\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ {\isacharparenleft}{\kern0pt}no{\isacharunderscore}{\kern0pt}types{\isacharcomma}{\kern0pt}\ lifting{\isacharparenright}{\kern0pt}\ erase{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{5}}{\isacharparenright}{\kern0pt}\ erase{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{6}}{\isacharparenright}{\kern0pt}\ list{\isachardot}{\kern0pt}exhaust\ mkeps{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ retrieve{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ retrieve{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ r{\isadigit{2}}\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x{\isacharequal}{\kern0pt}{\isachardoublequoteopen}bs{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}drule\ meta{\isacharunderscore}{\kern0pt}mp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ r{\isadigit{3}}\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ r{\isadigit{3}}\ \isacommand{by}\isamarkupfalse% -\ blast% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ bmkeps{\isacharunderscore}{\kern0pt}retrieve{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}nullable\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}bmkeps\ r\ {\isacharequal}{\kern0pt}\ retrieve\ r\ {\isacharparenleft}{\kern0pt}mkeps\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ r{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{defer}\isamarkupfalse% -\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ t{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ bder{\isacharunderscore}{\kern0pt}retrieve{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ der\ c\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}retrieve\ {\isacharparenleft}{\kern0pt}bder\ c\ r{\isacharparenright}{\kern0pt}\ v\ {\isacharequal}{\kern0pt}\ retrieve\ r\ {\isacharparenleft}{\kern0pt}injval\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}\ c\ v{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ r\ arbitrary{\isacharcolon}{\kern0pt}\ v\ rule{\isacharcolon}{\kern0pt}\ erase{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\ \isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}c\ {\isacharequal}{\kern0pt}\ ca{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rename{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}r\isactrlsub {\isadigit{1}}{\isachardoublequoteclose}\ {\isachardoublequoteopen}r\isactrlsub {\isadigit{2}}{\isachardoublequoteclose}\ rs\ v{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ rs{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}smt\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ injval{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}\ injval{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ retrieve{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ retrieve{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{5}}{\isacharparenright}{\kern0pt}\ same{\isacharunderscore}{\kern0pt}append{\isacharunderscore}{\kern0pt}eq{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}nullable\ {\isacharparenleft}{\kern0pt}erase\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ r{\isadigit{1}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{2}}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ bnullable{\isacharunderscore}{\kern0pt}correctness\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ r{\isadigit{1}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{2}}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ bnullable{\isacharunderscore}{\kern0pt}correctness\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ retrieve{\isacharunderscore}{\kern0pt}fuse{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bmkeps{\isacharunderscore}{\kern0pt}retrieve{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ bnullable{\isacharunderscore}{\kern0pt}correctness\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rename{\isacharunderscore}{\kern0pt}tac\ bs\ r\ v{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}clarify{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}clarify{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ injval{\isachardot}{\kern0pt}simps{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp\ del{\isacharcolon}{\kern0pt}\ retrieve{\isachardot}{\kern0pt}simps{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ retrieve{\isachardot}{\kern0pt}simps{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ retrieve{\isachardot}{\kern0pt}simps{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ retrieve{\isacharunderscore}{\kern0pt}fuse{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\ \ \isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ MAIN{\isacharunderscore}{\kern0pt}decode{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ ders\ s\ r{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}Some\ {\isacharparenleft}{\kern0pt}flex\ r\ id\ s\ v{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ decode\ {\isacharparenleft}{\kern0pt}retrieve\ {\isacharparenleft}{\kern0pt}bders\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ s{\isacharparenright}{\kern0pt}\ v{\isacharparenright}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\isacommand{proof}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}induct\ s\ arbitrary{\isacharcolon}{\kern0pt}\ v\ rule{\isacharcolon}{\kern0pt}\ rev{\isacharunderscore}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{case}\isamarkupfalse% -\ Nil\isanewline -\ \ \isacommand{have}\isamarkupfalse% -\ {\isachardoublequoteopen}{\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ ders\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ r{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% -\ fact\isanewline -\ \ \isacommand{then}\isamarkupfalse% -\ \isacommand{have}\isamarkupfalse% -\ {\isachardoublequoteopen}{\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ r{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{then}\isamarkupfalse% -\ \isacommand{have}\isamarkupfalse% -\ {\isachardoublequoteopen}Some\ v\ {\isacharequal}{\kern0pt}\ decode\ {\isacharparenleft}{\kern0pt}retrieve\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ v{\isacharparenright}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline -\ \ \ \ \isacommand{using}\isamarkupfalse% -\ decode{\isacharunderscore}{\kern0pt}code\ retrieve{\isacharunderscore}{\kern0pt}code\ \isacommand{by}\isamarkupfalse% -\ auto\isanewline -\ \ \isacommand{then}\isamarkupfalse% -\ \isacommand{show}\isamarkupfalse% -\ {\isachardoublequoteopen}Some\ {\isacharparenleft}{\kern0pt}flex\ r\ id\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ v{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ decode\ {\isacharparenleft}{\kern0pt}retrieve\ {\isacharparenleft}{\kern0pt}bders\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\ v{\isacharparenright}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline -\ \ \ \ \isacommand{by}\isamarkupfalse% -\ simp\isanewline -\isacommand{next}\isamarkupfalse% -\isanewline -\ \ \isacommand{case}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}snoc\ c\ s\ v{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{have}\isamarkupfalse% -\ IH{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymAnd}v{\isachardot}{\kern0pt}\ {\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ ders\ s\ r\ {\isasymLongrightarrow}\ \isanewline -\ \ \ \ \ Some\ {\isacharparenleft}{\kern0pt}flex\ r\ id\ s\ v{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ decode\ {\isacharparenleft}{\kern0pt}retrieve\ {\isacharparenleft}{\kern0pt}bders\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ s{\isacharparenright}{\kern0pt}\ v{\isacharparenright}{\kern0pt}\ r{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% -\ fact\isanewline -\ \ \isacommand{have}\isamarkupfalse% -\ asm{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ ders\ {\isacharparenleft}{\kern0pt}s\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}c{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\ r{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% -\ fact\isanewline -\ \ \isacommand{then}\isamarkupfalse% -\ \isacommand{have}\isamarkupfalse% -\ asm{\isadigit{2}}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymTurnstile}\ injval\ {\isacharparenleft}{\kern0pt}ders\ s\ r{\isacharparenright}{\kern0pt}\ c\ v\ {\isacharcolon}{\kern0pt}\ ders\ s\ r{\isachardoublequoteclose}\ \isanewline -\ \ \ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ Prf{\isacharunderscore}{\kern0pt}injval\ ders{\isacharunderscore}{\kern0pt}append{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{have}\isamarkupfalse% -\ {\isachardoublequoteopen}Some\ {\isacharparenleft}{\kern0pt}flex\ r\ id\ {\isacharparenleft}{\kern0pt}s\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}c{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\ v{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ Some\ {\isacharparenleft}{\kern0pt}flex\ r\ id\ s\ {\isacharparenleft}{\kern0pt}injval\ {\isacharparenleft}{\kern0pt}ders\ s\ r{\isacharparenright}{\kern0pt}\ c\ v{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\ \ \ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ flex{\isacharunderscore}{\kern0pt}append{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{also}\isamarkupfalse% -\ \isacommand{have}\isamarkupfalse% -\ {\isachardoublequoteopen}{\isachardot}{\kern0pt}{\isachardot}{\kern0pt}{\isachardot}{\kern0pt}\ {\isacharequal}{\kern0pt}\ decode\ {\isacharparenleft}{\kern0pt}retrieve\ {\isacharparenleft}{\kern0pt}bders\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ s{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}injval\ {\isacharparenleft}{\kern0pt}ders\ s\ r{\isacharparenright}{\kern0pt}\ c\ v{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline -\ \ \ \ \isacommand{using}\isamarkupfalse% -\ asm{\isadigit{2}}\ IH\ \isacommand{by}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{also}\isamarkupfalse% -\ \isacommand{have}\isamarkupfalse% -\ {\isachardoublequoteopen}{\isachardot}{\kern0pt}{\isachardot}{\kern0pt}{\isachardot}{\kern0pt}\ {\isacharequal}{\kern0pt}\ decode\ {\isacharparenleft}{\kern0pt}retrieve\ {\isacharparenleft}{\kern0pt}bder\ c\ {\isacharparenleft}{\kern0pt}bders\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ s{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ v{\isacharparenright}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline -\ \ \ \ \isacommand{using}\isamarkupfalse% -\ asm\ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all\ add{\isacharcolon}{\kern0pt}\ bder{\isacharunderscore}{\kern0pt}retrieve\ ders{\isacharunderscore}{\kern0pt}append{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{finally}\isamarkupfalse% -\ \isacommand{show}\isamarkupfalse% -\ {\isachardoublequoteopen}Some\ {\isacharparenleft}{\kern0pt}flex\ r\ id\ {\isacharparenleft}{\kern0pt}s\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}c{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\ v{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ \isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ decode\ {\isacharparenleft}{\kern0pt}retrieve\ {\isacharparenleft}{\kern0pt}bders\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}s\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}c{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ v{\isacharparenright}{\kern0pt}\ r{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bders{\isacharunderscore}{\kern0pt}append{\isacharparenright}{\kern0pt}\isanewline -\isacommand{qed}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{definition}\isamarkupfalse% -\ blex\ \isakeyword{where}\isanewline -\ {\isachardoublequoteopen}blex\ a\ s\ {\isasymequiv}\ if\ bnullable\ {\isacharparenleft}{\kern0pt}bders\ a\ s{\isacharparenright}{\kern0pt}\ then\ Some\ {\isacharparenleft}{\kern0pt}bmkeps\ {\isacharparenleft}{\kern0pt}bders\ a\ s{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ else\ None{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isanewline -\isacommand{definition}\isamarkupfalse% -\ blexer\ \isakeyword{where}\isanewline -\ {\isachardoublequoteopen}blexer\ r\ s\ {\isasymequiv}\ if\ bnullable\ {\isacharparenleft}{\kern0pt}bders\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ s{\isacharparenright}{\kern0pt}\ then\ \isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ decode\ {\isacharparenleft}{\kern0pt}bmkeps\ {\isacharparenleft}{\kern0pt}bders\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ s{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ r\ else\ None{\isachardoublequoteclose}\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ blexer{\isacharunderscore}{\kern0pt}correctness{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}blexer\ r\ s\ {\isacharequal}{\kern0pt}\ lexer\ r\ s{\isachardoublequoteclose}\isanewline -% -\isadelimproof -% -\endisadelimproof -% -\isatagproof -\isacommand{proof}\isamarkupfalse% -\ {\isacharminus}{\kern0pt}\isanewline -\ \ \isacommand{{\isacharbraceleft}{\kern0pt}}\isamarkupfalse% -\ \isacommand{define}\isamarkupfalse% -\ bds\ \isakeyword{where}\ {\isachardoublequoteopen}bds\ {\isasymequiv}\ bders\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ s{\isachardoublequoteclose}\isanewline -\ \ \ \ \isacommand{define}\isamarkupfalse% -\ ds\ \ \isakeyword{where}\ {\isachardoublequoteopen}ds\ {\isasymequiv}\ ders\ s\ r{\isachardoublequoteclose}\isanewline -\ \ \ \ \isacommand{assume}\isamarkupfalse% -\ asm{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}nullable\ ds{\isachardoublequoteclose}\isanewline -\ \ \ \ \isacommand{have}\isamarkupfalse% -\ era{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}erase\ bds\ {\isacharequal}{\kern0pt}\ ds{\isachardoublequoteclose}\ \isanewline -\ \ \ \ \ \ \isacommand{unfolding}\isamarkupfalse% -\ ds{\isacharunderscore}{\kern0pt}def\ bds{\isacharunderscore}{\kern0pt}def\ \isacommand{by}\isamarkupfalse% -\ simp\isanewline -\ \ \ \ \isacommand{have}\isamarkupfalse% -\ mke{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymTurnstile}\ mkeps\ ds\ {\isacharcolon}{\kern0pt}\ ds{\isachardoublequoteclose}\isanewline -\ \ \ \ \ \ \isacommand{using}\isamarkupfalse% -\ asm\ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ mkeps{\isacharunderscore}{\kern0pt}nullable{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{have}\isamarkupfalse% -\ {\isachardoublequoteopen}decode\ {\isacharparenleft}{\kern0pt}bmkeps\ bds{\isacharparenright}{\kern0pt}\ r\ {\isacharequal}{\kern0pt}\ decode\ {\isacharparenleft}{\kern0pt}retrieve\ bds\ {\isacharparenleft}{\kern0pt}mkeps\ ds{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline -\ \ \ \ \ \ \isacommand{using}\isamarkupfalse% -\ bmkeps{\isacharunderscore}{\kern0pt}retrieve\isanewline -\ \ \ \ \ \ \isacommand{using}\isamarkupfalse% -\ asm\ era\ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bmkeps{\isacharunderscore}{\kern0pt}retrieve{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{also}\isamarkupfalse% -\ \isacommand{have}\isamarkupfalse% -\ {\isachardoublequoteopen}{\isachardot}{\kern0pt}{\isachardot}{\kern0pt}{\isachardot}{\kern0pt}\ {\isacharequal}{\kern0pt}\ \ Some\ {\isacharparenleft}{\kern0pt}flex\ r\ id\ s\ {\isacharparenleft}{\kern0pt}mkeps\ ds{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\ \ \ \ \ \ \isacommand{using}\isamarkupfalse% -\ mke\ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all\ add{\isacharcolon}{\kern0pt}\ MAIN{\isacharunderscore}{\kern0pt}decode\ ds{\isacharunderscore}{\kern0pt}def\ bds{\isacharunderscore}{\kern0pt}def{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{finally}\isamarkupfalse% -\ \isacommand{have}\isamarkupfalse% -\ {\isachardoublequoteopen}decode\ {\isacharparenleft}{\kern0pt}bmkeps\ bds{\isacharparenright}{\kern0pt}\ r\ {\isacharequal}{\kern0pt}\ Some\ {\isacharparenleft}{\kern0pt}flex\ r\ id\ s\ {\isacharparenleft}{\kern0pt}mkeps\ ds{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\ \isanewline -\ \ \ \ \ \ \isacommand{unfolding}\isamarkupfalse% -\ bds{\isacharunderscore}{\kern0pt}def\ ds{\isacharunderscore}{\kern0pt}def\ \isacommand{{\isachardot}{\kern0pt}}\isamarkupfalse% -\isanewline -\ \ \isacommand{{\isacharbraceright}{\kern0pt}}\isamarkupfalse% -\isanewline -\ \ \isacommand{then}\isamarkupfalse% -\ \isacommand{show}\isamarkupfalse% -\ {\isachardoublequoteopen}blexer\ r\ s\ {\isacharequal}{\kern0pt}\ lexer\ r\ s{\isachardoublequoteclose}\isanewline -\ \ \ \ \isacommand{unfolding}\isamarkupfalse% -\ blexer{\isacharunderscore}{\kern0pt}def\ lexer{\isacharunderscore}{\kern0pt}flex\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ bnullable{\isacharunderscore}{\kern0pt}correctness{\isacharbrackleft}{\kern0pt}symmetric{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{done}\isamarkupfalse% -\isanewline -\isacommand{qed}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ distinctBy\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isacharprime}{\kern0pt}a\ list\ {\isasymRightarrow}\ {\isacharparenleft}{\kern0pt}{\isacharprime}{\kern0pt}a\ {\isasymRightarrow}\ {\isacharprime}{\kern0pt}b{\isacharparenright}{\kern0pt}\ {\isasymRightarrow}\ {\isacharprime}{\kern0pt}b\ set\ {\isasymRightarrow}\ {\isacharprime}{\kern0pt}a\ list{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}distinctBy\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ f\ acc\ {\isacharequal}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}distinctBy\ {\isacharparenleft}{\kern0pt}x{\isacharhash}{\kern0pt}xs{\isacharparenright}{\kern0pt}\ f\ acc\ {\isacharequal}{\kern0pt}\ \isanewline -\ \ \ \ \ {\isacharparenleft}{\kern0pt}if\ {\isacharparenleft}{\kern0pt}f\ x{\isacharparenright}{\kern0pt}\ {\isasymin}\ acc\ then\ distinctBy\ xs\ f\ acc\ \isanewline -\ \ \ \ \ \ else\ x\ {\isacharhash}{\kern0pt}\ {\isacharparenleft}{\kern0pt}distinctBy\ xs\ f\ {\isacharparenleft}{\kern0pt}{\isacharbraceleft}{\kern0pt}f\ x{\isacharbraceright}{\kern0pt}\ {\isasymunion}\ acc{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ flts\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ list\ {\isasymRightarrow}\ arexp\ list{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{where}\ \isanewline -\ \ {\isachardoublequoteopen}flts\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}flts\ {\isacharparenleft}{\kern0pt}AZERO\ {\isacharhash}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ flts\ rs{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}flts\ {\isacharparenleft}{\kern0pt}{\isacharparenleft}{\kern0pt}AALTs\ bs\ \ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isacharhash}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}map\ {\isacharparenleft}{\kern0pt}fuse\ bs{\isacharparenright}{\kern0pt}\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isacharat}{\kern0pt}\ flts\ rs{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}flts\ {\isacharparenleft}{\kern0pt}r{\isadigit{1}}\ {\isacharhash}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ r{\isadigit{1}}\ {\isacharhash}{\kern0pt}\ flts\ rs{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ li\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}bit\ list\ {\isasymRightarrow}\ arexp\ list\ {\isasymRightarrow}\ arexp{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}li\ {\isacharunderscore}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}li\ bs\ {\isacharbrackleft}{\kern0pt}a{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ fuse\ bs\ a{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}li\ bs\ as\ {\isacharequal}{\kern0pt}\ AALTs\ bs\ as{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ bsimp{\isacharunderscore}{\kern0pt}ASEQ\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}bit\ list\ {\isasymRightarrow}\ arexp\ {\isasymRightarrow}\ arexp\ {\isasymRightarrow}\ arexp{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}bsimp{\isacharunderscore}{\kern0pt}ASEQ\ {\isacharunderscore}{\kern0pt}\ AZERO\ {\isacharunderscore}{\kern0pt}\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bsimp{\isacharunderscore}{\kern0pt}ASEQ\ {\isacharunderscore}{\kern0pt}\ {\isacharunderscore}{\kern0pt}\ AZERO\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bsimp{\isacharunderscore}{\kern0pt}ASEQ\ bs{\isadigit{1}}\ {\isacharparenleft}{\kern0pt}AONE\ bs{\isadigit{2}}{\isacharparenright}{\kern0pt}\ r{\isadigit{2}}\ {\isacharequal}{\kern0pt}\ fuse\ {\isacharparenleft}{\kern0pt}bs{\isadigit{1}}\ {\isacharat}{\kern0pt}\ bs{\isadigit{2}}{\isacharparenright}{\kern0pt}\ r{\isadigit{2}}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bsimp{\isacharunderscore}{\kern0pt}ASEQ\ bs{\isadigit{1}}\ r{\isadigit{1}}\ r{\isadigit{2}}\ {\isacharequal}{\kern0pt}\ ASEQ\ \ bs{\isadigit{1}}\ r{\isadigit{1}}\ r{\isadigit{2}}{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ bsimp{\isacharunderscore}{\kern0pt}AALTs\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}bit\ list\ {\isasymRightarrow}\ arexp\ list\ {\isasymRightarrow}\ arexp{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}bsimp{\isacharunderscore}{\kern0pt}AALTs\ {\isacharunderscore}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bsimp{\isacharunderscore}{\kern0pt}AALTs\ bs{\isadigit{1}}\ {\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ fuse\ bs{\isadigit{1}}\ r{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bsimp{\isacharunderscore}{\kern0pt}AALTs\ bs{\isadigit{1}}\ rs\ {\isacharequal}{\kern0pt}\ AALTs\ bs{\isadigit{1}}\ rs{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ bsimp\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ arexp{\isachardoublequoteclose}\ \isanewline -\ \ \isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}bsimp\ {\isacharparenleft}{\kern0pt}ASEQ\ bs{\isadigit{1}}\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bsimp{\isacharunderscore}{\kern0pt}ASEQ\ bs{\isadigit{1}}\ {\isacharparenleft}{\kern0pt}bsimp\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bsimp\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bsimp\ {\isacharparenleft}{\kern0pt}AALTs\ bs{\isadigit{1}}\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bsimp{\isacharunderscore}{\kern0pt}AALTs\ bs{\isadigit{1}}\ {\isacharparenleft}{\kern0pt}distinctBy\ \ {\isacharparenleft}{\kern0pt}flts\ {\isacharparenleft}{\kern0pt}map\ bsimp\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ erase\ {\isacharbraceleft}{\kern0pt}{\isacharbraceright}{\kern0pt}\ {\isacharparenright}{\kern0pt}\ {\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bsimp\ r\ {\isacharequal}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ \isanewline -\ \ bders{\isacharunderscore}{\kern0pt}simp\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ string\ {\isasymRightarrow}\ arexp{\isachardoublequoteclose}\isanewline -\isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}bders{\isacharunderscore}{\kern0pt}simp\ r\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bders{\isacharunderscore}{\kern0pt}simp\ r\ {\isacharparenleft}{\kern0pt}c\ {\isacharhash}{\kern0pt}\ s{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bders{\isacharunderscore}{\kern0pt}simp\ {\isacharparenleft}{\kern0pt}bsimp\ {\isacharparenleft}{\kern0pt}bder\ c\ r{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ s{\isachardoublequoteclose}\isanewline -\isanewline -\isacommand{definition}\isamarkupfalse% -\ blexer{\isacharunderscore}{\kern0pt}simp\ \isakeyword{where}\isanewline -\ {\isachardoublequoteopen}blexer{\isacharunderscore}{\kern0pt}simp\ r\ s\ {\isasymequiv}\ if\ bnullable\ {\isacharparenleft}{\kern0pt}bders{\isacharunderscore}{\kern0pt}simp\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ s{\isacharparenright}{\kern0pt}\ then\ \isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ decode\ {\isacharparenleft}{\kern0pt}bmkeps\ {\isacharparenleft}{\kern0pt}bders{\isacharunderscore}{\kern0pt}simp\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ s{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ r\ else\ None{\isachardoublequoteclose}\isanewline -\isanewline -\isacommand{export{\isacharunderscore}{\kern0pt}code}\isamarkupfalse% -\ bders{\isacharunderscore}{\kern0pt}simp\ \isakeyword{in}\ Scala\ \isakeyword{module{\isacharunderscore}{\kern0pt}name}\ Example\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ bders{\isacharunderscore}{\kern0pt}simp{\isacharunderscore}{\kern0pt}append{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}bders{\isacharunderscore}{\kern0pt}simp\ r\ {\isacharparenleft}{\kern0pt}s{\isadigit{1}}\ {\isacharat}{\kern0pt}\ s{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bders{\isacharunderscore}{\kern0pt}simp\ {\isacharparenleft}{\kern0pt}bders{\isacharunderscore}{\kern0pt}simp\ r\ s{\isadigit{1}}{\isacharparenright}{\kern0pt}\ s{\isadigit{2}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ s{\isadigit{1}}\ arbitrary{\isacharcolon}{\kern0pt}\ r\ s{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ L{\isacharunderscore}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isacharcolon}{\kern0pt}\isanewline -\ \ {\isachardoublequoteopen}L\ {\isacharparenleft}{\kern0pt}SEQ\ {\isacharparenleft}{\kern0pt}erase\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}erase\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ L\ {\isacharparenleft}{\kern0pt}erase\ {\isacharparenleft}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}ASEQ\ bs\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ bs\ r{\isadigit{1}}\ r{\isadigit{2}}\ rule{\isacharcolon}{\kern0pt}\ bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ erase{\isacharunderscore}{\kern0pt}fuse\ fuse{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ L{\isacharunderscore}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}AALTs{\isacharcolon}{\kern0pt}\isanewline -\ \ {\isachardoublequoteopen}L\ {\isacharparenleft}{\kern0pt}erase\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ L\ {\isacharparenleft}{\kern0pt}erase\ {\isacharparenleft}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ bs\ rs\ rule{\isacharcolon}{\kern0pt}\ bsimp{\isacharunderscore}{\kern0pt}AALTs{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all\ add{\isacharcolon}{\kern0pt}\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}AALTs{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}L\ {\isacharparenleft}{\kern0pt}erase\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isasymUnion}\ {\isacharparenleft}{\kern0pt}L\ {\isacharbackquote}{\kern0pt}\ erase\ {\isacharbackquote}{\kern0pt}\ {\isacharparenleft}{\kern0pt}set\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ rs{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ rs{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}flts{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}{\isasymUnion}\ {\isacharparenleft}{\kern0pt}L\ {\isacharbackquote}{\kern0pt}\ erase\ {\isacharbackquote}{\kern0pt}\ {\isacharparenleft}{\kern0pt}set\ {\isacharparenleft}{\kern0pt}flts\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isasymUnion}\ {\isacharparenleft}{\kern0pt}L\ {\isacharbackquote}{\kern0pt}\ erase\ {\isacharbackquote}{\kern0pt}\ {\isacharparenleft}{\kern0pt}set\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ rs\ rule{\isacharcolon}{\kern0pt}\ flts{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}AALTs\ erase{\isacharunderscore}{\kern0pt}fuse\ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}AALTs\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}dB{\isacharunderscore}{\kern0pt}acc{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}{\isacharparenleft}{\kern0pt}\ {\isasymUnion}{\isacharparenleft}{\kern0pt}L\ {\isacharbackquote}{\kern0pt}\ acc{\isacharparenright}{\kern0pt}\ {\isasymunion}\ {\isacharparenleft}{\kern0pt}\ {\isasymUnion}\ {\isacharparenleft}{\kern0pt}L\ {\isacharbackquote}{\kern0pt}\ erase\ {\isacharbackquote}{\kern0pt}\ {\isacharparenleft}{\kern0pt}set\ {\isacharparenleft}{\kern0pt}distinctBy\ rs\ erase\ acc{\isacharparenright}{\kern0pt}\ {\isacharparenright}{\kern0pt}\ {\isacharparenright}{\kern0pt}\ {\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isasymUnion}{\isacharparenleft}{\kern0pt}L\ {\isacharbackquote}{\kern0pt}\ acc{\isacharparenright}{\kern0pt}\ {\isasymunion}\ \ {\isasymUnion}\ {\isacharparenleft}{\kern0pt}L\ {\isacharbackquote}{\kern0pt}\ erase\ {\isacharbackquote}{\kern0pt}\ {\isacharparenleft}{\kern0pt}set\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ rs\ arbitrary{\isacharcolon}{\kern0pt}\ acc{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}smt\ {\isacharparenleft}{\kern0pt}z{\isadigit{3}}{\isacharparenright}{\kern0pt}\ SUP{\isacharunderscore}{\kern0pt}absorb\ UN{\isacharunderscore}{\kern0pt}insert\ sup{\isacharunderscore}{\kern0pt}assoc\ sup{\isacharunderscore}{\kern0pt}commute{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}dB{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}\ {\isacharparenleft}{\kern0pt}\ {\isasymUnion}\ {\isacharparenleft}{\kern0pt}L\ {\isacharbackquote}{\kern0pt}\ erase\ {\isacharbackquote}{\kern0pt}\ {\isacharparenleft}{\kern0pt}set\ {\isacharparenleft}{\kern0pt}distinctBy\ rs\ erase\ {\isacharbraceleft}{\kern0pt}{\isacharbraceright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharparenright}{\kern0pt}\ {\isacharparenright}{\kern0pt}\ {\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isasymUnion}\ {\isacharparenleft}{\kern0pt}L\ {\isacharbackquote}{\kern0pt}\ erase\ {\isacharbackquote}{\kern0pt}\ {\isacharparenleft}{\kern0pt}set\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}dB{\isacharunderscore}{\kern0pt}acc\ Un{\isacharunderscore}{\kern0pt}commute\ Union{\isacharunderscore}{\kern0pt}image{\isacharunderscore}{\kern0pt}empty{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ L{\isacharunderscore}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}erase{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}L\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ L\ {\isacharparenleft}{\kern0pt}erase\ {\isacharparenleft}{\kern0pt}bsimp\ r{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ r{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto\ simp\ add{\isacharcolon}{\kern0pt}\ Sequ{\isacharunderscore}{\kern0pt}def{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ L{\isacharunderscore}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isacharbrackleft}{\kern0pt}symmetric{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto\ simp\ add{\isacharcolon}{\kern0pt}\ Sequ{\isacharunderscore}{\kern0pt}def{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ {\isacharparenleft}{\kern0pt}asm{\isacharparenright}{\kern0pt}\ \ L{\isacharunderscore}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isacharbrackleft}{\kern0pt}symmetric{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto\ simp\ add{\isacharcolon}{\kern0pt}\ Sequ{\isacharunderscore}{\kern0pt}def{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ L{\isacharunderscore}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}AALTs{\isacharbrackleft}{\kern0pt}symmetric{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{defer}\isamarkupfalse% -\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ {\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}AALTs{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}dB{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}flts{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}AALTs{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}AALTs\ \isacommand{by}\isamarkupfalse% -\ blast% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isadigit{0}}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}bsimp{\isacharunderscore}{\kern0pt}ASEQ\ bs\ r{\isadigit{1}}\ AZERO\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isadigit{1}}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}r{\isadigit{1}}\ {\isasymnoteq}\ AZERO{\isachardoublequoteclose}\ {\isachardoublequoteopen}r{\isadigit{2}}\ {\isasymnoteq}\ AZERO{\isachardoublequoteclose}\ {\isachardoublequoteopen}{\isasymforall}bs{\isachardot}{\kern0pt}\ r{\isadigit{1}}\ {\isasymnoteq}\ AONE\ bs{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}bsimp{\isacharunderscore}{\kern0pt}ASEQ\ bs\ r{\isadigit{1}}\ r{\isadigit{2}}\ {\isacharequal}{\kern0pt}\ ASEQ\ bs\ r{\isadigit{1}}\ r{\isadigit{2}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ bs\ r{\isadigit{1}}\ r{\isadigit{2}}\ rule{\isacharcolon}{\kern0pt}\ bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isadigit{2}}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}bsimp{\isacharunderscore}{\kern0pt}ASEQ\ bs\ {\isacharparenleft}{\kern0pt}AONE\ bs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ r{\isadigit{2}}\ {\isacharequal}{\kern0pt}\ fuse\ {\isacharparenleft}{\kern0pt}bs\ {\isacharat}{\kern0pt}\ bs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ r{\isadigit{2}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ L{\isacharunderscore}{\kern0pt}bders{\isacharunderscore}{\kern0pt}simp{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}L\ {\isacharparenleft}{\kern0pt}erase\ {\isacharparenleft}{\kern0pt}bders{\isacharunderscore}{\kern0pt}simp\ r\ s{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ L\ {\isacharparenleft}{\kern0pt}erase\ {\isacharparenleft}{\kern0pt}bders\ r\ s{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ s\ arbitrary{\isacharcolon}{\kern0pt}\ r\ rule{\isacharcolon}{\kern0pt}\ rev{\isacharunderscore}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ ders{\isacharunderscore}{\kern0pt}append{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bders{\isacharunderscore}{\kern0pt}simp{\isacharunderscore}{\kern0pt}append{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ L{\isacharunderscore}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}erase{\isacharbrackleft}{\kern0pt}symmetric{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ der{\isacharunderscore}{\kern0pt}correctness{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ b{\isadigit{2}}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}bnullable\ r{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}bmkeps\ {\isacharparenleft}{\kern0pt}fuse\ bs\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bs\ {\isacharat}{\kern0pt}\ bmkeps\ r{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ assms\ bmkeps{\isacharunderscore}{\kern0pt}retrieve\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse\ mkeps{\isacharunderscore}{\kern0pt}nullable\ retrieve{\isacharunderscore}{\kern0pt}fuse{\isadigit{2}}{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ b{\isadigit{4}}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}bders{\isacharunderscore}{\kern0pt}simp\ r\ s{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bnullable\ {\isacharparenleft}{\kern0pt}bders\ r\ s{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ L{\isacharunderscore}{\kern0pt}bders{\isacharunderscore}{\kern0pt}simp\ bnullable{\isacharunderscore}{\kern0pt}correctness\ lexer{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}\ lexer{\isacharunderscore}{\kern0pt}correct{\isacharunderscore}{\kern0pt}None\ option{\isachardot}{\kern0pt}distinct{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ qq{\isadigit{1}}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymexists}r\ {\isasymin}\ set\ rs{\isachardot}{\kern0pt}\ bnullable\ r{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs\ {\isacharat}{\kern0pt}\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ rs\ arbitrary{\isacharcolon}{\kern0pt}\ rs{\isadigit{1}}\ bs{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ Nil{\isacharunderscore}{\kern0pt}is{\isacharunderscore}{\kern0pt}append{\isacharunderscore}{\kern0pt}conv\ bmkeps{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ neq{\isacharunderscore}{\kern0pt}Nil{\isacharunderscore}{\kern0pt}conv\ bnullable{\isacharunderscore}{\kern0pt}Hdbmkeps{\isacharunderscore}{\kern0pt}Hd\ split{\isacharunderscore}{\kern0pt}list{\isacharunderscore}{\kern0pt}last{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ qq{\isadigit{2}}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymforall}r\ {\isasymin}\ set\ rs{\isachardot}{\kern0pt}\ {\isasymnot}\ bnullable\ r{\isachardoublequoteclose}\ {\isachardoublequoteopen}{\isasymexists}r\ {\isasymin}\ set\ rs{\isadigit{1}}{\isachardot}{\kern0pt}\ bnullable\ r{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs\ {\isacharat}{\kern0pt}\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ rs\ arbitrary{\isacharcolon}{\kern0pt}\ rs{\isadigit{1}}\ bs{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}assoc\ in{\isacharunderscore}{\kern0pt}set{\isacharunderscore}{\kern0pt}conv{\isacharunderscore}{\kern0pt}decomp\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\ \ \isanewline -\isacommand{lemma}\isamarkupfalse% -\ qq{\isadigit{3}}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}{\isasymexists}r\ {\isasymin}\ set\ rs{\isachardot}{\kern0pt}\ bnullable\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ rs\ arbitrary{\isacharcolon}{\kern0pt}\ bs{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ nonnested\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}nonnested\ {\isacharparenleft}{\kern0pt}AALTs\ bs{\isadigit{2}}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ True{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}nonnested\ {\isacharparenleft}{\kern0pt}AALTs\ bs{\isadigit{2}}\ {\isacharparenleft}{\kern0pt}{\isacharparenleft}{\kern0pt}AALTs\ bs{\isadigit{1}}\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isacharhash}{\kern0pt}\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}nonnested\ {\isacharparenleft}{\kern0pt}AALTs\ bs{\isadigit{2}}\ {\isacharparenleft}{\kern0pt}r\ {\isacharhash}{\kern0pt}\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ nonnested\ {\isacharparenleft}{\kern0pt}AALTs\ bs{\isadigit{2}}\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}nonnested\ r\ {\isacharequal}{\kern0pt}\ True{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ \ k{\isadigit{0}}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}flts\ {\isacharparenleft}{\kern0pt}r\ {\isacharhash}{\kern0pt}\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ flts\ {\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}\ {\isacharat}{\kern0pt}\ flts\ rs{\isadigit{1}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ r\ arbitrary{\isacharcolon}{\kern0pt}\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ \ k{\isadigit{0}}{\isadigit{0}}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}flts\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}\ {\isacharat}{\kern0pt}\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ flts\ rs{\isadigit{1}}\ {\isacharat}{\kern0pt}\ flts\ rs{\isadigit{2}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ rs{\isadigit{1}}\ arbitrary{\isacharcolon}{\kern0pt}\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isachardot}{\kern0pt}assoc\ k{\isadigit{0}}{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ \ k{\isadigit{0}}a{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}flts\ {\isacharbrackleft}{\kern0pt}AALTs\ bs\ rs{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ map\ {\isacharparenleft}{\kern0pt}fuse\ bs{\isacharparenright}{\kern0pt}\ \ rs{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ bsimp{\isacharunderscore}{\kern0pt}AALTs{\isacharunderscore}{\kern0pt}qq{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isadigit{1}}\ {\isacharless}{\kern0pt}\ length\ rs{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}bsimp{\isacharunderscore}{\kern0pt}AALTs\ bs\ rs\ {\isacharequal}{\kern0pt}\ AALTs\ bs\ \ rs{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ \ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ rs{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ list{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ bbbbs{\isadigit{1}}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}nonalt\ r\ {\isasymor}\ {\isacharparenleft}{\kern0pt}{\isasymexists}bs\ rs{\isachardot}{\kern0pt}\ r\ \ {\isacharequal}{\kern0pt}\ AALTs\ bs\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ nonalt{\isachardot}{\kern0pt}elims{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ \isacommand{by}\isamarkupfalse% -\ auto% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\ \ \isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ flts{\isacharunderscore}{\kern0pt}append{\isacharcolon}{\kern0pt}\isanewline -\ \ {\isachardoublequoteopen}flts\ {\isacharparenleft}{\kern0pt}xs{\isadigit{1}}\ {\isacharat}{\kern0pt}\ xs{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ flts\ xs{\isadigit{1}}\ {\isacharat}{\kern0pt}\ flts\ xs{\isadigit{2}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ xs{\isadigit{1}}\ \ arbitrary{\isacharcolon}{\kern0pt}\ xs{\isadigit{2}}\ \ rule{\isacharcolon}{\kern0pt}\ rev{\isacharunderscore}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ xs{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ x{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ x{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{fun}\isamarkupfalse% -\ nonazero\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}nonazero\ AZERO\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}nonazero\ r\ {\isacharequal}{\kern0pt}\ True{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ flts{\isacharunderscore}{\kern0pt}single{\isadigit{1}}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}nonalt\ r{\isachardoublequoteclose}\ {\isachardoublequoteopen}nonazero\ r{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}flts\ {\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ r{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ q{\isadigit{3}}a{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymexists}r\ {\isasymin}\ set\ rs{\isachardot}{\kern0pt}\ bnullable\ r{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}map\ {\isacharparenleft}{\kern0pt}fuse\ bs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ {\isacharparenleft}{\kern0pt}bs{\isacharat}{\kern0pt}bs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ rs\ arbitrary{\isacharcolon}{\kern0pt}\ bs\ bs{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}assoc\ b{\isadigit{2}}\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse\ bnullable{\isacharunderscore}{\kern0pt}Hdbmkeps{\isacharunderscore}{\kern0pt}Hd{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ a{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isachardot}{\kern0pt}assoc\ b{\isadigit{2}}\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse\ bnullable{\isacharunderscore}{\kern0pt}Hdbmkeps{\isacharunderscore}{\kern0pt}Hd{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ rs{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}{\isacharplus}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ qq{\isadigit{4}}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymexists}x{\isasymin}set\ list{\isachardot}{\kern0pt}\ bnullable\ x{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}{\isasymexists}x{\isasymin}set\ {\isacharparenleft}{\kern0pt}flts\ list{\isacharparenright}{\kern0pt}{\isachardot}{\kern0pt}\ bnullable\ x{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ list\ rule{\isacharcolon}{\kern0pt}\ flts{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ UnCI\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse\ imageI{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\ \ \isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ qs{\isadigit{3}}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymexists}r\ {\isasymin}\ set\ rs{\isachardot}{\kern0pt}\ bnullable\ r{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}flts\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ rs\ arbitrary{\isacharcolon}{\kern0pt}\ bs\ taking{\isacharcolon}{\kern0pt}\ size\ rule{\isacharcolon}{\kern0pt}\ measure{\isacharunderscore}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ x{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ a{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}Hdbmkeps{\isacharunderscore}{\kern0pt}Hd{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}flts\ list{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}AALTs\ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}flts\ L{\isacharunderscore}{\kern0pt}flat{\isacharunderscore}{\kern0pt}Prf{\isadigit{1}}\ L{\isacharunderscore}{\kern0pt}flat{\isacharunderscore}{\kern0pt}Prf{\isadigit{2}}\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ mkeps{\isacharunderscore}{\kern0pt}nullable\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{3}}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}Hdbmkeps{\isacharunderscore}{\kern0pt}Hd{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{2}}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}{\isasymexists}x{\isasymin}set\ x{\isadigit{5}}{\isadigit{2}}{\isachardot}{\kern0pt}\ bnullable\ x{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}list{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ b{\isadigit{2}}\ fuse{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ q{\isadigit{3}}a\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}erule\ disjE{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ qq{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ b{\isadigit{2}}\ fuse{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ q{\isadigit{3}}a\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ qq{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse\ image{\isacharunderscore}{\kern0pt}eqI\ set{\isacharunderscore}{\kern0pt}map{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ b{\isadigit{2}}\ fuse{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ q{\isadigit{3}}a\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ qq{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse\ image{\isacharunderscore}{\kern0pt}eqI\ set{\isacharunderscore}{\kern0pt}map{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ b{\isadigit{2}}\ fuse{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ q{\isadigit{3}}a\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ qq{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse\ imageE\ set{\isacharunderscore}{\kern0pt}map{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{2}}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}list{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ qq{\isadigit{4}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ list{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}Hdbmkeps{\isacharunderscore}{\kern0pt}Hd{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}ASEQ\ x{\isadigit{4}}{\isadigit{1}}\ x{\isadigit{4}}{\isadigit{2}}\ x{\isadigit{4}}{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ list{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}Hdbmkeps{\isacharunderscore}{\kern0pt}Hd{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ qq{\isadigit{4}}\ r{\isadigit{1}}\ r{\isadigit{2}}\ \isacommand{by}\isamarkupfalse% -\ auto% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isanewline -\ \ \isanewline -\isacommand{lemma}\isamarkupfalse% -\ bder{\isacharunderscore}{\kern0pt}fuse{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}bder\ c\ {\isacharparenleft}{\kern0pt}fuse\ bs\ a{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ fuse\ bs\ \ {\isacharparenleft}{\kern0pt}bder\ c\ a{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ a\ arbitrary{\isacharcolon}{\kern0pt}\ bs\ c{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{fun}\isamarkupfalse% -\ flts{\isadigit{2}}\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}char\ {\isasymRightarrow}\ arexp\ list\ {\isasymRightarrow}\ arexp\ list{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{where}\ \isanewline -\ \ {\isachardoublequoteopen}flts{\isadigit{2}}\ {\isacharunderscore}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}flts{\isadigit{2}}\ c\ {\isacharparenleft}{\kern0pt}AZERO\ {\isacharhash}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ flts{\isadigit{2}}\ c\ rs{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}flts{\isadigit{2}}\ c\ {\isacharparenleft}{\kern0pt}AONE\ {\isacharunderscore}{\kern0pt}\ {\isacharhash}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ flts{\isadigit{2}}\ c\ rs{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}flts{\isadigit{2}}\ c\ {\isacharparenleft}{\kern0pt}ACHAR\ bs\ d\ {\isacharhash}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}if\ c\ {\isacharequal}{\kern0pt}\ d\ then\ {\isacharparenleft}{\kern0pt}ACHAR\ bs\ d\ {\isacharhash}{\kern0pt}\ flts{\isadigit{2}}\ c\ rs{\isacharparenright}{\kern0pt}\ else\ flts{\isadigit{2}}\ c\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}flts{\isadigit{2}}\ c\ {\isacharparenleft}{\kern0pt}{\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isacharhash}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}map\ {\isacharparenleft}{\kern0pt}fuse\ bs{\isacharparenright}{\kern0pt}\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isacharat}{\kern0pt}\ flts{\isadigit{2}}\ c\ rs{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}flts{\isadigit{2}}\ c\ {\isacharparenleft}{\kern0pt}ASEQ\ bs\ r{\isadigit{1}}\ r{\isadigit{2}}\ {\isacharhash}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}if\ {\isacharparenleft}{\kern0pt}bnullable{\isacharparenleft}{\kern0pt}r{\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isasymand}\ r{\isadigit{2}}\ {\isacharequal}{\kern0pt}\ AZERO{\isacharparenright}{\kern0pt}\ then\ \isanewline -\ \ \ \ flts{\isadigit{2}}\ c\ rs\isanewline -\ \ \ \ else\ ASEQ\ bs\ r{\isadigit{1}}\ r{\isadigit{2}}\ {\isacharhash}{\kern0pt}\ flts{\isadigit{2}}\ c\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}flts{\isadigit{2}}\ c\ {\isacharparenleft}{\kern0pt}r{\isadigit{1}}\ {\isacharhash}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ r{\isadigit{1}}\ {\isacharhash}{\kern0pt}\ flts{\isadigit{2}}\ c\ rs{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\ \isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ WQ{\isadigit{1}}{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}s\ {\isasymin}\ L\ {\isacharparenleft}{\kern0pt}der\ c\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}s\ {\isasymin}\ der\ c\ r\ {\isasymrightarrow}\ mkeps\ {\isacharparenleft}{\kern0pt}ders\ s\ {\isacharparenleft}{\kern0pt}der\ c\ r{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{oops}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ bder{\isacharunderscore}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}AALTs{\isacharcolon}{\kern0pt}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}bder\ c\ {\isacharparenleft}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bsimp{\isacharunderscore}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}map\ {\isacharparenleft}{\kern0pt}bder\ c{\isacharparenright}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ bs\ rs\ rule{\isacharcolon}{\kern0pt}\ bsimp{\isacharunderscore}{\kern0pt}AALTs{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\ \ \isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bder{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\isanewline -\ \ \isakeyword{assumes}\ {\isachardoublequoteopen}asize\ {\isacharparenleft}{\kern0pt}bsimp\ a{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ asize\ a{\isachardoublequoteclose}\ \ {\isachardoublequoteopen}a\ {\isacharequal}{\kern0pt}\ AALTs\ bs\ {\isacharbrackleft}{\kern0pt}AALTs\ bs{\isadigit{2}}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isacharcomma}{\kern0pt}\ AZERO{\isacharcomma}{\kern0pt}\ AONE\ bs{\isadigit{3}}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}bsimp\ a\ {\isacharequal}{\kern0pt}\ a{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ assms\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{oops}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isacommand{inductive}\isamarkupfalse% -\ rrewrite{\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ arexp\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\ {\isacharparenleft}{\kern0pt}{\isachardoublequoteopen}{\isacharunderscore}{\kern0pt}\ {\isasymleadsto}\ {\isacharunderscore}{\kern0pt}{\isachardoublequoteclose}\ {\isacharbrackleft}{\kern0pt}{\isadigit{9}}{\isadigit{9}}{\isacharcomma}{\kern0pt}\ {\isadigit{9}}{\isadigit{9}}{\isacharbrackright}{\kern0pt}\ {\isadigit{9}}{\isadigit{9}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}ASEQ\ bs\ AZERO\ r{\isadigit{2}}\ {\isasymleadsto}\ AZERO{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}ASEQ\ bs\ r{\isadigit{1}}\ AZERO\ {\isasymleadsto}\ AZERO{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}ASEQ\ bs\ {\isacharparenleft}{\kern0pt}AONE\ bs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ r\ {\isasymleadsto}\ fuse\ {\isacharparenleft}{\kern0pt}bs{\isacharat}{\kern0pt}bs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}r{\isadigit{1}}\ {\isasymleadsto}\ r{\isadigit{2}}\ {\isasymLongrightarrow}\ ASEQ\ bs\ r{\isadigit{1}}\ r{\isadigit{3}}\ {\isasymleadsto}\ ASEQ\ bs\ r{\isadigit{2}}\ r{\isadigit{3}}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}r{\isadigit{3}}\ {\isasymleadsto}\ r{\isadigit{4}}\ {\isasymLongrightarrow}\ ASEQ\ bs\ r{\isadigit{1}}\ r{\isadigit{3}}\ {\isasymleadsto}\ ASEQ\ bs\ r{\isadigit{1}}\ r{\isadigit{4}}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}r\ {\isasymleadsto}\ r{\isacharprime}{\kern0pt}\ {\isasymLongrightarrow}\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}\ {\isacharat}{\kern0pt}\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isasymleadsto}\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}r{\isacharprime}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharat}{\kern0pt}\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa{\isacharat}{\kern0pt}AZERO\ {\isacharhash}{\kern0pt}\ rsb{\isacharparenright}{\kern0pt}\ {\isasymleadsto}\ AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa{\isacharat}{\kern0pt}rsb{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa{\isacharat}{\kern0pt}{\isacharparenleft}{\kern0pt}AALTs\ bs{\isadigit{1}}\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharhash}{\kern0pt}\ rsb{\isacharparenright}{\kern0pt}\ {\isasymleadsto}\ AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa{\isacharat}{\kern0pt}{\isacharparenleft}{\kern0pt}map\ {\isacharparenleft}{\kern0pt}fuse\ bs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharat}{\kern0pt}rsb{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}AALTs\ bs\ {\isacharparenleft}{\kern0pt}map\ {\isacharparenleft}{\kern0pt}fuse\ bs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}\ {\isasymleadsto}\ AALTs\ {\isacharparenleft}{\kern0pt}bs{\isacharat}{\kern0pt}bs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ rs{\isachardoublequoteclose}\isanewline -\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}AALTs\ {\isacharparenleft}{\kern0pt}bs{\isacharat}{\kern0pt}bs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ rs\ {\isasymleadsto}\ AALTs\ bs\ {\isacharparenleft}{\kern0pt}map\ {\isacharparenleft}{\kern0pt}fuse\ bs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}AALTs\ bs\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isasymleadsto}\ AZERO{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}AALTs\ bs\ {\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}\ {\isasymleadsto}\ fuse\ bs\ r{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}erase\ a{\isadigit{1}}\ {\isacharequal}{\kern0pt}\ erase\ a{\isadigit{2}}\ {\isasymLongrightarrow}\ AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa{\isacharat}{\kern0pt}{\isacharbrackleft}{\kern0pt}a{\isadigit{1}}{\isacharbrackright}{\kern0pt}{\isacharat}{\kern0pt}rsb{\isacharat}{\kern0pt}{\isacharbrackleft}{\kern0pt}a{\isadigit{2}}{\isacharbrackright}{\kern0pt}{\isacharat}{\kern0pt}rsc{\isacharparenright}{\kern0pt}\ {\isasymleadsto}\ AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa{\isacharat}{\kern0pt}{\isacharbrackleft}{\kern0pt}a{\isadigit{1}}{\isacharbrackright}{\kern0pt}{\isacharat}{\kern0pt}rsb{\isacharat}{\kern0pt}rsc{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isacommand{inductive}\isamarkupfalse% -\ rrewrites{\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ arexp\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\ {\isacharparenleft}{\kern0pt}{\isachardoublequoteopen}{\isacharunderscore}{\kern0pt}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharunderscore}{\kern0pt}{\isachardoublequoteclose}\ {\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isadigit{0}}{\isadigit{0}}{\isacharcomma}{\kern0pt}\ {\isadigit{1}}{\isadigit{0}}{\isadigit{0}}{\isacharbrackright}{\kern0pt}\ {\isadigit{1}}{\isadigit{0}}{\isadigit{0}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isakeyword{where}\ \isanewline -rs{\isadigit{1}}{\isacharbrackleft}{\kern0pt}intro{\isacharcomma}{\kern0pt}\ simp{\isacharbrackright}{\kern0pt}{\isacharcolon}{\kern0pt}{\isachardoublequoteopen}r\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ rs{\isadigit{2}}{\isacharbrackleft}{\kern0pt}intro{\isacharbrackright}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymlbrakk}r{\isadigit{1}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isadigit{2}}{\isacharsemicolon}{\kern0pt}\ r{\isadigit{2}}\ {\isasymleadsto}\ r{\isadigit{3}}{\isasymrbrakk}\ {\isasymLongrightarrow}\ r{\isadigit{1}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isadigit{3}}{\isachardoublequoteclose}\isanewline -\isanewline -\isacommand{inductive}\isamarkupfalse% -\ srewrites{\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ list\ {\isasymRightarrow}\ arexp\ list\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\ {\isacharparenleft}{\kern0pt}{\isachardoublequoteopen}\ {\isacharunderscore}{\kern0pt}\ s{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharunderscore}{\kern0pt}{\isachardoublequoteclose}\ {\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isadigit{0}}{\isadigit{0}}{\isacharcomma}{\kern0pt}\ {\isadigit{1}}{\isadigit{0}}{\isadigit{0}}{\isacharbrackright}{\kern0pt}\ {\isadigit{1}}{\isadigit{0}}{\isadigit{0}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isakeyword{where}\isanewline -ss{\isadigit{1}}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ s{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}ss{\isadigit{2}}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymlbrakk}r\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isacharprime}{\kern0pt}{\isacharsemicolon}{\kern0pt}\ rs\ s{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ rs{\isacharprime}{\kern0pt}{\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isacharparenleft}{\kern0pt}r{\isacharhash}{\kern0pt}rs{\isacharparenright}{\kern0pt}\ s{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharparenleft}{\kern0pt}r{\isacharprime}{\kern0pt}{\isacharhash}{\kern0pt}rs{\isacharprime}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ {\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}r{\isadigit{1}}\ {\isasymleadsto}\ r{\isadigit{2}}\ {\isasymLongrightarrow}\ r{\isadigit{1}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isadigit{2}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ rrewrites{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}\ \isacommand{by}\isamarkupfalse% -\ blast% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\ \isanewline -\isacommand{lemma}\isamarkupfalse% -\ real{\isacharunderscore}{\kern0pt}trans{\isacharcolon}{\kern0pt}\ \isanewline -\ \ \isakeyword{assumes}\ a{\isadigit{1}}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}r{\isadigit{1}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isadigit{2}}{\isachardoublequoteclose}\ \ \isakeyword{and}\ a{\isadigit{2}}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}r{\isadigit{2}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isadigit{3}}{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}r{\isadigit{1}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isadigit{3}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ a{\isadigit{2}}\ a{\isadigit{1}}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ r{\isadigit{2}}\ r{\isadigit{3}}\ arbitrary{\isacharcolon}{\kern0pt}\ r{\isadigit{1}}\ rule{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\ \isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ \ many{\isacharunderscore}{\kern0pt}steps{\isacharunderscore}{\kern0pt}later{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymlbrakk}r{\isadigit{1}}\ {\isasymleadsto}\ r{\isadigit{2}}{\isacharsemicolon}{\kern0pt}\ r{\isadigit{2}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isadigit{3}}\ {\isasymrbrakk}\ {\isasymLongrightarrow}\ r{\isadigit{1}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isadigit{3}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}meson\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ real{\isacharunderscore}{\kern0pt}trans{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ contextrewrites{\isadigit{1}}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}r\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isacharprime}{\kern0pt}\ {\isasymLongrightarrow}\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}r{\isacharhash}{\kern0pt}rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}r{\isacharprime}{\kern0pt}{\isacharhash}{\kern0pt}rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ r\ r{\isacharprime}{\kern0pt}\ rule{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}Cons\ append{\isacharunderscore}{\kern0pt}Nil\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{6}}{\isacharparenright}{\kern0pt}\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ contextrewrites{\isadigit{2}}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}r\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isacharprime}{\kern0pt}\ {\isasymLongrightarrow}\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}{\isacharat}{\kern0pt}{\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}{\isacharat}{\kern0pt}rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}{\isacharat}{\kern0pt}{\isacharbrackleft}{\kern0pt}r{\isacharprime}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isacharat}{\kern0pt}rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ r\ r{\isacharprime}{\kern0pt}\ rule{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{6}}{\isacharparenright}{\kern0pt}\ \isacommand{by}\isamarkupfalse% -\ blast% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ srewrites{\isacharunderscore}{\kern0pt}alt{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}rs{\isadigit{1}}\ s{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ rs{\isadigit{2}}\ {\isasymLongrightarrow}\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs{\isacharat}{\kern0pt}rs{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs{\isacharat}{\kern0pt}rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\isanewline -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ rs{\isadigit{1}}\ rs{\isadigit{2}}\ arbitrary{\isacharcolon}{\kern0pt}\ bs\ rs\ rule{\isacharcolon}{\kern0pt}\ srewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x\ {\isacharequal}{\kern0pt}\ {\isachardoublequoteopen}bs{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x\ {\isacharequal}{\kern0pt}\ {\isachardoublequoteopen}rsa{\isacharat}{\kern0pt}{\isacharbrackleft}{\kern0pt}r{\isacharprime}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ real{\isacharunderscore}{\kern0pt}trans{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{2}}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}assumption{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}drule\ contextrewrites{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ auto\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{corollary}\isamarkupfalse% -\ srewrites{\isacharunderscore}{\kern0pt}alt{\isadigit{1}}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}rs{\isadigit{1}}\ s{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ rs{\isadigit{2}}\ {\isasymLongrightarrow}\ AALTs\ bs\ rs{\isadigit{1}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ AALTs\ bs\ rs{\isadigit{2}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isachardot}{\kern0pt}left{\isacharunderscore}{\kern0pt}neutral\ srewrites{\isacharunderscore}{\kern0pt}alt{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ star{\isacharunderscore}{\kern0pt}seq{\isacharcolon}{\kern0pt}\ \ {\isachardoublequoteopen}r{\isadigit{1}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isadigit{2}}\ {\isasymLongrightarrow}\ ASEQ\ bs\ r{\isadigit{1}}\ r{\isadigit{3}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ ASEQ\ bs\ r{\isadigit{2}}\ r{\isadigit{3}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ r{\isadigit{1}}\ r{\isadigit{2}}\ arbitrary{\isacharcolon}{\kern0pt}\ r{\isadigit{3}}\ rule{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}erule\ rrewrites{\isachardot}{\kern0pt}cases{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}assumption{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ assumption% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ star{\isacharunderscore}{\kern0pt}seq{\isadigit{2}}{\isacharcolon}{\kern0pt}\ \ {\isachardoublequoteopen}r{\isadigit{3}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isadigit{4}}\ {\isasymLongrightarrow}\ ASEQ\ bs\ r{\isadigit{1}}\ r{\isadigit{3}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ ASEQ\ bs\ r{\isadigit{1}}\ r{\isadigit{4}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ r{\isadigit{3}}\ r{\isadigit{4}}\ arbitrary{\isacharcolon}{\kern0pt}\ r{\isadigit{1}}\ rule{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ auto\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{5}}{\isacharparenright}{\kern0pt}\ \isacommand{by}\isamarkupfalse% -\ blast% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ continuous{\isacharunderscore}{\kern0pt}rewrite{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymlbrakk}r{\isadigit{1}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ AZERO{\isasymrbrakk}\ {\isasymLongrightarrow}\ ASEQ\ bs{\isadigit{1}}\ r{\isadigit{1}}\ r{\isadigit{2}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ AZERO{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ ra{\isasymequiv}{\isachardoublequoteopen}r{\isadigit{1}}{\isachardoublequoteclose}\ rb{\isasymequiv}{\isachardoublequoteopen}AZERO{\isachardoublequoteclose}\ arbitrary{\isacharcolon}{\kern0pt}\ bs{\isadigit{1}}\ r{\isadigit{1}}\ r{\isadigit{2}}\ rule{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}meson\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}\ star{\isacharunderscore}{\kern0pt}seq{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\ \ \isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ bsimp{\isacharunderscore}{\kern0pt}aalts{\isacharunderscore}{\kern0pt}simpcases{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}AONE\ bs\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bsimp\ {\isacharparenleft}{\kern0pt}AONE\ bs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\ \ {\isachardoublequoteopen}AZERO\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ bsimp\ AZERO{\isachardoublequoteclose}\ {\isachardoublequoteopen}ACHAR\ bs\ c\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bsimp\ {\isacharparenleft}{\kern0pt}ACHAR\ bs\ c{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ trivialbsimpsrewrites{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymlbrakk}{\isasymAnd}x{\isachardot}{\kern0pt}\ x\ {\isasymin}\ set\ rs\ {\isasymLongrightarrow}\ x\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ f\ x\ {\isasymrbrakk}\ {\isasymLongrightarrow}\ rs\ s{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharparenleft}{\kern0pt}map\ f\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\isanewline -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ rs{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ ss{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ insert{\isacharunderscore}{\kern0pt}iff\ list{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{5}}{\isacharparenright}{\kern0pt}\ list{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{9}}{\isacharparenright}{\kern0pt}\ srewrites{\isachardot}{\kern0pt}simps{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ bsimp{\isacharunderscore}{\kern0pt}AALTsrewrites{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}AALTs\ bs{\isadigit{1}}\ rs\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ bsimp{\isacharunderscore}{\kern0pt}AALTs\ bs{\isadigit{1}}\ rs{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ rs{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ \ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}rs\ {\isacharequal}{\kern0pt}\ Nil{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{2}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}length\ {\isacharparenleft}{\kern0pt}a{\isacharhash}{\kern0pt}rs{\isacharparenright}{\kern0pt}\ {\isachargreater}{\kern0pt}\ {\isadigit{1}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bsimp{\isacharunderscore}{\kern0pt}AALTs{\isacharunderscore}{\kern0pt}qq{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\ \isanewline -% -\endisadelimproof -\isanewline -\isacommand{inductive}\isamarkupfalse% -\ frewrites{\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ list\ {\isasymRightarrow}\ arexp\ list\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\ {\isacharparenleft}{\kern0pt}{\isachardoublequoteopen}\ {\isacharunderscore}{\kern0pt}\ f{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharunderscore}{\kern0pt}{\isachardoublequoteclose}\ {\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isadigit{0}}{\isadigit{0}}{\isacharcomma}{\kern0pt}\ {\isadigit{1}}{\isadigit{0}}{\isadigit{0}}{\isacharbrackright}{\kern0pt}\ {\isadigit{1}}{\isadigit{0}}{\isadigit{0}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isakeyword{where}\isanewline -fs{\isadigit{1}}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ f{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}fs{\isadigit{2}}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymlbrakk}rs\ f{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ rs{\isacharprime}{\kern0pt}{\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isacharparenleft}{\kern0pt}AZERO{\isacharhash}{\kern0pt}rs{\isacharparenright}{\kern0pt}\ f{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ rs{\isacharprime}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}fs{\isadigit{3}}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymlbrakk}rs\ f{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ rs{\isacharprime}{\kern0pt}{\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isacharparenleft}{\kern0pt}{\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isacharhash}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}\ f{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharparenleft}{\kern0pt}{\isacharparenleft}{\kern0pt}map\ {\isacharparenleft}{\kern0pt}fuse\ bs{\isacharparenright}{\kern0pt}\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isacharat}{\kern0pt}\ rs{\isacharprime}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}fs{\isadigit{4}}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymlbrakk}rs\ f{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ rs{\isacharprime}{\kern0pt}{\isacharsemicolon}{\kern0pt}nonalt\ r{\isacharsemicolon}{\kern0pt}\ nonazero\ r{\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isacharparenleft}{\kern0pt}r{\isacharhash}{\kern0pt}rs{\isacharparenright}{\kern0pt}\ f{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharparenleft}{\kern0pt}r{\isacharhash}{\kern0pt}rs{\isacharprime}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ flts{\isacharunderscore}{\kern0pt}prepend{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymlbrakk}nonalt\ a{\isacharsemicolon}{\kern0pt}\ nonazero\ a{\isasymrbrakk}\ {\isasymLongrightarrow}\ flts\ {\isacharparenleft}{\kern0pt}a{\isacharhash}{\kern0pt}rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ a\ {\isacharhash}{\kern0pt}\ {\isacharparenleft}{\kern0pt}flts\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}Cons\ append{\isacharunderscore}{\kern0pt}Nil\ flts{\isacharunderscore}{\kern0pt}single{\isadigit{1}}\ k{\isadigit{0}}{\isadigit{0}}{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ fltsfrewrites{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}rs\ f{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharparenleft}{\kern0pt}flts\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ rs{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ fs{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}a\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \ \isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ fs{\isadigit{2}}\ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}{\isasymexists}bs\ rs{\isachardot}{\kern0pt}\ a\ {\isacharequal}{\kern0pt}\ AALTs\ bs\ rs{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}erule\ exE{\isacharparenright}{\kern0pt}{\isacharplus}{\kern0pt}\isanewline -\ \ \ \isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ fs{\isadigit{3}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ flts{\isacharunderscore}{\kern0pt}prepend{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ nonalt{\isachardot}{\kern0pt}elims{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{2}}\isanewline -\ \ \isacommand{thm}\isamarkupfalse% -\ nonalt{\isachardot}{\kern0pt}elims\isanewline -\ \ \ \isanewline -\ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\ \ \ \isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ bbbbs{\isadigit{1}}\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ nonalt{\isachardot}{\kern0pt}simps{\isacharparenright}{\kern0pt}{\isacharplus}{\kern0pt}\isanewline -\ \ \ \isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}meson\ nonazero{\isachardot}{\kern0pt}elims{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}meson\ fs{\isadigit{4}}\ nonalt{\isachardot}{\kern0pt}elims{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ nonazero{\isachardot}{\kern0pt}elims{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ rrewrite{\isadigit{0}}away{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}AALTs\ bs\ {\isacharparenleft}{\kern0pt}\ AZERO\ {\isacharhash}{\kern0pt}\ rsb{\isacharparenright}{\kern0pt}\ {\isasymleadsto}\ AALTs\ bs\ rsb{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}Nil\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{7}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ frewritesaalts{\isacharcolon}{\kern0pt}{\isachardoublequoteopen}rs\ f{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ rs{\isacharprime}{\kern0pt}\ {\isasymLongrightarrow}\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}{\isacharat}{\kern0pt}rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}{\isacharat}{\kern0pt}rs{\isacharprime}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ rs\ rs{\isacharprime}{\kern0pt}\ arbitrary{\isacharcolon}{\kern0pt}\ bs\ rs{\isadigit{1}}\ rule{\isacharcolon}{\kern0pt}frewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x\ {\isacharequal}{\kern0pt}\ {\isachardoublequoteopen}bs{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x\ {\isacharequal}{\kern0pt}\ {\isachardoublequoteopen}rs{\isadigit{1}}\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}AZERO{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ real{\isacharunderscore}{\kern0pt}trans{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{7}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse% -\ presburger\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x\ {\isacharequal}{\kern0pt}\ {\isachardoublequoteopen}bsa{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x\ {\isacharequal}{\kern0pt}\ {\isachardoublequoteopen}rs{\isadigit{1}}a\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{1}}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ real{\isacharunderscore}{\kern0pt}trans{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{8}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse% -\ presburger\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x\ {\isacharequal}{\kern0pt}\ {\isachardoublequoteopen}bs{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x\ {\isacharequal}{\kern0pt}\ {\isachardoublequoteopen}rs{\isadigit{1}}{\isacharat}{\kern0pt}{\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ real{\isacharunderscore}{\kern0pt}trans{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ auto\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ fltsrewrites{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}\ \ AALTs\ bs{\isadigit{1}}\ rs\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ AALTs\ bs{\isadigit{1}}\ {\isacharparenleft}{\kern0pt}flts\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ rs{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}a\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}Nil\ flts{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}\ many{\isacharunderscore}{\kern0pt}steps{\isacharunderscore}{\kern0pt}later\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{7}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\isanewline -\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}{\isasymexists}bs{\isadigit{2}}\ rs{\isadigit{2}}{\isachardot}{\kern0pt}\ a\ {\isacharequal}{\kern0pt}\ AALTs\ bs{\isadigit{2}}\ rs{\isadigit{2}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}erule\ exE{\isacharparenright}{\kern0pt}{\isacharplus}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ flts{\isachardot}{\kern0pt}simps{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{2}}\isanewline -\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ flts{\isacharunderscore}{\kern0pt}prepend{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}meson\ nonalt{\isachardot}{\kern0pt}elims{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}meson\ nonazero{\isachardot}{\kern0pt}elims{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}{\isacharparenleft}{\kern0pt}a{\isacharhash}{\kern0pt}rs{\isacharparenright}{\kern0pt}\ f{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharparenleft}{\kern0pt}a{\isacharhash}{\kern0pt}flts\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}Nil\ frewritesaalts{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}meson\ fltsfrewrites\ fs{\isadigit{4}}\ nonalt{\isachardot}{\kern0pt}elims{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ nonazero{\isachardot}{\kern0pt}elims{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}Cons\ append{\isacharunderscore}{\kern0pt}Nil\ fltsfrewrites\ frewritesaalts\ k{\isadigit{0}}{\isadigit{0}}\ k{\isadigit{0}}a{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ alts{\isacharunderscore}{\kern0pt}simpalts{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymAnd}bs{\isadigit{1}}\ rs{\isachardot}{\kern0pt}\ {\isacharparenleft}{\kern0pt}{\isasymAnd}x{\isachardot}{\kern0pt}\ x\ {\isasymin}\ set\ rs\ {\isasymLongrightarrow}\ x\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ bsimp\ x{\isacharparenright}{\kern0pt}\ {\isasymLongrightarrow}\ \isanewline -AALTs\ bs{\isadigit{1}}\ rs\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ AALTs\ bs{\isadigit{1}}\ {\isacharparenleft}{\kern0pt}map\ bsimp\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}\ rs\ s{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ \ {\isacharparenleft}{\kern0pt}map\ bsimp\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{2}}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ trivialbsimpsrewrites\ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ srewrites{\isacharunderscore}{\kern0pt}alt{\isadigit{1}}\ \isacommand{by}\isamarkupfalse% -\ auto% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ threelistsappend{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}rsa{\isacharat}{\kern0pt}a{\isacharhash}{\kern0pt}rsb\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}rsa{\isacharat}{\kern0pt}{\isacharbrackleft}{\kern0pt}a{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharat}{\kern0pt}rsb{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -\ auto\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{fun}\isamarkupfalse% -\ distinctByAcc\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isacharprime}{\kern0pt}a\ list\ {\isasymRightarrow}\ {\isacharparenleft}{\kern0pt}{\isacharprime}{\kern0pt}a\ {\isasymRightarrow}\ {\isacharprime}{\kern0pt}b{\isacharparenright}{\kern0pt}\ {\isasymRightarrow}\ {\isacharprime}{\kern0pt}b\ set\ {\isasymRightarrow}\ {\isacharprime}{\kern0pt}b\ set{\isachardoublequoteclose}\isanewline -\ \ \isakeyword{where}\isanewline -\ \ {\isachardoublequoteopen}distinctByAcc\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ f\ acc\ {\isacharequal}{\kern0pt}\ acc{\isachardoublequoteclose}\isanewline -{\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}distinctByAcc\ {\isacharparenleft}{\kern0pt}x{\isacharhash}{\kern0pt}xs{\isacharparenright}{\kern0pt}\ f\ acc\ {\isacharequal}{\kern0pt}\ \isanewline -\ \ \ \ \ {\isacharparenleft}{\kern0pt}if\ {\isacharparenleft}{\kern0pt}f\ x{\isacharparenright}{\kern0pt}\ {\isasymin}\ acc\ then\ distinctByAcc\ xs\ f\ acc\ \isanewline -\ \ \ \ \ \ else\ \ {\isacharparenleft}{\kern0pt}distinctByAcc\ xs\ f\ {\isacharparenleft}{\kern0pt}{\isacharbraceleft}{\kern0pt}f\ x{\isacharbraceright}{\kern0pt}\ {\isasymunion}\ acc{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ dB{\isacharunderscore}{\kern0pt}single{\isacharunderscore}{\kern0pt}step{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}distinctBy\ {\isacharparenleft}{\kern0pt}a{\isacharhash}{\kern0pt}rs{\isacharparenright}{\kern0pt}\ f\ {\isacharbraceleft}{\kern0pt}{\isacharbraceright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ a\ {\isacharhash}{\kern0pt}\ distinctBy\ rs\ f\ {\isacharbraceleft}{\kern0pt}f\ a{\isacharbraceright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ somewhereInside{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}r\ {\isasymin}\ set\ rs\ {\isasymLongrightarrow}\ {\isasymexists}rs{\isadigit{1}}\ rs{\isadigit{2}}{\isachardot}{\kern0pt}\ rs\ {\isacharequal}{\kern0pt}\ rs{\isadigit{1}}{\isacharat}{\kern0pt}{\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}{\isacharat}{\kern0pt}rs{\isadigit{2}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ split{\isacharunderscore}{\kern0pt}list\ \isacommand{by}\isamarkupfalse% -\ fastforce% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ somewhereMapInside{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}f\ r\ {\isasymin}\ f\ {\isacharbackquote}{\kern0pt}\ set\ rs\ {\isasymLongrightarrow}\ {\isasymexists}rs{\isadigit{1}}\ rs{\isadigit{2}}\ a{\isachardot}{\kern0pt}\ rs\ {\isacharequal}{\kern0pt}\ rs{\isadigit{1}}{\isacharat}{\kern0pt}{\isacharbrackleft}{\kern0pt}a{\isacharbrackright}{\kern0pt}{\isacharat}{\kern0pt}rs{\isadigit{2}}\ {\isasymand}\ f\ a\ {\isacharequal}{\kern0pt}\ f\ r{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -\ auto\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ split{\isacharunderscore}{\kern0pt}list{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ alts{\isacharunderscore}{\kern0pt}dBrewrites{\isacharunderscore}{\kern0pt}withFront{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}\ AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa\ {\isacharat}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa\ {\isacharat}{\kern0pt}\ distinctBy\ rs\ erase\ {\isacharparenleft}{\kern0pt}erase\ {\isacharbackquote}{\kern0pt}\ set\ rsa{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ rs\ arbitrary{\isacharcolon}{\kern0pt}\ rsa{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x\ {\isacharequal}{\kern0pt}\ {\isachardoublequoteopen}rsa{\isacharat}{\kern0pt}{\isacharbrackleft}{\kern0pt}a{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ threelistsappend{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ real{\isacharunderscore}{\kern0pt}trans{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}a\ {\isasymin}\ set\ rsa{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}drule\ somewhereInside{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}erule\ exE{\isacharparenright}{\kern0pt}{\isacharplus}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}\ AALTs\ bs\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}\ {\isacharat}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ a\ {\isacharhash}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ rs{\isadigit{2}}\ {\isacharat}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ a\ {\isacharhash}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ distinctBy\ rs\ erase\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}{\kern0pt}insert\ {\isacharparenleft}{\kern0pt}erase\ a{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}{\kern0pt}erase\ {\isacharbackquote}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}{\kern0pt}set\ rs{\isadigit{1}}\ {\isasymunion}\ set\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isasymleadsto}\ AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}{\isacharat}{\kern0pt}\ a\ {\isacharhash}{\kern0pt}\ rs{\isadigit{2}}\ {\isacharat}{\kern0pt}\ \ distinctBy\ rs\ erase\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}{\kern0pt}insert\ {\isacharparenleft}{\kern0pt}erase\ a{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}{\kern0pt}erase\ {\isacharbackquote}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}{\kern0pt}set\ rs{\isadigit{1}}\ {\isasymunion}\ set\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{2}}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse% -\ force\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ \isacommand{apply}\isamarkupfalse% -\ force\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}erase\ {\isacharbackquote}{\kern0pt}\ set\ {\isacharparenleft}{\kern0pt}rsa\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}a{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ insert\ {\isacharparenleft}{\kern0pt}erase\ a{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}erase\ {\isacharbackquote}{\kern0pt}\ set\ rsa{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{2}}\isanewline -\ \ \ \ \isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}erase\ a\ {\isasymin}\ erase\ {\isacharbackquote}{\kern0pt}set\ rsa{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa\ {\isacharat}{\kern0pt}\ a\ {\isacharhash}{\kern0pt}\ distinctBy\ rs\ erase\ {\isacharparenleft}{\kern0pt}insert\ {\isacharparenleft}{\kern0pt}erase\ a{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}erase\ {\isacharbackquote}{\kern0pt}\ set\ rsa{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isasymleadsto}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa\ {\isacharat}{\kern0pt}\ distinctBy\ rs\ erase\ {\isacharparenleft}{\kern0pt}insert\ {\isacharparenleft}{\kern0pt}erase\ a{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}erase\ {\isacharbackquote}{\kern0pt}\ set\ rsa{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ force\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}smt\ {\isacharparenleft}{\kern0pt}verit{\isacharcomma}{\kern0pt}\ ccfv{\isacharunderscore}{\kern0pt}threshold{\isacharparenright}{\kern0pt}\ append{\isacharunderscore}{\kern0pt}Cons\ append{\isacharunderscore}{\kern0pt}assoc\ append{\isacharunderscore}{\kern0pt}self{\isacharunderscore}{\kern0pt}conv{\isadigit{2}}\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ same{\isacharunderscore}{\kern0pt}append{\isacharunderscore}{\kern0pt}eq\ somewhereMapInside{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ force% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\ \isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ alts{\isacharunderscore}{\kern0pt}dBrewrites{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}AALTs\ bs\ rs\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ AALTs\ bs\ {\isacharparenleft}{\kern0pt}distinctBy\ rs\ erase\ {\isacharbraceleft}{\kern0pt}{\isacharbraceright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ rs{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ alts{\isacharunderscore}{\kern0pt}dBrewrites{\isacharunderscore}{\kern0pt}withFront\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}Nil\ dB{\isacharunderscore}{\kern0pt}single{\isacharunderscore}{\kern0pt}step\ empty{\isacharunderscore}{\kern0pt}set\ image{\isacharunderscore}{\kern0pt}empty{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isanewline -\ \ \isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ bsimp{\isacharunderscore}{\kern0pt}rewrite{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}\ {\isacharparenleft}{\kern0pt}rrewrites\ r\ {\isacharparenleft}{\kern0pt}\ bsimp\ r{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ r\ rule{\isacharcolon}{\kern0pt}\ bsimp{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bsimp\ r{\isadigit{1}}\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ continuous{\isacharunderscore}{\kern0pt}rewrite\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}{\isasymexists}bs{\isachardot}{\kern0pt}\ bsimp\ r{\isadigit{1}}\ {\isacharequal}{\kern0pt}\ AONE\ bs{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}erule\ exE{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}meson\ real{\isacharunderscore}{\kern0pt}trans\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}\ star{\isacharunderscore}{\kern0pt}seq\ star{\isacharunderscore}{\kern0pt}seq{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}smt\ {\isacharparenleft}{\kern0pt}verit{\isacharcomma}{\kern0pt}\ best{\isacharparenright}{\kern0pt}\ bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isadigit{0}}\ bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isadigit{1}}\ real{\isacharunderscore}{\kern0pt}trans\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}\ rs{\isadigit{2}}\ star{\isacharunderscore}{\kern0pt}seq\ star{\isacharunderscore}{\kern0pt}seq{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \isacommand{defer}\isamarkupfalse% -\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ bsimp{\isacharunderscore}{\kern0pt}aalts{\isacharunderscore}{\kern0pt}simpcases{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ auto\isanewline -\isanewline -\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}AALTs\ bs{\isadigit{1}}\ rs\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ AALTs\ bs{\isadigit{1}}\ {\isacharparenleft}{\kern0pt}map\ bsimp\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}AALTs\ bs{\isadigit{1}}\ {\isacharparenleft}{\kern0pt}map\ bsimp\ rs{\isacharparenright}{\kern0pt}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ AALTs\ bs{\isadigit{1}}\ {\isacharparenleft}{\kern0pt}flts\ {\isacharparenleft}{\kern0pt}map\ bsimp\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}AALTs\ bs{\isadigit{1}}\ {\isacharparenleft}{\kern0pt}flts\ {\isacharparenleft}{\kern0pt}map\ bsimp\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ AALTs\ bs{\isadigit{1}}\ {\isacharparenleft}{\kern0pt}distinctBy\ {\isacharparenleft}{\kern0pt}flts\ {\isacharparenleft}{\kern0pt}map\ bsimp\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ erase\ {\isacharbraceleft}{\kern0pt}{\isacharbraceright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}AALTs\ bs{\isadigit{1}}\ {\isacharparenleft}{\kern0pt}distinctBy\ {\isacharparenleft}{\kern0pt}flts\ {\isacharparenleft}{\kern0pt}map\ bsimp\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ erase\ {\isacharbraceleft}{\kern0pt}{\isacharbraceright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ bsimp{\isacharunderscore}{\kern0pt}AALTs\ bs{\isadigit{1}}\ {\isacharparenleft}{\kern0pt}distinctBy\ {\isacharparenleft}{\kern0pt}flts\ {\isacharparenleft}{\kern0pt}map\ bsimp\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ erase\ {\isacharbraceleft}{\kern0pt}{\isacharbraceright}{\kern0pt}\ {\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isanewline -\ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}meson\ real{\isacharunderscore}{\kern0pt}trans{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}meson\ bsimp{\isacharunderscore}{\kern0pt}AALTsrewrites{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}meson\ alts{\isacharunderscore}{\kern0pt}dBrewrites{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ fltsrewrites\ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ alts{\isacharunderscore}{\kern0pt}simpalts\ \isacommand{by}\isamarkupfalse% -\ force% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ rewritenullable{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymlbrakk}r{\isadigit{1}}\ {\isasymleadsto}\ r{\isadigit{2}}{\isacharsemicolon}{\kern0pt}\ bnullable\ r{\isadigit{1}}\ {\isasymrbrakk}\ {\isasymLongrightarrow}\ bnullable\ r{\isadigit{2}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ r{\isadigit{1}}\ r{\isadigit{2}}\ rule{\isacharcolon}{\kern0pt}\ rrewrite{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}{\isacharplus}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{4}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ UnCI\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse\ imageI{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline -\ \ \isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{5}}{\isacharparenright}{\kern0pt}\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline -\ \ \isanewline -\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}smt\ {\isacharparenleft}{\kern0pt}z{\isadigit{3}}{\isacharparenright}{\kern0pt}\ Un{\isacharunderscore}{\kern0pt}iff\ bnullable{\isacharunderscore}{\kern0pt}correctness\ insert{\isacharunderscore}{\kern0pt}iff\ list{\isachardot}{\kern0pt}set{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}\ qq{\isadigit{3}}\ set{\isacharunderscore}{\kern0pt}append{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ rewrite{\isacharunderscore}{\kern0pt}non{\isacharunderscore}{\kern0pt}nullable{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymlbrakk}r{\isadigit{1}}\ {\isasymleadsto}\ r{\isadigit{2}}{\isacharsemicolon}{\kern0pt}\ {\isasymnot}bnullable\ r{\isadigit{1}}\ {\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isasymnot}bnullable\ r{\isadigit{2}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ r{\isadigit{1}}\ r{\isadigit{2}}\ rule{\isacharcolon}{\kern0pt}\ rrewrite{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ auto\ \isanewline -\ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}{\isacharplus}{\kern0pt}\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ rewritesnullable{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymlbrakk}\ r{\isadigit{1}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isadigit{2}}{\isacharsemicolon}{\kern0pt}\ bnullable\ r{\isadigit{1}}\ {\isasymrbrakk}\ {\isasymLongrightarrow}\ bnullable\ r{\isadigit{2}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ r{\isadigit{1}}\ r{\isadigit{2}}\ rule{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ rewritenullable{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ nonbnullable{\isacharunderscore}{\kern0pt}lists{\isacharunderscore}{\kern0pt}concat{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}\ {\isasymlbrakk}\ {\isasymnot}\ {\isacharparenleft}{\kern0pt}{\isasymexists}r{\isadigit{0}}{\isasymin}set\ rs{\isadigit{1}}{\isachardot}{\kern0pt}\ bnullable\ r{\isadigit{0}}{\isacharparenright}{\kern0pt}{\isacharsemicolon}{\kern0pt}\ {\isasymnot}\ bnullable\ r{\isacharsemicolon}{\kern0pt}\ {\isasymnot}\ {\isacharparenleft}{\kern0pt}{\isasymexists}r{\isadigit{0}}{\isasymin}set\ rs{\isadigit{2}}{\isachardot}{\kern0pt}\ bnullable\ r{\isadigit{0}}{\isacharparenright}{\kern0pt}{\isasymrbrakk}\ {\isasymLongrightarrow}\ \isanewline -{\isasymnot}{\isacharparenleft}{\kern0pt}{\isasymexists}r{\isadigit{0}}\ {\isasymin}\ {\isacharparenleft}{\kern0pt}set\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}{\isacharat}{\kern0pt}{\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}{\isacharat}{\kern0pt}rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardot}{\kern0pt}\ bnullable\ r{\isadigit{0}}\ {\isacharparenright}{\kern0pt}\ {\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\ \ \isacommand{done}\isamarkupfalse% -% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ nomember{\isacharunderscore}{\kern0pt}bnullable{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymlbrakk}\ {\isasymnot}\ {\isacharparenleft}{\kern0pt}{\isasymexists}r{\isadigit{0}}{\isasymin}set\ rs{\isadigit{1}}{\isachardot}{\kern0pt}\ bnullable\ r{\isadigit{0}}{\isacharparenright}{\kern0pt}{\isacharsemicolon}{\kern0pt}\ {\isasymnot}\ bnullable\ r{\isacharsemicolon}{\kern0pt}\ {\isasymnot}\ {\isacharparenleft}{\kern0pt}{\isasymexists}r{\isadigit{0}}{\isasymin}set\ rs{\isadigit{2}}{\isachardot}{\kern0pt}\ bnullable\ r{\isadigit{0}}{\isacharparenright}{\kern0pt}{\isasymrbrakk}\isanewline -\ {\isasymLongrightarrow}\ {\isasymnot}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}\ {\isacharat}{\kern0pt}\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ nonbnullable{\isacharunderscore}{\kern0pt}lists{\isacharunderscore}{\kern0pt}concat\ qq{\isadigit{3}}\ \isacommand{by}\isamarkupfalse% -\ presburger% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ bnullable{\isacharunderscore}{\kern0pt}segment{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}\ bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}{\isacharat}{\kern0pt}{\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}{\isacharat}{\kern0pt}rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isasymLongrightarrow}\ bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isasymor}\ bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isasymor}\ bnullable\ r{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}{\isasymexists}r{\isadigit{0}}{\isasymin}set\ rs{\isadigit{1}}{\isachardot}{\kern0pt}\ \ bnullable\ r{\isadigit{0}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ qq{\isadigit{3}}\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ r{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}{\isasymexists}r{\isadigit{0}}{\isasymin}set\ rs{\isadigit{2}}{\isachardot}{\kern0pt}\ \ bnullable\ r{\isadigit{0}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ bnullable{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse% -\ presburger\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}False{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ nomember{\isacharunderscore}{\kern0pt}bnullable\ \isacommand{by}\isamarkupfalse% -\ blast% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\ \ \isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ bnullablewhichbmkeps{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymlbrakk}bnullable\ \ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}{\isacharat}{\kern0pt}{\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}{\isacharat}{\kern0pt}rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharsemicolon}{\kern0pt}\ {\isasymnot}\ bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharsemicolon}{\kern0pt}\ bnullable\ r\ {\isasymrbrakk}\isanewline -\ {\isasymLongrightarrow}\ bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}{\isacharat}{\kern0pt}{\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}{\isacharat}{\kern0pt}rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bs\ {\isacharat}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bmkeps\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ qq{\isadigit{2}}\ bnullable{\isacharunderscore}{\kern0pt}Hdbmkeps{\isacharunderscore}{\kern0pt}Hd\ \isacommand{by}\isamarkupfalse% -\ force% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ rrewrite{\isacharunderscore}{\kern0pt}nbnullable{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymlbrakk}\ r{\isadigit{1}}\ {\isasymleadsto}\ r{\isadigit{2}}\ {\isacharsemicolon}{\kern0pt}\ {\isasymnot}\ bnullable\ r{\isadigit{1}}\ {\isasymrbrakk}\ {\isasymLongrightarrow}\ {\isasymnot}bnullable\ r{\isadigit{2}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ rule{\isacharcolon}{\kern0pt}\ rrewrite{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}meson\ rewrite{\isacharunderscore}{\kern0pt}non{\isacharunderscore}{\kern0pt}nullable\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ spillbmkepslistr{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs{\isadigit{1}}\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ {\isasymLongrightarrow}\ bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}AALTs\ bs{\isadigit{1}}\ rs{\isadigit{1}}\ {\isacharhash}{\kern0pt}\ rsb{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}\ map\ {\isacharparenleft}{\kern0pt}fuse\ bs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ rs{\isadigit{1}}\ {\isacharat}{\kern0pt}\ rsb{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ bnullable{\isacharunderscore}{\kern0pt}Hdbmkeps{\isacharunderscore}{\kern0pt}Hd{\isacharparenright}{\kern0pt}\isanewline -\ \ \isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bmkeps{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ k{\isadigit{0}}a\ list{\isachardot}{\kern0pt}set{\isacharunderscore}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}\ qq{\isadigit{1}}\ qq{\isadigit{4}}\ qs{\isadigit{3}}{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ third{\isacharunderscore}{\kern0pt}segment{\isacharunderscore}{\kern0pt}bnullable{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymlbrakk}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}{\isacharat}{\kern0pt}rs{\isadigit{2}}{\isacharat}{\kern0pt}rs{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharsemicolon}{\kern0pt}\ {\isasymnot}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharsemicolon}{\kern0pt}\ {\isasymnot}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isasymrbrakk}\ {\isasymLongrightarrow}\ \isanewline -bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ \isanewline -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isachardot}{\kern0pt}left{\isacharunderscore}{\kern0pt}neutral\ append{\isacharunderscore}{\kern0pt}Cons\ bnullable{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}segment\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{7}}{\isacharparenright}{\kern0pt}\ rrewrite{\isacharunderscore}{\kern0pt}nbnullable{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ third{\isacharunderscore}{\kern0pt}segment{\isacharunderscore}{\kern0pt}bmkeps{\isacharcolon}{\kern0pt}\ \ {\isachardoublequoteopen}{\isasymlbrakk}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}{\isacharat}{\kern0pt}rs{\isadigit{2}}{\isacharat}{\kern0pt}rs{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharsemicolon}{\kern0pt}\ {\isasymnot}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharsemicolon}{\kern0pt}\ {\isasymnot}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isasymrbrakk}\ {\isasymLongrightarrow}\ \isanewline -bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}{\isacharat}{\kern0pt}rs{\isadigit{2}}{\isacharat}{\kern0pt}rs{\isadigit{3}}{\isacharparenright}{\kern0pt}\ {\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}{\isasymforall}r\ {\isasymin}\ set\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}{\isacharat}{\kern0pt}rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isachardot}{\kern0pt}\ {\isasymnot}bnullable\ r{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}{\isacharat}{\kern0pt}rs{\isadigit{2}}{\isacharat}{\kern0pt}rs{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}{\isacharparenleft}{\kern0pt}rs{\isadigit{1}}{\isacharat}{\kern0pt}rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharat}{\kern0pt}rs{\isadigit{3}}{\isacharparenright}{\kern0pt}\ {\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ qq{\isadigit{2}}\ qq{\isadigit{3}}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isachardot}{\kern0pt}assoc{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isachardot}{\kern0pt}assoc\ in{\isacharunderscore}{\kern0pt}set{\isacharunderscore}{\kern0pt}conv{\isacharunderscore}{\kern0pt}decomp\ r{\isadigit{2}}\ third{\isacharunderscore}{\kern0pt}segment{\isacharunderscore}{\kern0pt}bnullable{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ third{\isacharunderscore}{\kern0pt}segment{\isacharunderscore}{\kern0pt}bnullable\ \isacommand{by}\isamarkupfalse% -\ blast% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ rewrite{\isacharunderscore}{\kern0pt}bmkepsalt{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}\ {\isasymlbrakk}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa\ {\isacharat}{\kern0pt}\ AALTs\ bs{\isadigit{1}}\ rs{\isadigit{1}}\ {\isacharhash}{\kern0pt}\ rsb{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharsemicolon}{\kern0pt}\ bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa\ {\isacharat}{\kern0pt}\ map\ {\isacharparenleft}{\kern0pt}fuse\ bs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ rs{\isadigit{1}}\ {\isacharat}{\kern0pt}\ rsb{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isasymrbrakk}\isanewline -\ \ \ \ \ \ \ {\isasymLongrightarrow}\ bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa\ {\isacharat}{\kern0pt}\ AALTs\ bs{\isadigit{1}}\ rs{\isadigit{1}}\ {\isacharhash}{\kern0pt}\ rsb{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa\ {\isacharat}{\kern0pt}\ map\ {\isacharparenleft}{\kern0pt}fuse\ bs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ rs{\isadigit{1}}\ {\isacharat}{\kern0pt}\ rsb{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rsa{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ qq{\isadigit{1}}\ \isacommand{apply}\isamarkupfalse% -\ force\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs{\isadigit{1}}\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ qq{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ r{\isadigit{2}}\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\ \ \isanewline -\ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ list{\isachardot}{\kern0pt}set{\isacharunderscore}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}smt\ {\isacharparenleft}{\kern0pt}verit{\isacharcomma}{\kern0pt}\ ccfv{\isacharunderscore}{\kern0pt}threshold{\isacharparenright}{\kern0pt}\ append{\isacharunderscore}{\kern0pt}eq{\isacharunderscore}{\kern0pt}append{\isacharunderscore}{\kern0pt}conv{\isadigit{2}}\ list{\isachardot}{\kern0pt}set{\isacharunderscore}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}\ qq{\isadigit{2}}\ qq{\isadigit{3}}\ rewritenullable\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{8}}{\isacharparenright}{\kern0pt}\ self{\isacharunderscore}{\kern0pt}append{\isacharunderscore}{\kern0pt}conv{\isadigit{2}}\ spillbmkepslistr{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\isanewline -\ \ \isacommand{thm}\isamarkupfalse% -\ qq{\isadigit{1}}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bmkeps\ \ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa\ {\isacharat}{\kern0pt}\ AALTs\ bs{\isadigit{1}}\ rs{\isadigit{1}}\ {\isacharhash}{\kern0pt}\ rsb{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bmkeps\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rsb{\isacharparenright}{\kern0pt}\ {\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{2}}\isanewline -\ \ \isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}Cons\ append{\isacharunderscore}{\kern0pt}Nil\ bnullable{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}segment\ rewritenullable\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{1}}{\isacharparenright}{\kern0pt}\ third{\isacharunderscore}{\kern0pt}segment{\isacharunderscore}{\kern0pt}bmkeps{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ rewrite{\isacharunderscore}{\kern0pt}non{\isacharunderscore}{\kern0pt}nullable\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{0}}{\isacharparenright}{\kern0pt}\ third{\isacharunderscore}{\kern0pt}segment{\isacharunderscore}{\kern0pt}bmkeps{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ rewrite{\isacharunderscore}{\kern0pt}bmkeps{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymlbrakk}\ r{\isadigit{1}}\ {\isasymleadsto}\ r{\isadigit{2}}{\isacharsemicolon}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bnullable\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isasymrbrakk}\ {\isasymLongrightarrow}\ bmkeps\ r{\isadigit{1}}\ {\isacharequal}{\kern0pt}\ bmkeps\ r{\isadigit{2}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\isanewline -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}frule\ rewritenullable{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ r{\isadigit{1}}\ r{\isadigit{2}}\ rule{\isacharcolon}{\kern0pt}\ rrewrite{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ bnullable{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}\ bnullable{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{5}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ b{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}frule\ bnullable{\isacharunderscore}{\kern0pt}segment{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ qq{\isadigit{1}}\ \isacommand{apply}\isamarkupfalse% -\ force\isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ r{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ bnullablewhichbmkeps\ rewritenullable\ \isacommand{apply}\isamarkupfalse% -\ presburger\isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}{\isasymnot}\ bnullable\ r{\isacharprime}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ qq{\isadigit{2}}\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ rrewrite{\isacharunderscore}{\kern0pt}nbnullable\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\isanewline -\ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ flts{\isacharunderscore}{\kern0pt}append\ qs{\isadigit{3}}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}meson\ rewrite{\isacharunderscore}{\kern0pt}bmkepsalt{\isacharparenright}{\kern0pt}\isanewline -\ \ \isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ bnullable{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ q{\isadigit{3}}a\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ q{\isadigit{3}}a{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ bnullable{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ b{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}smt\ {\isacharparenleft}{\kern0pt}z{\isadigit{3}}{\isacharparenright}{\kern0pt}\ Un{\isacharunderscore}{\kern0pt}iff\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{5}}{\isacharparenright}{\kern0pt}\ qq{\isadigit{1}}\ qq{\isadigit{2}}\ qq{\isadigit{3}}\ set{\isacharunderscore}{\kern0pt}append{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ rewrites{\isacharunderscore}{\kern0pt}bmkeps{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymlbrakk}\ {\isacharparenleft}{\kern0pt}r{\isadigit{1}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharsemicolon}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bnullable\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isasymrbrakk}\ {\isasymLongrightarrow}\ bmkeps\ r{\isadigit{1}}\ {\isacharequal}{\kern0pt}\ bmkeps\ r{\isadigit{2}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ r{\isadigit{1}}\ r{\isadigit{2}}\ rule{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ r{\isadigit{2}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{2}}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}metis\ rewritesnullable{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bmkeps\ r{\isadigit{1}}\ {\isacharequal}{\kern0pt}\ bmkeps\ r{\isadigit{2}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{2}}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ fastforce\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ rewrite{\isacharunderscore}{\kern0pt}bmkeps\ \isacommand{by}\isamarkupfalse% -\ presburger% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{thm}\isamarkupfalse% -\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\isacommand{lemma}\isamarkupfalse% -\ alts{\isacharunderscore}{\kern0pt}rewrite{\isacharunderscore}{\kern0pt}front{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}r\ {\isasymleadsto}\ r{\isacharprime}{\kern0pt}\ {\isasymLongrightarrow}\ AALTs\ bs\ {\isacharparenleft}{\kern0pt}r\ {\isacharhash}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}\ {\isasymleadsto}\ AALTs\ bs\ {\isacharparenleft}{\kern0pt}r{\isacharprime}{\kern0pt}\ {\isacharhash}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}Cons\ append{\isacharunderscore}{\kern0pt}Nil\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{6}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ alt{\isacharunderscore}{\kern0pt}rewrite{\isacharunderscore}{\kern0pt}front{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}r\ {\isasymleadsto}\ r{\isacharprime}{\kern0pt}\ {\isasymLongrightarrow}\ AALT\ bs\ r\ r{\isadigit{2}}\ {\isasymleadsto}\ AALT\ bs\ r{\isacharprime}{\kern0pt}\ r{\isadigit{2}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ alts{\isacharunderscore}{\kern0pt}rewrite{\isacharunderscore}{\kern0pt}front\ \isacommand{by}\isamarkupfalse% -\ blast% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ to{\isacharunderscore}{\kern0pt}zero{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}alt{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}\ AALT\ bs\ {\isacharparenleft}{\kern0pt}ASEQ\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ AZERO\ r{\isacharparenright}{\kern0pt}\ r{\isadigit{2}}\ {\isasymleadsto}\ \ AALT\ bs\ AZERO\ r{\isadigit{2}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ alts{\isacharunderscore}{\kern0pt}rewrite{\isacharunderscore}{\kern0pt}front\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ alt{\isacharunderscore}{\kern0pt}remove{\isadigit{0}}{\isacharunderscore}{\kern0pt}front{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}\ AALT\ bs\ AZERO\ r\ {\isasymleadsto}\ AALTs\ bs\ {\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ rrewrite{\isadigit{0}}away{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ alt{\isacharunderscore}{\kern0pt}rewrites{\isacharunderscore}{\kern0pt}back{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}r{\isadigit{2}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isadigit{2}}{\isacharprime}{\kern0pt}\ {\isasymLongrightarrow}AALT\ bs\ r{\isadigit{1}}\ r{\isadigit{2}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ AALT\ bs\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharprime}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ r{\isadigit{2}}\ r{\isadigit{2}}{\isacharprime}{\kern0pt}\ arbitrary{\isacharcolon}{\kern0pt}\ bs\ rule{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}meson\ rs{\isadigit{1}}\ rs{\isadigit{2}}\ srewrites{\isacharunderscore}{\kern0pt}alt{\isadigit{1}}\ ss{\isadigit{1}}\ ss{\isadigit{2}}{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ rewrite{\isacharunderscore}{\kern0pt}fuse{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}\ r{\isadigit{2}}\ {\isasymleadsto}\ r{\isadigit{3}}\ {\isasymLongrightarrow}\ fuse\ bs\ r{\isadigit{2}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ fuse\ bs\ r{\isadigit{3}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ r{\isadigit{2}}\ r{\isadigit{3}}\ arbitrary{\isacharcolon}{\kern0pt}\ bs\ rule{\isacharcolon}{\kern0pt}\ rrewrite{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ auto\isanewline -\isanewline -\ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ continuous{\isacharunderscore}{\kern0pt}rewrite{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ fuse{\isacharunderscore}{\kern0pt}append\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ star{\isacharunderscore}{\kern0pt}seq\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ star{\isacharunderscore}{\kern0pt}seq{\isadigit{2}}\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ contextrewrites{\isadigit{2}}\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \isanewline -\ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{7}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{8}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}assoc\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{9}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}assoc\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{0}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ fuse{\isacharunderscore}{\kern0pt}append\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ \isacommand{by}\isamarkupfalse% -\ auto% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\ \ \isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ rewrites{\isacharunderscore}{\kern0pt}fuse{\isacharcolon}{\kern0pt}\ \ {\isachardoublequoteopen}r{\isadigit{2}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isadigit{2}}{\isacharprime}{\kern0pt}\ {\isasymLongrightarrow}\ \ {\isacharparenleft}{\kern0pt}fuse\ bs{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ \ {\isacharparenleft}{\kern0pt}fuse\ bs{\isadigit{1}}\ r{\isadigit{2}}{\isacharprime}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ r{\isadigit{2}}\ r{\isadigit{2}}{\isacharprime}{\kern0pt}\ arbitrary{\isacharcolon}{\kern0pt}\ bs{\isadigit{1}}\ rule{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}meson\ real{\isacharunderscore}{\kern0pt}trans\ rewrite{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ \ bder{\isacharunderscore}{\kern0pt}fuse{\isacharunderscore}{\kern0pt}list{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}\ map\ {\isacharparenleft}{\kern0pt}bder\ c\ {\isasymcirc}\ fuse\ bs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ rs{\isadigit{1}}\ {\isacharequal}{\kern0pt}\ map\ {\isacharparenleft}{\kern0pt}fuse\ bs{\isadigit{1}}\ {\isasymcirc}\ bder\ c{\isacharparenright}{\kern0pt}\ rs{\isadigit{1}}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bder{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ rewrite{\isacharunderscore}{\kern0pt}der{\isacharunderscore}{\kern0pt}altmiddle{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}bder\ c\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa\ {\isacharat}{\kern0pt}\ AALTs\ bs{\isadigit{1}}\ rs{\isadigit{1}}\ {\isacharhash}{\kern0pt}\ rsb{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ bder\ c\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa\ {\isacharat}{\kern0pt}\ map\ {\isacharparenleft}{\kern0pt}fuse\ bs{\isadigit{1}}{\isacharparenright}{\kern0pt}\ rs{\isadigit{1}}\ {\isacharat}{\kern0pt}\ rsb{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bder{\isacharunderscore}{\kern0pt}fuse{\isacharunderscore}{\kern0pt}list{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ many{\isacharunderscore}{\kern0pt}steps{\isacharunderscore}{\kern0pt}later{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{8}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ fastforce% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ lock{\isacharunderscore}{\kern0pt}step{\isacharunderscore}{\kern0pt}der{\isacharunderscore}{\kern0pt}removal{\isacharcolon}{\kern0pt}\ \isanewline -\ \ \isakeyword{shows}\ {\isachardoublequoteopen}\ erase\ a{\isadigit{1}}\ {\isacharequal}{\kern0pt}\ erase\ a{\isadigit{2}}\ {\isasymLongrightarrow}\ \isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ bder\ c\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}a{\isadigit{1}}{\isacharbrackright}{\kern0pt}\ {\isacharat}{\kern0pt}\ rsb\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}a{\isadigit{2}}{\isacharbrackright}{\kern0pt}\ {\isacharat}{\kern0pt}\ rsc{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ \isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ bder\ c\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ {\isacharparenleft}{\kern0pt}rsa\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}a{\isadigit{1}}{\isacharbrackright}{\kern0pt}\ {\isacharat}{\kern0pt}\ rsb\ {\isacharat}{\kern0pt}\ rsc{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ \isacommand{by}\isamarkupfalse% -\ auto% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ rewrite{\isacharunderscore}{\kern0pt}after{\isacharunderscore}{\kern0pt}der{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}r{\isadigit{1}}\ {\isasymleadsto}\ r{\isadigit{2}}\ {\isasymLongrightarrow}\ {\isacharparenleft}{\kern0pt}bder\ c\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bder\ c\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ r{\isadigit{1}}\ r{\isadigit{2}}\ arbitrary{\isacharcolon}{\kern0pt}\ c\ rule{\isacharcolon}{\kern0pt}\ rrewrite{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}meson\ contextrewrites{\isadigit{1}}\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{1}}{\isacharparenright}{\kern0pt}\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}\ rrewrite{\isadigit{0}}away\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ many{\isacharunderscore}{\kern0pt}steps{\isacharunderscore}{\kern0pt}later{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ to{\isacharunderscore}{\kern0pt}zero{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}alt{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ many{\isacharunderscore}{\kern0pt}steps{\isacharunderscore}{\kern0pt}later{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ alt{\isacharunderscore}{\kern0pt}remove{\isadigit{0}}{\isacharunderscore}{\kern0pt}front{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ many{\isacharunderscore}{\kern0pt}steps{\isacharunderscore}{\kern0pt}later{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ bder{\isacharunderscore}{\kern0pt}fuse\ fuse{\isacharunderscore}{\kern0pt}append\ rs{\isadigit{1}}\ \isacommand{apply}\isamarkupfalse% -\ presburger\isanewline -\ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ r{\isadigit{1}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{2}}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}{\isasymnot}bnullable\ r{\isadigit{2}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{2}}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ rewrite{\isacharunderscore}{\kern0pt}non{\isacharunderscore}{\kern0pt}nullable\ \isacommand{apply}\isamarkupfalse% -\ presburger\isanewline -\ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ simp{\isacharplus}{\kern0pt}\isanewline -\ \ \isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ star{\isacharunderscore}{\kern0pt}seq\ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ r{\isadigit{2}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ simp{\isacharplus}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bmkeps\ r{\isadigit{1}}\ {\isacharequal}{\kern0pt}\ bmkeps\ r{\isadigit{2}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{2}}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ rewrite{\isacharunderscore}{\kern0pt}bmkeps\ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ contextrewrites{\isadigit{1}}\ star{\isacharunderscore}{\kern0pt}seq\ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ rewritenullable\ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ r{\isadigit{1}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}ASEQ\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bder\ c\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\ r{\isadigit{3}}\ {\isasymleadsto}\ ASEQ\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bder\ c\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\ r{\isadigit{4}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\ \isanewline -\ \ \ \ \ \ \ \ \ \ \ \isacommand{prefer}\isamarkupfalse% -\ {\isadigit{2}}\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{5}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse% -\ blast\isanewline -\ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ many{\isacharunderscore}{\kern0pt}steps{\isacharunderscore}{\kern0pt}later{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ alt{\isacharunderscore}{\kern0pt}rewrite{\isacharunderscore}{\kern0pt}front{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ assumption\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}meson\ alt{\isacharunderscore}{\kern0pt}rewrites{\isacharunderscore}{\kern0pt}back\ rewrites{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\ \isanewline -\isanewline -\ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{5}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ contextrewrites{\isadigit{2}}\ \isacommand{apply}\isamarkupfalse% -\ force\isanewline -\isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{7}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse% -\ force\isanewline -\ \ \isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ rewrite{\isacharunderscore}{\kern0pt}der{\isacharunderscore}{\kern0pt}altmiddle\ \isacommand{apply}\isamarkupfalse% -\ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline -\ \ \isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bder{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ bder{\isacharunderscore}{\kern0pt}fuse{\isacharunderscore}{\kern0pt}list\ map{\isacharunderscore}{\kern0pt}map\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{9}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ List{\isachardot}{\kern0pt}map{\isachardot}{\kern0pt}compositionality\ bder{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ bder{\isacharunderscore}{\kern0pt}fuse{\isacharunderscore}{\kern0pt}list\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{0}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bder{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ bder{\isacharunderscore}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}AALTs\ bsimp{\isacharunderscore}{\kern0pt}AALTs{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}\ bsimp{\isacharunderscore}{\kern0pt}AALTsrewrites{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \isanewline -\ \ \isacommand{using}\isamarkupfalse% -\ lock{\isacharunderscore}{\kern0pt}step{\isacharunderscore}{\kern0pt}der{\isacharunderscore}{\kern0pt}removal\ \isacommand{by}\isamarkupfalse% -\ auto% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ rewrites{\isacharunderscore}{\kern0pt}after{\isacharunderscore}{\kern0pt}der{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}\ \ r{\isadigit{1}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isadigit{2}}\ \ {\isasymLongrightarrow}\ \ {\isacharparenleft}{\kern0pt}bder\ c\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharparenleft}{\kern0pt}bder\ c\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induction\ r{\isadigit{1}}\ r{\isadigit{2}}\ rule{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}rule\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}meson\ real{\isacharunderscore}{\kern0pt}trans\ rewrite{\isacharunderscore}{\kern0pt}after{\isacharunderscore}{\kern0pt}der{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\ \ \isanewline -\isanewline -\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ central{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}\ {\isacharparenleft}{\kern0pt}bders\ r\ s{\isacharparenright}{\kern0pt}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ \ {\isacharparenleft}{\kern0pt}bders{\isacharunderscore}{\kern0pt}simp\ r\ s{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\ \isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}induct\ s\ arbitrary{\isacharcolon}{\kern0pt}\ r\ rule{\isacharcolon}{\kern0pt}\ rev{\isacharunderscore}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline -\isanewline -\ \ \ \isacommand{apply}\isamarkupfalse% -\ simp\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ bders{\isacharunderscore}{\kern0pt}append{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{apply}\isamarkupfalse% -{\isacharparenleft}{\kern0pt}subst\ bders{\isacharunderscore}{\kern0pt}simp{\isacharunderscore}{\kern0pt}append{\isacharparenright}{\kern0pt}\isanewline -\ \ \isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}metis\ bders{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}\ bders{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}\ bders{\isacharunderscore}{\kern0pt}simp{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}\ bders{\isacharunderscore}{\kern0pt}simp{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}\ bsimp{\isacharunderscore}{\kern0pt}rewrite\ real{\isacharunderscore}{\kern0pt}trans\ rewrites{\isacharunderscore}{\kern0pt}after{\isacharunderscore}{\kern0pt}der{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isanewline -\isacommand{thm}\isamarkupfalse% -\ arexp{\isachardot}{\kern0pt}induct\isanewline -\isanewline -\isacommand{lemma}\isamarkupfalse% -\ quasi{\isacharunderscore}{\kern0pt}main{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}bders\ r\ s{\isacharparenright}{\kern0pt}\ {\isasymLongrightarrow}\ bmkeps\ {\isacharparenleft}{\kern0pt}bders\ r\ s{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bmkeps\ {\isacharparenleft}{\kern0pt}bders{\isacharunderscore}{\kern0pt}simp\ r\ s{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ central\ rewrites{\isacharunderscore}{\kern0pt}bmkeps\ \isacommand{by}\isamarkupfalse% -\ blast% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isacommand{theorem}\isamarkupfalse% -\ main{\isacharunderscore}{\kern0pt}main{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}blexer\ r\ s\ {\isacharequal}{\kern0pt}\ blexer{\isacharunderscore}{\kern0pt}simp\ r\ s{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{by}\isamarkupfalse% -\ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ b{\isadigit{4}}\ blexer{\isacharunderscore}{\kern0pt}def\ blexer{\isacharunderscore}{\kern0pt}simp{\isacharunderscore}{\kern0pt}def\ quasi{\isacharunderscore}{\kern0pt}main{\isacharparenright}{\kern0pt}% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{theorem}\isamarkupfalse% -\ blexersimp{\isacharunderscore}{\kern0pt}correctness{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}blexer{\isacharunderscore}{\kern0pt}simp\ r\ s{\isacharequal}{\kern0pt}\ lexer\ r\ s{\isachardoublequoteclose}\isanewline -% -\isadelimproof -\ \ % -\endisadelimproof -% -\isatagproof -\isacommand{using}\isamarkupfalse% -\ blexer{\isacharunderscore}{\kern0pt}correctness\ main{\isacharunderscore}{\kern0pt}main\ \isacommand{by}\isamarkupfalse% -\ auto% -\endisatagproof -{\isafoldproof}% -% -\isadelimproof -\isanewline -% -\endisadelimproof -\isanewline -\isanewline -\isacommand{unused{\isacharunderscore}{\kern0pt}thms}\isamarkupfalse% -\isanewline -\isanewline -% -\isadelimtheory -\isanewline -% -\endisadelimtheory -% -\isatagtheory -\isacommand{end}\isamarkupfalse% -% -\endisatagtheory -{\isafoldtheory}% -% -\isadelimtheory -% -\endisadelimtheory -% -\end{isabellebody}% -\endinput -%:%file=~/Dropbox/Workspace/journalpaper/lexing/thys2/SizeBound.thy%:% -%:%6=1%:% -%:%11=2%:% -%:%12=2%:% -%:%13=3%:% -%:%14=4%:% -%:%28=6%:% -%:%38=8%:% -%:%39=8%:% -%:%40=9%:% -%:%41=10%:% -%:%42=10%:% -%:%43=11%:% -%:%44=12%:% -%:%45=13%:% -%:%46=14%:% -%:%47=15%:% -%:%48=16%:% -%:%49=17%:% -%:%50=18%:% -%:%51=19%:% -%:%52=20%:% -%:%53=21%:% -%:%54=21%:% -%:%55=22%:% -%:%56=23%:% -%:%57=24%:% -%:%58=25%:% -%:%59=26%:% -%:%60=26%:% -%:%61=27%:% -%:%62=28%:% -%:%63=29%:% -%:%64=30%:% -%:%65=31%:% -%:%66=32%:% -%:%67=33%:% -%:%68=34%:% -%:%69=35%:% -%:%70=36%:% -%:%71=37%:% -%:%72=38%:% -%:%73=39%:% -%:%75=41%:% -%:%82=42%:% -%:%83=42%:% -%:%88=42%:% -%:%91=43%:% -%:%92=44%:% -%:%93=44%:% -%:%94=45%:% -%:%95=46%:% -%:%102=47%:% -%:%103=47%:% -%:%104=48%:% -%:%105=48%:% -%:%106=49%:% -%:%107=49%:% -%:%108=50%:% -%:%109=50%:% -%:%110=50%:% -%:%111=51%:% -%:%112=51%:% -%:%117=51%:% -%:%120=52%:% -%:%121=53%:% -%:%122=53%:% -%:%129=54%:% -%:%130=54%:% -%:%131=55%:% -%:%132=55%:% -%:%133=56%:% -%:%134=56%:% -%:%139=56%:% -%:%142=57%:% -%:%143=58%:% -%:%144=58%:% -%:%145=59%:% -%:%146=60%:% -%:%147=61%:% -%:%148=62%:% -%:%149=63%:% -%:%150=64%:% -%:%151=64%:% -%:%152=65%:% -%:%153=66%:% -%:%156=67%:% -%:%160=67%:% -%:%161=67%:% -%:%162=68%:% -%:%163=68%:% -%:%164=69%:% -%:%165=69%:% -%:%166=70%:% -%:%172=70%:% -%:%175=71%:% -%:%176=72%:% -%:%177=72%:% -%:%178=73%:% -%:%179=74%:% -%:%186=75%:% -%:%187=75%:% -%:%188=76%:% -%:%189=76%:% -%:%190=77%:% -%:%191=77%:% -%:%192=78%:% -%:%193=78%:% -%:%194=78%:% -%:%199=78%:% -%:%202=79%:% -%:%203=80%:% -%:%204=80%:% -%:%205=81%:% -%:%206=82%:% -%:%209=83%:% -%:%213=83%:% -%:%214=83%:% -%:%215=83%:% -%:%216=84%:% -%:%217=84%:% -%:%231=87%:% -%:%241=89%:% -%:%242=89%:% -%:%243=90%:% -%:%244=91%:% -%:%245=92%:% -%:%246=93%:% -%:%247=94%:% -%:%248=95%:% -%:%249=96%:% -%:%250=97%:% -%:%251=97%:% -%:%252=98%:% -%:%253=99%:% -%:%254=100%:% -%:%255=100%:% -%:%256=101%:% -%:%257=102%:% -%:%258=103%:% -%:%259=104%:% -%:%260=105%:% -%:%261=106%:% -%:%262=107%:% -%:%263=108%:% -%:%264=108%:% -%:%265=109%:% -%:%266=110%:% -%:%267=111%:% -%:%268=112%:% -%:%269=113%:% -%:%270=114%:% -%:%271=115%:% -%:%272=116%:% -%:%273=117%:% -%:%274=118%:% -%:%275=119%:% -%:%276=120%:% -%:%277=121%:% -%:%278=122%:% -%:%279=123%:% -%:%280=123%:% -%:%281=124%:% -%:%282=125%:% -%:%283=126%:% -%:%284=127%:% -%:%285=128%:% -%:%286=129%:% -%:%287=129%:% -%:%288=130%:% -%:%289=131%:% -%:%290=132%:% -%:%291=133%:% -%:%292=134%:% -%:%293=135%:% -%:%294=136%:% -%:%295=137%:% -%:%296=138%:% -%:%297=139%:% -%:%298=140%:% -%:%299=141%:% -%:%300=142%:% -%:%301=143%:% -%:%302=144%:% -%:%303=145%:% -%:%304=145%:% -%:%305=146%:% -%:%306=147%:% -%:%307=148%:% -%:%308=149%:% -%:%309=150%:% -%:%310=151%:% -%:%311=152%:% -%:%312=153%:% -%:%313=153%:% -%:%314=154%:% -%:%317=155%:% -%:%321=155%:% -%:%322=155%:% -%:%323=156%:% -%:%324=156%:% -%:%325=157%:% -%:%331=157%:% -%:%334=158%:% -%:%335=159%:% -%:%336=160%:% -%:%337=160%:% -%:%338=161%:% -%:%339=162%:% -%:%340=163%:% -%:%341=164%:% -%:%342=165%:% -%:%343=166%:% -%:%344=167%:% -%:%345=168%:% -%:%346=169%:% -%:%347=170%:% -%:%348=170%:% -%:%349=171%:% -%:%350=172%:% -%:%351=173%:% -%:%352=174%:% -%:%353=175%:% -%:%354=176%:% -%:%355=177%:% -%:%356=178%:% -%:%357=179%:% -%:%358=180%:% -%:%359=181%:% -%:%360=182%:% -%:%361=183%:% -%:%362=183%:% -%:%363=184%:% -%:%364=185%:% -%:%365=186%:% -%:%366=187%:% -%:%367=188%:% -%:%368=189%:% -%:%369=190%:% -%:%370=191%:% -%:%371=192%:% -%:%372=193%:% -%:%373=193%:% -%:%374=194%:% -%:%375=195%:% -%:%376=196%:% -%:%377=197%:% -%:%378=198%:% -%:%379=199%:% -%:%380=200%:% -%:%381=201%:% -%:%382=202%:% -%:%383=203%:% -%:%384=203%:% -%:%385=204%:% -%:%386=205%:% -%:%387=206%:% -%:%388=207%:% -%:%389=208%:% -%:%390=209%:% -%:%391=210%:% -%:%394=213%:% -%:%395=214%:% -%:%396=215%:% -%:%397=216%:% -%:%398=217%:% -%:%399=217%:% -%:%400=218%:% -%:%401=219%:% -%:%402=220%:% -%:%403=221%:% -%:%404=222%:% -%:%405=223%:% -%:%406=223%:% -%:%407=224%:% -%:%410=225%:% -%:%414=225%:% -%:%415=225%:% -%:%416=226%:% -%:%417=226%:% -%:%418=227%:% -%:%424=227%:% -%:%427=228%:% -%:%428=229%:% -%:%429=229%:% -%:%430=230%:% -%:%433=231%:% -%:%437=231%:% -%:%438=231%:% -%:%439=232%:% -%:%440=232%:% -%:%441=233%:% -%:%447=233%:% -%:%450=234%:% -%:%451=235%:% -%:%452=235%:% -%:%453=236%:% -%:%456=237%:% -%:%460=237%:% -%:%461=237%:% -%:%462=238%:% -%:%463=238%:% -%:%464=239%:% -%:%470=239%:% -%:%473=240%:% -%:%474=241%:% -%:%475=241%:% -%:%476=242%:% -%:%477=243%:% -%:%478=243%:% -%:%479=244%:% -%:%482=245%:% -%:%486=245%:% -%:%487=245%:% -%:%488=246%:% -%:%489=246%:% -%:%490=247%:% -%:%496=247%:% -%:%499=248%:% -%:%500=249%:% -%:%501=249%:% -%:%502=250%:% -%:%505=251%:% -%:%509=251%:% -%:%510=251%:% -%:%511=252%:% -%:%512=252%:% -%:%513=253%:% -%:%519=253%:% -%:%522=254%:% -%:%523=255%:% -%:%524=255%:% -%:%525=256%:% -%:%528=257%:% -%:%532=257%:% -%:%533=257%:% -%:%534=258%:% -%:%535=258%:% -%:%536=259%:% -%:%542=259%:% -%:%545=260%:% -%:%546=261%:% -%:%547=261%:% -%:%548=262%:% -%:%549=263%:% -%:%552=264%:% -%:%556=264%:% -%:%557=264%:% -%:%558=265%:% -%:%559=265%:% -%:%560=266%:% -%:%561=266%:% -%:%562=267%:% -%:%568=267%:% -%:%571=268%:% -%:%572=269%:% -%:%573=270%:% -%:%574=270%:% -%:%575=271%:% -%:%576=272%:% -%:%579=273%:% -%:%583=273%:% -%:%584=273%:% -%:%585=274%:% -%:%586=274%:% -%:%587=275%:% -%:%588=275%:% -%:%589=276%:% -%:%590=276%:% -%:%591=277%:% -%:%592=277%:% -%:%593=278%:% -%:%594=278%:% -%:%595=279%:% -%:%596=279%:% -%:%597=280%:% -%:%598=280%:% -%:%599=281%:% -%:%600=281%:% -%:%601=282%:% -%:%602=283%:% -%:%603=283%:% -%:%604=284%:% -%:%605=284%:% -%:%606=285%:% -%:%607=285%:% -%:%608=286%:% -%:%609=286%:% -%:%610=287%:% -%:%611=287%:% -%:%612=288%:% -%:%613=288%:% -%:%614=289%:% -%:%615=289%:% -%:%616=290%:% -%:%617=290%:% -%:%618=291%:% -%:%619=291%:% -%:%620=292%:% -%:%626=292%:% -%:%629=293%:% -%:%630=294%:% -%:%631=294%:% -%:%632=295%:% -%:%633=296%:% -%:%636=297%:% -%:%640=297%:% -%:%641=297%:% -%:%642=298%:% -%:%643=298%:% -%:%648=298%:% -%:%651=299%:% -%:%652=300%:% -%:%653=301%:% -%:%654=301%:% -%:%655=302%:% -%:%656=303%:% -%:%659=304%:% -%:%663=304%:% -%:%664=304%:% -%:%665=305%:% -%:%666=305%:% -%:%667=306%:% -%:%668=306%:% -%:%669=307%:% -%:%675=307%:% -%:%678=308%:% -%:%679=309%:% -%:%680=310%:% -%:%681=310%:% -%:%682=311%:% -%:%683=312%:% -%:%686=313%:% -%:%690=313%:% -%:%691=313%:% -%:%692=314%:% -%:%693=314%:% -%:%698=314%:% -%:%701=315%:% -%:%702=316%:% -%:%703=316%:% -%:%704=317%:% -%:%705=318%:% -%:%708=319%:% -%:%712=319%:% -%:%713=319%:% -%:%714=320%:% -%:%715=320%:% -%:%716=321%:% -%:%717=321%:% -%:%718=322%:% -%:%724=322%:% -%:%727=323%:% -%:%728=324%:% -%:%729=324%:% -%:%730=325%:% -%:%731=326%:% -%:%734=327%:% -%:%738=327%:% -%:%739=327%:% -%:%740=328%:% -%:%741=328%:% -%:%742=329%:% -%:%743=329%:% -%:%744=330%:% -%:%750=330%:% -%:%753=331%:% -%:%754=332%:% -%:%755=332%:% -%:%756=333%:% -%:%757=334%:% -%:%758=335%:% -%:%759=336%:% -%:%762=337%:% -%:%766=337%:% -%:%767=337%:% -%:%768=338%:% -%:%769=338%:% -%:%770=339%:% -%:%771=339%:% -%:%772=340%:% -%:%773=340%:% -%:%774=341%:% -%:%775=341%:% -%:%776=341%:% -%:%777=342%:% -%:%778=342%:% -%:%779=343%:% -%:%780=343%:% -%:%781=344%:% -%:%782=344%:% -%:%783=345%:% -%:%784=345%:% -%:%785=346%:% -%:%786=346%:% -%:%787=347%:% -%:%788=347%:% -%:%789=348%:% -%:%790=348%:% -%:%791=349%:% -%:%792=349%:% -%:%793=350%:% -%:%794=350%:% -%:%795=351%:% -%:%796=351%:% -%:%797=352%:% -%:%798=352%:% -%:%799=353%:% -%:%800=353%:% -%:%801=354%:% -%:%802=354%:% -%:%803=355%:% -%:%804=355%:% -%:%805=356%:% -%:%806=356%:% -%:%807=357%:% -%:%808=357%:% -%:%809=358%:% -%:%810=358%:% -%:%811=359%:% -%:%812=359%:% -%:%813=360%:% -%:%814=360%:% -%:%815=361%:% -%:%816=361%:% -%:%817=362%:% -%:%818=362%:% -%:%819=363%:% -%:%825=363%:% -%:%828=364%:% -%:%829=365%:% -%:%830=366%:% -%:%831=366%:% -%:%832=367%:% -%:%833=368%:% -%:%834=369%:% -%:%837=370%:% -%:%841=370%:% -%:%842=370%:% -%:%843=371%:% -%:%844=371%:% -%:%845=372%:% -%:%846=372%:% -%:%847=373%:% -%:%848=373%:% -%:%849=374%:% -%:%850=374%:% -%:%851=375%:% -%:%852=375%:% -%:%853=376%:% -%:%854=376%:% -%:%855=377%:% -%:%856=377%:% -%:%857=378%:% -%:%858=378%:% -%:%859=379%:% -%:%860=379%:% -%:%861=380%:% -%:%862=380%:% -%:%863=381%:% -%:%864=381%:% -%:%865=382%:% -%:%866=382%:% -%:%867=383%:% -%:%868=383%:% -%:%869=384%:% -%:%870=384%:% -%:%871=385%:% -%:%872=385%:% -%:%873=386%:% -%:%874=386%:% -%:%875=387%:% -%:%876=387%:% -%:%877=388%:% -%:%878=388%:% -%:%879=389%:% -%:%880=389%:% -%:%881=390%:% -%:%882=390%:% -%:%883=390%:% -%:%884=391%:% -%:%885=391%:% -%:%886=392%:% -%:%887=392%:% -%:%888=393%:% -%:%889=393%:% -%:%890=394%:% -%:%891=394%:% -%:%892=394%:% -%:%893=395%:% -%:%894=395%:% -%:%895=396%:% -%:%896=396%:% -%:%897=397%:% -%:%898=397%:% -%:%899=398%:% -%:%900=398%:% -%:%901=399%:% -%:%902=399%:% -%:%903=399%:% -%:%904=400%:% -%:%905=400%:% -%:%906=401%:% -%:%907=401%:% -%:%908=401%:% -%:%913=401%:% -%:%916=402%:% -%:%917=403%:% -%:%918=403%:% -%:%919=404%:% -%:%920=405%:% -%:%923=406%:% -%:%927=406%:% -%:%928=406%:% -%:%929=407%:% -%:%930=407%:% -%:%931=408%:% -%:%932=408%:% -%:%933=409%:% -%:%934=409%:% -%:%935=410%:% -%:%936=410%:% -%:%937=411%:% -%:%938=411%:% -%:%939=412%:% -%:%940=412%:% -%:%941=413%:% -%:%942=413%:% -%:%943=414%:% -%:%944=414%:% -%:%945=415%:% -%:%946=415%:% -%:%947=416%:% -%:%953=416%:% -%:%956=417%:% -%:%957=418%:% -%:%958=418%:% -%:%959=419%:% -%:%960=420%:% -%:%963=421%:% -%:%967=421%:% -%:%968=421%:% -%:%969=422%:% -%:%970=422%:% -%:%971=423%:% -%:%972=423%:% -%:%973=424%:% -%:%974=424%:% -%:%975=425%:% -%:%976=425%:% -%:%977=426%:% -%:%978=426%:% -%:%979=427%:% -%:%980=427%:% -%:%981=428%:% -%:%982=428%:% -%:%983=429%:% -%:%984=429%:% -%:%985=430%:% -%:%986=430%:% -%:%987=431%:% -%:%988=431%:% -%:%989=432%:% -%:%990=432%:% -%:%991=433%:% -%:%992=433%:% -%:%993=434%:% -%:%994=434%:% -%:%995=435%:% -%:%996=435%:% -%:%997=436%:% -%:%998=436%:% -%:%999=437%:% -%:%1000=437%:% -%:%1001=438%:% -%:%1002=438%:% -%:%1003=439%:% -%:%1004=439%:% -%:%1005=440%:% -%:%1006=440%:% -%:%1007=441%:% -%:%1008=441%:% -%:%1009=442%:% -%:%1010=442%:% -%:%1011=443%:% -%:%1012=443%:% -%:%1013=444%:% -%:%1014=444%:% -%:%1015=445%:% -%:%1016=445%:% -%:%1017=446%:% -%:%1018=446%:% -%:%1019=447%:% -%:%1020=447%:% -%:%1021=448%:% -%:%1022=448%:% -%:%1023=449%:% -%:%1024=449%:% -%:%1025=450%:% -%:%1026=450%:% -%:%1027=451%:% -%:%1028=451%:% -%:%1029=452%:% -%:%1030=452%:% -%:%1031=452%:% -%:%1032=453%:% -%:%1033=453%:% -%:%1034=454%:% -%:%1035=454%:% -%:%1036=455%:% -%:%1037=455%:% -%:%1038=456%:% -%:%1039=456%:% -%:%1040=457%:% -%:%1041=457%:% -%:%1042=458%:% -%:%1043=458%:% -%:%1044=458%:% -%:%1045=459%:% -%:%1046=459%:% -%:%1047=460%:% -%:%1048=460%:% -%:%1049=461%:% -%:%1050=461%:% -%:%1051=462%:% -%:%1052=462%:% -%:%1053=463%:% -%:%1054=463%:% -%:%1055=464%:% -%:%1056=464%:% -%:%1057=465%:% -%:%1058=465%:% -%:%1059=465%:% -%:%1060=466%:% -%:%1061=466%:% -%:%1062=467%:% -%:%1063=467%:% -%:%1064=468%:% -%:%1065=468%:% -%:%1066=469%:% -%:%1067=469%:% -%:%1068=470%:% -%:%1069=470%:% -%:%1070=471%:% -%:%1071=471%:% -%:%1072=472%:% -%:%1073=472%:% -%:%1074=473%:% -%:%1075=473%:% -%:%1076=474%:% -%:%1077=474%:% -%:%1078=475%:% -%:%1079=475%:% -%:%1080=476%:% -%:%1081=476%:% -%:%1082=477%:% -%:%1083=477%:% -%:%1084=478%:% -%:%1090=478%:% -%:%1093=479%:% -%:%1094=480%:% -%:%1095=481%:% -%:%1096=482%:% -%:%1097=482%:% -%:%1098=483%:% -%:%1099=484%:% -%:%1102=485%:% -%:%1106=485%:% -%:%1107=485%:% -%:%1108=486%:% -%:%1109=486%:% -%:%1110=487%:% -%:%1111=487%:% -%:%1112=488%:% -%:%1113=488%:% -%:%1114=488%:% -%:%1115=489%:% -%:%1116=489%:% -%:%1117=489%:% -%:%1118=489%:% -%:%1119=490%:% -%:%1120=490%:% -%:%1121=490%:% -%:%1122=491%:% -%:%1123=491%:% -%:%1124=491%:% -%:%1125=492%:% -%:%1126=492%:% -%:%1127=492%:% -%:%1128=493%:% -%:%1129=493%:% -%:%1130=494%:% -%:%1131=494%:% -%:%1132=495%:% -%:%1133=495%:% -%:%1134=496%:% -%:%1135=496%:% -%:%1136=497%:% -%:%1137=497%:% -%:%1138=498%:% -%:%1139=498%:% -%:%1140=498%:% -%:%1141=499%:% -%:%1142=499%:% -%:%1143=499%:% -%:%1144=500%:% -%:%1145=500%:% -%:%1146=501%:% -%:%1147=501%:% -%:%1148=502%:% -%:%1149=502%:% -%:%1150=503%:% -%:%1151=503%:% -%:%1152=503%:% -%:%1153=504%:% -%:%1154=504%:% -%:%1155=504%:% -%:%1156=505%:% -%:%1157=505%:% -%:%1158=505%:% -%:%1159=506%:% -%:%1160=506%:% -%:%1161=506%:% -%:%1162=507%:% -%:%1163=507%:% -%:%1164=507%:% -%:%1165=508%:% -%:%1166=508%:% -%:%1167=509%:% -%:%1173=509%:% -%:%1176=510%:% -%:%1177=511%:% -%:%1178=512%:% -%:%1179=512%:% -%:%1180=513%:% -%:%1181=514%:% -%:%1182=515%:% -%:%1183=516%:% -%:%1184=517%:% -%:%1185=517%:% -%:%1186=518%:% -%:%1187=519%:% -%:%1188=520%:% -%:%1189=521%:% -%:%1190=521%:% -%:%1191=522%:% -%:%1198=523%:% -%:%1199=523%:% -%:%1200=524%:% -%:%1201=524%:% -%:%1202=524%:% -%:%1203=525%:% -%:%1204=525%:% -%:%1205=526%:% -%:%1206=526%:% -%:%1207=527%:% -%:%1208=527%:% -%:%1209=528%:% -%:%1210=528%:% -%:%1211=528%:% -%:%1212=529%:% -%:%1213=529%:% -%:%1214=530%:% -%:%1215=530%:% -%:%1216=530%:% -%:%1217=531%:% -%:%1218=531%:% -%:%1219=532%:% -%:%1220=532%:% -%:%1221=533%:% -%:%1222=533%:% -%:%1223=533%:% -%:%1224=534%:% -%:%1225=534%:% -%:%1226=534%:% -%:%1227=535%:% -%:%1228=535%:% -%:%1229=535%:% -%:%1230=536%:% -%:%1231=536%:% -%:%1232=536%:% -%:%1233=537%:% -%:%1234=537%:% -%:%1235=537%:% -%:%1236=538%:% -%:%1237=538%:% -%:%1238=539%:% -%:%1239=539%:% -%:%1240=539%:% -%:%1241=540%:% -%:%1242=540%:% -%:%1243=541%:% -%:%1244=541%:% -%:%1245=542%:% -%:%1246=542%:% -%:%1247=543%:% -%:%1248=543%:% -%:%1249=544%:% -%:%1255=544%:% -%:%1258=545%:% -%:%1259=546%:% -%:%1260=547%:% -%:%1261=547%:% -%:%1262=548%:% -%:%1263=549%:% -%:%1264=550%:% -%:%1266=552%:% -%:%1267=553%:% -%:%1268=554%:% -%:%1269=555%:% -%:%1270=556%:% -%:%1271=557%:% -%:%1272=557%:% -%:%1273=558%:% -%:%1274=559%:% -%:%1275=560%:% -%:%1276=561%:% -%:%1277=562%:% -%:%1278=563%:% -%:%1279=564%:% -%:%1280=565%:% -%:%1281=566%:% -%:%1282=567%:% -%:%1283=567%:% -%:%1284=568%:% -%:%1285=569%:% -%:%1286=570%:% -%:%1287=571%:% -%:%1288=572%:% -%:%1289=573%:% -%:%1290=574%:% -%:%1291=575%:% -%:%1292=576%:% -%:%1293=576%:% -%:%1294=577%:% -%:%1295=578%:% -%:%1296=579%:% -%:%1297=580%:% -%:%1298=581%:% -%:%1299=582%:% -%:%1300=583%:% -%:%1301=584%:% -%:%1302=584%:% -%:%1303=585%:% -%:%1304=586%:% -%:%1305=587%:% -%:%1306=588%:% -%:%1307=589%:% -%:%1308=590%:% -%:%1309=591%:% -%:%1310=591%:% -%:%1311=592%:% -%:%1312=593%:% -%:%1313=594%:% -%:%1314=595%:% -%:%1315=596%:% -%:%1316=597%:% -%:%1317=598%:% -%:%1318=599%:% -%:%1319=600%:% -%:%1320=600%:% -%:%1321=601%:% -%:%1322=602%:% -%:%1323=603%:% -%:%1324=604%:% -%:%1325=605%:% -%:%1326=606%:% -%:%1327=606%:% -%:%1328=607%:% -%:%1329=608%:% -%:%1330=609%:% -%:%1331=610%:% -%:%1332=610%:% -%:%1333=611%:% -%:%1334=612%:% -%:%1335=612%:% -%:%1336=613%:% -%:%1339=614%:% -%:%1343=614%:% -%:%1344=614%:% -%:%1345=615%:% -%:%1346=615%:% -%:%1347=616%:% -%:%1348=616%:% -%:%1349=617%:% -%:%1355=617%:% -%:%1358=618%:% -%:%1359=619%:% -%:%1360=620%:% -%:%1361=621%:% -%:%1362=622%:% -%:%1363=623%:% -%:%1364=624%:% -%:%1365=625%:% -%:%1366=625%:% -%:%1367=626%:% -%:%1370=627%:% -%:%1374=627%:% -%:%1375=627%:% -%:%1376=628%:% -%:%1377=628%:% -%:%1378=629%:% -%:%1379=629%:% -%:%1384=629%:% -%:%1387=630%:% -%:%1388=631%:% -%:%1389=631%:% -%:%1390=632%:% -%:%1393=633%:% -%:%1397=633%:% -%:%1398=633%:% -%:%1399=634%:% -%:%1400=634%:% -%:%1401=635%:% -%:%1407=635%:% -%:%1410=636%:% -%:%1411=637%:% -%:%1412=637%:% -%:%1413=638%:% -%:%1416=639%:% -%:%1420=639%:% -%:%1421=639%:% -%:%1422=640%:% -%:%1423=640%:% -%:%1424=641%:% -%:%1425=641%:% -%:%1426=642%:% -%:%1427=642%:% -%:%1428=643%:% -%:%1429=643%:% -%:%1430=644%:% -%:%1431=644%:% -%:%1432=645%:% -%:%1438=645%:% -%:%1441=646%:% -%:%1442=647%:% -%:%1443=647%:% -%:%1444=648%:% -%:%1447=649%:% -%:%1451=649%:% -%:%1452=649%:% -%:%1453=650%:% -%:%1454=650%:% -%:%1455=651%:% -%:%1456=651%:% -%:%1457=652%:% -%:%1458=652%:% -%:%1459=652%:% -%:%1460=653%:% -%:%1461=653%:% -%:%1466=653%:% -%:%1469=654%:% -%:%1470=655%:% -%:%1471=655%:% -%:%1472=656%:% -%:%1475=657%:% -%:%1479=657%:% -%:%1480=657%:% -%:%1481=658%:% -%:%1482=658%:% -%:%1483=659%:% -%:%1484=659%:% -%:%1485=660%:% -%:%1486=660%:% -%:%1491=660%:% -%:%1494=661%:% -%:%1495=662%:% -%:%1496=662%:% -%:%1497=663%:% -%:%1500=664%:% -%:%1504=664%:% -%:%1505=664%:% -%:%1510=664%:% -%:%1513=665%:% -%:%1514=666%:% -%:%1515=666%:% -%:%1516=667%:% -%:%1519=668%:% -%:%1523=668%:% -%:%1524=668%:% -%:%1525=669%:% -%:%1526=669%:% -%:%1527=670%:% -%:%1528=670%:% -%:%1529=671%:% -%:%1530=671%:% -%:%1531=672%:% -%:%1532=672%:% -%:%1533=673%:% -%:%1534=673%:% -%:%1535=674%:% -%:%1536=674%:% -%:%1537=675%:% -%:%1538=675%:% -%:%1539=676%:% -%:%1540=676%:% -%:%1541=677%:% -%:%1542=677%:% -%:%1543=678%:% -%:%1544=678%:% -%:%1545=679%:% -%:%1546=679%:% -%:%1547=680%:% -%:%1548=680%:% -%:%1549=681%:% -%:%1550=681%:% -%:%1551=682%:% -%:%1552=682%:% -%:%1553=683%:% -%:%1554=683%:% -%:%1555=684%:% -%:%1556=684%:% -%:%1557=685%:% -%:%1558=685%:% -%:%1559=686%:% -%:%1560=686%:% -%:%1561=686%:% -%:%1566=686%:% -%:%1569=687%:% -%:%1570=688%:% -%:%1571=688%:% -%:%1572=689%:% -%:%1575=690%:% -%:%1579=690%:% -%:%1580=690%:% -%:%1581=691%:% -%:%1582=691%:% -%:%1583=692%:% -%:%1589=692%:% -%:%1592=693%:% -%:%1593=694%:% -%:%1594=695%:% -%:%1595=696%:% -%:%1596=696%:% -%:%1597=697%:% -%:%1598=698%:% -%:%1601=699%:% -%:%1605=699%:% -%:%1606=699%:% -%:%1607=700%:% -%:%1608=700%:% -%:%1609=701%:% -%:%1610=701%:% -%:%1611=702%:% -%:%1617=702%:% -%:%1620=703%:% -%:%1621=704%:% -%:%1622=704%:% -%:%1623=705%:% -%:%1626=706%:% -%:%1630=706%:% -%:%1631=706%:% -%:%1632=707%:% -%:%1633=707%:% -%:%1634=708%:% -%:%1640=708%:% -%:%1643=709%:% -%:%1644=710%:% -%:%1645=711%:% -%:%1646=711%:% -%:%1647=712%:% -%:%1650=713%:% -%:%1654=713%:% -%:%1655=713%:% -%:%1656=714%:% -%:%1657=714%:% -%:%1658=715%:% -%:%1659=715%:% -%:%1660=716%:% -%:%1661=716%:% -%:%1662=717%:% -%:%1663=717%:% -%:%1664=718%:% -%:%1665=718%:% -%:%1666=719%:% -%:%1667=719%:% -%:%1672=719%:% -%:%1675=720%:% -%:%1676=721%:% -%:%1677=722%:% -%:%1678=722%:% -%:%1679=723%:% -%:%1680=724%:% -%:%1683=725%:% -%:%1687=725%:% -%:%1688=725%:% -%:%1693=725%:% -%:%1696=726%:% -%:%1697=727%:% -%:%1698=728%:% -%:%1699=728%:% -%:%1700=729%:% -%:%1703=730%:% -%:%1707=730%:% -%:%1708=730%:% -%:%1713=730%:% -%:%1716=731%:% -%:%1717=732%:% -%:%1718=733%:% -%:%1719=733%:% -%:%1720=734%:% -%:%1721=735%:% -%:%1724=736%:% -%:%1728=736%:% -%:%1729=736%:% -%:%1730=737%:% -%:%1731=737%:% -%:%1732=738%:% -%:%1733=738%:% -%:%1734=739%:% -%:%1735=739%:% -%:%1736=740%:% -%:%1737=740%:% -%:%1742=740%:% -%:%1745=741%:% -%:%1746=742%:% -%:%1747=742%:% -%:%1748=743%:% -%:%1749=744%:% -%:%1752=745%:% -%:%1756=745%:% -%:%1757=745%:% -%:%1758=746%:% -%:%1759=746%:% -%:%1760=747%:% -%:%1761=747%:% -%:%1762=748%:% -%:%1763=748%:% -%:%1764=749%:% -%:%1765=749%:% -%:%1770=749%:% -%:%1773=750%:% -%:%1774=751%:% -%:%1775=751%:% -%:%1776=752%:% -%:%1779=753%:% -%:%1783=753%:% -%:%1784=753%:% -%:%1785=754%:% -%:%1786=754%:% -%:%1787=755%:% -%:%1788=755%:% -%:%1789=756%:% -%:%1795=756%:% -%:%1798=757%:% -%:%1799=758%:% -%:%1800=759%:% -%:%1801=760%:% -%:%1802=761%:% -%:%1803=762%:% -%:%1804=762%:% -%:%1805=763%:% -%:%1806=764%:% -%:%1807=765%:% -%:%1808=766%:% -%:%1809=767%:% -%:%1810=768%:% -%:%1811=769%:% -%:%1812=770%:% -%:%1813=770%:% -%:%1814=771%:% -%:%1817=772%:% -%:%1821=772%:% -%:%1822=772%:% -%:%1823=773%:% -%:%1824=773%:% -%:%1825=774%:% -%:%1831=774%:% -%:%1834=775%:% -%:%1835=776%:% -%:%1836=776%:% -%:%1837=777%:% -%:%1840=778%:% -%:%1844=778%:% -%:%1845=778%:% -%:%1846=779%:% -%:%1847=779%:% -%:%1848=780%:% -%:%1849=780%:% -%:%1854=780%:% -%:%1857=781%:% -%:%1858=782%:% -%:%1859=782%:% -%:%1860=783%:% -%:%1863=784%:% -%:%1867=784%:% -%:%1868=784%:% -%:%1869=785%:% -%:%1875=785%:% -%:%1878=786%:% -%:%1879=787%:% -%:%1880=788%:% -%:%1881=789%:% -%:%1882=790%:% -%:%1883=791%:% -%:%1884=792%:% -%:%1885=793%:% -%:%1886=794%:% -%:%1887=794%:% -%:%1888=795%:% -%:%1889=796%:% -%:%1892=797%:% -%:%1896=797%:% -%:%1897=797%:% -%:%1898=798%:% -%:%1899=798%:% -%:%1900=799%:% -%:%1901=799%:% -%:%1902=800%:% -%:%1903=800%:% -%:%1904=801%:% -%:%1905=801%:% -%:%1906=802%:% -%:%1912=802%:% -%:%1915=803%:% -%:%1916=804%:% -%:%1917=805%:% -%:%1918=806%:% -%:%1919=806%:% -%:%1920=807%:% -%:%1923=808%:% -%:%1927=808%:% -%:%1928=808%:% -%:%1929=808%:% -%:%1934=808%:% -%:%1937=809%:% -%:%1938=810%:% -%:%1939=811%:% -%:%1940=812%:% -%:%1941=813%:% -%:%1942=814%:% -%:%1943=814%:% -%:%1944=815%:% -%:%1947=816%:% -%:%1951=816%:% -%:%1952=816%:% -%:%1953=817%:% -%:%1954=817%:% -%:%1955=818%:% -%:%1956=818%:% -%:%1957=819%:% -%:%1958=819%:% -%:%1959=820%:% -%:%1960=820%:% -%:%1961=821%:% -%:%1962=821%:% -%:%1963=822%:% -%:%1964=822%:% -%:%1965=823%:% -%:%1966=823%:% -%:%1967=824%:% -%:%1973=824%:% -%:%1976=825%:% -%:%1977=826%:% -%:%1978=826%:% -%:%1979=827%:% -%:%1980=828%:% -%:%1981=829%:% -%:%1982=830%:% -%:%1983=831%:% -%:%1984=832%:% -%:%1985=832%:% -%:%1986=833%:% -%:%1987=834%:% -%:%1990=835%:% -%:%1994=835%:% -%:%1995=835%:% -%:%1996=836%:% -%:%1997=836%:% -%:%1998=837%:% -%:%1999=837%:% -%:%2000=838%:% -%:%2006=838%:% -%:%2009=839%:% -%:%2010=840%:% -%:%2011=841%:% -%:%2012=842%:% -%:%2013=842%:% -%:%2014=843%:% -%:%2015=844%:% -%:%2018=845%:% -%:%2022=845%:% -%:%2023=845%:% -%:%2024=846%:% -%:%2025=846%:% -%:%2026=847%:% -%:%2027=847%:% -%:%2028=848%:% -%:%2029=848%:% -%:%2030=849%:% -%:%2031=849%:% -%:%2032=850%:% -%:%2033=850%:% -%:%2034=851%:% -%:%2035=851%:% -%:%2036=852%:% -%:%2037=852%:% -%:%2038=853%:% -%:%2039=853%:% -%:%2040=854%:% -%:%2041=854%:% -%:%2042=855%:% -%:%2043=855%:% -%:%2044=856%:% -%:%2045=856%:% -%:%2046=857%:% -%:%2047=857%:% -%:%2048=858%:% -%:%2054=858%:% -%:%2057=859%:% -%:%2058=860%:% -%:%2059=860%:% -%:%2060=861%:% -%:%2061=862%:% -%:%2064=863%:% -%:%2068=863%:% -%:%2069=863%:% -%:%2070=864%:% -%:%2071=864%:% -%:%2072=865%:% -%:%2073=865%:% -%:%2074=866%:% -%:%2075=866%:% -%:%2080=866%:% -%:%2083=867%:% -%:%2084=868%:% -%:%2085=869%:% -%:%2086=869%:% -%:%2087=870%:% -%:%2088=871%:% -%:%2091=872%:% -%:%2095=872%:% -%:%2096=872%:% -%:%2097=873%:% -%:%2098=873%:% -%:%2099=874%:% -%:%2100=874%:% -%:%2101=875%:% -%:%2102=875%:% -%:%2103=876%:% -%:%2104=876%:% -%:%2105=877%:% -%:%2106=877%:% -%:%2107=878%:% -%:%2108=878%:% -%:%2109=879%:% -%:%2110=879%:% -%:%2111=880%:% -%:%2112=880%:% -%:%2113=881%:% -%:%2114=881%:% -%:%2115=882%:% -%:%2116=882%:% -%:%2117=883%:% -%:%2118=883%:% -%:%2119=884%:% -%:%2120=884%:% -%:%2121=885%:% -%:%2122=885%:% -%:%2123=886%:% -%:%2124=886%:% -%:%2125=887%:% -%:%2126=887%:% -%:%2127=888%:% -%:%2128=888%:% -%:%2129=889%:% -%:%2130=889%:% -%:%2131=890%:% -%:%2132=890%:% -%:%2133=891%:% -%:%2134=891%:% -%:%2135=892%:% -%:%2136=892%:% -%:%2137=893%:% -%:%2138=893%:% -%:%2139=894%:% -%:%2140=894%:% -%:%2141=895%:% -%:%2142=895%:% -%:%2143=896%:% -%:%2144=896%:% -%:%2145=897%:% -%:%2146=897%:% -%:%2147=898%:% -%:%2148=898%:% -%:%2149=899%:% -%:%2150=899%:% -%:%2151=900%:% -%:%2152=900%:% -%:%2153=901%:% -%:%2154=901%:% -%:%2155=902%:% -%:%2156=902%:% -%:%2157=903%:% -%:%2158=903%:% -%:%2159=904%:% -%:%2160=904%:% -%:%2161=905%:% -%:%2162=905%:% -%:%2163=906%:% -%:%2164=906%:% -%:%2165=907%:% -%:%2166=907%:% -%:%2167=908%:% -%:%2168=908%:% -%:%2169=909%:% -%:%2170=909%:% -%:%2171=910%:% -%:%2172=910%:% -%:%2173=911%:% -%:%2174=911%:% -%:%2175=912%:% -%:%2176=912%:% -%:%2177=913%:% -%:%2178=913%:% -%:%2179=914%:% -%:%2180=914%:% -%:%2181=915%:% -%:%2182=915%:% -%:%2183=916%:% -%:%2184=916%:% -%:%2185=917%:% -%:%2186=917%:% -%:%2187=918%:% -%:%2188=918%:% -%:%2189=919%:% -%:%2190=919%:% -%:%2191=920%:% -%:%2192=920%:% -%:%2193=921%:% -%:%2194=921%:% -%:%2195=922%:% -%:%2196=922%:% -%:%2197=923%:% -%:%2198=923%:% -%:%2199=924%:% -%:%2200=924%:% -%:%2201=925%:% -%:%2202=925%:% -%:%2203=926%:% -%:%2204=926%:% -%:%2205=927%:% -%:%2206=927%:% -%:%2207=928%:% -%:%2208=928%:% -%:%2209=929%:% -%:%2210=929%:% -%:%2211=930%:% -%:%2212=930%:% -%:%2213=931%:% -%:%2214=931%:% -%:%2215=931%:% -%:%2220=931%:% -%:%2223=932%:% -%:%2224=933%:% -%:%2225=934%:% -%:%2226=935%:% -%:%2227=936%:% -%:%2228=936%:% -%:%2229=937%:% -%:%2232=938%:% -%:%2236=938%:% -%:%2237=938%:% -%:%2238=939%:% -%:%2239=939%:% -%:%2240=940%:% -%:%2246=940%:% -%:%2249=941%:% -%:%2250=942%:% -%:%2251=943%:% -%:%2252=943%:% -%:%2253=944%:% -%:%2254=945%:% -%:%2255=946%:% -%:%2256=947%:% -%:%2257=948%:% -%:%2258=949%:% -%:%2259=950%:% -%:%2261=952%:% -%:%2262=953%:% -%:%2263=954%:% -%:%2264=955%:% -%:%2265=956%:% -%:%2266=957%:% -%:%2267=958%:% -%:%2268=959%:% -%:%2269=960%:% -%:%2270=961%:% -%:%2271=962%:% -%:%2272=963%:% -%:%2273=964%:% -%:%2274=965%:% -%:%2275=966%:% -%:%2276=967%:% -%:%2277=967%:% -%:%2278=968%:% -%:%2279=969%:% -%:%2282=970%:% -%:%2286=970%:% -%:%2287=970%:% -%:%2288=971%:% -%:%2294=971%:% -%:%2297=972%:% -%:%2298=973%:% -%:%2299=974%:% -%:%2300=975%:% -%:%2301=975%:% -%:%2302=976%:% -%:%2305=977%:% -%:%2309=977%:% -%:%2310=977%:% -%:%2311=978%:% -%:%2312=978%:% -%:%2313=979%:% -%:%2314=979%:% -%:%2315=980%:% -%:%2316=980%:% -%:%2317=981%:% -%:%2318=981%:% -%:%2319=982%:% -%:%2325=982%:% -%:%2328=983%:% -%:%2329=984%:% -%:%2330=985%:% -%:%2331=986%:% -%:%2332=986%:% -%:%2333=987%:% -%:%2334=988%:% -%:%2337=989%:% -%:%2341=989%:% -%:%2342=989%:% -%:%2343=990%:% -%:%2344=990%:% -%:%2345=991%:% -%:%2351=991%:% -%:%2354=992%:% -%:%2355=993%:% -%:%2356=994%:% -%:%2357=995%:% -%:%2358=996%:% -%:%2359=997%:% -%:%2360=998%:% -%:%2361=999%:% -%:%2362=1000%:% -%:%2363=1000%:% -%:%2364=1001%:% -%:%2365=1002%:% -%:%2366=1003%:% -%:%2367=1004%:% -%:%2368=1005%:% -%:%2369=1006%:% -%:%2370=1007%:% -%:%2371=1008%:% -%:%2372=1009%:% -%:%2373=1010%:% -%:%2374=1011%:% -%:%2375=1012%:% -%:%2376=1014%:% -%:%2377=1015%:% -%:%2378=1016%:% -%:%2379=1017%:% -%:%2380=1018%:% -%:%2381=1019%:% -%:%2382=1020%:% -%:%2383=1021%:% -%:%2384=1021%:% -%:%2385=1022%:% -%:%2386=1023%:% -%:%2387=1024%:% -%:%2388=1025%:% -%:%2389=1026%:% -%:%2390=1026%:% -%:%2391=1027%:% -%:%2392=1028%:% -%:%2393=1029%:% -%:%2394=1032%:% -%:%2395=1033%:% -%:%2396=1034%:% -%:%2397=1035%:% -%:%2398=1036%:% -%:%2399=1036%:% -%:%2402=1037%:% -%:%2406=1037%:% -%:%2407=1037%:% -%:%2408=1037%:% -%:%2413=1037%:% -%:%2416=1038%:% -%:%2417=1039%:% -%:%2418=1039%:% -%:%2419=1040%:% -%:%2420=1041%:% -%:%2423=1042%:% -%:%2427=1042%:% -%:%2428=1042%:% -%:%2429=1043%:% -%:%2430=1043%:% -%:%2431=1044%:% -%:%2432=1044%:% -%:%2433=1045%:% -%:%2439=1045%:% -%:%2442=1046%:% -%:%2443=1047%:% -%:%2444=1048%:% -%:%2445=1048%:% -%:%2448=1049%:% -%:%2452=1049%:% -%:%2453=1049%:% -%:%2458=1049%:% -%:%2461=1050%:% -%:%2462=1051%:% -%:%2463=1052%:% -%:%2464=1052%:% -%:%2467=1053%:% -%:%2471=1053%:% -%:%2472=1053%:% -%:%2473=1054%:% -%:%2474=1054%:% -%:%2475=1055%:% -%:%2476=1055%:% -%:%2481=1055%:% -%:%2484=1056%:% -%:%2485=1057%:% -%:%2486=1058%:% -%:%2487=1058%:% -%:%2490=1059%:% -%:%2494=1059%:% -%:%2495=1059%:% -%:%2496=1060%:% -%:%2497=1060%:% -%:%2498=1061%:% -%:%2499=1061%:% -%:%2500=1061%:% -%:%2505=1061%:% -%:%2508=1062%:% -%:%2509=1063%:% -%:%2510=1064%:% -%:%2511=1065%:% -%:%2512=1065%:% -%:%2515=1066%:% -%:%2516=1067%:% -%:%2520=1067%:% -%:%2521=1067%:% -%:%2522=1068%:% -%:%2523=1068%:% -%:%2524=1069%:% -%:%2525=1069%:% -%:%2526=1070%:% -%:%2527=1070%:% -%:%2528=1071%:% -%:%2529=1071%:% -%:%2530=1072%:% -%:%2531=1072%:% -%:%2532=1073%:% -%:%2533=1073%:% -%:%2534=1074%:% -%:%2535=1074%:% -%:%2536=1075%:% -%:%2537=1075%:% -%:%2538=1076%:% -%:%2539=1076%:% -%:%2540=1077%:% -%:%2546=1077%:% -%:%2549=1078%:% -%:%2550=1079%:% -%:%2551=1080%:% -%:%2552=1080%:% -%:%2555=1081%:% -%:%2559=1081%:% -%:%2560=1081%:% -%:%2565=1081%:% -%:%2568=1082%:% -%:%2569=1083%:% -%:%2570=1084%:% -%:%2571=1084%:% -%:%2574=1085%:% -%:%2578=1085%:% -%:%2579=1085%:% -%:%2580=1086%:% -%:%2581=1086%:% -%:%2582=1087%:% -%:%2583=1087%:% -%:%2584=1088%:% -%:%2585=1088%:% -%:%2586=1089%:% -%:%2587=1089%:% -%:%2588=1090%:% -%:%2589=1090%:% -%:%2590=1091%:% -%:%2591=1091%:% -%:%2592=1092%:% -%:%2593=1092%:% -%:%2594=1093%:% -%:%2595=1093%:% -%:%2596=1094%:% -%:%2597=1094%:% -%:%2598=1095%:% -%:%2599=1095%:% -%:%2604=1095%:% -%:%2607=1096%:% -%:%2608=1097%:% -%:%2609=1097%:% -%:%2612=1098%:% -%:%2616=1098%:% -%:%2617=1098%:% -%:%2618=1099%:% -%:%2619=1099%:% -%:%2620=1100%:% -%:%2621=1100%:% -%:%2622=1100%:% -%:%2627=1100%:% -%:%2630=1101%:% -%:%2631=1102%:% -%:%2632=1103%:% -%:%2633=1103%:% -%:%2636=1104%:% -%:%2640=1104%:% -%:%2641=1104%:% -%:%2642=1105%:% -%:%2643=1105%:% -%:%2644=1106%:% -%:%2645=1107%:% -%:%2646=1107%:% -%:%2651=1107%:% -%:%2654=1108%:% -%:%2655=1109%:% -%:%2656=1110%:% -%:%2657=1111%:% -%:%2658=1111%:% -%:%2661=1112%:% -%:%2665=1112%:% -%:%2666=1112%:% -%:%2667=1113%:% -%:%2668=1113%:% -%:%2669=1114%:% -%:%2670=1114%:% -%:%2675=1114%:% -%:%2678=1115%:% -%:%2679=1116%:% -%:%2680=1116%:% -%:%2683=1117%:% -%:%2684=1118%:% -%:%2688=1118%:% -%:%2689=1118%:% -%:%2690=1119%:% -%:%2691=1119%:% -%:%2692=1120%:% -%:%2693=1120%:% -%:%2694=1121%:% -%:%2695=1121%:% -%:%2700=1121%:% -%:%2703=1122%:% -%:%2704=1123%:% -%:%2705=1124%:% -%:%2706=1124%:% -%:%2709=1125%:% -%:%2713=1125%:% -%:%2714=1125%:% -%:%2715=1126%:% -%:%2716=1126%:% -%:%2717=1127%:% -%:%2718=1127%:% -%:%2719=1128%:% -%:%2720=1128%:% -%:%2721=1129%:% -%:%2722=1129%:% -%:%2723=1130%:% -%:%2724=1130%:% -%:%2725=1131%:% -%:%2726=1131%:% -%:%2727=1131%:% -%:%2728=1132%:% -%:%2729=1132%:% -%:%2730=1133%:% -%:%2731=1133%:% -%:%2732=1134%:% -%:%2733=1134%:% -%:%2734=1135%:% -%:%2740=1135%:% -%:%2743=1136%:% -%:%2744=1137%:% -%:%2745=1137%:% -%:%2746=1138%:% -%:%2747=1139%:% -%:%2748=1140%:% -%:%2749=1141%:% -%:%2750=1142%:% -%:%2751=1143%:% -%:%2752=1144%:% -%:%2753=1145%:% -%:%2754=1146%:% -%:%2755=1147%:% -%:%2756=1148%:% -%:%2757=1148%:% -%:%2760=1149%:% -%:%2764=1149%:% -%:%2765=1149%:% -%:%2770=1149%:% -%:%2773=1150%:% -%:%2774=1151%:% -%:%2775=1151%:% -%:%2778=1152%:% -%:%2782=1152%:% -%:%2783=1152%:% -%:%2784=1153%:% -%:%2785=1153%:% -%:%2786=1154%:% -%:%2787=1154%:% -%:%2788=1155%:% -%:%2789=1156%:% -%:%2790=1156%:% -%:%2791=1157%:% -%:%2792=1158%:% -%:%2793=1159%:% -%:%2794=1159%:% -%:%2795=1159%:% -%:%2796=1160%:% -%:%2797=1160%:% -%:%2798=1161%:% -%:%2799=1161%:% -%:%2800=1162%:% -%:%2801=1163%:% -%:%2802=1163%:% -%:%2803=1164%:% -%:%2804=1164%:% -%:%2805=1165%:% -%:%2806=1165%:% -%:%2807=1166%:% -%:%2808=1166%:% -%:%2809=1167%:% -%:%2810=1167%:% -%:%2811=1168%:% -%:%2812=1169%:% -%:%2813=1169%:% -%:%2814=1170%:% -%:%2815=1171%:% -%:%2816=1171%:% -%:%2817=1171%:% -%:%2818=1172%:% -%:%2819=1172%:% -%:%2820=1173%:% -%:%2821=1174%:% -%:%2822=1174%:% -%:%2823=1175%:% -%:%2824=1176%:% -%:%2825=1176%:% -%:%2830=1176%:% -%:%2833=1177%:% -%:%2834=1178%:% -%:%2835=1179%:% -%:%2836=1179%:% -%:%2839=1180%:% -%:%2843=1180%:% -%:%2844=1180%:% -%:%2849=1180%:% -%:%2852=1181%:% -%:%2853=1182%:% -%:%2854=1183%:% -%:%2855=1183%:% -%:%2858=1184%:% -%:%2862=1184%:% -%:%2863=1184%:% -%:%2864=1185%:% -%:%2865=1185%:% -%:%2866=1186%:% -%:%2867=1186%:% -%:%2868=1187%:% -%:%2869=1187%:% -%:%2870=1188%:% -%:%2871=1188%:% -%:%2872=1189%:% -%:%2873=1189%:% -%:%2874=1190%:% -%:%2875=1190%:% -%:%2876=1190%:% -%:%2877=1191%:% -%:%2878=1191%:% -%:%2879=1192%:% -%:%2880=1192%:% -%:%2881=1193%:% -%:%2882=1193%:% -%:%2883=1194%:% -%:%2884=1194%:% -%:%2885=1195%:% -%:%2886=1195%:% -%:%2887=1195%:% -%:%2888=1196%:% -%:%2889=1196%:% -%:%2890=1197%:% -%:%2891=1197%:% -%:%2892=1198%:% -%:%2893=1198%:% -%:%2894=1199%:% -%:%2895=1199%:% -%:%2896=1200%:% -%:%2897=1200%:% -%:%2898=1201%:% -%:%2904=1201%:% -%:%2907=1202%:% -%:%2908=1203%:% -%:%2909=1203%:% -%:%2912=1204%:% -%:%2916=1204%:% -%:%2917=1204%:% -%:%2918=1205%:% -%:%2919=1205%:% -%:%2920=1206%:% -%:%2921=1206%:% -%:%2922=1207%:% -%:%2923=1207%:% -%:%2924=1208%:% -%:%2925=1209%:% -%:%2926=1210%:% -%:%2927=1211%:% -%:%2928=1211%:% -%:%2929=1212%:% -%:%2930=1212%:% -%:%2931=1213%:% -%:%2932=1213%:% -%:%2933=1214%:% -%:%2934=1214%:% -%:%2935=1215%:% -%:%2936=1216%:% -%:%2937=1216%:% -%:%2938=1217%:% -%:%2939=1218%:% -%:%2940=1218%:% -%:%2941=1219%:% -%:%2942=1220%:% -%:%2943=1220%:% -%:%2944=1221%:% -%:%2945=1221%:% -%:%2946=1222%:% -%:%2947=1222%:% -%:%2948=1223%:% -%:%2949=1223%:% -%:%2950=1224%:% -%:%2951=1224%:% -%:%2956=1224%:% -%:%2959=1225%:% -%:%2960=1226%:% -%:%2961=1226%:% -%:%2962=1227%:% -%:%2965=1228%:% -%:%2969=1228%:% -%:%2970=1228%:% -%:%2971=1229%:% -%:%2972=1229%:% -%:%2973=1230%:% -%:%2974=1230%:% -%:%2975=1230%:% -%:%2976=1231%:% -%:%2977=1231%:% -%:%2978=1231%:% -%:%2983=1231%:% -%:%2986=1232%:% -%:%2987=1233%:% -%:%2988=1234%:% -%:%2989=1234%:% -%:%2992=1235%:% -%:%2996=1235%:% -%:%2997=1235%:% -%:%2998=1236%:% -%:%3004=1236%:% -%:%3007=1237%:% -%:%3008=1238%:% -%:%3009=1238%:% -%:%3010=1239%:% -%:%3011=1240%:% -%:%3012=1241%:% -%:%3014=1243%:% -%:%3015=1244%:% -%:%3016=1245%:% -%:%3017=1245%:% -%:%3020=1246%:% -%:%3024=1246%:% -%:%3025=1246%:% -%:%3026=1247%:% -%:%3032=1247%:% -%:%3035=1248%:% -%:%3036=1249%:% -%:%3037=1249%:% -%:%3040=1250%:% -%:%3044=1250%:% -%:%3045=1250%:% -%:%3046=1250%:% -%:%3051=1250%:% -%:%3054=1251%:% -%:%3055=1252%:% -%:%3056=1252%:% -%:%3059=1253%:% -%:%3063=1253%:% -%:%3064=1253%:% -%:%3065=1254%:% -%:%3066=1254%:% -%:%3071=1254%:% -%:%3074=1255%:% -%:%3075=1256%:% -%:%3076=1256%:% -%:%3079=1257%:% -%:%3083=1257%:% -%:%3084=1257%:% -%:%3085=1258%:% -%:%3086=1258%:% -%:%3087=1259%:% -%:%3088=1259%:% -%:%3089=1260%:% -%:%3090=1260%:% -%:%3091=1261%:% -%:%3092=1261%:% -%:%3093=1262%:% -%:%3094=1262%:% -%:%3095=1263%:% -%:%3096=1263%:% -%:%3097=1264%:% -%:%3098=1264%:% -%:%3099=1265%:% -%:%3100=1265%:% -%:%3101=1266%:% -%:%3102=1266%:% -%:%3103=1267%:% -%:%3104=1267%:% -%:%3105=1268%:% -%:%3106=1268%:% -%:%3117=1279%:% -%:%3118=1280%:% -%:%3119=1280%:% -%:%3120=1281%:% -%:%3121=1281%:% -%:%3122=1281%:% -%:%3123=1282%:% -%:%3124=1282%:% -%:%3125=1282%:% -%:%3126=1283%:% -%:%3127=1283%:% -%:%3128=1284%:% -%:%3129=1284%:% -%:%3130=1285%:% -%:%3131=1286%:% -%:%3132=1286%:% -%:%3133=1287%:% -%:%3134=1287%:% -%:%3135=1288%:% -%:%3136=1289%:% -%:%3137=1289%:% -%:%3138=1290%:% -%:%3139=1290%:% -%:%3140=1291%:% -%:%3141=1292%:% -%:%3142=1292%:% -%:%3143=1293%:% -%:%3144=1293%:% -%:%3145=1294%:% -%:%3146=1294%:% -%:%3151=1294%:% -%:%3154=1295%:% -%:%3155=1296%:% -%:%3156=1297%:% -%:%3157=1298%:% -%:%3158=1298%:% -%:%3161=1299%:% -%:%3165=1299%:% -%:%3166=1299%:% -%:%3167=1300%:% -%:%3168=1300%:% -%:%3169=1301%:% -%:%3170=1301%:% -%:%3171=1302%:% -%:%3172=1302%:% -%:%3173=1303%:% -%:%3174=1303%:% -%:%3179=1303%:% -%:%3182=1304%:% -%:%3183=1305%:% -%:%3184=1306%:% -%:%3185=1307%:% -%:%3186=1308%:% -%:%3187=1309%:% -%:%3188=1310%:% -%:%3189=1310%:% -%:%3192=1311%:% -%:%3196=1311%:% -%:%3197=1311%:% -%:%3198=1312%:% -%:%3199=1312%:% -%:%3200=1313%:% -%:%3201=1313%:% -%:%3202=1314%:% -%:%3203=1314%:% -%:%3204=1315%:% -%:%3205=1315%:% -%:%3206=1315%:% -%:%3207=1316%:% -%:%3208=1316%:% -%:%3209=1317%:% -%:%3210=1317%:% -%:%3211=1318%:% -%:%3212=1318%:% -%:%3213=1319%:% -%:%3214=1319%:% -%:%3215=1320%:% -%:%3216=1320%:% -%:%3217=1321%:% -%:%3218=1321%:% -%:%3219=1322%:% -%:%3220=1322%:% -%:%3221=1323%:% -%:%3222=1323%:% -%:%3223=1323%:% -%:%3224=1324%:% -%:%3225=1324%:% -%:%3226=1325%:% -%:%3227=1325%:% -%:%3228=1326%:% -%:%3229=1326%:% -%:%3230=1327%:% -%:%3231=1328%:% -%:%3232=1328%:% -%:%3233=1329%:% -%:%3234=1330%:% -%:%3235=1331%:% -%:%3236=1331%:% -%:%3237=1332%:% -%:%3238=1332%:% -%:%3239=1333%:% -%:%3240=1333%:% -%:%3241=1334%:% -%:%3242=1334%:% -%:%3243=1335%:% -%:%3244=1336%:% -%:%3245=1337%:% -%:%3246=1337%:% -%:%3247=1338%:% -%:%3248=1339%:% -%:%3249=1339%:% -%:%3250=1340%:% -%:%3251=1341%:% -%:%3252=1341%:% -%:%3253=1342%:% -%:%3254=1343%:% -%:%3255=1343%:% -%:%3256=1343%:% -%:%3257=1344%:% -%:%3258=1345%:% -%:%3259=1345%:% -%:%3260=1345%:% -%:%3265=1345%:% -%:%3268=1346%:% -%:%3269=1347%:% -%:%3270=1348%:% -%:%3271=1348%:% -%:%3274=1349%:% -%:%3278=1349%:% -%:%3279=1349%:% -%:%3280=1350%:% -%:%3281=1350%:% -%:%3282=1351%:% -%:%3283=1351%:% -%:%3284=1352%:% -%:%3285=1352%:% -%:%3286=1353%:% -%:%3287=1353%:% -%:%3288=1354%:% -%:%3289=1354%:% -%:%3290=1355%:% -%:%3291=1355%:% -%:%3292=1356%:% -%:%3293=1356%:% -%:%3294=1357%:% -%:%3295=1357%:% -%:%3296=1358%:% -%:%3297=1358%:% -%:%3298=1359%:% -%:%3299=1359%:% -%:%3300=1360%:% -%:%3301=1361%:% -%:%3302=1361%:% -%:%3303=1362%:% -%:%3304=1363%:% -%:%3305=1364%:% -%:%3306=1364%:% -%:%3311=1364%:% -%:%3314=1365%:% -%:%3315=1366%:% -%:%3316=1366%:% -%:%3319=1367%:% -%:%3323=1367%:% -%:%3324=1367%:% -%:%3325=1368%:% -%:%3326=1368%:% -%:%3327=1369%:% -%:%3328=1369%:% -%:%3329=1370%:% -%:%3335=1370%:% -%:%3338=1371%:% -%:%3339=1372%:% -%:%3340=1373%:% -%:%3341=1373%:% -%:%3344=1374%:% -%:%3348=1374%:% -%:%3349=1374%:% -%:%3350=1375%:% -%:%3351=1375%:% -%:%3352=1376%:% -%:%3353=1376%:% -%:%3354=1377%:% -%:%3355=1377%:% -%:%3356=1378%:% -%:%3357=1378%:% -%:%3358=1379%:% -%:%3364=1379%:% -%:%3367=1380%:% -%:%3368=1381%:% -%:%3369=1381%:% -%:%3370=1382%:% -%:%3373=1383%:% -%:%3377=1383%:% -%:%3378=1383%:% -%:%3379=1384%:% -%:%3380=1384%:% -%:%3381=1385%:% -%:%3387=1385%:% -%:%3390=1386%:% -%:%3391=1387%:% -%:%3392=1388%:% -%:%3393=1389%:% -%:%3394=1389%:% -%:%3395=1390%:% -%:%3398=1391%:% -%:%3402=1391%:% -%:%3403=1391%:% -%:%3404=1391%:% -%:%3409=1391%:% -%:%3412=1392%:% -%:%3413=1393%:% -%:%3414=1393%:% -%:%3417=1394%:% -%:%3421=1394%:% -%:%3422=1394%:% -%:%3423=1395%:% -%:%3424=1396%:% -%:%3425=1396%:% -%:%3426=1396%:% -%:%3427=1397%:% -%:%3428=1397%:% -%:%3429=1398%:% -%:%3430=1399%:% -%:%3431=1399%:% -%:%3432=1400%:% -%:%3433=1400%:% -%:%3434=1401%:% -%:%3435=1402%:% -%:%3436=1402%:% -%:%3437=1402%:% -%:%3438=1403%:% -%:%3439=1403%:% -%:%3440=1404%:% -%:%3441=1405%:% -%:%3442=1405%:% -%:%3443=1406%:% -%:%3444=1407%:% -%:%3445=1407%:% -%:%3446=1407%:% -%:%3451=1407%:% -%:%3454=1408%:% -%:%3455=1409%:% -%:%3456=1410%:% -%:%3457=1411%:% -%:%3458=1411%:% -%:%3459=1412%:% -%:%3462=1413%:% -%:%3466=1413%:% -%:%3467=1413%:% -%:%3468=1413%:% -%:%3473=1413%:% -%:%3476=1414%:% -%:%3477=1415%:% -%:%3478=1415%:% -%:%3481=1416%:% -%:%3485=1416%:% -%:%3486=1416%:% -%:%3487=1417%:% -%:%3488=1417%:% -%:%3489=1418%:% -%:%3490=1418%:% -%:%3491=1419%:% -%:%3492=1419%:% -%:%3493=1420%:% -%:%3494=1420%:% -%:%3495=1421%:% -%:%3496=1421%:% -%:%3497=1422%:% -%:%3498=1422%:% -%:%3499=1423%:% -%:%3500=1423%:% -%:%3501=1424%:% -%:%3502=1424%:% -%:%3503=1425%:% -%:%3504=1425%:% -%:%3505=1426%:% -%:%3506=1426%:% -%:%3507=1427%:% -%:%3508=1427%:% -%:%3509=1428%:% -%:%3510=1428%:% -%:%3511=1429%:% -%:%3512=1429%:% -%:%3513=1430%:% -%:%3514=1430%:% -%:%3515=1431%:% -%:%3516=1431%:% -%:%3517=1432%:% -%:%3518=1432%:% -%:%3519=1433%:% -%:%3520=1434%:% -%:%3521=1434%:% -%:%3522=1435%:% -%:%3523=1436%:% -%:%3524=1436%:% -%:%3529=1436%:% -%:%3532=1437%:% -%:%3533=1438%:% -%:%3534=1439%:% -%:%3535=1440%:% -%:%3536=1441%:% -%:%3537=1441%:% -%:%3538=1442%:% -%:%3541=1443%:% -%:%3545=1443%:% -%:%3546=1443%:% -%:%3547=1444%:% -%:%3548=1445%:% -%:%3549=1445%:% -%:%3550=1446%:% -%:%3551=1446%:% -%:%3556=1446%:% -%:%3559=1447%:% -%:%3560=1448%:% -%:%3561=1448%:% -%:%3562=1449%:% -%:%3565=1450%:% -%:%3566=1451%:% -%:%3570=1451%:% -%:%3571=1451%:% -%:%3576=1451%:% -%:%3579=1452%:% -%:%3580=1453%:% -%:%3581=1454%:% -%:%3582=1454%:% -%:%3583=1455%:% -%:%3586=1456%:% -%:%3590=1456%:% -%:%3591=1456%:% -%:%3592=1457%:% -%:%3593=1457%:% -%:%3594=1458%:% -%:%3595=1458%:% -%:%3596=1459%:% -%:%3597=1459%:% -%:%3598=1460%:% -%:%3599=1461%:% -%:%3600=1461%:% -%:%3601=1462%:% -%:%3602=1463%:% -%:%3603=1463%:% -%:%3604=1464%:% -%:%3605=1465%:% -%:%3606=1465%:% -%:%3607=1465%:% -%:%3612=1465%:% -%:%3615=1466%:% -%:%3616=1467%:% -%:%3617=1468%:% -%:%3618=1468%:% -%:%3619=1469%:% -%:%3622=1470%:% -%:%3626=1470%:% -%:%3627=1470%:% -%:%3628=1471%:% -%:%3629=1472%:% -%:%3630=1472%:% -%:%3631=1472%:% -%:%3632=1473%:% -%:%3633=1473%:% -%:%3634=1474%:% -%:%3635=1474%:% -%:%3636=1475%:% -%:%3637=1476%:% -%:%3638=1477%:% -%:%3639=1477%:% -%:%3640=1477%:% -%:%3641=1478%:% -%:%3642=1479%:% -%:%3643=1479%:% -%:%3644=1480%:% -%:%3645=1480%:% -%:%3646=1481%:% -%:%3647=1482%:% -%:%3648=1483%:% -%:%3649=1483%:% -%:%3650=1484%:% -%:%3651=1484%:% -%:%3652=1485%:% -%:%3653=1485%:% -%:%3654=1486%:% -%:%3655=1487%:% -%:%3656=1487%:% -%:%3657=1488%:% -%:%3658=1489%:% -%:%3659=1489%:% -%:%3664=1489%:% -%:%3667=1490%:% -%:%3668=1491%:% -%:%3669=1492%:% -%:%3670=1493%:% -%:%3671=1493%:% -%:%3674=1494%:% -%:%3675=1495%:% -%:%3679=1495%:% -%:%3680=1495%:% -%:%3681=1496%:% -%:%3682=1496%:% -%:%3683=1497%:% -%:%3684=1497%:% -%:%3685=1498%:% -%:%3686=1498%:% -%:%3687=1499%:% -%:%3688=1499%:% -%:%3689=1499%:% -%:%3690=1500%:% -%:%3691=1500%:% -%:%3692=1501%:% -%:%3693=1501%:% -%:%3694=1502%:% -%:%3695=1502%:% -%:%3696=1503%:% -%:%3697=1503%:% -%:%3698=1504%:% -%:%3699=1504%:% -%:%3700=1505%:% -%:%3701=1505%:% -%:%3702=1505%:% -%:%3703=1506%:% -%:%3704=1506%:% -%:%3705=1507%:% -%:%3706=1507%:% -%:%3707=1507%:% -%:%3708=1508%:% -%:%3709=1508%:% -%:%3710=1509%:% -%:%3711=1509%:% -%:%3712=1510%:% -%:%3713=1510%:% -%:%3714=1511%:% -%:%3715=1512%:% -%:%3716=1512%:% -%:%3717=1512%:% -%:%3718=1513%:% -%:%3719=1514%:% -%:%3720=1514%:% -%:%3721=1515%:% -%:%3722=1515%:% -%:%3723=1516%:% -%:%3724=1517%:% -%:%3725=1517%:% -%:%3726=1518%:% -%:%3727=1519%:% -%:%3728=1519%:% -%:%3729=1519%:% -%:%3730=1520%:% -%:%3731=1521%:% -%:%3732=1521%:% -%:%3733=1522%:% -%:%3734=1523%:% -%:%3735=1523%:% -%:%3736=1523%:% -%:%3737=1524%:% -%:%3738=1525%:% -%:%3739=1525%:% -%:%3740=1526%:% -%:%3741=1527%:% -%:%3742=1527%:% -%:%3747=1527%:% -%:%3750=1528%:% -%:%3751=1529%:% -%:%3752=1530%:% -%:%3753=1531%:% -%:%3754=1531%:% -%:%3757=1532%:% -%:%3761=1532%:% -%:%3762=1532%:% -%:%3763=1533%:% -%:%3764=1533%:% -%:%3765=1534%:% -%:%3766=1534%:% -%:%3767=1535%:% -%:%3768=1535%:% -%:%3769=1536%:% -%:%3770=1536%:% -%:%3771=1537%:% -%:%3772=1537%:% -%:%3773=1538%:% -%:%3774=1538%:% -%:%3775=1539%:% -%:%3776=1539%:% -%:%3777=1540%:% -%:%3778=1540%:% -%:%3779=1540%:% -%:%3784=1540%:% -%:%3787=1541%:% -%:%3788=1542%:% -%:%3789=1543%:% -%:%3790=1543%:% -%:%3791=1544%:% -%:%3792=1544%:% -%:%3795=1545%:% -%:%3799=1545%:% -%:%3800=1545%:% -%:%3805=1545%:% -%:%3808=1546%:% -%:%3809=1547%:% -%:%3810=1547%:% -%:%3813=1548%:% -%:%3817=1548%:% -%:%3818=1548%:% -%:%3819=1548%:% -%:%3824=1548%:% -%:%3827=1549%:% -%:%3828=1550%:% -%:%3829=1550%:% -%:%3832=1551%:% -%:%3836=1551%:% -%:%3837=1551%:% -%:%3842=1551%:% -%:%3845=1552%:% -%:%3846=1553%:% -%:%3847=1553%:% -%:%3850=1554%:% -%:%3854=1554%:% -%:%3855=1554%:% -%:%3860=1554%:% -%:%3863=1555%:% -%:%3864=1556%:% -%:%3865=1556%:% -%:%3868=1557%:% -%:%3872=1557%:% -%:%3873=1557%:% -%:%3874=1558%:% -%:%3875=1558%:% -%:%3876=1559%:% -%:%3877=1559%:% -%:%3882=1559%:% -%:%3885=1560%:% -%:%3886=1561%:% -%:%3887=1561%:% -%:%3890=1562%:% -%:%3894=1562%:% -%:%3895=1562%:% -%:%3896=1563%:% -%:%3897=1563%:% -%:%3898=1564%:% -%:%3899=1565%:% -%:%3900=1565%:% -%:%3901=1566%:% -%:%3902=1567%:% -%:%3903=1567%:% -%:%3904=1568%:% -%:%3905=1569%:% -%:%3906=1569%:% -%:%3907=1570%:% -%:%3908=1571%:% -%:%3909=1571%:% -%:%3910=1571%:% -%:%3911=1572%:% -%:%3912=1573%:% -%:%3913=1573%:% -%:%3914=1573%:% -%:%3915=1574%:% -%:%3916=1575%:% -%:%3917=1575%:% -%:%3918=1575%:% -%:%3919=1576%:% -%:%3920=1577%:% -%:%3921=1577%:% -%:%3922=1578%:% -%:%3923=1579%:% -%:%3924=1579%:% -%:%3925=1579%:% -%:%3926=1580%:% -%:%3927=1581%:% -%:%3928=1581%:% -%:%3929=1582%:% -%:%3930=1583%:% -%:%3931=1583%:% -%:%3932=1584%:% -%:%3933=1585%:% -%:%3934=1585%:% -%:%3935=1586%:% -%:%3936=1587%:% -%:%3937=1587%:% -%:%3938=1588%:% -%:%3939=1589%:% -%:%3940=1589%:% -%:%3941=1589%:% -%:%3946=1589%:% -%:%3949=1590%:% -%:%3950=1591%:% -%:%3951=1592%:% -%:%3952=1593%:% -%:%3953=1593%:% -%:%3956=1594%:% -%:%3960=1594%:% -%:%3961=1594%:% -%:%3962=1595%:% -%:%3963=1595%:% -%:%3964=1596%:% -%:%3965=1596%:% -%:%3970=1596%:% -%:%3973=1597%:% -%:%3974=1598%:% -%:%3975=1598%:% -%:%3978=1599%:% -%:%3982=1599%:% -%:%3983=1599%:% -%:%3984=1600%:% -%:%3985=1600%:% -%:%3986=1601%:% -%:%3987=1601%:% -%:%3992=1601%:% -%:%3995=1602%:% -%:%3996=1603%:% -%:%3997=1604%:% -%:%3998=1605%:% -%:%3999=1605%:% -%:%4002=1606%:% -%:%4006=1606%:% -%:%4007=1606%:% -%:%4008=1607%:% -%:%4009=1607%:% -%:%4010=1608%:% -%:%4011=1608%:% -%:%4012=1609%:% -%:%4013=1609%:% -%:%4014=1610%:% -%:%4015=1610%:% -%:%4016=1611%:% -%:%4017=1612%:% -%:%4018=1612%:% -%:%4023=1612%:% -%:%4026=1613%:% -%:%4027=1614%:% -%:%4028=1614%:% -%:%4029=1615%:% -%:%4031=1617%:% -%:%4034=1618%:% -%:%4038=1618%:% -%:%4039=1618%:% -%:%4040=1619%:% -%:%4041=1620%:% -%:%4042=1620%:% -%:%4043=1620%:% -%:%4048=1620%:% -%:%4051=1621%:% -%:%4052=1622%:% -%:%4053=1622%:% -%:%4056=1623%:% -%:%4060=1623%:% -%:%4061=1623%:% -%:%4062=1624%:% -%:%4063=1625%:% -%:%4064=1625%:% -%:%4065=1626%:% -%:%4066=1626%:% -%:%4067=1627%:% -%:%4068=1628%:% -%:%4069=1628%:% -%:%4070=1629%:% -%:%4071=1629%:% -%:%4072=1630%:% -%:%4073=1630%:% -%:%4074=1631%:% -%:%4075=1631%:% -%:%4076=1632%:% -%:%4077=1632%:% -%:%4078=1633%:% -%:%4079=1633%:% -%:%4080=1634%:% -%:%4081=1634%:% -%:%4082=1635%:% -%:%4083=1635%:% -%:%4084=1636%:% -%:%4085=1636%:% -%:%4086=1636%:% -%:%4087=1637%:% -%:%4088=1637%:% -%:%4089=1638%:% -%:%4090=1638%:% -%:%4091=1639%:% -%:%4092=1639%:% -%:%4093=1640%:% -%:%4094=1640%:% -%:%4095=1641%:% -%:%4096=1641%:% -%:%4097=1641%:% -%:%4098=1642%:% -%:%4099=1642%:% -%:%4100=1643%:% -%:%4101=1644%:% -%:%4102=1644%:% -%:%4103=1644%:% -%:%4104=1645%:% -%:%4105=1645%:% -%:%4106=1646%:% -%:%4107=1646%:% -%:%4108=1647%:% -%:%4109=1647%:% -%:%4110=1648%:% -%:%4111=1648%:% -%:%4112=1649%:% -%:%4113=1649%:% -%:%4114=1649%:% -%:%4115=1650%:% -%:%4116=1650%:% -%:%4117=1650%:% -%:%4118=1651%:% -%:%4119=1651%:% -%:%4120=1651%:% -%:%4121=1652%:% -%:%4122=1652%:% -%:%4123=1653%:% -%:%4124=1653%:% -%:%4125=1654%:% -%:%4126=1654%:% -%:%4127=1655%:% -%:%4128=1655%:% -%:%4129=1656%:% -%:%4130=1656%:% -%:%4131=1656%:% -%:%4132=1657%:% -%:%4133=1657%:% -%:%4134=1658%:% -%:%4135=1658%:% -%:%4136=1659%:% -%:%4137=1659%:% -%:%4138=1660%:% -%:%4139=1660%:% -%:%4140=1661%:% -%:%4141=1662%:% -%:%4142=1662%:% -%:%4143=1663%:% -%:%4144=1664%:% -%:%4145=1664%:% -%:%4146=1664%:% -%:%4147=1665%:% -%:%4148=1666%:% -%:%4149=1666%:% -%:%4150=1666%:% -%:%4151=1667%:% -%:%4152=1668%:% -%:%4153=1668%:% -%:%4154=1668%:% -%:%4155=1669%:% -%:%4156=1670%:% -%:%4157=1670%:% -%:%4158=1671%:% -%:%4159=1672%:% -%:%4160=1672%:% -%:%4161=1673%:% -%:%4162=1674%:% -%:%4163=1674%:% -%:%4164=1675%:% -%:%4165=1676%:% -%:%4166=1676%:% -%:%4167=1677%:% -%:%4168=1678%:% -%:%4169=1679%:% -%:%4170=1679%:% -%:%4171=1679%:% -%:%4176=1679%:% -%:%4179=1680%:% -%:%4180=1681%:% -%:%4181=1682%:% -%:%4182=1683%:% -%:%4183=1683%:% -%:%4186=1684%:% -%:%4190=1684%:% -%:%4191=1684%:% -%:%4192=1685%:% -%:%4193=1685%:% -%:%4194=1686%:% -%:%4195=1686%:% -%:%4200=1686%:% -%:%4203=1687%:% -%:%4204=1688%:% -%:%4205=1689%:% -%:%4206=1690%:% -%:%4207=1691%:% -%:%4208=1691%:% -%:%4211=1692%:% -%:%4215=1692%:% -%:%4216=1692%:% -%:%4217=1693%:% -%:%4218=1694%:% -%:%4219=1694%:% -%:%4220=1695%:% -%:%4221=1695%:% -%:%4222=1696%:% -%:%4223=1696%:% -%:%4224=1697%:% -%:%4225=1697%:% -%:%4230=1697%:% -%:%4233=1698%:% -%:%4234=1699%:% -%:%4235=1700%:% -%:%4236=1701%:% -%:%4237=1701%:% -%:%4238=1702%:% -%:%4239=1703%:% -%:%4240=1703%:% -%:%4243=1704%:% -%:%4247=1704%:% -%:%4248=1704%:% -%:%4249=1704%:% -%:%4254=1704%:% -%:%4257=1705%:% -%:%4258=1706%:% -%:%4259=1706%:% -%:%4262=1707%:% -%:%4266=1707%:% -%:%4267=1707%:% -%:%4272=1707%:% -%:%4275=1708%:% -%:%4276=1709%:% -%:%4277=1710%:% -%:%4278=1710%:% -%:%4281=1711%:% -%:%4285=1711%:% -%:%4286=1711%:% -%:%4287=1711%:% -%:%4292=1711%:% -%:%4295=1712%:% -%:%4296=1713%:% -%:%4297=1714%:% -%:%4298=1714%:% -%:%4299=1715%:% -%:%4302=1716%:% -%:%4307=1717%:% \ No newline at end of file diff -r 5499ba68188c -r f65444d29e74 thys2/Journal/root.log --- a/thys2/Journal/root.log Mon Nov 01 10:52:44 2021 +0000 +++ b/thys2/Journal/root.log Tue Nov 02 13:57:59 2021 +0000 @@ -1,4 +1,4 @@ -This is LuaTeX, Version 1.07.0 (TeX Live 2018) (format=lualatex 2019.2.7) 1 NOV 2021 09:38 +This is LuaTeX, Version 1.07.0 (TeX Live 2018) (format=lualatex 2019.2.7) 1 NOV 2021 11:19 restricted system commands enabled. **root.tex (./root.tex @@ -34,7 +34,7 @@ '. Inserting `luaotfload.rewrite_fontname' at position 4 in `luaotfload.patch_font' . -luaotfload | main : initialization completed in 0.091 seconds +luaotfload | main : initialization completed in 0.120 seconds Babel <3.18> and hyphenation patterns for 1 language(s) loaded. (./llncs.cls Document Class: llncs 2002/01/28 v2.13 @@ -1580,147 +1580,147 @@ ) (./Paper.tex -LaTeX Warning: Citation `Brzozowski1964' on page 41 undefined on input line 82. +LaTeX Warning: Citation `Brzozowski1964' on page 41 undefined on input line 78. -LaTeX Warning: Citation `Owens2008' on page 41 undefined on input line 96. +LaTeX Warning: Citation `Owens2008' on page 41 undefined on input line 92. -LaTeX Warning: Citation `Krauss2011' on page 41 undefined on input line 97. +LaTeX Warning: Citation `Krauss2011' on page 41 undefined on input line 93. -LaTeX Warning: Citation `Coquand2012' on page 41 undefined on input line 98. +LaTeX Warning: Citation `Coquand2012' on page 41 undefined on input line 94. [41] -LaTeX Warning: Citation `Frisch2004' on page 42 undefined on input line 103. +LaTeX Warning: Citation `Frisch2004' on page 42 undefined on input line 99. -LaTeX Warning: Citation `POSIX' on page 42 undefined on input line 104. +LaTeX Warning: Citation `POSIX' on page 42 undefined on input line 100. -LaTeX Warning: Citation `Kuklewicz' on page 42 undefined on input line 104. +LaTeX Warning: Citation `Kuklewicz' on page 42 undefined on input line 100. -LaTeX Warning: Citation `OkuiSuzuki2010' on page 42 undefined on input line 104. +LaTeX Warning: Citation `OkuiSuzuki2010' on page 42 undefined on input line 100. -LaTeX Warning: Citation `Sulzmann2014' on page 42 undefined on input line 104. +LaTeX Warning: Citation `Sulzmann2014' on page 42 undefined on input line 100. -LaTeX Warning: Citation `Vansummeren2006' on page 42 undefined on input line 104 +LaTeX Warning: Citation `Vansummeren2006' on page 42 undefined on input line 100 . -LaTeX Warning: Citation `POSIX' on page 42 undefined on input line 121. +LaTeX Warning: Citation `POSIX' on page 42 undefined on input line 117. [42] -LaTeX Warning: Citation `Sulzmann2014' on page 43 undefined on input line 160. +LaTeX Warning: Citation `Sulzmann2014' on page 43 undefined on input line 156. LaTeX Warning: Citation `HosoyaVouillonPierce2005' on page 43 undefined on input - line 182. + line 178. -LaTeX Warning: Citation `Sulzmann2014' on page 43 undefined on input line 204. +LaTeX Warning: Citation `Sulzmann2014' on page 43 undefined on input line 200. -LaTeX Warning: Citation `Frisch2004' on page 43 undefined on input line 208. +LaTeX Warning: Citation `Frisch2004' on page 43 undefined on input line 204. -LaTeX Warning: Citation `Sulzmann2014' on page 43 undefined on input line 213. +LaTeX Warning: Citation `Sulzmann2014' on page 43 undefined on input line 209. -LaTeX Warning: Citation `Kuklewicz' on page 43 undefined on input line 221. +LaTeX Warning: Citation `Kuklewicz' on page 43 undefined on input line 217. -LaTeX Warning: Citation `Sulzmann2014' on page 43 undefined on input line 222. +LaTeX Warning: Citation `Sulzmann2014' on page 43 undefined on input line 218. -LaTeX Warning: Citation `CrashCourse2014' on page 43 undefined on input line 223 +LaTeX Warning: Citation `CrashCourse2014' on page 43 undefined on input line 219 . [43] -LaTeX Warning: Citation `Sulzmann2014' on page 44 undefined on input line 235. +LaTeX Warning: Citation `Sulzmann2014' on page 44 undefined on input line 231. -LaTeX Warning: Citation `Vansummeren2006' on page 44 undefined on input line 237 +LaTeX Warning: Citation `Vansummeren2006' on page 44 undefined on input line 233 . -LaTeX Warning: Citation `Sulzmann2014' on page 44 undefined on input line 238. +LaTeX Warning: Citation `Sulzmann2014' on page 44 undefined on input line 234. (load luc: /Users/cstan/Library/texlive/2018/texmf-var/luatex-cache/generic/font s/otl/lmroman8-regular.luc) -LaTeX Warning: Citation `Sulzmann2014' on page 44 undefined on input line 242. +LaTeX Warning: Citation `Sulzmann2014' on page 44 undefined on input line 238. -LaTeX Warning: Citation `OkuiSuzuki2010' on page 44 undefined on input line 246. +LaTeX Warning: Citation `OkuiSuzuki2010' on page 44 undefined on input line 242. (load luc: /Users/cstan/Library/texlive/2018/texmf-var/luatex-cache/generic/font s/otl/lmroman10-bolditalic.luc) [44] LaTeX Font Warning: Font shape `U/stmry/b/n' undefined -(Font) using `U/stmry/m/n' instead on input line 325. +(Font) using `U/stmry/m/n' instead on input line 321. -LaTeX Warning: Citation `Krauss2011' on page 45 undefined on input line 330. +LaTeX Warning: Citation `Krauss2011' on page 45 undefined on input line 326. (load luc: /Users/cstan/Library/texlive/2018/texmf-var/luatex-cache/generic/font s/otl/lmroman6-regular.luc) -LaTeX Warning: Citation `Brzozowski1964' on page 45 undefined on input line 345. +LaTeX Warning: Citation `Brzozowski1964' on page 45 undefined on input line 341. -Overfull \hbox (1.4002pt too wide) in paragraph at lines 352--373 +Overfull \hbox (1.4002pt too wide) in paragraph at lines 348--369 [] [] [45] -LaTeX Warning: Citation `Sulzmann2014' on page 46 undefined on input line 408. +LaTeX Warning: Citation `Sulzmann2014' on page 46 undefined on input line 404. -LaTeX Warning: Citation `Sulzmann2014' on page 46 undefined on input line 432. +LaTeX Warning: Citation `Sulzmann2014' on page 46 undefined on input line 428. -LaTeX Warning: Citation `Frisch2004' on page 46 undefined on input line 449. +LaTeX Warning: Citation `Frisch2004' on page 46 undefined on input line 445. -LaTeX Warning: Citation `Sulzmann2014' on page 46 undefined on input line 450. +LaTeX Warning: Citation `Sulzmann2014' on page 46 undefined on input line 446. LaTeX Warning: Citation `AusafDyckhoffUrban2016' on page 46 undefined on input l -ine 482. +ine 478. [46] -LaTeX Warning: Citation `OkuiSuzuki2010' on page 47 undefined on input line 519. +LaTeX Warning: Citation `OkuiSuzuki2010' on page 47 undefined on input line 515. -LaTeX Warning: Citation `Frisch2004' on page 47 undefined on input line 519. +LaTeX Warning: Citation `Frisch2004' on page 47 undefined on input line 515. -Underfull \hbox (badness 10000) in paragraph at lines 579--580 +Underfull \hbox (badness 10000) in paragraph at lines 575--576 [] -LaTeX Warning: Citation `Sulzmann2014' on page 47 undefined on input line 590. +LaTeX Warning: Citation `Sulzmann2014' on page 47 undefined on input line 586. -LaTeX Warning: Citation `Sulzmann2014' on page 47 undefined on input line 590. +LaTeX Warning: Citation `Sulzmann2014' on page 47 undefined on input line 586. [47] -LaTeX Warning: Citation `Sulzmann2014' on page 48 undefined on input line 610. +LaTeX Warning: Citation `Sulzmann2014' on page 48 undefined on input line 606. Underfull \vbox (badness 10000) has occurred while \output is active [] @@ -1728,61 +1728,61 @@ [48] [49] -LaTeX Warning: Citation `Sulzmann2014' on page 50 undefined on input line 718. +LaTeX Warning: Citation `Sulzmann2014' on page 50 undefined on input line 714. -LaTeX Warning: Citation `Vansummeren2006' on page 50 undefined on input line 725 +LaTeX Warning: Citation `Vansummeren2006' on page 50 undefined on input line 721 . (load luc: /Users/cstan/Library/texlive/2018/texmf-var/luatex-cache/generic/font s/otl/lmroman5-regular.luc) [50] [51] [52] -LaTeX Warning: Citation `Sulzmann2014' on page 53 undefined on input line 938. +LaTeX Warning: Citation `Sulzmann2014' on page 53 undefined on input line 934. -LaTeX Warning: Citation `Sulzmann2014' on page 53 undefined on input line 940. +LaTeX Warning: Citation `Sulzmann2014' on page 53 undefined on input line 936. -LaTeX Warning: Citation `OkuiSuzuki2010' on page 53 undefined on input line 947. +LaTeX Warning: Citation `OkuiSuzuki2010' on page 53 undefined on input line 943. -LaTeX Warning: Citation `OkuiSuzukiTech' on page 53 undefined on input line 947. +LaTeX Warning: Citation `OkuiSuzukiTech' on page 53 undefined on input line 943. [53] [54] -LaTeX Warning: Citation `OkuiSuzuki2010' on page 55 undefined on input line 1069 +LaTeX Warning: Citation `OkuiSuzuki2010' on page 55 undefined on input line 1065 . -LaTeX Warning: Citation `OkuiSuzuki2010' on page 55 undefined on input line 1090 +LaTeX Warning: Citation `OkuiSuzuki2010' on page 55 undefined on input line 1086 . -LaTeX Warning: Citation `OkuiSuzuki2010' on page 55 undefined on input line 1130 +LaTeX Warning: Citation `OkuiSuzuki2010' on page 55 undefined on input line 1126 . [55] -Overfull \hbox (47.18065pt too wide) in paragraph at lines 1154--1184 +Overfull \hbox (47.18065pt too wide) in paragraph at lines 1150--1180 [] [] [] [56] [57] -LaTeX Warning: Citation `Sulzmann2014' on page 58 undefined on input line 1351. +LaTeX Warning: Citation `Sulzmann2014' on page 58 undefined on input line 1347. (load luc: /Users/cstan/Library/texlive/2018/texmf-var/luatex-cache/generic/font s/otl/lmroman8-bold.luc)(load luc: /Users/cstan/Library/texlive/2018/texmf-var/l uatex-cache/generic/fonts/otl/lmroman5-bold.luc) -LaTeX Warning: Citation `Sulzmann2014' on page 58 undefined on input line 1370. +LaTeX Warning: Citation `Sulzmann2014' on page 58 undefined on input line 1366. Underfull \vbox (badness 10000) has occurred while \output is active [] [58] -Overfull \hbox (4.61574pt too wide) in paragraph at lines 1434--1435 +Overfull \hbox (4.61574pt too wide) in paragraph at lines 1430--1431 \OT1/zplm/m/n/10 $$$\OMS/zplm/m/n/10 n$\TU/lmr/m/it/10 dn$\OT1/zplm/m/n/10 $$ $ \OT1/pplx/m/n/10 &$ $@$$\OMS/zplm/m/n/10 f$\TU/lmr/m/it/10 thm $\OT1/zplm/m/n/1 0 ($\TU/lmr/m/it/10 rhs$\OT1/zplm/m/n/10 )$ \TU/lmr/m/it/10 in-tern$\OT1/pplx/m @@ -1795,7 +1795,7 @@ [] -Overfull \hbox (43.28516pt too wide) in paragraph at lines 1434--1435 +Overfull \hbox (43.28516pt too wide) in paragraph at lines 1430--1431 \OT1/pplx/m/n/10 &$ $\OT1/zplm/m/n/10 $$$\OMS/zplm/m/n/10 n$\TU/lmr/m/it/10 dn$ \OT1/zplm/m/n/10 $$ $\OT1/pplx/m/n/10 &$ $@$$\OMS/zplm/m/n/10 f$\TU/lmr/m/it/10 thm $\OT1/zplm/m/n/10 ($\TU/lmr/m/it/10 rhs$\OT1/zplm/m/n/10 )$ \TU/lmr/m/it/1 @@ -1807,7 +1807,7 @@ [] -Overfull \hbox (31.37523pt too wide) in paragraph at lines 1434--1435 +Overfull \hbox (31.37523pt too wide) in paragraph at lines 1430--1431 \OMS/zplm/m/n/10 n$\TU/lmr/m/it/10 end$\OMS/zplm/m/n/10 f$\TU/lmr/m/it/10 tabul ar$\OMS/zplm/m/n/10 g$ $n$\TU/lmr/m/it/10 end$\OMS/zplm/m/n/10 f$\TU/lmr/m/it/1 0 center$\OMS/zplm/m/n/10 g$ \TU/lmr/m/it/10 Some sim-ple facts about erase $ @@ -1816,7 +1816,7 @@ [] -Overfull \hbox (4.57928pt too wide) in paragraph at lines 1434--1435 +Overfull \hbox (4.57928pt too wide) in paragraph at lines 1430--1431 \OT1/pplx/m/n/10 @$$\OMS/zplm/m/n/10 f$\TU/lmr/m/it/10 thm $\OT1/zplm/m/n/10 ($ \TU/lmr/m/it/10 rhs$\OT1/zplm/m/n/10 )$ \TU/lmr/m/it/10 bnul-lable$\OT1/pplx/m/ n/10 .$\TU/lmr/m/it/10 simps$\OT1/zplm/m/n/10 ($\TU/lmr/m/it/10 4$\OT1/zplm/m/n @@ -1828,7 +1828,7 @@ [] -Overfull \hbox (7.7924pt too wide) in paragraph at lines 1434--1435 +Overfull \hbox (7.7924pt too wide) in paragraph at lines 1430--1431 \OT1/zplm/m/n/10 ($\TU/lmr/m/it/10 lhs$\OT1/zplm/m/n/10 )$ \TU/lmr/m/it/10 bnul -lable$\OT1/pplx/m/n/10 .$\TU/lmr/m/it/10 simps$\OT1/zplm/m/n/10 ($\TU/lmr/m/it /10 6$\OT1/zplm/m/n/10 )$$\OMS/zplm/m/n/10 g$ $\OT1/pplx/m/n/10 &$ $\OT1/zplm/m @@ -1840,7 +1840,7 @@ [] -Overfull \hbox (34.28575pt too wide) in paragraph at lines 1434--1435 +Overfull \hbox (34.28575pt too wide) in paragraph at lines 1430--1431 \TU/lmr/m/it/10 bder$\OT1/pplx/m/n/10 .$\TU/lmr/m/it/10 simps$\OT1/zplm/m/n/10 ($\TU/lmr/m/it/10 3$\OT1/zplm/m/n/10 )$$\OMS/zplm/m/n/10 g$ $\OT1/pplx/m/n/10 & $ $\OT1/zplm/m/n/10 $$$\OMS/zplm/m/n/10 n$\TU/lmr/m/it/10 dn$\OT1/zplm/m/n/10 $ @@ -1854,7 +1854,7 @@ [] -Overfull \hbox (3.47198pt too wide) in paragraph at lines 1434--1435 +Overfull \hbox (3.47198pt too wide) in paragraph at lines 1430--1431 \OT1/pplx/m/n/10 @$$\OMS/zplm/m/n/10 f$\TU/lmr/m/it/10 thm $\OT1/zplm/m/n/10 ($ \TU/lmr/m/it/10 rhs$\OT1/zplm/m/n/10 )$ \TU/lmr/m/it/10 bmkeps$\OT1/pplx/m/n/10 .$\TU/lmr/m/it/10 simps$\OT1/zplm/m/n/10 ($\TU/lmr/m/it/10 4$\OT1/zplm/m/n/10 @@ -1865,7 +1865,7 @@ [] -Overfull \hbox (2.7528pt too wide) in paragraph at lines 1434--1435 +Overfull \hbox (2.7528pt too wide) in paragraph at lines 1430--1431 \OMS/zplm/m/n/10 n$\TU/lmr/m/it/10 noindent Def-i-ni-tion of the bit-coded lexe r $\OT1/pplx/m/n/10 @$$\OMS/zplm/m/n/10 f$\TU/lmr/m/it/10 thm blexer[]def$\OMS /zplm/m/n/10 g$ $n$\TU/lmr/m/it/10 begin$\OMS/zplm/m/n/10 f$\TU/lmr/m/it/10 t @@ -1876,7 +1876,7 @@ Underfull \vbox (badness 10000) has occurred while \output is active [] [60] -Overfull \hbox (2.67558pt too wide) in paragraph at lines 1438--1447 +Overfull \hbox (2.67558pt too wide) in paragraph at lines 1434--1443 \TU/lmr/m/it/10 ac-cord-ing to rules like $\OMS/zplm/m/n/10 n$\TU/lmr/m/it/10 begin$\OMS/zplm/m/n/10 f$\TU/lmr/m/it/10 equation$\OMS/zplm/m/n/10 g$$n$\TU/lmr /m/it/10 label$\OMS/zplm/m/n/10 f$\TU/lmr/m/it/10 Simpl$\OMS/zplm/m/n/10 g$ $n$ @@ -1885,7 +1885,7 @@ [] -Overfull \hbox (35.68385pt too wide) in paragraph at lines 1438--1447 +Overfull \hbox (35.68385pt too wide) in paragraph at lines 1434--1443 \TU/lmr/m/it/10 F[]SEQ1$\OT1/pplx/m/n/10 .$\TU/lmr/m/it/10 simps$\OT1/zplm/m/n/ 10 ($\TU/lmr/m/it/10 1$\OT1/zplm/m/n/10 )$$\OMS/zplm/m/n/10 g$ $\OT1/pplx/m/n/1 0 &$ $\OT1/zplm/m/n/10 $$$\OMS/zplm/m/n/10 n$\TU/lmr/m/it/10 dn$\OT1/zplm/m/n/1 @@ -1898,7 +1898,7 @@ [] -Overfull \hbox (18.66588pt too wide) in paragraph at lines 1438--1447 +Overfull \hbox (18.66588pt too wide) in paragraph at lines 1434--1443 \OT1/pplx/m/n/10 &$ $@$$\OMS/zplm/m/n/10 f$\TU/lmr/m/it/10 thm L[]fst[]simp$\OT 1/zplm/m/n/10 [$\TU/lmr/m/it/10 symmetric$\OT1/zplm/m/n/10 ]$$\OMS/zplm/m/n/10 g$$n$$n$ $\OT1/zplm/m/n/10 ($\TU/lmr/m/it/10 2$\OT1/zplm/m/n/10 )$ $\OT1/pplx/m @@ -1922,15 +1922,9 @@ (./root.aux) Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 96. Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 96. - +Package rerunfilecheck Info: File `root.out' has not changed. +(rerunfilecheck) Checksum: F68486A1B88421815EBCC3CB75200893;512. -Package rerunfilecheck Warning: File `root.out' has changed. -(rerunfilecheck) Rerun to get outlines right -(rerunfilecheck) or use package `bookmark'. - -Package rerunfilecheck Info: Checksums for `root.out': -(rerunfilecheck) Before: 40AB4FCF7DFB133886AD9117C6B3D022;396 -(rerunfilecheck) After: F68486A1B88421815EBCC3CB75200893;512. LaTeX Font Warning: Size substitutions with differences (Font) up to 2.26395pt have occurred. @@ -1938,32 +1932,19 @@ LaTeX Font Warning: Some font shapes were not available, defaults substituted. - -LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. - Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 96. ) Here is how much of LuaTeX's memory you used: - 29104 strings out of 494413 + 29101 strings out of 494413 156265,794899 words of node,token memory allocated 1590 words of node memory still in use: 9 hlist, 2 vlist, 2 rule, 11 disc, 21 glue, 7 kern, 98 glyph, 33 attribute, 5 7 glue_spec, 33 attribute_list, 1 write nodes - avail lists: 2:6992,3:290,4:52,5:2358,6:47,7:12582,8:52,9:593,10:23,11:398 - 31952 multiletter control sequences out of 65536+600000 + avail lists: 2:6992,3:291,4:52,5:2358,6:47,7:12582,8:52,9:593,10:23,11:398 + 31954 multiletter control sequences out of 65536+600000 282 fonts using 23215399 bytes 55i,23n,68p,45885b,993s stack positions out of 5000i,500n,10000p,200000b,100000s - -warning (pdf backend): unreferenced destination with name 'equation.1.6.2' - -warning (pdf backend): unreferenced destination with name 'theorem.1.4.3' - -warning (pdf backend): unreferenced destination with name 'theorem.1.3.2' - -warning (pdf backend): unreferenced destination with name 'theorem.1.3.1' - -warning (pdf backend): unreferenced destination with name 'equation.1.2.1' -Output written on root.pdf (65 pages, 375818 bytes). +Output written on root.pdf (65 pages, 375799 bytes). -PDF statistics: 526 PDF objects out of 1000 (max. 8388607) - 411 compressed objects within 5 object streams - 112 named destinations out of 1000 (max. 131072) - 72 words of extra memory for PDF output out of 10000 (max. 100000000) +PDF statistics: 527 PDF objects out of 1000 (max. 8388607) + 412 compressed objects within 5 object streams + 107 named destinations out of 1000 (max. 131072) + 88 words of extra memory for PDF output out of 10000 (max. 100000000) diff -r 5499ba68188c -r f65444d29e74 thys2/Journal/root.pdf Binary file thys2/Journal/root.pdf has changed diff -r 5499ba68188c -r f65444d29e74 thys2/Journal/session_graph.pdf Binary file thys2/Journal/session_graph.pdf has changed diff -r 5499ba68188c -r f65444d29e74 thys2/journal.pdf Binary file thys2/journal.pdf has changed