bsum.key

Taclets

Enabled under choices: integerSimplificationRules:full

bsum_def

bsum_def { \find ( bsum { uSub ; } ( i0 , i1 , t )) \sameUpdateLevel \varcond \replacewith ( \if ( i0 < i1 )\then ( bsum { uSub ; } ( i0 , i1 - 1 , t )+ {\subst uSub ; ( i1 - 1 )} t )\else ( 0 )) };defined in: bsum.key Line: 22 Offset :4

bsum_empty

\lemma bsum_empty { \find ( bsum { uSub ; } ( i0 , i1 , t )) \sameUpdateLevel \varcond "Precondition" : \add ( ==> i1 <= i0 ); "Empty Sum" : \replacewith ( 0 ) };defined in: bsum.key Line: 32 Offset :4

bsum_induction_upper

\lemma bsum_induction_upper { \find ( bsum { uSub ; } ( i0 , i2 , t )) \varcond \replacewith ( bsum { uSub ; } ( i0 , i2 - 1 , t )+ \if ( i0 < i2 )\then ( {\subst uSub ; ( i2 - 1 )} t )\else ( 0 )) };defined in: bsum.key Line: 44 Offset :4

bsum_induction_lower

\lemma bsum_induction_lower { \find ( bsum { uSub ; } ( i0 , i2 , t )) \varcond \replacewith ( bsum { uSub ; } ( i0 + 1 , i2 , t )+ \if ( i0 < i2 )\then ( {\subst uSub ; ( i0 )} t )\else ( 0 )) };defined in: bsum.key Line: 52 Offset :4

bsum_num_of_bounds

\lemma bsum_num_of_bounds { \find ( bsum { uSub ; } ( i0 , i2 , \if ( phi )\then ( 1 )\else ( 0 ))) \varcond \add ( 0 <= bsum { uSub ; } ( i0 , i2 , \if ( phi )\then ( 1 )\else ( 0 )), i0 <= i2 -> bsum { uSub ; } ( i0 , i2 , \if ( phi )\then ( 1 )\else ( 0 ))<= i2 - i0 ==> ) };defined in: bsum.key Line: 60 Offset :4

bsum_num_of_bounds2

\lemma bsum_num_of_bounds2 { \find ( bsum { uSub ; } ( i0 , i2 , \if ( phi )\then ( 0 )\else ( 1 ))) \varcond \add ( 0 <= bsum { uSub ; } ( i0 , i2 , \if ( phi )\then ( 0 )\else ( 1 )), i0 <= i2 -> bsum { uSub ; } ( i0 , i2 , \if ( phi )\then ( 0 )\else ( 1 ))<= i2 - i0 ==> ) };defined in: bsum.key Line: 69 Offset :4

bsum_split

bsum_split { \schemaVar \term int low , high ; \schemaVar \term int middle ; \find ( bsum { uSub ; } ( low , high , t )) \varcond \replacewith ( \if ( low <= middle & middle <= high )\then ( bsum { uSub ; } ( low , middle , t )+ bsum { uSub ; } ( middle , high , t ))\else ( bsum { uSub ; } ( low , high , t ))) \heuristics (comprehension_split , triggered ) \trigger { middle } bsum { uSub ; } ( low , middle , t )\avoid middle <= low , middle >= high ; };defined in: bsum.key Line: 78 Offset :4

bsum_commutative_associative

bsum_commutative_associative { \find ( bsum { uSub ; } ( i0 , i2 , t + t2 )) \varcond \replacewith ( bsum { uSub ; } ( i0 , i2 , t )+ bsum { uSub1 ; } ( i0 , i2 , {\subst uSub ; uSub1 } t2 )) };defined in: bsum.key Line: 95 Offset :4

bsum_induction_upper2

\lemma bsum_induction_upper2 { \find ( bsum { uSub ; } ( i0 , i2 , t )) \varcond \replacewith ( bsum { uSub ; } ( i0 , i2 + 1 , t )- \if ( i0 < i2 + 1 )\then ( {\subst uSub ; ( i2 )} t )\else ( 0 )) };defined in: bsum.key Line: 107 Offset :4

bsum_induction_upper_concrete

