%
\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%:%