| author | paulson <lp15@cam.ac.uk> | 
| Tue, 22 Jan 2019 12:00:16 +0000 | |
| changeset 69712 | dc85b5b3a532 | 
| parent 67406 | 23307fd33906 | 
| permissions | -rw-r--r-- | 
| 63411 
e051eea34990
got rid of class cmp; added height-size proofs by Daniel Stuewe
 nipkow parents: 
61640diff
changeset | 1 | (* Author: Tobias Nipkow, Daniel Stüwe *) | 
| 61640 | 2 | |
| 67406 | 3 | section \<open>Three-Way Comparison\<close> | 
| 61640 | 4 | |
| 5 | theory Cmp | |
| 6 | imports Main | |
| 7 | begin | |
| 8 | ||
| 63411 
e051eea34990
got rid of class cmp; added height-size proofs by Daniel Stuewe
 nipkow parents: 
61640diff
changeset | 9 | datatype cmp_val = LT | EQ | GT | 
| 61640 | 10 | |
| 63437 | 11 | definition cmp :: "'a:: linorder \<Rightarrow> 'a \<Rightarrow> cmp_val" where | 
| 12 | "cmp x y = (if x < y then LT else if x=y then EQ else GT)" | |
| 63411 
e051eea34990
got rid of class cmp; added height-size proofs by Daniel Stuewe
 nipkow parents: 
61640diff
changeset | 13 | |
| 
e051eea34990
got rid of class cmp; added height-size proofs by Daniel Stuewe
 nipkow parents: 
61640diff
changeset | 14 | lemma | 
| 
e051eea34990
got rid of class cmp; added height-size proofs by Daniel Stuewe
 nipkow parents: 
61640diff
changeset | 15 | LT[simp]: "cmp x y = LT \<longleftrightarrow> x < y" | 
| 
e051eea34990
got rid of class cmp; added height-size proofs by Daniel Stuewe
 nipkow parents: 
61640diff
changeset | 16 | and EQ[simp]: "cmp x y = EQ \<longleftrightarrow> x = y" | 
| 
e051eea34990
got rid of class cmp; added height-size proofs by Daniel Stuewe
 nipkow parents: 
61640diff
changeset | 17 | and GT[simp]: "cmp x y = GT \<longleftrightarrow> x > y" | 
| 63437 | 18 | by (auto simp: cmp_def) | 
| 61640 | 19 | |
| 20 | lemma case_cmp_if[simp]: "(case c of EQ \<Rightarrow> e | LT \<Rightarrow> l | GT \<Rightarrow> g) = | |
| 21 | (if c = LT then l else if c = GT then g else e)" | |
| 63411 
e051eea34990
got rid of class cmp; added height-size proofs by Daniel Stuewe
 nipkow parents: 
61640diff
changeset | 22 | by(simp split: cmp_val.split) | 
| 61640 | 23 | |
| 24 | end |