\lemma bsum_induction_upper_concrete { \find ( bsum { uSub ; } ( i0 , 1 + i2 , t )) \varcond \replacewith ( bsum { uSub ; } ( i0 , i2 , t )+ \if ( i0 <= i2 )\then ( {\subst uSub ; ( i2 )} t )\else ( 0 )) \heuristics (simplify ) };defined in: bsum.key Line: 116 Offset :4

bsum_induction_upper_concrete_2

\lemma bsum_induction_upper_concrete_2 { \find ( bsum { uSub ; } ( Z ( iz ), Z ( jz ), t )) \varcond \replacewith ( bsum { uSub ; } ( Z ( iz ), Z ( jz )- 1 , t )+ \if ( Z ( iz )<= Z ( jz )- 1 )\then ( {\subst uSub ; ( Z ( jz )- 1 )} t )\else ( 0 )) \heuristics (simplify ) };defined in: bsum.key Line: 125 Offset :4

bsum_induction_upper2_concrete

\lemma bsum_induction_upper2_concrete { \find ( bsum { uSub ; } ( i0 , - 1 + i2 , t )) \varcond \replacewith ( bsum { uSub ; } ( i0 , i2 , t )- \if ( i0 < i2 )\then ( {\subst uSub ; ( i2 - 1 )} t )\else ( 0 )) \heuristics (simplify ) };defined in: bsum.key Line: 134 Offset :4

bsum_induction_lower_concrete

\lemma bsum_induction_lower_concrete { \find ( bsum { uSub ; } ( - 1 + i0 , i2 , t )) \varcond \replacewith ( bsum { uSub ; } ( i0 , i2 , t )+ \if ( - 1 + i0 < i2 )\then ( {\subst uSub ; ( - 1 + i0 )} t )\else ( 0 )) \heuristics (simplify ) };defined in: bsum.key Line: 143 Offset :4

bsum_induction_lower2

\lemma bsum_induction_lower2 { \find ( bsum { uSub ; } ( i0 , i2 , t )) \varcond \replacewith ( bsum { uSub ; } ( i0 - 1 , i2 , t )- \if ( i0 - 1 < i2 )\then ( {\subst uSub ; ( i0 - 1 )} t )\else ( 0 )) };defined in: bsum.key Line: 152 Offset :4

bsum_induction_lower2_concrete

\lemma bsum_induction_lower2_concrete { \find ( bsum { uSub ; } ( 1 + i0 , i2 , t )) \varcond \replacewith ( bsum { uSub ; } ( i0 , i2 , t )- \if ( i0 < i2 )\then ( {\subst uSub ; ( i0 )} t )\else ( 0 )) \heuristics (simplify ) };defined in: bsum.key Line: 160 Offset :4

bsum_zero_right

bsum_zero_right { \find ( ==> bsum { uSub ; } ( i0 , i2 , t )= 0 ) \varcond \add ( ==> \forall uSub ; {\subst uSub ; uSub } ( uSub >= i0 & uSub < i2 -> t = 0 )) \heuristics (comprehensions ) };defined in: bsum.key Line: 169 Offset :4

bsum_distributive

bsum_distributive { \find ( bsum { uSub ; } ( i0 , i2 , t * t1 )) \varcond \replacewith ( bsum { uSub ; } ( i0 , i2 , t )* t1 ) \heuristics (simplify ) };defined in: bsum.key Line: 177 Offset :4

bsum_equal_split1

bsum_equal_split1 { \find ( ==> bsum { uSub1 ; } ( i0 , i1 , t1 )= bsum { uSub2 ; } ( i0 , i2 , t2 )) \varcond \add ( ==> i0 <= i1 & i0 <= i2 & \if ( i1 < i2 )\then ( bsum { uSub1 ; } ( i0 , i1 , t1 - {\subst uSub2 ; uSub1 } t2 )= bsum { uSub2 ; } ( i1 , i2 , t2 ))\else ( bsum { uSub1 ; } ( i2 , i1 , t1 )= bsum { uSub2 ; } ( i0 , i2 , t2 - {\subst uSub1 ; uSub2 } t1 ))) \heuristics (comprehensions ) };defined in: bsum.key Line: 186 Offset :4

bsum_equal_split2

