Up to index of Isabelle/HOL/overriding-update
theory AxOverrAndUpdtheory AxOverrAndUpd
imports Main
begin
text
{* we define a locale containing our symbols, the constant empty set
and the first three axioms *}
locale ax123 =
fixes over :: "'a => 'a => 'a" (infixl "\<rhd>" 101) (*overriding*)
fixes min :: "'a => 'a => 'a" (infixl "\<ominus>" 102) (* minus *)
fixes e :: "'a" (* empty set *)
assumes idemp: "f \<rhd> f = f" (* Ax1 *)
assumes empty: "f \<ominus> f = e" (* Ax2 *)
assumes swap: "f \<ominus> g \<rhd> g = g \<rhd> f" (* Ax3, weaksymmetry in the paper *)
text {* Then we define three different locales containing a different set of axioms.
We use it to find proofs of some laws without using all the axioms.*}
locale ax1234 = ax123 + (* context with Axioms 1 to 4 *)
(* assumes drem: "f - (g - h) = f - (f - h) |> f - g"*)
(* assumes drem: "min f (min g h) = over (min f (min f h)) (min f g)"*)
assumes dbmin: "f \<ominus> (g \<ominus> h) = f \<ominus> g \<rhd> f \<ominus> (f \<ominus> h)"
locale ax12345 = ax1234 +
assumes distr: "(f \<rhd> g) \<ominus> h = (f \<ominus> h) \<rhd> (g \<ominus> h)"
locale ax1235 = ax123 +
assumes distr: "(f \<rhd> g) \<ominus> h = (f \<ominus> h) \<rhd> (g \<ominus> h)"
lemma (in ax12345) eUf:
shows "e \<rhd> f = f"
by (metis empty swap idemp)
(*proof -
from empty[where f=f] have "e > f = f-f > f"
by simp
also from swap[where f=f] have "… = f > f"
by simp
also from idemp[where f=f] have "… = f"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax12345) fUe:
shows "f \<rhd> e = f"
(* by (metis distr eUf empty idemp swap)*)
by (metis distr eUf empty idemp swap)
(* by (metis eUf fMe swap)*)
(*proof -
from fMe[where f = f] have "f > e = (f - e) > e"
by simp
also from weaksym[where f = e and g = f] have "… = e > f" by simp
finally show ?thesis by (simp add: eUf)
qed*)
(*proof -
from empty[where f=f] have "f > e = f > f-f"
by simp
also from weakswap[where f=f] have "… = f > f"
by simp
also from idemp[where f=f] have "… = f"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax12345) fMe:
shows "f \<ominus> e = f"
by (metis eUf fUe swap)
(* by (metis dbmin distr eUf empty idemp swap)*)
(*proof -
from empty[where f=f] have "f-e = f-(f-f)"
by simp
also from drem[where f=f and g=f] have "… = f-(f-f) > f-f"
by simp
also from swap[where f=f] have "… = f-f > f"
by simp
also from empty[where f=f] have "… = e>f"
by simp
also from eUf[where f=f] have "… = f"
by simp
finally show ?thesis by simp
qed *)
lemma (in ax12345) overlap1:
(* shows "f-g > f = f"*)
shows "over (min f g) f = f"
by (metis dbmin distr eUf empty fMe fUe swap)
(*proof -
from swap[where f=f] have "f-g > f = f-(f-g) > f-g"
by simp
also from partition1[where f=f] have "… = f"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax12345) combrem:
shows "f \<ominus> g \<ominus> h = f \<ominus> (g \<rhd> h)"
(* shows "min (min f g) h = min f (over g h)" *)
by (metis dbmin distr eUf empty fMe fUe overlap1 swap)
lemma (in ax12345) partition1:
(* shows "f-(f-g) > f-g = f"*)
shows "over (min f (min f g)) (min f g) = f"
by (metis overlap1 swap)
(*proof -
from drem[where f=f and g=g] have "f-(f-g) > f-g = f-(g-g)"
by simp
also from empty[where f=g] have "… = f-e"
by simp
also from fMe[where f=f] have "… = f"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax12345) eMf:
shows "e \<ominus> f = e"
by (metis fUe overlap1)
(* try without fMgMg
proof -
from fMe[where f=f] have "e-f = e-(f-e)"
by simp
also from drem[where f=e and g=f] have "… = e-(e-e) > e-f"
by simp
*)
(*proof -
from empty[where f=f] have "e-f = f-f-f"
by simp
also from fMgMg[where g=f] have "… = f-f"
by simp
also from empty[where f=f] have "… = e"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax12345) weakswap:
shows "over f (min g f) = over f g"
(* shows "f > g-f = f > g"*)
by (metis dbmin empty fMe overlap1 swap)
(* by (metis distr eMf fMe fUe)*)
(* by (metis dbmin empty fMe overlap1 swap)*)
(*proof -
from swap[where g=f] have "f > g-f = g-f-f > f"
by simp
also from combrem[where f=g] have "… = g-(f>f) > f"
by simp
also from idemp[where f=f] have "… = g-f > f"
by simp
also from swap[where f=g] have "… = f > g"
by simp
finally show ?thesis by simp
qed *)
(* seems too hard now
lemma drem2:
shows "f-(g-h) = f-g > f-(f-h)"
proof -
from drem[where f=f and g=g] have "f-(g-h) = f-(f-h) > f-g"
by simp
also from swap[where f="f-g"] have "… = f-g-(f-(f-h)) > f-(f-h)"
by simp
we do not have f-f[h = f-h yet
*)
lemma (in ax12345) fMgMg:
shows "(min (min f g) g) = min f g"
(* shows "f-g-g = f-g"*)
by (metis combrem idemp)
(*proof -
from combrem[where f=f] have "f-g-g = f-(g>g)"
by simp
also from idemp[where f=g] have "… = f-g"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax12345) partition2:
(* shows "f-g > f-(f-g) = f"*)
shows "over (min f g) (min f (min f g)) = f"
by (metis overlap1 weakswap)
(*proof -
from swap[where g="f-g"] have "f-g > f-(f-g) = f-(f-g)-(f-g) > f-g"
by simp
also from fMgMg[where f=f] have "… = f-(f-g) > f-g"
by simp
also from partition1[where f=f] have "… = f"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax12345) fMgMf:
shows "f \<ominus> g \<ominus> f = e"
(* proof -
from combrem[where f=f] have "f-g-f = f-(g>f)"
by simp
also from swap[where f=f] have "… = f-(f-g > g)"
by simp
also from combrem[where f=f] have "… = f-(f-g)-g"
by simp
f-(g-(f-g) > f-g))
f-(g-(f-g))-(f-g)
drem
(f-(f-(f-g)) > f-(f-g))-(f-g)
*)
by (metis distr empty fUe overlap1)
(* by (metis combrem eMf empty overlap1)*)
(*proof -
from partition2[where f=f] have "f-g-f = f-g - (f-g > f-(f-g))"
by simp
also from combrem[where f="f-g"] have "… = f-g - (f-g) - (f-(f-g))"
by simp
also from empty[where f="f-g"] have "… = e - (f-(f-g))"
by simp
also from eMf[where f="f-(f-g)"] have "… = e"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax12345) overlap2:
(* shows "f > f-g = f"*)
shows "over f (min f g) = f"
by (metis fMgMf fUe weakswap)
(*proof -
from swap[where g=f] have "f > f-g = f-g-f > f"
by simp
also from fMgMf[where f=f] have "… = e > f"
by simp
also from eUf[where f=f] have "… = f"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax12345) lem1:
(* shows "f-(f>g) = e"*)
shows "min f (over f g) = e"
by (metis combrem empty fMgMf) (*without axiom 4*)
(* by (metis combrem eMf empty)*)
(*proof -
from combrem[where f=f] have "f-(f>g) = f-f-g"
by simp
also from empty[where f=f] have "… = e-g"
by simp
also from eMf[where f=g] have "… = e"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax12345) fUgUf:
(* this is what I would like to work apply(simp add: idemp empty swap drem combrem) *)
(* shows "f > g > f = f > g"*)
shows "over (over f g) f = over f g"
by (metis distr eUf empty idemp swap) (*without axiom 4 *)
(* by (metis combrem eMf empty fUe weakswap)*)
(*proof -
from swap[where f=f] have "f > g > f = f-(f>g) > (f>g)"
by simp
also from lem1[where f=f] have "… = e > (f>g)"
by simp
also from eUf[where f="f>g"] have "… = f>g"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax12345) weaksym:
(* shows "f-g-h = f-h-g"*)
shows "min (min f g) h = min (min f h) g"
(* by (metis distr empty idemp) *) (*without axiom4*)
by (metis combrem distr eUf fMgMf fUgUf weakswap)
(*proof -
from combrem[where f=f] have "f-g-h = f-(g>h)"
by simp
also from swap[where g=g] have "… = f - (h-g>g)"
by simp
also from combrem[where f=f] have "… = f - (h-g) - g"
by simp
also from drem[where f=f and g=h] have "… = (f-(f-g) > f-h) - g"
by simp
also from distr[where f="f-(f-g)" and g="f-h" and h=g] have "… = f-(f-g)-g > f-h-g"
by simp
also from combrem[where f=f] have "… = f-(f-g > g) > f-h-g"
by simp
also from swap[where f=f] have "… = f-(g>f) > f-h-g"
by simp
also from combrem[where f=f] have "… = f-g-f > f-h-g"
by simp
also from fMgMf[where f=f] have "… = e > f-h-g"
by simp
also from eUf[where f="f-h-g"] have "… = f-h-g"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax12345) lem2:
shows "over f (min g (min g f)) = f"
(* shows "f > g-(g-f) = f"*)
(* by (metis distr eMf eUf fMe fMgMf fUe)*)
by (metis empty fUe weakswap weaksym)
(*proof -
from swap[where g=f] have "f > g-(g-f) = g-(g-f)-f > f"
by simp
also from weaksym[where f=g and g="g-f" and h=f] have "… = g-f-(g-f) > f"
by simp
also from empty[where f="g-f"] have "… = e > f"
by simp
also from eUf[where f=f] have "… = f"
by simp
finally show ?thesis by simp
qed*)
(*lemma (in ax1235) lem2:
shows "min f (over f g) = e"
by (metis distr eUf empty fUe swap)*)
lemma (in ax12345) lem3:
(* shows "f-(g-f) = f"*)
shows "min f (min g f) = f"
(* by (metis distr eMf fMe fUe)*) (*without axiom 4*)
by (metis dbmin empty fMe overlap1)
(*proof -
from drem[where f=f and g=g] have "f-(g-f) = f-(f-f) > f-g"
by simp
also from empty[where f=f] have "… = f-e > f-g"
by simp
also from fMe[where f=f] have "… = f > f-g"
by simp
also from overlap2[where f=f] have "… = f"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax12345) lem4:
(* shows "(f>g>h)-f = g-f > h-f"*)
shows " min (over (over f g) h) f = over (min g f) (min h f)"
(*by (metis distr eMf eUf fMe fMgMf fUe) *) (*without axiom 4*)
(* by (metis distr eUf empty)*)
proof -
from distr[where h=f] have "(f \<rhd> g \<rhd> h) \<ominus> f = (f \<rhd> g) \<ominus> f \<rhd> h \<ominus> f"
by (metis distr eMf fMe fUe)
(* by simp broken *)
also from distr[where h=f] have "… = f \<ominus> f \<rhd> g\<ominus> f \<rhd> h \<ominus> f"
by (metis distr eMf eUf empty fMe fMgMf fUe)
(*by simp*)
also from empty[where f=f] have "… = e \<rhd> g \<ominus> f \<rhd> h \<ominus> f"
by simp
also from eUf[where f="g \<ominus> f"] have "… = g \<ominus> f \<rhd> h \<ominus> f"
by simp
finally show ?thesis by simp
qed
lemma (in ax12345) assoc:
(* shows "(f > g) > h = f > (g > h)"*)
shows "over (over f g) h = over f (over g h)"
(* by (metis distr eUf empty idemp lem3) *)(*proof without axiom 4*)
(* by (metis combrem distr eUf empty lem3 lem4 overlap1 swap weakswap)*)
by (metis combrem distr eUf empty lem3 lem4 overlap1 swap weakswap)
(* by (metis distr eMf eUf fMe fMgMf fUe)*)
(* by (metis dbmin eUf empty idemp swap) *) (*without axiom 5*)
(*proof -
from partition2[where g=f] have "f\<rhd> g \<rhd> h = (f\<rhd> g\<rhd> h)\<ominus>f \<rhd> (f\<rhd> g\<rhd> h)\<ominus>((f\<rhd> g\<rhd> h) \<ominus> f)"
by simp
also from lem4[where f=f] have "… = g\<ominus>f \<rhd> h\<ominus>f \<rhd> (f\<rhd> g\<rhd> h)\<ominus>((f\<rhd> g\<rhd> h) \<ominus> f)"
by simp
also from distr[where h=f] have "… = (g\<rhd> h)\<ominus>f \<rhd> (f\<rhd> g\<rhd> h)\<ominus>((f\<rhd> g\<rhd> h) \<ominus> f)"
by (metis distr eUf empty idemp lem3 lem4 weakswap)
also from lem4[where f=f] have "… = (g\<rhd> h)\<ominus>f \<rhd> (f\<rhd> g\<rhd> h)\<ominus>(g\<ominus>f \<rhd> h\<ominus>f)"
by simp
also from combrem[where g="g\<ominus>f"] have "… = (g\<rhd> h)\<ominus>f \<rhd> (f\<rhd> g\<rhd> h)\<ominus>(g\<ominus>f)\<ominus>(h\<ominus>f)"
by simp
also from distr[where h="g\<ominus>f"] have "… = (g\<rhd> h)\<ominus>f \<rhd> ((f\<rhd> g)\<ominus>(g\<ominus>f) \<rhd> h\<ominus>(g\<ominus>f))\<ominus>(h\<ominus>f)"
by(metis distr eMf eUf empty idemp)
also from distr[where h="g\<ominus>f"] have "… = (g\<rhd> h)\<ominus>f \<rhd> (f\<ominus>(g\<ominus>f) \<rhd> g\<ominus>(g\<ominus>f) \<rhd> h\<ominus>(g\<ominus>f))\<ominus>(h\<ominus>f)"
by (metis distr eMf eUf empty fUe idemp lem2 lem3)
also from lem3[where f=f] have "… = (g\<rhd> h)\<ominus>f \<rhd> (f \<rhd> g\<ominus>(g\<ominus>f) \<rhd> h\<ominus>(g\<ominus>f))\<ominus>(h\<ominus>f)"
by simp
also from lem2[where f=f] have "… = (g\<rhd> h)\<ominus>f \<rhd> (f \<rhd> h\<ominus>(g\<ominus>f))\<ominus>(h\<ominus>f)"
by simp
also from lem3[where f=f] have "… = (g\<rhd> h)\<ominus>f \<rhd> (f\<ominus>(g\<ominus>f) \<rhd> h\<ominus>(g\<ominus>f))\<ominus>(h\<ominus>f)"
by simp
also from distr[where h="g\<ominus>f"] have "… = (g\<rhd> h)\<ominus>f \<rhd> (f\<rhd> h)\<ominus>(g\<ominus>f)\<ominus>(h\<ominus>f)"
by (metis distr eMf eUf empty fUe idemp lem3)
also from weaksym[where f="f\<rhd> h"] have "… = (g\<rhd> h)\<ominus>f \<rhd> (f\<rhd> h)\<ominus>(h\<ominus>f)\<ominus>(g\<ominus>f)"
by simp
also from distr[where h="h\<ominus>f"] have "… = (g\<rhd> h)\<ominus>f \<rhd> (f\<ominus>(h\<ominus>f) \<rhd> h\<ominus>(h\<ominus>f))\<ominus>(g\<ominus>f)"
by (metis distr eMf eUf empty idemp lem2 lem3 swap)
also from lem3[where f=f] have "… = (g\<rhd> h)\<ominus>f \<rhd> (f \<rhd> h\<ominus>(h\<ominus>f))\<ominus>(g\<ominus>f)"
by simp
also from lem2[where f=f] have "… = (g\<rhd> h)\<ominus>f \<rhd> f\<ominus>(g\<ominus>f)"
by simp
also from lem3[where f=f] have "… = (g\<rhd> h)\<ominus>f \<rhd> f"
by simp
also from swap[where g=f] have "… = f\<rhd> (g\<rhd> h)"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax12345) weaksym3:
(* shows "f-g > f-h = f-h > f-g"*)
shows "f \<ominus> g \<rhd> f \<ominus> h = f \<ominus> h \<rhd> f \<ominus> g"
(* by (metis combrem dbmin distr eUf empty lem3 overlap1 swap weakswap weaksym)*)
proof (neg_clausify)
assume 0: "(f::'a::type) \<ominus> (g::'a::type) \<rhd> f \<ominus> (h::'a::type) ≠ f \<ominus> h \<rhd> f \<ominus> g"
have 1: "!!(X1::'a::type) (X2::'a::type) X3::'a::type. X1 \<ominus> (X2 \<rhd> X3) = X1 \<ominus> X2 \<ominus> (X3 \<ominus> X2)"
by (metis combrem weakswap)
have 2: "!!(X1::'a::type) (X2::'a::type) X3::'a::type. X1 \<ominus> X2 \<ominus> X3 = X1 \<ominus> X2 \<ominus> (X3 \<ominus> X2)"
by (metis 1 combrem)
have 3: "!!(X1::'a::type) (X2::'a::type) X3::'a::type. X1 \<rhd> X2 \<ominus> X1 \<ominus> X3 = X1 \<rhd> X2 \<ominus> X3"
by (metis weakswap weaksym)
have 4: "!!(X1::'a::type) X2::'a::type. (e::'a::type) \<rhd> X2 \<ominus> X1 = (X1 \<rhd> X2) \<ominus> X1"
by (metis distr empty)
have 5: "!!(X1::'a::type) (X2::'a::type) X3::'a::type.
X1 \<rhd> X3 \<ominus> (X2 \<ominus> X1) = (X1 \<rhd> X3) \<ominus> (X2 \<ominus> X1)"
by (metis distr lem3)
have 6: "!!(X1::'a::type) X2::'a::type. X2 \<ominus> X1 = (X1 \<rhd> X2) \<ominus> X1"
by (metis 4 eUf)
have 7: "!!(X1::'a::type) X2::'a::type. (X2 \<rhd> X1) \<ominus> (X1 \<ominus> X2) = X2 \<ominus> (X1 \<ominus> X2)"
by (metis 6 swap)
have 8: "!!(X1::'a::type) X2::'a::type. (X2 \<rhd> X1) \<ominus> (X1 \<ominus> X2) = X2"
by (metis 7 lem3)
have 9: "!!(X1::'a::type) X2::'a::type. X1 \<ominus> (X1 \<ominus> (X1 \<ominus> X2)) = X1 \<ominus> X2"
by (metis 8 overlap1)
have 10: "!!(X1::'a::type) (X2::'a::type) X3::'a::type.
X1 \<ominus> X2 \<rhd> X1 \<ominus> X3 = X1 \<ominus> (X2 \<ominus> (X1 \<ominus> X3))"
by (metis dbmin 9)
have 11: "!!(X1::'a::type) (X2::'a::type) X3::'a::type.
X1 \<rhd> X2 \<ominus> X1 \<ominus> X3 = X1 \<rhd> X2 \<ominus> (X3 \<ominus> X1)"
by (metis 3 2)
have 12: "!!(X1::'a::type) (X2::'a::type) X3::'a::type. X1 \<rhd> X2 \<ominus> X3 = X1 \<rhd> X2 \<ominus> (X3 \<ominus> X1)"
by (metis 11 3)
have 13: "!!(X1::'a::type) (X2::'a::type) X3::'a::type. (X1 \<rhd> X2) \<ominus> (X3 \<ominus> X1) = X1 \<rhd> X2 \<ominus> X3"
by (metis 12 5)
have 14: "!!(X1::'a::type) (X2::'a::type) X3::'a::type.
X1 \<ominus> (X3 \<ominus> (X1 \<ominus> X2)) = X1 \<ominus> X2 \<rhd> X1 \<ominus> X3"
by (metis 13 overlap1)
have 15: "(f::'a::type) \<ominus> ((g::'a::type) \<ominus> (f \<ominus> (h::'a::type))) ≠ f \<ominus> h \<rhd> f \<ominus> g"
by (metis 0 10)
have 16: "(f::'a::type) \<ominus> ((g::'a::type) \<ominus> (f \<ominus> (h::'a::type))) ≠ f \<ominus> (h \<ominus> (f \<ominus> g))"
by (metis 15 10)
have 17: "!!(X1::'a::type) (X2::'a::type) X3::'a::type.
X1 \<ominus> (X2 \<ominus> (X1 \<ominus> X3)) = X1 \<ominus> (X3 \<ominus> (X1 \<ominus> X2))"
by (metis 14 10)
show "False"
by (metis 16 17)
qed
(*proof -
from swap[where g="f-g"] have "f-g > f-h = f-h-(f-g) > f-g"
by simp
also from weaksym[where f=f] have "… = f-(f-g)-h > f-g"
by simp
also from partition2[where g=h] have "… = f-(f-g)-h > (f-g-h > (f-g)@h)"
by simp
also from assoc[where g="f-g-h"] have "… = (f-(f-g)-h > f-g-h) > (f-g)@h"
by simp
also from idemp[where f="f-g-h"] have "… = (f-(f-g)-h > (f-g-h > f-g-h)) > (f-g)@h"
by simp
also from assoc[where h="f-g-h"] have "… = (f-(f-g)-h > f-g-h > f-g-h) > (f-g)@h"
by simp
also from distr[where h=h] have "… = (f-(f-g) > f-g)-h > f-g-h > (f-g)@h"
by simp
also from swap[where f=f] have "… = (f-g > f)-h > f-g-h > (f-g)@h"
by simp
also from overlap1[where f=f] have "… = f-h > f-g-h > (f-g)@h"
by simp
also from assoc[where f="f-h"] have "… = f-h > (f-g-h > (f-g)@h)"
by simp
also from partition2[where g=h] have "… = f-h > f-g"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax12345) drem:
(* assumes drem: "f - (g - h) = f - (f - h) |> f - g"*)
(* assumes drem: "min f (min g h) = over (min f (min f h)) (min f g)"*)
shows "f \<ominus> (g \<ominus> h) = f \<ominus> (f \<ominus> h) \<rhd> f \<ominus> g"
(* shows "min f (min g h) = over (min f (min f h)) (min f g)"*)
by (metis dbmin weaksym3)
(* try alt proof but same need for associativity
lemma lem5:
shows "f-g > f-h = f-h > f-g"
proof -
from swap2[where f="f-g"] have "f-g > f-h = f-g > f-h-(f-g)"
by simp
also from weaksym[where f=f] have "… = f-g > f-(f-g)-h"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax12345) lem6:
(* shows "(f>g) - (g-f) = f"*)
shows "min (over f g) (min g f) = f"
by (metis distr eUf empty lem3 swap)
(*proof -
from distr[where f=f] have "(f>g) - (g-f) = f-(g-f) > g-(g-f)"
by simp
also from lem3[where f=f] have "… = f > g-(g-f)"
by simp
also from lem2[where f=f] have "… = f"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax12345) lem7:
(* shows "(f>g) - (h-f) = f > g-h"*)
shows "min (over f g) (min h f) = over f (min g h)"
(* by (metis combrem distr lem3 weakswap weaksym)*)
proof (neg_clausify)
assume 0: "((f::'a::type) \<rhd> (g::'a::type)) \<ominus> ((h::'a::type) \<ominus> f) ≠ f \<rhd> g \<ominus> h"
have 1: "!!(X1::'a::type) (X2::'a::type) X3::'a::type. X1 \<ominus> (X2 \<rhd> X3) = X1 \<ominus> X2 \<ominus> (X3 \<ominus> X2)"
by (metis combrem weakswap)
have 2: "!!(X1::'a::type) (X2::'a::type) X3::'a::type. X1 \<ominus> X2 \<ominus> X3 = X1 \<ominus> X2 \<ominus> (X3 \<ominus> X2)"
by (metis 1 combrem)
have 3: "!!(X1::'a::type) (X2::'a::type) X3::'a::type. X1 \<rhd> X2 \<ominus> X1 \<ominus> X3 = X1 \<rhd> X2 \<ominus> X3"
by (metis weakswap weaksym)
have 4: "!!(X1::'a::type) (X2::'a::type) X3::'a::type.
X1 \<rhd> X3 \<ominus> (X2 \<ominus> X1) = (X1 \<rhd> X3) \<ominus> (X2 \<ominus> X1)"
by (metis distr lem3)
have 5: "!!(X1::'a::type) (X2::'a::type) X3::'a::type.
X1 \<rhd> X2 \<ominus> X1 \<ominus> X3 = X1 \<rhd> X2 \<ominus> (X3 \<ominus> X1)"
by (metis 3 2)
have 6: "!!(X1::'a::type) (X2::'a::type) X3::'a::type. X1 \<rhd> X2 \<ominus> X3 = X1 \<rhd> X2 \<ominus> (X3 \<ominus> X1)"
by (metis 5 3)
have 7: "!!(X1::'a::type) (X2::'a::type) X3::'a::type. X1 \<rhd> X3 \<ominus> X2 = (X1 \<rhd> X3) \<ominus> (X2 \<ominus> X1)"
by (metis 4 6)
show "False"
by (metis 0 7)
qed
(*proof -
from drem[where f="f>g" and g=h] have "(f>g) - (h-f) = (f>g)-((f>g)-f) > (f>g) - h"
by simp
also from distr[where f=f] have "… = (f>g)-(f-f>g-f) > (f>g) - h"
by simp
also from empty[where f=f] have "… = (f>g)-(e>g-f) > (f>g) - h"
by simp
also from eUf[where f="g-f"] have "… = (f>g)-(g-f) > (f>g) - h"
by simp
also from lem6[where f=f] have "… = f > (f>g) - h"
by simp
also from distr[where f=f] have "… = f > (f-h > g-h)"
by simp
also from assoc[where f=f] have "… = f > f-h > g-h"
by simp
also from overlap2[where f=f] have "… = f > g-h"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax12345)
(* shows "f-g > g-h = g-h > f-g"*)
shows "over (min f g) (min g h) = over (min g h) (min f g)"
by (metis combrem overlap2 swap)
(*proof -
from swap[where g="f-g"] have "f-g > g-h = g-h-(f-g) > f-g"
by simp
also from weaksym[where f=g] have "… = g-(f-g)-h > f-g"
by simp
also from lem3[where f=g] have "… = g-h > f-g"
by simp
finally show ?thesis by simp
qed*)
(* now the lemmas for restriction *)
(* lemma w_drem:
assumes "f~=g"
shows "f-(g-h) = f-(f-h) > f-g"
proof -
from drem[where f=f and g=g] show ?thesis by simp
qed
declare w_drem[simp] *)
locale ax_restri = ax12345 +
fixes dorestri::"'a => 'a=> 'a" (infixl "\<down>" 103) (* domain restriction *)
assumes restri: "f \<down> g = f \<ominus> (f \<ominus> g)" (* "f@g = f-(f-g)"*)
lemma (in ax_restri) idemp2:
(* shows "f@f = f"*)
shows "f \<down> f = f"
by (metis lem3 restri)
(* apply simp
proof -
from empty[where f=f] and fMe[where f=f] show "f-(f-f)=f" by simp
qed*)
lemma (in ax_restri) (*lem8:*)
(* shows "f@g > f = f"*)
shows "f \<down> g \<rhd> f = f"
by (metis overlap1 restri)
(*proof -
from overlap1[where f=f] have "f-(f-g) > f = f-(f-g) > (f-g > f)"
by simp
also from assoc[where h=f] have "… = f-(f-g) > f-g > f"
by simp
also from swap[where f=f] have "… = f-g > f > f"
by simp
also from assoc[where h=f] have "… = f-g > (f > f)"
by simp
also from idemp[where f=f] have "… = f-g > f"
by simp
also from overlap1[where f=f] have "… = f"
by simp
finally show "f-(f-g) > f = f" by simp
qed*)
lemma (in ax_restri) lem9:
shows "f \<down> g \<ominus> g = e"
by (metis empty restri weaksym)
(* apply simp
proof -
from weaksym[where f=f] have "f - (f-g) - g = f - g - (f-g)"
by simp
also from empty[where f="f-g"] have "… = e"
by simp
finally show "f - (f-g) - g = e" by simp
qed*)
lemma (in ax_restri) (*lem10:*)
shows "f \<down> g \<down> (h \<ominus> g) = e"
by (metis drem eUf empty fMe lem2 lem3 lem7 lem9 overlap1 restri)
(* proof -
from restri[where f="f@g"] have "f@g@(h-g) = f@g - (f@g - (h-g))"
by simp
also from drem[where f="f@g" and g=h and h=g] have "… = f@g - (f@g - (f@g - g) > f@g - h)"
by simp
also from lem9[where f=f] have "… = f@g - (f@g-e > f@g-h)"
by simp
also from fMe[where f="f@g"] have "… = f@g - (f@g > f@g-h)"
by simp
also from overlap2[where f="f@g"] have "… = f@g - f@g"
by simp
also from empty[where f="f@g"] have "… = e"
by simp
finally show ?thesis by simp
qed *)
lemma (in ax_restri) lem11:
(* shows "f-h > f-f @ h = f-h"*)
shows "f \<ominus> h \<rhd> f \<ominus> f \<down> h = f \<ominus> h"
(*shows "over (min f h) (min f (dorestri f h)) = min f h"*)
by (metis eUf lem9 restri swap)
(*proof -
from swap[where g="f-h"] have "f-h > f-f@h = f-f@h-(f-h) > f-h"
by simp
also from combrem[where f=f] have "… = f-(f@h > f-h) > f-h"
by simp
also have "… = f-(f-(f-h) > (f-h)) > f-h"
by simp
also from swap[where f=f] have "… = f - (f-h > f) > f-h"
by simp
also from overlap1[where f=f] have "… = f-f > f-h"
by simp
also from empty[where f=f] have "… = e > f-h"
by simp
also from eUf[where f="f-h"] have "… = f-h"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax_restri) lem12:
(* shows "f-f@h > f-h = f-f@h"*)
shows "f \<ominus> f \<down> h \<rhd> f \<ominus> h = f \<ominus> f \<down> h"
(*shows "over (min f (dorestri f h)) (min f h) = min f (dorestri f h)"*)
by(metis distr drem eUf empty fMe overlap1 overlap2 restri swap)
(*proof -
from swap[where f="f-h"] have "f-f@h > f-h = f-h-(f-f@h) > f-f@h"
by simp
also from combrem[where f=f] have "… = f-(h > f-f@h) > f-f@h"
by simp
also from lem7[where f=h and g=f and h="f@h"] have "… = f-((h>f) - (f@h-h)) > f-f@h"
by simp
also from lem9[where f=f] have "… = f-((h>f) - e) > f-f@h"
by simp
also from fMe[where f="h>f"] have "… = f-(h>f) > f-f@h"
by simp
also from combrem[where f=f] have "… = f-h-f > f-f@h"
by simp
also from weaksym[where f=f] have "… = f-f-h > f-f@h"
by simp
also from empty[where f=f] have "… = e-h > f-f@h"
by simp
also from eMf[where f=h] have "… = e > f-f@h"
by simp
also from eUf[where f="f-f@h"] have "… = f-f@h"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax_restri) lem13:
shows "f \<ominus> f \<down> h = f \<ominus> h"
by (metis empty fUe lem7 overlap1 restri)
(*proof -
from lem12[where f=f] have "f-f@h = f-f@h > f-h"
by simp
also from weaksym3[where f=f] have "… = f-h > f-f@h"
by simp
also from lem11[where f=f] have "… = f-h"
by simp
finally show ?thesis by simp
qed *)
lemma (in ax_restri) (*lem14:*)
(* shows "f@(g@h) = f@g@h"*)
shows "dorestri f (dorestri g h) = dorestri (dorestri f g) h"
(* by (metis combrem dbmin drem empty fUe lem13 lem3 lem7 overlap1 restri weakswap weaksym weaksym3)*)
proof -
from drem[where f=f and g=g and h="g\<ominus> h"]
have "f \<down> (g \<down> h) = f \<ominus> (f\<ominus> (f\<ominus> (g \<ominus> h)) \<rhd> f \<ominus> g)"
by (metis drem restri)
also from combrem[where f=f]
have "… = f \<ominus> (f \<ominus> (f \<ominus> ( g \<ominus> h))) \<ominus> (f \<ominus> g)"
by simp
also from weaksym[where f=f]
have "… = f \<ominus> (f\<ominus> g) \<ominus> (f\<ominus> (f\<ominus> (g \<ominus> h)))"
by simp
also from drem[where f=f and g=g]
have "… = f \<ominus> (f\<ominus> g) \<ominus> (f\<ominus> (f\<ominus> (f\<ominus> h) \<rhd> f \<ominus> g))"
by simp
also from combrem[where f="f"]
have "… = f \<ominus> (f\<ominus>g \<rhd> (f\<ominus>(f\<ominus>(f\<ominus>h))) \<ominus> (f\<ominus>g))"
by simp
also from lem13[where f=f]
have "… = f \<ominus> (f\<ominus>g \<rhd> f\<ominus>h \<ominus> (f\<ominus>g))"
by (metis combrem lem13 restri weakswap)
also from weaksym[where f=f]
have "… = f \<ominus> (f\<ominus>g \<rhd> f\<ominus>(f\<ominus>g)\<ominus>h)"
by simp
also from combrem[where f=f]
have "… = f \<ominus> (f\<ominus>g) \<ominus> (f\<ominus>(f\<ominus>g)\<ominus>h)"
by simp
finally show ?thesis by (metis restri weaksym)
qed
lemma (in ax_restri) weaksymRes:
(* shows "f@g@h = f@h@g"*)
shows "dorestri (dorestri f g) h = dorestri (dorestri f h) g"
by(metis combrem restri weakswap weaksym)
(* apply simp
proof -
from combrem[where f=f] have "f@g@h = f - (f-g > f-(f-g)-h)"
by simp
also from weaksym[where f=f] have "… = f - (f-g > f-h-(f-g))"
by simp
also from weakswap[where f="f-g"] have "… = f - (f-g > f-h)"
by simp
also from combrem[where f=f] have "… = f - (f-g) - (f-h)"
by simp
also from weaksym[where f=f] have "… = f - (f-h) - (f-g)"
by simp
also from combrem[where f=f] have "… = f - (f-h > f-g)"
by simp
also from weakswap[where f="f-h"] have "… = f - (f-h > f-g-(f-h))"
by simp
also from weaksym[where f=f] have "… = f - (f-h > f-(f-h)-g)"
by simp
also from combrem[where f=f] have "… = f@h@g"
by simp
finally show "f - (f - g) - (f - (f - g) - h) = f - (f - h) - (f - (f - h) - g)" by simp
qed*)
lemma (in ax_restri) lem16:
(* shows "f - g@h = f-g > f-h"*)
shows "min f (dorestri g h) = over (min f g) (min f h)"
(* by (metis assoc combrem distr drem eUf empty fUe lem3 lem7 overlap1 restri weakswap weaksym weaksym3 weaksymRes)*)
proof (neg_clausify)
assume 0: "(f::'a::type) \<ominus> (g::'a::type) \<down> (h::'a::type) ≠ f \<ominus> g \<rhd> f \<ominus> h"
have 1: "!!(X1::'a::type) (X2::'a::type) X3::'a::type.
X1 \<ominus> (X1 \<ominus> X2) \<ominus> (X1 \<ominus> (X1 \<ominus> X2) \<ominus> X3) =
X1 \<ominus> (X1 \<ominus> X3) \<ominus> (X1 \<ominus> (X1 \<ominus> X3) \<ominus> X2)"
by (metis weaksymRes restri)
have 2: "(f::'a::type) \<ominus> (g::'a::type) \<rhd> f \<ominus> (h::'a::type) ≠ f \<ominus> (g \<ominus> (g \<ominus> h))"
by (metis 0 restri)
have 3: "!!(X1::'a::type) (X2::'a::type) X3::'a::type. X1 \<ominus> (X2 \<rhd> X3) = X1 \<ominus> X2 \<ominus> (X3 \<ominus> X2)"
by (metis combrem weakswap)
have 4: "!!(X1::'a::type) (X2::'a::type) X3::'a::type. X1 \<ominus> X2 \<ominus> X3 = X1 \<ominus> X2 \<ominus> (X3 \<ominus> X2)"
by (metis 3 combrem)
have 5: "!!(X1::'a::type) (X2::'a::type) X3::'a::type. X1 \<ominus> X3 = X1 \<ominus> X3 \<ominus> (X2 \<ominus> X1)"
by (metis weaksym lem3)
have 6: "!!(X1::'a::type) (X2::'a::type) X3::'a::type.
X1 \<ominus> (X3 \<ominus> (X1 \<ominus> X2)) = X1 \<ominus> X2 \<rhd> X1 \<ominus> X3"
by (metis lem7 overlap1)
have 7: "!!(X1::'a::type) X2::'a::type. (e::'a::type) \<rhd> X2 \<ominus> X1 = (X1 \<rhd> X2) \<ominus> X1"
by (metis distr empty)
have 8: "!!(X1::'a::type) X2::'a::type. X2 \<ominus> X1 = (X1 \<rhd> X2) \<ominus> X1"
by (metis 7 eUf)
have 9: "!!(X1::'a::type) (X2::'a::type) X3::'a::type.
X3 \<ominus> (X1 \<rhd> X2) = (X1 \<rhd> X2 \<rhd> X3) \<ominus> X1 \<ominus> X2"
by (metis combrem 8)
have 10: "!!(X1::'a::type) (X2::'a::type) X3::'a::type.
X3 \<ominus> X1 \<ominus> X2 = (X1 \<rhd> X2 \<rhd> X3) \<ominus> X1 \<ominus> X2"
by (metis 9 combrem)
have 11: "!!(X1::'a::type) (X2::'a::type) X3::'a::type. X3 \<ominus> X1 \<ominus> X2 = (X2 \<rhd> X3) \<ominus> X1 \<ominus> X2"
by (metis 10 assoc 8)
have 12: "!!(X1::'a::type) (X2::'a::type) X3::'a::type.
(X1 \<rhd> X2) \<ominus> ((X1 \<rhd> X2) \<ominus> X3) \<ominus> (X2 \<ominus> ((X1 \<rhd> X2) \<ominus> X3) \<ominus> X1) =
(X1 \<rhd> X2) \<ominus> ((X1 \<rhd> X2) \<ominus> X1) \<ominus> ((X1 \<rhd> X2) \<ominus> ((X1 \<rhd> X2) \<ominus> X1) \<ominus> X3)"
by (metis 1 11)
have 13: "!!(X1::'a::type) (X2::'a::type) X3::'a::type.
X1 \<ominus> ((X1 \<rhd> X2) \<ominus> X3) =
(X1 \<rhd> X2) \<ominus> ((X1 \<rhd> X2) \<ominus> X1) \<ominus> ((X1 \<rhd> X2) \<ominus> ((X1 \<rhd> X2) \<ominus> X1) \<ominus> X3)"
by (metis 12 weaksym 4 lem7 empty fUe)
have 14: "!!(X1::'a::type) (X2::'a::type) X3::'a::type.
X1 \<ominus> ((X1 \<rhd> X2) \<ominus> X3) = X1 \<ominus> (X1 \<ominus> X3)"
by (metis 13 8 lem7 empty fUe)
have 15: "!!(X1::'a::type) (X2::'a::type) X3::'a::type.
X1 \<ominus> (X3 \<ominus> (X1 \<ominus> (X1 \<ominus> X2))) = X1 \<ominus> (X3 \<ominus> X2)"
by (metis drem 6)
have 16: "!!(X1::'a::type) (X2::'a::type) X3::'a::type.
X1 \<ominus> (X3 \<ominus> (X1 \<ominus> X2)) = X1 \<ominus> X3 \<rhd> X1 \<ominus> X2"
by (metis weaksym3 6)
have 17: "!!(X1::'a::type) (X2::'a::type) X3::'a::type.
X1 \<ominus> (X3 \<ominus> (X1 \<ominus> X2)) = X1 \<ominus> (X2 \<ominus> (X1 \<ominus> X3))"
by (metis 16 6)
have 18: "(f::'a::type) \<ominus> ((h::'a::type) \<ominus> (f \<ominus> (g::'a::type))) ≠ f \<ominus> (g \<ominus> (g \<ominus> h))"
by (metis 2 6)
have 19: "!!(X1::'a::type) (X2::'a::type) X3::'a::type.
X1 \<ominus> (X2 \<ominus> X3) = X1 \<ominus> (X2 \<ominus> (X1 \<ominus> (X2 \<ominus> X3)))"
by (metis 17 5)
have 20: "(f::'a::type) \<ominus> ((g::'a::type) \<ominus> (f \<ominus> (h::'a::type))) ≠ f \<ominus> (g \<ominus> (g \<ominus> h))"
by (metis 18 17)
have 21: "!!(X1::'a::type) (X2::'a::type) X4::'a::type.
X1 \<ominus> (X2 \<ominus> (X1 \<ominus> (X2 \<ominus> (X2 \<ominus> X4)))) = X1 \<ominus> (X2 \<ominus> (X2 \<ominus> X4))"
by (metis 19 14)
have 22: "!!(X1::'a::type) (X2::'a::type) X4::'a::type.
X1 \<ominus> (X2 \<ominus> (X1 \<ominus> X4)) = X1 \<ominus> (X2 \<ominus> (X2 \<ominus> X4))"
by (metis 21 15)
show "False"
by (metis 20 22)
qed
(* apply simp
proof -
from drem[where f=f and g=g] have "f-(g-(g-h)) = f-(f-(g-h)) > f-g"
by simp
also from drem[where f=f and g=g] have "… = f - (f-(f-h) > f-g) > f-g"
by simp
also from combrem[where f=f] have "… = f - (f-(f-h)) - (f-g) > f-g"
by simp
also from lem13[where f=f] have "… = f-h-(f-g) > f-g"
by simp
also from swap[where f="f-h"] have "… = f-g > f-h"
by simp
finally show "f-(g-(g-h)) = f-g > f-h" by simp
qed*)
lemma (in ax_restri) (*lem17:*)
(* shows "f - g@h = f - h@g"*)
shows "min f (dorestri g h) = min f (dorestri h g)"
by (metis lem16 weaksym3)
(*proof -
from lem16[where f=f] have "f - g@h = f-g > f-h"
by simp
also from weaksym3[where f=f] have "…= f-h > f-g"
by simp
also from lem16[where f=f] have "… = f - h@g"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax_restri) lem18:
(* shows "(f>g)@h = f@h > g@h"*)
shows " (f \<rhd> g) \<down> h = f \<down> h \<rhd> g \<down> h"
(* shows "dorestri (over f g) h = over (dorestri f h) (dorestri g h)"*)
(* on this proof sledgehammer failed *)
(* by (metis distr combrem weaksym drem fMgMg overlap2)*)
proof -
from distr[where f=f] have "min (over f g) (min (over f g) h) = min (over f g) (over (min f h) (min g h))"
by simp
also from distr[where f=f] have "… = over (min f (over (min f h) (min g h))) (min g (over (min f h) (min g h)))"
by simp
also from combrem[where f=f] have "… = over (min (min f (min f h)) (min g h)) (min g (over (min f h) (min g h)))"
by simp
also from weaksym[where f=f] have "… = over (min (min f (min g h)) (min f h)) (min g (over (min f h) (min g h)))"
by simp
also from drem[where f=f and g=g] have "… = over (min (over (min f (min f h)) (min f g)) (min f h)) (min g (over (min f h) (min g h)))"
by simp
also from distr[where h="f\<ominus>h"]
have "… = over (over (min (min f (min f h)) (min f h)) (min (min f g) (min f h))) (min g (over (min f h) (min g h)))"
by simp
also from fMgMg[where f=f] have "… = f\<ominus>(f\<ominus>h) \<rhd> f\<ominus>g\<ominus>(f\<ominus>h) \<rhd> g\<ominus>(f\<ominus>h \<rhd> g\<ominus>h)"
by simp
also from weaksym[where f=f] have "… = f\<ominus>(f\<ominus>h) \<rhd> f\<ominus>(f\<ominus>h)\<ominus>g \<rhd> g\<ominus>(f\<ominus>h \<rhd> g\<ominus>h)"
by simp
also from overlap2[where g=g] have "… = f\<ominus>(f\<ominus>h) \<rhd> g\<ominus>(f\<ominus>h \<rhd> g\<ominus>h)"
by simp
also from combrem[where f=g] have "… = f\<ominus>(f\<ominus>h) \<rhd> g\<ominus>(f\<ominus>h)\<ominus>(g\<ominus>h)"
by simp
also from drem[where f=g and g=f] have "… = f\<ominus>(f\<ominus>h) \<rhd> (g\<ominus>(g\<ominus>h) \<rhd> g\<ominus>f) \<ominus> (g\<ominus>h)"
by simp
also from distr[where h="g\<ominus>h"] have "… = f\<ominus>(f\<ominus>h) \<rhd> (g\<ominus>(g\<ominus>h)\<ominus>(g\<ominus>h) \<rhd> g\<ominus>f\<ominus>(g\<ominus>h))"
by simp
also from fMgMg[where f=g] have "… = f\<ominus>(f\<ominus>h) \<rhd> (g\<ominus>(g\<ominus>h) \<rhd> g\<ominus>f\<ominus>(g\<ominus>h))"
by simp
also from weaksym[where f=g] have "… = f\<ominus>(f\<ominus>h) \<rhd> (g\<ominus>(g\<ominus>h) \<rhd> g\<ominus>(g\<ominus>h)\<ominus>f)"
by simp
also from overlap2[where g=f] have "… = f\<ominus>(f\<ominus>h) \<rhd> g\<ominus>(g\<ominus>h)"
by simp
finally show ?thesis by (simp add: restri)
qed
lemma (in ax_restri) lem19:
(* shows "f@(g>h) = f@g > f@h"*)
shows "f \<down> (g \<rhd> h) = f \<down> g \<rhd> f \<down> h"
(* shows "restri f (over g h) = over (restri f g) (restri f h)"*)
by (metis combrem drem restri weaksym)
(* by (metis dbmin drem eMf empty fUe restri weaksymRes)*)
(*
apply simp
proof -
from combrem[where f=f] have "f@(g>h) = f-(f-g-h)"
by simp
also from drem[where f=f and g="f-g" and h=h] have "… = f-(f-h) > f-(f-g)"
by simp
also from weaksym3[where f=f] have "… = f@g > f@h"
by simp
finally show "f - (f - (g > h)) = f - (f - g) > f - (f - h)" by simp
qed*)
lemma (in ax_restri) (*lem20:*)
(* shows "(f>g)@(f>h) = f > g@h"*)
shows "(f \<rhd> g) \<down> (f \<rhd> h) = f \<rhd> g \<down> h"
by (metis combrem distr eUf empty lem7 restri weaksym)
(*proof -
from lem18[where f=f] have "(f>g)@(f>h) = f@(f>h) > g@(f>h)"
by simp
also from lem19[where f=f] have "… = f@f > f@h > g@(f>h)"
by simp
also from idemp2[where f=f] have "… = f > f@h > g@(f>h)"
by simp
also from overlap2[where f=f] have "… = f > g@(f>h)"
by simp
also from lem19[where f=g] have "… = f > (g@f > g@h)"
by simp
also from assoc[where f=f] have "… = f > g@f > g@h"
by simp
also from lem2[where f=f] have "… = f > g@h"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax_restri) (*lem21:*)
shows "f \<down> (g \<ominus> h) = f \<down> g \<ominus> h"
(* shows "f@(g-h) = f@g - h"*)
apply (simp add:restri)
by (metis combrem dbmin distr eUf empty fUe lem18 lem3 lem7 restri weaksym)
(* apply simp
proof -
from drem[where f=f and g=g] have "f@(g-h) = f - (f-(f-h) > f-g)"
by simp
also from combrem[where f=f] have "… = f-(f-(f-h)) - (f-g)"
by simp
also from lem13[where f=f] have "… = f-h-(f-g)"
by simp
also from weaksym[where f=f] have "… = f-(f-g)-h"
by simp
finally show "f-(f-(g-h)) = f-(f-g)-h" by simp
qed*)
lemma (in ax_restri) lem22:
shows "(f \<ominus> g) \<down> h = f \<down> h \<ominus> g"
(* shows "(f-g)@h = f@h - g"*)
by(metis combrem dbmin distr eUf empty fUe lem18 lem3 lem7 restri weakswap weaksym)
(*
apply simp
proof -
from weaksym[where f=f] have "(f-g)@h = f - g - (f-h-g)"
by simp
also from combrem[where f=f] have "… = f - (g > f-h-g)"
by simp
also from weakswap[where f=g] have "… = f - (g > f-h)"
by simp
also from combrem[where f=f] have "… = f - g - (f-h)"
by simp
also from weaksym[where f=f] have "… = f - (f-h) - g"
by simp
finally show "(f-g)-(f-g-h) = f-(f-h)-g" by simp
qed*)
lemma (in ax_restri) (*lem23:*)
(* shows "(f-h)@(g-h) = f@g-h"*)
shows "(f \<ominus> h) \<down> (g \<ominus> h) = f \<down> g \<ominus> h"
apply (simp add: restri)
by (metis dbmin eMf empty fMe fUe lem22 restri)
(*proof -
from combrem[where f=f] have "f \<ominus> h \<ominus> (f\<ominus> h \<ominus> (g \<ominus> h)) = f \<ominus> (h \<rhd> f \<ominus> (h \<rhd> g \<ominus> h))"
by simp
also from weakswap[where f=h] have "… = f \<ominus> (h \<rhd> f \<ominus> (h \<rhd> g))"
by simp
also from combrem[where f=f] have "… = f \<ominus> (h \<rhd> f \<ominus> h \<ominus> g)"
by simp
also from weaksym[where f=f] have "… = f \<ominus> (h \<rhd> f \<ominus> g \<ominus> h)"
by simp
also from weakswap[where f=h] have "… = f \<ominus> (h \<rhd> f \<ominus> g)"
by simp
also from combrem[where f=f] have "… = f \<ominus> h \<ominus> (f \<ominus> g)"
by simp
also from weaksym[where f=f] have "… = f\<ominus> (f \<ominus> g) \<ominus> h"
by simp
finally show "f \<ominus> h \<ominus> (f \<ominus> h \<ominus> (g \<ominus> h)) = f \<ominus> (f \<ominus> g) \<ominus> h" by simp
qed *)
(*lemma rev_combrem:
shows "f-(g>h) = f-g-h"
apply(simp add: combrem)
done
lemma rev_distr:
shows "f-h > g-h = (f>g)-h"
apply(simp add: distr)
done
lemma rev_drem:
shows "f@h > f-g = f-(g-h)"
proof -
from drem[where f=f and g=g] show ?thesis by simp
qed
lemma rev_swap:
shows "g > f = f-g > g"
apply(simp add: swap)
done
lemma rev_empty:
shows "e = f-f"
apply(simp add: empty)
done
lemma rev_idemp:
shows "f = f>f"
apply(simp add: idemp)
done
declare distr[simp]
declare rev_distr[simp]
declare drem[simp]
declare rev_drem[simp]
declare swap[simp]
declare rev_swap[simp]
declare empty[simp]
declare rev_empty[simp]
declare idemp[simp]
declare rev_idemp[simp]
lemma boem:
shows "f-g-h = f-(g>h)"
apply simp
*)
lemma (in ax_restri) lem24:
shows "f \<ominus> g \<rhd> h \<down> g = h \<down> g \<rhd> f \<ominus> g"
(* shows "f-g > h@g = h@g > f-g"*)
apply (simp add: restri)
by (metis swap restri combrem distr dbmin empty eMf fUe restri)
(*proof -
from swap[where g="f\<ominus>g"] have "f\<ominus>g \<rhd> h\<down>g = h\<down>g\<ominus>(f\<ominus>g) \<rhd> f\<ominus>g"
by simp
also from restri[where f=h] have "… = h\<ominus>(h\<ominus>g)\<ominus>(f\<ominus>g) \<rhd> f\<ominus>g"
by simp
also from combrem[where f=h] have "… = h\<ominus>(h\<ominus>g\<rhd>f\<ominus>g) \<rhd> f\<ominus>g"
by simp
also from distr[where h=g] have "… = h\<ominus>((h\<rhd>f)\<ominus>g) \<rhd> f\<ominus>g"
by simp
also from drem[where f=h and g="h\<rhd>f" and h=g] have "… = h\<ominus>(h\<ominus>g) \<rhd> h\<ominus>(h\<rhd>f) \<rhd> f\<ominus>g"
by simp
also from combrem[where f=h] have "… = h\<ominus>(h\<ominus>g) \<rhd> h\<ominus>h\<ominus>f \<rhd> f\<ominus>g"
by simp
also from empty[where f=h] have "… = h\<ominus>(h\<ominus>g) \<rhd> e\<ominus>f \<rhd> f\<ominus>g"
by simp
also from eMf[where f=f] have "… = h\<ominus>(h\<ominus>g) \<rhd> e \<rhd> f\<ominus>g"
by simp
also from fUe[where f="h\<ominus>(h\<ominus>g)"] have "… = h\<ominus>(h\<ominus>g) \<rhd> f\<ominus>g"
by simp
also from restri[where f=h] have "… = h\<down>g \<rhd> f\<ominus>g"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax_restri) (*lem25:*)
shows "x \<down> y \<ominus> z \<rhd> v \<ominus> (y \<rhd> w) = v \<ominus> (y \<rhd> w) \<rhd> (x \<down> y) \<ominus> z"
(* shows "x@y-z > v-(y>w) = v-(y>w) > x@y-z"*)
by (metis lem22 combrem weaksym lem24 combrem)
(* by (metis dbmin eMf eUf empty fUe lem22 restri)*)
(*
proof -
from lem22[where f=x] have "x@y-z > v-(y>w) = (x-z)@y > v-(y>w)"
by simp
also from combrem[where f=v] have "… = (x-z)@y > v-y-w"
by simp
also from weaksym[where f=v] have "… = (x-z)@y > v-w-y"
by simp
also from lem24[where h="x-z"] have "… = v-w-y > (x-z)@y"
by simp
also from weaksym[where f=v] have "… = v-y-w > (x-z)@y"
by simp
also from combrem[where f=v] have "… = v-(y>w) > (x-z)@y"
by simp
also from lem22[where f=x] have "… = v-(y>w) > x@y-z"
by simp
finally show ?thesis by simp
qed*)
lemma (in ax_restri) (*lem26:*)
shows "x \<down> y \<ominus> z \<rhd> v \<ominus> (x \<rhd> w) = v \<ominus> (x \<rhd> w) \<rhd> x \<down> y \<ominus> z"
(* shows "x @ y - z > v - (x > w) = v - (x > w) > x @ y - z"*)
(* by (metis combrem dbmin distr eUf empty fUe lem18 lem3 lem7 restri swap weaksym)*)
proof -
from idemp2[where f=x]
have "x\<down>y\<ominus>z \<rhd> v\<ominus>(x\<rhd>w) = x\<down>x\<down>y\<ominus>z \<rhd> v\<ominus>(x\<rhd>w)"
by simp
also from weaksymRes[where f=x] have "… = x\<down>y\<down>x\<ominus>z \<rhd> v\<ominus>(x\<rhd>w)"
by simp
also from lem22[where g=z] have "… = (x\<down>y\<ominus>z)\<down>x \<rhd> v\<ominus>(x\<rhd>w)"
by simp
also from combrem[where f=v] have "… = (x\<down>y\<ominus>z)\<down>x \<rhd> v\<ominus>x\<ominus>w"
by simp
also from weaksym[where f=v] have "… = (x\<down>y\<ominus>z)\<down>x \<rhd> v\<ominus>w\<ominus>x"
by simp
also from lem24[where g=x] have "… = v\<ominus>w\<ominus>x \<rhd> (x\<down>y\<ominus>z)\<down>x"
by simp
also from weaksym[where f=v] have "… = v\<ominus>x\<ominus>w \<rhd> (x\<down>y\<ominus>z)\<down>x"
by simp
also from combrem[where f=v] have "… = v\<ominus>(x\<rhd>w) \<rhd> (x\<down>y\<ominus>z)\<down>x"
by simp
also from lem22[where g=z] have "… = v\<ominus>(x\<rhd>w) \<rhd> x\<down>y\<down>x\<ominus>z"
by simp
also from weaksymRes[where f=x] have "… = v\<ominus>(x\<rhd>w) \<rhd> x\<down>x\<down>y\<ominus>z"
by simp
also from idemp2[where f=x] have "… = v\<ominus>(x\<rhd>w) \<rhd> x \<down> y\<ominus>z"
by simp
finally show ?thesis by (simp add: restri)
qed
end
lemma eUf:
e \<rhd> f = f
lemma fUe:
f \<rhd> e = f
lemma fMe:
f \<ominus> e = f
lemma overlap1:
f \<ominus> g \<rhd> f = f
lemma combrem:
f \<ominus> g \<ominus> h = f \<ominus> (g \<rhd> h)
lemma partition1:
f \<ominus> (f \<ominus> g) \<rhd> f \<ominus> g = f
lemma eMf:
e \<ominus> f = e
lemma weakswap:
f \<rhd> g \<ominus> f = f \<rhd> g
lemma fMgMg:
f \<ominus> g \<ominus> g = f \<ominus> g
lemma partition2:
f \<ominus> g \<rhd> f \<ominus> (f \<ominus> g) = f
lemma fMgMf:
f \<ominus> g \<ominus> f = e
lemma overlap2:
f \<rhd> f \<ominus> g = f
lemma lem1:
f \<ominus> (f \<rhd> g) = e
lemma fUgUf:
f \<rhd> g \<rhd> f = f \<rhd> g
lemma weaksym:
f \<ominus> g \<ominus> h = f \<ominus> h \<ominus> g
lemma lem2:
f \<rhd> g \<ominus> (g \<ominus> f) = f
lemma lem3:
f \<ominus> (g \<ominus> f) = f
lemma lem4:
(f \<rhd> g \<rhd> h) \<ominus> f = g \<ominus> f \<rhd> h \<ominus> f
lemma assoc:
f \<rhd> g \<rhd> h = f \<rhd> (g \<rhd> h)
lemma weaksym3:
f \<ominus> g \<rhd> f \<ominus> h = f \<ominus> h \<rhd> f \<ominus> g
lemma drem:
f \<ominus> (g \<ominus> h) = f \<ominus> (f \<ominus> h) \<rhd> f \<ominus> g
lemma lem6:
(f \<rhd> g) \<ominus> (g \<ominus> f) = f
lemma lem7:
(f \<rhd> g) \<ominus> (h \<ominus> f) = f \<rhd> g \<ominus> h
lemma
f \<ominus> g \<rhd> g \<ominus> h = g \<ominus> h \<rhd> f \<ominus> g
lemma idemp2:
f \<down> f = f
lemma
f \<down> g \<rhd> f = f
lemma lem9:
f \<down> g \<ominus> g = e
lemma
f \<down> g \<down> (h \<ominus> g) = e
lemma lem11:
f \<ominus> h \<rhd> f \<ominus> f \<down> h = f \<ominus> h
lemma lem12:
f \<ominus> f \<down> h \<rhd> f \<ominus> h = f \<ominus> f \<down> h
lemma lem13:
f \<ominus> f \<down> h = f \<ominus> h
lemma
f \<down> (g \<down> h) = f \<down> g \<down> h
lemma weaksymRes:
f \<down> g \<down> h = f \<down> h \<down> g
lemma lem16:
f \<ominus> g \<down> h = f \<ominus> g \<rhd> f \<ominus> h
lemma
f \<ominus> g \<down> h = f \<ominus> h \<down> g
lemma lem18:
(f \<rhd> g) \<down> h = f \<down> h \<rhd> g \<down> h
lemma lem19:
f \<down> (g \<rhd> h) = f \<down> g \<rhd> f \<down> h
lemma
(f \<rhd> g) \<down> (f \<rhd> h) = f \<rhd> g \<down> h
lemma
f \<down> (g \<ominus> h) = f \<down> g \<ominus> h
lemma lem22:
(f \<ominus> g) \<down> h = f \<down> h \<ominus> g
lemma
(f \<ominus> h) \<down> (g \<ominus> h) = f \<down> g \<ominus> h
lemma lem24:
f \<ominus> g \<rhd> h \<down> g = h \<down> g \<rhd> f \<ominus> g
lemma
x \<down> y \<ominus> z \<rhd> v \<ominus> (y \<rhd> w) =
v \<ominus> (y \<rhd> w) \<rhd> x \<down> y \<ominus> z
lemma
x \<down> y \<ominus> z \<rhd> v \<ominus> (x \<rhd> w) =
v \<ominus> (x \<rhd> w) \<rhd> x \<down> y \<ominus> z