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.