# HG changeset patch # User nipkow # Date 1468262445 -7200 # Node ID b81a6bfa9c231fe40de6dc89da7323c3d977a219 # Parent 9974230f95745fb02a1f14ec6dec80cb584998ad restored executability of cmp diff -r 9974230f9574 -r b81a6bfa9c23 src/HOL/Data_Structures/Cmp.thy --- a/src/HOL/Data_Structures/Cmp.thy Mon Jul 11 11:16:10 2016 +0200 +++ b/src/HOL/Data_Structures/Cmp.thy Mon Jul 11 20:40:45 2016 +0200 @@ -8,18 +8,14 @@ datatype cmp_val = LT | EQ | GT -function cmp :: "'a:: linorder \ 'a \ cmp_val" where -"x < y \ cmp x y = LT" | -"x = y \ cmp x y = EQ" | -"x > y \ cmp x y = GT" -by (auto, force) -termination by lexicographic_order +definition cmp :: "'a:: linorder \ 'a \ cmp_val" where +"cmp x y = (if x < y then LT else if x=y then EQ else GT)" lemma LT[simp]: "cmp x y = LT \ x < y" and EQ[simp]: "cmp x y = EQ \ x = y" and GT[simp]: "cmp x y = GT \ x > y" -by (cases x y rule: linorder_cases, auto)+ +by (auto simp: cmp_def) lemma case_cmp_if[simp]: "(case c of EQ \ e | LT \ l | GT \ g) = (if c = LT then l else if c = GT then g else e)"