seqEq.key

Taclets

Enabled under choices: sequences:onmoreSeqRules:on

eqSeqEmpty

eqSeqEmpty { \schemaVar \term Seq s ; \find ( s = seqEmpty ) \replacewith ( seqLen ( s )= 0 ) \heuristics (simplify ) };defined in: seqEq.key Line: 11 Offset :4

eqSeqSingleton

eqSeqSingleton { \schemaVar \term Seq s ; \schemaVar \term any x ; \find ( s = seqSingleton ( x )) \replacewith ( seqLen ( s )= 1 & any :: seqGet ( s , 0 )= x ) \heuristics (simplify ) };defined in: seqEq.key Line: 19 Offset :4

eqSeqSingleton2

eqSeqSingleton2 { \schemaVar \term Seq s , s2 ; \schemaVar \term any x ; \assumes ( seqSingleton ( x )= s2 ==> ) \find ( s = s2 ) \replacewith ( seqLen ( s )= 1 & any :: seqGet ( s , 0 )= x ) \heuristics (simplify ) };defined in: seqEq.key Line: 28 Offset :4

eqSeqConcat

eqSeqConcat { \schemaVar \term Seq s , s1 , s2 ; \find ( s = seqConcat ( s1 , s2 )) \replacewith ( seqLen ( s )= seqLen ( s1 )+ seqLen ( s2 )& seqSub ( s , 0 , seqLen ( s1 ))= s1 & seqSub ( s , seqLen ( s1 ), seqLen ( s ))= s2 ) \heuristics (simplify_ENLARGING ) };defined in: seqEq.key Line: 38 Offset :4

eqSeqConcatEQ

eqSeqConcatEQ { \schemaVar \term Seq s , s1 , s2 , EQ ; \assumes ( seqConcat ( s1 , s2 )= EQ ==> ) \find ( s = EQ ) \replacewith ( seqLen ( s )= seqLen ( s1 )+ seqLen ( s2 )& seqSub ( s , 0 , seqLen ( s1 ))= s1 & seqSub ( s , seqLen ( s1 ), seqLen ( s ))= s2 ) \heuristics (no_self_application , simplify_ENLARGING ) };defined in: seqEq.key Line: 51 Offset :4

eqSeqConcat2

eqSeqConcat2 { \schemaVar \term Seq s , s1 , s2 ; \find ( seqConcat ( s , s1 )= seqConcat ( s , s2 )) \replacewith ( s1 = s2 ) \heuristics (simplify ) };defined in: seqEq.key Line: 65 Offset :4

eqSeqConcat2EQ

eqSeqConcat2EQ { \schemaVar \term Seq s , s1 , s2 , EQ ; \assumes ( seqConcat ( s , s2 )= EQ ==> ) \find ( seqConcat ( s , s1 )= EQ ) \replacewith ( s1 = s2 ) \heuristics (no_self_application , simplify ) };defined in: seqEq.key Line: 74 Offset :4

eqSeqConcat3

eqSeqConcat3 { \schemaVar \term Seq s , s1 , s2 ; \find ( seqConcat ( s1 , s )= seqConcat ( s2 , s )) \replacewith ( s1 = s2 ) \heuristics (simplify ) };defined in: seqEq.key Line: 84 Offset :4

eqSeqConcat3EQ

eqSeqConcat3EQ { \schemaVar \term Seq s , s1 , s2 , EQ ; \assumes ( seqConcat ( s2 , s )= EQ ==> ) \find ( seqConcat ( s1 , s )= EQ ) \replacewith ( s1 = s2 ) \heuristics (no_self_application , simplify ) };defined in: seqEq.key Line: 93 Offset :4

eqSeqConcat4

eqSeqConcat4 { \schemaVar \term Seq s1 , s2 ; \schemaVar \term any x , y ; \find ( seqConcat ( s1 , seqSingleton ( x ))= seqConcat ( s2 , seqSingleton ( y ))) \replacewith ( s1 = s2 & x = y ) \heuristics (simplify ) };defined in: seqEq.key Line: 103 Offset :4

