seqRules.key

Sorts

alpha

\generic alpha, beta;defined in: seqRules.key Line: 12 Offset :4

beta

\generic alpha, beta;defined in: seqRules.key Line: 12 Offset :4

Taclets

Enabled under choices: sequences:on

defOfEmpty

defOfEmpty { \schemaVar \term any te ; \schemaVar \variables int uSub ; \find ( seqEmpty ) \varcond \replacewith ( seqDef { uSub ; } ( 0 , 0 , te )) };defined in: seqRules.key Line: 26 Offset :4

defOfSeqSingleton

defOfSeqSingleton { \schemaVar \term any x ; \schemaVar \variables int uSub ; \find ( seqSingleton ( x )) \varcond \replacewith ( seqDef { uSub ; } ( 0 , 1 , x )) };defined in: seqRules.key Line: 36 Offset :4

defOfSeqConcat

defOfSeqConcat { \schemaVar \term Seq seq1 , seq2 ; \schemaVar \variables int uSub ; \find ( seqConcat ( seq1 , seq2 )) \varcond \replacewith ( seqDef { uSub ; } ( 0 , seqLen ( seq1 )+ seqLen ( seq2 ), \if ( uSub < seqLen ( seq1 ))\then ( any :: seqGet ( seq1 , uSub ))\else ( any :: seqGet ( seq2 , uSub - seqLen ( seq1 ))))) };defined in: seqRules.key Line: 46 Offset :4

defOfSeqSub

defOfSeqSub { \schemaVar \term Seq seq ; \schemaVar \term int from , to ; \schemaVar \variables int uSub ; \find ( seqSub ( seq , from , to )) \varcond \replacewith ( seqDef { uSub ; } ( from , to , any :: seqGet ( seq , uSub ))) };defined in: seqRules.key Line: 70 Offset :4

defOfSeqReverse

defOfSeqReverse { \schemaVar \term Seq seq ; \schemaVar \variables int uSub ; \find ( seqReverse ( seq )) \varcond \replacewith ( seqDef { uSub ; } ( 0 , seqLen ( seq ), any :: seqGet ( seq , seqLen ( seq )- uSub - 1 ))) };defined in: seqRules.key Line: 83 Offset :4

defOfSeqUpd

defOfSeqUpd { \schemaVar \term Seq seq ; \schemaVar \term int idx ; \schemaVar \term any value ; \schemaVar \variables int uSub ; \find ( seqUpd ( seq , idx , value )) \varcond \replacewith ( seqDef { uSub ; } ( 0 , seqLen ( seq ), \if ( uSub = idx )\then ( value )\else ( any :: seqGet ( seq , uSub )))) };defined in: seqRules.key Line: 94 Offset :4

seqIndexOf

seqIndexOf { \schemaVar \term Seq s ; \schemaVar \term any t ; \schemaVar \skolemTerm int jsk ; \schemaVar \variables int n , m ; \find ( seqIndexOf ( s , t )) \varcond \add ( ( \exists n ; ( 0 <= n & n < seqLen ( s )& any :: seqGet ( s , n )= t ))-> ( 0 <= seqIndexOf ( s , t )& seqIndexOf ( s , t )< seqLen ( s )& any :: seqGet ( s , seqIndexOf ( s , t ))= t & \forall m ; ( ( 0 <= m & m < seqIndexOf ( s , t ))-> any :: seqGet ( s , m )!= t ))==> ) };defined in: seqRules.key Line: 114 Offset :4

seqSelfDefinition

\lemma seqSelfDefinition { \schemaVar \term Seq seq ; \schemaVar \variables Seq s ; \schemaVar \variables int u ; \find ( seq ) \add ( \forall s ; ( s = seqDef { u ; } ( 0 , seqLen ( s ), any :: seqGet ( s , u )))==> ) };defined in: seqRules.key Line: 146 Offset :4

seqOutsideValue

\lemma seqOutsideValue { \schemaVar \variables Seq s ; \schemaVar \variables int iv ; \find ( seqGetOutside ) \add ( \forall s ; ( \forall iv ; ( ( iv < 0 | seqLen ( s )<= iv )-> any :: seqGet ( s , iv )= seqGetOutside ))==> ) };defined in: seqRules.key Line: 155 Offset :4

castedGetAny

\lemma castedGetAny { \schemaVar \term Seq seq ; \schemaVar \term int idx ; \find ( (beta ) any :: seqGet ( seq , idx )) \replacewith ( beta :: seqGet ( seq , idx )) \heuristics (simplify ) };defined in: seqRules.key Line: 168 Offset :4

seqGetAlphaCast

