src/HOL/HOL.thy
changeset 35417 47ee18b6ae32
parent 35389 2be5440f7271
parent 35416 d8d7d1b785af
child 35625 9c818cab0dd0
equal deleted inserted replaced
35415:1810b1ade437 35417:47ee18b6ae32
  1120   The following copy of the implication operator is useful for
  1120   The following copy of the implication operator is useful for
  1121   fine-tuning congruence rules.  It instructs the simplifier to simplify
  1121   fine-tuning congruence rules.  It instructs the simplifier to simplify
  1122   its premise.
  1122   its premise.
  1123 *}
  1123 *}
  1124 
  1124 
  1125 constdefs
  1125 definition simp_implies :: "[prop, prop] => prop"  (infixr "=simp=>" 1) where
  1126   simp_implies :: "[prop, prop] => prop"  (infixr "=simp=>" 1)
       
  1127   [code del]: "simp_implies \<equiv> op ==>"
  1126   [code del]: "simp_implies \<equiv> op ==>"
  1128 
  1127 
  1129 lemma simp_impliesI:
  1128 lemma simp_impliesI:
  1130   assumes PQ: "(PROP P \<Longrightarrow> PROP Q)"
  1129   assumes PQ: "(PROP P \<Longrightarrow> PROP Q)"
  1131   shows "PROP P =simp=> PROP Q"
  1130   shows "PROP P =simp=> PROP Q"
  1394   val conjunct2 = @{thm conjunct2}
  1393   val conjunct2 = @{thm conjunct2}
  1395   val mp = @{thm mp}
  1394   val mp = @{thm mp}
  1396 )
  1395 )
  1397 *}
  1396 *}
  1398 
  1397 
  1399 constdefs
  1398 definition induct_forall where
  1400   induct_forall where "induct_forall P == \<forall>x. P x"
  1399   "induct_forall P == \<forall>x. P x"
  1401   induct_implies where "induct_implies A B == A \<longrightarrow> B"
  1400 
  1402   induct_equal where "induct_equal x y == x = y"
  1401 definition induct_implies where
  1403   induct_conj where "induct_conj A B == A \<and> B"
  1402   "induct_implies A B == A \<longrightarrow> B"
  1404   induct_true where "induct_true == True"
  1403 
  1405   induct_false where "induct_false == False"
  1404 definition induct_equal where
       
  1405   "induct_equal x y == x = y"
       
  1406 
       
  1407 definition induct_conj where
       
  1408   "induct_conj A B == A \<and> B"
       
  1409 
       
  1410 definition induct_true where
       
  1411   "induct_true == True"
       
  1412 
       
  1413 definition induct_false where
       
  1414   "induct_false == False"
  1406 
  1415 
  1407 lemma induct_forall_eq: "(!!x. P x) == Trueprop (induct_forall (\<lambda>x. P x))"
  1416 lemma induct_forall_eq: "(!!x. P x) == Trueprop (induct_forall (\<lambda>x. P x))"
  1408   by (unfold atomize_all induct_forall_def)
  1417   by (unfold atomize_all induct_forall_def)
  1409 
  1418 
  1410 lemma induct_implies_eq: "(A ==> B) == Trueprop (induct_implies A B)"
  1419 lemma induct_implies_eq: "(A ==> B) == Trueprop (induct_implies A B)"