CookBook/Tactical.thy
changeset 150 cb39c41548bd
parent 149 253ea99c1441
child 151 7e0bf13bf743
equal deleted inserted replaced
149:253ea99c1441 150:cb39c41548bd
  1479 "P \<or> (True \<and> Q) \<equiv> P \<or> Q"}
  1479 "P \<or> (True \<and> Q) \<equiv> P \<or> Q"}
  1480 
  1480 
  1481   The reason for this behaviour is that @{text "(op \<or>)"} expects two
  1481   The reason for this behaviour is that @{text "(op \<or>)"} expects two
  1482   arguments.  So the term must be of the form @{text "(Const \<dots> $ t1) $ t2"}. The
  1482   arguments.  So the term must be of the form @{text "(Const \<dots> $ t1) $ t2"}. The
  1483   conversion is then applied to @{text "t2"} which in the example above
  1483   conversion is then applied to @{text "t2"} which in the example above
  1484   stands for @{term "True \<and> Q"}.
  1484   stands for @{term "True \<and> Q"}. The function @{ML Conv.fun_conv} applies
       
  1485   the conversion to the first argument of an application.
  1485 
  1486 
  1486   The function @{ML Conv.abs_conv} applies a conversion under an abstractions.
  1487   The function @{ML Conv.abs_conv} applies a conversion under an abstractions.
  1487   For example:
  1488   For example:
  1488 
  1489 
  1489   @{ML_response_fake [display,gray]
  1490   @{ML_response_fake [display,gray]