\lemma seqGetAlphaCast { \schemaVar \term Seq seq ; \schemaVar \term int at ; \find ( alpha :: seqGet ( seq , at )) \add ( (alpha ) any :: seqGet ( seq , at )= alpha :: seqGet ( seq , at )==> ) \heuristics (inReachableStateImplication ) };defined in: seqRules.key Line: 180 Offset :4

getOfSeqSingleton

\lemma getOfSeqSingleton { \schemaVar \term any x ; \schemaVar \term int idx ; \find ( alpha :: seqGet ( seqSingleton ( x ), idx )) \replacewith ( \if ( idx = 0 )\then ( (alpha ) x )\else ( (alpha ) seqGetOutside )) \heuristics (simplify ) };defined in: seqRules.key Line: 194 Offset :4

getOfSeqSingletonConcrete

\lemma getOfSeqSingletonConcrete { \schemaVar \term any x ; \find ( alpha :: seqGet ( seqSingleton ( x ), 0 )) \replacewith ( (alpha ) x ) \heuristics (concrete ) };defined in: seqRules.key Line: 208 Offset :4

getOfSeqConcat

\lemma getOfSeqConcat { \schemaVar \term Seq seq , seq2 ; \schemaVar \term int idx ; \find ( alpha :: seqGet ( seqConcat ( seq , seq2 ), idx )) \replacewith ( \if ( idx < seqLen ( seq ))\then ( alpha :: seqGet ( seq , idx ))\else ( alpha :: seqGet ( seq2 , idx - seqLen ( seq )))) \heuristics (simplify_enlarging ) };defined in: seqRules.key Line: 216 Offset :4

getOfSeqSub

\lemma getOfSeqSub { \schemaVar \term Seq seq ; \schemaVar \term int idx , from , to ; \find ( alpha :: seqGet ( seqSub ( seq , from , to ), idx )) \replacewith ( \if ( 0 <= idx & idx < ( to - from ))\then ( alpha :: seqGet ( seq , idx + from ))\else ( (alpha ) seqGetOutside )) \heuristics (simplify_enlarging ) };defined in: seqRules.key Line: 230 Offset :4

getOfSeqReverse

\lemma getOfSeqReverse { \schemaVar \term Seq seq ; \schemaVar \term int idx ; \find ( alpha :: seqGet ( seqReverse ( seq ), idx )) \replacewith ( alpha :: seqGet ( seq , seqLen ( seq )- 1 - idx )) \heuristics (simplify_enlarging ) };defined in: seqRules.key Line: 244 Offset :4

getOfSeqUpd

\lemma getOfSeqUpd { \schemaVar \term Seq seq ; \schemaVar \term int idx , jdx ; \schemaVar \term any value ; \find ( alpha :: seqGet ( seqUpd ( seq , idx , value ), jdx )) \replacewith ( \if ( 0 <= jdx & jdx < seqLen ( seq )& idx = jdx )\then ( (alpha ) value )\else ( alpha :: seqGet ( seq , jdx ))) \heuristics (simplify_enlarging ) };defined in: seqRules.key Line: 256 Offset :4

lenOfSeqEmpty

\lemma lenOfSeqEmpty { \find ( seqLen ( seqEmpty )) \replacewith ( 0 ) \heuristics (concrete ) };defined in: seqRules.key Line: 271 Offset :4

lenOfSeqSingleton

\lemma lenOfSeqSingleton { \schemaVar \term alpha x ; \find ( seqLen ( seqSingleton ( x ))) \replacewith ( 1 ) \heuristics (concrete ) };defined in: seqRules.key Line: 280 Offset :4

lenOfSeqConcat

\lemma lenOfSeqConcat { \schemaVar \term Seq seq , seq2 ; \find ( seqLen ( seqConcat ( seq , seq2 ))) \replacewith ( seqLen ( seq )+ seqLen ( seq2 )) \heuristics (simplify ) };defined in: seqRules.key Line: 291 Offset :4

lenOfSeqSub

\lemma lenOfSeqSub { \schemaVar \term Seq seq ; \schemaVar \term int from , to ; \find ( seqLen ( seqSub ( seq , from , to ))) \replacewith ( \if ( from < to )\then ( to - from )\else ( 0 )) \heuristics (simplify ) };defined in: seqRules.key Line: 302 Offset :4

lenOfSeqReverse

\lemma lenOfSeqReverse { \schemaVar \term Seq seq ; \find ( seqLen ( seqReverse ( seq ))) \replacewith ( seqLen ( seq )) \heuristics (simplify ) };defined in: seqRules.key Line: 314 Offset :4

lenOfSeqUpd