bsum_equal_split2 { \assumes ( bsum { uSub1 ; } ( i0 , i1 , t1 )= i ==> ) \find ( ==> bsum { uSub2 ; } ( i0 , i2 , t2 )= i ) \varcond \add ( ==> i0 <= i1 & i0 <= i2 & \if ( i2 < i1 )\then ( bsum { uSub1 ; } ( i2 , i1 , t1 )= bsum { uSub2 ; } ( i0 , i2 , t2 - {\subst uSub1 ; uSub2 } t1 ))\else ( bsum { uSub1 ; } ( i0 , i1 , t1 - {\subst uSub2 ; uSub1 } t2 )= bsum { uSub2 ; } ( i1 , i2 , t2 ))) \heuristics (comprehensions ) };defined in: bsum.key Line: 204 Offset :4

bsum_equal_split3

bsum_equal_split3 { \find ( ==> bsum { uSub1 ; } ( i1 , i0 , t1 )= bsum { uSub2 ; } ( i2 , i0 , t2 )) \varcond \add ( ==> i1 <= i0 & i2 <= i0 & \if ( i1 < i2 )\then ( bsum { uSub1 ; } ( i1 , i2 , t1 )= bsum { uSub2 ; } ( i2 , i0 , t2 - {\subst uSub1 ; uSub2 } t1 ))\else ( bsum { uSub1 ; } ( i1 , i0 , t1 - {\subst uSub2 ; uSub1 } t2 )= bsum { uSub2 ; } ( i2 , i1 , t2 ))) \heuristics (comprehensions ) };defined in: bsum.key Line: 223 Offset :4

bsum_equal_split4

bsum_equal_split4 { \assumes ( bsum { uSub1 ; } ( i1 , i0 , t1 )= i ==> ) \find ( ==> bsum { uSub2 ; } ( i2 , i0 , t2 )= i ) \varcond \add ( ==> i1 <= i0 & i2 <= i0 & \if ( i2 < i1 )\then ( bsum { uSub1 ; } ( i1 , i0 , t1 - {\subst uSub2 ; uSub1 } t2 )= bsum { uSub2 ; } ( i2 , i1 , t2 ))\else ( bsum { uSub1 ; } ( i1 , i2 , t1 )= bsum { uSub2 ; } ( i2 , i0 , t2 - {\subst uSub1 ; uSub2 } t1 ))) \heuristics (comprehensions ) };defined in: bsum.key Line: 241 Offset :4

bsum_split_in_three

bsum_split_in_three { \find ( bsum { uSub ; } ( i0 , i2 , t )) \sameUpdateLevel \varcond "Precondition" : \add ( ==> ( i0 <= i1 & i1 < i2 )); "Splitted Sum" : \replacewith ( bsum { uSub ; } ( i0 , i1 , t )+ {\subst uSub ; i1 } t + bsum { uSub1 ; } ( i1 + 1 , i2 , {\subst uSub ; uSub1 } t )) };defined in: bsum.key Line: 260 Offset :4

bsum_one_summand

bsum_one_summand { \find ( bsum { uSub ; } ( i0 , i1 , t )) \sameUpdateLevel \varcond \replacewith ( \if ( i0 + 1 = i1 )\then ( {\subst uSub ; i0 } t )\else ( bsum { uSub ; } ( i0 , i1 , t ))) };defined in: bsum.key Line: 277 Offset :4

bsum_one_summand_concrete1

bsum_one_summand_concrete1 { \find ( bsum { uSub ; } ( i0 , 1 + i0 , t )) \sameUpdateLevel \varcond \replacewith ( {\subst uSub ; i0 } t ) \heuristics (concrete ) };defined in: bsum.key Line: 285 Offset :4

bsum_one_summand_concrete2

bsum_one_summand_concrete2 { \find ( bsum { uSub ; } ( - 1 + i0 , i0 , t )) \sameUpdateLevel \varcond \replacewith ( {\subst uSub ; - 1 + i0 } t ) \heuristics (concrete ) };defined in: bsum.key Line: 293 Offset :4

bsum_shift_index

bsum_shift_index { \find ( bsum { uSub ; } ( i0 , i1 , t )) \varcond \replacewith ( bsum { uSub1 ; } ( 0 , i1 - i0 , {\subst uSub ; uSub1 + i0 } t )) };defined in: bsum.key Line: 302 Offset :4

bsum_same_summand

bsum_same_summand { \find ( bsum { uSub ; } ( i0 , i1 , t )) \varcond \replacewith ( \if ( i1 >= i0 )\then ( t * ( i1 - i0 ))\else ( 0 )) \heuristics (simplify ) };defined in: bsum.key Line: 314 Offset :4

