@@ -291,6 +291,54 @@ ASSUME(ReplaceFirstSubSeq("\r", "%%", "Properly escape the %% char") = "Properly
291
291
ASSUME ReplaceFirstSubSeq ( "\\ \\ " , "\\ " , "Properly escape the \\ quotes" ) = "Properly escape the \\ \\ quotes"
292
292
ASSUME ReplaceFirstSubSeq ( "replaces" , "%pattern%" , "This %pattern% the pattern" ) = "This replaces the pattern"
293
293
294
+ ReplaceFirstSubSeqPure ( r , s , t ) ==
295
+ (* *************************************************************************)
296
+ (* The sequence t with its subsequence s replaced by the sequence r *)
297
+ (************************************************************************* *)
298
+ IF s \in SubSeqs ( t )
299
+ THEN ReplaceSubSeqAt ( IndexFirstSubSeq ( s , t ) , r , s , t )
300
+ ELSE t
301
+
302
+ ASSUME ReplaceFirstSubSeqPure ( << >> , << >> , << >> ) = << >>
303
+ ASSUME ReplaceFirstSubSeqPure ( << 4 >> , << >> , << >> ) = << 4 >>
304
+ ASSUME ReplaceFirstSubSeqPure ( << 4 >> , << 4 >> , << >> ) = << >>
305
+ ASSUME ReplaceFirstSubSeqPure ( << >> , << >> , << 3 , 2 , 3 , 4 >> ) = << 3 , 2 , 3 , 4 >>
306
+ ASSUME ReplaceFirstSubSeqPure ( << 4 , 4 >> , << 3 , 2 , 3 , 4 >> , << 3 , 2 , 3 , 4 >> ) = << 4 , 4 >>
307
+ ASSUME ReplaceFirstSubSeqPure ( << 4 , 4 >> , << >> , << 3 , 2 , 3 , 4 >> ) = << 4 , 4 , 3 , 2 , 3 , 4 >>
308
+
309
+ ASSUME ReplaceFirstSubSeqPure ( << 4 , 4 >> , << 4 >> , << 3 , 2 , 3 , 4 >> ) = << 3 , 2 , 3 , 4 , 4 >>
310
+ ASSUME ReplaceFirstSubSeqPure ( << >> , << 4 >> , << 3 , 2 , 3 , 4 >> ) = << 3 , 2 , 3 >>
311
+ ASSUME ReplaceFirstSubSeqPure ( << >> , << 4 >> , << 3 , 2 , 3 , 4 , 4 >> ) = << 3 , 2 , 3 , 4 >>
312
+ ASSUME ReplaceFirstSubSeqPure ( << 4 , 4 >> , << 3 >> , << 3 , 2 , 3 , 4 >> ) = << 4 , 4 , 2 , 3 , 4 >>
313
+ ASSUME ReplaceFirstSubSeqPure ( << 4 >> , << 1 , 2 >> , << 1 , 2 , 1 , 2 >> ) = << 4 , 1 , 2 >>
314
+ ASSUME ReplaceFirstSubSeqPure ( << 4 , 4 >> , << 1 , 2 >> , << 1 , 2 , 1 , 2 >> ) = << 4 , 4 , 1 , 2 >>
315
+ ASSUME ReplaceFirstSubSeqPure ( << 4 , 4 , 4 >> , << 1 , 2 >> , << 1 , 2 , 1 , 2 >> ) = << 4 , 4 , 4 , 1 , 2 >>
316
+
317
+ ASSUME ReplaceFirstSubSeqPure ( << 1 , 2 >> , << 1 , 2 >> , << 1 , 2 , 2 , 1 >> ) = << 1 , 2 , 2 , 1 >>
318
+ ASSUME ReplaceFirstSubSeqPure ( << 2 , 1 >> , << 1 , 2 >> , << 1 , 2 , 2 , 1 >> ) = << 2 , 1 , 2 , 1 >>
319
+
320
+ ASSUME \A seq \in ( BoundedSeq ( 1 .. 5 , 5 ) \ { << >> } ) :
321
+ /\ ReplaceFirstSubSeqPure ( << 6 >> , << >> , seq ) = << 6 >> \o seq
322
+ /\ ReplaceFirstSubSeqPure ( << 6 >> , << Head ( seq ) >> , seq ) = << 6 >> \o Tail ( seq )
323
+
324
+ ASSUME ReplaceFirstSubSeqPure ( "" , "" , "" ) = ""
325
+ ASSUME ReplaceFirstSubSeqPure ( "a" , "" , "" ) = "a"
326
+ ASSUME ReplaceFirstSubSeqPure ( "a" , "b" , "" ) = ""
327
+ ASSUME ReplaceFirstSubSeqPure ( "a" , "d" , "abc" ) = "abc"
328
+ ASSUME ReplaceFirstSubSeqPure ( "ddd" , "ab" , "abab" ) = "dddab"
329
+ ASSUME ReplaceFirstSubSeqPure ( "ddd" , "aa" , "aaa" ) = "ddda"
330
+ ASSUME ReplaceFirstSubSeqPure ( "ddd" , "abab" , "abab" ) = "ddd"
331
+
332
+ ASSUME ( ReplaceFirstSubSeqPure ( "\\ " , "%%" , "Properly escape the %% char" ) = "Properly escape the \\ char" )
333
+ ASSUME ( ReplaceFirstSubSeqPure ( "\" " , "%%" , "Properly escape the %% char" ) = "Properly escape the \" char" )
334
+ ASSUME ( ReplaceFirstSubSeqPure ( "\n " , "%%" , "Properly escape the %% char" ) = "Properly escape the \n char" )
335
+ ASSUME ( ReplaceFirstSubSeqPure ( "\t " , "%%" , "Properly escape the %% char" ) = "Properly escape the \t char" )
336
+ ASSUME ( ReplaceFirstSubSeqPure ( "\f " , "%%" , "Properly escape the %% char" ) = "Properly escape the \f char" )
337
+ ASSUME ( ReplaceFirstSubSeqPure ( "\r " , "%%" , "Properly escape the %% char" ) = "Properly escape the \r char" )
338
+
339
+ ASSUME ReplaceFirstSubSeqPure ( "\\ \\ " , "\\ " , "Properly escape the \\ quotes" ) = "Properly escape the \\ \\ quotes"
340
+ ASSUME ReplaceFirstSubSeqPure ( "replaces" , "%pattern%" , "This %pattern% the pattern" ) = "This replaces the pattern"
341
+
294
342
-----------------------------------------------------------------------------
295
343
296
344
ASSUME AssertEq ( ReplaceAllSubSeqs ( << 4 >> , << 1 >> , << >> ) , << >> )
0 commit comments