\lemma lenOfSeqUpd { \schemaVar \term Seq seq ; \schemaVar \term int idx ; \schemaVar \term any value ; \find ( seqLen ( seqUpd ( seq , idx , value ))) \replacewith ( seqLen ( seq )) \heuristics (simplify ) };defined in: seqRules.key Line: 325 Offset :4

equalityToSeqGetAndSeqLenLeft

\lemma equalityToSeqGetAndSeqLenLeft { \schemaVar \term Seq s , s2 ; \schemaVar \variables int iv ; \find ( s = s2 ==> ) \varcond \add ( seqLen ( s )= seqLen ( s2 )& \forall iv ; ( 0 <= iv & iv < seqLen ( s )-> any :: seqGet ( s , iv )= any :: seqGet ( s2 , iv ))==> ) \heuristics (inReachableStateImplication ) };defined in: seqRules.key Line: 341 Offset :4

equalityToSeqGetAndSeqLenRight

\lemma equalityToSeqGetAndSeqLenRight { \schemaVar \term Seq s , s2 ; \schemaVar \variables int iv ; \find ( ==> s = s2 ) \varcond \replacewith ( ==> seqLen ( s )= seqLen ( s2 )& \forall iv ; ( 0 <= iv & iv < seqLen ( s )-> any :: seqGet ( s , iv )= any :: seqGet ( s2 , iv ))) \heuristics (simplify_enlarging ) };defined in: seqRules.key Line: 357 Offset :4

getOfSeqSingletonEQ

\lemma getOfSeqSingletonEQ { \schemaVar \term any x ; \schemaVar \term int idx ; \schemaVar \term Seq EQ ; \assumes ( seqSingleton ( x )= EQ ==> ) \find ( alpha :: seqGet ( EQ , idx )) \sameUpdateLevel \replacewith ( \if ( idx = 0 )\then ( (alpha ) x )\else ( (alpha ) seqGetOutside )) \heuristics (no_self_application , simplify_enlarging ) \displayname "getOfSeqSingleton" };defined in: seqRules.key Line: 372 Offset :4

getOfSeqConcatEQ

\lemma getOfSeqConcatEQ { \schemaVar \term Seq seq , seq2 ; \schemaVar \term int idx ; \schemaVar \term Seq EQ ; \assumes ( seqConcat ( seq , seq2 )= EQ ==> ) \find ( alpha :: seqGet ( EQ , idx )) \sameUpdateLevel \replacewith ( \if ( idx < seqLen ( seq ))\then ( alpha :: seqGet ( seq , idx ))\else ( alpha :: seqGet ( seq2 , idx - seqLen ( seq )))) \heuristics (no_self_application , simplify_enlarging ) \displayname "getOfSeqConcat" };defined in: seqRules.key Line: 390 Offset :4

getOfSeqSubEQ

\lemma getOfSeqSubEQ { \schemaVar \term Seq seq ; \schemaVar \term int idx , from , to ; \schemaVar \term Seq EQ ; \assumes ( seqSub ( seq , from , to )= EQ ==> ) \find ( alpha :: seqGet ( EQ , idx )) \sameUpdateLevel \replacewith ( \if ( 0 <= idx & idx < ( to - from ))\then ( alpha :: seqGet ( seq , idx + from ))\else ( (alpha ) seqGetOutside )) \heuristics (no_self_application , simplify_enlarging ) \displayname "getOfSeqSub" };defined in: seqRules.key Line: 408 Offset :4

getOfSeqReverseEQ

\lemma getOfSeqReverseEQ { \schemaVar \term Seq seq ; \schemaVar \term int idx ; \schemaVar \term Seq EQ ; \assumes ( seqReverse ( seq )= EQ ==> ) \find ( alpha :: seqGet ( EQ , idx )) \sameUpdateLevel \replacewith ( alpha :: seqGet ( seq , seqLen ( seq )- 1 - idx )) \heuristics (no_self_application , simplify_enlarging ) \displayname "getOfSeqReverse" };defined in: seqRules.key Line: 426 Offset :4

lenOfSeqEmptyEQ

\lemma lenOfSeqEmptyEQ { \schemaVar \term alpha x ; \schemaVar \term Seq EQ ; \assumes ( seqEmpty = EQ ==> ) \find ( seqLen ( EQ )) \sameUpdateLevel \replacewith ( 0 ) \heuristics (concrete ) \displayname "lenOfSeqEmpty" };defined in: seqRules.key Line: 442 Offset :4

lenOfSeqSingletonEQ

\lemma lenOfSeqSingletonEQ { \schemaVar \term alpha x ; \schemaVar \term Seq EQ ; \assumes ( seqSingleton ( x )= EQ ==> ) \find ( seqLen ( EQ )) \sameUpdateLevel \replacewith ( 1 ) \heuristics (concrete ) \displayname "lenOfSeqSingleton" };defined in: seqRules.key Line: 456 Offset :4

