Question: Possible Bug in the StringTools "Has" command

I have specified the problem in the red comments of the worksheet i am uploading:


 

restart

with(FileTools):

currentdir("H:\\USB 1 BACKUP\\ESD-USB\\maple_library"):

["ArithmeticMean_Display_Definition.txt", "BinomialCoefficient_PadicOrder.txt", "Binomial_coefficent_p_adic_valuation_Display_Definition.txt", "CompareGeometricMean.txt", "CompareHarmonicMean.txt", "CompareMean.txt", "Compare_Arithmetic_Mean_Description.txt", "Compare_Mean_Description.txt", "ConsistencyCompareGeometricMean.txt", "ConsistencyCompareHarmonicMean.txt", "ConsistencyCompareMean.txt", "delta.txt", "delta_Display_Definition.txt", "digit_base_conversion.txt", "EulerProduct.txt", "GeometricMean_Display_Definition.txt", "HarmonicMean_Display_Definition.txt", "Mobius.txt", "MultiplicitySet.txt", "omega.txt", "p_adic_valuation.txt", "p_adic_valuation_Display_Definition.txt", "RationalParition.txt", "SquareFreeCount.txt", "WilsonTheoremLemma.txt", "WilsonTheoremLemma1_Display_Definition.txt", "WilsonTheoremLemma2_Display_Definition.txt", "WilsonTheoremLemma3_Display_Definition.txt"]

(1)

with(StringTools):

L := map(StringTools:-Has, FunctionList, "_Display_Definition"):

S[display] := {}:

for k to nops(L) do if L[k] = true then S[display] := `union`(S[display], {FunctionList[k]}) else S[procedure] := `union`(S[procedure], {FunctionList[k]}) end if end do;

for t to nops(S[display]) do read S[display][t] end do;

``

S[display]

{"p_adic_valuation.txt", "Compare_Mean_Description.txt", "delta_Display_Definition.txt", "digit_base_conversion.txt", "ArithmeticMean_Display_Definition.txt", "BinomialCoefficient_PadicOrder.txt", "Compare_Arithmetic_Mean_Description.txt", "GeometricMean_Display_Definition.txt", "HarmonicMean_Display_Definition.txt", "p_adic_valuation_Display_Definition.txt", "WilsonTheoremLemma1_Display_Definition.txt", "WilsonTheoremLemma2_Display_Definition.txt", "WilsonTheoremLemma3_Display_Definition.txt", "Binomial_coefficent_p_adic_valuation_Display_Definition.txt"}

(2)

read S[display][5]

`The Arithmetic Mean for the multiset:`

 

[a[j]][j = 1 .. n]

 

mu[A] = (sum(a[j], j = 1 .. n))/n

(3)

read S[display][7]

`CompareArithmeticMean(L,N) will return output informing you of what percentage of N random`

 

`natural number multisets of the same length as the multiset L and same range=[min(L),max(L)]`

 

`have a lower arithmetic mean than L, equal to L, and greater than L.`

(4)

``


 

Download possible_string_tools_bug.mw

Please Wait...