equal
deleted
inserted
replaced
|
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 |