lenOfSeqConcatEQ

\lemma lenOfSeqConcatEQ { \schemaVar \term Seq seq , seq2 ; \schemaVar \term Seq EQ ; \assumes ( seqConcat ( seq , seq2 )= EQ ==> ) \find ( seqLen ( EQ )) \sameUpdateLevel \replacewith ( seqLen ( seq )+ seqLen ( seq2 )) \heuristics (simplify ) \displayname "lenOfSeqConcat" };defined in: seqRules.key Line: 470 Offset :4

lenOfSeqSubEQ

\lemma lenOfSeqSubEQ { \schemaVar \term Seq seq ; \schemaVar \term int from , to ; \schemaVar \term Seq EQ ; \assumes ( seqSub ( seq , from , to )= EQ ==> ) \find ( seqLen ( EQ )) \sameUpdateLevel \replacewith ( \if ( from < to )\then ( to - from )\else ( 0 )) \heuristics (simplify , find_term_not_in_assumes ) \displayname "lenOfSeqSub" };defined in: seqRules.key Line: 485 Offset :4

lenOfSeqReverseEQ

\lemma lenOfSeqReverseEQ { \schemaVar \term Seq seq ; \schemaVar \term Seq EQ ; \assumes ( seqReverse ( seq )= EQ ==> ) \find ( seqLen ( EQ )) \sameUpdateLevel \replacewith ( seqLen ( seq )) \heuristics (simplify ) \displayname "lenOfSeqReverse" };defined in: seqRules.key Line: 501 Offset :4

getOfSeqDefEQ

\lemma getOfSeqDefEQ { \schemaVar \term int idx , from , to ; \schemaVar \term Seq EQ ; \schemaVar \term any t ; \schemaVar \variables int uSub , uSub1 , uSub2 ; \assumes ( seqDef { uSub ; } ( from , to , t )= EQ ==> ) \find ( alpha :: seqGet ( EQ , idx )) \sameUpdateLevel \varcond \replacewith ( \if ( 0 <= idx & idx < ( to - from ))\then ( (alpha ) {\subst uSub ; ( idx + from )} t )\else ( (alpha ) seqGetOutside )) \heuristics (simplify_enlarging ) \displayname "getOfSeqDef" };defined in: seqRules.key Line: 516 Offset :4

lenOfSeqDefEQ

\lemma lenOfSeqDefEQ { \schemaVar \term int from , to ; \schemaVar \term Seq EQ ; \schemaVar \term any t ; \schemaVar \variables int uSub , uSub1 , uSub2 ; \assumes ( seqDef { uSub ; } ( from , to , t )= EQ ==> ) \find ( seqLen ( EQ )) \sameUpdateLevel \replacewith ( \if ( from <= to )\then ( ( to - from ))\else ( 0 )) \heuristics (simplify ) \displayname "lenOfSeqDef" };defined in: seqRules.key Line: 536 Offset :4

seqConcatWithSeqEmpty1

\lemma seqConcatWithSeqEmpty1 { \schemaVar \term Seq seq ; \find ( seqConcat ( seq , seqEmpty )) \replacewith ( seq ) \heuristics (concrete ) \displayname "seqConcatWithEmpty" };defined in: seqRules.key Line: 557 Offset :4

seqConcatWithSeqEmpty2

\lemma seqConcatWithSeqEmpty2 { \schemaVar \term Seq seq ; \find ( seqConcat ( seqEmpty , seq )) \replacewith ( seq ) \heuristics (concrete ) \displayname "seqConcatWithEmpty" };defined in: seqRules.key Line: 569 Offset :4

seqReverseOfSeqEmpty

\lemma seqReverseOfSeqEmpty { \find ( seqReverse ( seqEmpty )) \replacewith ( seqEmpty ) \heuristics (concrete ) };defined in: seqRules.key Line: 581 Offset :4

subSeqCompleteSeqDef

subSeqCompleteSeqDef { \schemaVar \term int u ; \schemaVar \term any a ; \schemaVar \variables int i ; \find ( seqSub ( seqDef { i ; } ( 0 , u , a ), 0 , u )) \replacewith ( seqDef { i ; } ( 0 , u , a )) \heuristics (concrete ) };defined in: seqRules.key Line: 594 Offset :4

subSeqComplete

\lemma subSeqComplete { \schemaVar \term Seq seq ; \find ( seqSub ( seq , 0 , seqLen ( seq ))) \replacewith ( seq ) \heuristics (concrete ) };defined in: seqRules.key Line: 605 Offset :4

subSeqCompleteSeqDefEQ

