src/Sequents/Washing.thy
 author wenzelm Sat, 29 Mar 2008 19:14:00 +0100 changeset 26480 544cef16045b parent 21426 87ac12bed1ab child 35762 af3ff2ba4c54 permissions -rw-r--r--
replaced 'ML_setup' by 'ML';
```

(* \$Id\$ *)

(* code by Sara Kalvala, based on Paulson's LK
and Moore's tisl.ML *)

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
```