bsum_zero

bsum_zero { \find ( bsum { uSub ; } ( i0 , i1 , 0 )) \varcond \replacewith ( 0 ) \heuristics (concrete ) };defined in: bsum.key Line: 325 Offset :4

bsum_lower_equals_upper

bsum_lower_equals_upper { \find ( bsum { uSub ; } ( i0 , i0 , t )) \sameUpdateLevel \varcond \replacewith ( 0 ) \heuristics (concrete ) };defined in: bsum.key Line: 333 Offset :4

bsum_positive

\lemma bsum_positive { \find ( ==> bsum { uSub ; } ( i0 , i1 , t )>= 0 ) \sameUpdateLevel \varcond \add ( ==> \forall uSub ; ( ( uSub >= i0 & uSub < i1 )-> t >= 0 )) };defined in: bsum.key Line: 341 Offset :4

bsum_upper_bound

\lemma bsum_upper_bound { \find ( bsum { uSub ; } ( i0 , i1 , t )) \sameUpdateLevel \varcond \add ( \forall uSub ; ( ( uSub >= i0 & uSub < i1 )-> t <= j )-> bsum { uSub ; } ( i0 , i1 , t )<= \if ( i1 - i0 > 0 )\then ( ( i1 - i0 )* j )\else ( 0 )==> ) };defined in: bsum.key Line: 350 Offset :4

bsum_lower_bound

\lemma bsum_lower_bound { \find ( bsum { uSub ; } ( i0 , i1 , t )) \sameUpdateLevel \varcond \add ( \forall uSub ; ( ( uSub >= i0 & uSub < i1 )-> t >= j )-> bsum { uSub ; } ( i0 , i1 , t )>= \if ( i1 - i0 > 0 )\then ( ( i1 - i0 )* j )\else ( 0 )==> ) };defined in: bsum.key Line: 360 Offset :4

bsum_positive_lower_bound_element

\lemma bsum_positive_lower_bound_element { \schemaVar \term int index ; \find ( bsum { uSub ; } ( i0 , i1 , t )) \sameUpdateLevel \varcond "Precondition" : \add ( ==> \forall uSub ; ( ( uSub >= i0 & uSub < i1 & uSub != index )-> t >= 0 )& i0 <= index & index < i1 ); "Usage" : \add ( ( {\subst uSub ; index } t )<= bsum { uSub ; } ( i0 , i1 , t )==> ) };defined in: bsum.key Line: 370 Offset :4

bsum_sub_same_index

\lemma bsum_sub_same_index { \find ( bsum { uSub1 ; } ( i0 , i1 , t1 )- bsum { uSub2 ; } ( i0 , i1 , t2 )) \sameUpdateLevel \varcond \add ( bsum { uSub1 ; } ( i0 , i1 , t1 - ( {\subst uSub2 ; uSub1 } t2 ))= bsum { uSub1 ; } ( i0 , i1 , t1 )- bsum { uSub2 ; } ( i0 , i1 , t2 )==> ) };defined in: bsum.key Line: 384 Offset :4

bsum_less_same_index

\lemma bsum_less_same_index { \find ( ==> bsum { uSub1 ; } ( i0 , i1 , t1 )< bsum { uSub2 ; } ( i0 , i1 , t2 )) \sameUpdateLevel \varcond \add ( ==> \forall uSub1 ; ( ( uSub1 >= i0 & uSub1 < i1 )-> t1 <= ( {\subst uSub2 ; uSub1 } t2 ))& \exists uSub1 ; ( ( uSub1 >= i0 & uSub1 < i1 )& t1 < ( {\subst uSub2 ; uSub1 } t2 ))) };defined in: bsum.key Line: 398 Offset :4

bsum_positive1

bsum_positive1 { \find ( bsum { uSub ; } ( i0 , i1 , \if ( b )\then ( 1 )\else ( 0 ))) \sameUpdateLevel \varcond \add ( bsum { uSub ; } ( i0 , i1 , \if ( b )\then ( 1 )\else ( 0 ))>= 0 ==> ) };defined in: bsum.key Line: 413 Offset :4

bsum_positive2