subSeqCompleteSeqDefEQ { \schemaVar \term int u ; \schemaVar \term any a ; \schemaVar \variables int i ; \schemaVar \term Seq EQ ; \assumes ( seqDef { i ; } ( 0 , u , a )= EQ ==> ) \find ( seqSub ( EQ , 0 , u )) \replacewith ( seqDef { i ; } ( 0 , u , a )) \heuristics (no_self_application , concrete ) };defined in: seqRules.key Line: 614 Offset :4

subSeqEmpty

subSeqEmpty { \schemaVar \term Seq seq ; \schemaVar \term int i ; \find ( seqSub ( seq , i , i )) \replacewith ( seqEmpty ) \heuristics (concrete ) };defined in: seqRules.key Line: 626 Offset :4

subSeqTailR

\lemma subSeqTailR { \schemaVar \term Seq seq ; \schemaVar \term any x ; \find ( seqSub ( seqConcat ( seqSingleton ( x ), seq ), 1 , seqLen ( seq )+ 1 )) \replacewith ( seq ) \heuristics (concrete ) \displayname "subSeqTail" };defined in: seqRules.key Line: 634 Offset :4

subSeqTailL

\lemma subSeqTailL { \schemaVar \term Seq seq ; \schemaVar \term any x ; \find ( seqSub ( seqConcat ( seqSingleton ( x ), seq ), 1 , 1 + seqLen ( seq ))) \replacewith ( seq ) \heuristics (concrete ) \displayname "subSeqTail" };defined in: seqRules.key Line: 647 Offset :4

subSeqSingleton

subSeqSingleton { \schemaVar \term Seq seq ; \schemaVar \term any x ; \find ( seqSub ( seqSingleton ( x ), 0 , 1 )) \replacewith ( seqSingleton ( x )) \heuristics (concrete ) };defined in: seqRules.key Line: 660 Offset :4

subSeqSingletonEQ

subSeqSingletonEQ { \schemaVar \term Seq seq ; \schemaVar \term any x ; \schemaVar \term Seq EQ ; \assumes ( seqSingleton ( x )= EQ ==> ) \find ( seqSub ( EQ , 0 , 1 )) \replacewith ( seqSingleton ( x )) \heuristics (concrete ) };defined in: seqRules.key Line: 671 Offset :4

subSeqTailEQR

\lemma subSeqTailEQR { \schemaVar \term Seq seq ; \schemaVar \term any x ; \schemaVar \term int EQ ; \assumes ( seqLen ( seq )= EQ ==> ) \find ( seqSub ( seqConcat ( seqSingleton ( x ), seq ), 1 , EQ + 1 )) \sameUpdateLevel \replacewith ( seq ) \heuristics (concrete ) \displayname "subSeqTail" };defined in: seqRules.key Line: 684 Offset :4

subSeqTailEQL

\lemma subSeqTailEQL { \schemaVar \term Seq seq ; \schemaVar \term any x ; \schemaVar \term int EQ ; \assumes ( seqLen ( seq )= EQ ==> ) \find ( seqSub ( seqConcat ( seqSingleton ( x ), seq ), 1 , 1 + EQ )) \sameUpdateLevel \replacewith ( seq ) \heuristics (concrete ) \displayname "subSeqTail" };defined in: seqRules.key Line: 700 Offset :4

subSeqSingleton2

subSeqSingleton2 { \schemaVar \term Seq seq ; \schemaVar \term any x ; \schemaVar \term int l , u ; \find ( seqSub ( seqSingleton ( x ), l , u )) \replacewith ( seqConcat ( seqSub ( seqEmpty , \if ( l < 0 )\then ( l )\else ( 0 ), \if ( u < 0 )\then ( u )\else ( 0 )), seqConcat ( \if ( l <= 0 & u >= 1 )\then ( seqSingleton ( x ))\else ( seqEmpty ), seqSub ( seqEmpty , \if ( l > 0 )\then ( l )\else ( 1 ), \if ( u > 0 )\then ( u )\else ( 1 ))))) \heuristics (simplify_enlarging ) };defined in: seqRules.key Line: 716 Offset :4

subSeqSingleton2EQ

subSeqSingleton2EQ { \schemaVar \term Seq seq ; \schemaVar \term any x ; \schemaVar \term int l , u ; \schemaVar \term Seq EQ ; \assumes ( seqSingleton ( x )= EQ ==> ) \find ( seqSub ( EQ , l , u )) \replacewith ( seqConcat ( seqSub ( seqEmpty , \if ( l < 0 )\then ( l )\else ( 0 ), \if ( u < 0 )\then ( u )\else ( 0 )), seqConcat ( \if ( l <= 0 & u >= 1 )\then ( seqSingleton ( x ))\else ( seqEmpty ), seqSub ( seqEmpty , \if ( l > 0 )\then ( l )\else ( 1 ), \if ( u > 0 )\then ( u )\else ( 1 ))))) \heuristics (no_self_application , simplify_enlarging ) };defined in: seqRules.key Line: 736 Offset :4

