thys2/Journal/SizeBound.tex
changeset 369 e00950ba4514
child 371 f65444d29e74
equal deleted inserted replaced
368:56781ad291cf 369:e00950ba4514
       
     1 %
       
     2 \begin{isabellebody}%
       
     3 \setisabellecontext{SizeBound}%
       
     4 %
       
     5 \isadelimtheory
       
     6 \isanewline
       
     7 %
       
     8 \endisadelimtheory
       
     9 %
       
    10 \isatagtheory
       
    11 \isacommand{theory}\isamarkupfalse%
       
    12 \ SizeBound\isanewline
       
    13 \ \ \isakeyword{imports}\ {\isachardoublequoteopen}Lexer{\isachardoublequoteclose}\ \isanewline
       
    14 \isakeyword{begin}%
       
    15 \endisatagtheory
       
    16 {\isafoldtheory}%
       
    17 %
       
    18 \isadelimtheory
       
    19 %
       
    20 \endisadelimtheory
       
    21 %
       
    22 \isadelimdocument
       
    23 %
       
    24 \endisadelimdocument
       
    25 %
       
    26 \isatagdocument
       
    27 %
       
    28 \isamarkupsection{Bit-Encodings%
       
    29 }
       
    30 \isamarkuptrue%
       
    31 %
       
    32 \endisatagdocument
       
    33 {\isafolddocument}%
       
    34 %
       
    35 \isadelimdocument
       
    36 %
       
    37 \endisadelimdocument
       
    38 \isacommand{datatype}\isamarkupfalse%
       
    39 \ bit\ {\isacharequal}{\kern0pt}\ Z\ {\isacharbar}{\kern0pt}\ S\isanewline
       
    40 \isanewline
       
    41 \isacommand{fun}\isamarkupfalse%
       
    42 \ code\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}val\ {\isasymRightarrow}\ bit\ list{\isachardoublequoteclose}\isanewline
       
    43 \isakeyword{where}\isanewline
       
    44 \ \ {\isachardoublequoteopen}code\ Void\ {\isacharequal}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
    45 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}code\ {\isacharparenleft}{\kern0pt}Char\ c{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
    46 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}code\ {\isacharparenleft}{\kern0pt}Left\ v{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ Z\ {\isacharhash}{\kern0pt}\ {\isacharparenleft}{\kern0pt}code\ v{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
    47 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}code\ {\isacharparenleft}{\kern0pt}Right\ v{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ S\ {\isacharhash}{\kern0pt}\ {\isacharparenleft}{\kern0pt}code\ v{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
    48 {\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
       
    49 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}code\ {\isacharparenleft}{\kern0pt}Stars\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}S{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
    50 {\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
       
    51 \isanewline
       
    52 \isanewline
       
    53 \isacommand{fun}\isamarkupfalse%
       
    54 \ \isanewline
       
    55 \ \ Stars{\isacharunderscore}{\kern0pt}add\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}val\ {\isasymRightarrow}\ val\ {\isasymRightarrow}\ val{\isachardoublequoteclose}\isanewline
       
    56 \isakeyword{where}\isanewline
       
    57 \ \ {\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
       
    58 \isanewline
       
    59 \isacommand{function}\isamarkupfalse%
       
    60 \isanewline
       
    61 \ \ decode{\isacharprime}{\kern0pt}\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}bit\ list\ {\isasymRightarrow}\ rexp\ {\isasymRightarrow}\ {\isacharparenleft}{\kern0pt}val\ {\isacharasterisk}{\kern0pt}\ bit\ list{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
    62 \isakeyword{where}\isanewline
       
    63 \ \ {\isachardoublequoteopen}decode{\isacharprime}{\kern0pt}\ ds\ ZERO\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Void{\isacharcomma}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
    64 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}decode{\isacharprime}{\kern0pt}\ ds\ ONE\ {\isacharequal}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Void{\isacharcomma}{\kern0pt}\ ds{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
    65 {\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
       
    66 {\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
       
    67 {\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
       
    68 {\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
       
    69 {\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
       
    70 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 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
       
    71 {\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
       
    72 {\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
       
    73 {\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
       
    74 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 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
       
    75 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ in\ {\isacharparenleft}{\kern0pt}Stars{\isacharunderscore}{\kern0pt}add\ v\ vs{\isacharcomma}{\kern0pt}\ ds{\isacharprime}{\kern0pt}{\isacharprime}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
    76 %
       
    77 \isadelimproof
       
    78 %
       
    79 \endisadelimproof
       
    80 %
       
    81 \isatagproof
       
    82 \isacommand{by}\isamarkupfalse%
       
    83 \ pat{\isacharunderscore}{\kern0pt}completeness\ auto%
       
    84 \endisatagproof
       
    85 {\isafoldproof}%
       
    86 %
       
    87 \isadelimproof
       
    88 \isanewline
       
    89 %
       
    90 \endisadelimproof
       
    91 \isanewline
       
    92 \isacommand{lemma}\isamarkupfalse%
       
    93 \ decode{\isacharprime}{\kern0pt}{\isacharunderscore}{\kern0pt}smaller{\isacharcolon}{\kern0pt}\isanewline
       
    94 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}decode{\isacharprime}{\kern0pt}{\isacharunderscore}{\kern0pt}dom\ {\isacharparenleft}{\kern0pt}ds{\isacharcomma}{\kern0pt}\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
    95 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}length\ {\isacharparenleft}{\kern0pt}snd\ {\isacharparenleft}{\kern0pt}decode{\isacharprime}{\kern0pt}\ ds\ r{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isasymle}\ length\ ds{\isachardoublequoteclose}\isanewline
       
    96 %
       
    97 \isadelimproof
       
    98 %
       
    99 \endisadelimproof
       
   100 %
       
   101 \isatagproof
       
   102 \isacommand{using}\isamarkupfalse%
       
   103 \ assms\isanewline
       
   104 \isacommand{apply}\isamarkupfalse%
       
   105 {\isacharparenleft}{\kern0pt}induct\ ds\ r{\isacharparenright}{\kern0pt}\isanewline
       
   106 \isacommand{apply}\isamarkupfalse%
       
   107 {\isacharparenleft}{\kern0pt}auto\ simp\ add{\isacharcolon}{\kern0pt}\ decode{\isacharprime}{\kern0pt}{\isachardot}{\kern0pt}psimps\ split{\isacharcolon}{\kern0pt}\ prod{\isachardot}{\kern0pt}split{\isacharparenright}{\kern0pt}\isanewline
       
   108 \isacommand{using}\isamarkupfalse%
       
   109 \ dual{\isacharunderscore}{\kern0pt}order{\isachardot}{\kern0pt}trans\ \isacommand{apply}\isamarkupfalse%
       
   110 \ blast\isanewline
       
   111 \isacommand{by}\isamarkupfalse%
       
   112 \ {\isacharparenleft}{\kern0pt}meson\ dual{\isacharunderscore}{\kern0pt}order{\isachardot}{\kern0pt}trans\ le{\isacharunderscore}{\kern0pt}SucI{\isacharparenright}{\kern0pt}%
       
   113 \endisatagproof
       
   114 {\isafoldproof}%
       
   115 %
       
   116 \isadelimproof
       
   117 \isanewline
       
   118 %
       
   119 \endisadelimproof
       
   120 \isanewline
       
   121 \isacommand{termination}\isamarkupfalse%
       
   122 \ {\isachardoublequoteopen}decode{\isacharprime}{\kern0pt}{\isachardoublequoteclose}\ \ \isanewline
       
   123 %
       
   124 \isadelimproof
       
   125 %
       
   126 \endisadelimproof
       
   127 %
       
   128 \isatagproof
       
   129 \isacommand{apply}\isamarkupfalse%
       
   130 {\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
       
   131 \isacommand{apply}\isamarkupfalse%
       
   132 {\isacharparenleft}{\kern0pt}auto\ dest{\isacharbang}{\kern0pt}{\isacharcolon}{\kern0pt}\ decode{\isacharprime}{\kern0pt}{\isacharunderscore}{\kern0pt}smaller{\isacharparenright}{\kern0pt}\isanewline
       
   133 \isacommand{by}\isamarkupfalse%
       
   134 \ {\isacharparenleft}{\kern0pt}metis\ less{\isacharunderscore}{\kern0pt}Suc{\isacharunderscore}{\kern0pt}eq{\isacharunderscore}{\kern0pt}le\ snd{\isacharunderscore}{\kern0pt}conv{\isacharparenright}{\kern0pt}%
       
   135 \endisatagproof
       
   136 {\isafoldproof}%
       
   137 %
       
   138 \isadelimproof
       
   139 \isanewline
       
   140 %
       
   141 \endisadelimproof
       
   142 \isanewline
       
   143 \isacommand{definition}\isamarkupfalse%
       
   144 \isanewline
       
   145 \ \ decode\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}bit\ list\ {\isasymRightarrow}\ rexp\ {\isasymRightarrow}\ val\ option{\isachardoublequoteclose}\isanewline
       
   146 \isakeyword{where}\isanewline
       
   147 \ \ {\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
       
   148 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ in\ {\isacharparenleft}{\kern0pt}if\ ds{\isacharprime}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ then\ Some\ v\ else\ None{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
   149 \isanewline
       
   150 \isacommand{lemma}\isamarkupfalse%
       
   151 \ decode{\isacharprime}{\kern0pt}{\isacharunderscore}{\kern0pt}code{\isacharunderscore}{\kern0pt}Stars{\isacharcolon}{\kern0pt}\isanewline
       
   152 \ \ \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
       
   153 \ \ \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
       
   154 %
       
   155 \isadelimproof
       
   156 \ \ %
       
   157 \endisadelimproof
       
   158 %
       
   159 \isatagproof
       
   160 \isacommand{using}\isamarkupfalse%
       
   161 \ assms\isanewline
       
   162 \ \ \isacommand{apply}\isamarkupfalse%
       
   163 {\isacharparenleft}{\kern0pt}induct\ vs{\isacharparenright}{\kern0pt}\isanewline
       
   164 \ \ \isacommand{apply}\isamarkupfalse%
       
   165 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
   166 \ \ \isacommand{done}\isamarkupfalse%
       
   167 %
       
   168 \endisatagproof
       
   169 {\isafoldproof}%
       
   170 %
       
   171 \isadelimproof
       
   172 \isanewline
       
   173 %
       
   174 \endisadelimproof
       
   175 \isanewline
       
   176 \isacommand{lemma}\isamarkupfalse%
       
   177 \ decode{\isacharprime}{\kern0pt}{\isacharunderscore}{\kern0pt}code{\isacharcolon}{\kern0pt}\isanewline
       
   178 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline
       
   179 \ \ \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
       
   180 %
       
   181 \isadelimproof
       
   182 %
       
   183 \endisadelimproof
       
   184 %
       
   185 \isatagproof
       
   186 \isacommand{using}\isamarkupfalse%
       
   187 \ assms\isanewline
       
   188 \ \ \isacommand{apply}\isamarkupfalse%
       
   189 {\isacharparenleft}{\kern0pt}induct\ v\ r\ arbitrary{\isacharcolon}{\kern0pt}\ ds{\isacharparenright}{\kern0pt}\ \isanewline
       
   190 \ \ \isacommand{apply}\isamarkupfalse%
       
   191 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
   192 \ \ \isacommand{using}\isamarkupfalse%
       
   193 \ decode{\isacharprime}{\kern0pt}{\isacharunderscore}{\kern0pt}code{\isacharunderscore}{\kern0pt}Stars\ \isacommand{by}\isamarkupfalse%
       
   194 \ blast%
       
   195 \endisatagproof
       
   196 {\isafoldproof}%
       
   197 %
       
   198 \isadelimproof
       
   199 \isanewline
       
   200 %
       
   201 \endisadelimproof
       
   202 \isanewline
       
   203 \isacommand{lemma}\isamarkupfalse%
       
   204 \ decode{\isacharunderscore}{\kern0pt}code{\isacharcolon}{\kern0pt}\isanewline
       
   205 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline
       
   206 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}decode\ {\isacharparenleft}{\kern0pt}code\ v{\isacharparenright}{\kern0pt}\ r\ {\isacharequal}{\kern0pt}\ Some\ v{\isachardoublequoteclose}\isanewline
       
   207 %
       
   208 \isadelimproof
       
   209 \ \ %
       
   210 \endisadelimproof
       
   211 %
       
   212 \isatagproof
       
   213 \isacommand{using}\isamarkupfalse%
       
   214 \ assms\ \isacommand{unfolding}\isamarkupfalse%
       
   215 \ decode{\isacharunderscore}{\kern0pt}def\isanewline
       
   216 \ \ \isacommand{by}\isamarkupfalse%
       
   217 \ {\isacharparenleft}{\kern0pt}smt\ append{\isacharunderscore}{\kern0pt}Nil{\isadigit{2}}\ decode{\isacharprime}{\kern0pt}{\isacharunderscore}{\kern0pt}code\ old{\isachardot}{\kern0pt}prod{\isachardot}{\kern0pt}case{\isacharparenright}{\kern0pt}%
       
   218 \endisatagproof
       
   219 {\isafoldproof}%
       
   220 %
       
   221 \isadelimproof
       
   222 %
       
   223 \endisadelimproof
       
   224 %
       
   225 \isadelimdocument
       
   226 %
       
   227 \endisadelimdocument
       
   228 %
       
   229 \isatagdocument
       
   230 %
       
   231 \isamarkupsection{Annotated Regular Expressions%
       
   232 }
       
   233 \isamarkuptrue%
       
   234 %
       
   235 \endisatagdocument
       
   236 {\isafolddocument}%
       
   237 %
       
   238 \isadelimdocument
       
   239 %
       
   240 \endisadelimdocument
       
   241 \isacommand{datatype}\isamarkupfalse%
       
   242 \ arexp\ {\isacharequal}{\kern0pt}\ \isanewline
       
   243 \ \ AZERO\isanewline
       
   244 {\isacharbar}{\kern0pt}\ AONE\ {\isachardoublequoteopen}bit\ list{\isachardoublequoteclose}\isanewline
       
   245 {\isacharbar}{\kern0pt}\ ACHAR\ {\isachardoublequoteopen}bit\ list{\isachardoublequoteclose}\ char\isanewline
       
   246 {\isacharbar}{\kern0pt}\ ASEQ\ {\isachardoublequoteopen}bit\ list{\isachardoublequoteclose}\ arexp\ arexp\isanewline
       
   247 {\isacharbar}{\kern0pt}\ AALTs\ {\isachardoublequoteopen}bit\ list{\isachardoublequoteclose}\ {\isachardoublequoteopen}arexp\ list{\isachardoublequoteclose}\isanewline
       
   248 {\isacharbar}{\kern0pt}\ ASTAR\ {\isachardoublequoteopen}bit\ list{\isachardoublequoteclose}\ arexp\isanewline
       
   249 \isanewline
       
   250 \isacommand{abbreviation}\isamarkupfalse%
       
   251 \isanewline
       
   252 \ \ {\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
       
   253 \isanewline
       
   254 \isacommand{fun}\isamarkupfalse%
       
   255 \ asize\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ nat{\isachardoublequoteclose}\ \isakeyword{where}\isanewline
       
   256 \ \ {\isachardoublequoteopen}asize\ AZERO\ {\isacharequal}{\kern0pt}\ {\isadigit{1}}{\isachardoublequoteclose}\isanewline
       
   257 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}asize\ {\isacharparenleft}{\kern0pt}AONE\ cs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isadigit{1}}{\isachardoublequoteclose}\ \isanewline
       
   258 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}asize\ {\isacharparenleft}{\kern0pt}ACHAR\ cs\ c{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isadigit{1}}{\isachardoublequoteclose}\isanewline
       
   259 {\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
       
   260 {\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
       
   261 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}asize\ {\isacharparenleft}{\kern0pt}ASTAR\ cs\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ Suc\ {\isacharparenleft}{\kern0pt}asize\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
   262 \isanewline
       
   263 \isacommand{fun}\isamarkupfalse%
       
   264 \ \isanewline
       
   265 \ \ erase\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ rexp{\isachardoublequoteclose}\isanewline
       
   266 \isakeyword{where}\isanewline
       
   267 \ \ {\isachardoublequoteopen}erase\ AZERO\ {\isacharequal}{\kern0pt}\ ZERO{\isachardoublequoteclose}\isanewline
       
   268 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}erase\ {\isacharparenleft}{\kern0pt}AONE\ {\isacharunderscore}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ ONE{\isachardoublequoteclose}\isanewline
       
   269 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}erase\ {\isacharparenleft}{\kern0pt}ACHAR\ {\isacharunderscore}{\kern0pt}\ c{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ CH\ c{\isachardoublequoteclose}\isanewline
       
   270 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}erase\ {\isacharparenleft}{\kern0pt}AALTs\ {\isacharunderscore}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ ZERO{\isachardoublequoteclose}\isanewline
       
   271 {\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
       
   272 {\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
       
   273 {\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
       
   274 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}erase\ {\isacharparenleft}{\kern0pt}ASTAR\ {\isacharunderscore}{\kern0pt}\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ STAR\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
   275 \isanewline
       
   276 \isanewline
       
   277 \isanewline
       
   278 \isanewline
       
   279 \isacommand{fun}\isamarkupfalse%
       
   280 \ nonalt\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
       
   281 \ \ \isakeyword{where}\isanewline
       
   282 \ \ {\isachardoublequoteopen}nonalt\ {\isacharparenleft}{\kern0pt}AALTs\ bs{\isadigit{2}}\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline
       
   283 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}nonalt\ r\ {\isacharequal}{\kern0pt}\ True{\isachardoublequoteclose}\isanewline
       
   284 \isanewline
       
   285 \isanewline
       
   286 \isacommand{fun}\isamarkupfalse%
       
   287 \ good\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\ \isakeyword{where}\isanewline
       
   288 \ \ {\isachardoublequoteopen}good\ AZERO\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline
       
   289 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}good\ {\isacharparenleft}{\kern0pt}AONE\ cs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ True{\isachardoublequoteclose}\ \isanewline
       
   290 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}good\ {\isacharparenleft}{\kern0pt}ACHAR\ cs\ c{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ True{\isachardoublequoteclose}\isanewline
       
   291 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}good\ {\isacharparenleft}{\kern0pt}AALTs\ cs\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline
       
   292 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}good\ {\isacharparenleft}{\kern0pt}AALTs\ cs\ {\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline
       
   293 {\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
       
   294 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}good\ {\isacharparenleft}{\kern0pt}ASEQ\ {\isacharunderscore}{\kern0pt}\ AZERO\ {\isacharunderscore}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline
       
   295 {\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
       
   296 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}good\ {\isacharparenleft}{\kern0pt}ASEQ\ {\isacharunderscore}{\kern0pt}\ {\isacharunderscore}{\kern0pt}\ AZERO{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline
       
   297 {\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
       
   298 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}good\ {\isacharparenleft}{\kern0pt}ASTAR\ cs\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ True{\isachardoublequoteclose}\isanewline
       
   299 \isanewline
       
   300 \isanewline
       
   301 \isanewline
       
   302 \isanewline
       
   303 \isacommand{fun}\isamarkupfalse%
       
   304 \ fuse\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}bit\ list\ {\isasymRightarrow}\ arexp\ {\isasymRightarrow}\ arexp{\isachardoublequoteclose}\ \isakeyword{where}\isanewline
       
   305 \ \ {\isachardoublequoteopen}fuse\ bs\ AZERO\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}\isanewline
       
   306 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}fuse\ bs\ {\isacharparenleft}{\kern0pt}AONE\ cs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ AONE\ {\isacharparenleft}{\kern0pt}bs\ {\isacharat}{\kern0pt}\ cs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\ \isanewline
       
   307 {\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
       
   308 {\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
       
   309 {\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
       
   310 {\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
       
   311 \isanewline
       
   312 \isacommand{lemma}\isamarkupfalse%
       
   313 \ fuse{\isacharunderscore}{\kern0pt}append{\isacharcolon}{\kern0pt}\isanewline
       
   314 \ \ \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
       
   315 %
       
   316 \isadelimproof
       
   317 \ \ %
       
   318 \endisadelimproof
       
   319 %
       
   320 \isatagproof
       
   321 \isacommand{apply}\isamarkupfalse%
       
   322 {\isacharparenleft}{\kern0pt}induct\ r{\isacharparenright}{\kern0pt}\isanewline
       
   323 \ \ \isacommand{apply}\isamarkupfalse%
       
   324 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
   325 \ \ \isacommand{done}\isamarkupfalse%
       
   326 %
       
   327 \endisatagproof
       
   328 {\isafoldproof}%
       
   329 %
       
   330 \isadelimproof
       
   331 \isanewline
       
   332 %
       
   333 \endisadelimproof
       
   334 \isanewline
       
   335 \isanewline
       
   336 \isacommand{fun}\isamarkupfalse%
       
   337 \ intern\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}rexp\ {\isasymRightarrow}\ arexp{\isachardoublequoteclose}\ \isakeyword{where}\isanewline
       
   338 \ \ {\isachardoublequoteopen}intern\ ZERO\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}\isanewline
       
   339 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}intern\ ONE\ {\isacharequal}{\kern0pt}\ AONE\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
   340 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}intern\ {\isacharparenleft}{\kern0pt}CH\ c{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ ACHAR\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ c{\isachardoublequoteclose}\isanewline
       
   341 {\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
       
   342 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}{\kern0pt}fuse\ {\isacharbrackleft}{\kern0pt}S{\isacharbrackright}{\kern0pt}\ \ {\isacharparenleft}{\kern0pt}intern\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
   343 {\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
       
   344 {\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
       
   345 \isanewline
       
   346 \isanewline
       
   347 \isacommand{fun}\isamarkupfalse%
       
   348 \ retrieve\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ val\ {\isasymRightarrow}\ bit\ list{\isachardoublequoteclose}\ \isakeyword{where}\isanewline
       
   349 \ \ {\isachardoublequoteopen}retrieve\ {\isacharparenleft}{\kern0pt}AONE\ bs{\isacharparenright}{\kern0pt}\ Void\ {\isacharequal}{\kern0pt}\ bs{\isachardoublequoteclose}\isanewline
       
   350 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}retrieve\ {\isacharparenleft}{\kern0pt}ACHAR\ bs\ c{\isacharparenright}{\kern0pt}\ {\isacharparenleft}{\kern0pt}Char\ d{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bs{\isachardoublequoteclose}\isanewline
       
   351 {\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
       
   352 {\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
       
   353 {\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
       
   354 {\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
       
   355 {\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
       
   356 {\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
       
   357 \ \ \ \ \ 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
       
   358 \isanewline
       
   359 \isanewline
       
   360 \isanewline
       
   361 \isacommand{fun}\isamarkupfalse%
       
   362 \isanewline
       
   363 \ bnullable\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
       
   364 \isakeyword{where}\isanewline
       
   365 \ \ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AZERO{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline
       
   366 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AONE\ bs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ True{\isachardoublequoteclose}\isanewline
       
   367 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}ACHAR\ bs\ c{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline
       
   368 {\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
       
   369 {\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
       
   370 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}ASTAR\ bs\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ True{\isachardoublequoteclose}\isanewline
       
   371 \isanewline
       
   372 \isacommand{fun}\isamarkupfalse%
       
   373 \ \isanewline
       
   374 \ \ bmkeps\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ bit\ list{\isachardoublequoteclose}\isanewline
       
   375 \isakeyword{where}\isanewline
       
   376 \ \ {\isachardoublequoteopen}bmkeps{\isacharparenleft}{\kern0pt}AONE\ bs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bs{\isachardoublequoteclose}\isanewline
       
   377 {\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
       
   378 {\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
       
   379 {\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
       
   380 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bmkeps{\isacharparenleft}{\kern0pt}ASTAR\ bs\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bs\ {\isacharat}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}S{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
   381 \isanewline
       
   382 \isanewline
       
   383 \isacommand{fun}\isamarkupfalse%
       
   384 \isanewline
       
   385 \ bder\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}char\ {\isasymRightarrow}\ arexp\ {\isasymRightarrow}\ arexp{\isachardoublequoteclose}\isanewline
       
   386 \isakeyword{where}\isanewline
       
   387 \ \ {\isachardoublequoteopen}bder\ c\ {\isacharparenleft}{\kern0pt}AZERO{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}\isanewline
       
   388 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bder\ c\ {\isacharparenleft}{\kern0pt}AONE\ bs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}\isanewline
       
   389 {\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
       
   390 {\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
       
   391 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bder\ c\ {\isacharparenleft}{\kern0pt}ASEQ\ bs\ r{\isadigit{1}}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ \isanewline
       
   392 \ \ \ \ \ {\isacharparenleft}{\kern0pt}if\ bnullable\ r{\isadigit{1}}\isanewline
       
   393 \ \ \ \ \ \ 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
       
   394 \ \ \ \ \ \ else\ ASEQ\ bs\ {\isacharparenleft}{\kern0pt}bder\ c\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
   395 {\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
       
   396 \isanewline
       
   397 \isanewline
       
   398 \isacommand{fun}\isamarkupfalse%
       
   399 \ \isanewline
       
   400 \ \ bders\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ string\ {\isasymRightarrow}\ arexp{\isachardoublequoteclose}\isanewline
       
   401 \isakeyword{where}\isanewline
       
   402 \ \ {\isachardoublequoteopen}bders\ r\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline
       
   403 {\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
       
   404 \isanewline
       
   405 \isacommand{lemma}\isamarkupfalse%
       
   406 \ bders{\isacharunderscore}{\kern0pt}append{\isacharcolon}{\kern0pt}\isanewline
       
   407 \ \ {\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
       
   408 %
       
   409 \isadelimproof
       
   410 \ \ %
       
   411 \endisadelimproof
       
   412 %
       
   413 \isatagproof
       
   414 \isacommand{apply}\isamarkupfalse%
       
   415 {\isacharparenleft}{\kern0pt}induct\ s{\isadigit{1}}\ arbitrary{\isacharcolon}{\kern0pt}\ r\ s{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline
       
   416 \ \ \isacommand{apply}\isamarkupfalse%
       
   417 {\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all{\isacharparenright}{\kern0pt}\isanewline
       
   418 \ \ \isacommand{done}\isamarkupfalse%
       
   419 %
       
   420 \endisatagproof
       
   421 {\isafoldproof}%
       
   422 %
       
   423 \isadelimproof
       
   424 \isanewline
       
   425 %
       
   426 \endisadelimproof
       
   427 \isanewline
       
   428 \isacommand{lemma}\isamarkupfalse%
       
   429 \ bnullable{\isacharunderscore}{\kern0pt}correctness{\isacharcolon}{\kern0pt}\isanewline
       
   430 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}nullable\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bnullable\ r{\isachardoublequoteclose}\isanewline
       
   431 %
       
   432 \isadelimproof
       
   433 \ \ %
       
   434 \endisadelimproof
       
   435 %
       
   436 \isatagproof
       
   437 \isacommand{apply}\isamarkupfalse%
       
   438 {\isacharparenleft}{\kern0pt}induct\ r\ rule{\isacharcolon}{\kern0pt}\ erase{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
   439 \ \ \isacommand{apply}\isamarkupfalse%
       
   440 {\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all{\isacharparenright}{\kern0pt}\isanewline
       
   441 \ \ \isacommand{done}\isamarkupfalse%
       
   442 %
       
   443 \endisatagproof
       
   444 {\isafoldproof}%
       
   445 %
       
   446 \isadelimproof
       
   447 \isanewline
       
   448 %
       
   449 \endisadelimproof
       
   450 \isanewline
       
   451 \isacommand{lemma}\isamarkupfalse%
       
   452 \ erase{\isacharunderscore}{\kern0pt}fuse{\isacharcolon}{\kern0pt}\isanewline
       
   453 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}erase\ {\isacharparenleft}{\kern0pt}fuse\ bs\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ erase\ r{\isachardoublequoteclose}\isanewline
       
   454 %
       
   455 \isadelimproof
       
   456 \ \ %
       
   457 \endisadelimproof
       
   458 %
       
   459 \isatagproof
       
   460 \isacommand{apply}\isamarkupfalse%
       
   461 {\isacharparenleft}{\kern0pt}induct\ r\ rule{\isacharcolon}{\kern0pt}\ erase{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
   462 \ \ \isacommand{apply}\isamarkupfalse%
       
   463 {\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all{\isacharparenright}{\kern0pt}\isanewline
       
   464 \ \ \isacommand{done}\isamarkupfalse%
       
   465 %
       
   466 \endisatagproof
       
   467 {\isafoldproof}%
       
   468 %
       
   469 \isadelimproof
       
   470 \isanewline
       
   471 %
       
   472 \endisadelimproof
       
   473 \isanewline
       
   474 \isacommand{thm}\isamarkupfalse%
       
   475 \ Posix{\isachardot}{\kern0pt}induct\isanewline
       
   476 \isanewline
       
   477 \isacommand{lemma}\isamarkupfalse%
       
   478 \ erase{\isacharunderscore}{\kern0pt}intern\ {\isacharbrackleft}{\kern0pt}simp{\isacharbrackright}{\kern0pt}{\isacharcolon}{\kern0pt}\isanewline
       
   479 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}erase\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline
       
   480 %
       
   481 \isadelimproof
       
   482 \ \ %
       
   483 \endisadelimproof
       
   484 %
       
   485 \isatagproof
       
   486 \isacommand{apply}\isamarkupfalse%
       
   487 {\isacharparenleft}{\kern0pt}induct\ r{\isacharparenright}{\kern0pt}\isanewline
       
   488 \ \ \isacommand{apply}\isamarkupfalse%
       
   489 {\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all\ add{\isacharcolon}{\kern0pt}\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline
       
   490 \ \ \isacommand{done}\isamarkupfalse%
       
   491 %
       
   492 \endisatagproof
       
   493 {\isafoldproof}%
       
   494 %
       
   495 \isadelimproof
       
   496 \isanewline
       
   497 %
       
   498 \endisadelimproof
       
   499 \isanewline
       
   500 \isacommand{lemma}\isamarkupfalse%
       
   501 \ erase{\isacharunderscore}{\kern0pt}bder\ {\isacharbrackleft}{\kern0pt}simp{\isacharbrackright}{\kern0pt}{\isacharcolon}{\kern0pt}\isanewline
       
   502 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}erase\ {\isacharparenleft}{\kern0pt}bder\ a\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ der\ a\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
   503 %
       
   504 \isadelimproof
       
   505 \ \ %
       
   506 \endisadelimproof
       
   507 %
       
   508 \isatagproof
       
   509 \isacommand{apply}\isamarkupfalse%
       
   510 {\isacharparenleft}{\kern0pt}induct\ r\ rule{\isacharcolon}{\kern0pt}\ erase{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
   511 \ \ \isacommand{apply}\isamarkupfalse%
       
   512 {\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all\ add{\isacharcolon}{\kern0pt}\ erase{\isacharunderscore}{\kern0pt}fuse\ bnullable{\isacharunderscore}{\kern0pt}correctness{\isacharparenright}{\kern0pt}\isanewline
       
   513 \ \ \isacommand{done}\isamarkupfalse%
       
   514 %
       
   515 \endisatagproof
       
   516 {\isafoldproof}%
       
   517 %
       
   518 \isadelimproof
       
   519 \isanewline
       
   520 %
       
   521 \endisadelimproof
       
   522 \isanewline
       
   523 \isacommand{lemma}\isamarkupfalse%
       
   524 \ erase{\isacharunderscore}{\kern0pt}bders\ {\isacharbrackleft}{\kern0pt}simp{\isacharbrackright}{\kern0pt}{\isacharcolon}{\kern0pt}\isanewline
       
   525 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}erase\ {\isacharparenleft}{\kern0pt}bders\ r\ s{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ ders\ s\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
   526 %
       
   527 \isadelimproof
       
   528 \ \ %
       
   529 \endisadelimproof
       
   530 %
       
   531 \isatagproof
       
   532 \isacommand{apply}\isamarkupfalse%
       
   533 {\isacharparenleft}{\kern0pt}induct\ s\ arbitrary{\isacharcolon}{\kern0pt}\ r\ {\isacharparenright}{\kern0pt}\isanewline
       
   534 \ \ \isacommand{apply}\isamarkupfalse%
       
   535 {\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all{\isacharparenright}{\kern0pt}\isanewline
       
   536 \ \ \isacommand{done}\isamarkupfalse%
       
   537 %
       
   538 \endisatagproof
       
   539 {\isafoldproof}%
       
   540 %
       
   541 \isadelimproof
       
   542 \isanewline
       
   543 %
       
   544 \endisadelimproof
       
   545 \isanewline
       
   546 \isacommand{lemma}\isamarkupfalse%
       
   547 \ retrieve{\isacharunderscore}{\kern0pt}encode{\isacharunderscore}{\kern0pt}STARS{\isacharcolon}{\kern0pt}\isanewline
       
   548 \ \ \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
       
   549 \ \ \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
       
   550 %
       
   551 \isadelimproof
       
   552 \ \ %
       
   553 \endisadelimproof
       
   554 %
       
   555 \isatagproof
       
   556 \isacommand{using}\isamarkupfalse%
       
   557 \ assms\isanewline
       
   558 \ \ \isacommand{apply}\isamarkupfalse%
       
   559 {\isacharparenleft}{\kern0pt}induct\ vs{\isacharparenright}{\kern0pt}\isanewline
       
   560 \ \ \isacommand{apply}\isamarkupfalse%
       
   561 {\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all{\isacharparenright}{\kern0pt}\isanewline
       
   562 \ \ \isacommand{done}\isamarkupfalse%
       
   563 %
       
   564 \endisatagproof
       
   565 {\isafoldproof}%
       
   566 %
       
   567 \isadelimproof
       
   568 \isanewline
       
   569 %
       
   570 \endisadelimproof
       
   571 \isanewline
       
   572 \isanewline
       
   573 \isacommand{lemma}\isamarkupfalse%
       
   574 \ retrieve{\isacharunderscore}{\kern0pt}fuse{\isadigit{2}}{\isacharcolon}{\kern0pt}\isanewline
       
   575 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
   576 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}retrieve\ {\isacharparenleft}{\kern0pt}fuse\ bs\ r{\isacharparenright}{\kern0pt}\ v\ {\isacharequal}{\kern0pt}\ bs\ {\isacharat}{\kern0pt}\ retrieve\ r\ v{\isachardoublequoteclose}\isanewline
       
   577 %
       
   578 \isadelimproof
       
   579 \ \ %
       
   580 \endisadelimproof
       
   581 %
       
   582 \isatagproof
       
   583 \isacommand{using}\isamarkupfalse%
       
   584 \ assms\isanewline
       
   585 \ \ \isacommand{apply}\isamarkupfalse%
       
   586 {\isacharparenleft}{\kern0pt}induct\ r\ arbitrary{\isacharcolon}{\kern0pt}\ v\ bs{\isacharparenright}{\kern0pt}\isanewline
       
   587 \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   588 {\isacharparenleft}{\kern0pt}auto\ elim{\isacharcolon}{\kern0pt}\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{4}}{\isacharbrackright}{\kern0pt}\isanewline
       
   589 \ \ \ \isacommand{defer}\isamarkupfalse%
       
   590 \isanewline
       
   591 \ \ \isacommand{using}\isamarkupfalse%
       
   592 \ retrieve{\isacharunderscore}{\kern0pt}encode{\isacharunderscore}{\kern0pt}STARS\isanewline
       
   593 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   594 {\isacharparenleft}{\kern0pt}auto\ elim{\isacharbang}{\kern0pt}{\isacharcolon}{\kern0pt}\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
   595 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   596 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ vs{\isacharparenright}{\kern0pt}\isanewline
       
   597 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   598 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   599 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   600 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   601 \ \ \isanewline
       
   602 \ \ \isacommand{apply}\isamarkupfalse%
       
   603 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   604 \ \ \isacommand{apply}\isamarkupfalse%
       
   605 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ x{\isadigit{2}}a{\isacharparenright}{\kern0pt}\isanewline
       
   606 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   607 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   608 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   609 {\isacharparenleft}{\kern0pt}auto\ elim{\isacharbang}{\kern0pt}{\isacharcolon}{\kern0pt}\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
   610 \ \ \isacommand{apply}\isamarkupfalse%
       
   611 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   612 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   613 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ list{\isacharparenright}{\kern0pt}\isanewline
       
   614 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   615 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   616 \ \ \isacommand{apply}\isamarkupfalse%
       
   617 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
   618 \ \ \isacommand{apply}\isamarkupfalse%
       
   619 {\isacharparenleft}{\kern0pt}auto\ elim{\isacharbang}{\kern0pt}{\isacharcolon}{\kern0pt}\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
   620 \ \ \isacommand{done}\isamarkupfalse%
       
   621 %
       
   622 \endisatagproof
       
   623 {\isafoldproof}%
       
   624 %
       
   625 \isadelimproof
       
   626 \isanewline
       
   627 %
       
   628 \endisadelimproof
       
   629 \isanewline
       
   630 \isacommand{lemma}\isamarkupfalse%
       
   631 \ retrieve{\isacharunderscore}{\kern0pt}fuse{\isacharcolon}{\kern0pt}\isanewline
       
   632 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline
       
   633 \ \ \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
       
   634 %
       
   635 \isadelimproof
       
   636 \ \ %
       
   637 \endisadelimproof
       
   638 %
       
   639 \isatagproof
       
   640 \isacommand{using}\isamarkupfalse%
       
   641 \ assms\ \isanewline
       
   642 \ \ \isacommand{by}\isamarkupfalse%
       
   643 \ {\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all\ add{\isacharcolon}{\kern0pt}\ retrieve{\isacharunderscore}{\kern0pt}fuse{\isadigit{2}}{\isacharparenright}{\kern0pt}%
       
   644 \endisatagproof
       
   645 {\isafoldproof}%
       
   646 %
       
   647 \isadelimproof
       
   648 \isanewline
       
   649 %
       
   650 \endisadelimproof
       
   651 \isanewline
       
   652 \isanewline
       
   653 \isacommand{lemma}\isamarkupfalse%
       
   654 \ retrieve{\isacharunderscore}{\kern0pt}code{\isacharcolon}{\kern0pt}\isanewline
       
   655 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline
       
   656 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}code\ v\ {\isacharequal}{\kern0pt}\ retrieve\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ v{\isachardoublequoteclose}\isanewline
       
   657 %
       
   658 \isadelimproof
       
   659 \ \ %
       
   660 \endisadelimproof
       
   661 %
       
   662 \isatagproof
       
   663 \isacommand{using}\isamarkupfalse%
       
   664 \ assms\isanewline
       
   665 \ \ \isacommand{apply}\isamarkupfalse%
       
   666 {\isacharparenleft}{\kern0pt}induct\ v\ r\ {\isacharparenright}{\kern0pt}\isanewline
       
   667 \ \ \isacommand{apply}\isamarkupfalse%
       
   668 {\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all\ add{\isacharcolon}{\kern0pt}\ retrieve{\isacharunderscore}{\kern0pt}fuse\ retrieve{\isacharunderscore}{\kern0pt}encode{\isacharunderscore}{\kern0pt}STARS{\isacharparenright}{\kern0pt}\isanewline
       
   669 \ \ \isacommand{done}\isamarkupfalse%
       
   670 %
       
   671 \endisatagproof
       
   672 {\isafoldproof}%
       
   673 %
       
   674 \isadelimproof
       
   675 \isanewline
       
   676 %
       
   677 \endisadelimproof
       
   678 \isanewline
       
   679 \isanewline
       
   680 \isacommand{lemma}\isamarkupfalse%
       
   681 \ bnullable{\isacharunderscore}{\kern0pt}Hdbmkeps{\isacharunderscore}{\kern0pt}Hd{\isacharcolon}{\kern0pt}\isanewline
       
   682 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}bnullable\ a{\isachardoublequoteclose}\ \isanewline
       
   683 \ \ \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
       
   684 %
       
   685 \isadelimproof
       
   686 \ \ %
       
   687 \endisadelimproof
       
   688 %
       
   689 \isatagproof
       
   690 \isacommand{using}\isamarkupfalse%
       
   691 \ assms\isanewline
       
   692 \ \ \isacommand{by}\isamarkupfalse%
       
   693 \ {\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}%
       
   694 \endisatagproof
       
   695 {\isafoldproof}%
       
   696 %
       
   697 \isadelimproof
       
   698 \isanewline
       
   699 %
       
   700 \endisadelimproof
       
   701 \isanewline
       
   702 \isacommand{lemma}\isamarkupfalse%
       
   703 \ r{\isadigit{1}}{\isacharcolon}{\kern0pt}\isanewline
       
   704 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymnot}\ bnullable\ a{\isachardoublequoteclose}\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
   705 \ \ \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
       
   706 %
       
   707 \isadelimproof
       
   708 \ \ %
       
   709 \endisadelimproof
       
   710 %
       
   711 \isatagproof
       
   712 \isacommand{using}\isamarkupfalse%
       
   713 \ assms\isanewline
       
   714 \ \ \isacommand{apply}\isamarkupfalse%
       
   715 {\isacharparenleft}{\kern0pt}induct\ rs{\isacharparenright}{\kern0pt}\isanewline
       
   716 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   717 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
   718 \ \ \isacommand{done}\isamarkupfalse%
       
   719 %
       
   720 \endisatagproof
       
   721 {\isafoldproof}%
       
   722 %
       
   723 \isadelimproof
       
   724 \isanewline
       
   725 %
       
   726 \endisadelimproof
       
   727 \isanewline
       
   728 \isacommand{lemma}\isamarkupfalse%
       
   729 \ r{\isadigit{2}}{\isacharcolon}{\kern0pt}\isanewline
       
   730 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}x\ {\isasymin}\ set\ rs{\isachardoublequoteclose}\ {\isachardoublequoteopen}bnullable\ x{\isachardoublequoteclose}\isanewline
       
   731 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
   732 %
       
   733 \isadelimproof
       
   734 \ \ %
       
   735 \endisadelimproof
       
   736 %
       
   737 \isatagproof
       
   738 \isacommand{using}\isamarkupfalse%
       
   739 \ assms\isanewline
       
   740 \ \ \isacommand{apply}\isamarkupfalse%
       
   741 {\isacharparenleft}{\kern0pt}induct\ rs{\isacharparenright}{\kern0pt}\isanewline
       
   742 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   743 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
   744 \ \ \isacommand{done}\isamarkupfalse%
       
   745 %
       
   746 \endisatagproof
       
   747 {\isafoldproof}%
       
   748 %
       
   749 \isadelimproof
       
   750 \isanewline
       
   751 %
       
   752 \endisadelimproof
       
   753 \isanewline
       
   754 \isacommand{lemma}\isamarkupfalse%
       
   755 \ \ r{\isadigit{3}}{\isacharcolon}{\kern0pt}\isanewline
       
   756 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymnot}\ bnullable\ r{\isachardoublequoteclose}\ \isanewline
       
   757 \ \ \ \ \ \ \ \ \ \ {\isachardoublequoteopen}\ {\isasymexists}\ x\ {\isasymin}\ set\ rs{\isachardot}{\kern0pt}\ bnullable\ x{\isachardoublequoteclose}\isanewline
       
   758 \ \ \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
       
   759 \ \ \ \ \ \ \ \ \ 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
       
   760 %
       
   761 \isadelimproof
       
   762 \ \ %
       
   763 \endisadelimproof
       
   764 %
       
   765 \isatagproof
       
   766 \isacommand{using}\isamarkupfalse%
       
   767 \ assms\isanewline
       
   768 \ \ \isacommand{apply}\isamarkupfalse%
       
   769 {\isacharparenleft}{\kern0pt}induct\ rs\ arbitrary{\isacharcolon}{\kern0pt}\ r\ bs{\isacharparenright}{\kern0pt}\isanewline
       
   770 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   771 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
   772 \ \ \isacommand{apply}\isamarkupfalse%
       
   773 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
   774 \ \ \isacommand{using}\isamarkupfalse%
       
   775 \ bnullable{\isacharunderscore}{\kern0pt}correctness\ \isacommand{apply}\isamarkupfalse%
       
   776 \ blast\isanewline
       
   777 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   778 {\isacharparenleft}{\kern0pt}auto\ simp\ add{\isacharcolon}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}correctness\ mkeps{\isacharunderscore}{\kern0pt}nullable\ retrieve{\isacharunderscore}{\kern0pt}fuse{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline
       
   779 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   780 {\isacharparenleft}{\kern0pt}subst\ retrieve{\isacharunderscore}{\kern0pt}fuse{\isadigit{2}}{\isacharbrackleft}{\kern0pt}symmetric{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline
       
   781 \ \ \isacommand{apply}\isamarkupfalse%
       
   782 \ {\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
       
   783 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   784 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   785 \ \ \isacommand{apply}\isamarkupfalse%
       
   786 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ a{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
   787 \ \ \isacommand{apply}\isamarkupfalse%
       
   788 \ {\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
       
   789 \ \ \isacommand{apply}\isamarkupfalse%
       
   790 {\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x{\isacharequal}{\kern0pt}{\isachardoublequoteopen}a{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline
       
   791 \ \ \isacommand{apply}\isamarkupfalse%
       
   792 {\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x{\isacharequal}{\kern0pt}{\isachardoublequoteopen}bs{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline
       
   793 \ \ \isacommand{apply}\isamarkupfalse%
       
   794 {\isacharparenleft}{\kern0pt}drule\ meta{\isacharunderscore}{\kern0pt}mp{\isacharparenright}{\kern0pt}\isanewline
       
   795 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   796 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   797 \ \ \isacommand{apply}\isamarkupfalse%
       
   798 {\isacharparenleft}{\kern0pt}drule\ meta{\isacharunderscore}{\kern0pt}mp{\isacharparenright}{\kern0pt}\isanewline
       
   799 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   800 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
   801 \ \ \isacommand{apply}\isamarkupfalse%
       
   802 {\isacharparenleft}{\kern0pt}subst\ retrieve{\isacharunderscore}{\kern0pt}fuse{\isadigit{2}}{\isacharbrackleft}{\kern0pt}symmetric{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline
       
   803 \ \ \isacommand{apply}\isamarkupfalse%
       
   804 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ rs{\isacharparenright}{\kern0pt}\isanewline
       
   805 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   806 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   807 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   808 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
   809 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   810 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}correctness{\isacharparenright}{\kern0pt}\isanewline
       
   811 \ \ \isacommand{apply}\isamarkupfalse%
       
   812 \ {\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
       
   813 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   814 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}correctness{\isacharparenright}{\kern0pt}\isanewline
       
   815 \ \ \isacommand{apply}\isamarkupfalse%
       
   816 \ {\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
       
   817 \ \ \isacommand{apply}\isamarkupfalse%
       
   818 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   819 \ \ \isacommand{done}\isamarkupfalse%
       
   820 %
       
   821 \endisatagproof
       
   822 {\isafoldproof}%
       
   823 %
       
   824 \isadelimproof
       
   825 \isanewline
       
   826 %
       
   827 \endisadelimproof
       
   828 \isanewline
       
   829 \isanewline
       
   830 \isacommand{lemma}\isamarkupfalse%
       
   831 \ t{\isacharcolon}{\kern0pt}\ \isanewline
       
   832 \ \ \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
       
   833 \ \ \ \ \ \ \ \ \ \ {\isachardoublequoteopen}nullable\ {\isacharparenleft}{\kern0pt}erase\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
   834 \ \ \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
       
   835 %
       
   836 \isadelimproof
       
   837 \ \ %
       
   838 \endisadelimproof
       
   839 %
       
   840 \isatagproof
       
   841 \isacommand{using}\isamarkupfalse%
       
   842 \ assms\isanewline
       
   843 \ \ \isacommand{apply}\isamarkupfalse%
       
   844 {\isacharparenleft}{\kern0pt}induct\ rs\ arbitrary{\isacharcolon}{\kern0pt}\ bs{\isacharparenright}{\kern0pt}\isanewline
       
   845 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   846 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   847 \ \ \isacommand{apply}\isamarkupfalse%
       
   848 {\isacharparenleft}{\kern0pt}auto\ simp\ add{\isacharcolon}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}correctness{\isacharparenright}{\kern0pt}\isanewline
       
   849 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   850 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ rs{\isacharparenright}{\kern0pt}\isanewline
       
   851 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   852 {\isacharparenleft}{\kern0pt}auto\ simp\ add{\isacharcolon}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}correctness{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{2}}{\isacharbrackright}{\kern0pt}\isanewline
       
   853 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   854 {\isacharparenleft}{\kern0pt}subst\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline
       
   855 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   856 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   857 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   858 {\isacharparenleft}{\kern0pt}rule\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline
       
   859 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   860 {\isacharparenleft}{\kern0pt}assumption{\isacharparenright}{\kern0pt}\isanewline
       
   861 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   862 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   863 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   864 {\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x{\isacharequal}{\kern0pt}{\isachardoublequoteopen}bs{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline
       
   865 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   866 {\isacharparenleft}{\kern0pt}drule\ meta{\isacharunderscore}{\kern0pt}mp{\isacharparenright}{\kern0pt}\isanewline
       
   867 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   868 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
   869 \ \ \ \isacommand{prefer}\isamarkupfalse%
       
   870 \ {\isadigit{2}}\isanewline
       
   871 \ \ \isacommand{apply}\isamarkupfalse%
       
   872 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ a{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
   873 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   874 {\isacharparenleft}{\kern0pt}subst\ bnullable{\isacharunderscore}{\kern0pt}Hdbmkeps{\isacharunderscore}{\kern0pt}Hd{\isacharparenright}{\kern0pt}\isanewline
       
   875 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   876 \ blast\isanewline
       
   877 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   878 {\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}nullable\ {\isacharparenleft}{\kern0pt}erase\ a{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
   879 \ \ \isacommand{prefer}\isamarkupfalse%
       
   880 \ {\isadigit{2}}\isanewline
       
   881 \ \ \isacommand{using}\isamarkupfalse%
       
   882 \ bnullable{\isacharunderscore}{\kern0pt}correctness\ \isacommand{apply}\isamarkupfalse%
       
   883 \ blast\isanewline
       
   884 \ \ \isacommand{apply}\isamarkupfalse%
       
   885 \ {\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
       
   886 \ \ \isacommand{apply}\isamarkupfalse%
       
   887 {\isacharparenleft}{\kern0pt}subst\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline
       
   888 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   889 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   890 \ \ \isacommand{using}\isamarkupfalse%
       
   891 \ r{\isadigit{2}}\ \isacommand{apply}\isamarkupfalse%
       
   892 \ blast\isanewline
       
   893 \ \ \isacommand{apply}\isamarkupfalse%
       
   894 {\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x{\isacharequal}{\kern0pt}{\isachardoublequoteopen}bs{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline
       
   895 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   896 {\isacharparenleft}{\kern0pt}drule\ meta{\isacharunderscore}{\kern0pt}mp{\isacharparenright}{\kern0pt}\isanewline
       
   897 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   898 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
   899 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   900 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   901 \ \ \isacommand{using}\isamarkupfalse%
       
   902 \ r{\isadigit{3}}\ \isacommand{apply}\isamarkupfalse%
       
   903 \ blast\isanewline
       
   904 \ \ \isacommand{apply}\isamarkupfalse%
       
   905 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
   906 \ \ \isacommand{using}\isamarkupfalse%
       
   907 \ r{\isadigit{3}}\ \isacommand{by}\isamarkupfalse%
       
   908 \ blast%
       
   909 \endisatagproof
       
   910 {\isafoldproof}%
       
   911 %
       
   912 \isadelimproof
       
   913 \isanewline
       
   914 %
       
   915 \endisadelimproof
       
   916 \isanewline
       
   917 \isacommand{lemma}\isamarkupfalse%
       
   918 \ bmkeps{\isacharunderscore}{\kern0pt}retrieve{\isacharcolon}{\kern0pt}\isanewline
       
   919 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}nullable\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
   920 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}bmkeps\ r\ {\isacharequal}{\kern0pt}\ retrieve\ r\ {\isacharparenleft}{\kern0pt}mkeps\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
   921 %
       
   922 \isadelimproof
       
   923 \ \ %
       
   924 \endisadelimproof
       
   925 %
       
   926 \isatagproof
       
   927 \isacommand{using}\isamarkupfalse%
       
   928 \ assms\isanewline
       
   929 \ \ \isacommand{apply}\isamarkupfalse%
       
   930 {\isacharparenleft}{\kern0pt}induct\ r{\isacharparenright}{\kern0pt}\isanewline
       
   931 \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   932 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   933 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   934 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   935 \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   936 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   937 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   938 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   939 \ \ \ \isacommand{defer}\isamarkupfalse%
       
   940 \isanewline
       
   941 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   942 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   943 \ \ \isacommand{apply}\isamarkupfalse%
       
   944 {\isacharparenleft}{\kern0pt}rule\ t{\isacharparenright}{\kern0pt}\isanewline
       
   945 \ \ \ \isacommand{apply}\isamarkupfalse%
       
   946 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
   947 \ \ \isacommand{done}\isamarkupfalse%
       
   948 %
       
   949 \endisatagproof
       
   950 {\isafoldproof}%
       
   951 %
       
   952 \isadelimproof
       
   953 \isanewline
       
   954 %
       
   955 \endisadelimproof
       
   956 \isanewline
       
   957 \isacommand{lemma}\isamarkupfalse%
       
   958 \ bder{\isacharunderscore}{\kern0pt}retrieve{\isacharcolon}{\kern0pt}\isanewline
       
   959 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ der\ c\ {\isacharparenleft}{\kern0pt}erase\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
   960 \ \ \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
       
   961 %
       
   962 \isadelimproof
       
   963 \ \ %
       
   964 \endisadelimproof
       
   965 %
       
   966 \isatagproof
       
   967 \isacommand{using}\isamarkupfalse%
       
   968 \ assms\isanewline
       
   969 \ \ \isacommand{apply}\isamarkupfalse%
       
   970 {\isacharparenleft}{\kern0pt}induct\ r\ arbitrary{\isacharcolon}{\kern0pt}\ v\ rule{\isacharcolon}{\kern0pt}\ erase{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
   971 \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   972 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   973 \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   974 {\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline
       
   975 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   976 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   977 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   978 {\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\ \isanewline
       
   979 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   980 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   981 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   982 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}c\ {\isacharequal}{\kern0pt}\ ca{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
   983 \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   984 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   985 \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   986 {\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline
       
   987 \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   988 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   989 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   990 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   991 \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   992 {\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline
       
   993 \ \ \isacommand{apply}\isamarkupfalse%
       
   994 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   995 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   996 {\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline
       
   997 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
   998 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
   999 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1000 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1001 \ \ \isacommand{apply}\isamarkupfalse%
       
  1002 {\isacharparenleft}{\kern0pt}rename{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}r\isactrlsub {\isadigit{1}}{\isachardoublequoteclose}\ {\isachardoublequoteopen}r\isactrlsub {\isadigit{2}}{\isachardoublequoteclose}\ rs\ v{\isacharparenright}{\kern0pt}\isanewline
       
  1003 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1004 {\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline
       
  1005 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1006 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1007 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1008 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1009 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1010 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ rs{\isacharparenright}{\kern0pt}\isanewline
       
  1011 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1012 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1013 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1014 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1015 \ \ \isacommand{apply}\isamarkupfalse%
       
  1016 \ {\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
       
  1017 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1018 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1019 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1020 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}nullable\ {\isacharparenleft}{\kern0pt}erase\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  1021 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1022 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1023 \ \ \isacommand{apply}\isamarkupfalse%
       
  1024 {\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline
       
  1025 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1026 {\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ r{\isadigit{1}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  1027 \ \ \isacommand{prefer}\isamarkupfalse%
       
  1028 \ {\isadigit{2}}\isanewline
       
  1029 \ \ \isacommand{using}\isamarkupfalse%
       
  1030 \ bnullable{\isacharunderscore}{\kern0pt}correctness\ \isacommand{apply}\isamarkupfalse%
       
  1031 \ blast\isanewline
       
  1032 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1033 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1034 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1035 {\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline
       
  1036 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1037 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1038 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1039 {\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ r{\isadigit{1}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  1040 \ \ \isacommand{prefer}\isamarkupfalse%
       
  1041 \ {\isadigit{2}}\isanewline
       
  1042 \ \ \isacommand{using}\isamarkupfalse%
       
  1043 \ bnullable{\isacharunderscore}{\kern0pt}correctness\ \isacommand{apply}\isamarkupfalse%
       
  1044 \ blast\isanewline
       
  1045 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1046 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1047 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1048 {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ retrieve{\isacharunderscore}{\kern0pt}fuse{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline
       
  1049 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1050 {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bmkeps{\isacharunderscore}{\kern0pt}retrieve{\isacharparenright}{\kern0pt}\isanewline
       
  1051 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1052 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1053 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1054 {\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline
       
  1055 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1056 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1057 \ \ \isacommand{using}\isamarkupfalse%
       
  1058 \ bnullable{\isacharunderscore}{\kern0pt}correctness\ \isacommand{apply}\isamarkupfalse%
       
  1059 \ blast\isanewline
       
  1060 \ \ \isacommand{apply}\isamarkupfalse%
       
  1061 {\isacharparenleft}{\kern0pt}rename{\isacharunderscore}{\kern0pt}tac\ bs\ r\ v{\isacharparenright}{\kern0pt}\isanewline
       
  1062 \ \ \isacommand{apply}\isamarkupfalse%
       
  1063 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1064 \ \ \isacommand{apply}\isamarkupfalse%
       
  1065 {\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline
       
  1066 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1067 {\isacharparenleft}{\kern0pt}clarify{\isacharparenright}{\kern0pt}\isanewline
       
  1068 \ \ \isacommand{apply}\isamarkupfalse%
       
  1069 {\isacharparenleft}{\kern0pt}erule\ Prf{\isacharunderscore}{\kern0pt}elims{\isacharparenright}{\kern0pt}\isanewline
       
  1070 \ \ \isacommand{apply}\isamarkupfalse%
       
  1071 {\isacharparenleft}{\kern0pt}clarify{\isacharparenright}{\kern0pt}\isanewline
       
  1072 \ \ \isacommand{apply}\isamarkupfalse%
       
  1073 {\isacharparenleft}{\kern0pt}subst\ injval{\isachardot}{\kern0pt}simps{\isacharparenright}{\kern0pt}\isanewline
       
  1074 \ \ \isacommand{apply}\isamarkupfalse%
       
  1075 {\isacharparenleft}{\kern0pt}simp\ del{\isacharcolon}{\kern0pt}\ retrieve{\isachardot}{\kern0pt}simps{\isacharparenright}{\kern0pt}\isanewline
       
  1076 \ \ \isacommand{apply}\isamarkupfalse%
       
  1077 {\isacharparenleft}{\kern0pt}subst\ retrieve{\isachardot}{\kern0pt}simps{\isacharparenright}{\kern0pt}\isanewline
       
  1078 \ \ \isacommand{apply}\isamarkupfalse%
       
  1079 {\isacharparenleft}{\kern0pt}subst\ retrieve{\isachardot}{\kern0pt}simps{\isacharparenright}{\kern0pt}\isanewline
       
  1080 \ \ \isacommand{apply}\isamarkupfalse%
       
  1081 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1082 \ \ \isacommand{apply}\isamarkupfalse%
       
  1083 {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ retrieve{\isacharunderscore}{\kern0pt}fuse{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline
       
  1084 \ \ \isacommand{done}\isamarkupfalse%
       
  1085 %
       
  1086 \endisatagproof
       
  1087 {\isafoldproof}%
       
  1088 %
       
  1089 \isadelimproof
       
  1090 \isanewline
       
  1091 %
       
  1092 \endisadelimproof
       
  1093 \ \ \isanewline
       
  1094 \isanewline
       
  1095 \isanewline
       
  1096 \isacommand{lemma}\isamarkupfalse%
       
  1097 \ MAIN{\isacharunderscore}{\kern0pt}decode{\isacharcolon}{\kern0pt}\isanewline
       
  1098 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ ders\ s\ r{\isachardoublequoteclose}\isanewline
       
  1099 \ \ \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
       
  1100 %
       
  1101 \isadelimproof
       
  1102 \ \ %
       
  1103 \endisadelimproof
       
  1104 %
       
  1105 \isatagproof
       
  1106 \isacommand{using}\isamarkupfalse%
       
  1107 \ assms\isanewline
       
  1108 \isacommand{proof}\isamarkupfalse%
       
  1109 \ {\isacharparenleft}{\kern0pt}induct\ s\ arbitrary{\isacharcolon}{\kern0pt}\ v\ rule{\isacharcolon}{\kern0pt}\ rev{\isacharunderscore}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  1110 \ \ \isacommand{case}\isamarkupfalse%
       
  1111 \ Nil\isanewline
       
  1112 \ \ \isacommand{have}\isamarkupfalse%
       
  1113 \ {\isachardoublequoteopen}{\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ ders\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ r{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse%
       
  1114 \ fact\isanewline
       
  1115 \ \ \isacommand{then}\isamarkupfalse%
       
  1116 \ \isacommand{have}\isamarkupfalse%
       
  1117 \ {\isachardoublequoteopen}{\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ r{\isachardoublequoteclose}\ \isacommand{by}\isamarkupfalse%
       
  1118 \ simp\isanewline
       
  1119 \ \ \isacommand{then}\isamarkupfalse%
       
  1120 \ \isacommand{have}\isamarkupfalse%
       
  1121 \ {\isachardoublequoteopen}Some\ v\ {\isacharequal}{\kern0pt}\ decode\ {\isacharparenleft}{\kern0pt}retrieve\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ v{\isacharparenright}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline
       
  1122 \ \ \ \ \isacommand{using}\isamarkupfalse%
       
  1123 \ decode{\isacharunderscore}{\kern0pt}code\ retrieve{\isacharunderscore}{\kern0pt}code\ \isacommand{by}\isamarkupfalse%
       
  1124 \ auto\isanewline
       
  1125 \ \ \isacommand{then}\isamarkupfalse%
       
  1126 \ \isacommand{show}\isamarkupfalse%
       
  1127 \ {\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
       
  1128 \ \ \ \ \isacommand{by}\isamarkupfalse%
       
  1129 \ simp\isanewline
       
  1130 \isacommand{next}\isamarkupfalse%
       
  1131 \isanewline
       
  1132 \ \ \isacommand{case}\isamarkupfalse%
       
  1133 \ {\isacharparenleft}{\kern0pt}snoc\ c\ s\ v{\isacharparenright}{\kern0pt}\isanewline
       
  1134 \ \ \isacommand{have}\isamarkupfalse%
       
  1135 \ IH{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymAnd}v{\isachardot}{\kern0pt}\ {\isasymTurnstile}\ v\ {\isacharcolon}{\kern0pt}\ ders\ s\ r\ {\isasymLongrightarrow}\ \isanewline
       
  1136 \ \ \ \ \ 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%
       
  1137 \ fact\isanewline
       
  1138 \ \ \isacommand{have}\isamarkupfalse%
       
  1139 \ 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%
       
  1140 \ fact\isanewline
       
  1141 \ \ \isacommand{then}\isamarkupfalse%
       
  1142 \ \isacommand{have}\isamarkupfalse%
       
  1143 \ asm{\isadigit{2}}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymTurnstile}\ injval\ {\isacharparenleft}{\kern0pt}ders\ s\ r{\isacharparenright}{\kern0pt}\ c\ v\ {\isacharcolon}{\kern0pt}\ ders\ s\ r{\isachardoublequoteclose}\ \isanewline
       
  1144 \ \ \ \ \isacommand{by}\isamarkupfalse%
       
  1145 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ Prf{\isacharunderscore}{\kern0pt}injval\ ders{\isacharunderscore}{\kern0pt}append{\isacharparenright}{\kern0pt}\isanewline
       
  1146 \ \ \isacommand{have}\isamarkupfalse%
       
  1147 \ {\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
       
  1148 \ \ \ \ \isacommand{by}\isamarkupfalse%
       
  1149 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ flex{\isacharunderscore}{\kern0pt}append{\isacharparenright}{\kern0pt}\isanewline
       
  1150 \ \ \isacommand{also}\isamarkupfalse%
       
  1151 \ \isacommand{have}\isamarkupfalse%
       
  1152 \ {\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
       
  1153 \ \ \ \ \isacommand{using}\isamarkupfalse%
       
  1154 \ asm{\isadigit{2}}\ IH\ \isacommand{by}\isamarkupfalse%
       
  1155 \ simp\isanewline
       
  1156 \ \ \isacommand{also}\isamarkupfalse%
       
  1157 \ \isacommand{have}\isamarkupfalse%
       
  1158 \ {\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
       
  1159 \ \ \ \ \isacommand{using}\isamarkupfalse%
       
  1160 \ asm\ \isacommand{by}\isamarkupfalse%
       
  1161 \ {\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all\ add{\isacharcolon}{\kern0pt}\ bder{\isacharunderscore}{\kern0pt}retrieve\ ders{\isacharunderscore}{\kern0pt}append{\isacharparenright}{\kern0pt}\isanewline
       
  1162 \ \ \isacommand{finally}\isamarkupfalse%
       
  1163 \ \isacommand{show}\isamarkupfalse%
       
  1164 \ {\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
       
  1165 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 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%
       
  1166 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bders{\isacharunderscore}{\kern0pt}append{\isacharparenright}{\kern0pt}\isanewline
       
  1167 \isacommand{qed}\isamarkupfalse%
       
  1168 %
       
  1169 \endisatagproof
       
  1170 {\isafoldproof}%
       
  1171 %
       
  1172 \isadelimproof
       
  1173 \isanewline
       
  1174 %
       
  1175 \endisadelimproof
       
  1176 \isanewline
       
  1177 \isanewline
       
  1178 \isacommand{definition}\isamarkupfalse%
       
  1179 \ blex\ \isakeyword{where}\isanewline
       
  1180 \ {\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
       
  1181 \isanewline
       
  1182 \isanewline
       
  1183 \isanewline
       
  1184 \isacommand{definition}\isamarkupfalse%
       
  1185 \ blexer\ \isakeyword{where}\isanewline
       
  1186 \ {\isachardoublequoteopen}blexer\ r\ s\ {\isasymequiv}\ if\ bnullable\ {\isacharparenleft}{\kern0pt}bders\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ s{\isacharparenright}{\kern0pt}\ then\ \isanewline
       
  1187 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ decode\ {\isacharparenleft}{\kern0pt}bmkeps\ {\isacharparenleft}{\kern0pt}bders\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ s{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ r\ else\ None{\isachardoublequoteclose}\isanewline
       
  1188 \isanewline
       
  1189 \isacommand{lemma}\isamarkupfalse%
       
  1190 \ blexer{\isacharunderscore}{\kern0pt}correctness{\isacharcolon}{\kern0pt}\isanewline
       
  1191 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}blexer\ r\ s\ {\isacharequal}{\kern0pt}\ lexer\ r\ s{\isachardoublequoteclose}\isanewline
       
  1192 %
       
  1193 \isadelimproof
       
  1194 %
       
  1195 \endisadelimproof
       
  1196 %
       
  1197 \isatagproof
       
  1198 \isacommand{proof}\isamarkupfalse%
       
  1199 \ {\isacharminus}{\kern0pt}\isanewline
       
  1200 \ \ \isacommand{{\isacharbraceleft}{\kern0pt}}\isamarkupfalse%
       
  1201 \ \isacommand{define}\isamarkupfalse%
       
  1202 \ bds\ \isakeyword{where}\ {\isachardoublequoteopen}bds\ {\isasymequiv}\ bders\ {\isacharparenleft}{\kern0pt}intern\ r{\isacharparenright}{\kern0pt}\ s{\isachardoublequoteclose}\isanewline
       
  1203 \ \ \ \ \isacommand{define}\isamarkupfalse%
       
  1204 \ ds\ \ \isakeyword{where}\ {\isachardoublequoteopen}ds\ {\isasymequiv}\ ders\ s\ r{\isachardoublequoteclose}\isanewline
       
  1205 \ \ \ \ \isacommand{assume}\isamarkupfalse%
       
  1206 \ asm{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}nullable\ ds{\isachardoublequoteclose}\isanewline
       
  1207 \ \ \ \ \isacommand{have}\isamarkupfalse%
       
  1208 \ era{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}erase\ bds\ {\isacharequal}{\kern0pt}\ ds{\isachardoublequoteclose}\ \isanewline
       
  1209 \ \ \ \ \ \ \isacommand{unfolding}\isamarkupfalse%
       
  1210 \ ds{\isacharunderscore}{\kern0pt}def\ bds{\isacharunderscore}{\kern0pt}def\ \isacommand{by}\isamarkupfalse%
       
  1211 \ simp\isanewline
       
  1212 \ \ \ \ \isacommand{have}\isamarkupfalse%
       
  1213 \ mke{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isasymTurnstile}\ mkeps\ ds\ {\isacharcolon}{\kern0pt}\ ds{\isachardoublequoteclose}\isanewline
       
  1214 \ \ \ \ \ \ \isacommand{using}\isamarkupfalse%
       
  1215 \ asm\ \isacommand{by}\isamarkupfalse%
       
  1216 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ mkeps{\isacharunderscore}{\kern0pt}nullable{\isacharparenright}{\kern0pt}\isanewline
       
  1217 \ \ \ \ \isacommand{have}\isamarkupfalse%
       
  1218 \ {\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
       
  1219 \ \ \ \ \ \ \isacommand{using}\isamarkupfalse%
       
  1220 \ bmkeps{\isacharunderscore}{\kern0pt}retrieve\isanewline
       
  1221 \ \ \ \ \ \ \isacommand{using}\isamarkupfalse%
       
  1222 \ asm\ era\ \isacommand{by}\isamarkupfalse%
       
  1223 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bmkeps{\isacharunderscore}{\kern0pt}retrieve{\isacharparenright}{\kern0pt}\isanewline
       
  1224 \ \ \ \ \isacommand{also}\isamarkupfalse%
       
  1225 \ \isacommand{have}\isamarkupfalse%
       
  1226 \ {\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
       
  1227 \ \ \ \ \ \ \isacommand{using}\isamarkupfalse%
       
  1228 \ mke\ \isacommand{by}\isamarkupfalse%
       
  1229 \ {\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all\ add{\isacharcolon}{\kern0pt}\ MAIN{\isacharunderscore}{\kern0pt}decode\ ds{\isacharunderscore}{\kern0pt}def\ bds{\isacharunderscore}{\kern0pt}def{\isacharparenright}{\kern0pt}\isanewline
       
  1230 \ \ \ \ \isacommand{finally}\isamarkupfalse%
       
  1231 \ \isacommand{have}\isamarkupfalse%
       
  1232 \ {\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
       
  1233 \ \ \ \ \ \ \isacommand{unfolding}\isamarkupfalse%
       
  1234 \ bds{\isacharunderscore}{\kern0pt}def\ ds{\isacharunderscore}{\kern0pt}def\ \isacommand{{\isachardot}{\kern0pt}}\isamarkupfalse%
       
  1235 \isanewline
       
  1236 \ \ \isacommand{{\isacharbraceright}{\kern0pt}}\isamarkupfalse%
       
  1237 \isanewline
       
  1238 \ \ \isacommand{then}\isamarkupfalse%
       
  1239 \ \isacommand{show}\isamarkupfalse%
       
  1240 \ {\isachardoublequoteopen}blexer\ r\ s\ {\isacharequal}{\kern0pt}\ lexer\ r\ s{\isachardoublequoteclose}\isanewline
       
  1241 \ \ \ \ \isacommand{unfolding}\isamarkupfalse%
       
  1242 \ blexer{\isacharunderscore}{\kern0pt}def\ lexer{\isacharunderscore}{\kern0pt}flex\isanewline
       
  1243 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1244 {\isacharparenleft}{\kern0pt}subst\ bnullable{\isacharunderscore}{\kern0pt}correctness{\isacharbrackleft}{\kern0pt}symmetric{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline
       
  1245 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1246 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1247 \ \ \ \ \isacommand{done}\isamarkupfalse%
       
  1248 \isanewline
       
  1249 \isacommand{qed}\isamarkupfalse%
       
  1250 %
       
  1251 \endisatagproof
       
  1252 {\isafoldproof}%
       
  1253 %
       
  1254 \isadelimproof
       
  1255 \isanewline
       
  1256 %
       
  1257 \endisadelimproof
       
  1258 \isanewline
       
  1259 \isanewline
       
  1260 \isacommand{fun}\isamarkupfalse%
       
  1261 \ 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
       
  1262 \ \ \isakeyword{where}\isanewline
       
  1263 \ \ {\isachardoublequoteopen}distinctBy\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ f\ acc\ {\isacharequal}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
  1264 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}distinctBy\ {\isacharparenleft}{\kern0pt}x{\isacharhash}{\kern0pt}xs{\isacharparenright}{\kern0pt}\ f\ acc\ {\isacharequal}{\kern0pt}\ \isanewline
       
  1265 \ \ \ \ \ {\isacharparenleft}{\kern0pt}if\ {\isacharparenleft}{\kern0pt}f\ x{\isacharparenright}{\kern0pt}\ {\isasymin}\ acc\ then\ distinctBy\ xs\ f\ acc\ \isanewline
       
  1266 \ \ \ \ \ \ 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
       
  1267 \isanewline
       
  1268 \isanewline
       
  1269 \isanewline
       
  1270 \isanewline
       
  1271 \isacommand{fun}\isamarkupfalse%
       
  1272 \ flts\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ list\ {\isasymRightarrow}\ arexp\ list{\isachardoublequoteclose}\isanewline
       
  1273 \ \ \isakeyword{where}\ \isanewline
       
  1274 \ \ {\isachardoublequoteopen}flts\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
  1275 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}flts\ {\isacharparenleft}{\kern0pt}AZERO\ {\isacharhash}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ flts\ rs{\isachardoublequoteclose}\isanewline
       
  1276 {\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
       
  1277 {\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
       
  1278 \isanewline
       
  1279 \isanewline
       
  1280 \isanewline
       
  1281 \isanewline
       
  1282 \isacommand{fun}\isamarkupfalse%
       
  1283 \ li\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}bit\ list\ {\isasymRightarrow}\ arexp\ list\ {\isasymRightarrow}\ arexp{\isachardoublequoteclose}\isanewline
       
  1284 \ \ \isakeyword{where}\isanewline
       
  1285 \ \ {\isachardoublequoteopen}li\ {\isacharunderscore}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}\isanewline
       
  1286 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}li\ bs\ {\isacharbrackleft}{\kern0pt}a{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ fuse\ bs\ a{\isachardoublequoteclose}\isanewline
       
  1287 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}li\ bs\ as\ {\isacharequal}{\kern0pt}\ AALTs\ bs\ as{\isachardoublequoteclose}\isanewline
       
  1288 \isanewline
       
  1289 \isanewline
       
  1290 \isanewline
       
  1291 \isanewline
       
  1292 \isacommand{fun}\isamarkupfalse%
       
  1293 \ bsimp{\isacharunderscore}{\kern0pt}ASEQ\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}bit\ list\ {\isasymRightarrow}\ arexp\ {\isasymRightarrow}\ arexp\ {\isasymRightarrow}\ arexp{\isachardoublequoteclose}\isanewline
       
  1294 \ \ \isakeyword{where}\isanewline
       
  1295 \ \ {\isachardoublequoteopen}bsimp{\isacharunderscore}{\kern0pt}ASEQ\ {\isacharunderscore}{\kern0pt}\ AZERO\ {\isacharunderscore}{\kern0pt}\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}\isanewline
       
  1296 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bsimp{\isacharunderscore}{\kern0pt}ASEQ\ {\isacharunderscore}{\kern0pt}\ {\isacharunderscore}{\kern0pt}\ AZERO\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}\isanewline
       
  1297 {\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
       
  1298 {\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
       
  1299 \isanewline
       
  1300 \isanewline
       
  1301 \isacommand{fun}\isamarkupfalse%
       
  1302 \ bsimp{\isacharunderscore}{\kern0pt}AALTs\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}bit\ list\ {\isasymRightarrow}\ arexp\ list\ {\isasymRightarrow}\ arexp{\isachardoublequoteclose}\isanewline
       
  1303 \ \ \isakeyword{where}\isanewline
       
  1304 \ \ {\isachardoublequoteopen}bsimp{\isacharunderscore}{\kern0pt}AALTs\ {\isacharunderscore}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}\isanewline
       
  1305 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bsimp{\isacharunderscore}{\kern0pt}AALTs\ bs{\isadigit{1}}\ {\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ fuse\ bs{\isadigit{1}}\ r{\isachardoublequoteclose}\isanewline
       
  1306 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bsimp{\isacharunderscore}{\kern0pt}AALTs\ bs{\isadigit{1}}\ rs\ {\isacharequal}{\kern0pt}\ AALTs\ bs{\isadigit{1}}\ rs{\isachardoublequoteclose}\isanewline
       
  1307 \isanewline
       
  1308 \isanewline
       
  1309 \isacommand{fun}\isamarkupfalse%
       
  1310 \ bsimp\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ arexp{\isachardoublequoteclose}\ \isanewline
       
  1311 \ \ \isakeyword{where}\isanewline
       
  1312 \ \ {\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
       
  1313 {\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
       
  1314 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}bsimp\ r\ {\isacharequal}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline
       
  1315 \isanewline
       
  1316 \isanewline
       
  1317 \isanewline
       
  1318 \isanewline
       
  1319 \isacommand{fun}\isamarkupfalse%
       
  1320 \ \isanewline
       
  1321 \ \ bders{\isacharunderscore}{\kern0pt}simp\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ string\ {\isasymRightarrow}\ arexp{\isachardoublequoteclose}\isanewline
       
  1322 \isakeyword{where}\isanewline
       
  1323 \ \ {\isachardoublequoteopen}bders{\isacharunderscore}{\kern0pt}simp\ r\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline
       
  1324 {\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
       
  1325 \isanewline
       
  1326 \isacommand{definition}\isamarkupfalse%
       
  1327 \ blexer{\isacharunderscore}{\kern0pt}simp\ \isakeyword{where}\isanewline
       
  1328 \ {\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
       
  1329 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 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
       
  1330 \isanewline
       
  1331 \isacommand{export{\isacharunderscore}{\kern0pt}code}\isamarkupfalse%
       
  1332 \ bders{\isacharunderscore}{\kern0pt}simp\ \isakeyword{in}\ Scala\ \isakeyword{module{\isacharunderscore}{\kern0pt}name}\ Example\isanewline
       
  1333 \isanewline
       
  1334 \isacommand{lemma}\isamarkupfalse%
       
  1335 \ bders{\isacharunderscore}{\kern0pt}simp{\isacharunderscore}{\kern0pt}append{\isacharcolon}{\kern0pt}\isanewline
       
  1336 \ \ \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
       
  1337 %
       
  1338 \isadelimproof
       
  1339 \ \ %
       
  1340 \endisadelimproof
       
  1341 %
       
  1342 \isatagproof
       
  1343 \isacommand{apply}\isamarkupfalse%
       
  1344 {\isacharparenleft}{\kern0pt}induct\ s{\isadigit{1}}\ arbitrary{\isacharcolon}{\kern0pt}\ r\ s{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline
       
  1345 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1346 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1347 \ \ \isacommand{apply}\isamarkupfalse%
       
  1348 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1349 \ \ \isacommand{done}\isamarkupfalse%
       
  1350 %
       
  1351 \endisatagproof
       
  1352 {\isafoldproof}%
       
  1353 %
       
  1354 \isadelimproof
       
  1355 \isanewline
       
  1356 %
       
  1357 \endisadelimproof
       
  1358 \isanewline
       
  1359 \isanewline
       
  1360 \isanewline
       
  1361 \isanewline
       
  1362 \isanewline
       
  1363 \isanewline
       
  1364 \isanewline
       
  1365 \isacommand{lemma}\isamarkupfalse%
       
  1366 \ L{\isacharunderscore}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isacharcolon}{\kern0pt}\isanewline
       
  1367 \ \ {\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
       
  1368 %
       
  1369 \isadelimproof
       
  1370 \ \ %
       
  1371 \endisadelimproof
       
  1372 %
       
  1373 \isatagproof
       
  1374 \isacommand{apply}\isamarkupfalse%
       
  1375 {\isacharparenleft}{\kern0pt}induct\ bs\ r{\isadigit{1}}\ r{\isadigit{2}}\ rule{\isacharcolon}{\kern0pt}\ bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  1376 \ \ \isacommand{apply}\isamarkupfalse%
       
  1377 {\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all{\isacharparenright}{\kern0pt}\isanewline
       
  1378 \ \ \isacommand{by}\isamarkupfalse%
       
  1379 \ {\isacharparenleft}{\kern0pt}metis\ erase{\isacharunderscore}{\kern0pt}fuse\ fuse{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}%
       
  1380 \endisatagproof
       
  1381 {\isafoldproof}%
       
  1382 %
       
  1383 \isadelimproof
       
  1384 \isanewline
       
  1385 %
       
  1386 \endisadelimproof
       
  1387 \isanewline
       
  1388 \isacommand{lemma}\isamarkupfalse%
       
  1389 \ L{\isacharunderscore}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}AALTs{\isacharcolon}{\kern0pt}\isanewline
       
  1390 \ \ {\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
       
  1391 %
       
  1392 \isadelimproof
       
  1393 \ \ %
       
  1394 \endisadelimproof
       
  1395 %
       
  1396 \isatagproof
       
  1397 \isacommand{apply}\isamarkupfalse%
       
  1398 {\isacharparenleft}{\kern0pt}induct\ bs\ rs\ rule{\isacharcolon}{\kern0pt}\ bsimp{\isacharunderscore}{\kern0pt}AALTs{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  1399 \ \ \isacommand{apply}\isamarkupfalse%
       
  1400 {\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all\ add{\isacharcolon}{\kern0pt}\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline
       
  1401 \ \ \isacommand{done}\isamarkupfalse%
       
  1402 %
       
  1403 \endisatagproof
       
  1404 {\isafoldproof}%
       
  1405 %
       
  1406 \isadelimproof
       
  1407 \isanewline
       
  1408 %
       
  1409 \endisadelimproof
       
  1410 \isanewline
       
  1411 \isacommand{lemma}\isamarkupfalse%
       
  1412 \ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}AALTs{\isacharcolon}{\kern0pt}\isanewline
       
  1413 \ \ \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
       
  1414 %
       
  1415 \isadelimproof
       
  1416 \ \ %
       
  1417 \endisadelimproof
       
  1418 %
       
  1419 \isatagproof
       
  1420 \isacommand{apply}\isamarkupfalse%
       
  1421 {\isacharparenleft}{\kern0pt}induct\ rs{\isacharparenright}{\kern0pt}\isanewline
       
  1422 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1423 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1424 \ \ \isacommand{apply}\isamarkupfalse%
       
  1425 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1426 \ \ \isacommand{apply}\isamarkupfalse%
       
  1427 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ rs{\isacharparenright}{\kern0pt}\isanewline
       
  1428 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1429 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1430 \ \ \isacommand{apply}\isamarkupfalse%
       
  1431 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1432 \ \ \isacommand{done}\isamarkupfalse%
       
  1433 %
       
  1434 \endisatagproof
       
  1435 {\isafoldproof}%
       
  1436 %
       
  1437 \isadelimproof
       
  1438 \isanewline
       
  1439 %
       
  1440 \endisadelimproof
       
  1441 \isanewline
       
  1442 \isacommand{lemma}\isamarkupfalse%
       
  1443 \ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}flts{\isacharcolon}{\kern0pt}\isanewline
       
  1444 \ \ \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
       
  1445 %
       
  1446 \isadelimproof
       
  1447 \ \ %
       
  1448 \endisadelimproof
       
  1449 %
       
  1450 \isatagproof
       
  1451 \isacommand{apply}\isamarkupfalse%
       
  1452 {\isacharparenleft}{\kern0pt}induct\ rs\ rule{\isacharcolon}{\kern0pt}\ flts{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  1453 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1454 {\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all{\isacharparenright}{\kern0pt}\isanewline
       
  1455 \ \ \isacommand{apply}\isamarkupfalse%
       
  1456 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
  1457 \ \ \isacommand{using}\isamarkupfalse%
       
  1458 \ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}AALTs\ erase{\isacharunderscore}{\kern0pt}fuse\ \isacommand{apply}\isamarkupfalse%
       
  1459 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  1460 \ \ \isacommand{by}\isamarkupfalse%
       
  1461 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}AALTs\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}%
       
  1462 \endisatagproof
       
  1463 {\isafoldproof}%
       
  1464 %
       
  1465 \isadelimproof
       
  1466 \isanewline
       
  1467 %
       
  1468 \endisadelimproof
       
  1469 \isanewline
       
  1470 \isacommand{lemma}\isamarkupfalse%
       
  1471 \ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}dB{\isacharunderscore}{\kern0pt}acc{\isacharcolon}{\kern0pt}\isanewline
       
  1472 \ \ \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
       
  1473 %
       
  1474 \isadelimproof
       
  1475 \ \ %
       
  1476 \endisadelimproof
       
  1477 %
       
  1478 \isatagproof
       
  1479 \isacommand{apply}\isamarkupfalse%
       
  1480 {\isacharparenleft}{\kern0pt}induction\ rs\ arbitrary{\isacharcolon}{\kern0pt}\ acc{\isacharparenright}{\kern0pt}\isanewline
       
  1481 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1482 \ simp\isanewline
       
  1483 \ \ \isacommand{apply}\isamarkupfalse%
       
  1484 \ simp\isanewline
       
  1485 \ \ \isacommand{by}\isamarkupfalse%
       
  1486 \ {\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}%
       
  1487 \endisatagproof
       
  1488 {\isafoldproof}%
       
  1489 %
       
  1490 \isadelimproof
       
  1491 \isanewline
       
  1492 %
       
  1493 \endisadelimproof
       
  1494 \isanewline
       
  1495 \isacommand{lemma}\isamarkupfalse%
       
  1496 \ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}dB{\isacharcolon}{\kern0pt}\isanewline
       
  1497 \ \ \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
       
  1498 %
       
  1499 \isadelimproof
       
  1500 \ \ %
       
  1501 \endisadelimproof
       
  1502 %
       
  1503 \isatagproof
       
  1504 \isacommand{by}\isamarkupfalse%
       
  1505 \ {\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}%
       
  1506 \endisatagproof
       
  1507 {\isafoldproof}%
       
  1508 %
       
  1509 \isadelimproof
       
  1510 \isanewline
       
  1511 %
       
  1512 \endisadelimproof
       
  1513 \isanewline
       
  1514 \isacommand{lemma}\isamarkupfalse%
       
  1515 \ L{\isacharunderscore}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}erase{\isacharcolon}{\kern0pt}\isanewline
       
  1516 \ \ \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
       
  1517 %
       
  1518 \isadelimproof
       
  1519 \ \ %
       
  1520 \endisadelimproof
       
  1521 %
       
  1522 \isatagproof
       
  1523 \isacommand{apply}\isamarkupfalse%
       
  1524 {\isacharparenleft}{\kern0pt}induct\ r{\isacharparenright}{\kern0pt}\isanewline
       
  1525 \ \ \isacommand{apply}\isamarkupfalse%
       
  1526 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1527 \ \ \isacommand{apply}\isamarkupfalse%
       
  1528 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1529 \ \ \isacommand{apply}\isamarkupfalse%
       
  1530 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1531 \ \ \isacommand{apply}\isamarkupfalse%
       
  1532 {\isacharparenleft}{\kern0pt}auto\ simp\ add{\isacharcolon}{\kern0pt}\ Sequ{\isacharunderscore}{\kern0pt}def{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  1533 \ \ \isacommand{apply}\isamarkupfalse%
       
  1534 {\isacharparenleft}{\kern0pt}subst\ L{\isacharunderscore}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isacharbrackleft}{\kern0pt}symmetric{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline
       
  1535 \ \ \isacommand{apply}\isamarkupfalse%
       
  1536 {\isacharparenleft}{\kern0pt}auto\ simp\ add{\isacharcolon}{\kern0pt}\ Sequ{\isacharunderscore}{\kern0pt}def{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  1537 \ \ \isacommand{apply}\isamarkupfalse%
       
  1538 {\isacharparenleft}{\kern0pt}subst\ {\isacharparenleft}{\kern0pt}asm{\isacharparenright}{\kern0pt}\ \ L{\isacharunderscore}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isacharbrackleft}{\kern0pt}symmetric{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline
       
  1539 \ \ \isacommand{apply}\isamarkupfalse%
       
  1540 {\isacharparenleft}{\kern0pt}auto\ simp\ add{\isacharcolon}{\kern0pt}\ Sequ{\isacharunderscore}{\kern0pt}def{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  1541 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1542 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1543 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1544 {\isacharparenleft}{\kern0pt}subst\ L{\isacharunderscore}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}AALTs{\isacharbrackleft}{\kern0pt}symmetric{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline
       
  1545 \ \ \ \isacommand{defer}\isamarkupfalse%
       
  1546 \isanewline
       
  1547 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1548 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1549 \ \ \isacommand{apply}\isamarkupfalse%
       
  1550 {\isacharparenleft}{\kern0pt}subst\ {\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}AALTs{\isacharparenright}{\kern0pt}\isanewline
       
  1551 \ \ \isacommand{apply}\isamarkupfalse%
       
  1552 {\isacharparenleft}{\kern0pt}subst\ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}dB{\isacharparenright}{\kern0pt}\isanewline
       
  1553 \ \ \isacommand{apply}\isamarkupfalse%
       
  1554 {\isacharparenleft}{\kern0pt}subst\ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}flts{\isacharparenright}{\kern0pt}\isanewline
       
  1555 \ \ \isacommand{apply}\isamarkupfalse%
       
  1556 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
  1557 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1558 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}AALTs{\isacharparenright}{\kern0pt}\isanewline
       
  1559 \ \ \isacommand{using}\isamarkupfalse%
       
  1560 \ L{\isacharunderscore}{\kern0pt}erase{\isacharunderscore}{\kern0pt}AALTs\ \isacommand{by}\isamarkupfalse%
       
  1561 \ blast%
       
  1562 \endisatagproof
       
  1563 {\isafoldproof}%
       
  1564 %
       
  1565 \isadelimproof
       
  1566 \isanewline
       
  1567 %
       
  1568 \endisadelimproof
       
  1569 \isanewline
       
  1570 \isacommand{lemma}\isamarkupfalse%
       
  1571 \ bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isadigit{0}}{\isacharcolon}{\kern0pt}\isanewline
       
  1572 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}bsimp{\isacharunderscore}{\kern0pt}ASEQ\ bs\ r{\isadigit{1}}\ AZERO\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}\isanewline
       
  1573 %
       
  1574 \isadelimproof
       
  1575 \ \ %
       
  1576 \endisadelimproof
       
  1577 %
       
  1578 \isatagproof
       
  1579 \isacommand{apply}\isamarkupfalse%
       
  1580 {\isacharparenleft}{\kern0pt}induct\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline
       
  1581 \ \ \isacommand{apply}\isamarkupfalse%
       
  1582 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
  1583 \ \ \isacommand{done}\isamarkupfalse%
       
  1584 %
       
  1585 \endisatagproof
       
  1586 {\isafoldproof}%
       
  1587 %
       
  1588 \isadelimproof
       
  1589 \isanewline
       
  1590 %
       
  1591 \endisadelimproof
       
  1592 \isanewline
       
  1593 \isanewline
       
  1594 \isanewline
       
  1595 \isacommand{lemma}\isamarkupfalse%
       
  1596 \ bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isadigit{1}}{\isacharcolon}{\kern0pt}\isanewline
       
  1597 \ \ \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
       
  1598 \ \ \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
       
  1599 %
       
  1600 \isadelimproof
       
  1601 \ \ %
       
  1602 \endisadelimproof
       
  1603 %
       
  1604 \isatagproof
       
  1605 \isacommand{using}\isamarkupfalse%
       
  1606 \ assms\isanewline
       
  1607 \ \ \isacommand{apply}\isamarkupfalse%
       
  1608 {\isacharparenleft}{\kern0pt}induct\ bs\ r{\isadigit{1}}\ r{\isadigit{2}}\ rule{\isacharcolon}{\kern0pt}\ bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  1609 \ \ \isacommand{apply}\isamarkupfalse%
       
  1610 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
  1611 \ \ \isacommand{done}\isamarkupfalse%
       
  1612 %
       
  1613 \endisatagproof
       
  1614 {\isafoldproof}%
       
  1615 %
       
  1616 \isadelimproof
       
  1617 \isanewline
       
  1618 %
       
  1619 \endisadelimproof
       
  1620 \isanewline
       
  1621 \isacommand{lemma}\isamarkupfalse%
       
  1622 \ bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isadigit{2}}{\isacharcolon}{\kern0pt}\isanewline
       
  1623 \ \ \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
       
  1624 %
       
  1625 \isadelimproof
       
  1626 \ \ %
       
  1627 \endisadelimproof
       
  1628 %
       
  1629 \isatagproof
       
  1630 \isacommand{apply}\isamarkupfalse%
       
  1631 {\isacharparenleft}{\kern0pt}induct\ r{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline
       
  1632 \ \ \isacommand{apply}\isamarkupfalse%
       
  1633 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
  1634 \ \ \isacommand{done}\isamarkupfalse%
       
  1635 %
       
  1636 \endisatagproof
       
  1637 {\isafoldproof}%
       
  1638 %
       
  1639 \isadelimproof
       
  1640 \isanewline
       
  1641 %
       
  1642 \endisadelimproof
       
  1643 \isanewline
       
  1644 \isanewline
       
  1645 \isacommand{lemma}\isamarkupfalse%
       
  1646 \ L{\isacharunderscore}{\kern0pt}bders{\isacharunderscore}{\kern0pt}simp{\isacharcolon}{\kern0pt}\isanewline
       
  1647 \ \ \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
       
  1648 %
       
  1649 \isadelimproof
       
  1650 \ \ %
       
  1651 \endisadelimproof
       
  1652 %
       
  1653 \isatagproof
       
  1654 \isacommand{apply}\isamarkupfalse%
       
  1655 {\isacharparenleft}{\kern0pt}induct\ s\ arbitrary{\isacharcolon}{\kern0pt}\ r\ rule{\isacharcolon}{\kern0pt}\ rev{\isacharunderscore}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  1656 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1657 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1658 \ \ \isacommand{apply}\isamarkupfalse%
       
  1659 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1660 \ \ \isacommand{apply}\isamarkupfalse%
       
  1661 {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ ders{\isacharunderscore}{\kern0pt}append{\isacharparenright}{\kern0pt}\isanewline
       
  1662 \ \ \isacommand{apply}\isamarkupfalse%
       
  1663 {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bders{\isacharunderscore}{\kern0pt}simp{\isacharunderscore}{\kern0pt}append{\isacharparenright}{\kern0pt}\isanewline
       
  1664 \ \ \isacommand{apply}\isamarkupfalse%
       
  1665 {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ L{\isacharunderscore}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}erase{\isacharbrackleft}{\kern0pt}symmetric{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline
       
  1666 \ \ \isacommand{by}\isamarkupfalse%
       
  1667 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ der{\isacharunderscore}{\kern0pt}correctness{\isacharparenright}{\kern0pt}%
       
  1668 \endisatagproof
       
  1669 {\isafoldproof}%
       
  1670 %
       
  1671 \isadelimproof
       
  1672 \isanewline
       
  1673 %
       
  1674 \endisadelimproof
       
  1675 \isanewline
       
  1676 \isanewline
       
  1677 \isacommand{lemma}\isamarkupfalse%
       
  1678 \ b{\isadigit{2}}{\isacharcolon}{\kern0pt}\isanewline
       
  1679 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}bnullable\ r{\isachardoublequoteclose}\isanewline
       
  1680 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}bmkeps\ {\isacharparenleft}{\kern0pt}fuse\ bs\ r{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ bs\ {\isacharat}{\kern0pt}\ bmkeps\ r{\isachardoublequoteclose}\isanewline
       
  1681 %
       
  1682 \isadelimproof
       
  1683 \ \ %
       
  1684 \endisadelimproof
       
  1685 %
       
  1686 \isatagproof
       
  1687 \isacommand{by}\isamarkupfalse%
       
  1688 \ {\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}%
       
  1689 \endisatagproof
       
  1690 {\isafoldproof}%
       
  1691 %
       
  1692 \isadelimproof
       
  1693 \isanewline
       
  1694 %
       
  1695 \endisadelimproof
       
  1696 \isanewline
       
  1697 \isanewline
       
  1698 \isacommand{lemma}\isamarkupfalse%
       
  1699 \ b{\isadigit{4}}{\isacharcolon}{\kern0pt}\isanewline
       
  1700 \ \ \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
       
  1701 %
       
  1702 \isadelimproof
       
  1703 \ \ %
       
  1704 \endisadelimproof
       
  1705 %
       
  1706 \isatagproof
       
  1707 \isacommand{by}\isamarkupfalse%
       
  1708 \ {\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}%
       
  1709 \endisatagproof
       
  1710 {\isafoldproof}%
       
  1711 %
       
  1712 \isadelimproof
       
  1713 \isanewline
       
  1714 %
       
  1715 \endisadelimproof
       
  1716 \isanewline
       
  1717 \isanewline
       
  1718 \isacommand{lemma}\isamarkupfalse%
       
  1719 \ qq{\isadigit{1}}{\isacharcolon}{\kern0pt}\isanewline
       
  1720 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymexists}r\ {\isasymin}\ set\ rs{\isachardot}{\kern0pt}\ bnullable\ r{\isachardoublequoteclose}\isanewline
       
  1721 \ \ \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
       
  1722 %
       
  1723 \isadelimproof
       
  1724 \ \ %
       
  1725 \endisadelimproof
       
  1726 %
       
  1727 \isatagproof
       
  1728 \isacommand{using}\isamarkupfalse%
       
  1729 \ assms\isanewline
       
  1730 \ \ \isacommand{apply}\isamarkupfalse%
       
  1731 {\isacharparenleft}{\kern0pt}induct\ rs\ arbitrary{\isacharcolon}{\kern0pt}\ rs{\isadigit{1}}\ bs{\isacharparenright}{\kern0pt}\isanewline
       
  1732 \ \ \isacommand{apply}\isamarkupfalse%
       
  1733 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1734 \ \ \isacommand{apply}\isamarkupfalse%
       
  1735 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1736 \ \ \isacommand{by}\isamarkupfalse%
       
  1737 \ {\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}%
       
  1738 \endisatagproof
       
  1739 {\isafoldproof}%
       
  1740 %
       
  1741 \isadelimproof
       
  1742 \isanewline
       
  1743 %
       
  1744 \endisadelimproof
       
  1745 \isanewline
       
  1746 \isacommand{lemma}\isamarkupfalse%
       
  1747 \ qq{\isadigit{2}}{\isacharcolon}{\kern0pt}\isanewline
       
  1748 \ \ \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
       
  1749 \ \ \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
       
  1750 %
       
  1751 \isadelimproof
       
  1752 \ \ %
       
  1753 \endisadelimproof
       
  1754 %
       
  1755 \isatagproof
       
  1756 \isacommand{using}\isamarkupfalse%
       
  1757 \ assms\isanewline
       
  1758 \ \ \isacommand{apply}\isamarkupfalse%
       
  1759 {\isacharparenleft}{\kern0pt}induct\ rs\ arbitrary{\isacharcolon}{\kern0pt}\ rs{\isadigit{1}}\ bs{\isacharparenright}{\kern0pt}\isanewline
       
  1760 \ \ \isacommand{apply}\isamarkupfalse%
       
  1761 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1762 \ \ \isacommand{apply}\isamarkupfalse%
       
  1763 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1764 \ \ \isacommand{by}\isamarkupfalse%
       
  1765 \ {\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}%
       
  1766 \endisatagproof
       
  1767 {\isafoldproof}%
       
  1768 %
       
  1769 \isadelimproof
       
  1770 \isanewline
       
  1771 %
       
  1772 \endisadelimproof
       
  1773 \ \ \isanewline
       
  1774 \isacommand{lemma}\isamarkupfalse%
       
  1775 \ qq{\isadigit{3}}{\isacharcolon}{\kern0pt}\isanewline
       
  1776 \ \ \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
       
  1777 %
       
  1778 \isadelimproof
       
  1779 \ \ %
       
  1780 \endisadelimproof
       
  1781 %
       
  1782 \isatagproof
       
  1783 \isacommand{apply}\isamarkupfalse%
       
  1784 {\isacharparenleft}{\kern0pt}induct\ rs\ arbitrary{\isacharcolon}{\kern0pt}\ bs{\isacharparenright}{\kern0pt}\isanewline
       
  1785 \ \ \isacommand{apply}\isamarkupfalse%
       
  1786 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1787 \ \ \isacommand{apply}\isamarkupfalse%
       
  1788 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1789 \ \ \isacommand{done}\isamarkupfalse%
       
  1790 %
       
  1791 \endisatagproof
       
  1792 {\isafoldproof}%
       
  1793 %
       
  1794 \isadelimproof
       
  1795 \isanewline
       
  1796 %
       
  1797 \endisadelimproof
       
  1798 \isanewline
       
  1799 \isanewline
       
  1800 \isanewline
       
  1801 \isanewline
       
  1802 \isanewline
       
  1803 \isacommand{fun}\isamarkupfalse%
       
  1804 \ nonnested\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
       
  1805 \ \ \isakeyword{where}\isanewline
       
  1806 \ \ {\isachardoublequoteopen}nonnested\ {\isacharparenleft}{\kern0pt}AALTs\ bs{\isadigit{2}}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ True{\isachardoublequoteclose}\isanewline
       
  1807 {\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
       
  1808 {\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
       
  1809 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}nonnested\ r\ {\isacharequal}{\kern0pt}\ True{\isachardoublequoteclose}\isanewline
       
  1810 \isanewline
       
  1811 \isanewline
       
  1812 \isacommand{lemma}\isamarkupfalse%
       
  1813 \ \ k{\isadigit{0}}{\isacharcolon}{\kern0pt}\isanewline
       
  1814 \ \ \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
       
  1815 %
       
  1816 \isadelimproof
       
  1817 \ \ %
       
  1818 \endisadelimproof
       
  1819 %
       
  1820 \isatagproof
       
  1821 \isacommand{apply}\isamarkupfalse%
       
  1822 {\isacharparenleft}{\kern0pt}induct\ r\ arbitrary{\isacharcolon}{\kern0pt}\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline
       
  1823 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1824 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
  1825 \ \ \isacommand{done}\isamarkupfalse%
       
  1826 %
       
  1827 \endisatagproof
       
  1828 {\isafoldproof}%
       
  1829 %
       
  1830 \isadelimproof
       
  1831 \isanewline
       
  1832 %
       
  1833 \endisadelimproof
       
  1834 \isanewline
       
  1835 \isacommand{lemma}\isamarkupfalse%
       
  1836 \ \ k{\isadigit{0}}{\isadigit{0}}{\isacharcolon}{\kern0pt}\isanewline
       
  1837 \ \ \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
       
  1838 %
       
  1839 \isadelimproof
       
  1840 \ \ %
       
  1841 \endisadelimproof
       
  1842 %
       
  1843 \isatagproof
       
  1844 \isacommand{apply}\isamarkupfalse%
       
  1845 {\isacharparenleft}{\kern0pt}induct\ rs{\isadigit{1}}\ arbitrary{\isacharcolon}{\kern0pt}\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline
       
  1846 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1847 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
  1848 \ \ \isacommand{by}\isamarkupfalse%
       
  1849 \ {\isacharparenleft}{\kern0pt}metis\ append{\isachardot}{\kern0pt}assoc\ k{\isadigit{0}}{\isacharparenright}{\kern0pt}%
       
  1850 \endisatagproof
       
  1851 {\isafoldproof}%
       
  1852 %
       
  1853 \isadelimproof
       
  1854 \isanewline
       
  1855 %
       
  1856 \endisadelimproof
       
  1857 \isanewline
       
  1858 \isacommand{lemma}\isamarkupfalse%
       
  1859 \ \ k{\isadigit{0}}a{\isacharcolon}{\kern0pt}\isanewline
       
  1860 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}flts\ {\isacharbrackleft}{\kern0pt}AALTs\ bs\ rs{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ map\ {\isacharparenleft}{\kern0pt}fuse\ bs{\isacharparenright}{\kern0pt}\ \ rs{\isachardoublequoteclose}\isanewline
       
  1861 %
       
  1862 \isadelimproof
       
  1863 \ \ %
       
  1864 \endisadelimproof
       
  1865 %
       
  1866 \isatagproof
       
  1867 \isacommand{apply}\isamarkupfalse%
       
  1868 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1869 \ \ \isacommand{done}\isamarkupfalse%
       
  1870 %
       
  1871 \endisatagproof
       
  1872 {\isafoldproof}%
       
  1873 %
       
  1874 \isadelimproof
       
  1875 \isanewline
       
  1876 %
       
  1877 \endisadelimproof
       
  1878 \isanewline
       
  1879 \isanewline
       
  1880 \isanewline
       
  1881 \isanewline
       
  1882 \isanewline
       
  1883 \isanewline
       
  1884 \isanewline
       
  1885 \isanewline
       
  1886 \isacommand{lemma}\isamarkupfalse%
       
  1887 \ bsimp{\isacharunderscore}{\kern0pt}AALTs{\isacharunderscore}{\kern0pt}qq{\isacharcolon}{\kern0pt}\isanewline
       
  1888 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isadigit{1}}\ {\isacharless}{\kern0pt}\ length\ rs{\isachardoublequoteclose}\isanewline
       
  1889 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}bsimp{\isacharunderscore}{\kern0pt}AALTs\ bs\ rs\ {\isacharequal}{\kern0pt}\ AALTs\ bs\ \ rs{\isachardoublequoteclose}\isanewline
       
  1890 %
       
  1891 \isadelimproof
       
  1892 \ \ %
       
  1893 \endisadelimproof
       
  1894 %
       
  1895 \isatagproof
       
  1896 \isacommand{using}\isamarkupfalse%
       
  1897 \ \ assms\isanewline
       
  1898 \ \ \isacommand{apply}\isamarkupfalse%
       
  1899 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ rs{\isacharparenright}{\kern0pt}\isanewline
       
  1900 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1901 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  1902 \ \ \isacommand{apply}\isamarkupfalse%
       
  1903 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ list{\isacharparenright}{\kern0pt}\isanewline
       
  1904 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1905 {\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all{\isacharparenright}{\kern0pt}\isanewline
       
  1906 \ \ \isacommand{done}\isamarkupfalse%
       
  1907 %
       
  1908 \endisatagproof
       
  1909 {\isafoldproof}%
       
  1910 %
       
  1911 \isadelimproof
       
  1912 \isanewline
       
  1913 %
       
  1914 \endisadelimproof
       
  1915 \isanewline
       
  1916 \isanewline
       
  1917 \isanewline
       
  1918 \isacommand{lemma}\isamarkupfalse%
       
  1919 \ bbbbs{\isadigit{1}}{\isacharcolon}{\kern0pt}\isanewline
       
  1920 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}nonalt\ r\ {\isasymor}\ {\isacharparenleft}{\kern0pt}{\isasymexists}bs\ rs{\isachardot}{\kern0pt}\ r\ \ {\isacharequal}{\kern0pt}\ AALTs\ bs\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
  1921 %
       
  1922 \isadelimproof
       
  1923 \ \ %
       
  1924 \endisadelimproof
       
  1925 %
       
  1926 \isatagproof
       
  1927 \isacommand{using}\isamarkupfalse%
       
  1928 \ nonalt{\isachardot}{\kern0pt}elims{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ \isacommand{by}\isamarkupfalse%
       
  1929 \ auto%
       
  1930 \endisatagproof
       
  1931 {\isafoldproof}%
       
  1932 %
       
  1933 \isadelimproof
       
  1934 \isanewline
       
  1935 %
       
  1936 \endisadelimproof
       
  1937 \ \ \isanewline
       
  1938 \isanewline
       
  1939 \isanewline
       
  1940 \isanewline
       
  1941 \isanewline
       
  1942 \isacommand{lemma}\isamarkupfalse%
       
  1943 \ flts{\isacharunderscore}{\kern0pt}append{\isacharcolon}{\kern0pt}\isanewline
       
  1944 \ \ {\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
       
  1945 %
       
  1946 \isadelimproof
       
  1947 \ \ %
       
  1948 \endisadelimproof
       
  1949 %
       
  1950 \isatagproof
       
  1951 \isacommand{apply}\isamarkupfalse%
       
  1952 {\isacharparenleft}{\kern0pt}induct\ xs{\isadigit{1}}\ \ arbitrary{\isacharcolon}{\kern0pt}\ xs{\isadigit{2}}\ \ rule{\isacharcolon}{\kern0pt}\ rev{\isacharunderscore}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  1953 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1954 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
  1955 \ \ \isacommand{apply}\isamarkupfalse%
       
  1956 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ xs{\isacharparenright}{\kern0pt}\isanewline
       
  1957 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1958 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
  1959 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1960 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ x{\isacharparenright}{\kern0pt}\isanewline
       
  1961 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1962 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
  1963 \ \ \isacommand{apply}\isamarkupfalse%
       
  1964 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ x{\isacharparenright}{\kern0pt}\isanewline
       
  1965 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  1966 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
  1967 \ \ \isacommand{done}\isamarkupfalse%
       
  1968 %
       
  1969 \endisatagproof
       
  1970 {\isafoldproof}%
       
  1971 %
       
  1972 \isadelimproof
       
  1973 \isanewline
       
  1974 %
       
  1975 \endisadelimproof
       
  1976 \isanewline
       
  1977 \isacommand{fun}\isamarkupfalse%
       
  1978 \ nonazero\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}arexp\ {\isasymRightarrow}\ bool{\isachardoublequoteclose}\isanewline
       
  1979 \ \ \isakeyword{where}\isanewline
       
  1980 \ \ {\isachardoublequoteopen}nonazero\ AZERO\ {\isacharequal}{\kern0pt}\ False{\isachardoublequoteclose}\isanewline
       
  1981 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}nonazero\ r\ {\isacharequal}{\kern0pt}\ True{\isachardoublequoteclose}\isanewline
       
  1982 \isanewline
       
  1983 \isanewline
       
  1984 \isacommand{lemma}\isamarkupfalse%
       
  1985 \ flts{\isacharunderscore}{\kern0pt}single{\isadigit{1}}{\isacharcolon}{\kern0pt}\isanewline
       
  1986 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}nonalt\ r{\isachardoublequoteclose}\ {\isachardoublequoteopen}nonazero\ r{\isachardoublequoteclose}\isanewline
       
  1987 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}flts\ {\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
  1988 %
       
  1989 \isadelimproof
       
  1990 \ \ %
       
  1991 \endisadelimproof
       
  1992 %
       
  1993 \isatagproof
       
  1994 \isacommand{using}\isamarkupfalse%
       
  1995 \ assms\isanewline
       
  1996 \ \ \isacommand{apply}\isamarkupfalse%
       
  1997 {\isacharparenleft}{\kern0pt}induct\ r{\isacharparenright}{\kern0pt}\isanewline
       
  1998 \ \ \isacommand{apply}\isamarkupfalse%
       
  1999 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
  2000 \ \ \isacommand{done}\isamarkupfalse%
       
  2001 %
       
  2002 \endisatagproof
       
  2003 {\isafoldproof}%
       
  2004 %
       
  2005 \isadelimproof
       
  2006 \isanewline
       
  2007 %
       
  2008 \endisadelimproof
       
  2009 \isanewline
       
  2010 \isanewline
       
  2011 \isanewline
       
  2012 \isacommand{lemma}\isamarkupfalse%
       
  2013 \ q{\isadigit{3}}a{\isacharcolon}{\kern0pt}\isanewline
       
  2014 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymexists}r\ {\isasymin}\ set\ rs{\isachardot}{\kern0pt}\ bnullable\ r{\isachardoublequoteclose}\isanewline
       
  2015 \ \ \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
       
  2016 %
       
  2017 \isadelimproof
       
  2018 \ \ %
       
  2019 \endisadelimproof
       
  2020 %
       
  2021 \isatagproof
       
  2022 \isacommand{using}\isamarkupfalse%
       
  2023 \ assms\isanewline
       
  2024 \ \ \isacommand{apply}\isamarkupfalse%
       
  2025 {\isacharparenleft}{\kern0pt}induct\ rs\ arbitrary{\isacharcolon}{\kern0pt}\ bs\ bs{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline
       
  2026 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2027 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2028 \ \ \isacommand{apply}\isamarkupfalse%
       
  2029 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2030 \ \ \isacommand{apply}\isamarkupfalse%
       
  2031 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
  2032 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2033 \ {\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
       
  2034 \ \ \isacommand{apply}\isamarkupfalse%
       
  2035 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ a{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  2036 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2037 \ {\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
       
  2038 \ \ \isacommand{apply}\isamarkupfalse%
       
  2039 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ rs{\isacharparenright}{\kern0pt}\isanewline
       
  2040 \ \ \isacommand{apply}\isamarkupfalse%
       
  2041 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2042 \ \ \isacommand{apply}\isamarkupfalse%
       
  2043 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2044 \ \ \isacommand{apply}\isamarkupfalse%
       
  2045 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  2046 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2047 \ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}{\isacharplus}{\kern0pt}\isanewline
       
  2048 \ \ \isacommand{done}\isamarkupfalse%
       
  2049 %
       
  2050 \endisatagproof
       
  2051 {\isafoldproof}%
       
  2052 %
       
  2053 \isadelimproof
       
  2054 \isanewline
       
  2055 %
       
  2056 \endisadelimproof
       
  2057 \isanewline
       
  2058 \isacommand{lemma}\isamarkupfalse%
       
  2059 \ qq{\isadigit{4}}{\isacharcolon}{\kern0pt}\isanewline
       
  2060 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymexists}x{\isasymin}set\ list{\isachardot}{\kern0pt}\ bnullable\ x{\isachardoublequoteclose}\isanewline
       
  2061 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}{\isasymexists}x{\isasymin}set\ {\isacharparenleft}{\kern0pt}flts\ list{\isacharparenright}{\kern0pt}{\isachardot}{\kern0pt}\ bnullable\ x{\isachardoublequoteclose}\isanewline
       
  2062 %
       
  2063 \isadelimproof
       
  2064 \ \ %
       
  2065 \endisadelimproof
       
  2066 %
       
  2067 \isatagproof
       
  2068 \isacommand{using}\isamarkupfalse%
       
  2069 \ assms\isanewline
       
  2070 \ \ \isacommand{apply}\isamarkupfalse%
       
  2071 {\isacharparenleft}{\kern0pt}induct\ list\ rule{\isacharcolon}{\kern0pt}\ flts{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  2072 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2073 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
  2074 \ \ \isacommand{by}\isamarkupfalse%
       
  2075 \ {\isacharparenleft}{\kern0pt}metis\ UnCI\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse\ imageI{\isacharparenright}{\kern0pt}%
       
  2076 \endisatagproof
       
  2077 {\isafoldproof}%
       
  2078 %
       
  2079 \isadelimproof
       
  2080 \isanewline
       
  2081 %
       
  2082 \endisadelimproof
       
  2083 \ \ \isanewline
       
  2084 \isanewline
       
  2085 \isacommand{lemma}\isamarkupfalse%
       
  2086 \ qs{\isadigit{3}}{\isacharcolon}{\kern0pt}\isanewline
       
  2087 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}{\isasymexists}r\ {\isasymin}\ set\ rs{\isachardot}{\kern0pt}\ bnullable\ r{\isachardoublequoteclose}\isanewline
       
  2088 \ \ \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
       
  2089 %
       
  2090 \isadelimproof
       
  2091 \ \ %
       
  2092 \endisadelimproof
       
  2093 %
       
  2094 \isatagproof
       
  2095 \isacommand{using}\isamarkupfalse%
       
  2096 \ assms\isanewline
       
  2097 \ \ \isacommand{apply}\isamarkupfalse%
       
  2098 {\isacharparenleft}{\kern0pt}induct\ rs\ arbitrary{\isacharcolon}{\kern0pt}\ bs\ taking{\isacharcolon}{\kern0pt}\ size\ rule{\isacharcolon}{\kern0pt}\ measure{\isacharunderscore}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  2099 \ \ \isacommand{apply}\isamarkupfalse%
       
  2100 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ x{\isacharparenright}{\kern0pt}\isanewline
       
  2101 \ \ \isacommand{apply}\isamarkupfalse%
       
  2102 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2103 \ \ \isacommand{apply}\isamarkupfalse%
       
  2104 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2105 \ \ \isacommand{apply}\isamarkupfalse%
       
  2106 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ a{\isacharparenright}{\kern0pt}\isanewline
       
  2107 \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2108 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2109 \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2110 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline
       
  2111 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2112 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2113 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2114 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}Hdbmkeps{\isacharunderscore}{\kern0pt}Hd{\isacharparenright}{\kern0pt}\isanewline
       
  2115 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2116 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2117 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2118 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}flts\ list{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  2119 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2120 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2121 \ \ \isacommand{apply}\isamarkupfalse%
       
  2122 \ {\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
       
  2123 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2124 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2125 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2126 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline
       
  2127 \ \ \ \ \isacommand{prefer}\isamarkupfalse%
       
  2128 \ {\isadigit{3}}\isanewline
       
  2129 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2130 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2131 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2132 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}Hdbmkeps{\isacharunderscore}{\kern0pt}Hd{\isacharparenright}{\kern0pt}\isanewline
       
  2133 \ \ \ \isacommand{prefer}\isamarkupfalse%
       
  2134 \ {\isadigit{2}}\isanewline
       
  2135 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2136 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2137 \ \ \isacommand{apply}\isamarkupfalse%
       
  2138 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}{\isasymexists}x{\isasymin}set\ x{\isadigit{5}}{\isadigit{2}}{\isachardot}{\kern0pt}\ bnullable\ x{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  2139 \ \ \isacommand{apply}\isamarkupfalse%
       
  2140 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}list{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  2141 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2142 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2143 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2144 \ {\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
       
  2145 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2146 {\isacharparenleft}{\kern0pt}erule\ disjE{\isacharparenright}{\kern0pt}\isanewline
       
  2147 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2148 {\isacharparenleft}{\kern0pt}subst\ qq{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline
       
  2149 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2150 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  2151 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2152 \ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline
       
  2153 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2154 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2155 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2156 \ {\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
       
  2157 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2158 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2159 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2160 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  2161 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2162 {\isacharparenleft}{\kern0pt}subst\ qq{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline
       
  2163 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2164 \ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse\ image{\isacharunderscore}{\kern0pt}eqI\ set{\isacharunderscore}{\kern0pt}map{\isacharparenright}{\kern0pt}\isanewline
       
  2165 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2166 \ {\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
       
  2167 \ \ \isacommand{apply}\isamarkupfalse%
       
  2168 {\isacharparenleft}{\kern0pt}subst\ qq{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline
       
  2169 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2170 \ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse\ image{\isacharunderscore}{\kern0pt}eqI\ set{\isacharunderscore}{\kern0pt}map{\isacharparenright}{\kern0pt}\isanewline
       
  2171 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2172 \ {\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
       
  2173 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2174 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2175 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2176 {\isacharparenleft}{\kern0pt}subst\ qq{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline
       
  2177 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2178 \ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse\ imageE\ set{\isacharunderscore}{\kern0pt}map{\isacharparenright}{\kern0pt}\isanewline
       
  2179 \ \ \isacommand{prefer}\isamarkupfalse%
       
  2180 \ {\isadigit{2}}\isanewline
       
  2181 \ \ \isacommand{apply}\isamarkupfalse%
       
  2182 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}list{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  2183 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2184 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2185 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2186 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2187 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2188 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ qq{\isadigit{4}}{\isacharparenright}{\kern0pt}\isanewline
       
  2189 \ \ \isacommand{apply}\isamarkupfalse%
       
  2190 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2191 \ \ \isacommand{apply}\isamarkupfalse%
       
  2192 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
  2193 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2194 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ list{\isacharparenright}{\kern0pt}\isanewline
       
  2195 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2196 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2197 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2198 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2199 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2200 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}Hdbmkeps{\isacharunderscore}{\kern0pt}Hd{\isacharparenright}{\kern0pt}\isanewline
       
  2201 \ \ \isacommand{apply}\isamarkupfalse%
       
  2202 {\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
       
  2203 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2204 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ list{\isacharparenright}{\kern0pt}\isanewline
       
  2205 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2206 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2207 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2208 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2209 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2210 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bnullable{\isacharunderscore}{\kern0pt}Hdbmkeps{\isacharunderscore}{\kern0pt}Hd{\isacharparenright}{\kern0pt}\isanewline
       
  2211 \ \ \isacommand{apply}\isamarkupfalse%
       
  2212 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2213 \ \ \isacommand{using}\isamarkupfalse%
       
  2214 \ qq{\isadigit{4}}\ r{\isadigit{1}}\ r{\isadigit{2}}\ \isacommand{by}\isamarkupfalse%
       
  2215 \ auto%
       
  2216 \endisatagproof
       
  2217 {\isafoldproof}%
       
  2218 %
       
  2219 \isadelimproof
       
  2220 \isanewline
       
  2221 %
       
  2222 \endisadelimproof
       
  2223 \isanewline
       
  2224 \isanewline
       
  2225 \isanewline
       
  2226 \ \ \isanewline
       
  2227 \isacommand{lemma}\isamarkupfalse%
       
  2228 \ bder{\isacharunderscore}{\kern0pt}fuse{\isacharcolon}{\kern0pt}\isanewline
       
  2229 \ \ \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
       
  2230 %
       
  2231 \isadelimproof
       
  2232 \ \ %
       
  2233 \endisadelimproof
       
  2234 %
       
  2235 \isatagproof
       
  2236 \isacommand{apply}\isamarkupfalse%
       
  2237 {\isacharparenleft}{\kern0pt}induct\ a\ arbitrary{\isacharcolon}{\kern0pt}\ bs\ c{\isacharparenright}{\kern0pt}\isanewline
       
  2238 \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2239 {\isacharparenleft}{\kern0pt}simp{\isacharunderscore}{\kern0pt}all{\isacharparenright}{\kern0pt}\isanewline
       
  2240 \ \ \isacommand{done}\isamarkupfalse%
       
  2241 %
       
  2242 \endisatagproof
       
  2243 {\isafoldproof}%
       
  2244 %
       
  2245 \isadelimproof
       
  2246 \isanewline
       
  2247 %
       
  2248 \endisadelimproof
       
  2249 \isanewline
       
  2250 \isanewline
       
  2251 \isacommand{fun}\isamarkupfalse%
       
  2252 \ flts{\isadigit{2}}\ {\isacharcolon}{\kern0pt}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}char\ {\isasymRightarrow}\ arexp\ list\ {\isasymRightarrow}\ arexp\ list{\isachardoublequoteclose}\isanewline
       
  2253 \ \ \isakeyword{where}\ \isanewline
       
  2254 \ \ {\isachardoublequoteopen}flts{\isadigit{2}}\ {\isacharunderscore}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
  2255 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}flts{\isadigit{2}}\ c\ {\isacharparenleft}{\kern0pt}AZERO\ {\isacharhash}{\kern0pt}\ rs{\isacharparenright}{\kern0pt}\ {\isacharequal}{\kern0pt}\ flts{\isadigit{2}}\ c\ rs{\isachardoublequoteclose}\isanewline
       
  2256 {\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
       
  2257 {\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
       
  2258 {\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
       
  2259 {\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
       
  2260 \ \ \ \ flts{\isadigit{2}}\ c\ rs\isanewline
       
  2261 \ \ \ \ else\ ASEQ\ bs\ r{\isadigit{1}}\ r{\isadigit{2}}\ {\isacharhash}{\kern0pt}\ flts{\isadigit{2}}\ c\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
  2262 {\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
       
  2263 \isanewline
       
  2264 \isanewline
       
  2265 \isanewline
       
  2266 \isanewline
       
  2267 \isanewline
       
  2268 \isanewline
       
  2269 \isanewline
       
  2270 \isanewline
       
  2271 \ \isanewline
       
  2272 \isanewline
       
  2273 \isanewline
       
  2274 \isanewline
       
  2275 \isanewline
       
  2276 \isacommand{lemma}\isamarkupfalse%
       
  2277 \ WQ{\isadigit{1}}{\isacharcolon}{\kern0pt}\isanewline
       
  2278 \ \ \isakeyword{assumes}\ {\isachardoublequoteopen}s\ {\isasymin}\ L\ {\isacharparenleft}{\kern0pt}der\ c\ r{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
  2279 \ \ \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
       
  2280 %
       
  2281 \isadelimproof
       
  2282 \ \ %
       
  2283 \endisadelimproof
       
  2284 %
       
  2285 \isatagproof
       
  2286 \isacommand{using}\isamarkupfalse%
       
  2287 \ assms\isanewline
       
  2288 \ \ \isacommand{oops}\isamarkupfalse%
       
  2289 %
       
  2290 \endisatagproof
       
  2291 {\isafoldproof}%
       
  2292 %
       
  2293 \isadelimproof
       
  2294 \isanewline
       
  2295 %
       
  2296 \endisadelimproof
       
  2297 \isanewline
       
  2298 \isanewline
       
  2299 \isanewline
       
  2300 \isacommand{lemma}\isamarkupfalse%
       
  2301 \ bder{\isacharunderscore}{\kern0pt}bsimp{\isacharunderscore}{\kern0pt}AALTs{\isacharcolon}{\kern0pt}\isanewline
       
  2302 \ \ \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
       
  2303 %
       
  2304 \isadelimproof
       
  2305 \ \ %
       
  2306 \endisadelimproof
       
  2307 %
       
  2308 \isatagproof
       
  2309 \isacommand{apply}\isamarkupfalse%
       
  2310 {\isacharparenleft}{\kern0pt}induct\ bs\ rs\ rule{\isacharcolon}{\kern0pt}\ bsimp{\isacharunderscore}{\kern0pt}AALTs{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\ \ \isanewline
       
  2311 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2312 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2313 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2314 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2315 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2316 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bder{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline
       
  2317 \ \ \isacommand{apply}\isamarkupfalse%
       
  2318 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2319 \ \ \isacommand{done}\isamarkupfalse%
       
  2320 %
       
  2321 \endisatagproof
       
  2322 {\isafoldproof}%
       
  2323 %
       
  2324 \isadelimproof
       
  2325 \isanewline
       
  2326 %
       
  2327 \endisadelimproof
       
  2328 \isanewline
       
  2329 \isanewline
       
  2330 \isanewline
       
  2331 \isacommand{lemma}\isamarkupfalse%
       
  2332 \isanewline
       
  2333 \ \ \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
       
  2334 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}bsimp\ a\ {\isacharequal}{\kern0pt}\ a{\isachardoublequoteclose}\isanewline
       
  2335 %
       
  2336 \isadelimproof
       
  2337 \ \ %
       
  2338 \endisadelimproof
       
  2339 %
       
  2340 \isatagproof
       
  2341 \isacommand{using}\isamarkupfalse%
       
  2342 \ assms\isanewline
       
  2343 \ \ \isacommand{apply}\isamarkupfalse%
       
  2344 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2345 \ \ \isacommand{oops}\isamarkupfalse%
       
  2346 %
       
  2347 \endisatagproof
       
  2348 {\isafoldproof}%
       
  2349 %
       
  2350 \isadelimproof
       
  2351 \isanewline
       
  2352 %
       
  2353 \endisadelimproof
       
  2354 \isanewline
       
  2355 \isanewline
       
  2356 \isanewline
       
  2357 \isanewline
       
  2358 \isanewline
       
  2359 \isanewline
       
  2360 \isanewline
       
  2361 \isanewline
       
  2362 \isacommand{inductive}\isamarkupfalse%
       
  2363 \ 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
       
  2364 \ \ \isakeyword{where}\isanewline
       
  2365 \ \ {\isachardoublequoteopen}ASEQ\ bs\ AZERO\ r{\isadigit{2}}\ {\isasymleadsto}\ AZERO{\isachardoublequoteclose}\isanewline
       
  2366 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}ASEQ\ bs\ r{\isadigit{1}}\ AZERO\ {\isasymleadsto}\ AZERO{\isachardoublequoteclose}\isanewline
       
  2367 {\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
       
  2368 {\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
       
  2369 {\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
       
  2370 {\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
       
  2371 \isanewline
       
  2372 {\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
       
  2373 {\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
       
  2374 \isanewline
       
  2375 {\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
       
  2376 \isanewline
       
  2377 {\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
       
  2378 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}AALTs\ bs\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ {\isasymleadsto}\ AZERO{\isachardoublequoteclose}\isanewline
       
  2379 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}AALTs\ bs\ {\isacharbrackleft}{\kern0pt}r{\isacharbrackright}{\kern0pt}\ {\isasymleadsto}\ fuse\ bs\ r{\isachardoublequoteclose}\isanewline
       
  2380 {\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
       
  2381 \isanewline
       
  2382 \isanewline
       
  2383 \isacommand{inductive}\isamarkupfalse%
       
  2384 \ 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
       
  2385 \ \ \isakeyword{where}\ \isanewline
       
  2386 rs{\isadigit{1}}{\isacharbrackleft}{\kern0pt}intro{\isacharcomma}{\kern0pt}\ simp{\isacharbrackright}{\kern0pt}{\isacharcolon}{\kern0pt}{\isachardoublequoteopen}r\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isachardoublequoteclose}\isanewline
       
  2387 {\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
       
  2388 \isanewline
       
  2389 \isacommand{inductive}\isamarkupfalse%
       
  2390 \ 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
       
  2391 \ \ \isakeyword{where}\isanewline
       
  2392 ss{\isadigit{1}}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ s{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
  2393 {\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
       
  2394 \isanewline
       
  2395 \isanewline
       
  2396 \isanewline
       
  2397 \isanewline
       
  2398 \isacommand{lemma}\isamarkupfalse%
       
  2399 \ 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
       
  2400 %
       
  2401 \isadelimproof
       
  2402 \ \ %
       
  2403 \endisadelimproof
       
  2404 %
       
  2405 \isatagproof
       
  2406 \isacommand{using}\isamarkupfalse%
       
  2407 \ rrewrites{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}\ \isacommand{by}\isamarkupfalse%
       
  2408 \ blast%
       
  2409 \endisatagproof
       
  2410 {\isafoldproof}%
       
  2411 %
       
  2412 \isadelimproof
       
  2413 \isanewline
       
  2414 %
       
  2415 \endisadelimproof
       
  2416 \ \isanewline
       
  2417 \isacommand{lemma}\isamarkupfalse%
       
  2418 \ real{\isacharunderscore}{\kern0pt}trans{\isacharcolon}{\kern0pt}\ \isanewline
       
  2419 \ \ \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
       
  2420 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}r{\isadigit{1}}\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ r{\isadigit{3}}{\isachardoublequoteclose}\isanewline
       
  2421 %
       
  2422 \isadelimproof
       
  2423 \ \ %
       
  2424 \endisadelimproof
       
  2425 %
       
  2426 \isatagproof
       
  2427 \isacommand{using}\isamarkupfalse%
       
  2428 \ a{\isadigit{2}}\ a{\isadigit{1}}\isanewline
       
  2429 \ \ \isacommand{apply}\isamarkupfalse%
       
  2430 {\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
       
  2431 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2432 {\isacharparenleft}{\kern0pt}auto{\isacharparenright}{\kern0pt}\isanewline
       
  2433 \ \ \isacommand{done}\isamarkupfalse%
       
  2434 %
       
  2435 \endisatagproof
       
  2436 {\isafoldproof}%
       
  2437 %
       
  2438 \isadelimproof
       
  2439 \isanewline
       
  2440 %
       
  2441 \endisadelimproof
       
  2442 \isanewline
       
  2443 \isanewline
       
  2444 \isacommand{lemma}\isamarkupfalse%
       
  2445 \ \ 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
       
  2446 %
       
  2447 \isadelimproof
       
  2448 \ \ %
       
  2449 \endisadelimproof
       
  2450 %
       
  2451 \isatagproof
       
  2452 \isacommand{by}\isamarkupfalse%
       
  2453 \ {\isacharparenleft}{\kern0pt}meson\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ real{\isacharunderscore}{\kern0pt}trans{\isacharparenright}{\kern0pt}%
       
  2454 \endisatagproof
       
  2455 {\isafoldproof}%
       
  2456 %
       
  2457 \isadelimproof
       
  2458 \isanewline
       
  2459 %
       
  2460 \endisadelimproof
       
  2461 \isanewline
       
  2462 \isanewline
       
  2463 \isacommand{lemma}\isamarkupfalse%
       
  2464 \ 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
       
  2465 %
       
  2466 \isadelimproof
       
  2467 \ \ %
       
  2468 \endisadelimproof
       
  2469 %
       
  2470 \isatagproof
       
  2471 \isacommand{apply}\isamarkupfalse%
       
  2472 {\isacharparenleft}{\kern0pt}induct\ r\ r{\isacharprime}{\kern0pt}\ rule{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  2473 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2474 \ simp\isanewline
       
  2475 \ \ \isacommand{by}\isamarkupfalse%
       
  2476 \ {\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}%
       
  2477 \endisatagproof
       
  2478 {\isafoldproof}%
       
  2479 %
       
  2480 \isadelimproof
       
  2481 \isanewline
       
  2482 %
       
  2483 \endisadelimproof
       
  2484 \isanewline
       
  2485 \isanewline
       
  2486 \isacommand{lemma}\isamarkupfalse%
       
  2487 \ 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
       
  2488 %
       
  2489 \isadelimproof
       
  2490 \ \ %
       
  2491 \endisadelimproof
       
  2492 %
       
  2493 \isatagproof
       
  2494 \isacommand{apply}\isamarkupfalse%
       
  2495 {\isacharparenleft}{\kern0pt}induct\ r\ r{\isacharprime}{\kern0pt}\ rule{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  2496 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2497 \ simp\isanewline
       
  2498 \ \ \isacommand{using}\isamarkupfalse%
       
  2499 \ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{6}}{\isacharparenright}{\kern0pt}\ \isacommand{by}\isamarkupfalse%
       
  2500 \ blast%
       
  2501 \endisatagproof
       
  2502 {\isafoldproof}%
       
  2503 %
       
  2504 \isadelimproof
       
  2505 \isanewline
       
  2506 %
       
  2507 \endisadelimproof
       
  2508 \isanewline
       
  2509 \isanewline
       
  2510 \isanewline
       
  2511 \isacommand{lemma}\isamarkupfalse%
       
  2512 \ 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
       
  2513 %
       
  2514 \isadelimproof
       
  2515 \isanewline
       
  2516 \ \ %
       
  2517 \endisadelimproof
       
  2518 %
       
  2519 \isatagproof
       
  2520 \isacommand{apply}\isamarkupfalse%
       
  2521 {\isacharparenleft}{\kern0pt}induct\ rs{\isadigit{1}}\ rs{\isadigit{2}}\ arbitrary{\isacharcolon}{\kern0pt}\ bs\ rs\ rule{\isacharcolon}{\kern0pt}\ srewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  2522 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2523 {\isacharparenleft}{\kern0pt}rule\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline
       
  2524 \ \ \isacommand{apply}\isamarkupfalse%
       
  2525 {\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x\ {\isacharequal}{\kern0pt}\ {\isachardoublequoteopen}bs{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline
       
  2526 \ \ \isacommand{apply}\isamarkupfalse%
       
  2527 {\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
       
  2528 \ \ \isacommand{apply}\isamarkupfalse%
       
  2529 \ simp\isanewline
       
  2530 \ \ \isacommand{apply}\isamarkupfalse%
       
  2531 {\isacharparenleft}{\kern0pt}rule\ real{\isacharunderscore}{\kern0pt}trans{\isacharparenright}{\kern0pt}\isanewline
       
  2532 \ \ \ \isacommand{prefer}\isamarkupfalse%
       
  2533 \ {\isadigit{2}}\isanewline
       
  2534 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2535 {\isacharparenleft}{\kern0pt}assumption{\isacharparenright}{\kern0pt}\isanewline
       
  2536 \ \ \isacommand{apply}\isamarkupfalse%
       
  2537 {\isacharparenleft}{\kern0pt}drule\ contextrewrites{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline
       
  2538 \ \ \isacommand{apply}\isamarkupfalse%
       
  2539 \ auto\isanewline
       
  2540 \ \ \isacommand{done}\isamarkupfalse%
       
  2541 %
       
  2542 \endisatagproof
       
  2543 {\isafoldproof}%
       
  2544 %
       
  2545 \isadelimproof
       
  2546 \isanewline
       
  2547 %
       
  2548 \endisadelimproof
       
  2549 \isanewline
       
  2550 \isanewline
       
  2551 \isacommand{corollary}\isamarkupfalse%
       
  2552 \ 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
       
  2553 %
       
  2554 \isadelimproof
       
  2555 \ \ %
       
  2556 \endisadelimproof
       
  2557 %
       
  2558 \isatagproof
       
  2559 \isacommand{by}\isamarkupfalse%
       
  2560 \ {\isacharparenleft}{\kern0pt}metis\ append{\isachardot}{\kern0pt}left{\isacharunderscore}{\kern0pt}neutral\ srewrites{\isacharunderscore}{\kern0pt}alt{\isacharparenright}{\kern0pt}%
       
  2561 \endisatagproof
       
  2562 {\isafoldproof}%
       
  2563 %
       
  2564 \isadelimproof
       
  2565 \isanewline
       
  2566 %
       
  2567 \endisadelimproof
       
  2568 \isanewline
       
  2569 \isanewline
       
  2570 \isacommand{lemma}\isamarkupfalse%
       
  2571 \ 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
       
  2572 %
       
  2573 \isadelimproof
       
  2574 \ \ %
       
  2575 \endisadelimproof
       
  2576 %
       
  2577 \isatagproof
       
  2578 \isacommand{apply}\isamarkupfalse%
       
  2579 {\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
       
  2580 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2581 {\isacharparenleft}{\kern0pt}rule\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline
       
  2582 \ \ \isacommand{apply}\isamarkupfalse%
       
  2583 {\isacharparenleft}{\kern0pt}erule\ rrewrites{\isachardot}{\kern0pt}cases{\isacharparenright}{\kern0pt}\isanewline
       
  2584 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2585 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2586 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2587 {\isacharparenleft}{\kern0pt}rule\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar{\isacharparenright}{\kern0pt}\isanewline
       
  2588 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2589 {\isacharparenleft}{\kern0pt}rule\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline
       
  2590 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2591 \ simp\isanewline
       
  2592 \ \ \isacommand{apply}\isamarkupfalse%
       
  2593 {\isacharparenleft}{\kern0pt}rule\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline
       
  2594 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2595 {\isacharparenleft}{\kern0pt}assumption{\isacharparenright}{\kern0pt}\isanewline
       
  2596 \ \ \isacommand{apply}\isamarkupfalse%
       
  2597 {\isacharparenleft}{\kern0pt}rule\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline
       
  2598 \ \ \isacommand{by}\isamarkupfalse%
       
  2599 \ assumption%
       
  2600 \endisatagproof
       
  2601 {\isafoldproof}%
       
  2602 %
       
  2603 \isadelimproof
       
  2604 \isanewline
       
  2605 %
       
  2606 \endisadelimproof
       
  2607 \isanewline
       
  2608 \isacommand{lemma}\isamarkupfalse%
       
  2609 \ 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
       
  2610 %
       
  2611 \isadelimproof
       
  2612 \ \ %
       
  2613 \endisadelimproof
       
  2614 %
       
  2615 \isatagproof
       
  2616 \isacommand{apply}\isamarkupfalse%
       
  2617 {\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
       
  2618 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2619 \ auto\isanewline
       
  2620 \ \ \isacommand{using}\isamarkupfalse%
       
  2621 \ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{5}}{\isacharparenright}{\kern0pt}\ \isacommand{by}\isamarkupfalse%
       
  2622 \ blast%
       
  2623 \endisatagproof
       
  2624 {\isafoldproof}%
       
  2625 %
       
  2626 \isadelimproof
       
  2627 \isanewline
       
  2628 %
       
  2629 \endisadelimproof
       
  2630 \isanewline
       
  2631 \isanewline
       
  2632 \isacommand{lemma}\isamarkupfalse%
       
  2633 \ 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
       
  2634 %
       
  2635 \isadelimproof
       
  2636 \ \ %
       
  2637 \endisadelimproof
       
  2638 %
       
  2639 \isatagproof
       
  2640 \isacommand{apply}\isamarkupfalse%
       
  2641 {\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
       
  2642 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2643 \ {\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
       
  2644 \isanewline
       
  2645 \ \ \isacommand{by}\isamarkupfalse%
       
  2646 \ {\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}%
       
  2647 \endisatagproof
       
  2648 {\isafoldproof}%
       
  2649 %
       
  2650 \isadelimproof
       
  2651 \isanewline
       
  2652 %
       
  2653 \endisadelimproof
       
  2654 \ \ \isanewline
       
  2655 \isanewline
       
  2656 \isanewline
       
  2657 \isacommand{lemma}\isamarkupfalse%
       
  2658 \ 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
       
  2659 %
       
  2660 \isadelimproof
       
  2661 \ \ %
       
  2662 \endisadelimproof
       
  2663 %
       
  2664 \isatagproof
       
  2665 \isacommand{apply}\isamarkupfalse%
       
  2666 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline
       
  2667 \ \ \isacommand{apply}\isamarkupfalse%
       
  2668 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline
       
  2669 \ \ \isacommand{by}\isamarkupfalse%
       
  2670 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}%
       
  2671 \endisatagproof
       
  2672 {\isafoldproof}%
       
  2673 %
       
  2674 \isadelimproof
       
  2675 \isanewline
       
  2676 %
       
  2677 \endisadelimproof
       
  2678 \isanewline
       
  2679 \isacommand{lemma}\isamarkupfalse%
       
  2680 \ 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
       
  2681 %
       
  2682 \isadelimproof
       
  2683 \isanewline
       
  2684 \ \ %
       
  2685 \endisadelimproof
       
  2686 %
       
  2687 \isatagproof
       
  2688 \isacommand{apply}\isamarkupfalse%
       
  2689 {\isacharparenleft}{\kern0pt}induction\ rs{\isacharparenright}{\kern0pt}\isanewline
       
  2690 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2691 \ simp\isanewline
       
  2692 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2693 {\isacharparenleft}{\kern0pt}rule\ ss{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline
       
  2694 \ \ \isacommand{by}\isamarkupfalse%
       
  2695 \ {\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}%
       
  2696 \endisatagproof
       
  2697 {\isafoldproof}%
       
  2698 %
       
  2699 \isadelimproof
       
  2700 \isanewline
       
  2701 %
       
  2702 \endisadelimproof
       
  2703 \isanewline
       
  2704 \isanewline
       
  2705 \isacommand{lemma}\isamarkupfalse%
       
  2706 \ 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
       
  2707 %
       
  2708 \isadelimproof
       
  2709 \ \ %
       
  2710 \endisadelimproof
       
  2711 %
       
  2712 \isatagproof
       
  2713 \isacommand{apply}\isamarkupfalse%
       
  2714 {\isacharparenleft}{\kern0pt}induction\ rs{\isacharparenright}{\kern0pt}\isanewline
       
  2715 \ \ \isacommand{apply}\isamarkupfalse%
       
  2716 \ simp\isanewline
       
  2717 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2718 {\isacharparenleft}{\kern0pt}rule\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar{\isacharparenright}{\kern0pt}\isanewline
       
  2719 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2720 {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ \ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline
       
  2721 \ \ \isacommand{apply}\isamarkupfalse%
       
  2722 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}rs\ {\isacharequal}{\kern0pt}\ Nil{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  2723 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2724 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2725 \ \ \isacommand{using}\isamarkupfalse%
       
  2726 \ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{2}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse%
       
  2727 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  2728 \ \ \isacommand{apply}\isamarkupfalse%
       
  2729 {\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}length\ {\isacharparenleft}{\kern0pt}a{\isacharhash}{\kern0pt}rs{\isacharparenright}{\kern0pt}\ {\isachargreater}{\kern0pt}\ {\isadigit{1}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  2730 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2731 {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bsimp{\isacharunderscore}{\kern0pt}AALTs{\isacharunderscore}{\kern0pt}qq{\isacharparenright}{\kern0pt}\isanewline
       
  2732 \ \ \isacommand{apply}\isamarkupfalse%
       
  2733 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  2734 \ \ \isacommand{done}\isamarkupfalse%
       
  2735 %
       
  2736 \endisatagproof
       
  2737 {\isafoldproof}%
       
  2738 %
       
  2739 \isadelimproof
       
  2740 \ \isanewline
       
  2741 %
       
  2742 \endisadelimproof
       
  2743 \isanewline
       
  2744 \isacommand{inductive}\isamarkupfalse%
       
  2745 \ 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
       
  2746 \ \ \isakeyword{where}\isanewline
       
  2747 fs{\isadigit{1}}{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}{\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ f{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
  2748 {\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
       
  2749 {\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
       
  2750 {\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
       
  2751 \isanewline
       
  2752 \isanewline
       
  2753 \isanewline
       
  2754 \isanewline
       
  2755 \isanewline
       
  2756 \isacommand{lemma}\isamarkupfalse%
       
  2757 \ 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
       
  2758 %
       
  2759 \isadelimproof
       
  2760 \ \ %
       
  2761 \endisadelimproof
       
  2762 %
       
  2763 \isatagproof
       
  2764 \isacommand{by}\isamarkupfalse%
       
  2765 \ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}Cons\ append{\isacharunderscore}{\kern0pt}Nil\ flts{\isacharunderscore}{\kern0pt}single{\isadigit{1}}\ k{\isadigit{0}}{\isadigit{0}}{\isacharparenright}{\kern0pt}%
       
  2766 \endisatagproof
       
  2767 {\isafoldproof}%
       
  2768 %
       
  2769 \isadelimproof
       
  2770 \isanewline
       
  2771 %
       
  2772 \endisadelimproof
       
  2773 \isanewline
       
  2774 \isacommand{lemma}\isamarkupfalse%
       
  2775 \ fltsfrewrites{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}rs\ f{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ {\isacharparenleft}{\kern0pt}flts\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
  2776 %
       
  2777 \isadelimproof
       
  2778 \ \ %
       
  2779 \endisadelimproof
       
  2780 %
       
  2781 \isatagproof
       
  2782 \isacommand{apply}\isamarkupfalse%
       
  2783 {\isacharparenleft}{\kern0pt}induction\ rs{\isacharparenright}{\kern0pt}\isanewline
       
  2784 \ \ \isacommand{apply}\isamarkupfalse%
       
  2785 \ simp\isanewline
       
  2786 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2787 {\isacharparenleft}{\kern0pt}rule\ fs{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline
       
  2788 \isanewline
       
  2789 \ \ \isacommand{apply}\isamarkupfalse%
       
  2790 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}a\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  2791 \isanewline
       
  2792 \ \ \ \isanewline
       
  2793 \ \ \isacommand{using}\isamarkupfalse%
       
  2794 \ fs{\isadigit{2}}\ \isacommand{apply}\isamarkupfalse%
       
  2795 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  2796 \ \ \isacommand{apply}\isamarkupfalse%
       
  2797 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}{\isasymexists}bs\ rs{\isachardot}{\kern0pt}\ a\ {\isacharequal}{\kern0pt}\ AALTs\ bs\ rs{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  2798 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2799 {\isacharparenleft}{\kern0pt}erule\ exE{\isacharparenright}{\kern0pt}{\isacharplus}{\kern0pt}\isanewline
       
  2800 \ \ \ \isanewline
       
  2801 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2802 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ fs{\isadigit{3}}{\isacharparenright}{\kern0pt}\isanewline
       
  2803 \ \ \isacommand{apply}\isamarkupfalse%
       
  2804 {\isacharparenleft}{\kern0pt}subst\ flts{\isacharunderscore}{\kern0pt}prepend{\isacharparenright}{\kern0pt}\isanewline
       
  2805 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2806 {\isacharparenleft}{\kern0pt}rule\ nonalt{\isachardot}{\kern0pt}elims{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline
       
  2807 \ \ \isacommand{prefer}\isamarkupfalse%
       
  2808 \ {\isadigit{2}}\isanewline
       
  2809 \ \ \isacommand{thm}\isamarkupfalse%
       
  2810 \ nonalt{\isachardot}{\kern0pt}elims\isanewline
       
  2811 \ \ \ \isanewline
       
  2812 \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2813 \ blast\isanewline
       
  2814 \ \ \ \isanewline
       
  2815 \ \ \isacommand{using}\isamarkupfalse%
       
  2816 \ bbbbs{\isadigit{1}}\ \isacommand{apply}\isamarkupfalse%
       
  2817 \ blast\isanewline
       
  2818 \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2819 {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ nonalt{\isachardot}{\kern0pt}simps{\isacharparenright}{\kern0pt}{\isacharplus}{\kern0pt}\isanewline
       
  2820 \ \ \ \isanewline
       
  2821 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2822 \ {\isacharparenleft}{\kern0pt}meson\ nonazero{\isachardot}{\kern0pt}elims{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline
       
  2823 \ \ \ \isanewline
       
  2824 \ \ \isacommand{by}\isamarkupfalse%
       
  2825 \ {\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}%
       
  2826 \endisatagproof
       
  2827 {\isafoldproof}%
       
  2828 %
       
  2829 \isadelimproof
       
  2830 \isanewline
       
  2831 %
       
  2832 \endisadelimproof
       
  2833 \isanewline
       
  2834 \isanewline
       
  2835 \isacommand{lemma}\isamarkupfalse%
       
  2836 \ rrewrite{\isadigit{0}}away{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}AALTs\ bs\ {\isacharparenleft}{\kern0pt}\ AZERO\ {\isacharhash}{\kern0pt}\ rsb{\isacharparenright}{\kern0pt}\ {\isasymleadsto}\ AALTs\ bs\ rsb{\isachardoublequoteclose}\isanewline
       
  2837 %
       
  2838 \isadelimproof
       
  2839 \ \ %
       
  2840 \endisadelimproof
       
  2841 %
       
  2842 \isatagproof
       
  2843 \isacommand{by}\isamarkupfalse%
       
  2844 \ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}Nil\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{7}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}%
       
  2845 \endisatagproof
       
  2846 {\isafoldproof}%
       
  2847 %
       
  2848 \isadelimproof
       
  2849 \isanewline
       
  2850 %
       
  2851 \endisadelimproof
       
  2852 \isanewline
       
  2853 \isanewline
       
  2854 \isacommand{lemma}\isamarkupfalse%
       
  2855 \ 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
       
  2856 %
       
  2857 \isadelimproof
       
  2858 \ \ %
       
  2859 \endisadelimproof
       
  2860 %
       
  2861 \isatagproof
       
  2862 \isacommand{apply}\isamarkupfalse%
       
  2863 {\isacharparenleft}{\kern0pt}induct\ rs\ rs{\isacharprime}{\kern0pt}\ arbitrary{\isacharcolon}{\kern0pt}\ bs\ rs{\isadigit{1}}\ rule{\isacharcolon}{\kern0pt}frewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  2864 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2865 {\isacharparenleft}{\kern0pt}rule\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline
       
  2866 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2867 {\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x\ {\isacharequal}{\kern0pt}\ {\isachardoublequoteopen}bs{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline
       
  2868 \ \ \isacommand{apply}\isamarkupfalse%
       
  2869 {\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
       
  2870 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2871 {\isacharparenleft}{\kern0pt}rule\ real{\isacharunderscore}{\kern0pt}trans{\isacharparenright}{\kern0pt}\isanewline
       
  2872 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2873 \ simp\isanewline
       
  2874 \ \ \isacommand{using}\isamarkupfalse%
       
  2875 \ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{7}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse%
       
  2876 \ presburger\isanewline
       
  2877 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2878 {\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x\ {\isacharequal}{\kern0pt}\ {\isachardoublequoteopen}bsa{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline
       
  2879 \ \ \isacommand{apply}\isamarkupfalse%
       
  2880 {\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
       
  2881 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2882 {\isacharparenleft}{\kern0pt}rule\ real{\isacharunderscore}{\kern0pt}trans{\isacharparenright}{\kern0pt}\isanewline
       
  2883 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2884 \ simp\isanewline
       
  2885 \ \ \isacommand{using}\isamarkupfalse%
       
  2886 \ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{8}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse%
       
  2887 \ presburger\isanewline
       
  2888 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2889 {\isacharparenleft}{\kern0pt}drule{\isacharunderscore}{\kern0pt}tac\ x\ {\isacharequal}{\kern0pt}\ {\isachardoublequoteopen}bs{\isachardoublequoteclose}\ \isakeyword{in}\ meta{\isacharunderscore}{\kern0pt}spec{\isacharparenright}{\kern0pt}\isanewline
       
  2890 \ \ \isacommand{apply}\isamarkupfalse%
       
  2891 {\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
       
  2892 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2893 {\isacharparenleft}{\kern0pt}rule\ real{\isacharunderscore}{\kern0pt}trans{\isacharparenright}{\kern0pt}\isanewline
       
  2894 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2895 \ simp\isanewline
       
  2896 \ \ \isacommand{apply}\isamarkupfalse%
       
  2897 \ auto\isanewline
       
  2898 \ \ \isacommand{done}\isamarkupfalse%
       
  2899 %
       
  2900 \endisatagproof
       
  2901 {\isafoldproof}%
       
  2902 %
       
  2903 \isadelimproof
       
  2904 \isanewline
       
  2905 %
       
  2906 \endisadelimproof
       
  2907 \isanewline
       
  2908 \isacommand{lemma}\isamarkupfalse%
       
  2909 \ fltsrewrites{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}\ \ AALTs\ bs{\isadigit{1}}\ rs\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ AALTs\ bs{\isadigit{1}}\ {\isacharparenleft}{\kern0pt}flts\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
  2910 %
       
  2911 \isadelimproof
       
  2912 \ \ %
       
  2913 \endisadelimproof
       
  2914 %
       
  2915 \isatagproof
       
  2916 \isacommand{apply}\isamarkupfalse%
       
  2917 {\isacharparenleft}{\kern0pt}induction\ rs{\isacharparenright}{\kern0pt}\isanewline
       
  2918 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2919 \ simp\isanewline
       
  2920 \ \ \isacommand{apply}\isamarkupfalse%
       
  2921 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}a\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  2922 \ \ \isacommand{apply}\isamarkupfalse%
       
  2923 \ {\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
       
  2924 \isanewline
       
  2925 \isanewline
       
  2926 \isanewline
       
  2927 \ \ \isacommand{apply}\isamarkupfalse%
       
  2928 {\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
       
  2929 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2930 {\isacharparenleft}{\kern0pt}erule\ exE{\isacharparenright}{\kern0pt}{\isacharplus}{\kern0pt}\isanewline
       
  2931 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2932 {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ flts{\isachardot}{\kern0pt}simps{\isacharparenright}{\kern0pt}\isanewline
       
  2933 \ \ \ \isacommand{prefer}\isamarkupfalse%
       
  2934 \ {\isadigit{2}}\isanewline
       
  2935 \isanewline
       
  2936 \ \ \isacommand{apply}\isamarkupfalse%
       
  2937 {\isacharparenleft}{\kern0pt}subst\ flts{\isacharunderscore}{\kern0pt}prepend{\isacharparenright}{\kern0pt}\isanewline
       
  2938 \ \ \ \isanewline
       
  2939 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2940 \ {\isacharparenleft}{\kern0pt}meson\ nonalt{\isachardot}{\kern0pt}elims{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline
       
  2941 \ \ \ \isanewline
       
  2942 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2943 \ {\isacharparenleft}{\kern0pt}meson\ nonazero{\isachardot}{\kern0pt}elims{\isacharparenleft}{\kern0pt}{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline
       
  2944 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  2945 {\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
       
  2946 \ \ \isacommand{apply}\isamarkupfalse%
       
  2947 \ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}Nil\ frewritesaalts{\isacharparenright}{\kern0pt}\isanewline
       
  2948 \ \ \isacommand{apply}\isamarkupfalse%
       
  2949 \ {\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
       
  2950 \ \ \isacommand{by}\isamarkupfalse%
       
  2951 \ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}Cons\ append{\isacharunderscore}{\kern0pt}Nil\ fltsfrewrites\ frewritesaalts\ k{\isadigit{0}}{\isadigit{0}}\ k{\isadigit{0}}a{\isacharparenright}{\kern0pt}%
       
  2952 \endisatagproof
       
  2953 {\isafoldproof}%
       
  2954 %
       
  2955 \isadelimproof
       
  2956 \isanewline
       
  2957 %
       
  2958 \endisadelimproof
       
  2959 \isanewline
       
  2960 \isacommand{lemma}\isamarkupfalse%
       
  2961 \ 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
       
  2962 AALTs\ bs{\isadigit{1}}\ rs\ {\isasymleadsto}{\isacharasterisk}{\kern0pt}\ AALTs\ bs{\isadigit{1}}\ {\isacharparenleft}{\kern0pt}map\ bsimp\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
  2963 %
       
  2964 \isadelimproof
       
  2965 \ \ %
       
  2966 \endisadelimproof
       
  2967 %
       
  2968 \isatagproof
       
  2969 \isacommand{apply}\isamarkupfalse%
       
  2970 {\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}\ rs\ s{\isasymleadsto}{\isacharasterisk}{\kern0pt}\ \ {\isacharparenleft}{\kern0pt}map\ bsimp\ rs{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  2971 \ \ \ \isacommand{prefer}\isamarkupfalse%
       
  2972 \ {\isadigit{2}}\isanewline
       
  2973 \ \ \isacommand{using}\isamarkupfalse%
       
  2974 \ trivialbsimpsrewrites\ \isacommand{apply}\isamarkupfalse%
       
  2975 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  2976 \ \ \isacommand{using}\isamarkupfalse%
       
  2977 \ srewrites{\isacharunderscore}{\kern0pt}alt{\isadigit{1}}\ \isacommand{by}\isamarkupfalse%
       
  2978 \ auto%
       
  2979 \endisatagproof
       
  2980 {\isafoldproof}%
       
  2981 %
       
  2982 \isadelimproof
       
  2983 \isanewline
       
  2984 %
       
  2985 \endisadelimproof
       
  2986 \isanewline
       
  2987 \isanewline
       
  2988 \isacommand{lemma}\isamarkupfalse%
       
  2989 \ 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
       
  2990 %
       
  2991 \isadelimproof
       
  2992 \ \ %
       
  2993 \endisadelimproof
       
  2994 %
       
  2995 \isatagproof
       
  2996 \isacommand{apply}\isamarkupfalse%
       
  2997 \ auto\isanewline
       
  2998 \ \ \isacommand{done}\isamarkupfalse%
       
  2999 %
       
  3000 \endisatagproof
       
  3001 {\isafoldproof}%
       
  3002 %
       
  3003 \isadelimproof
       
  3004 \isanewline
       
  3005 %
       
  3006 \endisadelimproof
       
  3007 \isanewline
       
  3008 \isacommand{fun}\isamarkupfalse%
       
  3009 \ 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
       
  3010 \ \ \isakeyword{where}\isanewline
       
  3011 \ \ {\isachardoublequoteopen}distinctByAcc\ {\isacharbrackleft}{\kern0pt}{\isacharbrackright}{\kern0pt}\ f\ acc\ {\isacharequal}{\kern0pt}\ acc{\isachardoublequoteclose}\isanewline
       
  3012 {\isacharbar}{\kern0pt}\ {\isachardoublequoteopen}distinctByAcc\ {\isacharparenleft}{\kern0pt}x{\isacharhash}{\kern0pt}xs{\isacharparenright}{\kern0pt}\ f\ acc\ {\isacharequal}{\kern0pt}\ \isanewline
       
  3013 \ \ \ \ \ {\isacharparenleft}{\kern0pt}if\ {\isacharparenleft}{\kern0pt}f\ x{\isacharparenright}{\kern0pt}\ {\isasymin}\ acc\ then\ distinctByAcc\ xs\ f\ acc\ \isanewline
       
  3014 \ \ \ \ \ \ else\ \ {\isacharparenleft}{\kern0pt}distinctByAcc\ xs\ f\ {\isacharparenleft}{\kern0pt}{\isacharbraceleft}{\kern0pt}f\ x{\isacharbraceright}{\kern0pt}\ {\isasymunion}\ acc{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
  3015 \isanewline
       
  3016 \isacommand{lemma}\isamarkupfalse%
       
  3017 \ 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
       
  3018 %
       
  3019 \isadelimproof
       
  3020 \ \ %
       
  3021 \endisadelimproof
       
  3022 %
       
  3023 \isatagproof
       
  3024 \isacommand{apply}\isamarkupfalse%
       
  3025 \ simp\isanewline
       
  3026 \ \ \isacommand{done}\isamarkupfalse%
       
  3027 %
       
  3028 \endisatagproof
       
  3029 {\isafoldproof}%
       
  3030 %
       
  3031 \isadelimproof
       
  3032 \isanewline
       
  3033 %
       
  3034 \endisadelimproof
       
  3035 \isanewline
       
  3036 \isacommand{lemma}\isamarkupfalse%
       
  3037 \ 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
       
  3038 %
       
  3039 \isadelimproof
       
  3040 \ \ %
       
  3041 \endisadelimproof
       
  3042 %
       
  3043 \isatagproof
       
  3044 \isacommand{using}\isamarkupfalse%
       
  3045 \ split{\isacharunderscore}{\kern0pt}list\ \isacommand{by}\isamarkupfalse%
       
  3046 \ fastforce%
       
  3047 \endisatagproof
       
  3048 {\isafoldproof}%
       
  3049 %
       
  3050 \isadelimproof
       
  3051 \isanewline
       
  3052 %
       
  3053 \endisadelimproof
       
  3054 \isanewline
       
  3055 \isacommand{lemma}\isamarkupfalse%
       
  3056 \ 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
       
  3057 %
       
  3058 \isadelimproof
       
  3059 \ \ %
       
  3060 \endisadelimproof
       
  3061 %
       
  3062 \isatagproof
       
  3063 \isacommand{apply}\isamarkupfalse%
       
  3064 \ auto\isanewline
       
  3065 \ \ \isacommand{by}\isamarkupfalse%
       
  3066 \ {\isacharparenleft}{\kern0pt}metis\ split{\isacharunderscore}{\kern0pt}list{\isacharparenright}{\kern0pt}%
       
  3067 \endisatagproof
       
  3068 {\isafoldproof}%
       
  3069 %
       
  3070 \isadelimproof
       
  3071 \isanewline
       
  3072 %
       
  3073 \endisadelimproof
       
  3074 \isanewline
       
  3075 \isacommand{lemma}\isamarkupfalse%
       
  3076 \ 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
       
  3077 %
       
  3078 \isadelimproof
       
  3079 \ \ %
       
  3080 \endisadelimproof
       
  3081 %
       
  3082 \isatagproof
       
  3083 \isacommand{apply}\isamarkupfalse%
       
  3084 {\isacharparenleft}{\kern0pt}induction\ rs\ arbitrary{\isacharcolon}{\kern0pt}\ rsa{\isacharparenright}{\kern0pt}\isanewline
       
  3085 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3086 \ simp\isanewline
       
  3087 \ \ \isacommand{apply}\isamarkupfalse%
       
  3088 {\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
       
  3089 \ \ \isacommand{apply}\isamarkupfalse%
       
  3090 {\isacharparenleft}{\kern0pt}subst\ threelistsappend{\isacharparenright}{\kern0pt}\isanewline
       
  3091 \ \ \isacommand{apply}\isamarkupfalse%
       
  3092 {\isacharparenleft}{\kern0pt}rule\ real{\isacharunderscore}{\kern0pt}trans{\isacharparenright}{\kern0pt}\isanewline
       
  3093 \ \ \isacommand{apply}\isamarkupfalse%
       
  3094 \ simp\isanewline
       
  3095 \ \ \isacommand{apply}\isamarkupfalse%
       
  3096 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}a\ {\isasymin}\ set\ rsa{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  3097 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3098 \ simp\isanewline
       
  3099 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3100 {\isacharparenleft}{\kern0pt}drule\ somewhereInside{\isacharparenright}{\kern0pt}\isanewline
       
  3101 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3102 {\isacharparenleft}{\kern0pt}erule\ exE{\isacharparenright}{\kern0pt}{\isacharplus}{\kern0pt}\isanewline
       
  3103 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3104 \ simp\isanewline
       
  3105 \ \ \isacommand{apply}\isamarkupfalse%
       
  3106 {\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}\ AALTs\ bs\isanewline
       
  3107 \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}{\kern0pt}rs{\isadigit{1}}\ {\isacharat}{\kern0pt}\isanewline
       
  3108 \ \ \ \ \ \ \ \ \ \ \ \ \ a\ {\isacharhash}{\kern0pt}\isanewline
       
  3109 \ \ \ \ \ \ \ \ \ \ \ \ \ rs{\isadigit{2}}\ {\isacharat}{\kern0pt}\isanewline
       
  3110 \ \ \ \ \ \ \ \ \ \ \ \ \ a\ {\isacharhash}{\kern0pt}\isanewline
       
  3111 \ \ \ \ \ \ \ \ \ \ \ \ \ distinctBy\ rs\ erase\isanewline
       
  3112 \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}{\kern0pt}insert\ {\isacharparenleft}{\kern0pt}erase\ a{\isacharparenright}{\kern0pt}\isanewline
       
  3113 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}{\kern0pt}erase\ {\isacharbackquote}{\kern0pt}\isanewline
       
  3114 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\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
       
  3115 \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}{\kern0pt}insert\ {\isacharparenleft}{\kern0pt}erase\ a{\isacharparenright}{\kern0pt}\isanewline
       
  3116 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}{\kern0pt}erase\ {\isacharbackquote}{\kern0pt}\isanewline
       
  3117 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {\isacharparenleft}{\kern0pt}set\ rs{\isadigit{1}}\ {\isasymunion}\ set\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\ {\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  3118 \ \ \isacommand{prefer}\isamarkupfalse%
       
  3119 \ {\isadigit{2}}\isanewline
       
  3120 \ \ \isacommand{using}\isamarkupfalse%
       
  3121 \ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse%
       
  3122 \ force\isanewline
       
  3123 \ \ \isacommand{using}\isamarkupfalse%
       
  3124 \ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ \isacommand{apply}\isamarkupfalse%
       
  3125 \ force\isanewline
       
  3126 \ \ \isacommand{apply}\isamarkupfalse%
       
  3127 {\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
       
  3128 \ \ \isacommand{prefer}\isamarkupfalse%
       
  3129 \ {\isadigit{2}}\isanewline
       
  3130 \ \ \ \ \isanewline
       
  3131 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3132 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  3133 \ \ \isacommand{apply}\isamarkupfalse%
       
  3134 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}erase\ a\ {\isasymin}\ erase\ {\isacharbackquote}{\kern0pt}set\ rsa{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  3135 \isanewline
       
  3136 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3137 \ simp\isanewline
       
  3138 \ \ \isacommand{apply}\isamarkupfalse%
       
  3139 {\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
       
  3140 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 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
       
  3141 \ \ \isacommand{apply}\isamarkupfalse%
       
  3142 \ force\isanewline
       
  3143 \ \ \isacommand{apply}\isamarkupfalse%
       
  3144 \ {\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
       
  3145 \ \ \isacommand{by}\isamarkupfalse%
       
  3146 \ force%
       
  3147 \endisatagproof
       
  3148 {\isafoldproof}%
       
  3149 %
       
  3150 \isadelimproof
       
  3151 \isanewline
       
  3152 %
       
  3153 \endisadelimproof
       
  3154 \isanewline
       
  3155 \ \isanewline
       
  3156 \isanewline
       
  3157 \isacommand{lemma}\isamarkupfalse%
       
  3158 \ 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
       
  3159 %
       
  3160 \isadelimproof
       
  3161 \ \ %
       
  3162 \endisadelimproof
       
  3163 %
       
  3164 \isatagproof
       
  3165 \isacommand{apply}\isamarkupfalse%
       
  3166 {\isacharparenleft}{\kern0pt}induction\ rs{\isacharparenright}{\kern0pt}\isanewline
       
  3167 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3168 \ simp\isanewline
       
  3169 \ \ \isacommand{apply}\isamarkupfalse%
       
  3170 \ simp\isanewline
       
  3171 \ \ \isacommand{using}\isamarkupfalse%
       
  3172 \ alts{\isacharunderscore}{\kern0pt}dBrewrites{\isacharunderscore}{\kern0pt}withFront\isanewline
       
  3173 \ \ \isacommand{by}\isamarkupfalse%
       
  3174 \ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}Nil\ dB{\isacharunderscore}{\kern0pt}single{\isacharunderscore}{\kern0pt}step\ empty{\isacharunderscore}{\kern0pt}set\ image{\isacharunderscore}{\kern0pt}empty{\isacharparenright}{\kern0pt}%
       
  3175 \endisatagproof
       
  3176 {\isafoldproof}%
       
  3177 %
       
  3178 \isadelimproof
       
  3179 \isanewline
       
  3180 %
       
  3181 \endisadelimproof
       
  3182 \isanewline
       
  3183 \isanewline
       
  3184 \isanewline
       
  3185 \ \ \isanewline
       
  3186 \isanewline
       
  3187 \isanewline
       
  3188 \isacommand{lemma}\isamarkupfalse%
       
  3189 \ bsimp{\isacharunderscore}{\kern0pt}rewrite{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}\ {\isacharparenleft}{\kern0pt}rrewrites\ r\ {\isacharparenleft}{\kern0pt}\ bsimp\ r{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
  3190 %
       
  3191 \isadelimproof
       
  3192 \ \ %
       
  3193 \endisadelimproof
       
  3194 %
       
  3195 \isatagproof
       
  3196 \isacommand{apply}\isamarkupfalse%
       
  3197 {\isacharparenleft}{\kern0pt}induction\ r\ rule{\isacharcolon}{\kern0pt}\ bsimp{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  3198 \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3199 \ simp\isanewline
       
  3200 \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3201 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bsimp\ r{\isadigit{1}}\ {\isacharequal}{\kern0pt}\ AZERO{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  3202 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3203 \ simp\isanewline
       
  3204 \ \ \isacommand{using}\isamarkupfalse%
       
  3205 \ continuous{\isacharunderscore}{\kern0pt}rewrite\ \isacommand{apply}\isamarkupfalse%
       
  3206 \ blast\isanewline
       
  3207 \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3208 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}{\isasymexists}bs{\isachardot}{\kern0pt}\ bsimp\ r{\isadigit{1}}\ {\isacharequal}{\kern0pt}\ AONE\ bs{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  3209 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3210 {\isacharparenleft}{\kern0pt}erule\ exE{\isacharparenright}{\kern0pt}\isanewline
       
  3211 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3212 \ simp\isanewline
       
  3213 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3214 {\isacharparenleft}{\kern0pt}subst\ bsimp{\isacharunderscore}{\kern0pt}ASEQ{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline
       
  3215 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3216 \ {\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
       
  3217 \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3218 \ {\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
       
  3219 \ \ \ \ \ \ \isacommand{defer}\isamarkupfalse%
       
  3220 \isanewline
       
  3221 \ \ \isacommand{using}\isamarkupfalse%
       
  3222 \ bsimp{\isacharunderscore}{\kern0pt}aalts{\isacharunderscore}{\kern0pt}simpcases{\isacharparenleft}{\kern0pt}{\isadigit{2}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse%
       
  3223 \ blast\isanewline
       
  3224 \ \ \isacommand{apply}\isamarkupfalse%
       
  3225 \ simp\isanewline
       
  3226 \ \ \isacommand{apply}\isamarkupfalse%
       
  3227 \ simp\isanewline
       
  3228 \ \ \isacommand{apply}\isamarkupfalse%
       
  3229 \ simp\isanewline
       
  3230 \isanewline
       
  3231 \ \ \isacommand{apply}\isamarkupfalse%
       
  3232 \ auto\isanewline
       
  3233 \isanewline
       
  3234 \isanewline
       
  3235 \ \ \isacommand{apply}\isamarkupfalse%
       
  3236 {\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
       
  3237 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3238 {\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
       
  3239 \ \ \isacommand{apply}\isamarkupfalse%
       
  3240 {\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
       
  3241 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3242 {\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
       
  3243 \isanewline
       
  3244 \ \ \isanewline
       
  3245 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3246 \ {\isacharparenleft}{\kern0pt}meson\ real{\isacharunderscore}{\kern0pt}trans{\isacharparenright}{\kern0pt}\isanewline
       
  3247 \isanewline
       
  3248 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3249 \ {\isacharparenleft}{\kern0pt}meson\ bsimp{\isacharunderscore}{\kern0pt}AALTsrewrites{\isacharparenright}{\kern0pt}\isanewline
       
  3250 \isanewline
       
  3251 \ \ \isacommand{apply}\isamarkupfalse%
       
  3252 \ {\isacharparenleft}{\kern0pt}meson\ alts{\isacharunderscore}{\kern0pt}dBrewrites{\isacharparenright}{\kern0pt}\isanewline
       
  3253 \isanewline
       
  3254 \ \ \isacommand{using}\isamarkupfalse%
       
  3255 \ fltsrewrites\ \isacommand{apply}\isamarkupfalse%
       
  3256 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  3257 \isanewline
       
  3258 \ \ \isacommand{using}\isamarkupfalse%
       
  3259 \ alts{\isacharunderscore}{\kern0pt}simpalts\ \isacommand{by}\isamarkupfalse%
       
  3260 \ force%
       
  3261 \endisatagproof
       
  3262 {\isafoldproof}%
       
  3263 %
       
  3264 \isadelimproof
       
  3265 \isanewline
       
  3266 %
       
  3267 \endisadelimproof
       
  3268 \isanewline
       
  3269 \isanewline
       
  3270 \isacommand{lemma}\isamarkupfalse%
       
  3271 \ 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
       
  3272 %
       
  3273 \isadelimproof
       
  3274 \ \ %
       
  3275 \endisadelimproof
       
  3276 %
       
  3277 \isatagproof
       
  3278 \isacommand{apply}\isamarkupfalse%
       
  3279 {\isacharparenleft}{\kern0pt}induction\ r{\isadigit{1}}\ r{\isadigit{2}}\ rule{\isacharcolon}{\kern0pt}\ rrewrite{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  3280 \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3281 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}{\isacharplus}{\kern0pt}\isanewline
       
  3282 \ \ \isacommand{apply}\isamarkupfalse%
       
  3283 \ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline
       
  3284 \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3285 \ simp\isanewline
       
  3286 \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3287 \ simp\isanewline
       
  3288 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3289 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  3290 \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3291 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  3292 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3293 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{4}}{\isacharbrackright}{\kern0pt}\isanewline
       
  3294 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3295 \ {\isacharparenleft}{\kern0pt}metis\ UnCI\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse\ imageI{\isacharparenright}{\kern0pt}\isanewline
       
  3296 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3297 \ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline
       
  3298 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3299 \ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline
       
  3300 \ \ \isanewline
       
  3301 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3302 \ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{5}}{\isacharparenright}{\kern0pt}\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline
       
  3303 \ \ \isanewline
       
  3304 \isanewline
       
  3305 \ \ \isacommand{by}\isamarkupfalse%
       
  3306 \ {\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}%
       
  3307 \endisatagproof
       
  3308 {\isafoldproof}%
       
  3309 %
       
  3310 \isadelimproof
       
  3311 \isanewline
       
  3312 %
       
  3313 \endisadelimproof
       
  3314 \isanewline
       
  3315 \isacommand{lemma}\isamarkupfalse%
       
  3316 \ 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
       
  3317 %
       
  3318 \isadelimproof
       
  3319 \ \ %
       
  3320 \endisadelimproof
       
  3321 %
       
  3322 \isatagproof
       
  3323 \isacommand{apply}\isamarkupfalse%
       
  3324 {\isacharparenleft}{\kern0pt}induction\ r{\isadigit{1}}\ r{\isadigit{2}}\ rule{\isacharcolon}{\kern0pt}\ rrewrite{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  3325 \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3326 \ auto\ \isanewline
       
  3327 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3328 \ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}{\isacharplus}{\kern0pt}\isanewline
       
  3329 \ \ \isacommand{done}\isamarkupfalse%
       
  3330 %
       
  3331 \endisatagproof
       
  3332 {\isafoldproof}%
       
  3333 %
       
  3334 \isadelimproof
       
  3335 \isanewline
       
  3336 %
       
  3337 \endisadelimproof
       
  3338 \isanewline
       
  3339 \isanewline
       
  3340 \isacommand{lemma}\isamarkupfalse%
       
  3341 \ 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
       
  3342 %
       
  3343 \isadelimproof
       
  3344 \ \ %
       
  3345 \endisadelimproof
       
  3346 %
       
  3347 \isatagproof
       
  3348 \isacommand{apply}\isamarkupfalse%
       
  3349 {\isacharparenleft}{\kern0pt}induction\ r{\isadigit{1}}\ r{\isadigit{2}}\ rule{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  3350 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3351 \ simp\isanewline
       
  3352 \ \ \isacommand{apply}\isamarkupfalse%
       
  3353 {\isacharparenleft}{\kern0pt}rule\ rewritenullable{\isacharparenright}{\kern0pt}\isanewline
       
  3354 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3355 \ simp\isanewline
       
  3356 \ \ \isacommand{apply}\isamarkupfalse%
       
  3357 \ simp\isanewline
       
  3358 \ \ \isacommand{done}\isamarkupfalse%
       
  3359 %
       
  3360 \endisatagproof
       
  3361 {\isafoldproof}%
       
  3362 %
       
  3363 \isadelimproof
       
  3364 \isanewline
       
  3365 %
       
  3366 \endisadelimproof
       
  3367 \isanewline
       
  3368 \isacommand{lemma}\isamarkupfalse%
       
  3369 \ 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
       
  3370 {\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
       
  3371 %
       
  3372 \isadelimproof
       
  3373 \ \ %
       
  3374 \endisadelimproof
       
  3375 %
       
  3376 \isatagproof
       
  3377 \isacommand{apply}\isamarkupfalse%
       
  3378 \ simp\isanewline
       
  3379 \ \ \isacommand{apply}\isamarkupfalse%
       
  3380 \ blast\isanewline
       
  3381 \ \ \isacommand{done}\isamarkupfalse%
       
  3382 %
       
  3383 \endisatagproof
       
  3384 {\isafoldproof}%
       
  3385 %
       
  3386 \isadelimproof
       
  3387 \isanewline
       
  3388 %
       
  3389 \endisadelimproof
       
  3390 \isanewline
       
  3391 \isanewline
       
  3392 \isanewline
       
  3393 \isacommand{lemma}\isamarkupfalse%
       
  3394 \ 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
       
  3395 \ {\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
       
  3396 %
       
  3397 \isadelimproof
       
  3398 \ \ %
       
  3399 \endisadelimproof
       
  3400 %
       
  3401 \isatagproof
       
  3402 \isacommand{using}\isamarkupfalse%
       
  3403 \ nonbnullable{\isacharunderscore}{\kern0pt}lists{\isacharunderscore}{\kern0pt}concat\ qq{\isadigit{3}}\ \isacommand{by}\isamarkupfalse%
       
  3404 \ presburger%
       
  3405 \endisatagproof
       
  3406 {\isafoldproof}%
       
  3407 %
       
  3408 \isadelimproof
       
  3409 \isanewline
       
  3410 %
       
  3411 \endisadelimproof
       
  3412 \isanewline
       
  3413 \isacommand{lemma}\isamarkupfalse%
       
  3414 \ 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
       
  3415 %
       
  3416 \isadelimproof
       
  3417 \ \ %
       
  3418 \endisadelimproof
       
  3419 %
       
  3420 \isatagproof
       
  3421 \isacommand{apply}\isamarkupfalse%
       
  3422 {\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
       
  3423 \isanewline
       
  3424 \ \ \isacommand{using}\isamarkupfalse%
       
  3425 \ qq{\isadigit{3}}\ \isacommand{apply}\isamarkupfalse%
       
  3426 \ blast\isanewline
       
  3427 \ \ \isacommand{apply}\isamarkupfalse%
       
  3428 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ r{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  3429 \isanewline
       
  3430 \ \ \isacommand{apply}\isamarkupfalse%
       
  3431 \ blast\isanewline
       
  3432 \ \ \isacommand{apply}\isamarkupfalse%
       
  3433 {\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
       
  3434 \isanewline
       
  3435 \ \ \isacommand{using}\isamarkupfalse%
       
  3436 \ bnullable{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse%
       
  3437 \ presburger\isanewline
       
  3438 \ \ \isacommand{apply}\isamarkupfalse%
       
  3439 {\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}False{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  3440 \isanewline
       
  3441 \ \ \isacommand{apply}\isamarkupfalse%
       
  3442 \ blast\isanewline
       
  3443 \isanewline
       
  3444 \ \ \isacommand{using}\isamarkupfalse%
       
  3445 \ nomember{\isacharunderscore}{\kern0pt}bnullable\ \isacommand{by}\isamarkupfalse%
       
  3446 \ blast%
       
  3447 \endisatagproof
       
  3448 {\isafoldproof}%
       
  3449 %
       
  3450 \isadelimproof
       
  3451 \isanewline
       
  3452 %
       
  3453 \endisadelimproof
       
  3454 \isanewline
       
  3455 \ \ \isanewline
       
  3456 \isanewline
       
  3457 \isacommand{lemma}\isamarkupfalse%
       
  3458 \ 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
       
  3459 \ {\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
       
  3460 %
       
  3461 \isadelimproof
       
  3462 \ \ %
       
  3463 \endisadelimproof
       
  3464 %
       
  3465 \isatagproof
       
  3466 \isacommand{using}\isamarkupfalse%
       
  3467 \ qq{\isadigit{2}}\ bnullable{\isacharunderscore}{\kern0pt}Hdbmkeps{\isacharunderscore}{\kern0pt}Hd\ \isacommand{by}\isamarkupfalse%
       
  3468 \ force%
       
  3469 \endisatagproof
       
  3470 {\isafoldproof}%
       
  3471 %
       
  3472 \isadelimproof
       
  3473 \isanewline
       
  3474 %
       
  3475 \endisadelimproof
       
  3476 \isanewline
       
  3477 \isacommand{lemma}\isamarkupfalse%
       
  3478 \ 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
       
  3479 %
       
  3480 \isadelimproof
       
  3481 \ \ %
       
  3482 \endisadelimproof
       
  3483 %
       
  3484 \isatagproof
       
  3485 \isacommand{apply}\isamarkupfalse%
       
  3486 {\isacharparenleft}{\kern0pt}induction\ rule{\isacharcolon}{\kern0pt}\ rrewrite{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  3487 \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3488 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  3489 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3490 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  3491 \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3492 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  3493 \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3494 \ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline
       
  3495 \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3496 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  3497 \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3498 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  3499 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3500 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  3501 \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3502 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  3503 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3504 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  3505 \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3506 \ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline
       
  3507 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3508 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  3509 \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3510 \ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline
       
  3511 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3512 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  3513 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3514 \ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline
       
  3515 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3516 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  3517 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3518 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  3519 \isanewline
       
  3520 \ \ \isacommand{apply}\isamarkupfalse%
       
  3521 \ {\isacharparenleft}{\kern0pt}metis\ bnullable{\isacharunderscore}{\kern0pt}correctness\ erase{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\isanewline
       
  3522 \isanewline
       
  3523 \ \ \isacommand{by}\isamarkupfalse%
       
  3524 \ {\isacharparenleft}{\kern0pt}meson\ rewrite{\isacharunderscore}{\kern0pt}non{\isacharunderscore}{\kern0pt}nullable\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}%
       
  3525 \endisatagproof
       
  3526 {\isafoldproof}%
       
  3527 %
       
  3528 \isadelimproof
       
  3529 \isanewline
       
  3530 %
       
  3531 \endisadelimproof
       
  3532 \isanewline
       
  3533 \isanewline
       
  3534 \isanewline
       
  3535 \isanewline
       
  3536 \isacommand{lemma}\isamarkupfalse%
       
  3537 \ spillbmkepslistr{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs{\isadigit{1}}\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline
       
  3538 \ \ \ \ {\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
       
  3539 %
       
  3540 \isadelimproof
       
  3541 \ \ %
       
  3542 \endisadelimproof
       
  3543 %
       
  3544 \isatagproof
       
  3545 \isacommand{apply}\isamarkupfalse%
       
  3546 {\isacharparenleft}{\kern0pt}subst\ bnullable{\isacharunderscore}{\kern0pt}Hdbmkeps{\isacharunderscore}{\kern0pt}Hd{\isacharparenright}{\kern0pt}\isanewline
       
  3547 \ \ \isanewline
       
  3548 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3549 \ simp\isanewline
       
  3550 \ \ \isacommand{by}\isamarkupfalse%
       
  3551 \ {\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}%
       
  3552 \endisatagproof
       
  3553 {\isafoldproof}%
       
  3554 %
       
  3555 \isadelimproof
       
  3556 \isanewline
       
  3557 %
       
  3558 \endisadelimproof
       
  3559 \isanewline
       
  3560 \isacommand{lemma}\isamarkupfalse%
       
  3561 \ 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
       
  3562 bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}\isanewline
       
  3563 %
       
  3564 \isadelimproof
       
  3565 \ \ \isanewline
       
  3566 \ \ %
       
  3567 \endisadelimproof
       
  3568 %
       
  3569 \isatagproof
       
  3570 \isacommand{by}\isamarkupfalse%
       
  3571 \ {\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}%
       
  3572 \endisatagproof
       
  3573 {\isafoldproof}%
       
  3574 %
       
  3575 \isadelimproof
       
  3576 \isanewline
       
  3577 %
       
  3578 \endisadelimproof
       
  3579 \isanewline
       
  3580 \isanewline
       
  3581 \isacommand{lemma}\isamarkupfalse%
       
  3582 \ 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
       
  3583 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
       
  3584 %
       
  3585 \isadelimproof
       
  3586 \ \ %
       
  3587 \endisadelimproof
       
  3588 %
       
  3589 \isatagproof
       
  3590 \isacommand{apply}\isamarkupfalse%
       
  3591 {\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{3}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  3592 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3593 {\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
       
  3594 \ \ \isacommand{apply}\isamarkupfalse%
       
  3595 {\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
       
  3596 \ \ \isacommand{apply}\isamarkupfalse%
       
  3597 \ {\isacharparenleft}{\kern0pt}metis\ qq{\isadigit{2}}\ qq{\isadigit{3}}{\isacharparenright}{\kern0pt}\isanewline
       
  3598 \isanewline
       
  3599 \ \ \isacommand{apply}\isamarkupfalse%
       
  3600 \ {\isacharparenleft}{\kern0pt}metis\ append{\isachardot}{\kern0pt}assoc{\isacharparenright}{\kern0pt}\isanewline
       
  3601 \isanewline
       
  3602 \ \ \isacommand{apply}\isamarkupfalse%
       
  3603 \ {\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
       
  3604 \isanewline
       
  3605 \ \ \isacommand{using}\isamarkupfalse%
       
  3606 \ third{\isacharunderscore}{\kern0pt}segment{\isacharunderscore}{\kern0pt}bnullable\ \isacommand{by}\isamarkupfalse%
       
  3607 \ blast%
       
  3608 \endisatagproof
       
  3609 {\isafoldproof}%
       
  3610 %
       
  3611 \isadelimproof
       
  3612 \isanewline
       
  3613 %
       
  3614 \endisadelimproof
       
  3615 \isanewline
       
  3616 \isanewline
       
  3617 \isacommand{lemma}\isamarkupfalse%
       
  3618 \ 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
       
  3619 \ \ \ \ \ \ \ {\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
       
  3620 %
       
  3621 \isadelimproof
       
  3622 \ \ %
       
  3623 \endisadelimproof
       
  3624 %
       
  3625 \isatagproof
       
  3626 \isacommand{apply}\isamarkupfalse%
       
  3627 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rsa{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  3628 \ \ \isanewline
       
  3629 \ \ \isacommand{using}\isamarkupfalse%
       
  3630 \ qq{\isadigit{1}}\ \isacommand{apply}\isamarkupfalse%
       
  3631 \ force\isanewline
       
  3632 \ \ \isacommand{apply}\isamarkupfalse%
       
  3633 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs{\isadigit{1}}\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  3634 \ \ \isacommand{apply}\isamarkupfalse%
       
  3635 {\isacharparenleft}{\kern0pt}subst\ qq{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline
       
  3636 \isanewline
       
  3637 \ \ \isanewline
       
  3638 \ \ \isacommand{using}\isamarkupfalse%
       
  3639 \ r{\isadigit{2}}\ \isacommand{apply}\isamarkupfalse%
       
  3640 \ blast\isanewline
       
  3641 \ \ \isanewline
       
  3642 \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3643 \ {\isacharparenleft}{\kern0pt}metis\ list{\isachardot}{\kern0pt}set{\isacharunderscore}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline
       
  3644 \ \ \isacommand{apply}\isamarkupfalse%
       
  3645 \ {\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
       
  3646 \isanewline
       
  3647 \isanewline
       
  3648 \ \ \isacommand{thm}\isamarkupfalse%
       
  3649 \ qq{\isadigit{1}}\isanewline
       
  3650 \ \ \isacommand{apply}\isamarkupfalse%
       
  3651 {\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
       
  3652 \ \ \ \isacommand{prefer}\isamarkupfalse%
       
  3653 \ {\isadigit{2}}\isanewline
       
  3654 \ \ \isanewline
       
  3655 \ \ \isacommand{apply}\isamarkupfalse%
       
  3656 \ {\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
       
  3657 \isanewline
       
  3658 \ \ \isacommand{by}\isamarkupfalse%
       
  3659 \ {\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}%
       
  3660 \endisatagproof
       
  3661 {\isafoldproof}%
       
  3662 %
       
  3663 \isadelimproof
       
  3664 \isanewline
       
  3665 %
       
  3666 \endisadelimproof
       
  3667 \isanewline
       
  3668 \isanewline
       
  3669 \isanewline
       
  3670 \isacommand{lemma}\isamarkupfalse%
       
  3671 \ 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
       
  3672 %
       
  3673 \isadelimproof
       
  3674 \isanewline
       
  3675 \ \ %
       
  3676 \endisadelimproof
       
  3677 %
       
  3678 \isatagproof
       
  3679 \isacommand{apply}\isamarkupfalse%
       
  3680 {\isacharparenleft}{\kern0pt}frule\ rewritenullable{\isacharparenright}{\kern0pt}\isanewline
       
  3681 \ \ \isacommand{apply}\isamarkupfalse%
       
  3682 \ simp\isanewline
       
  3683 \ \ \isacommand{apply}\isamarkupfalse%
       
  3684 {\isacharparenleft}{\kern0pt}induction\ r{\isadigit{1}}\ r{\isadigit{2}}\ rule{\isacharcolon}{\kern0pt}\ rrewrite{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  3685 \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3686 \ simp\isanewline
       
  3687 \ \ \isacommand{using}\isamarkupfalse%
       
  3688 \ bnullable{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}\ bnullable{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{5}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse%
       
  3689 \ blast\isanewline
       
  3690 \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3691 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ b{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline
       
  3692 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3693 \ simp\isanewline
       
  3694 \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3695 \ simp\isanewline
       
  3696 \ \ \isacommand{apply}\isamarkupfalse%
       
  3697 {\isacharparenleft}{\kern0pt}frule\ bnullable{\isacharunderscore}{\kern0pt}segment{\isacharparenright}{\kern0pt}\isanewline
       
  3698 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3699 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  3700 \ \ \isacommand{using}\isamarkupfalse%
       
  3701 \ qq{\isadigit{1}}\ \isacommand{apply}\isamarkupfalse%
       
  3702 \ force\isanewline
       
  3703 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3704 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ r{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  3705 \ \ \isacommand{using}\isamarkupfalse%
       
  3706 \ bnullablewhichbmkeps\ rewritenullable\ \isacommand{apply}\isamarkupfalse%
       
  3707 \ presburger\isanewline
       
  3708 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3709 {\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ {\isacharparenleft}{\kern0pt}AALTs\ bs\ rs{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  3710 \ \ \isacommand{apply}\isamarkupfalse%
       
  3711 {\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}{\isasymnot}\ bnullable\ r{\isacharprime}{\kern0pt}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  3712 \ \ \isacommand{apply}\isamarkupfalse%
       
  3713 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ qq{\isadigit{2}}\ r{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline
       
  3714 \ \ \isanewline
       
  3715 \ \ \isacommand{using}\isamarkupfalse%
       
  3716 \ rrewrite{\isacharunderscore}{\kern0pt}nbnullable\ \isacommand{apply}\isamarkupfalse%
       
  3717 \ blast\isanewline
       
  3718 \isanewline
       
  3719 \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3720 \ blast\isanewline
       
  3721 \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3722 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ flts{\isacharunderscore}{\kern0pt}append\ qs{\isadigit{3}}{\isacharparenright}{\kern0pt}\isanewline
       
  3723 \isanewline
       
  3724 \ \ \isacommand{apply}\isamarkupfalse%
       
  3725 \ {\isacharparenleft}{\kern0pt}meson\ rewrite{\isacharunderscore}{\kern0pt}bmkepsalt{\isacharparenright}{\kern0pt}\isanewline
       
  3726 \ \ \isanewline
       
  3727 \ \ \isacommand{using}\isamarkupfalse%
       
  3728 \ bnullable{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{4}}{\isacharparenright}{\kern0pt}\ q{\isadigit{3}}a\ \isacommand{apply}\isamarkupfalse%
       
  3729 \ blast\isanewline
       
  3730 \isanewline
       
  3731 \ \ \isacommand{apply}\isamarkupfalse%
       
  3732 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ q{\isadigit{3}}a{\isacharparenright}{\kern0pt}\isanewline
       
  3733 \isanewline
       
  3734 \ \ \isacommand{using}\isamarkupfalse%
       
  3735 \ bnullable{\isachardot}{\kern0pt}simps{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse%
       
  3736 \ blast\isanewline
       
  3737 \isanewline
       
  3738 \ \ \isacommand{apply}\isamarkupfalse%
       
  3739 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ b{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline
       
  3740 \ \isanewline
       
  3741 \ \ \isacommand{by}\isamarkupfalse%
       
  3742 \ {\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}%
       
  3743 \endisatagproof
       
  3744 {\isafoldproof}%
       
  3745 %
       
  3746 \isadelimproof
       
  3747 \isanewline
       
  3748 %
       
  3749 \endisadelimproof
       
  3750 \isanewline
       
  3751 \isanewline
       
  3752 \isanewline
       
  3753 \isacommand{lemma}\isamarkupfalse%
       
  3754 \ 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
       
  3755 %
       
  3756 \isadelimproof
       
  3757 \ \ %
       
  3758 \endisadelimproof
       
  3759 %
       
  3760 \isatagproof
       
  3761 \isacommand{apply}\isamarkupfalse%
       
  3762 {\isacharparenleft}{\kern0pt}induction\ r{\isadigit{1}}\ r{\isadigit{2}}\ rule{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  3763 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3764 \ simp\isanewline
       
  3765 \ \ \isacommand{apply}\isamarkupfalse%
       
  3766 {\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ r{\isadigit{2}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  3767 \ \ \isacommand{prefer}\isamarkupfalse%
       
  3768 \ {\isadigit{2}}\isanewline
       
  3769 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3770 {\isacharparenleft}{\kern0pt}metis\ rewritesnullable{\isacharparenright}{\kern0pt}\isanewline
       
  3771 \ \ \isacommand{apply}\isamarkupfalse%
       
  3772 {\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bmkeps\ r{\isadigit{1}}\ {\isacharequal}{\kern0pt}\ bmkeps\ r{\isadigit{2}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  3773 \ \ \ \isacommand{prefer}\isamarkupfalse%
       
  3774 \ {\isadigit{2}}\isanewline
       
  3775 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3776 \ fastforce\isanewline
       
  3777 \ \ \isacommand{using}\isamarkupfalse%
       
  3778 \ rewrite{\isacharunderscore}{\kern0pt}bmkeps\ \isacommand{by}\isamarkupfalse%
       
  3779 \ presburger%
       
  3780 \endisatagproof
       
  3781 {\isafoldproof}%
       
  3782 %
       
  3783 \isadelimproof
       
  3784 \isanewline
       
  3785 %
       
  3786 \endisadelimproof
       
  3787 \isanewline
       
  3788 \isanewline
       
  3789 \isacommand{thm}\isamarkupfalse%
       
  3790 \ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{2}}{\isacharparenright}{\kern0pt}\isanewline
       
  3791 \isacommand{lemma}\isamarkupfalse%
       
  3792 \ 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
       
  3793 %
       
  3794 \isadelimproof
       
  3795 \ \ %
       
  3796 \endisadelimproof
       
  3797 %
       
  3798 \isatagproof
       
  3799 \isacommand{by}\isamarkupfalse%
       
  3800 \ {\isacharparenleft}{\kern0pt}metis\ append{\isacharunderscore}{\kern0pt}Cons\ append{\isacharunderscore}{\kern0pt}Nil\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{6}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}%
       
  3801 \endisatagproof
       
  3802 {\isafoldproof}%
       
  3803 %
       
  3804 \isadelimproof
       
  3805 \isanewline
       
  3806 %
       
  3807 \endisadelimproof
       
  3808 \isanewline
       
  3809 \isacommand{lemma}\isamarkupfalse%
       
  3810 \ 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
       
  3811 %
       
  3812 \isadelimproof
       
  3813 \ \ %
       
  3814 \endisadelimproof
       
  3815 %
       
  3816 \isatagproof
       
  3817 \isacommand{using}\isamarkupfalse%
       
  3818 \ alts{\isacharunderscore}{\kern0pt}rewrite{\isacharunderscore}{\kern0pt}front\ \isacommand{by}\isamarkupfalse%
       
  3819 \ blast%
       
  3820 \endisatagproof
       
  3821 {\isafoldproof}%
       
  3822 %
       
  3823 \isadelimproof
       
  3824 \isanewline
       
  3825 %
       
  3826 \endisadelimproof
       
  3827 \isanewline
       
  3828 \isacommand{lemma}\isamarkupfalse%
       
  3829 \ 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
       
  3830 %
       
  3831 \isadelimproof
       
  3832 \ \ %
       
  3833 \endisadelimproof
       
  3834 %
       
  3835 \isatagproof
       
  3836 \isacommand{by}\isamarkupfalse%
       
  3837 \ {\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}%
       
  3838 \endisatagproof
       
  3839 {\isafoldproof}%
       
  3840 %
       
  3841 \isadelimproof
       
  3842 \isanewline
       
  3843 %
       
  3844 \endisadelimproof
       
  3845 \isanewline
       
  3846 \isacommand{lemma}\isamarkupfalse%
       
  3847 \ 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
       
  3848 %
       
  3849 \isadelimproof
       
  3850 \ \ %
       
  3851 \endisadelimproof
       
  3852 %
       
  3853 \isatagproof
       
  3854 \isacommand{by}\isamarkupfalse%
       
  3855 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ rrewrite{\isadigit{0}}away{\isacharparenright}{\kern0pt}%
       
  3856 \endisatagproof
       
  3857 {\isafoldproof}%
       
  3858 %
       
  3859 \isadelimproof
       
  3860 \isanewline
       
  3861 %
       
  3862 \endisadelimproof
       
  3863 \isanewline
       
  3864 \isacommand{lemma}\isamarkupfalse%
       
  3865 \ 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
       
  3866 %
       
  3867 \isadelimproof
       
  3868 \ \ %
       
  3869 \endisadelimproof
       
  3870 %
       
  3871 \isatagproof
       
  3872 \isacommand{apply}\isamarkupfalse%
       
  3873 {\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
       
  3874 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3875 \ simp\isanewline
       
  3876 \ \ \isacommand{by}\isamarkupfalse%
       
  3877 \ {\isacharparenleft}{\kern0pt}meson\ rs{\isadigit{1}}\ rs{\isadigit{2}}\ srewrites{\isacharunderscore}{\kern0pt}alt{\isadigit{1}}\ ss{\isadigit{1}}\ ss{\isadigit{2}}{\isacharparenright}{\kern0pt}%
       
  3878 \endisatagproof
       
  3879 {\isafoldproof}%
       
  3880 %
       
  3881 \isadelimproof
       
  3882 \isanewline
       
  3883 %
       
  3884 \endisadelimproof
       
  3885 \isanewline
       
  3886 \isacommand{lemma}\isamarkupfalse%
       
  3887 \ 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
       
  3888 %
       
  3889 \isadelimproof
       
  3890 \ \ %
       
  3891 \endisadelimproof
       
  3892 %
       
  3893 \isatagproof
       
  3894 \isacommand{apply}\isamarkupfalse%
       
  3895 {\isacharparenleft}{\kern0pt}induction\ r{\isadigit{2}}\ r{\isadigit{3}}\ arbitrary{\isacharcolon}{\kern0pt}\ bs\ rule{\isacharcolon}{\kern0pt}\ rrewrite{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  3896 \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3897 \ auto\isanewline
       
  3898 \isanewline
       
  3899 \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3900 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ continuous{\isacharunderscore}{\kern0pt}rewrite{\isacharparenright}{\kern0pt}\isanewline
       
  3901 \isanewline
       
  3902 \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3903 \ {\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
       
  3904 \isanewline
       
  3905 \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3906 \ {\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
       
  3907 \isanewline
       
  3908 \ \ \isacommand{using}\isamarkupfalse%
       
  3909 \ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ star{\isacharunderscore}{\kern0pt}seq\ \isacommand{apply}\isamarkupfalse%
       
  3910 \ blast\isanewline
       
  3911 \isanewline
       
  3912 \ \ \isacommand{using}\isamarkupfalse%
       
  3913 \ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ star{\isacharunderscore}{\kern0pt}seq{\isadigit{2}}\ \isacommand{apply}\isamarkupfalse%
       
  3914 \ blast\isanewline
       
  3915 \isanewline
       
  3916 \ \ \isacommand{using}\isamarkupfalse%
       
  3917 \ contextrewrites{\isadigit{2}}\ r{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}rstar\ \isacommand{apply}\isamarkupfalse%
       
  3918 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  3919 \ \ \isanewline
       
  3920 \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3921 \ {\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
       
  3922 \isanewline
       
  3923 \ \ \isacommand{using}\isamarkupfalse%
       
  3924 \ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{8}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse%
       
  3925 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  3926 \isanewline
       
  3927 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3928 \ {\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
       
  3929 \isanewline
       
  3930 \ \ \isacommand{apply}\isamarkupfalse%
       
  3931 \ {\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
       
  3932 \isanewline
       
  3933 \ \ \isacommand{apply}\isamarkupfalse%
       
  3934 \ {\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
       
  3935 \isanewline
       
  3936 \ \ \isacommand{apply}\isamarkupfalse%
       
  3937 \ {\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
       
  3938 \isanewline
       
  3939 \ \ \isacommand{using}\isamarkupfalse%
       
  3940 \ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ \isacommand{by}\isamarkupfalse%
       
  3941 \ auto%
       
  3942 \endisatagproof
       
  3943 {\isafoldproof}%
       
  3944 %
       
  3945 \isadelimproof
       
  3946 \isanewline
       
  3947 %
       
  3948 \endisadelimproof
       
  3949 \isanewline
       
  3950 \ \ \isanewline
       
  3951 \isanewline
       
  3952 \isacommand{lemma}\isamarkupfalse%
       
  3953 \ 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
       
  3954 %
       
  3955 \isadelimproof
       
  3956 \ \ %
       
  3957 \endisadelimproof
       
  3958 %
       
  3959 \isatagproof
       
  3960 \isacommand{apply}\isamarkupfalse%
       
  3961 {\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
       
  3962 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  3963 \ simp\isanewline
       
  3964 \ \ \isacommand{by}\isamarkupfalse%
       
  3965 \ {\isacharparenleft}{\kern0pt}meson\ real{\isacharunderscore}{\kern0pt}trans\ rewrite{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}%
       
  3966 \endisatagproof
       
  3967 {\isafoldproof}%
       
  3968 %
       
  3969 \isadelimproof
       
  3970 \isanewline
       
  3971 %
       
  3972 \endisadelimproof
       
  3973 \isanewline
       
  3974 \isacommand{lemma}\isamarkupfalse%
       
  3975 \ \ 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
       
  3976 %
       
  3977 \isadelimproof
       
  3978 \ \ %
       
  3979 \endisadelimproof
       
  3980 %
       
  3981 \isatagproof
       
  3982 \isacommand{apply}\isamarkupfalse%
       
  3983 {\isacharparenleft}{\kern0pt}induction\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline
       
  3984 \ \ \isacommand{apply}\isamarkupfalse%
       
  3985 \ simp\isanewline
       
  3986 \ \ \isacommand{by}\isamarkupfalse%
       
  3987 \ {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bder{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}%
       
  3988 \endisatagproof
       
  3989 {\isafoldproof}%
       
  3990 %
       
  3991 \isadelimproof
       
  3992 \isanewline
       
  3993 %
       
  3994 \endisadelimproof
       
  3995 \isanewline
       
  3996 \isanewline
       
  3997 \isanewline
       
  3998 \isacommand{lemma}\isamarkupfalse%
       
  3999 \ 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
       
  4000 %
       
  4001 \isadelimproof
       
  4002 \ \ \ %
       
  4003 \endisadelimproof
       
  4004 %
       
  4005 \isatagproof
       
  4006 \isacommand{apply}\isamarkupfalse%
       
  4007 \ simp\isanewline
       
  4008 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4009 {\isacharparenleft}{\kern0pt}simp\ add{\isacharcolon}{\kern0pt}\ bder{\isacharunderscore}{\kern0pt}fuse{\isacharunderscore}{\kern0pt}list{\isacharparenright}{\kern0pt}\isanewline
       
  4010 \ \ \isacommand{apply}\isamarkupfalse%
       
  4011 {\isacharparenleft}{\kern0pt}rule\ many{\isacharunderscore}{\kern0pt}steps{\isacharunderscore}{\kern0pt}later{\isacharparenright}{\kern0pt}\isanewline
       
  4012 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4013 {\isacharparenleft}{\kern0pt}subst\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{8}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline
       
  4014 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4015 \ simp\isanewline
       
  4016 \isanewline
       
  4017 \ \ \isacommand{by}\isamarkupfalse%
       
  4018 \ fastforce%
       
  4019 \endisatagproof
       
  4020 {\isafoldproof}%
       
  4021 %
       
  4022 \isadelimproof
       
  4023 \isanewline
       
  4024 %
       
  4025 \endisadelimproof
       
  4026 \isanewline
       
  4027 \isacommand{lemma}\isamarkupfalse%
       
  4028 \ lock{\isacharunderscore}{\kern0pt}step{\isacharunderscore}{\kern0pt}der{\isacharunderscore}{\kern0pt}removal{\isacharcolon}{\kern0pt}\ \isanewline
       
  4029 \ \ \isakeyword{shows}\ {\isachardoublequoteopen}\ erase\ a{\isadigit{1}}\ {\isacharequal}{\kern0pt}\ erase\ a{\isadigit{2}}\ {\isasymLongrightarrow}\ \isanewline
       
  4030 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 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
       
  4031 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 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
       
  4032 %
       
  4033 \isadelimproof
       
  4034 \ \ %
       
  4035 \endisadelimproof
       
  4036 %
       
  4037 \isatagproof
       
  4038 \isacommand{apply}\isamarkupfalse%
       
  4039 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  4040 \ \ \isanewline
       
  4041 \ \ \isacommand{using}\isamarkupfalse%
       
  4042 \ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{3}}{\isacharparenright}{\kern0pt}\ \isacommand{by}\isamarkupfalse%
       
  4043 \ auto%
       
  4044 \endisatagproof
       
  4045 {\isafoldproof}%
       
  4046 %
       
  4047 \isadelimproof
       
  4048 \isanewline
       
  4049 %
       
  4050 \endisadelimproof
       
  4051 \isanewline
       
  4052 \isacommand{lemma}\isamarkupfalse%
       
  4053 \ 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
       
  4054 %
       
  4055 \isadelimproof
       
  4056 \ \ %
       
  4057 \endisadelimproof
       
  4058 %
       
  4059 \isatagproof
       
  4060 \isacommand{apply}\isamarkupfalse%
       
  4061 {\isacharparenleft}{\kern0pt}induction\ r{\isadigit{1}}\ r{\isadigit{2}}\ arbitrary{\isacharcolon}{\kern0pt}\ c\ rule{\isacharcolon}{\kern0pt}\ rrewrite{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  4062 \ \ \isanewline
       
  4063 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4064 \ {\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
       
  4065 \ \ \isacommand{apply}\isamarkupfalse%
       
  4066 \ simp\isanewline
       
  4067 \ \ \isanewline
       
  4068 \ \ \isacommand{apply}\isamarkupfalse%
       
  4069 \ {\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
       
  4070 \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4071 {\isacharparenleft}{\kern0pt}simp{\isacharparenright}{\kern0pt}\isanewline
       
  4072 \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4073 {\isacharparenleft}{\kern0pt}rule\ many{\isacharunderscore}{\kern0pt}steps{\isacharunderscore}{\kern0pt}later{\isacharparenright}{\kern0pt}\isanewline
       
  4074 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4075 {\isacharparenleft}{\kern0pt}rule\ to{\isacharunderscore}{\kern0pt}zero{\isacharunderscore}{\kern0pt}in{\isacharunderscore}{\kern0pt}alt{\isacharparenright}{\kern0pt}\isanewline
       
  4076 \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4077 {\isacharparenleft}{\kern0pt}rule\ many{\isacharunderscore}{\kern0pt}steps{\isacharunderscore}{\kern0pt}later{\isacharparenright}{\kern0pt}\isanewline
       
  4078 \ \ \isacommand{apply}\isamarkupfalse%
       
  4079 {\isacharparenleft}{\kern0pt}rule\ alt{\isacharunderscore}{\kern0pt}remove{\isadigit{0}}{\isacharunderscore}{\kern0pt}front{\isacharparenright}{\kern0pt}\isanewline
       
  4080 \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4081 {\isacharparenleft}{\kern0pt}rule\ many{\isacharunderscore}{\kern0pt}steps{\isacharunderscore}{\kern0pt}later{\isacharparenright}{\kern0pt}\isanewline
       
  4082 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4083 {\isacharparenleft}{\kern0pt}rule\ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{1}}{\isadigit{2}}{\isacharparenright}{\kern0pt}{\isacharparenright}{\kern0pt}\isanewline
       
  4084 \ \ \isacommand{using}\isamarkupfalse%
       
  4085 \ bder{\isacharunderscore}{\kern0pt}fuse\ fuse{\isacharunderscore}{\kern0pt}append\ rs{\isadigit{1}}\ \isacommand{apply}\isamarkupfalse%
       
  4086 \ presburger\isanewline
       
  4087 \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4088 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ r{\isadigit{1}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  4089 \ \ \isacommand{prefer}\isamarkupfalse%
       
  4090 \ {\isadigit{2}}\isanewline
       
  4091 \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4092 {\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}{\isasymnot}bnullable\ r{\isadigit{2}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  4093 \ \ \ \ \ \ \ \ \ \ \ \ \isacommand{prefer}\isamarkupfalse%
       
  4094 \ {\isadigit{2}}\isanewline
       
  4095 \ \ \isacommand{using}\isamarkupfalse%
       
  4096 \ rewrite{\isacharunderscore}{\kern0pt}non{\isacharunderscore}{\kern0pt}nullable\ \isacommand{apply}\isamarkupfalse%
       
  4097 \ presburger\isanewline
       
  4098 \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4099 \ simp{\isacharplus}{\kern0pt}\isanewline
       
  4100 \ \ \isanewline
       
  4101 \ \ \isacommand{using}\isamarkupfalse%
       
  4102 \ star{\isacharunderscore}{\kern0pt}seq\ \isacommand{apply}\isamarkupfalse%
       
  4103 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  4104 \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4105 {\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ r{\isadigit{2}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  4106 \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4107 \ simp{\isacharplus}{\kern0pt}\isanewline
       
  4108 \ \ \isacommand{apply}\isamarkupfalse%
       
  4109 {\isacharparenleft}{\kern0pt}subgoal{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bmkeps\ r{\isadigit{1}}\ {\isacharequal}{\kern0pt}\ bmkeps\ r{\isadigit{2}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  4110 \ \ \isacommand{prefer}\isamarkupfalse%
       
  4111 \ {\isadigit{2}}\isanewline
       
  4112 \ \ \isacommand{using}\isamarkupfalse%
       
  4113 \ rewrite{\isacharunderscore}{\kern0pt}bmkeps\ \isacommand{apply}\isamarkupfalse%
       
  4114 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  4115 \ \ \isacommand{using}\isamarkupfalse%
       
  4116 \ contextrewrites{\isadigit{1}}\ star{\isacharunderscore}{\kern0pt}seq\ \isacommand{apply}\isamarkupfalse%
       
  4117 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  4118 \ \ \isacommand{using}\isamarkupfalse%
       
  4119 \ rewritenullable\ \isacommand{apply}\isamarkupfalse%
       
  4120 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  4121 \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4122 {\isacharparenleft}{\kern0pt}case{\isacharunderscore}{\kern0pt}tac\ {\isachardoublequoteopen}bnullable\ r{\isadigit{1}}{\isachardoublequoteclose}{\isacharparenright}{\kern0pt}\isanewline
       
  4123 \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4124 \ simp\isanewline
       
  4125 \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4126 {\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
       
  4127 \ \ \ \ \ \ \ \ \ \ \ \isacommand{prefer}\isamarkupfalse%
       
  4128 \ {\isadigit{2}}\isanewline
       
  4129 \ \ \isacommand{using}\isamarkupfalse%
       
  4130 \ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{5}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse%
       
  4131 \ blast\isanewline
       
  4132 \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4133 {\isacharparenleft}{\kern0pt}rule\ many{\isacharunderscore}{\kern0pt}steps{\isacharunderscore}{\kern0pt}later{\isacharparenright}{\kern0pt}\isanewline
       
  4134 \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4135 {\isacharparenleft}{\kern0pt}rule\ alt{\isacharunderscore}{\kern0pt}rewrite{\isacharunderscore}{\kern0pt}front{\isacharparenright}{\kern0pt}\isanewline
       
  4136 \ \ \ \ \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4137 \ assumption\isanewline
       
  4138 \ \ \isacommand{apply}\isamarkupfalse%
       
  4139 \ {\isacharparenleft}{\kern0pt}meson\ alt{\isacharunderscore}{\kern0pt}rewrites{\isacharunderscore}{\kern0pt}back\ rewrites{\isacharunderscore}{\kern0pt}fuse{\isacharparenright}{\kern0pt}\ \isanewline
       
  4140 \isanewline
       
  4141 \ \ \ \ \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4142 \ {\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
       
  4143 \isanewline
       
  4144 \ \ \isacommand{using}\isamarkupfalse%
       
  4145 \ contextrewrites{\isadigit{2}}\ \isacommand{apply}\isamarkupfalse%
       
  4146 \ force\isanewline
       
  4147 \isanewline
       
  4148 \ \ \isacommand{using}\isamarkupfalse%
       
  4149 \ rrewrite{\isachardot}{\kern0pt}intros{\isacharparenleft}{\kern0pt}{\isadigit{7}}{\isacharparenright}{\kern0pt}\ \isacommand{apply}\isamarkupfalse%
       
  4150 \ force\isanewline
       
  4151 \ \ \isanewline
       
  4152 \ \ \isacommand{using}\isamarkupfalse%
       
  4153 \ rewrite{\isacharunderscore}{\kern0pt}der{\isacharunderscore}{\kern0pt}altmiddle\ \isacommand{apply}\isamarkupfalse%
       
  4154 \ auto{\isacharbrackleft}{\kern0pt}{\isadigit{1}}{\isacharbrackright}{\kern0pt}\isanewline
       
  4155 \ \ \isanewline
       
  4156 \ \ \isacommand{apply}\isamarkupfalse%
       
  4157 \ {\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
       
  4158 \isanewline
       
  4159 \ \ \isacommand{apply}\isamarkupfalse%
       
  4160 \ {\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
       
  4161 \isanewline
       
  4162 \ \ \isacommand{apply}\isamarkupfalse%
       
  4163 \ {\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
       
  4164 \isanewline
       
  4165 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4166 \ {\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
       
  4167 \isanewline
       
  4168 \ \ \isanewline
       
  4169 \ \ \isacommand{using}\isamarkupfalse%
       
  4170 \ lock{\isacharunderscore}{\kern0pt}step{\isacharunderscore}{\kern0pt}der{\isacharunderscore}{\kern0pt}removal\ \isacommand{by}\isamarkupfalse%
       
  4171 \ auto%
       
  4172 \endisatagproof
       
  4173 {\isafoldproof}%
       
  4174 %
       
  4175 \isadelimproof
       
  4176 \isanewline
       
  4177 %
       
  4178 \endisadelimproof
       
  4179 \isanewline
       
  4180 \isanewline
       
  4181 \isanewline
       
  4182 \isacommand{lemma}\isamarkupfalse%
       
  4183 \ 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
       
  4184 %
       
  4185 \isadelimproof
       
  4186 \ \ %
       
  4187 \endisadelimproof
       
  4188 %
       
  4189 \isatagproof
       
  4190 \isacommand{apply}\isamarkupfalse%
       
  4191 {\isacharparenleft}{\kern0pt}induction\ r{\isadigit{1}}\ r{\isadigit{2}}\ rule{\isacharcolon}{\kern0pt}\ rrewrites{\isachardot}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  4192 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4193 {\isacharparenleft}{\kern0pt}rule\ rs{\isadigit{1}}{\isacharparenright}{\kern0pt}\isanewline
       
  4194 \ \ \isacommand{by}\isamarkupfalse%
       
  4195 \ {\isacharparenleft}{\kern0pt}meson\ real{\isacharunderscore}{\kern0pt}trans\ rewrite{\isacharunderscore}{\kern0pt}after{\isacharunderscore}{\kern0pt}der{\isacharparenright}{\kern0pt}%
       
  4196 \endisatagproof
       
  4197 {\isafoldproof}%
       
  4198 %
       
  4199 \isadelimproof
       
  4200 \isanewline
       
  4201 %
       
  4202 \endisadelimproof
       
  4203 \ \ \isanewline
       
  4204 \isanewline
       
  4205 \isanewline
       
  4206 \isanewline
       
  4207 \isacommand{lemma}\isamarkupfalse%
       
  4208 \ 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
       
  4209 %
       
  4210 \isadelimproof
       
  4211 \ \ %
       
  4212 \endisadelimproof
       
  4213 %
       
  4214 \isatagproof
       
  4215 \isacommand{apply}\isamarkupfalse%
       
  4216 {\isacharparenleft}{\kern0pt}induct\ s\ arbitrary{\isacharcolon}{\kern0pt}\ r\ rule{\isacharcolon}{\kern0pt}\ rev{\isacharunderscore}{\kern0pt}induct{\isacharparenright}{\kern0pt}\isanewline
       
  4217 \isanewline
       
  4218 \ \ \ \isacommand{apply}\isamarkupfalse%
       
  4219 \ simp\isanewline
       
  4220 \ \ \isacommand{apply}\isamarkupfalse%
       
  4221 {\isacharparenleft}{\kern0pt}subst\ bders{\isacharunderscore}{\kern0pt}append{\isacharparenright}{\kern0pt}\isanewline
       
  4222 \ \ \isacommand{apply}\isamarkupfalse%
       
  4223 {\isacharparenleft}{\kern0pt}subst\ bders{\isacharunderscore}{\kern0pt}simp{\isacharunderscore}{\kern0pt}append{\isacharparenright}{\kern0pt}\isanewline
       
  4224 \ \ \isacommand{by}\isamarkupfalse%
       
  4225 \ {\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}%
       
  4226 \endisatagproof
       
  4227 {\isafoldproof}%
       
  4228 %
       
  4229 \isadelimproof
       
  4230 \isanewline
       
  4231 %
       
  4232 \endisadelimproof
       
  4233 \isanewline
       
  4234 \isanewline
       
  4235 \isanewline
       
  4236 \isacommand{thm}\isamarkupfalse%
       
  4237 \ arexp{\isachardot}{\kern0pt}induct\isanewline
       
  4238 \isanewline
       
  4239 \isacommand{lemma}\isamarkupfalse%
       
  4240 \ 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
       
  4241 %
       
  4242 \isadelimproof
       
  4243 \ \ %
       
  4244 \endisadelimproof
       
  4245 %
       
  4246 \isatagproof
       
  4247 \isacommand{using}\isamarkupfalse%
       
  4248 \ central\ rewrites{\isacharunderscore}{\kern0pt}bmkeps\ \isacommand{by}\isamarkupfalse%
       
  4249 \ blast%
       
  4250 \endisatagproof
       
  4251 {\isafoldproof}%
       
  4252 %
       
  4253 \isadelimproof
       
  4254 \isanewline
       
  4255 %
       
  4256 \endisadelimproof
       
  4257 \isanewline
       
  4258 \isacommand{theorem}\isamarkupfalse%
       
  4259 \ main{\isacharunderscore}{\kern0pt}main{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}blexer\ r\ s\ {\isacharequal}{\kern0pt}\ blexer{\isacharunderscore}{\kern0pt}simp\ r\ s{\isachardoublequoteclose}\isanewline
       
  4260 %
       
  4261 \isadelimproof
       
  4262 \ \ %
       
  4263 \endisadelimproof
       
  4264 %
       
  4265 \isatagproof
       
  4266 \isacommand{by}\isamarkupfalse%
       
  4267 \ {\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}%
       
  4268 \endisatagproof
       
  4269 {\isafoldproof}%
       
  4270 %
       
  4271 \isadelimproof
       
  4272 \isanewline
       
  4273 %
       
  4274 \endisadelimproof
       
  4275 \isanewline
       
  4276 \isanewline
       
  4277 \isacommand{theorem}\isamarkupfalse%
       
  4278 \ blexersimp{\isacharunderscore}{\kern0pt}correctness{\isacharcolon}{\kern0pt}\ {\isachardoublequoteopen}blexer{\isacharunderscore}{\kern0pt}simp\ r\ s{\isacharequal}{\kern0pt}\ lexer\ r\ s{\isachardoublequoteclose}\isanewline
       
  4279 %
       
  4280 \isadelimproof
       
  4281 \ \ %
       
  4282 \endisadelimproof
       
  4283 %
       
  4284 \isatagproof
       
  4285 \isacommand{using}\isamarkupfalse%
       
  4286 \ blexer{\isacharunderscore}{\kern0pt}correctness\ main{\isacharunderscore}{\kern0pt}main\ \isacommand{by}\isamarkupfalse%
       
  4287 \ auto%
       
  4288 \endisatagproof
       
  4289 {\isafoldproof}%
       
  4290 %
       
  4291 \isadelimproof
       
  4292 \isanewline
       
  4293 %
       
  4294 \endisadelimproof
       
  4295 \isanewline
       
  4296 \isanewline
       
  4297 \isacommand{unused{\isacharunderscore}{\kern0pt}thms}\isamarkupfalse%
       
  4298 \isanewline
       
  4299 \isanewline
       
  4300 %
       
  4301 \isadelimtheory
       
  4302 \isanewline
       
  4303 %
       
  4304 \endisadelimtheory
       
  4305 %
       
  4306 \isatagtheory
       
  4307 \isacommand{end}\isamarkupfalse%
       
  4308 %
       
  4309 \endisatagtheory
       
  4310 {\isafoldtheory}%
       
  4311 %
       
  4312 \isadelimtheory
       
  4313 %
       
  4314 \endisadelimtheory
       
  4315 %
       
  4316 \end{isabellebody}%
       
  4317 \endinput
       
  4318 %:%file=~/Dropbox/Workspace/journalpaper/lexing/thys2/SizeBound.thy%:%
       
  4319 %:%6=1%:%
       
  4320 %:%11=2%:%
       
  4321 %:%12=2%:%
       
  4322 %:%13=3%:%
       
  4323 %:%14=4%:%
       
  4324 %:%28=6%:%
       
  4325 %:%38=8%:%
       
  4326 %:%39=8%:%
       
  4327 %:%40=9%:%
       
  4328 %:%41=10%:%
       
  4329 %:%42=10%:%
       
  4330 %:%43=11%:%
       
  4331 %:%44=12%:%
       
  4332 %:%45=13%:%
       
  4333 %:%46=14%:%
       
  4334 %:%47=15%:%
       
  4335 %:%48=16%:%
       
  4336 %:%49=17%:%
       
  4337 %:%50=18%:%
       
  4338 %:%51=19%:%
       
  4339 %:%52=20%:%
       
  4340 %:%53=21%:%
       
  4341 %:%54=21%:%
       
  4342 %:%55=22%:%
       
  4343 %:%56=23%:%
       
  4344 %:%57=24%:%
       
  4345 %:%58=25%:%
       
  4346 %:%59=26%:%
       
  4347 %:%60=26%:%
       
  4348 %:%61=27%:%
       
  4349 %:%62=28%:%
       
  4350 %:%63=29%:%
       
  4351 %:%64=30%:%
       
  4352 %:%65=31%:%
       
  4353 %:%66=32%:%
       
  4354 %:%67=33%:%
       
  4355 %:%68=34%:%
       
  4356 %:%69=35%:%
       
  4357 %:%70=36%:%
       
  4358 %:%71=37%:%
       
  4359 %:%72=38%:%
       
  4360 %:%73=39%:%
       
  4361 %:%75=41%:%
       
  4362 %:%82=42%:%
       
  4363 %:%83=42%:%
       
  4364 %:%88=42%:%
       
  4365 %:%91=43%:%
       
  4366 %:%92=44%:%
       
  4367 %:%93=44%:%
       
  4368 %:%94=45%:%
       
  4369 %:%95=46%:%
       
  4370 %:%102=47%:%
       
  4371 %:%103=47%:%
       
  4372 %:%104=48%:%
       
  4373 %:%105=48%:%
       
  4374 %:%106=49%:%
       
  4375 %:%107=49%:%
       
  4376 %:%108=50%:%
       
  4377 %:%109=50%:%
       
  4378 %:%110=50%:%
       
  4379 %:%111=51%:%
       
  4380 %:%112=51%:%
       
  4381 %:%117=51%:%
       
  4382 %:%120=52%:%
       
  4383 %:%121=53%:%
       
  4384 %:%122=53%:%
       
  4385 %:%129=54%:%
       
  4386 %:%130=54%:%
       
  4387 %:%131=55%:%
       
  4388 %:%132=55%:%
       
  4389 %:%133=56%:%
       
  4390 %:%134=56%:%
       
  4391 %:%139=56%:%
       
  4392 %:%142=57%:%
       
  4393 %:%143=58%:%
       
  4394 %:%144=58%:%
       
  4395 %:%145=59%:%
       
  4396 %:%146=60%:%
       
  4397 %:%147=61%:%
       
  4398 %:%148=62%:%
       
  4399 %:%149=63%:%
       
  4400 %:%150=64%:%
       
  4401 %:%151=64%:%
       
  4402 %:%152=65%:%
       
  4403 %:%153=66%:%
       
  4404 %:%156=67%:%
       
  4405 %:%160=67%:%
       
  4406 %:%161=67%:%
       
  4407 %:%162=68%:%
       
  4408 %:%163=68%:%
       
  4409 %:%164=69%:%
       
  4410 %:%165=69%:%
       
  4411 %:%166=70%:%
       
  4412 %:%172=70%:%
       
  4413 %:%175=71%:%
       
  4414 %:%176=72%:%
       
  4415 %:%177=72%:%
       
  4416 %:%178=73%:%
       
  4417 %:%179=74%:%
       
  4418 %:%186=75%:%
       
  4419 %:%187=75%:%
       
  4420 %:%188=76%:%
       
  4421 %:%189=76%:%
       
  4422 %:%190=77%:%
       
  4423 %:%191=77%:%
       
  4424 %:%192=78%:%
       
  4425 %:%193=78%:%
       
  4426 %:%194=78%:%
       
  4427 %:%199=78%:%
       
  4428 %:%202=79%:%
       
  4429 %:%203=80%:%
       
  4430 %:%204=80%:%
       
  4431 %:%205=81%:%
       
  4432 %:%206=82%:%
       
  4433 %:%209=83%:%
       
  4434 %:%213=83%:%
       
  4435 %:%214=83%:%
       
  4436 %:%215=83%:%
       
  4437 %:%216=84%:%
       
  4438 %:%217=84%:%
       
  4439 %:%231=87%:%
       
  4440 %:%241=89%:%
       
  4441 %:%242=89%:%
       
  4442 %:%243=90%:%
       
  4443 %:%244=91%:%
       
  4444 %:%245=92%:%
       
  4445 %:%246=93%:%
       
  4446 %:%247=94%:%
       
  4447 %:%248=95%:%
       
  4448 %:%249=96%:%
       
  4449 %:%250=97%:%
       
  4450 %:%251=97%:%
       
  4451 %:%252=98%:%
       
  4452 %:%253=99%:%
       
  4453 %:%254=100%:%
       
  4454 %:%255=100%:%
       
  4455 %:%256=101%:%
       
  4456 %:%257=102%:%
       
  4457 %:%258=103%:%
       
  4458 %:%259=104%:%
       
  4459 %:%260=105%:%
       
  4460 %:%261=106%:%
       
  4461 %:%262=107%:%
       
  4462 %:%263=108%:%
       
  4463 %:%264=108%:%
       
  4464 %:%265=109%:%
       
  4465 %:%266=110%:%
       
  4466 %:%267=111%:%
       
  4467 %:%268=112%:%
       
  4468 %:%269=113%:%
       
  4469 %:%270=114%:%
       
  4470 %:%271=115%:%
       
  4471 %:%272=116%:%
       
  4472 %:%273=117%:%
       
  4473 %:%274=118%:%
       
  4474 %:%275=119%:%
       
  4475 %:%276=120%:%
       
  4476 %:%277=121%:%
       
  4477 %:%278=122%:%
       
  4478 %:%279=123%:%
       
  4479 %:%280=123%:%
       
  4480 %:%281=124%:%
       
  4481 %:%282=125%:%
       
  4482 %:%283=126%:%
       
  4483 %:%284=127%:%
       
  4484 %:%285=128%:%
       
  4485 %:%286=129%:%
       
  4486 %:%287=129%:%
       
  4487 %:%288=130%:%
       
  4488 %:%289=131%:%
       
  4489 %:%290=132%:%
       
  4490 %:%291=133%:%
       
  4491 %:%292=134%:%
       
  4492 %:%293=135%:%
       
  4493 %:%294=136%:%
       
  4494 %:%295=137%:%
       
  4495 %:%296=138%:%
       
  4496 %:%297=139%:%
       
  4497 %:%298=140%:%
       
  4498 %:%299=141%:%
       
  4499 %:%300=142%:%
       
  4500 %:%301=143%:%
       
  4501 %:%302=144%:%
       
  4502 %:%303=145%:%
       
  4503 %:%304=145%:%
       
  4504 %:%305=146%:%
       
  4505 %:%306=147%:%
       
  4506 %:%307=148%:%
       
  4507 %:%308=149%:%
       
  4508 %:%309=150%:%
       
  4509 %:%310=151%:%
       
  4510 %:%311=152%:%
       
  4511 %:%312=153%:%
       
  4512 %:%313=153%:%
       
  4513 %:%314=154%:%
       
  4514 %:%317=155%:%
       
  4515 %:%321=155%:%
       
  4516 %:%322=155%:%
       
  4517 %:%323=156%:%
       
  4518 %:%324=156%:%
       
  4519 %:%325=157%:%
       
  4520 %:%331=157%:%
       
  4521 %:%334=158%:%
       
  4522 %:%335=159%:%
       
  4523 %:%336=160%:%
       
  4524 %:%337=160%:%
       
  4525 %:%338=161%:%
       
  4526 %:%339=162%:%
       
  4527 %:%340=163%:%
       
  4528 %:%341=164%:%
       
  4529 %:%342=165%:%
       
  4530 %:%343=166%:%
       
  4531 %:%344=167%:%
       
  4532 %:%345=168%:%
       
  4533 %:%346=169%:%
       
  4534 %:%347=170%:%
       
  4535 %:%348=170%:%
       
  4536 %:%349=171%:%
       
  4537 %:%350=172%:%
       
  4538 %:%351=173%:%
       
  4539 %:%352=174%:%
       
  4540 %:%353=175%:%
       
  4541 %:%354=176%:%
       
  4542 %:%355=177%:%
       
  4543 %:%356=178%:%
       
  4544 %:%357=179%:%
       
  4545 %:%358=180%:%
       
  4546 %:%359=181%:%
       
  4547 %:%360=182%:%
       
  4548 %:%361=183%:%
       
  4549 %:%362=183%:%
       
  4550 %:%363=184%:%
       
  4551 %:%364=185%:%
       
  4552 %:%365=186%:%
       
  4553 %:%366=187%:%
       
  4554 %:%367=188%:%
       
  4555 %:%368=189%:%
       
  4556 %:%369=190%:%
       
  4557 %:%370=191%:%
       
  4558 %:%371=192%:%
       
  4559 %:%372=193%:%
       
  4560 %:%373=193%:%
       
  4561 %:%374=194%:%
       
  4562 %:%375=195%:%
       
  4563 %:%376=196%:%
       
  4564 %:%377=197%:%
       
  4565 %:%378=198%:%
       
  4566 %:%379=199%:%
       
  4567 %:%380=200%:%
       
  4568 %:%381=201%:%
       
  4569 %:%382=202%:%
       
  4570 %:%383=203%:%
       
  4571 %:%384=203%:%
       
  4572 %:%385=204%:%
       
  4573 %:%386=205%:%
       
  4574 %:%387=206%:%
       
  4575 %:%388=207%:%
       
  4576 %:%389=208%:%
       
  4577 %:%390=209%:%
       
  4578 %:%391=210%:%
       
  4579 %:%394=213%:%
       
  4580 %:%395=214%:%
       
  4581 %:%396=215%:%
       
  4582 %:%397=216%:%
       
  4583 %:%398=217%:%
       
  4584 %:%399=217%:%
       
  4585 %:%400=218%:%
       
  4586 %:%401=219%:%
       
  4587 %:%402=220%:%
       
  4588 %:%403=221%:%
       
  4589 %:%404=222%:%
       
  4590 %:%405=223%:%
       
  4591 %:%406=223%:%
       
  4592 %:%407=224%:%
       
  4593 %:%410=225%:%
       
  4594 %:%414=225%:%
       
  4595 %:%415=225%:%
       
  4596 %:%416=226%:%
       
  4597 %:%417=226%:%
       
  4598 %:%418=227%:%
       
  4599 %:%424=227%:%
       
  4600 %:%427=228%:%
       
  4601 %:%428=229%:%
       
  4602 %:%429=229%:%
       
  4603 %:%430=230%:%
       
  4604 %:%433=231%:%
       
  4605 %:%437=231%:%
       
  4606 %:%438=231%:%
       
  4607 %:%439=232%:%
       
  4608 %:%440=232%:%
       
  4609 %:%441=233%:%
       
  4610 %:%447=233%:%
       
  4611 %:%450=234%:%
       
  4612 %:%451=235%:%
       
  4613 %:%452=235%:%
       
  4614 %:%453=236%:%
       
  4615 %:%456=237%:%
       
  4616 %:%460=237%:%
       
  4617 %:%461=237%:%
       
  4618 %:%462=238%:%
       
  4619 %:%463=238%:%
       
  4620 %:%464=239%:%
       
  4621 %:%470=239%:%
       
  4622 %:%473=240%:%
       
  4623 %:%474=241%:%
       
  4624 %:%475=241%:%
       
  4625 %:%476=242%:%
       
  4626 %:%477=243%:%
       
  4627 %:%478=243%:%
       
  4628 %:%479=244%:%
       
  4629 %:%482=245%:%
       
  4630 %:%486=245%:%
       
  4631 %:%487=245%:%
       
  4632 %:%488=246%:%
       
  4633 %:%489=246%:%
       
  4634 %:%490=247%:%
       
  4635 %:%496=247%:%
       
  4636 %:%499=248%:%
       
  4637 %:%500=249%:%
       
  4638 %:%501=249%:%
       
  4639 %:%502=250%:%
       
  4640 %:%505=251%:%
       
  4641 %:%509=251%:%
       
  4642 %:%510=251%:%
       
  4643 %:%511=252%:%
       
  4644 %:%512=252%:%
       
  4645 %:%513=253%:%
       
  4646 %:%519=253%:%
       
  4647 %:%522=254%:%
       
  4648 %:%523=255%:%
       
  4649 %:%524=255%:%
       
  4650 %:%525=256%:%
       
  4651 %:%528=257%:%
       
  4652 %:%532=257%:%
       
  4653 %:%533=257%:%
       
  4654 %:%534=258%:%
       
  4655 %:%535=258%:%
       
  4656 %:%536=259%:%
       
  4657 %:%542=259%:%
       
  4658 %:%545=260%:%
       
  4659 %:%546=261%:%
       
  4660 %:%547=261%:%
       
  4661 %:%548=262%:%
       
  4662 %:%549=263%:%
       
  4663 %:%552=264%:%
       
  4664 %:%556=264%:%
       
  4665 %:%557=264%:%
       
  4666 %:%558=265%:%
       
  4667 %:%559=265%:%
       
  4668 %:%560=266%:%
       
  4669 %:%561=266%:%
       
  4670 %:%562=267%:%
       
  4671 %:%568=267%:%
       
  4672 %:%571=268%:%
       
  4673 %:%572=269%:%
       
  4674 %:%573=270%:%
       
  4675 %:%574=270%:%
       
  4676 %:%575=271%:%
       
  4677 %:%576=272%:%
       
  4678 %:%579=273%:%
       
  4679 %:%583=273%:%
       
  4680 %:%584=273%:%
       
  4681 %:%585=274%:%
       
  4682 %:%586=274%:%
       
  4683 %:%587=275%:%
       
  4684 %:%588=275%:%
       
  4685 %:%589=276%:%
       
  4686 %:%590=276%:%
       
  4687 %:%591=277%:%
       
  4688 %:%592=277%:%
       
  4689 %:%593=278%:%
       
  4690 %:%594=278%:%
       
  4691 %:%595=279%:%
       
  4692 %:%596=279%:%
       
  4693 %:%597=280%:%
       
  4694 %:%598=280%:%
       
  4695 %:%599=281%:%
       
  4696 %:%600=281%:%
       
  4697 %:%601=282%:%
       
  4698 %:%602=283%:%
       
  4699 %:%603=283%:%
       
  4700 %:%604=284%:%
       
  4701 %:%605=284%:%
       
  4702 %:%606=285%:%
       
  4703 %:%607=285%:%
       
  4704 %:%608=286%:%
       
  4705 %:%609=286%:%
       
  4706 %:%610=287%:%
       
  4707 %:%611=287%:%
       
  4708 %:%612=288%:%
       
  4709 %:%613=288%:%
       
  4710 %:%614=289%:%
       
  4711 %:%615=289%:%
       
  4712 %:%616=290%:%
       
  4713 %:%617=290%:%
       
  4714 %:%618=291%:%
       
  4715 %:%619=291%:%
       
  4716 %:%620=292%:%
       
  4717 %:%626=292%:%
       
  4718 %:%629=293%:%
       
  4719 %:%630=294%:%
       
  4720 %:%631=294%:%
       
  4721 %:%632=295%:%
       
  4722 %:%633=296%:%
       
  4723 %:%636=297%:%
       
  4724 %:%640=297%:%
       
  4725 %:%641=297%:%
       
  4726 %:%642=298%:%
       
  4727 %:%643=298%:%
       
  4728 %:%648=298%:%
       
  4729 %:%651=299%:%
       
  4730 %:%652=300%:%
       
  4731 %:%653=301%:%
       
  4732 %:%654=301%:%
       
  4733 %:%655=302%:%
       
  4734 %:%656=303%:%
       
  4735 %:%659=304%:%
       
  4736 %:%663=304%:%
       
  4737 %:%664=304%:%
       
  4738 %:%665=305%:%
       
  4739 %:%666=305%:%
       
  4740 %:%667=306%:%
       
  4741 %:%668=306%:%
       
  4742 %:%669=307%:%
       
  4743 %:%675=307%:%
       
  4744 %:%678=308%:%
       
  4745 %:%679=309%:%
       
  4746 %:%680=310%:%
       
  4747 %:%681=310%:%
       
  4748 %:%682=311%:%
       
  4749 %:%683=312%:%
       
  4750 %:%686=313%:%
       
  4751 %:%690=313%:%
       
  4752 %:%691=313%:%
       
  4753 %:%692=314%:%
       
  4754 %:%693=314%:%
       
  4755 %:%698=314%:%
       
  4756 %:%701=315%:%
       
  4757 %:%702=316%:%
       
  4758 %:%703=316%:%
       
  4759 %:%704=317%:%
       
  4760 %:%705=318%:%
       
  4761 %:%708=319%:%
       
  4762 %:%712=319%:%
       
  4763 %:%713=319%:%
       
  4764 %:%714=320%:%
       
  4765 %:%715=320%:%
       
  4766 %:%716=321%:%
       
  4767 %:%717=321%:%
       
  4768 %:%718=322%:%
       
  4769 %:%724=322%:%
       
  4770 %:%727=323%:%
       
  4771 %:%728=324%:%
       
  4772 %:%729=324%:%
       
  4773 %:%730=325%:%
       
  4774 %:%731=326%:%
       
  4775 %:%734=327%:%
       
  4776 %:%738=327%:%
       
  4777 %:%739=327%:%
       
  4778 %:%740=328%:%
       
  4779 %:%741=328%:%
       
  4780 %:%742=329%:%
       
  4781 %:%743=329%:%
       
  4782 %:%744=330%:%
       
  4783 %:%750=330%:%
       
  4784 %:%753=331%:%
       
  4785 %:%754=332%:%
       
  4786 %:%755=332%:%
       
  4787 %:%756=333%:%
       
  4788 %:%757=334%:%
       
  4789 %:%758=335%:%
       
  4790 %:%759=336%:%
       
  4791 %:%762=337%:%
       
  4792 %:%766=337%:%
       
  4793 %:%767=337%:%
       
  4794 %:%768=338%:%
       
  4795 %:%769=338%:%
       
  4796 %:%770=339%:%
       
  4797 %:%771=339%:%
       
  4798 %:%772=340%:%
       
  4799 %:%773=340%:%
       
  4800 %:%774=341%:%
       
  4801 %:%775=341%:%
       
  4802 %:%776=341%:%
       
  4803 %:%777=342%:%
       
  4804 %:%778=342%:%
       
  4805 %:%779=343%:%
       
  4806 %:%780=343%:%
       
  4807 %:%781=344%:%
       
  4808 %:%782=344%:%
       
  4809 %:%783=345%:%
       
  4810 %:%784=345%:%
       
  4811 %:%785=346%:%
       
  4812 %:%786=346%:%
       
  4813 %:%787=347%:%
       
  4814 %:%788=347%:%
       
  4815 %:%789=348%:%
       
  4816 %:%790=348%:%
       
  4817 %:%791=349%:%
       
  4818 %:%792=349%:%
       
  4819 %:%793=350%:%
       
  4820 %:%794=350%:%
       
  4821 %:%795=351%:%
       
  4822 %:%796=351%:%
       
  4823 %:%797=352%:%
       
  4824 %:%798=352%:%
       
  4825 %:%799=353%:%
       
  4826 %:%800=353%:%
       
  4827 %:%801=354%:%
       
  4828 %:%802=354%:%
       
  4829 %:%803=355%:%
       
  4830 %:%804=355%:%
       
  4831 %:%805=356%:%
       
  4832 %:%806=356%:%
       
  4833 %:%807=357%:%
       
  4834 %:%808=357%:%
       
  4835 %:%809=358%:%
       
  4836 %:%810=358%:%
       
  4837 %:%811=359%:%
       
  4838 %:%812=359%:%
       
  4839 %:%813=360%:%
       
  4840 %:%814=360%:%
       
  4841 %:%815=361%:%
       
  4842 %:%816=361%:%
       
  4843 %:%817=362%:%
       
  4844 %:%818=362%:%
       
  4845 %:%819=363%:%
       
  4846 %:%825=363%:%
       
  4847 %:%828=364%:%
       
  4848 %:%829=365%:%
       
  4849 %:%830=366%:%
       
  4850 %:%831=366%:%
       
  4851 %:%832=367%:%
       
  4852 %:%833=368%:%
       
  4853 %:%834=369%:%
       
  4854 %:%837=370%:%
       
  4855 %:%841=370%:%
       
  4856 %:%842=370%:%
       
  4857 %:%843=371%:%
       
  4858 %:%844=371%:%
       
  4859 %:%845=372%:%
       
  4860 %:%846=372%:%
       
  4861 %:%847=373%:%
       
  4862 %:%848=373%:%
       
  4863 %:%849=374%:%
       
  4864 %:%850=374%:%
       
  4865 %:%851=375%:%
       
  4866 %:%852=375%:%
       
  4867 %:%853=376%:%
       
  4868 %:%854=376%:%
       
  4869 %:%855=377%:%
       
  4870 %:%856=377%:%
       
  4871 %:%857=378%:%
       
  4872 %:%858=378%:%
       
  4873 %:%859=379%:%
       
  4874 %:%860=379%:%
       
  4875 %:%861=380%:%
       
  4876 %:%862=380%:%
       
  4877 %:%863=381%:%
       
  4878 %:%864=381%:%
       
  4879 %:%865=382%:%
       
  4880 %:%866=382%:%
       
  4881 %:%867=383%:%
       
  4882 %:%868=383%:%
       
  4883 %:%869=384%:%
       
  4884 %:%870=384%:%
       
  4885 %:%871=385%:%
       
  4886 %:%872=385%:%
       
  4887 %:%873=386%:%
       
  4888 %:%874=386%:%
       
  4889 %:%875=387%:%
       
  4890 %:%876=387%:%
       
  4891 %:%877=388%:%
       
  4892 %:%878=388%:%
       
  4893 %:%879=389%:%
       
  4894 %:%880=389%:%
       
  4895 %:%881=390%:%
       
  4896 %:%882=390%:%
       
  4897 %:%883=390%:%
       
  4898 %:%884=391%:%
       
  4899 %:%885=391%:%
       
  4900 %:%886=392%:%
       
  4901 %:%887=392%:%
       
  4902 %:%888=393%:%
       
  4903 %:%889=393%:%
       
  4904 %:%890=394%:%
       
  4905 %:%891=394%:%
       
  4906 %:%892=394%:%
       
  4907 %:%893=395%:%
       
  4908 %:%894=395%:%
       
  4909 %:%895=396%:%
       
  4910 %:%896=396%:%
       
  4911 %:%897=397%:%
       
  4912 %:%898=397%:%
       
  4913 %:%899=398%:%
       
  4914 %:%900=398%:%
       
  4915 %:%901=399%:%
       
  4916 %:%902=399%:%
       
  4917 %:%903=399%:%
       
  4918 %:%904=400%:%
       
  4919 %:%905=400%:%
       
  4920 %:%906=401%:%
       
  4921 %:%907=401%:%
       
  4922 %:%908=401%:%
       
  4923 %:%913=401%:%
       
  4924 %:%916=402%:%
       
  4925 %:%917=403%:%
       
  4926 %:%918=403%:%
       
  4927 %:%919=404%:%
       
  4928 %:%920=405%:%
       
  4929 %:%923=406%:%
       
  4930 %:%927=406%:%
       
  4931 %:%928=406%:%
       
  4932 %:%929=407%:%
       
  4933 %:%930=407%:%
       
  4934 %:%931=408%:%
       
  4935 %:%932=408%:%
       
  4936 %:%933=409%:%
       
  4937 %:%934=409%:%
       
  4938 %:%935=410%:%
       
  4939 %:%936=410%:%
       
  4940 %:%937=411%:%
       
  4941 %:%938=411%:%
       
  4942 %:%939=412%:%
       
  4943 %:%940=412%:%
       
  4944 %:%941=413%:%
       
  4945 %:%942=413%:%
       
  4946 %:%943=414%:%
       
  4947 %:%944=414%:%
       
  4948 %:%945=415%:%
       
  4949 %:%946=415%:%
       
  4950 %:%947=416%:%
       
  4951 %:%953=416%:%
       
  4952 %:%956=417%:%
       
  4953 %:%957=418%:%
       
  4954 %:%958=418%:%
       
  4955 %:%959=419%:%
       
  4956 %:%960=420%:%
       
  4957 %:%963=421%:%
       
  4958 %:%967=421%:%
       
  4959 %:%968=421%:%
       
  4960 %:%969=422%:%
       
  4961 %:%970=422%:%
       
  4962 %:%971=423%:%
       
  4963 %:%972=423%:%
       
  4964 %:%973=424%:%
       
  4965 %:%974=424%:%
       
  4966 %:%975=425%:%
       
  4967 %:%976=425%:%
       
  4968 %:%977=426%:%
       
  4969 %:%978=426%:%
       
  4970 %:%979=427%:%
       
  4971 %:%980=427%:%
       
  4972 %:%981=428%:%
       
  4973 %:%982=428%:%
       
  4974 %:%983=429%:%
       
  4975 %:%984=429%:%
       
  4976 %:%985=430%:%
       
  4977 %:%986=430%:%
       
  4978 %:%987=431%:%
       
  4979 %:%988=431%:%
       
  4980 %:%989=432%:%
       
  4981 %:%990=432%:%
       
  4982 %:%991=433%:%
       
  4983 %:%992=433%:%
       
  4984 %:%993=434%:%
       
  4985 %:%994=434%:%
       
  4986 %:%995=435%:%
       
  4987 %:%996=435%:%
       
  4988 %:%997=436%:%
       
  4989 %:%998=436%:%
       
  4990 %:%999=437%:%
       
  4991 %:%1000=437%:%
       
  4992 %:%1001=438%:%
       
  4993 %:%1002=438%:%
       
  4994 %:%1003=439%:%
       
  4995 %:%1004=439%:%
       
  4996 %:%1005=440%:%
       
  4997 %:%1006=440%:%
       
  4998 %:%1007=441%:%
       
  4999 %:%1008=441%:%
       
  5000 %:%1009=442%:%
       
  5001 %:%1010=442%:%
       
  5002 %:%1011=443%:%
       
  5003 %:%1012=443%:%
       
  5004 %:%1013=444%:%
       
  5005 %:%1014=444%:%
       
  5006 %:%1015=445%:%
       
  5007 %:%1016=445%:%
       
  5008 %:%1017=446%:%
       
  5009 %:%1018=446%:%
       
  5010 %:%1019=447%:%
       
  5011 %:%1020=447%:%
       
  5012 %:%1021=448%:%
       
  5013 %:%1022=448%:%
       
  5014 %:%1023=449%:%
       
  5015 %:%1024=449%:%
       
  5016 %:%1025=450%:%
       
  5017 %:%1026=450%:%
       
  5018 %:%1027=451%:%
       
  5019 %:%1028=451%:%
       
  5020 %:%1029=452%:%
       
  5021 %:%1030=452%:%
       
  5022 %:%1031=452%:%
       
  5023 %:%1032=453%:%
       
  5024 %:%1033=453%:%
       
  5025 %:%1034=454%:%
       
  5026 %:%1035=454%:%
       
  5027 %:%1036=455%:%
       
  5028 %:%1037=455%:%
       
  5029 %:%1038=456%:%
       
  5030 %:%1039=456%:%
       
  5031 %:%1040=457%:%
       
  5032 %:%1041=457%:%
       
  5033 %:%1042=458%:%
       
  5034 %:%1043=458%:%
       
  5035 %:%1044=458%:%
       
  5036 %:%1045=459%:%
       
  5037 %:%1046=459%:%
       
  5038 %:%1047=460%:%
       
  5039 %:%1048=460%:%
       
  5040 %:%1049=461%:%
       
  5041 %:%1050=461%:%
       
  5042 %:%1051=462%:%
       
  5043 %:%1052=462%:%
       
  5044 %:%1053=463%:%
       
  5045 %:%1054=463%:%
       
  5046 %:%1055=464%:%
       
  5047 %:%1056=464%:%
       
  5048 %:%1057=465%:%
       
  5049 %:%1058=465%:%
       
  5050 %:%1059=465%:%
       
  5051 %:%1060=466%:%
       
  5052 %:%1061=466%:%
       
  5053 %:%1062=467%:%
       
  5054 %:%1063=467%:%
       
  5055 %:%1064=468%:%
       
  5056 %:%1065=468%:%
       
  5057 %:%1066=469%:%
       
  5058 %:%1067=469%:%
       
  5059 %:%1068=470%:%
       
  5060 %:%1069=470%:%
       
  5061 %:%1070=471%:%
       
  5062 %:%1071=471%:%
       
  5063 %:%1072=472%:%
       
  5064 %:%1073=472%:%
       
  5065 %:%1074=473%:%
       
  5066 %:%1075=473%:%
       
  5067 %:%1076=474%:%
       
  5068 %:%1077=474%:%
       
  5069 %:%1078=475%:%
       
  5070 %:%1079=475%:%
       
  5071 %:%1080=476%:%
       
  5072 %:%1081=476%:%
       
  5073 %:%1082=477%:%
       
  5074 %:%1083=477%:%
       
  5075 %:%1084=478%:%
       
  5076 %:%1090=478%:%
       
  5077 %:%1093=479%:%
       
  5078 %:%1094=480%:%
       
  5079 %:%1095=481%:%
       
  5080 %:%1096=482%:%
       
  5081 %:%1097=482%:%
       
  5082 %:%1098=483%:%
       
  5083 %:%1099=484%:%
       
  5084 %:%1102=485%:%
       
  5085 %:%1106=485%:%
       
  5086 %:%1107=485%:%
       
  5087 %:%1108=486%:%
       
  5088 %:%1109=486%:%
       
  5089 %:%1110=487%:%
       
  5090 %:%1111=487%:%
       
  5091 %:%1112=488%:%
       
  5092 %:%1113=488%:%
       
  5093 %:%1114=488%:%
       
  5094 %:%1115=489%:%
       
  5095 %:%1116=489%:%
       
  5096 %:%1117=489%:%
       
  5097 %:%1118=489%:%
       
  5098 %:%1119=490%:%
       
  5099 %:%1120=490%:%
       
  5100 %:%1121=490%:%
       
  5101 %:%1122=491%:%
       
  5102 %:%1123=491%:%
       
  5103 %:%1124=491%:%
       
  5104 %:%1125=492%:%
       
  5105 %:%1126=492%:%
       
  5106 %:%1127=492%:%
       
  5107 %:%1128=493%:%
       
  5108 %:%1129=493%:%
       
  5109 %:%1130=494%:%
       
  5110 %:%1131=494%:%
       
  5111 %:%1132=495%:%
       
  5112 %:%1133=495%:%
       
  5113 %:%1134=496%:%
       
  5114 %:%1135=496%:%
       
  5115 %:%1136=497%:%
       
  5116 %:%1137=497%:%
       
  5117 %:%1138=498%:%
       
  5118 %:%1139=498%:%
       
  5119 %:%1140=498%:%
       
  5120 %:%1141=499%:%
       
  5121 %:%1142=499%:%
       
  5122 %:%1143=499%:%
       
  5123 %:%1144=500%:%
       
  5124 %:%1145=500%:%
       
  5125 %:%1146=501%:%
       
  5126 %:%1147=501%:%
       
  5127 %:%1148=502%:%
       
  5128 %:%1149=502%:%
       
  5129 %:%1150=503%:%
       
  5130 %:%1151=503%:%
       
  5131 %:%1152=503%:%
       
  5132 %:%1153=504%:%
       
  5133 %:%1154=504%:%
       
  5134 %:%1155=504%:%
       
  5135 %:%1156=505%:%
       
  5136 %:%1157=505%:%
       
  5137 %:%1158=505%:%
       
  5138 %:%1159=506%:%
       
  5139 %:%1160=506%:%
       
  5140 %:%1161=506%:%
       
  5141 %:%1162=507%:%
       
  5142 %:%1163=507%:%
       
  5143 %:%1164=507%:%
       
  5144 %:%1165=508%:%
       
  5145 %:%1166=508%:%
       
  5146 %:%1167=509%:%
       
  5147 %:%1173=509%:%
       
  5148 %:%1176=510%:%
       
  5149 %:%1177=511%:%
       
  5150 %:%1178=512%:%
       
  5151 %:%1179=512%:%
       
  5152 %:%1180=513%:%
       
  5153 %:%1181=514%:%
       
  5154 %:%1182=515%:%
       
  5155 %:%1183=516%:%
       
  5156 %:%1184=517%:%
       
  5157 %:%1185=517%:%
       
  5158 %:%1186=518%:%
       
  5159 %:%1187=519%:%
       
  5160 %:%1188=520%:%
       
  5161 %:%1189=521%:%
       
  5162 %:%1190=521%:%
       
  5163 %:%1191=522%:%
       
  5164 %:%1198=523%:%
       
  5165 %:%1199=523%:%
       
  5166 %:%1200=524%:%
       
  5167 %:%1201=524%:%
       
  5168 %:%1202=524%:%
       
  5169 %:%1203=525%:%
       
  5170 %:%1204=525%:%
       
  5171 %:%1205=526%:%
       
  5172 %:%1206=526%:%
       
  5173 %:%1207=527%:%
       
  5174 %:%1208=527%:%
       
  5175 %:%1209=528%:%
       
  5176 %:%1210=528%:%
       
  5177 %:%1211=528%:%
       
  5178 %:%1212=529%:%
       
  5179 %:%1213=529%:%
       
  5180 %:%1214=530%:%
       
  5181 %:%1215=530%:%
       
  5182 %:%1216=530%:%
       
  5183 %:%1217=531%:%
       
  5184 %:%1218=531%:%
       
  5185 %:%1219=532%:%
       
  5186 %:%1220=532%:%
       
  5187 %:%1221=533%:%
       
  5188 %:%1222=533%:%
       
  5189 %:%1223=533%:%
       
  5190 %:%1224=534%:%
       
  5191 %:%1225=534%:%
       
  5192 %:%1226=534%:%
       
  5193 %:%1227=535%:%
       
  5194 %:%1228=535%:%
       
  5195 %:%1229=535%:%
       
  5196 %:%1230=536%:%
       
  5197 %:%1231=536%:%
       
  5198 %:%1232=536%:%
       
  5199 %:%1233=537%:%
       
  5200 %:%1234=537%:%
       
  5201 %:%1235=537%:%
       
  5202 %:%1236=538%:%
       
  5203 %:%1237=538%:%
       
  5204 %:%1238=539%:%
       
  5205 %:%1239=539%:%
       
  5206 %:%1240=539%:%
       
  5207 %:%1241=540%:%
       
  5208 %:%1242=540%:%
       
  5209 %:%1243=541%:%
       
  5210 %:%1244=541%:%
       
  5211 %:%1245=542%:%
       
  5212 %:%1246=542%:%
       
  5213 %:%1247=543%:%
       
  5214 %:%1248=543%:%
       
  5215 %:%1249=544%:%
       
  5216 %:%1255=544%:%
       
  5217 %:%1258=545%:%
       
  5218 %:%1259=546%:%
       
  5219 %:%1260=547%:%
       
  5220 %:%1261=547%:%
       
  5221 %:%1262=548%:%
       
  5222 %:%1263=549%:%
       
  5223 %:%1264=550%:%
       
  5224 %:%1266=552%:%
       
  5225 %:%1267=553%:%
       
  5226 %:%1268=554%:%
       
  5227 %:%1269=555%:%
       
  5228 %:%1270=556%:%
       
  5229 %:%1271=557%:%
       
  5230 %:%1272=557%:%
       
  5231 %:%1273=558%:%
       
  5232 %:%1274=559%:%
       
  5233 %:%1275=560%:%
       
  5234 %:%1276=561%:%
       
  5235 %:%1277=562%:%
       
  5236 %:%1278=563%:%
       
  5237 %:%1279=564%:%
       
  5238 %:%1280=565%:%
       
  5239 %:%1281=566%:%
       
  5240 %:%1282=567%:%
       
  5241 %:%1283=567%:%
       
  5242 %:%1284=568%:%
       
  5243 %:%1285=569%:%
       
  5244 %:%1286=570%:%
       
  5245 %:%1287=571%:%
       
  5246 %:%1288=572%:%
       
  5247 %:%1289=573%:%
       
  5248 %:%1290=574%:%
       
  5249 %:%1291=575%:%
       
  5250 %:%1292=576%:%
       
  5251 %:%1293=576%:%
       
  5252 %:%1294=577%:%
       
  5253 %:%1295=578%:%
       
  5254 %:%1296=579%:%
       
  5255 %:%1297=580%:%
       
  5256 %:%1298=581%:%
       
  5257 %:%1299=582%:%
       
  5258 %:%1300=583%:%
       
  5259 %:%1301=584%:%
       
  5260 %:%1302=584%:%
       
  5261 %:%1303=585%:%
       
  5262 %:%1304=586%:%
       
  5263 %:%1305=587%:%
       
  5264 %:%1306=588%:%
       
  5265 %:%1307=589%:%
       
  5266 %:%1308=590%:%
       
  5267 %:%1309=591%:%
       
  5268 %:%1310=591%:%
       
  5269 %:%1311=592%:%
       
  5270 %:%1312=593%:%
       
  5271 %:%1313=594%:%
       
  5272 %:%1314=595%:%
       
  5273 %:%1315=596%:%
       
  5274 %:%1316=597%:%
       
  5275 %:%1317=598%:%
       
  5276 %:%1318=599%:%
       
  5277 %:%1319=600%:%
       
  5278 %:%1320=600%:%
       
  5279 %:%1321=601%:%
       
  5280 %:%1322=602%:%
       
  5281 %:%1323=603%:%
       
  5282 %:%1324=604%:%
       
  5283 %:%1325=605%:%
       
  5284 %:%1326=606%:%
       
  5285 %:%1327=606%:%
       
  5286 %:%1328=607%:%
       
  5287 %:%1329=608%:%
       
  5288 %:%1330=609%:%
       
  5289 %:%1331=610%:%
       
  5290 %:%1332=610%:%
       
  5291 %:%1333=611%:%
       
  5292 %:%1334=612%:%
       
  5293 %:%1335=612%:%
       
  5294 %:%1336=613%:%
       
  5295 %:%1339=614%:%
       
  5296 %:%1343=614%:%
       
  5297 %:%1344=614%:%
       
  5298 %:%1345=615%:%
       
  5299 %:%1346=615%:%
       
  5300 %:%1347=616%:%
       
  5301 %:%1348=616%:%
       
  5302 %:%1349=617%:%
       
  5303 %:%1355=617%:%
       
  5304 %:%1358=618%:%
       
  5305 %:%1359=619%:%
       
  5306 %:%1360=620%:%
       
  5307 %:%1361=621%:%
       
  5308 %:%1362=622%:%
       
  5309 %:%1363=623%:%
       
  5310 %:%1364=624%:%
       
  5311 %:%1365=625%:%
       
  5312 %:%1366=625%:%
       
  5313 %:%1367=626%:%
       
  5314 %:%1370=627%:%
       
  5315 %:%1374=627%:%
       
  5316 %:%1375=627%:%
       
  5317 %:%1376=628%:%
       
  5318 %:%1377=628%:%
       
  5319 %:%1378=629%:%
       
  5320 %:%1379=629%:%
       
  5321 %:%1384=629%:%
       
  5322 %:%1387=630%:%
       
  5323 %:%1388=631%:%
       
  5324 %:%1389=631%:%
       
  5325 %:%1390=632%:%
       
  5326 %:%1393=633%:%
       
  5327 %:%1397=633%:%
       
  5328 %:%1398=633%:%
       
  5329 %:%1399=634%:%
       
  5330 %:%1400=634%:%
       
  5331 %:%1401=635%:%
       
  5332 %:%1407=635%:%
       
  5333 %:%1410=636%:%
       
  5334 %:%1411=637%:%
       
  5335 %:%1412=637%:%
       
  5336 %:%1413=638%:%
       
  5337 %:%1416=639%:%
       
  5338 %:%1420=639%:%
       
  5339 %:%1421=639%:%
       
  5340 %:%1422=640%:%
       
  5341 %:%1423=640%:%
       
  5342 %:%1424=641%:%
       
  5343 %:%1425=641%:%
       
  5344 %:%1426=642%:%
       
  5345 %:%1427=642%:%
       
  5346 %:%1428=643%:%
       
  5347 %:%1429=643%:%
       
  5348 %:%1430=644%:%
       
  5349 %:%1431=644%:%
       
  5350 %:%1432=645%:%
       
  5351 %:%1438=645%:%
       
  5352 %:%1441=646%:%
       
  5353 %:%1442=647%:%
       
  5354 %:%1443=647%:%
       
  5355 %:%1444=648%:%
       
  5356 %:%1447=649%:%
       
  5357 %:%1451=649%:%
       
  5358 %:%1452=649%:%
       
  5359 %:%1453=650%:%
       
  5360 %:%1454=650%:%
       
  5361 %:%1455=651%:%
       
  5362 %:%1456=651%:%
       
  5363 %:%1457=652%:%
       
  5364 %:%1458=652%:%
       
  5365 %:%1459=652%:%
       
  5366 %:%1460=653%:%
       
  5367 %:%1461=653%:%
       
  5368 %:%1466=653%:%
       
  5369 %:%1469=654%:%
       
  5370 %:%1470=655%:%
       
  5371 %:%1471=655%:%
       
  5372 %:%1472=656%:%
       
  5373 %:%1475=657%:%
       
  5374 %:%1479=657%:%
       
  5375 %:%1480=657%:%
       
  5376 %:%1481=658%:%
       
  5377 %:%1482=658%:%
       
  5378 %:%1483=659%:%
       
  5379 %:%1484=659%:%
       
  5380 %:%1485=660%:%
       
  5381 %:%1486=660%:%
       
  5382 %:%1491=660%:%
       
  5383 %:%1494=661%:%
       
  5384 %:%1495=662%:%
       
  5385 %:%1496=662%:%
       
  5386 %:%1497=663%:%
       
  5387 %:%1500=664%:%
       
  5388 %:%1504=664%:%
       
  5389 %:%1505=664%:%
       
  5390 %:%1510=664%:%
       
  5391 %:%1513=665%:%
       
  5392 %:%1514=666%:%
       
  5393 %:%1515=666%:%
       
  5394 %:%1516=667%:%
       
  5395 %:%1519=668%:%
       
  5396 %:%1523=668%:%
       
  5397 %:%1524=668%:%
       
  5398 %:%1525=669%:%
       
  5399 %:%1526=669%:%
       
  5400 %:%1527=670%:%
       
  5401 %:%1528=670%:%
       
  5402 %:%1529=671%:%
       
  5403 %:%1530=671%:%
       
  5404 %:%1531=672%:%
       
  5405 %:%1532=672%:%
       
  5406 %:%1533=673%:%
       
  5407 %:%1534=673%:%
       
  5408 %:%1535=674%:%
       
  5409 %:%1536=674%:%
       
  5410 %:%1537=675%:%
       
  5411 %:%1538=675%:%
       
  5412 %:%1539=676%:%
       
  5413 %:%1540=676%:%
       
  5414 %:%1541=677%:%
       
  5415 %:%1542=677%:%
       
  5416 %:%1543=678%:%
       
  5417 %:%1544=678%:%
       
  5418 %:%1545=679%:%
       
  5419 %:%1546=679%:%
       
  5420 %:%1547=680%:%
       
  5421 %:%1548=680%:%
       
  5422 %:%1549=681%:%
       
  5423 %:%1550=681%:%
       
  5424 %:%1551=682%:%
       
  5425 %:%1552=682%:%
       
  5426 %:%1553=683%:%
       
  5427 %:%1554=683%:%
       
  5428 %:%1555=684%:%
       
  5429 %:%1556=684%:%
       
  5430 %:%1557=685%:%
       
  5431 %:%1558=685%:%
       
  5432 %:%1559=686%:%
       
  5433 %:%1560=686%:%
       
  5434 %:%1561=686%:%
       
  5435 %:%1566=686%:%
       
  5436 %:%1569=687%:%
       
  5437 %:%1570=688%:%
       
  5438 %:%1571=688%:%
       
  5439 %:%1572=689%:%
       
  5440 %:%1575=690%:%
       
  5441 %:%1579=690%:%
       
  5442 %:%1580=690%:%
       
  5443 %:%1581=691%:%
       
  5444 %:%1582=691%:%
       
  5445 %:%1583=692%:%
       
  5446 %:%1589=692%:%
       
  5447 %:%1592=693%:%
       
  5448 %:%1593=694%:%
       
  5449 %:%1594=695%:%
       
  5450 %:%1595=696%:%
       
  5451 %:%1596=696%:%
       
  5452 %:%1597=697%:%
       
  5453 %:%1598=698%:%
       
  5454 %:%1601=699%:%
       
  5455 %:%1605=699%:%
       
  5456 %:%1606=699%:%
       
  5457 %:%1607=700%:%
       
  5458 %:%1608=700%:%
       
  5459 %:%1609=701%:%
       
  5460 %:%1610=701%:%
       
  5461 %:%1611=702%:%
       
  5462 %:%1617=702%:%
       
  5463 %:%1620=703%:%
       
  5464 %:%1621=704%:%
       
  5465 %:%1622=704%:%
       
  5466 %:%1623=705%:%
       
  5467 %:%1626=706%:%
       
  5468 %:%1630=706%:%
       
  5469 %:%1631=706%:%
       
  5470 %:%1632=707%:%
       
  5471 %:%1633=707%:%
       
  5472 %:%1634=708%:%
       
  5473 %:%1640=708%:%
       
  5474 %:%1643=709%:%
       
  5475 %:%1644=710%:%
       
  5476 %:%1645=711%:%
       
  5477 %:%1646=711%:%
       
  5478 %:%1647=712%:%
       
  5479 %:%1650=713%:%
       
  5480 %:%1654=713%:%
       
  5481 %:%1655=713%:%
       
  5482 %:%1656=714%:%
       
  5483 %:%1657=714%:%
       
  5484 %:%1658=715%:%
       
  5485 %:%1659=715%:%
       
  5486 %:%1660=716%:%
       
  5487 %:%1661=716%:%
       
  5488 %:%1662=717%:%
       
  5489 %:%1663=717%:%
       
  5490 %:%1664=718%:%
       
  5491 %:%1665=718%:%
       
  5492 %:%1666=719%:%
       
  5493 %:%1667=719%:%
       
  5494 %:%1672=719%:%
       
  5495 %:%1675=720%:%
       
  5496 %:%1676=721%:%
       
  5497 %:%1677=722%:%
       
  5498 %:%1678=722%:%
       
  5499 %:%1679=723%:%
       
  5500 %:%1680=724%:%
       
  5501 %:%1683=725%:%
       
  5502 %:%1687=725%:%
       
  5503 %:%1688=725%:%
       
  5504 %:%1693=725%:%
       
  5505 %:%1696=726%:%
       
  5506 %:%1697=727%:%
       
  5507 %:%1698=728%:%
       
  5508 %:%1699=728%:%
       
  5509 %:%1700=729%:%
       
  5510 %:%1703=730%:%
       
  5511 %:%1707=730%:%
       
  5512 %:%1708=730%:%
       
  5513 %:%1713=730%:%
       
  5514 %:%1716=731%:%
       
  5515 %:%1717=732%:%
       
  5516 %:%1718=733%:%
       
  5517 %:%1719=733%:%
       
  5518 %:%1720=734%:%
       
  5519 %:%1721=735%:%
       
  5520 %:%1724=736%:%
       
  5521 %:%1728=736%:%
       
  5522 %:%1729=736%:%
       
  5523 %:%1730=737%:%
       
  5524 %:%1731=737%:%
       
  5525 %:%1732=738%:%
       
  5526 %:%1733=738%:%
       
  5527 %:%1734=739%:%
       
  5528 %:%1735=739%:%
       
  5529 %:%1736=740%:%
       
  5530 %:%1737=740%:%
       
  5531 %:%1742=740%:%
       
  5532 %:%1745=741%:%
       
  5533 %:%1746=742%:%
       
  5534 %:%1747=742%:%
       
  5535 %:%1748=743%:%
       
  5536 %:%1749=744%:%
       
  5537 %:%1752=745%:%
       
  5538 %:%1756=745%:%
       
  5539 %:%1757=745%:%
       
  5540 %:%1758=746%:%
       
  5541 %:%1759=746%:%
       
  5542 %:%1760=747%:%
       
  5543 %:%1761=747%:%
       
  5544 %:%1762=748%:%
       
  5545 %:%1763=748%:%
       
  5546 %:%1764=749%:%
       
  5547 %:%1765=749%:%
       
  5548 %:%1770=749%:%
       
  5549 %:%1773=750%:%
       
  5550 %:%1774=751%:%
       
  5551 %:%1775=751%:%
       
  5552 %:%1776=752%:%
       
  5553 %:%1779=753%:%
       
  5554 %:%1783=753%:%
       
  5555 %:%1784=753%:%
       
  5556 %:%1785=754%:%
       
  5557 %:%1786=754%:%
       
  5558 %:%1787=755%:%
       
  5559 %:%1788=755%:%
       
  5560 %:%1789=756%:%
       
  5561 %:%1795=756%:%
       
  5562 %:%1798=757%:%
       
  5563 %:%1799=758%:%
       
  5564 %:%1800=759%:%
       
  5565 %:%1801=760%:%
       
  5566 %:%1802=761%:%
       
  5567 %:%1803=762%:%
       
  5568 %:%1804=762%:%
       
  5569 %:%1805=763%:%
       
  5570 %:%1806=764%:%
       
  5571 %:%1807=765%:%
       
  5572 %:%1808=766%:%
       
  5573 %:%1809=767%:%
       
  5574 %:%1810=768%:%
       
  5575 %:%1811=769%:%
       
  5576 %:%1812=770%:%
       
  5577 %:%1813=770%:%
       
  5578 %:%1814=771%:%
       
  5579 %:%1817=772%:%
       
  5580 %:%1821=772%:%
       
  5581 %:%1822=772%:%
       
  5582 %:%1823=773%:%
       
  5583 %:%1824=773%:%
       
  5584 %:%1825=774%:%
       
  5585 %:%1831=774%:%
       
  5586 %:%1834=775%:%
       
  5587 %:%1835=776%:%
       
  5588 %:%1836=776%:%
       
  5589 %:%1837=777%:%
       
  5590 %:%1840=778%:%
       
  5591 %:%1844=778%:%
       
  5592 %:%1845=778%:%
       
  5593 %:%1846=779%:%
       
  5594 %:%1847=779%:%
       
  5595 %:%1848=780%:%
       
  5596 %:%1849=780%:%
       
  5597 %:%1854=780%:%
       
  5598 %:%1857=781%:%
       
  5599 %:%1858=782%:%
       
  5600 %:%1859=782%:%
       
  5601 %:%1860=783%:%
       
  5602 %:%1863=784%:%
       
  5603 %:%1867=784%:%
       
  5604 %:%1868=784%:%
       
  5605 %:%1869=785%:%
       
  5606 %:%1875=785%:%
       
  5607 %:%1878=786%:%
       
  5608 %:%1879=787%:%
       
  5609 %:%1880=788%:%
       
  5610 %:%1881=789%:%
       
  5611 %:%1882=790%:%
       
  5612 %:%1883=791%:%
       
  5613 %:%1884=792%:%
       
  5614 %:%1885=793%:%
       
  5615 %:%1886=794%:%
       
  5616 %:%1887=794%:%
       
  5617 %:%1888=795%:%
       
  5618 %:%1889=796%:%
       
  5619 %:%1892=797%:%
       
  5620 %:%1896=797%:%
       
  5621 %:%1897=797%:%
       
  5622 %:%1898=798%:%
       
  5623 %:%1899=798%:%
       
  5624 %:%1900=799%:%
       
  5625 %:%1901=799%:%
       
  5626 %:%1902=800%:%
       
  5627 %:%1903=800%:%
       
  5628 %:%1904=801%:%
       
  5629 %:%1905=801%:%
       
  5630 %:%1906=802%:%
       
  5631 %:%1912=802%:%
       
  5632 %:%1915=803%:%
       
  5633 %:%1916=804%:%
       
  5634 %:%1917=805%:%
       
  5635 %:%1918=806%:%
       
  5636 %:%1919=806%:%
       
  5637 %:%1920=807%:%
       
  5638 %:%1923=808%:%
       
  5639 %:%1927=808%:%
       
  5640 %:%1928=808%:%
       
  5641 %:%1929=808%:%
       
  5642 %:%1934=808%:%
       
  5643 %:%1937=809%:%
       
  5644 %:%1938=810%:%
       
  5645 %:%1939=811%:%
       
  5646 %:%1940=812%:%
       
  5647 %:%1941=813%:%
       
  5648 %:%1942=814%:%
       
  5649 %:%1943=814%:%
       
  5650 %:%1944=815%:%
       
  5651 %:%1947=816%:%
       
  5652 %:%1951=816%:%
       
  5653 %:%1952=816%:%
       
  5654 %:%1953=817%:%
       
  5655 %:%1954=817%:%
       
  5656 %:%1955=818%:%
       
  5657 %:%1956=818%:%
       
  5658 %:%1957=819%:%
       
  5659 %:%1958=819%:%
       
  5660 %:%1959=820%:%
       
  5661 %:%1960=820%:%
       
  5662 %:%1961=821%:%
       
  5663 %:%1962=821%:%
       
  5664 %:%1963=822%:%
       
  5665 %:%1964=822%:%
       
  5666 %:%1965=823%:%
       
  5667 %:%1966=823%:%
       
  5668 %:%1967=824%:%
       
  5669 %:%1973=824%:%
       
  5670 %:%1976=825%:%
       
  5671 %:%1977=826%:%
       
  5672 %:%1978=826%:%
       
  5673 %:%1979=827%:%
       
  5674 %:%1980=828%:%
       
  5675 %:%1981=829%:%
       
  5676 %:%1982=830%:%
       
  5677 %:%1983=831%:%
       
  5678 %:%1984=832%:%
       
  5679 %:%1985=832%:%
       
  5680 %:%1986=833%:%
       
  5681 %:%1987=834%:%
       
  5682 %:%1990=835%:%
       
  5683 %:%1994=835%:%
       
  5684 %:%1995=835%:%
       
  5685 %:%1996=836%:%
       
  5686 %:%1997=836%:%
       
  5687 %:%1998=837%:%
       
  5688 %:%1999=837%:%
       
  5689 %:%2000=838%:%
       
  5690 %:%2006=838%:%
       
  5691 %:%2009=839%:%
       
  5692 %:%2010=840%:%
       
  5693 %:%2011=841%:%
       
  5694 %:%2012=842%:%
       
  5695 %:%2013=842%:%
       
  5696 %:%2014=843%:%
       
  5697 %:%2015=844%:%
       
  5698 %:%2018=845%:%
       
  5699 %:%2022=845%:%
       
  5700 %:%2023=845%:%
       
  5701 %:%2024=846%:%
       
  5702 %:%2025=846%:%
       
  5703 %:%2026=847%:%
       
  5704 %:%2027=847%:%
       
  5705 %:%2028=848%:%
       
  5706 %:%2029=848%:%
       
  5707 %:%2030=849%:%
       
  5708 %:%2031=849%:%
       
  5709 %:%2032=850%:%
       
  5710 %:%2033=850%:%
       
  5711 %:%2034=851%:%
       
  5712 %:%2035=851%:%
       
  5713 %:%2036=852%:%
       
  5714 %:%2037=852%:%
       
  5715 %:%2038=853%:%
       
  5716 %:%2039=853%:%
       
  5717 %:%2040=854%:%
       
  5718 %:%2041=854%:%
       
  5719 %:%2042=855%:%
       
  5720 %:%2043=855%:%
       
  5721 %:%2044=856%:%
       
  5722 %:%2045=856%:%
       
  5723 %:%2046=857%:%
       
  5724 %:%2047=857%:%
       
  5725 %:%2048=858%:%
       
  5726 %:%2054=858%:%
       
  5727 %:%2057=859%:%
       
  5728 %:%2058=860%:%
       
  5729 %:%2059=860%:%
       
  5730 %:%2060=861%:%
       
  5731 %:%2061=862%:%
       
  5732 %:%2064=863%:%
       
  5733 %:%2068=863%:%
       
  5734 %:%2069=863%:%
       
  5735 %:%2070=864%:%
       
  5736 %:%2071=864%:%
       
  5737 %:%2072=865%:%
       
  5738 %:%2073=865%:%
       
  5739 %:%2074=866%:%
       
  5740 %:%2075=866%:%
       
  5741 %:%2080=866%:%
       
  5742 %:%2083=867%:%
       
  5743 %:%2084=868%:%
       
  5744 %:%2085=869%:%
       
  5745 %:%2086=869%:%
       
  5746 %:%2087=870%:%
       
  5747 %:%2088=871%:%
       
  5748 %:%2091=872%:%
       
  5749 %:%2095=872%:%
       
  5750 %:%2096=872%:%
       
  5751 %:%2097=873%:%
       
  5752 %:%2098=873%:%
       
  5753 %:%2099=874%:%
       
  5754 %:%2100=874%:%
       
  5755 %:%2101=875%:%
       
  5756 %:%2102=875%:%
       
  5757 %:%2103=876%:%
       
  5758 %:%2104=876%:%
       
  5759 %:%2105=877%:%
       
  5760 %:%2106=877%:%
       
  5761 %:%2107=878%:%
       
  5762 %:%2108=878%:%
       
  5763 %:%2109=879%:%
       
  5764 %:%2110=879%:%
       
  5765 %:%2111=880%:%
       
  5766 %:%2112=880%:%
       
  5767 %:%2113=881%:%
       
  5768 %:%2114=881%:%
       
  5769 %:%2115=882%:%
       
  5770 %:%2116=882%:%
       
  5771 %:%2117=883%:%
       
  5772 %:%2118=883%:%
       
  5773 %:%2119=884%:%
       
  5774 %:%2120=884%:%
       
  5775 %:%2121=885%:%
       
  5776 %:%2122=885%:%
       
  5777 %:%2123=886%:%
       
  5778 %:%2124=886%:%
       
  5779 %:%2125=887%:%
       
  5780 %:%2126=887%:%
       
  5781 %:%2127=888%:%
       
  5782 %:%2128=888%:%
       
  5783 %:%2129=889%:%
       
  5784 %:%2130=889%:%
       
  5785 %:%2131=890%:%
       
  5786 %:%2132=890%:%
       
  5787 %:%2133=891%:%
       
  5788 %:%2134=891%:%
       
  5789 %:%2135=892%:%
       
  5790 %:%2136=892%:%
       
  5791 %:%2137=893%:%
       
  5792 %:%2138=893%:%
       
  5793 %:%2139=894%:%
       
  5794 %:%2140=894%:%
       
  5795 %:%2141=895%:%
       
  5796 %:%2142=895%:%
       
  5797 %:%2143=896%:%
       
  5798 %:%2144=896%:%
       
  5799 %:%2145=897%:%
       
  5800 %:%2146=897%:%
       
  5801 %:%2147=898%:%
       
  5802 %:%2148=898%:%
       
  5803 %:%2149=899%:%
       
  5804 %:%2150=899%:%
       
  5805 %:%2151=900%:%
       
  5806 %:%2152=900%:%
       
  5807 %:%2153=901%:%
       
  5808 %:%2154=901%:%
       
  5809 %:%2155=902%:%
       
  5810 %:%2156=902%:%
       
  5811 %:%2157=903%:%
       
  5812 %:%2158=903%:%
       
  5813 %:%2159=904%:%
       
  5814 %:%2160=904%:%
       
  5815 %:%2161=905%:%
       
  5816 %:%2162=905%:%
       
  5817 %:%2163=906%:%
       
  5818 %:%2164=906%:%
       
  5819 %:%2165=907%:%
       
  5820 %:%2166=907%:%
       
  5821 %:%2167=908%:%
       
  5822 %:%2168=908%:%
       
  5823 %:%2169=909%:%
       
  5824 %:%2170=909%:%
       
  5825 %:%2171=910%:%
       
  5826 %:%2172=910%:%
       
  5827 %:%2173=911%:%
       
  5828 %:%2174=911%:%
       
  5829 %:%2175=912%:%
       
  5830 %:%2176=912%:%
       
  5831 %:%2177=913%:%
       
  5832 %:%2178=913%:%
       
  5833 %:%2179=914%:%
       
  5834 %:%2180=914%:%
       
  5835 %:%2181=915%:%
       
  5836 %:%2182=915%:%
       
  5837 %:%2183=916%:%
       
  5838 %:%2184=916%:%
       
  5839 %:%2185=917%:%
       
  5840 %:%2186=917%:%
       
  5841 %:%2187=918%:%
       
  5842 %:%2188=918%:%
       
  5843 %:%2189=919%:%
       
  5844 %:%2190=919%:%
       
  5845 %:%2191=920%:%
       
  5846 %:%2192=920%:%
       
  5847 %:%2193=921%:%
       
  5848 %:%2194=921%:%
       
  5849 %:%2195=922%:%
       
  5850 %:%2196=922%:%
       
  5851 %:%2197=923%:%
       
  5852 %:%2198=923%:%
       
  5853 %:%2199=924%:%
       
  5854 %:%2200=924%:%
       
  5855 %:%2201=925%:%
       
  5856 %:%2202=925%:%
       
  5857 %:%2203=926%:%
       
  5858 %:%2204=926%:%
       
  5859 %:%2205=927%:%
       
  5860 %:%2206=927%:%
       
  5861 %:%2207=928%:%
       
  5862 %:%2208=928%:%
       
  5863 %:%2209=929%:%
       
  5864 %:%2210=929%:%
       
  5865 %:%2211=930%:%
       
  5866 %:%2212=930%:%
       
  5867 %:%2213=931%:%
       
  5868 %:%2214=931%:%
       
  5869 %:%2215=931%:%
       
  5870 %:%2220=931%:%
       
  5871 %:%2223=932%:%
       
  5872 %:%2224=933%:%
       
  5873 %:%2225=934%:%
       
  5874 %:%2226=935%:%
       
  5875 %:%2227=936%:%
       
  5876 %:%2228=936%:%
       
  5877 %:%2229=937%:%
       
  5878 %:%2232=938%:%
       
  5879 %:%2236=938%:%
       
  5880 %:%2237=938%:%
       
  5881 %:%2238=939%:%
       
  5882 %:%2239=939%:%
       
  5883 %:%2240=940%:%
       
  5884 %:%2246=940%:%
       
  5885 %:%2249=941%:%
       
  5886 %:%2250=942%:%
       
  5887 %:%2251=943%:%
       
  5888 %:%2252=943%:%
       
  5889 %:%2253=944%:%
       
  5890 %:%2254=945%:%
       
  5891 %:%2255=946%:%
       
  5892 %:%2256=947%:%
       
  5893 %:%2257=948%:%
       
  5894 %:%2258=949%:%
       
  5895 %:%2259=950%:%
       
  5896 %:%2261=952%:%
       
  5897 %:%2262=953%:%
       
  5898 %:%2263=954%:%
       
  5899 %:%2264=955%:%
       
  5900 %:%2265=956%:%
       
  5901 %:%2266=957%:%
       
  5902 %:%2267=958%:%
       
  5903 %:%2268=959%:%
       
  5904 %:%2269=960%:%
       
  5905 %:%2270=961%:%
       
  5906 %:%2271=962%:%
       
  5907 %:%2272=963%:%
       
  5908 %:%2273=964%:%
       
  5909 %:%2274=965%:%
       
  5910 %:%2275=966%:%
       
  5911 %:%2276=967%:%
       
  5912 %:%2277=967%:%
       
  5913 %:%2278=968%:%
       
  5914 %:%2279=969%:%
       
  5915 %:%2282=970%:%
       
  5916 %:%2286=970%:%
       
  5917 %:%2287=970%:%
       
  5918 %:%2288=971%:%
       
  5919 %:%2294=971%:%
       
  5920 %:%2297=972%:%
       
  5921 %:%2298=973%:%
       
  5922 %:%2299=974%:%
       
  5923 %:%2300=975%:%
       
  5924 %:%2301=975%:%
       
  5925 %:%2302=976%:%
       
  5926 %:%2305=977%:%
       
  5927 %:%2309=977%:%
       
  5928 %:%2310=977%:%
       
  5929 %:%2311=978%:%
       
  5930 %:%2312=978%:%
       
  5931 %:%2313=979%:%
       
  5932 %:%2314=979%:%
       
  5933 %:%2315=980%:%
       
  5934 %:%2316=980%:%
       
  5935 %:%2317=981%:%
       
  5936 %:%2318=981%:%
       
  5937 %:%2319=982%:%
       
  5938 %:%2325=982%:%
       
  5939 %:%2328=983%:%
       
  5940 %:%2329=984%:%
       
  5941 %:%2330=985%:%
       
  5942 %:%2331=986%:%
       
  5943 %:%2332=986%:%
       
  5944 %:%2333=987%:%
       
  5945 %:%2334=988%:%
       
  5946 %:%2337=989%:%
       
  5947 %:%2341=989%:%
       
  5948 %:%2342=989%:%
       
  5949 %:%2343=990%:%
       
  5950 %:%2344=990%:%
       
  5951 %:%2345=991%:%
       
  5952 %:%2351=991%:%
       
  5953 %:%2354=992%:%
       
  5954 %:%2355=993%:%
       
  5955 %:%2356=994%:%
       
  5956 %:%2357=995%:%
       
  5957 %:%2358=996%:%
       
  5958 %:%2359=997%:%
       
  5959 %:%2360=998%:%
       
  5960 %:%2361=999%:%
       
  5961 %:%2362=1000%:%
       
  5962 %:%2363=1000%:%
       
  5963 %:%2364=1001%:%
       
  5964 %:%2365=1002%:%
       
  5965 %:%2366=1003%:%
       
  5966 %:%2367=1004%:%
       
  5967 %:%2368=1005%:%
       
  5968 %:%2369=1006%:%
       
  5969 %:%2370=1007%:%
       
  5970 %:%2371=1008%:%
       
  5971 %:%2372=1009%:%
       
  5972 %:%2373=1010%:%
       
  5973 %:%2374=1011%:%
       
  5974 %:%2375=1012%:%
       
  5975 %:%2376=1014%:%
       
  5976 %:%2377=1015%:%
       
  5977 %:%2378=1016%:%
       
  5978 %:%2379=1017%:%
       
  5979 %:%2380=1018%:%
       
  5980 %:%2381=1019%:%
       
  5981 %:%2382=1020%:%
       
  5982 %:%2383=1021%:%
       
  5983 %:%2384=1021%:%
       
  5984 %:%2385=1022%:%
       
  5985 %:%2386=1023%:%
       
  5986 %:%2387=1024%:%
       
  5987 %:%2388=1025%:%
       
  5988 %:%2389=1026%:%
       
  5989 %:%2390=1026%:%
       
  5990 %:%2391=1027%:%
       
  5991 %:%2392=1028%:%
       
  5992 %:%2393=1029%:%
       
  5993 %:%2394=1032%:%
       
  5994 %:%2395=1033%:%
       
  5995 %:%2396=1034%:%
       
  5996 %:%2397=1035%:%
       
  5997 %:%2398=1036%:%
       
  5998 %:%2399=1036%:%
       
  5999 %:%2402=1037%:%
       
  6000 %:%2406=1037%:%
       
  6001 %:%2407=1037%:%
       
  6002 %:%2408=1037%:%
       
  6003 %:%2413=1037%:%
       
  6004 %:%2416=1038%:%
       
  6005 %:%2417=1039%:%
       
  6006 %:%2418=1039%:%
       
  6007 %:%2419=1040%:%
       
  6008 %:%2420=1041%:%
       
  6009 %:%2423=1042%:%
       
  6010 %:%2427=1042%:%
       
  6011 %:%2428=1042%:%
       
  6012 %:%2429=1043%:%
       
  6013 %:%2430=1043%:%
       
  6014 %:%2431=1044%:%
       
  6015 %:%2432=1044%:%
       
  6016 %:%2433=1045%:%
       
  6017 %:%2439=1045%:%
       
  6018 %:%2442=1046%:%
       
  6019 %:%2443=1047%:%
       
  6020 %:%2444=1048%:%
       
  6021 %:%2445=1048%:%
       
  6022 %:%2448=1049%:%
       
  6023 %:%2452=1049%:%
       
  6024 %:%2453=1049%:%
       
  6025 %:%2458=1049%:%
       
  6026 %:%2461=1050%:%
       
  6027 %:%2462=1051%:%
       
  6028 %:%2463=1052%:%
       
  6029 %:%2464=1052%:%
       
  6030 %:%2467=1053%:%
       
  6031 %:%2471=1053%:%
       
  6032 %:%2472=1053%:%
       
  6033 %:%2473=1054%:%
       
  6034 %:%2474=1054%:%
       
  6035 %:%2475=1055%:%
       
  6036 %:%2476=1055%:%
       
  6037 %:%2481=1055%:%
       
  6038 %:%2484=1056%:%
       
  6039 %:%2485=1057%:%
       
  6040 %:%2486=1058%:%
       
  6041 %:%2487=1058%:%
       
  6042 %:%2490=1059%:%
       
  6043 %:%2494=1059%:%
       
  6044 %:%2495=1059%:%
       
  6045 %:%2496=1060%:%
       
  6046 %:%2497=1060%:%
       
  6047 %:%2498=1061%:%
       
  6048 %:%2499=1061%:%
       
  6049 %:%2500=1061%:%
       
  6050 %:%2505=1061%:%
       
  6051 %:%2508=1062%:%
       
  6052 %:%2509=1063%:%
       
  6053 %:%2510=1064%:%
       
  6054 %:%2511=1065%:%
       
  6055 %:%2512=1065%:%
       
  6056 %:%2515=1066%:%
       
  6057 %:%2516=1067%:%
       
  6058 %:%2520=1067%:%
       
  6059 %:%2521=1067%:%
       
  6060 %:%2522=1068%:%
       
  6061 %:%2523=1068%:%
       
  6062 %:%2524=1069%:%
       
  6063 %:%2525=1069%:%
       
  6064 %:%2526=1070%:%
       
  6065 %:%2527=1070%:%
       
  6066 %:%2528=1071%:%
       
  6067 %:%2529=1071%:%
       
  6068 %:%2530=1072%:%
       
  6069 %:%2531=1072%:%
       
  6070 %:%2532=1073%:%
       
  6071 %:%2533=1073%:%
       
  6072 %:%2534=1074%:%
       
  6073 %:%2535=1074%:%
       
  6074 %:%2536=1075%:%
       
  6075 %:%2537=1075%:%
       
  6076 %:%2538=1076%:%
       
  6077 %:%2539=1076%:%
       
  6078 %:%2540=1077%:%
       
  6079 %:%2546=1077%:%
       
  6080 %:%2549=1078%:%
       
  6081 %:%2550=1079%:%
       
  6082 %:%2551=1080%:%
       
  6083 %:%2552=1080%:%
       
  6084 %:%2555=1081%:%
       
  6085 %:%2559=1081%:%
       
  6086 %:%2560=1081%:%
       
  6087 %:%2565=1081%:%
       
  6088 %:%2568=1082%:%
       
  6089 %:%2569=1083%:%
       
  6090 %:%2570=1084%:%
       
  6091 %:%2571=1084%:%
       
  6092 %:%2574=1085%:%
       
  6093 %:%2578=1085%:%
       
  6094 %:%2579=1085%:%
       
  6095 %:%2580=1086%:%
       
  6096 %:%2581=1086%:%
       
  6097 %:%2582=1087%:%
       
  6098 %:%2583=1087%:%
       
  6099 %:%2584=1088%:%
       
  6100 %:%2585=1088%:%
       
  6101 %:%2586=1089%:%
       
  6102 %:%2587=1089%:%
       
  6103 %:%2588=1090%:%
       
  6104 %:%2589=1090%:%
       
  6105 %:%2590=1091%:%
       
  6106 %:%2591=1091%:%
       
  6107 %:%2592=1092%:%
       
  6108 %:%2593=1092%:%
       
  6109 %:%2594=1093%:%
       
  6110 %:%2595=1093%:%
       
  6111 %:%2596=1094%:%
       
  6112 %:%2597=1094%:%
       
  6113 %:%2598=1095%:%
       
  6114 %:%2599=1095%:%
       
  6115 %:%2604=1095%:%
       
  6116 %:%2607=1096%:%
       
  6117 %:%2608=1097%:%
       
  6118 %:%2609=1097%:%
       
  6119 %:%2612=1098%:%
       
  6120 %:%2616=1098%:%
       
  6121 %:%2617=1098%:%
       
  6122 %:%2618=1099%:%
       
  6123 %:%2619=1099%:%
       
  6124 %:%2620=1100%:%
       
  6125 %:%2621=1100%:%
       
  6126 %:%2622=1100%:%
       
  6127 %:%2627=1100%:%
       
  6128 %:%2630=1101%:%
       
  6129 %:%2631=1102%:%
       
  6130 %:%2632=1103%:%
       
  6131 %:%2633=1103%:%
       
  6132 %:%2636=1104%:%
       
  6133 %:%2640=1104%:%
       
  6134 %:%2641=1104%:%
       
  6135 %:%2642=1105%:%
       
  6136 %:%2643=1105%:%
       
  6137 %:%2644=1106%:%
       
  6138 %:%2645=1107%:%
       
  6139 %:%2646=1107%:%
       
  6140 %:%2651=1107%:%
       
  6141 %:%2654=1108%:%
       
  6142 %:%2655=1109%:%
       
  6143 %:%2656=1110%:%
       
  6144 %:%2657=1111%:%
       
  6145 %:%2658=1111%:%
       
  6146 %:%2661=1112%:%
       
  6147 %:%2665=1112%:%
       
  6148 %:%2666=1112%:%
       
  6149 %:%2667=1113%:%
       
  6150 %:%2668=1113%:%
       
  6151 %:%2669=1114%:%
       
  6152 %:%2670=1114%:%
       
  6153 %:%2675=1114%:%
       
  6154 %:%2678=1115%:%
       
  6155 %:%2679=1116%:%
       
  6156 %:%2680=1116%:%
       
  6157 %:%2683=1117%:%
       
  6158 %:%2684=1118%:%
       
  6159 %:%2688=1118%:%
       
  6160 %:%2689=1118%:%
       
  6161 %:%2690=1119%:%
       
  6162 %:%2691=1119%:%
       
  6163 %:%2692=1120%:%
       
  6164 %:%2693=1120%:%
       
  6165 %:%2694=1121%:%
       
  6166 %:%2695=1121%:%
       
  6167 %:%2700=1121%:%
       
  6168 %:%2703=1122%:%
       
  6169 %:%2704=1123%:%
       
  6170 %:%2705=1124%:%
       
  6171 %:%2706=1124%:%
       
  6172 %:%2709=1125%:%
       
  6173 %:%2713=1125%:%
       
  6174 %:%2714=1125%:%
       
  6175 %:%2715=1126%:%
       
  6176 %:%2716=1126%:%
       
  6177 %:%2717=1127%:%
       
  6178 %:%2718=1127%:%
       
  6179 %:%2719=1128%:%
       
  6180 %:%2720=1128%:%
       
  6181 %:%2721=1129%:%
       
  6182 %:%2722=1129%:%
       
  6183 %:%2723=1130%:%
       
  6184 %:%2724=1130%:%
       
  6185 %:%2725=1131%:%
       
  6186 %:%2726=1131%:%
       
  6187 %:%2727=1131%:%
       
  6188 %:%2728=1132%:%
       
  6189 %:%2729=1132%:%
       
  6190 %:%2730=1133%:%
       
  6191 %:%2731=1133%:%
       
  6192 %:%2732=1134%:%
       
  6193 %:%2733=1134%:%
       
  6194 %:%2734=1135%:%
       
  6195 %:%2740=1135%:%
       
  6196 %:%2743=1136%:%
       
  6197 %:%2744=1137%:%
       
  6198 %:%2745=1137%:%
       
  6199 %:%2746=1138%:%
       
  6200 %:%2747=1139%:%
       
  6201 %:%2748=1140%:%
       
  6202 %:%2749=1141%:%
       
  6203 %:%2750=1142%:%
       
  6204 %:%2751=1143%:%
       
  6205 %:%2752=1144%:%
       
  6206 %:%2753=1145%:%
       
  6207 %:%2754=1146%:%
       
  6208 %:%2755=1147%:%
       
  6209 %:%2756=1148%:%
       
  6210 %:%2757=1148%:%
       
  6211 %:%2760=1149%:%
       
  6212 %:%2764=1149%:%
       
  6213 %:%2765=1149%:%
       
  6214 %:%2770=1149%:%
       
  6215 %:%2773=1150%:%
       
  6216 %:%2774=1151%:%
       
  6217 %:%2775=1151%:%
       
  6218 %:%2778=1152%:%
       
  6219 %:%2782=1152%:%
       
  6220 %:%2783=1152%:%
       
  6221 %:%2784=1153%:%
       
  6222 %:%2785=1153%:%
       
  6223 %:%2786=1154%:%
       
  6224 %:%2787=1154%:%
       
  6225 %:%2788=1155%:%
       
  6226 %:%2789=1156%:%
       
  6227 %:%2790=1156%:%
       
  6228 %:%2791=1157%:%
       
  6229 %:%2792=1158%:%
       
  6230 %:%2793=1159%:%
       
  6231 %:%2794=1159%:%
       
  6232 %:%2795=1159%:%
       
  6233 %:%2796=1160%:%
       
  6234 %:%2797=1160%:%
       
  6235 %:%2798=1161%:%
       
  6236 %:%2799=1161%:%
       
  6237 %:%2800=1162%:%
       
  6238 %:%2801=1163%:%
       
  6239 %:%2802=1163%:%
       
  6240 %:%2803=1164%:%
       
  6241 %:%2804=1164%:%
       
  6242 %:%2805=1165%:%
       
  6243 %:%2806=1165%:%
       
  6244 %:%2807=1166%:%
       
  6245 %:%2808=1166%:%
       
  6246 %:%2809=1167%:%
       
  6247 %:%2810=1167%:%
       
  6248 %:%2811=1168%:%
       
  6249 %:%2812=1169%:%
       
  6250 %:%2813=1169%:%
       
  6251 %:%2814=1170%:%
       
  6252 %:%2815=1171%:%
       
  6253 %:%2816=1171%:%
       
  6254 %:%2817=1171%:%
       
  6255 %:%2818=1172%:%
       
  6256 %:%2819=1172%:%
       
  6257 %:%2820=1173%:%
       
  6258 %:%2821=1174%:%
       
  6259 %:%2822=1174%:%
       
  6260 %:%2823=1175%:%
       
  6261 %:%2824=1176%:%
       
  6262 %:%2825=1176%:%
       
  6263 %:%2830=1176%:%
       
  6264 %:%2833=1177%:%
       
  6265 %:%2834=1178%:%
       
  6266 %:%2835=1179%:%
       
  6267 %:%2836=1179%:%
       
  6268 %:%2839=1180%:%
       
  6269 %:%2843=1180%:%
       
  6270 %:%2844=1180%:%
       
  6271 %:%2849=1180%:%
       
  6272 %:%2852=1181%:%
       
  6273 %:%2853=1182%:%
       
  6274 %:%2854=1183%:%
       
  6275 %:%2855=1183%:%
       
  6276 %:%2858=1184%:%
       
  6277 %:%2862=1184%:%
       
  6278 %:%2863=1184%:%
       
  6279 %:%2864=1185%:%
       
  6280 %:%2865=1185%:%
       
  6281 %:%2866=1186%:%
       
  6282 %:%2867=1186%:%
       
  6283 %:%2868=1187%:%
       
  6284 %:%2869=1187%:%
       
  6285 %:%2870=1188%:%
       
  6286 %:%2871=1188%:%
       
  6287 %:%2872=1189%:%
       
  6288 %:%2873=1189%:%
       
  6289 %:%2874=1190%:%
       
  6290 %:%2875=1190%:%
       
  6291 %:%2876=1190%:%
       
  6292 %:%2877=1191%:%
       
  6293 %:%2878=1191%:%
       
  6294 %:%2879=1192%:%
       
  6295 %:%2880=1192%:%
       
  6296 %:%2881=1193%:%
       
  6297 %:%2882=1193%:%
       
  6298 %:%2883=1194%:%
       
  6299 %:%2884=1194%:%
       
  6300 %:%2885=1195%:%
       
  6301 %:%2886=1195%:%
       
  6302 %:%2887=1195%:%
       
  6303 %:%2888=1196%:%
       
  6304 %:%2889=1196%:%
       
  6305 %:%2890=1197%:%
       
  6306 %:%2891=1197%:%
       
  6307 %:%2892=1198%:%
       
  6308 %:%2893=1198%:%
       
  6309 %:%2894=1199%:%
       
  6310 %:%2895=1199%:%
       
  6311 %:%2896=1200%:%
       
  6312 %:%2897=1200%:%
       
  6313 %:%2898=1201%:%
       
  6314 %:%2904=1201%:%
       
  6315 %:%2907=1202%:%
       
  6316 %:%2908=1203%:%
       
  6317 %:%2909=1203%:%
       
  6318 %:%2912=1204%:%
       
  6319 %:%2916=1204%:%
       
  6320 %:%2917=1204%:%
       
  6321 %:%2918=1205%:%
       
  6322 %:%2919=1205%:%
       
  6323 %:%2920=1206%:%
       
  6324 %:%2921=1206%:%
       
  6325 %:%2922=1207%:%
       
  6326 %:%2923=1207%:%
       
  6327 %:%2924=1208%:%
       
  6328 %:%2925=1209%:%
       
  6329 %:%2926=1210%:%
       
  6330 %:%2927=1211%:%
       
  6331 %:%2928=1211%:%
       
  6332 %:%2929=1212%:%
       
  6333 %:%2930=1212%:%
       
  6334 %:%2931=1213%:%
       
  6335 %:%2932=1213%:%
       
  6336 %:%2933=1214%:%
       
  6337 %:%2934=1214%:%
       
  6338 %:%2935=1215%:%
       
  6339 %:%2936=1216%:%
       
  6340 %:%2937=1216%:%
       
  6341 %:%2938=1217%:%
       
  6342 %:%2939=1218%:%
       
  6343 %:%2940=1218%:%
       
  6344 %:%2941=1219%:%
       
  6345 %:%2942=1220%:%
       
  6346 %:%2943=1220%:%
       
  6347 %:%2944=1221%:%
       
  6348 %:%2945=1221%:%
       
  6349 %:%2946=1222%:%
       
  6350 %:%2947=1222%:%
       
  6351 %:%2948=1223%:%
       
  6352 %:%2949=1223%:%
       
  6353 %:%2950=1224%:%
       
  6354 %:%2951=1224%:%
       
  6355 %:%2956=1224%:%
       
  6356 %:%2959=1225%:%
       
  6357 %:%2960=1226%:%
       
  6358 %:%2961=1226%:%
       
  6359 %:%2962=1227%:%
       
  6360 %:%2965=1228%:%
       
  6361 %:%2969=1228%:%
       
  6362 %:%2970=1228%:%
       
  6363 %:%2971=1229%:%
       
  6364 %:%2972=1229%:%
       
  6365 %:%2973=1230%:%
       
  6366 %:%2974=1230%:%
       
  6367 %:%2975=1230%:%
       
  6368 %:%2976=1231%:%
       
  6369 %:%2977=1231%:%
       
  6370 %:%2978=1231%:%
       
  6371 %:%2983=1231%:%
       
  6372 %:%2986=1232%:%
       
  6373 %:%2987=1233%:%
       
  6374 %:%2988=1234%:%
       
  6375 %:%2989=1234%:%
       
  6376 %:%2992=1235%:%
       
  6377 %:%2996=1235%:%
       
  6378 %:%2997=1235%:%
       
  6379 %:%2998=1236%:%
       
  6380 %:%3004=1236%:%
       
  6381 %:%3007=1237%:%
       
  6382 %:%3008=1238%:%
       
  6383 %:%3009=1238%:%
       
  6384 %:%3010=1239%:%
       
  6385 %:%3011=1240%:%
       
  6386 %:%3012=1241%:%
       
  6387 %:%3014=1243%:%
       
  6388 %:%3015=1244%:%
       
  6389 %:%3016=1245%:%
       
  6390 %:%3017=1245%:%
       
  6391 %:%3020=1246%:%
       
  6392 %:%3024=1246%:%
       
  6393 %:%3025=1246%:%
       
  6394 %:%3026=1247%:%
       
  6395 %:%3032=1247%:%
       
  6396 %:%3035=1248%:%
       
  6397 %:%3036=1249%:%
       
  6398 %:%3037=1249%:%
       
  6399 %:%3040=1250%:%
       
  6400 %:%3044=1250%:%
       
  6401 %:%3045=1250%:%
       
  6402 %:%3046=1250%:%
       
  6403 %:%3051=1250%:%
       
  6404 %:%3054=1251%:%
       
  6405 %:%3055=1252%:%
       
  6406 %:%3056=1252%:%
       
  6407 %:%3059=1253%:%
       
  6408 %:%3063=1253%:%
       
  6409 %:%3064=1253%:%
       
  6410 %:%3065=1254%:%
       
  6411 %:%3066=1254%:%
       
  6412 %:%3071=1254%:%
       
  6413 %:%3074=1255%:%
       
  6414 %:%3075=1256%:%
       
  6415 %:%3076=1256%:%
       
  6416 %:%3079=1257%:%
       
  6417 %:%3083=1257%:%
       
  6418 %:%3084=1257%:%
       
  6419 %:%3085=1258%:%
       
  6420 %:%3086=1258%:%
       
  6421 %:%3087=1259%:%
       
  6422 %:%3088=1259%:%
       
  6423 %:%3089=1260%:%
       
  6424 %:%3090=1260%:%
       
  6425 %:%3091=1261%:%
       
  6426 %:%3092=1261%:%
       
  6427 %:%3093=1262%:%
       
  6428 %:%3094=1262%:%
       
  6429 %:%3095=1263%:%
       
  6430 %:%3096=1263%:%
       
  6431 %:%3097=1264%:%
       
  6432 %:%3098=1264%:%
       
  6433 %:%3099=1265%:%
       
  6434 %:%3100=1265%:%
       
  6435 %:%3101=1266%:%
       
  6436 %:%3102=1266%:%
       
  6437 %:%3103=1267%:%
       
  6438 %:%3104=1267%:%
       
  6439 %:%3105=1268%:%
       
  6440 %:%3106=1268%:%
       
  6441 %:%3117=1279%:%
       
  6442 %:%3118=1280%:%
       
  6443 %:%3119=1280%:%
       
  6444 %:%3120=1281%:%
       
  6445 %:%3121=1281%:%
       
  6446 %:%3122=1281%:%
       
  6447 %:%3123=1282%:%
       
  6448 %:%3124=1282%:%
       
  6449 %:%3125=1282%:%
       
  6450 %:%3126=1283%:%
       
  6451 %:%3127=1283%:%
       
  6452 %:%3128=1284%:%
       
  6453 %:%3129=1284%:%
       
  6454 %:%3130=1285%:%
       
  6455 %:%3131=1286%:%
       
  6456 %:%3132=1286%:%
       
  6457 %:%3133=1287%:%
       
  6458 %:%3134=1287%:%
       
  6459 %:%3135=1288%:%
       
  6460 %:%3136=1289%:%
       
  6461 %:%3137=1289%:%
       
  6462 %:%3138=1290%:%
       
  6463 %:%3139=1290%:%
       
  6464 %:%3140=1291%:%
       
  6465 %:%3141=1292%:%
       
  6466 %:%3142=1292%:%
       
  6467 %:%3143=1293%:%
       
  6468 %:%3144=1293%:%
       
  6469 %:%3145=1294%:%
       
  6470 %:%3146=1294%:%
       
  6471 %:%3151=1294%:%
       
  6472 %:%3154=1295%:%
       
  6473 %:%3155=1296%:%
       
  6474 %:%3156=1297%:%
       
  6475 %:%3157=1298%:%
       
  6476 %:%3158=1298%:%
       
  6477 %:%3161=1299%:%
       
  6478 %:%3165=1299%:%
       
  6479 %:%3166=1299%:%
       
  6480 %:%3167=1300%:%
       
  6481 %:%3168=1300%:%
       
  6482 %:%3169=1301%:%
       
  6483 %:%3170=1301%:%
       
  6484 %:%3171=1302%:%
       
  6485 %:%3172=1302%:%
       
  6486 %:%3173=1303%:%
       
  6487 %:%3174=1303%:%
       
  6488 %:%3179=1303%:%
       
  6489 %:%3182=1304%:%
       
  6490 %:%3183=1305%:%
       
  6491 %:%3184=1306%:%
       
  6492 %:%3185=1307%:%
       
  6493 %:%3186=1308%:%
       
  6494 %:%3187=1309%:%
       
  6495 %:%3188=1310%:%
       
  6496 %:%3189=1310%:%
       
  6497 %:%3192=1311%:%
       
  6498 %:%3196=1311%:%
       
  6499 %:%3197=1311%:%
       
  6500 %:%3198=1312%:%
       
  6501 %:%3199=1312%:%
       
  6502 %:%3200=1313%:%
       
  6503 %:%3201=1313%:%
       
  6504 %:%3202=1314%:%
       
  6505 %:%3203=1314%:%
       
  6506 %:%3204=1315%:%
       
  6507 %:%3205=1315%:%
       
  6508 %:%3206=1315%:%
       
  6509 %:%3207=1316%:%
       
  6510 %:%3208=1316%:%
       
  6511 %:%3209=1317%:%
       
  6512 %:%3210=1317%:%
       
  6513 %:%3211=1318%:%
       
  6514 %:%3212=1318%:%
       
  6515 %:%3213=1319%:%
       
  6516 %:%3214=1319%:%
       
  6517 %:%3215=1320%:%
       
  6518 %:%3216=1320%:%
       
  6519 %:%3217=1321%:%
       
  6520 %:%3218=1321%:%
       
  6521 %:%3219=1322%:%
       
  6522 %:%3220=1322%:%
       
  6523 %:%3221=1323%:%
       
  6524 %:%3222=1323%:%
       
  6525 %:%3223=1323%:%
       
  6526 %:%3224=1324%:%
       
  6527 %:%3225=1324%:%
       
  6528 %:%3226=1325%:%
       
  6529 %:%3227=1325%:%
       
  6530 %:%3228=1326%:%
       
  6531 %:%3229=1326%:%
       
  6532 %:%3230=1327%:%
       
  6533 %:%3231=1328%:%
       
  6534 %:%3232=1328%:%
       
  6535 %:%3233=1329%:%
       
  6536 %:%3234=1330%:%
       
  6537 %:%3235=1331%:%
       
  6538 %:%3236=1331%:%
       
  6539 %:%3237=1332%:%
       
  6540 %:%3238=1332%:%
       
  6541 %:%3239=1333%:%
       
  6542 %:%3240=1333%:%
       
  6543 %:%3241=1334%:%
       
  6544 %:%3242=1334%:%
       
  6545 %:%3243=1335%:%
       
  6546 %:%3244=1336%:%
       
  6547 %:%3245=1337%:%
       
  6548 %:%3246=1337%:%
       
  6549 %:%3247=1338%:%
       
  6550 %:%3248=1339%:%
       
  6551 %:%3249=1339%:%
       
  6552 %:%3250=1340%:%
       
  6553 %:%3251=1341%:%
       
  6554 %:%3252=1341%:%
       
  6555 %:%3253=1342%:%
       
  6556 %:%3254=1343%:%
       
  6557 %:%3255=1343%:%
       
  6558 %:%3256=1343%:%
       
  6559 %:%3257=1344%:%
       
  6560 %:%3258=1345%:%
       
  6561 %:%3259=1345%:%
       
  6562 %:%3260=1345%:%
       
  6563 %:%3265=1345%:%
       
  6564 %:%3268=1346%:%
       
  6565 %:%3269=1347%:%
       
  6566 %:%3270=1348%:%
       
  6567 %:%3271=1348%:%
       
  6568 %:%3274=1349%:%
       
  6569 %:%3278=1349%:%
       
  6570 %:%3279=1349%:%
       
  6571 %:%3280=1350%:%
       
  6572 %:%3281=1350%:%
       
  6573 %:%3282=1351%:%
       
  6574 %:%3283=1351%:%
       
  6575 %:%3284=1352%:%
       
  6576 %:%3285=1352%:%
       
  6577 %:%3286=1353%:%
       
  6578 %:%3287=1353%:%
       
  6579 %:%3288=1354%:%
       
  6580 %:%3289=1354%:%
       
  6581 %:%3290=1355%:%
       
  6582 %:%3291=1355%:%
       
  6583 %:%3292=1356%:%
       
  6584 %:%3293=1356%:%
       
  6585 %:%3294=1357%:%
       
  6586 %:%3295=1357%:%
       
  6587 %:%3296=1358%:%
       
  6588 %:%3297=1358%:%
       
  6589 %:%3298=1359%:%
       
  6590 %:%3299=1359%:%
       
  6591 %:%3300=1360%:%
       
  6592 %:%3301=1361%:%
       
  6593 %:%3302=1361%:%
       
  6594 %:%3303=1362%:%
       
  6595 %:%3304=1363%:%
       
  6596 %:%3305=1364%:%
       
  6597 %:%3306=1364%:%
       
  6598 %:%3311=1364%:%
       
  6599 %:%3314=1365%:%
       
  6600 %:%3315=1366%:%
       
  6601 %:%3316=1366%:%
       
  6602 %:%3319=1367%:%
       
  6603 %:%3323=1367%:%
       
  6604 %:%3324=1367%:%
       
  6605 %:%3325=1368%:%
       
  6606 %:%3326=1368%:%
       
  6607 %:%3327=1369%:%
       
  6608 %:%3328=1369%:%
       
  6609 %:%3329=1370%:%
       
  6610 %:%3335=1370%:%
       
  6611 %:%3338=1371%:%
       
  6612 %:%3339=1372%:%
       
  6613 %:%3340=1373%:%
       
  6614 %:%3341=1373%:%
       
  6615 %:%3344=1374%:%
       
  6616 %:%3348=1374%:%
       
  6617 %:%3349=1374%:%
       
  6618 %:%3350=1375%:%
       
  6619 %:%3351=1375%:%
       
  6620 %:%3352=1376%:%
       
  6621 %:%3353=1376%:%
       
  6622 %:%3354=1377%:%
       
  6623 %:%3355=1377%:%
       
  6624 %:%3356=1378%:%
       
  6625 %:%3357=1378%:%
       
  6626 %:%3358=1379%:%
       
  6627 %:%3364=1379%:%
       
  6628 %:%3367=1380%:%
       
  6629 %:%3368=1381%:%
       
  6630 %:%3369=1381%:%
       
  6631 %:%3370=1382%:%
       
  6632 %:%3373=1383%:%
       
  6633 %:%3377=1383%:%
       
  6634 %:%3378=1383%:%
       
  6635 %:%3379=1384%:%
       
  6636 %:%3380=1384%:%
       
  6637 %:%3381=1385%:%
       
  6638 %:%3387=1385%:%
       
  6639 %:%3390=1386%:%
       
  6640 %:%3391=1387%:%
       
  6641 %:%3392=1388%:%
       
  6642 %:%3393=1389%:%
       
  6643 %:%3394=1389%:%
       
  6644 %:%3395=1390%:%
       
  6645 %:%3398=1391%:%
       
  6646 %:%3402=1391%:%
       
  6647 %:%3403=1391%:%
       
  6648 %:%3404=1391%:%
       
  6649 %:%3409=1391%:%
       
  6650 %:%3412=1392%:%
       
  6651 %:%3413=1393%:%
       
  6652 %:%3414=1393%:%
       
  6653 %:%3417=1394%:%
       
  6654 %:%3421=1394%:%
       
  6655 %:%3422=1394%:%
       
  6656 %:%3423=1395%:%
       
  6657 %:%3424=1396%:%
       
  6658 %:%3425=1396%:%
       
  6659 %:%3426=1396%:%
       
  6660 %:%3427=1397%:%
       
  6661 %:%3428=1397%:%
       
  6662 %:%3429=1398%:%
       
  6663 %:%3430=1399%:%
       
  6664 %:%3431=1399%:%
       
  6665 %:%3432=1400%:%
       
  6666 %:%3433=1400%:%
       
  6667 %:%3434=1401%:%
       
  6668 %:%3435=1402%:%
       
  6669 %:%3436=1402%:%
       
  6670 %:%3437=1402%:%
       
  6671 %:%3438=1403%:%
       
  6672 %:%3439=1403%:%
       
  6673 %:%3440=1404%:%
       
  6674 %:%3441=1405%:%
       
  6675 %:%3442=1405%:%
       
  6676 %:%3443=1406%:%
       
  6677 %:%3444=1407%:%
       
  6678 %:%3445=1407%:%
       
  6679 %:%3446=1407%:%
       
  6680 %:%3451=1407%:%
       
  6681 %:%3454=1408%:%
       
  6682 %:%3455=1409%:%
       
  6683 %:%3456=1410%:%
       
  6684 %:%3457=1411%:%
       
  6685 %:%3458=1411%:%
       
  6686 %:%3459=1412%:%
       
  6687 %:%3462=1413%:%
       
  6688 %:%3466=1413%:%
       
  6689 %:%3467=1413%:%
       
  6690 %:%3468=1413%:%
       
  6691 %:%3473=1413%:%
       
  6692 %:%3476=1414%:%
       
  6693 %:%3477=1415%:%
       
  6694 %:%3478=1415%:%
       
  6695 %:%3481=1416%:%
       
  6696 %:%3485=1416%:%
       
  6697 %:%3486=1416%:%
       
  6698 %:%3487=1417%:%
       
  6699 %:%3488=1417%:%
       
  6700 %:%3489=1418%:%
       
  6701 %:%3490=1418%:%
       
  6702 %:%3491=1419%:%
       
  6703 %:%3492=1419%:%
       
  6704 %:%3493=1420%:%
       
  6705 %:%3494=1420%:%
       
  6706 %:%3495=1421%:%
       
  6707 %:%3496=1421%:%
       
  6708 %:%3497=1422%:%
       
  6709 %:%3498=1422%:%
       
  6710 %:%3499=1423%:%
       
  6711 %:%3500=1423%:%
       
  6712 %:%3501=1424%:%
       
  6713 %:%3502=1424%:%
       
  6714 %:%3503=1425%:%
       
  6715 %:%3504=1425%:%
       
  6716 %:%3505=1426%:%
       
  6717 %:%3506=1426%:%
       
  6718 %:%3507=1427%:%
       
  6719 %:%3508=1427%:%
       
  6720 %:%3509=1428%:%
       
  6721 %:%3510=1428%:%
       
  6722 %:%3511=1429%:%
       
  6723 %:%3512=1429%:%
       
  6724 %:%3513=1430%:%
       
  6725 %:%3514=1430%:%
       
  6726 %:%3515=1431%:%
       
  6727 %:%3516=1431%:%
       
  6728 %:%3517=1432%:%
       
  6729 %:%3518=1432%:%
       
  6730 %:%3519=1433%:%
       
  6731 %:%3520=1434%:%
       
  6732 %:%3521=1434%:%
       
  6733 %:%3522=1435%:%
       
  6734 %:%3523=1436%:%
       
  6735 %:%3524=1436%:%
       
  6736 %:%3529=1436%:%
       
  6737 %:%3532=1437%:%
       
  6738 %:%3533=1438%:%
       
  6739 %:%3534=1439%:%
       
  6740 %:%3535=1440%:%
       
  6741 %:%3536=1441%:%
       
  6742 %:%3537=1441%:%
       
  6743 %:%3538=1442%:%
       
  6744 %:%3541=1443%:%
       
  6745 %:%3545=1443%:%
       
  6746 %:%3546=1443%:%
       
  6747 %:%3547=1444%:%
       
  6748 %:%3548=1445%:%
       
  6749 %:%3549=1445%:%
       
  6750 %:%3550=1446%:%
       
  6751 %:%3551=1446%:%
       
  6752 %:%3556=1446%:%
       
  6753 %:%3559=1447%:%
       
  6754 %:%3560=1448%:%
       
  6755 %:%3561=1448%:%
       
  6756 %:%3562=1449%:%
       
  6757 %:%3565=1450%:%
       
  6758 %:%3566=1451%:%
       
  6759 %:%3570=1451%:%
       
  6760 %:%3571=1451%:%
       
  6761 %:%3576=1451%:%
       
  6762 %:%3579=1452%:%
       
  6763 %:%3580=1453%:%
       
  6764 %:%3581=1454%:%
       
  6765 %:%3582=1454%:%
       
  6766 %:%3583=1455%:%
       
  6767 %:%3586=1456%:%
       
  6768 %:%3590=1456%:%
       
  6769 %:%3591=1456%:%
       
  6770 %:%3592=1457%:%
       
  6771 %:%3593=1457%:%
       
  6772 %:%3594=1458%:%
       
  6773 %:%3595=1458%:%
       
  6774 %:%3596=1459%:%
       
  6775 %:%3597=1459%:%
       
  6776 %:%3598=1460%:%
       
  6777 %:%3599=1461%:%
       
  6778 %:%3600=1461%:%
       
  6779 %:%3601=1462%:%
       
  6780 %:%3602=1463%:%
       
  6781 %:%3603=1463%:%
       
  6782 %:%3604=1464%:%
       
  6783 %:%3605=1465%:%
       
  6784 %:%3606=1465%:%
       
  6785 %:%3607=1465%:%
       
  6786 %:%3612=1465%:%
       
  6787 %:%3615=1466%:%
       
  6788 %:%3616=1467%:%
       
  6789 %:%3617=1468%:%
       
  6790 %:%3618=1468%:%
       
  6791 %:%3619=1469%:%
       
  6792 %:%3622=1470%:%
       
  6793 %:%3626=1470%:%
       
  6794 %:%3627=1470%:%
       
  6795 %:%3628=1471%:%
       
  6796 %:%3629=1472%:%
       
  6797 %:%3630=1472%:%
       
  6798 %:%3631=1472%:%
       
  6799 %:%3632=1473%:%
       
  6800 %:%3633=1473%:%
       
  6801 %:%3634=1474%:%
       
  6802 %:%3635=1474%:%
       
  6803 %:%3636=1475%:%
       
  6804 %:%3637=1476%:%
       
  6805 %:%3638=1477%:%
       
  6806 %:%3639=1477%:%
       
  6807 %:%3640=1477%:%
       
  6808 %:%3641=1478%:%
       
  6809 %:%3642=1479%:%
       
  6810 %:%3643=1479%:%
       
  6811 %:%3644=1480%:%
       
  6812 %:%3645=1480%:%
       
  6813 %:%3646=1481%:%
       
  6814 %:%3647=1482%:%
       
  6815 %:%3648=1483%:%
       
  6816 %:%3649=1483%:%
       
  6817 %:%3650=1484%:%
       
  6818 %:%3651=1484%:%
       
  6819 %:%3652=1485%:%
       
  6820 %:%3653=1485%:%
       
  6821 %:%3654=1486%:%
       
  6822 %:%3655=1487%:%
       
  6823 %:%3656=1487%:%
       
  6824 %:%3657=1488%:%
       
  6825 %:%3658=1489%:%
       
  6826 %:%3659=1489%:%
       
  6827 %:%3664=1489%:%
       
  6828 %:%3667=1490%:%
       
  6829 %:%3668=1491%:%
       
  6830 %:%3669=1492%:%
       
  6831 %:%3670=1493%:%
       
  6832 %:%3671=1493%:%
       
  6833 %:%3674=1494%:%
       
  6834 %:%3675=1495%:%
       
  6835 %:%3679=1495%:%
       
  6836 %:%3680=1495%:%
       
  6837 %:%3681=1496%:%
       
  6838 %:%3682=1496%:%
       
  6839 %:%3683=1497%:%
       
  6840 %:%3684=1497%:%
       
  6841 %:%3685=1498%:%
       
  6842 %:%3686=1498%:%
       
  6843 %:%3687=1499%:%
       
  6844 %:%3688=1499%:%
       
  6845 %:%3689=1499%:%
       
  6846 %:%3690=1500%:%
       
  6847 %:%3691=1500%:%
       
  6848 %:%3692=1501%:%
       
  6849 %:%3693=1501%:%
       
  6850 %:%3694=1502%:%
       
  6851 %:%3695=1502%:%
       
  6852 %:%3696=1503%:%
       
  6853 %:%3697=1503%:%
       
  6854 %:%3698=1504%:%
       
  6855 %:%3699=1504%:%
       
  6856 %:%3700=1505%:%
       
  6857 %:%3701=1505%:%
       
  6858 %:%3702=1505%:%
       
  6859 %:%3703=1506%:%
       
  6860 %:%3704=1506%:%
       
  6861 %:%3705=1507%:%
       
  6862 %:%3706=1507%:%
       
  6863 %:%3707=1507%:%
       
  6864 %:%3708=1508%:%
       
  6865 %:%3709=1508%:%
       
  6866 %:%3710=1509%:%
       
  6867 %:%3711=1509%:%
       
  6868 %:%3712=1510%:%
       
  6869 %:%3713=1510%:%
       
  6870 %:%3714=1511%:%
       
  6871 %:%3715=1512%:%
       
  6872 %:%3716=1512%:%
       
  6873 %:%3717=1512%:%
       
  6874 %:%3718=1513%:%
       
  6875 %:%3719=1514%:%
       
  6876 %:%3720=1514%:%
       
  6877 %:%3721=1515%:%
       
  6878 %:%3722=1515%:%
       
  6879 %:%3723=1516%:%
       
  6880 %:%3724=1517%:%
       
  6881 %:%3725=1517%:%
       
  6882 %:%3726=1518%:%
       
  6883 %:%3727=1519%:%
       
  6884 %:%3728=1519%:%
       
  6885 %:%3729=1519%:%
       
  6886 %:%3730=1520%:%
       
  6887 %:%3731=1521%:%
       
  6888 %:%3732=1521%:%
       
  6889 %:%3733=1522%:%
       
  6890 %:%3734=1523%:%
       
  6891 %:%3735=1523%:%
       
  6892 %:%3736=1523%:%
       
  6893 %:%3737=1524%:%
       
  6894 %:%3738=1525%:%
       
  6895 %:%3739=1525%:%
       
  6896 %:%3740=1526%:%
       
  6897 %:%3741=1527%:%
       
  6898 %:%3742=1527%:%
       
  6899 %:%3747=1527%:%
       
  6900 %:%3750=1528%:%
       
  6901 %:%3751=1529%:%
       
  6902 %:%3752=1530%:%
       
  6903 %:%3753=1531%:%
       
  6904 %:%3754=1531%:%
       
  6905 %:%3757=1532%:%
       
  6906 %:%3761=1532%:%
       
  6907 %:%3762=1532%:%
       
  6908 %:%3763=1533%:%
       
  6909 %:%3764=1533%:%
       
  6910 %:%3765=1534%:%
       
  6911 %:%3766=1534%:%
       
  6912 %:%3767=1535%:%
       
  6913 %:%3768=1535%:%
       
  6914 %:%3769=1536%:%
       
  6915 %:%3770=1536%:%
       
  6916 %:%3771=1537%:%
       
  6917 %:%3772=1537%:%
       
  6918 %:%3773=1538%:%
       
  6919 %:%3774=1538%:%
       
  6920 %:%3775=1539%:%
       
  6921 %:%3776=1539%:%
       
  6922 %:%3777=1540%:%
       
  6923 %:%3778=1540%:%
       
  6924 %:%3779=1540%:%
       
  6925 %:%3784=1540%:%
       
  6926 %:%3787=1541%:%
       
  6927 %:%3788=1542%:%
       
  6928 %:%3789=1543%:%
       
  6929 %:%3790=1543%:%
       
  6930 %:%3791=1544%:%
       
  6931 %:%3792=1544%:%
       
  6932 %:%3795=1545%:%
       
  6933 %:%3799=1545%:%
       
  6934 %:%3800=1545%:%
       
  6935 %:%3805=1545%:%
       
  6936 %:%3808=1546%:%
       
  6937 %:%3809=1547%:%
       
  6938 %:%3810=1547%:%
       
  6939 %:%3813=1548%:%
       
  6940 %:%3817=1548%:%
       
  6941 %:%3818=1548%:%
       
  6942 %:%3819=1548%:%
       
  6943 %:%3824=1548%:%
       
  6944 %:%3827=1549%:%
       
  6945 %:%3828=1550%:%
       
  6946 %:%3829=1550%:%
       
  6947 %:%3832=1551%:%
       
  6948 %:%3836=1551%:%
       
  6949 %:%3837=1551%:%
       
  6950 %:%3842=1551%:%
       
  6951 %:%3845=1552%:%
       
  6952 %:%3846=1553%:%
       
  6953 %:%3847=1553%:%
       
  6954 %:%3850=1554%:%
       
  6955 %:%3854=1554%:%
       
  6956 %:%3855=1554%:%
       
  6957 %:%3860=1554%:%
       
  6958 %:%3863=1555%:%
       
  6959 %:%3864=1556%:%
       
  6960 %:%3865=1556%:%
       
  6961 %:%3868=1557%:%
       
  6962 %:%3872=1557%:%
       
  6963 %:%3873=1557%:%
       
  6964 %:%3874=1558%:%
       
  6965 %:%3875=1558%:%
       
  6966 %:%3876=1559%:%
       
  6967 %:%3877=1559%:%
       
  6968 %:%3882=1559%:%
       
  6969 %:%3885=1560%:%
       
  6970 %:%3886=1561%:%
       
  6971 %:%3887=1561%:%
       
  6972 %:%3890=1562%:%
       
  6973 %:%3894=1562%:%
       
  6974 %:%3895=1562%:%
       
  6975 %:%3896=1563%:%
       
  6976 %:%3897=1563%:%
       
  6977 %:%3898=1564%:%
       
  6978 %:%3899=1565%:%
       
  6979 %:%3900=1565%:%
       
  6980 %:%3901=1566%:%
       
  6981 %:%3902=1567%:%
       
  6982 %:%3903=1567%:%
       
  6983 %:%3904=1568%:%
       
  6984 %:%3905=1569%:%
       
  6985 %:%3906=1569%:%
       
  6986 %:%3907=1570%:%
       
  6987 %:%3908=1571%:%
       
  6988 %:%3909=1571%:%
       
  6989 %:%3910=1571%:%
       
  6990 %:%3911=1572%:%
       
  6991 %:%3912=1573%:%
       
  6992 %:%3913=1573%:%
       
  6993 %:%3914=1573%:%
       
  6994 %:%3915=1574%:%
       
  6995 %:%3916=1575%:%
       
  6996 %:%3917=1575%:%
       
  6997 %:%3918=1575%:%
       
  6998 %:%3919=1576%:%
       
  6999 %:%3920=1577%:%
       
  7000 %:%3921=1577%:%
       
  7001 %:%3922=1578%:%
       
  7002 %:%3923=1579%:%
       
  7003 %:%3924=1579%:%
       
  7004 %:%3925=1579%:%
       
  7005 %:%3926=1580%:%
       
  7006 %:%3927=1581%:%
       
  7007 %:%3928=1581%:%
       
  7008 %:%3929=1582%:%
       
  7009 %:%3930=1583%:%
       
  7010 %:%3931=1583%:%
       
  7011 %:%3932=1584%:%
       
  7012 %:%3933=1585%:%
       
  7013 %:%3934=1585%:%
       
  7014 %:%3935=1586%:%
       
  7015 %:%3936=1587%:%
       
  7016 %:%3937=1587%:%
       
  7017 %:%3938=1588%:%
       
  7018 %:%3939=1589%:%
       
  7019 %:%3940=1589%:%
       
  7020 %:%3941=1589%:%
       
  7021 %:%3946=1589%:%
       
  7022 %:%3949=1590%:%
       
  7023 %:%3950=1591%:%
       
  7024 %:%3951=1592%:%
       
  7025 %:%3952=1593%:%
       
  7026 %:%3953=1593%:%
       
  7027 %:%3956=1594%:%
       
  7028 %:%3960=1594%:%
       
  7029 %:%3961=1594%:%
       
  7030 %:%3962=1595%:%
       
  7031 %:%3963=1595%:%
       
  7032 %:%3964=1596%:%
       
  7033 %:%3965=1596%:%
       
  7034 %:%3970=1596%:%
       
  7035 %:%3973=1597%:%
       
  7036 %:%3974=1598%:%
       
  7037 %:%3975=1598%:%
       
  7038 %:%3978=1599%:%
       
  7039 %:%3982=1599%:%
       
  7040 %:%3983=1599%:%
       
  7041 %:%3984=1600%:%
       
  7042 %:%3985=1600%:%
       
  7043 %:%3986=1601%:%
       
  7044 %:%3987=1601%:%
       
  7045 %:%3992=1601%:%
       
  7046 %:%3995=1602%:%
       
  7047 %:%3996=1603%:%
       
  7048 %:%3997=1604%:%
       
  7049 %:%3998=1605%:%
       
  7050 %:%3999=1605%:%
       
  7051 %:%4002=1606%:%
       
  7052 %:%4006=1606%:%
       
  7053 %:%4007=1606%:%
       
  7054 %:%4008=1607%:%
       
  7055 %:%4009=1607%:%
       
  7056 %:%4010=1608%:%
       
  7057 %:%4011=1608%:%
       
  7058 %:%4012=1609%:%
       
  7059 %:%4013=1609%:%
       
  7060 %:%4014=1610%:%
       
  7061 %:%4015=1610%:%
       
  7062 %:%4016=1611%:%
       
  7063 %:%4017=1612%:%
       
  7064 %:%4018=1612%:%
       
  7065 %:%4023=1612%:%
       
  7066 %:%4026=1613%:%
       
  7067 %:%4027=1614%:%
       
  7068 %:%4028=1614%:%
       
  7069 %:%4029=1615%:%
       
  7070 %:%4031=1617%:%
       
  7071 %:%4034=1618%:%
       
  7072 %:%4038=1618%:%
       
  7073 %:%4039=1618%:%
       
  7074 %:%4040=1619%:%
       
  7075 %:%4041=1620%:%
       
  7076 %:%4042=1620%:%
       
  7077 %:%4043=1620%:%
       
  7078 %:%4048=1620%:%
       
  7079 %:%4051=1621%:%
       
  7080 %:%4052=1622%:%
       
  7081 %:%4053=1622%:%
       
  7082 %:%4056=1623%:%
       
  7083 %:%4060=1623%:%
       
  7084 %:%4061=1623%:%
       
  7085 %:%4062=1624%:%
       
  7086 %:%4063=1625%:%
       
  7087 %:%4064=1625%:%
       
  7088 %:%4065=1626%:%
       
  7089 %:%4066=1626%:%
       
  7090 %:%4067=1627%:%
       
  7091 %:%4068=1628%:%
       
  7092 %:%4069=1628%:%
       
  7093 %:%4070=1629%:%
       
  7094 %:%4071=1629%:%
       
  7095 %:%4072=1630%:%
       
  7096 %:%4073=1630%:%
       
  7097 %:%4074=1631%:%
       
  7098 %:%4075=1631%:%
       
  7099 %:%4076=1632%:%
       
  7100 %:%4077=1632%:%
       
  7101 %:%4078=1633%:%
       
  7102 %:%4079=1633%:%
       
  7103 %:%4080=1634%:%
       
  7104 %:%4081=1634%:%
       
  7105 %:%4082=1635%:%
       
  7106 %:%4083=1635%:%
       
  7107 %:%4084=1636%:%
       
  7108 %:%4085=1636%:%
       
  7109 %:%4086=1636%:%
       
  7110 %:%4087=1637%:%
       
  7111 %:%4088=1637%:%
       
  7112 %:%4089=1638%:%
       
  7113 %:%4090=1638%:%
       
  7114 %:%4091=1639%:%
       
  7115 %:%4092=1639%:%
       
  7116 %:%4093=1640%:%
       
  7117 %:%4094=1640%:%
       
  7118 %:%4095=1641%:%
       
  7119 %:%4096=1641%:%
       
  7120 %:%4097=1641%:%
       
  7121 %:%4098=1642%:%
       
  7122 %:%4099=1642%:%
       
  7123 %:%4100=1643%:%
       
  7124 %:%4101=1644%:%
       
  7125 %:%4102=1644%:%
       
  7126 %:%4103=1644%:%
       
  7127 %:%4104=1645%:%
       
  7128 %:%4105=1645%:%
       
  7129 %:%4106=1646%:%
       
  7130 %:%4107=1646%:%
       
  7131 %:%4108=1647%:%
       
  7132 %:%4109=1647%:%
       
  7133 %:%4110=1648%:%
       
  7134 %:%4111=1648%:%
       
  7135 %:%4112=1649%:%
       
  7136 %:%4113=1649%:%
       
  7137 %:%4114=1649%:%
       
  7138 %:%4115=1650%:%
       
  7139 %:%4116=1650%:%
       
  7140 %:%4117=1650%:%
       
  7141 %:%4118=1651%:%
       
  7142 %:%4119=1651%:%
       
  7143 %:%4120=1651%:%
       
  7144 %:%4121=1652%:%
       
  7145 %:%4122=1652%:%
       
  7146 %:%4123=1653%:%
       
  7147 %:%4124=1653%:%
       
  7148 %:%4125=1654%:%
       
  7149 %:%4126=1654%:%
       
  7150 %:%4127=1655%:%
       
  7151 %:%4128=1655%:%
       
  7152 %:%4129=1656%:%
       
  7153 %:%4130=1656%:%
       
  7154 %:%4131=1656%:%
       
  7155 %:%4132=1657%:%
       
  7156 %:%4133=1657%:%
       
  7157 %:%4134=1658%:%
       
  7158 %:%4135=1658%:%
       
  7159 %:%4136=1659%:%
       
  7160 %:%4137=1659%:%
       
  7161 %:%4138=1660%:%
       
  7162 %:%4139=1660%:%
       
  7163 %:%4140=1661%:%
       
  7164 %:%4141=1662%:%
       
  7165 %:%4142=1662%:%
       
  7166 %:%4143=1663%:%
       
  7167 %:%4144=1664%:%
       
  7168 %:%4145=1664%:%
       
  7169 %:%4146=1664%:%
       
  7170 %:%4147=1665%:%
       
  7171 %:%4148=1666%:%
       
  7172 %:%4149=1666%:%
       
  7173 %:%4150=1666%:%
       
  7174 %:%4151=1667%:%
       
  7175 %:%4152=1668%:%
       
  7176 %:%4153=1668%:%
       
  7177 %:%4154=1668%:%
       
  7178 %:%4155=1669%:%
       
  7179 %:%4156=1670%:%
       
  7180 %:%4157=1670%:%
       
  7181 %:%4158=1671%:%
       
  7182 %:%4159=1672%:%
       
  7183 %:%4160=1672%:%
       
  7184 %:%4161=1673%:%
       
  7185 %:%4162=1674%:%
       
  7186 %:%4163=1674%:%
       
  7187 %:%4164=1675%:%
       
  7188 %:%4165=1676%:%
       
  7189 %:%4166=1676%:%
       
  7190 %:%4167=1677%:%
       
  7191 %:%4168=1678%:%
       
  7192 %:%4169=1679%:%
       
  7193 %:%4170=1679%:%
       
  7194 %:%4171=1679%:%
       
  7195 %:%4176=1679%:%
       
  7196 %:%4179=1680%:%
       
  7197 %:%4180=1681%:%
       
  7198 %:%4181=1682%:%
       
  7199 %:%4182=1683%:%
       
  7200 %:%4183=1683%:%
       
  7201 %:%4186=1684%:%
       
  7202 %:%4190=1684%:%
       
  7203 %:%4191=1684%:%
       
  7204 %:%4192=1685%:%
       
  7205 %:%4193=1685%:%
       
  7206 %:%4194=1686%:%
       
  7207 %:%4195=1686%:%
       
  7208 %:%4200=1686%:%
       
  7209 %:%4203=1687%:%
       
  7210 %:%4204=1688%:%
       
  7211 %:%4205=1689%:%
       
  7212 %:%4206=1690%:%
       
  7213 %:%4207=1691%:%
       
  7214 %:%4208=1691%:%
       
  7215 %:%4211=1692%:%
       
  7216 %:%4215=1692%:%
       
  7217 %:%4216=1692%:%
       
  7218 %:%4217=1693%:%
       
  7219 %:%4218=1694%:%
       
  7220 %:%4219=1694%:%
       
  7221 %:%4220=1695%:%
       
  7222 %:%4221=1695%:%
       
  7223 %:%4222=1696%:%
       
  7224 %:%4223=1696%:%
       
  7225 %:%4224=1697%:%
       
  7226 %:%4225=1697%:%
       
  7227 %:%4230=1697%:%
       
  7228 %:%4233=1698%:%
       
  7229 %:%4234=1699%:%
       
  7230 %:%4235=1700%:%
       
  7231 %:%4236=1701%:%
       
  7232 %:%4237=1701%:%
       
  7233 %:%4238=1702%:%
       
  7234 %:%4239=1703%:%
       
  7235 %:%4240=1703%:%
       
  7236 %:%4243=1704%:%
       
  7237 %:%4247=1704%:%
       
  7238 %:%4248=1704%:%
       
  7239 %:%4249=1704%:%
       
  7240 %:%4254=1704%:%
       
  7241 %:%4257=1705%:%
       
  7242 %:%4258=1706%:%
       
  7243 %:%4259=1706%:%
       
  7244 %:%4262=1707%:%
       
  7245 %:%4266=1707%:%
       
  7246 %:%4267=1707%:%
       
  7247 %:%4272=1707%:%
       
  7248 %:%4275=1708%:%
       
  7249 %:%4276=1709%:%
       
  7250 %:%4277=1710%:%
       
  7251 %:%4278=1710%:%
       
  7252 %:%4281=1711%:%
       
  7253 %:%4285=1711%:%
       
  7254 %:%4286=1711%:%
       
  7255 %:%4287=1711%:%
       
  7256 %:%4292=1711%:%
       
  7257 %:%4295=1712%:%
       
  7258 %:%4296=1713%:%
       
  7259 %:%4297=1714%:%
       
  7260 %:%4298=1714%:%
       
  7261 %:%4299=1715%:%
       
  7262 %:%4302=1716%:%
       
  7263 %:%4307=1717%:%