bsum_positive2 { \find ( bsum { uSub ; } ( i0 , i1 , \if ( b )\then ( 0 )\else ( 1 ))) \sameUpdateLevel \varcond \add ( bsum { uSub ; } ( i0 , i1 , \if ( b )\then ( 0 )\else ( 1 ))>= 0 ==> ) };defined in: bsum.key Line: 422 Offset :4

equal_bsum1

equal_bsum1 { \find ( ==> bsum { uSub1 ; } ( i0 , i1 , t1 )= bsum { uSub2 ; } ( i0 , i1 , t2 )) \varcond \add ( ==> \forall uSub1 ; ( ( uSub1 >= i0 & uSub1 < i1 )-> t1 = ( {\subst uSub2 ; uSub1 } t2 ))) \heuristics (comprehensions ) \displayname "equal_bsum_same_index" };defined in: bsum.key Line: 430 Offset :4

equal_bsum2

equal_bsum2 { \assumes ( bsum { uSub1 ; } ( i0 , i1 , t1 )= i ==> ) \find ( ==> bsum { uSub2 ; } ( i0 , i1 , t2 )= i ) \varcond \add ( ==> \forall uSub1 ; ( ( uSub1 >= i0 & uSub1 < i1 )-> t1 = ( {\subst uSub2 ; uSub1 } t2 ))) \heuristics (comprehensions ) \displayname "equal_bsum_same_index" };defined in: bsum.key Line: 444 Offset :4

equal_bsum3

equal_bsum3 { \assumes ( bsum { uSub1 ; } ( i0 , i1 , t1 )= i , bsum { uSub2 ; } ( i0 , i1 , t2 )= j ==> ) \find ( ==> j = i ) \varcond \add ( ==> \forall uSub1 ; ( ( uSub1 >= i0 & uSub1 < i1 )-> t1 = ( {\subst uSub2 ; uSub1 } t2 ))) \heuristics (comprehensions ) \displayname "equal_bsum_same_index" };defined in: bsum.key Line: 459 Offset :4

bsum_equal_except_one_index

\lemma bsum_equal_except_one_index { \schemaVar \term int index ; \find ( ==> bsum { uSub1 ; } ( i0 , i1 , t1 )= bsum { uSub2 ; } ( i0 , i1 , t2 )+ t ) \sameUpdateLevel \varcond "Precondition" : \add ( ==> i0 <= index & index < i1 & \forall uSub1 ; ( ( uSub1 >= i0 & uSub1 < i1 & uSub1 != index )-> t1 = ( {\subst uSub2 ; uSub1 } t2 ))); "Usage" : \add ( ==> t = ( ( {\subst uSub1 ; index } t1 )- ( {\subst uSub2 ; index } t2 ))) };defined in: bsum.key Line: 474 Offset :4

equal_bsum5

equal_bsum5 { \find ( ==> bsum { uSub1 ; } ( i0 , i1 , t1 )= bsum { uSub2 ; } ( i2 , i3 , t2 )) \varcond "Equal length" : \add ( ==> i1 - i0 = i3 - i2 ); "Equal elements" : \add ( ==> \forall uSub1 ; ( ( uSub1 >= i0 & uSub1 < i1 )-> t1 = ( {\subst uSub2 ; uSub1 + i2 - i0 } t2 ))) \heuristics (comprehensions_high_costs ) \displayname "equal_bsum" };defined in: bsum.key Line: 503 Offset :4

bsum_num_of_is_max

\lemma bsum_num_of_is_max { \find ( bsum { uSub ; } ( i0 , i2 , \if ( phi )\then ( 1 )\else ( 0 ))= i2 - i0 ==> ) \varcond \add ( \forall uSub ; ( ( uSub >= i0 & uSub < i2 )-> phi )==> ) \heuristics (simplify_enlarging ) };defined in: bsum.key Line: 524 Offset :4

bsum_num_of_is_max2

\lemma bsum_num_of_is_max2 { \assumes ( i2 > i0 ==> ) \find ( \forall uSub ; ( ( uSub >= i0 & uSub < i2 )-> phi )==> ) \varcond \add ( bsum { uSub ; } ( i0 , i2 , \if ( phi )\then ( 1 )\else ( 0 ))= i2 - i0 ==> ) \heuristics (simplify_enlarging ) };defined in: bsum.key Line: 533 Offset :4

bsum_num_of_is_max3