subSeqConcat

subSeqConcat { \schemaVar \term Seq s1 , s2 ; \schemaVar \term int l , u ; \find ( seqSub ( seqConcat ( s1 , s2 ), l , u )) \replacewith ( seqConcat ( seqSub ( s1 , l , \if ( seqLen ( s1 )< u )\then ( seqLen ( s1 ))\else ( u )), seqSub ( s2 , \if ( l < seqLen ( s1 ))\then ( 0 )\else ( l - seqLen ( s1 )), u - seqLen ( s1 )))) \heuristics (simplify_enlarging ) };defined in: seqRules.key Line: 758 Offset :4

subSeqConcatEQ

subSeqConcatEQ { \schemaVar \term Seq s1 , s2 ; \schemaVar \term int l , u ; \schemaVar \term Seq EQ ; \assumes ( seqConcat ( s1 , s2 )= EQ ==> ) \find ( seqSub ( EQ , l , u )) \replacewith ( seqConcat ( seqSub ( s1 , l , \if ( seqLen ( s1 )< u )\then ( seqLen ( s1 ))\else ( u )), seqSub ( s2 , \if ( l < seqLen ( s1 ))\then ( 0 )\else ( l - seqLen ( s1 )), u - seqLen ( s1 )))) \heuristics (no_self_application , simplify_enlarging ) };defined in: seqRules.key Line: 771 Offset :4

subSeqHeadSeqDef

subSeqHeadSeqDef { \schemaVar \term Seq seq ; \schemaVar \term any a ; \schemaVar \term int u ; \schemaVar \variables int i ; \find ( seqSub ( seqConcat ( seqDef { i ; } ( 0 , u , a ), seq ), 0 , u )) \replacewith ( seqDef { i ; } ( 0 , u , a )) \heuristics (concrete ) };defined in: seqRules.key Line: 785 Offset :4

subSeqHeadSeqDefEQ

subSeqHeadSeqDefEQ { \schemaVar \term Seq seq ; \schemaVar \term any a ; \schemaVar \term int u ; \schemaVar \variables int i ; \schemaVar \term Seq EQ ; \assumes ( seqDef { i ; } ( 0 , u , a )= EQ ==> ) \find ( seqSub ( seqConcat ( EQ , seq ), 0 , u )) \replacewith ( seqDef { i ; } ( 0 , u , a )) \heuristics (concrete ) };defined in: seqRules.key Line: 796 Offset :4

seqDef_split

\lemma seqDef_split { \schemaVar \term int idx , from , to ; \schemaVar \term any t ; \schemaVar \variables int uSub , uSub1 , uSub2 ; \find ( seqDef { uSub ; } ( from , to , t )) \varcond \replacewith ( \if ( from <= idx & idx < to )\then ( seqConcat ( seqDef { uSub ; } ( from , idx , t ), seqDef { uSub1 ; } ( idx , to , {\subst uSub ; uSub1 } t )))\else ( seqDef { uSub ; } ( from , to , t ))) };defined in: seqRules.key Line: 815 Offset :4

seqDef_induction_upper

\lemma seqDef_induction_upper { \schemaVar \term int idx , from , to ; \schemaVar \term any t ; \schemaVar \variables int uSub , uSub1 , uSub2 ; \find ( seqDef { uSub ; } ( from , to , t )) \varcond \replacewith ( seqConcat ( seqDef { uSub ; } ( from , to - 1 , t ), \if ( from < to )\then ( seqSingleton ( {\subst uSub ; ( to - 1 )} t ))\else ( seqEmpty ))) };defined in: seqRules.key Line: 837 Offset :4

seqDef_induction_upper_concrete

\lemma seqDef_induction_upper_concrete { \schemaVar \term int idx , from , to ; \schemaVar \term any t ; \schemaVar \variables int uSub , uSub1 , uSub2 ; \find ( seqDef { uSub ; } ( from , 1 + to , t )) \varcond \replacewith ( seqConcat ( seqDef { uSub ; } ( from , to , t ), \if ( from <= to )\then ( seqSingleton ( {\subst uSub ; ( to )} t ))\else ( seqEmpty ))) \heuristics (simplify_enlarging ) };defined in: seqRules.key Line: 852 Offset :4

seqDef_induction_lower

