src/HOL/Data_Structures/Cmp.thy
changeset 61581 00d9682e8dd7
child 61640 44c9198f210c
equal deleted inserted replaced
61569:947ce60a06e1 61581:00d9682e8dd7
       
     1 (* Author: Tobias Nipkow *)
       
     2 
       
     3 section {* Three-Way Comparison *}
       
     4 
       
     5 theory Cmp
       
     6 imports Main
       
     7 begin
       
     8 
       
     9 datatype cmp = LT | EQ | GT
       
    10 
       
    11 class cmp = linorder +
       
    12 fixes cmp :: "'a \<Rightarrow> 'a \<Rightarrow> cmp"
       
    13 assumes LT[simp]: "cmp x y = LT \<longleftrightarrow> x < y"
       
    14 assumes EQ[simp]: "cmp x y = EQ \<longleftrightarrow> x = y"
       
    15 assumes GT[simp]: "cmp x y = GT \<longleftrightarrow> x > y"
       
    16 
       
    17 lemma case_cmp_if[simp]: "(case c of EQ \<Rightarrow> e | LT \<Rightarrow> l | GT \<Rightarrow> g) =
       
    18   (if c = LT then l else if c = GT then g else e)"
       
    19 by(simp split: cmp.split)
       
    20 
       
    21 end