(* $Id: Washing.thy,v 1.1 2006/11/20 22:47:11 wenzelm Exp $ *) (* 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_setup {* bind_thms ("changeI", [thm "context1"] RL ([thm "change"] RLN (2,[thm "cut"]))) *} ML_setup {* bind_thms ("load1I", [thm "context1"] RL ([thm "load1"] RLN (2,[thm "cut"]))) *} ML_setup {* bind_thms ("washI", [thm "context1"] RL ([thm "wash"] RLN (2,[thm "cut"]))) *} ML_setup {* 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
theorem changeI:
$J1.0, $J2.0, quarter >< quarter >< quarter >< quarter, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, $J3.0, $J4.0, dollar |- B
$J1.0, $J2.0, quarter >< quarter >< quarter >< quarter, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, dollar, $J3.0, $J4.0 |- B
$J1.0, $J2.0, quarter >< quarter >< quarter >< quarter, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, $J3.0, dollar, $J4.0 |- B
$J1.0, $J2.0, quarter >< quarter >< quarter >< quarter, $J3.0, $J4.0 |- B
==> $J1.0, dollar, $J2.0, $J3.0, $J4.0 |- B
theorem load1I:
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, $J3.0, $J4.0, quarter, quarter, quarter, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, $J3.0, $J4.0, quarter, quarter, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, quarter, $J3.0, $J4.0, quarter, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, quarter, quarter, $J3.0, $J4.0, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, quarter, quarter, quarter, $J3.0, $J4.0, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, quarter, quarter, quarter, quarter, $J3.0, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, $J3.0, quarter, $J4.0, quarter, quarter, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, $J3.0, quarter, $J4.0, quarter, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, quarter, $J3.0, quarter, $J4.0, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, quarter, quarter, $J3.0, quarter, $J4.0, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, quarter, quarter, quarter, $J3.0, quarter, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, $J3.0, quarter, quarter, $J4.0, quarter, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, $J3.0, quarter, quarter, $J4.0, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, quarter, $J3.0, quarter, quarter, $J4.0, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, quarter, quarter, $J3.0, quarter, quarter, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, $J3.0, quarter, quarter, quarter, $J4.0, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, $J3.0, quarter, quarter, quarter, $J4.0, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, quarter, $J3.0, quarter, quarter, quarter, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, $J3.0, quarter, quarter, quarter, quarter, $J4.0, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, $J3.0, quarter, quarter, quarter, quarter, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, $J3.0, quarter, quarter, quarter, quarter, quarter, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, $J2.0, $J3.0, $J4.0, quarter, quarter, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, $J2.0, quarter, $J3.0, $J4.0, quarter, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, $J2.0, quarter, quarter, $J3.0, $J4.0, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, $J2.0, quarter, quarter, quarter, $J3.0, $J4.0, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, $J2.0, quarter, quarter, quarter, quarter, $J3.0, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, $J2.0, $J3.0, quarter, $J4.0, quarter, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, $J2.0, quarter, $J3.0, quarter, $J4.0, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, $J2.0, quarter, quarter, $J3.0, quarter, $J4.0, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, $J2.0, quarter, quarter, quarter, $J3.0, quarter, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, $J2.0, $J3.0, quarter, quarter, $J4.0, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, $J2.0, quarter, $J3.0, quarter, quarter, $J4.0, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, $J2.0, quarter, quarter, $J3.0, quarter, quarter, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, $J2.0, $J3.0, quarter, quarter, quarter, $J4.0, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, $J2.0, quarter, $J3.0, quarter, quarter, quarter, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, $J2.0, $J3.0, quarter, quarter, quarter, quarter, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, $J2.0, $J3.0, $J4.0, quarter, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, $J2.0, quarter, $J3.0, $J4.0, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, $J2.0, quarter, quarter, $J3.0, $J4.0, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, $J2.0, quarter, quarter, quarter, $J3.0, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, $J2.0, $J3.0, quarter, $J4.0, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, $J2.0, quarter, $J3.0, quarter, $J4.0, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, $J2.0, quarter, quarter, $J3.0, quarter, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, $J2.0, $J3.0, quarter, quarter, $J4.0, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, $J2.0, quarter, $J3.0, quarter, quarter, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, $J2.0, $J3.0, quarter, quarter, quarter, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, quarter, $J2.0, $J3.0, $J4.0, quarter, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, quarter, $J2.0, quarter, $J3.0, $J4.0, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, quarter, $J2.0, quarter, quarter, $J3.0, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, quarter, $J2.0, $J3.0, quarter, $J4.0, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, quarter, $J2.0, quarter, $J3.0, quarter, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, quarter, $J2.0, $J3.0, quarter, quarter, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, quarter, quarter, $J2.0, $J3.0, $J4.0, quarter |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, quarter, quarter, $J2.0, quarter, $J3.0, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, quarter, quarter, $J2.0, $J3.0, quarter, $J4.0 |- B
$J1.0, $J2.0, loaded, $J3.0, $J4.0 |- B
==> $J1.0, quarter, quarter, quarter, quarter, quarter, $J2.0, $J3.0, $J4.0 |- B
theorem washI:
$J1.0, $J2.0, wet, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, $J3.0, $J4.0, loaded, dirty |- B
$J1.0, $J2.0, wet, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, loaded, $J3.0, $J4.0, dirty |- B
$J1.0, $J2.0, wet, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, loaded, dirty, $J3.0, $J4.0 |- B
$J1.0, $J2.0, wet, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, $J3.0, loaded, $J4.0, dirty |- B
$J1.0, $J2.0, wet, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, dirty, $J3.0, loaded, $J4.0 |- B
$J1.0, $J2.0, wet, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, $J3.0, loaded, dirty, $J4.0 |- B
$J1.0, $J2.0, wet, $J3.0, $J4.0 |- B
==> $J1.0, loaded, $J2.0, $J3.0, $J4.0, dirty |- B
$J1.0, $J2.0, wet, $J3.0, $J4.0 |- B
==> $J1.0, loaded, $J2.0, dirty, $J3.0, $J4.0 |- B
$J1.0, $J2.0, wet, $J3.0, $J4.0 |- B
==> $J1.0, loaded, $J2.0, $J3.0, dirty, $J4.0 |- B
$J1.0, $J2.0, wet, $J3.0, $J4.0 |- B
==> $J1.0, loaded, dirty, $J2.0, $J3.0, $J4.0 |- B
theorem dryI:
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, $J3.0, $J4.0, wet, quarter, quarter, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, wet, $J3.0, $J4.0, quarter, quarter, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, wet, quarter, $J3.0, $J4.0, quarter, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, wet, quarter, quarter, $J3.0, $J4.0, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, wet, quarter, quarter, quarter, $J3.0, $J4.0 |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, $J3.0, wet, $J4.0, quarter, quarter, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, $J3.0, wet, $J4.0, quarter, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, quarter, $J3.0, wet, $J4.0, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, quarter, quarter, $J3.0, wet, $J4.0 |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, $J3.0, wet, quarter, $J4.0, quarter, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, $J3.0, wet, quarter, $J4.0, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, quarter, $J3.0, wet, quarter, $J4.0 |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, $J3.0, wet, quarter, quarter, $J4.0, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, quarter, $J3.0, wet, quarter, quarter, $J4.0 |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, $J2.0, $J3.0, wet, quarter, quarter, quarter, $J4.0 |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, $J2.0, $J3.0, $J4.0, quarter, quarter, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, $J2.0, quarter, $J3.0, $J4.0, quarter, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, $J2.0, quarter, quarter, $J3.0, $J4.0, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, $J2.0, quarter, quarter, quarter, $J3.0, $J4.0 |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, $J2.0, $J3.0, quarter, $J4.0, quarter, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, $J2.0, quarter, $J3.0, quarter, $J4.0, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, $J2.0, quarter, quarter, $J3.0, quarter, $J4.0 |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, $J2.0, $J3.0, quarter, quarter, $J4.0, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, $J2.0, quarter, $J3.0, quarter, quarter, $J4.0 |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, $J2.0, $J3.0, quarter, quarter, quarter, $J4.0 |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, quarter, $J2.0, $J3.0, $J4.0, quarter, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, quarter, $J2.0, quarter, $J3.0, $J4.0, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, quarter, $J2.0, quarter, quarter, $J3.0, $J4.0 |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, quarter, $J2.0, $J3.0, quarter, $J4.0, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, quarter, $J2.0, quarter, $J3.0, quarter, $J4.0 |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, quarter, $J2.0, $J3.0, quarter, quarter, $J4.0 |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, quarter, quarter, $J2.0, $J3.0, $J4.0, quarter |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, quarter, quarter, $J2.0, quarter, $J3.0, $J4.0 |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, quarter, quarter, $J2.0, $J3.0, quarter, $J4.0 |- B
$J1.0, $J2.0, clean, $J3.0, $J4.0 |- B
==> $J1.0, wet, quarter, quarter, quarter, $J2.0, $J3.0, $J4.0 |- B
lemma
dollar, dollar, dirty |- clean
lemma
dollar, dirty, dollar |- clean
lemma
dollar, dollar |- dirty -o clean