\lemma bsum_num_of_is_max3 { \find ( bsum { uSub ; } ( i0 , i2 , \if ( phi )\then ( 0 )\else ( 1 ))= i2 - i0 ==> ) \varcond \add ( \forall uSub ; ( ( uSub >= i0 & uSub < i2 )-> ! phi )==> ) \heuristics (simplify_enlarging ) };defined in: bsum.key Line: 543 Offset :4

bsum_num_of_is_max4

\lemma bsum_num_of_is_max4 { \assumes ( i2 > i0 ==> ) \find ( \forall uSub ; ( ( uSub >= i0 & uSub < i2 )-> ! phi )==> ) \varcond \add ( bsum { uSub ; } ( i0 , i2 , \if ( phi )\then ( 0 )\else ( 1 ))= i2 - i0 ==> ) \heuristics (simplify_enlarging ) };defined in: bsum.key Line: 552 Offset :4

bsum_num_of_lt_max

\lemma bsum_num_of_lt_max { \assumes ( i2 > i0 & i0 >= 0 ==> ) \find ( bsum { uSub ; } ( i0 , i2 , \if ( phi )\then ( 1 )\else ( 0 ))< i2 - i0 ==> ) \varcond \add ( \exists uSub ; ( ( uSub >= i0 & uSub < i2 )& ! phi )==> ) \heuristics (simplify_enlarging ) };defined in: bsum.key Line: 562 Offset :4

bsum_num_of_lt_max2

\lemma bsum_num_of_lt_max2 { \assumes ( i2 > i0 & i0 >= 0 ==> ) \find ( \exists uSub ; ( ( uSub >= i0 & uSub < i2 )& ! phi )==> ) \varcond \add ( bsum { uSub ; } ( i0 , i2 , \if ( phi )\then ( 1 )\else ( 0 ))< i2 - i0 ==> ) \heuristics (simplify_enlarging ) };defined in: bsum.key Line: 572 Offset :4

bsum_num_of_lt_max3

\lemma bsum_num_of_lt_max3 { \assumes ( i2 > i0 & i0 >= 0 ==> ) \find ( bsum { uSub ; } ( i0 , i2 , \if ( phi )\then ( 0 )\else ( 1 ))< i2 - i0 ==> ) \varcond \add ( \exists uSub ; ( ( uSub >= i0 & uSub < i2 )& phi )==> ) \heuristics (simplify_enlarging ) };defined in: bsum.key Line: 582 Offset :4

bsum_num_of_lt_max4

\lemma bsum_num_of_lt_max4 { \assumes ( i2 > i0 & i0 >= 0 ==> ) \find ( \exists uSub ; ( ( uSub >= i0 & uSub < i2 )& phi )==> ) \varcond \add ( bsum { uSub ; } ( i0 , i2 , \if ( phi )\then ( 0 )\else ( 1 ))< i2 - i0 ==> ) \heuristics (simplify_enlarging ) };defined in: bsum.key Line: 592 Offset :4

bsum_num_of_gt0

\lemma bsum_num_of_gt0 { \find ( bsum { uSub ; } ( i0 , i2 , \if ( phi )\then ( 1 )\else ( 0 ))) \varcond \add ( bsum { uSub ; } ( i0 , i2 , \if ( phi )\then ( 1 )\else ( 0 ))> 0 -> \exists uSub ; ( i0 <= uSub & uSub < i2 & phi )==> ) };defined in: bsum.key Line: 602 Offset :4

bsum_num_of_gt0_alt

\lemma bsum_num_of_gt0_alt { \find ( bsum { uSub ; } ( i0 , i2 , \if ( phi )\then ( 0 )\else ( 1 ))) \varcond \add ( bsum { uSub ; } ( i0 , i2 , \if ( phi )\then ( 0 )\else ( 1 ))> 0 -> \exists uSub ; ( i0 <= uSub & uSub < i2 & ! phi )==> ) };defined in: bsum.key Line: 610 Offset :4

Taclets

Enabled under choices: integerSimplificationRules:fullsequences:on

equal_bsum_perm1

equal_bsum_perm1 { \find ( ==> bsum { uSub1 ; } ( i0 , i1 , t1 )= bsum { uSub2 ; } ( i2 , i3 , t2 )) \varcond \add ( ==> seqPerm ( seqDef { uSub1 ; } ( i0 , i1 , t1 ), seqDef { uSub2 ; } ( i2 , i3 , t2 ))) \displayname "equal_bsum_perm" };defined in: bsum.key Line: 621 Offset :4