eqSeqConcat4EQ

eqSeqConcat4EQ { \schemaVar \term Seq s1 , s2 , EQ ; \schemaVar \term any x , y ; \assumes ( seqConcat ( s2 , seqSingleton ( x ))= EQ ==> ) \find ( seqConcat ( s1 , seqSingleton ( y ))= EQ ) \replacewith ( s1 = s2 & x = y ) \heuristics (no_self_application , simplify ) };defined in: seqEq.key Line: 113 Offset :4

eqSeqConcat5

eqSeqConcat5 { \schemaVar \term Seq s1 , s2 ; \schemaVar \term any x , y ; \find ( seqConcat ( seqSingleton ( x ), s1 )= seqConcat ( seqSingleton ( y ), s2 )) \replacewith ( x = y & s1 = s2 ) \heuristics (simplify ) };defined in: seqEq.key Line: 124 Offset :4

eqSeqConcat5EQ

eqSeqConcat5EQ { \schemaVar \term Seq s1 , s2 , EQ ; \schemaVar \term any x , y ; \assumes ( seqConcat ( seqSingleton ( x ), s2 )= EQ ==> ) \find ( seqConcat ( seqSingleton ( y ), s1 )= EQ ) \replacewith ( x = y & s1 = s2 ) \heuristics (no_self_application , simplify ) };defined in: seqEq.key Line: 134 Offset :4

eqSeqReverse

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

eqSeqReverse2

eqSeqReverse2 { \schemaVar \term Seq s , s2 , t ; \schemaVar \variables int iv ; \assumes ( seqReverse ( s2 )= t ==> ) \find ( s = t ) \varcond \replacewith ( seqLen ( s )= seqLen ( seqReverse ( s2 ))& \forall iv ; ( 0 <= iv & iv < seqLen ( s )-> any :: seqGet ( s , iv )= any :: seqGet ( seqReverse ( s2 ), iv ))) \heuristics (simplify_enlarging , no_self_application ) };defined in: seqEq.key Line: 161 Offset :4

eqSeqDef

eqSeqDef { \schemaVar \term Seq s ; \schemaVar \term int l , u ; \schemaVar \term any a ; \schemaVar \variables int i , iv ; \find ( s = seqDef { i ; } ( l , u , a )) \varcond \replacewith ( seqLen ( s )= seqLen ( seqDef { i ; } ( l , u , a ))& \forall iv ; ( 0 <= iv & iv < seqLen ( s )-> any :: seqGet ( s , iv )= any :: seqGet ( seqDef { i ; } ( l , u , a ), iv ))) \heuristics (simplify_enlarging ) };defined in: seqEq.key Line: 178 Offset :4

eqSeqDef2

eqSeqDef2 { \schemaVar \term Seq s , t ; \schemaVar \term int l , u ; \schemaVar \term any a ; \schemaVar \variables int i , iv ; \assumes ( seqDef { i ; } ( l , u , a )= t ==> ) \find ( s = t ) \varcond \replacewith ( seqLen ( s )= seqLen ( seqDef { i ; } ( l , u , a ))& \forall iv ; ( 0 <= iv & iv < seqLen ( s )-> any :: seqGet ( s , iv )= any :: seqGet ( seqDef { i ; } ( l , u , a ), iv ))) \heuristics (simplify_enlarging ) };defined in: seqEq.key Line: 200 Offset :4

eqSameSeq

\lemma eqSameSeq { \schemaVar \term Seq seq ; \schemaVar \term int from , to ; \schemaVar \variables int iv ; \find ( seqSub ( seq , from , to )= seq ) \sameUpdateLevel \varcond \replacewith ( ( from = 0 & seqLen ( seq )= to )| ( to <= from & seqLen ( seq )= 0 )| ( seqLen ( seq )= to - from & \forall iv ; ( 0 <= iv & iv < seqLen ( seq )-> any :: seqGet ( seq , iv )= any :: seqGet ( seq , iv + from )))) \heuristics (simplify ) };defined in: seqEq.key Line: 224 Offset :4