src/Sequents/Washing.thy
 author bulwahn Thu, 07 Jul 2011 23:33:14 +0200 changeset 43704 47b0be18ccbe parent 39159 0dec18004e75 child 51309 473303ef6e34 permissions -rw-r--r--
floor and ceiling definitions are not code equations -- this enables trivial evaluation of floor and ceiling
```
(*  Title:      Sequents/Washing.thy
Author:     Sara Kalvala
*)

theory Washing
imports ILL
begin

consts
dollar :: o
quarter :: o
loaded :: o
dirty :: o
wet :: o
clean :: o

axioms
change:
"dollar |- (quarter >< quarter >< quarter >< quarter)"

load1:
"quarter , quarter , quarter , quarter , quarter |- loaded"

load2:
"dollar , quarter |- loaded"

wash:
"loaded , dirty |- wet"

dry:
"wet, quarter , quarter , quarter |- clean"

(* "activate" definitions for use in proof *)

ML {* bind_thms ("changeI", [@{thm context1}] RL ([@{thm change}] RLN (2,[@{thm cut}]))) *}
ML {* bind_thms ("load1I", [@{thm context1}] RL ([@{thm load1}] RLN (2,[@{thm cut}]))) *}
ML {* bind_thms ("washI", [@{thm context1}] RL ([@{thm wash}] RLN (2,[@{thm cut}]))) *}
ML {* bind_thms ("dryI", [@{thm context1}] RL ([@{thm dry}] RLN (2,[@{thm cut}]))) *}

(* a load of dirty clothes and two dollars gives you clean clothes *)

lemma "dollar , dollar , dirty |- clean"
apply (tactic {* best_tac (lazy_cs add_safes (@{thms changeI} @ @{thms load1I} @ @{thms washI} @ @{thms dryI})) 1 *})
done

(* order of premises doesn't matter *)

lemma "dollar , dirty , dollar |- clean"
apply (tactic {* best_tac (lazy_cs add_safes (@{thms changeI} @ @{thms load1I} @ @{thms washI} @ @{thms dryI})) 1 *})
done

(* alternative formulation *)

lemma "dollar , dollar |- dirty -o clean"
apply (tactic {* best_tac (lazy_cs add_safes (@{thms changeI} @ @{thms load1I} @ @{thms washI} @ @{thms dryI})) 1 *})
done

end
```