equal_bsum_perm2

equal_bsum_perm2 { \assumes ( bsum { uSub2 ; } ( i2 , i3 , t2 )= t ==> ) \find ( ==> bsum { uSub1 ; } ( i0 , i1 , t1 )= t ) \varcond \add ( ==> seqPerm ( seqDef { uSub1 ; } ( i0 , i1 , t1 ), seqDef { uSub2 ; } ( i2 , i3 , t2 ))) \displayname "equal_bsum_perm" };defined in: bsum.key Line: 638 Offset :4

Taclets

Enabled under choices: integerSimplificationRules:full

equal_bsum_zero_cut

equal_bsum_zero_cut { \find ( ==> bsum { uSub1 ; } ( i0 , i1 , t1 )= bsum { uSub2 ; } ( i2 , i3 , t2 )* t ) \add ( ==> bsum { uSub1 ; } ( i0 , i1 , t1 )= 0 ); \add ( bsum { uSub1 ; } ( i0 , i1 , t1 )= 0 ==> ) };defined in: bsum.key Line: 658 Offset :4

pullOutbsum1

pullOutbsum1 { \find ( bsum { uSub1 ; } ( i0 , i1 , t1 )>= t ==> ) \varcond \replacewith ( sk >= t ==> ) \add ( bsum { uSub1 ; } ( i0 , i1 , t1 )= sk ==> ) };defined in: bsum.key Line: 664 Offset :4

pullOutbsum2

pullOutbsum2 { \find ( bsum { uSub1 ; } ( i0 , i1 , t1 )<= t ==> ) \varcond \replacewith ( sk <= t ==> ) \add ( bsum { uSub1 ; } ( i0 , i1 , t1 )= sk ==> ) };defined in: bsum.key Line: 673 Offset :4

bsum_invert_index

bsum_invert_index { \find ( bsum { uSub ; } ( i0 , i1 , t )) \varcond \replacewith ( bsum { uSub1 ; } ( - i1 , - i0 , {\subst uSub ; - uSub1 } t )) };defined in: bsum.key Line: 682 Offset :4

bsum_invert_index_concrete

bsum_invert_index_concrete { \find ( bsum { uSub ; } ( i0 * - 1 , i1 * - 1 , t )) \varcond \replacewith ( bsum { uSub1 ; } ( i1 , i0 , {\subst uSub ; - uSub1 } t )) \heuristics (simplify ) };defined in: bsum.key Line: 689 Offset :4

bsum_add

bsum_add { \find ( bsum { uSub1 ; } ( i0 , i1 , t1 )+ bsum { uSub2 ; } ( i2 , i3 , t2 )) \varcond \replacewith ( bsum { uSub1 ; } ( \if ( i0 < i2 )\then ( i0 )\else ( i2 ), \if ( i1 > i3 )\then ( i1 )\else ( i3 ), {\subst uSub2 ; uSub1 } ( \if ( i0 <= uSub1 & uSub1 < i1 )\then ( t1 )\else ( 0 )+ \if ( i2 <= uSub1 & uSub1 < i3 )\then ( t2 )\else ( 0 )))) };defined in: bsum.key Line: 698 Offset :4

bsum_add_concrete

\lemma bsum_add_concrete { \find ( bsum { uSub1 ; } ( i0 , i1 , t1 )+ bsum { uSub2 ; } ( i1 , i3 , t2 )) \varcond \add ( ==> i0 <= i1 & i1 <= i3 ); \replacewith ( bsum { uSub1 ; } ( i0 , i3 , {\subst uSub2 ; uSub1 } \if ( uSub1 < i1 )\then ( t1 )\else ( t2 ))) };defined in: bsum.key Line: 712 Offset :4

sum_empty

sum_empty { \schemaVar \variables alpha x ; \find ( sum { x ; } ( FALSE , t )) \replacewith ( 0 ) \heuristics (concrete ) };defined in: bsum.key Line: 727 Offset :4

sum_zero

sum_zero { \schemaVar \variables alpha x ; \schemaVar \term boolean range ; \find ( sum { x ; } ( range , 0 )) \replacewith ( 0 ) \heuristics (concrete ) };defined in: bsum.key Line: 734 Offset :4