\lemma seqDef_induction_lower { \schemaVar \term int idx , from , to ; \schemaVar \term any t ; \schemaVar \variables int uSub , uSub1 , uSub2 ; \find ( seqDef { uSub ; } ( from , to , t )) \varcond \replacewith ( seqConcat ( \if ( from < to )\then ( seqSingleton ( {\subst uSub ; ( from )} t ))\else ( seqEmpty ), seqDef { uSub ; } ( from + 1 , to , t ))) };defined in: seqRules.key Line: 868 Offset :4

seqDef_induction_lower_concrete

\lemma seqDef_induction_lower_concrete { \schemaVar \term int idx , from , to ; \schemaVar \term any t ; \schemaVar \variables int uSub , uSub1 , uSub2 ; \find ( seqDef { uSub ; } ( - 1 + from , to , t )) \varcond \replacewith ( seqConcat ( \if ( - 1 + from < to )\then ( seqSingleton ( {\subst uSub ; ( - 1 + from )} t ))\else ( seqEmpty ), seqDef { uSub ; } ( from , to , t ))) \heuristics (simplify ) };defined in: seqRules.key Line: 883 Offset :4

seqDef_split_in_three

\lemma seqDef_split_in_three { \schemaVar \term int idx , from , to ; \schemaVar \term any t ; \schemaVar \variables int uSub , uSub1 , uSub2 ; \find ( seqDef { uSub ; } ( from , to , t )) \sameUpdateLevel \varcond "Precondition" : \add ( ==> ( from <= idx & idx < to )); "Splitted SeqDef" : \replacewith ( seqConcat ( seqDef { uSub ; } ( from , idx , t ), seqConcat ( seqSingleton ( {\subst uSub ; idx } t ), seqDef { uSub1 ; } ( idx + 1 , to , {\subst uSub ; uSub1 } t )))) };defined in: seqRules.key Line: 899 Offset :4

seqDef_empty

\lemma seqDef_empty { \schemaVar \term int idx , from , to ; \schemaVar \term any t ; \schemaVar \variables int uSub , uSub1 , uSub2 ; \find ( seqDef { uSub ; } ( from , idx , t )) \sameUpdateLevel \varcond "Precondition" : \add ( ==> idx <= from ); "Empty SeqDef" : \replacewith ( seqEmpty ) };defined in: seqRules.key Line: 922 Offset :4

seqDef_one_summand

\lemma seqDef_one_summand { \schemaVar \term int idx , from , to ; \schemaVar \term any t ; \schemaVar \variables int uSub , uSub1 , uSub2 ; \find ( seqDef { uSub ; } ( from , idx , t )) \sameUpdateLevel \varcond \replacewith ( \if ( from + 1 = idx )\then ( seqSingleton ( {\subst uSub ; from } t ))\else ( seqDef { uSub ; } ( from , idx , t ))) };defined in: seqRules.key Line: 938 Offset :4

seqDef_lower_equals_upper

\lemma seqDef_lower_equals_upper { \schemaVar \term int idx , from , to ; \schemaVar \term any t ; \schemaVar \variables int uSub , uSub1 , uSub2 ; \find ( seqDef { uSub ; } ( idx , idx , t )) \sameUpdateLevel \varcond \replacewith ( seqEmpty ) \heuristics (simplify ) };defined in: seqRules.key Line: 953 Offset :4

seqDefOfSeq

\lemma seqDefOfSeq { \schemaVar \term int x ; \schemaVar \term Seq s ; \schemaVar \variables int u , v ; \find ( seqDef { u ; } ( 0 , x , any :: seqGet ( s , u ))) \varcond \replacewith ( \if ( seqLen ( s )= x )\then ( s )\else ( \if ( seqLen ( s )> x )\then ( seqSub ( s , 0 , x ))\else ( seqConcat ( s , seqDef { v ; } ( seqLen ( s ), x , seqGetOutside ))))) \heuristics (simplify_enlarging ) };defined in: seqRules.key Line: 966 Offset :4

seqSelfDefinitionEQ2

\lemma seqSelfDefinitionEQ2 { \schemaVar \term Seq s ; \schemaVar \term int x ; \schemaVar \variables int u ; \assumes ( seqLen ( s )= x ==> ) \find ( seqDef { u ; } ( 0 , x , any :: seqGet ( s , u ))) \sameUpdateLevel \varcond \replacewith ( s ) \heuristics (simplify ) \displayname "seqSelfDefinition" };defined in: seqRules.key Line: 989 Offset :4

indexOfSeqSingleton

\lemma indexOfSeqSingleton { \schemaVar \term any x ; \find ( seqIndexOf ( seqSingleton ( x ), x )) \sameUpdateLevel \replacewith ( 0 ) \heuristics (concrete ) };defined in: seqRules.key Line: 1023 Offset :4

