thys2/Paper/Paper.thy
changeset 462 d9b672c4c0ac
parent 461 c4b6906068a9
child 463 421397f267b9
equal deleted inserted replaced
461:c4b6906068a9 462:d9b672c4c0ac
  1411    hand. For example it is very hard to see a problem with @{text nub}
  1411    hand. For example it is very hard to see a problem with @{text nub}
  1412    vs @{text distinctBy} with only experimental data---one would still
  1412    vs @{text distinctBy} with only experimental data---one would still
  1413    see the correct result but find that simplification does not simplify in well-chosen, but not
  1413    see the correct result but find that simplification does not simplify in well-chosen, but not
  1414    obscure, examples. We found that from an implementation
  1414    obscure, examples. We found that from an implementation
  1415    point-of-view it is really important to have the formal proofs of
  1415    point-of-view it is really important to have the formal proofs of
  1416    the corresponding properties at hand. We have also developed a
  1416    the corresponding properties at hand.
       
  1417 
       
  1418    We have also developed a
  1417    healthy suspicion when experimental data is used to back up
  1419    healthy suspicion when experimental data is used to back up
  1418    efficiency claims. For example Sulzmann and Lu write about their
  1420    efficiency claims. For example Sulzmann and Lu write about their
  1419    equivalent of @{term blexer_simp} ``...we can incrementally compute
  1421    equivalent of @{term blexer_simp} ``...we can incrementally compute
  1420    bitcoded parse trees in linear time in the size of the input''
  1422    bitcoded parse trees in linear time in the size of the input''
  1421    \cite[Page 14]{Sulzmann2014}. 
  1423    \cite[Page 14]{Sulzmann2014}. 
  1422    Given the growth of the
  1424    Given the growth of the
  1423    derivatives in some cases even after aggressive simplification, this
  1425    derivatives in some cases even after aggressive simplification, this
  1424    is a hard to believe fact. A similar claim about a theoretical runtime
  1426    is a hard to believe fact. A similar claim about a theoretical runtime
  1425    of @{text "O(n\<^sup>2)"} is made for the Verbatim lexer, which calculates
  1427    of @{text "O(n\<^sup>2)"} is made for the Verbatim lexer, which calculates
  1426    tokens according to POSIX rules~\cite{verbatim}. For this it uses Brzozowski's
  1428    tokens according to POSIX rules~\cite{verbatim}. For this it uses Brzozowski's
  1427    derivatives. 
  1429    derivatives like in our work. 
  1428    They write: ``The results of our empirical tests [..] confirm that Verbatim has
  1430    They write: ``The results of our empirical tests [..] confirm that Verbatim has
  1429    @{text "O(n\<^sup>2)"} time complexity.'' \cite[Section~VII]{verbatim}.
  1431    @{text "O(n\<^sup>2)"} time complexity.'' \cite[Section~VII]{verbatim}.
  1430    While their correctness proof for Verbatim is formalised in Coq, the claim about
  1432    While their correctness proof for Verbatim is formalised in Coq, the claim about
  1431    the runtime complexity is only supported by some emperical evidence obtained
  1433    the runtime complexity is only supported by some emperical evidence obtained
  1432    by using the code extraction facilities of Coq.
  1434    by using the code extraction facilities of Coq.