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