indexOfSeqConcatFirst

\lemma indexOfSeqConcatFirst { \schemaVar \term Seq s1 , s2 ; \schemaVar \term any x ; \schemaVar \variables int idx ; \find ( seqIndexOf ( seqConcat ( s1 , s2 ), x )) \sameUpdateLevel \varcond \replacewith ( seqIndexOf ( s1 , x )); \add ( ==> \exists idx ; ( 0 <= idx & idx < seqLen ( s1 )& any :: seqGet ( s1 , idx )= x )) };defined in: seqRules.key Line: 1032 Offset :4

indexOfSeqConcatSecond

\lemma indexOfSeqConcatSecond { \schemaVar \term Seq s1 , s2 ; \schemaVar \term any x ; \schemaVar \variables int idx ; \find ( seqIndexOf ( seqConcat ( s1 , s2 ), x )) \sameUpdateLevel \varcond \replacewith ( add ( seqIndexOf ( s2 , x ), seqLen ( s1 ))); \add ( ==> ( ! \exists idx ; ( 0 <= idx & idx < seqLen ( s1 )& any :: seqGet ( s1 , idx )= x )& \exists idx ; ( 0 <= idx & idx < seqLen ( s2 )& any :: seqGet ( s2 , idx )= x ))) };defined in: seqRules.key Line: 1045 Offset :4

indexOfSeqSub

\lemma indexOfSeqSub { \schemaVar \term Seq s ; \schemaVar \term int from , to , n ; \schemaVar \term any x ; \schemaVar \variables int nx ; \find ( seqIndexOf ( seqSub ( s , from , to ), x )) \sameUpdateLevel \varcond \replacewith ( sub ( seqIndexOf ( s , x ), from )); \add ( ==> from <= seqIndexOf ( s , x )& seqIndexOf ( s , x )< to & 0 <= from & \exists nx ; ( ( 0 <= nx & nx < seqLen ( s )& any :: seqGet ( s , nx )= x ))) };defined in: seqRules.key Line: 1060 Offset :4

definitionSeqdefWorkaround

definitionSeqdefWorkaround { \schemaVar \term int lower ; \schemaVar \term int upper ; \schemaVar \term Object array ; \schemaVar \term Heap h ; \schemaVar \variables int j ; \find ( seq_def_workaround ( h , lower , upper , array )) \varcond \replacewith ( seqDef { j ; } ( lower , upper , any :: select ( h , array , arr ( j )))) \heuristics (concrete ) };defined in: seqRules.key Line: 1083 Offset :4

definitionSeqdefWorkaround2

definitionSeqdefWorkaround2 { \schemaVar \term int lower ; \schemaVar \term int upper ; \schemaVar \term Object array , o ; \schemaVar \term Heap h ; \schemaVar \term Field f ; \schemaVar \variables int j ; \find ( seq_def_workaround2 ( h , lower , upper , array , singleton ( o , f ))) \varcond \replacewith ( seqDef { j ; } ( lower , upper , any :: select ( h , Object :: select ( h , array , arr ( j )), f ))) \heuristics (concrete ) };defined in: seqRules.key Line: 1110 Offset :4

array2seqDef

array2seqDef { \schemaVar \term Object a ; \schemaVar \term Heap h ; \schemaVar \variables int u ; \find ( array2seq ( h , a )) \varcond \replacewith ( seqDef { u ; } ( 0 , length ( a ), any :: select ( h , a , arr ( u )))) \heuristics (simplify_enlarging ) };defined in: seqRules.key Line: 1147 Offset :4

lenOfArray2seq

\lemma lenOfArray2seq { \schemaVar \term Object a ; \schemaVar \term Heap h ; \find ( seqLen ( array2seq ( h , a ))) \replacewith ( length ( a )) };defined in: seqRules.key Line: 1161 Offset :4

getAnyOfArray2seq

\lemma getAnyOfArray2seq { \schemaVar \term Object a ; \schemaVar \term int idx ; \schemaVar \term Heap h ; \find ( any :: seqGet ( array2seq ( h , a ), idx )) \replacewith ( any :: select ( h , a , arr ( idx ))); \add ( ==> 0 <= idx & idx < length ( a )) };defined in: seqRules.key Line: 1169 Offset :4

getOfArray2seq

\lemma getOfArray2seq { \schemaVar \term Object a ; \schemaVar \term int idx ; \schemaVar \term Heap h ; \find ( alpha :: seqGet ( array2seq ( h , a ), idx )) \replacewith ( alpha :: select ( h , a , arr ( idx ))); \add ( ==> 0 <= idx & idx < length ( a )) };defined in: seqRules.key Line: 1179 Offset :4