Book Review
                   Program = Proof by Samuel Mimram: Part I

                                    LdBeth


              Well, I once became  a  big  fan  of  programming  with
         dependent  types.  However since I'm the determined LISP fan
         and will be always the lisp fan, and  most  of  the  time  I
         write  program  for  retro platforms, I think it is far from
         possible to compile anything like  Haskell  or  Rust  to  my
         pocket calculator for example, so I gave up on these shining
         but heavy to setup stuff.

              However, since this book has been staying  in  my  list
         for  long,  I should finish reading it so I can say good bye
         to type theory, at least temporarily, until one day it  gets
         more useful.


              First,  a  little   bit    1.  Beginning of the book
         about me, if you do not know
         me well. I am the  freelance         OK, let's get  into  to
         lisp  programmer.  I  do not    the  topic. I skipped mostly
         treat programming as a  pro‐    first  part  of  the   book,
         fession,  although I learned    since  it is about OCaml. If
         programming  for   fun.   So    you  ask  me  what  I  think
         don't  treat  me like anyone    about OCaml, I would respond
         expert in computer  science,    so: "not as useful as lisp."
         as  I  am  usually biased to    It  is  worth to notice that
         hate very new stuff.            the first chapter introduced
                                         the empty type pattern:
              I  have   seen   people
         (younger    than   me)   who    type empty = |
         started  from   a   teenager
         hacker and got involved into         Which really  does  not
         homotopy type theory a  lot.    have  other  use than define
         Soon  they  started  to talk    the empty type.
         about kan operator, pullout,
         cubic,  stuff that I can not         The typing  rule  seems
         understand. However, believe    very  confusing to beginners
         me that if you just wants to    of types, well, it  is  only
         be a programmer,  and  write    because one does not have no
         assembly  for  HP  Saturn or    enough experience  with  any
         M68k, these things  are  not    of   the  typed  programming
         important at all.               languages, otherwise  it  is
                                         very ordinary.













              A good book  to  refer‐         There are about several
         ence on programming language    proof  searching  strategies
         and logic is Practical Foun‐    in Chapter  2  but  I'm  not
         dations    for   Programming    very   into   reading  them,
         Languages of Robert Harper.     sorry about that.

         2.  Logic, logic,  and  more    2.1.  Cut elimination
         logic
                                              While  people   mention
              Unfortunately  this  is    cut  elimination, especially
         not   fully   a  programming    in a constructive logic con‐
         book. Well  if  you  already    text, it means the generated
         know    some   propositional    program  from   proof   that
         logic then this part  should    calls     other     programs
         be  easy.  Yes the semantics    (resulted from using lemmas)
         is just  boolean  logic  and    can   have   these  programs
         one  can  brutal force, how‐    inlined.
         ever  not  many  real  sized
         problems   can   be   brutal         So, a constructive  cut
         forced  but  you   get   SAT    elimination  proof is essen‐
         solver for these.               tially an  inline  algorithm
                                         for high level programs.
              Maybe  you  could  wait
         for  Donald  Knuth's book on    2.2.     Normalization    by
         SAT solver? I think the pre‐    evaluation
         prints  are  already  avail‐
         able.                                Another glossary  term.
                                         It   is   really  using  the
              Section 2.2.2 mentioned    lambda constructs  from  the
         an    interesting    graphic    host programming language to
         representation  of  FOL   by    exploit   the   optimization
         Frege.  The  inference rules    provided  by  the  host com‐
         might seem scary, but  as  I    piler. If the host  language
         said  one needs practice and    itself  is  implemented in a
         practice so familiarity  can    naive  way  then  it   would
         be acquired.                    still suck.

              Pretty much all  proofs
         involved   in   these  parts
         needs induction.  I have not
         practiced the actually proof
         of these logic systems in  a
         proof  assistant  because it
         is not fun at all to do so.

              This concludes the first part of  the  book  review.  I
         hope you can enjoy reading it.