equal
deleted
inserted
replaced
341 |
341 |
342 lemma eta_contract_eq: "(%s. f s) = f" .. |
342 lemma eta_contract_eq: "(%s. f s) = f" .. |
343 |
343 |
344 lemma simp_thms: |
344 lemma simp_thms: |
345 shows not_not: "(~ ~ P) = P" |
345 shows not_not: "(~ ~ P) = P" |
|
346 and Not_eq_iff: "((~P) = (~Q)) = (P = Q)" |
346 and |
347 and |
347 "(P ~= Q) = (P = (~Q))" |
348 "(P ~= Q) = (P = (~Q))" |
348 "(P | ~P) = True" "(~P | P) = True" |
349 "(P | ~P) = True" "(~P | P) = True" |
349 "((~P) = (~Q)) = (P=Q)" |
|
350 "(x = x) = True" |
350 "(x = x) = True" |
351 "(~True) = False" "(~False) = True" |
351 "(~True) = False" "(~False) = True" |
352 "(~P) ~= P" "P ~= (~P)" |
352 "(~P) ~= P" "P ~= (~P)" |
353 "(True=P) = P" "(P=True) = P" "(False=P) = (~P)" "(P=False) = (~P)" |
353 "(True=P) = P" "(P=True) = P" "(False=P) = (~P)" "(P=False) = (~P)" |
354 "(True --> P) = P" "(False --> P) = True" |
354 "(True --> P) = P" "(False --> P) = True" |
658 |
658 |
659 syntax (HTML output) |
659 syntax (HTML output) |
660 "op <=" :: "['a::ord, 'a] => bool" ("op \<le>") |
660 "op <=" :: "['a::ord, 'a] => bool" ("op \<le>") |
661 "op <=" :: "['a::ord, 'a] => bool" ("(_/ \<le> _)" [50, 51] 50) |
661 "op <=" :: "['a::ord, 'a] => bool" ("(_/ \<le> _)" [50, 51] 50) |
662 |
662 |
663 |
663 text{* Syntactic sugar: *} |
664 lemma Not_eq_iff: "((~P) = (~Q)) = (P = Q)" |
664 |
665 by blast |
665 consts |
|
666 "_gt" :: "'a::ord => 'a => bool" (infixl ">" 50) |
|
667 "_ge" :: "'a::ord => 'a => bool" (infixl ">=" 50) |
|
668 translations |
|
669 "x > y" => "y < x" |
|
670 "x >= y" => "y <= x" |
|
671 |
|
672 syntax (xsymbols) |
|
673 "_ge" :: "'a::ord => 'a => bool" (infixl "\<ge>" 50) |
|
674 |
|
675 syntax (HTML output) |
|
676 "_ge" :: "['a::ord, 'a] => bool" (infixl "\<ge>" 50) |
|
677 |
666 |
678 |
667 subsubsection {* Monotonicity *} |
679 subsubsection {* Monotonicity *} |
668 |
680 |
669 locale mono = |
681 locale mono = |
670 fixes f |
682 fixes f |