(def-theory-instance vector-spaces-over-rr (source vector-spaces) (target h-o-real-arithmetic) (translation fields-to-rr) (renamer vs-renamer))
(def-overloading + (h-o-real-arithmetic +) (vector-spaces-over-rr ++))
(def-overloading * (h-o-real-arithmetic *) (vector-spaces-over-rr **))
(def-constant sub_vv "lambda(x,y:uu,x+[-1]*y)" (theory vector-spaces-over-rr))
(def-algebraic-processor vector-space-algebraic-processor (language vector-spaces-over-rr) (base ((operations (+ ++) (* **) (sub sub_vv) (zero v0)))) (coefficient rr-algebraic-processor))
(def-overloading sub (h-o-real-arithmetic sub) (vector-spaces-over-rr sub_vv))
(def-theorem sub-lemma-for-processor "forall(y,x:uu,x-y=x+v0-y)" (theory vector-spaces-over-rr) (proof ( direct-inference-strategy unfold-defined-constants (force-substitution "x+(v0+[-1]*y)" "x+v0+[-1]*y" (0)) (apply-macete-with-minor-premises %vector-zero-identity) (apply-macete-with-minor-premises %vector-plus-associativity) )))
(def-theorem () "forall(x:uu,x+v0-x=v0)" (theory vector-spaces-over-rr) (proof ( direct-and-antecedent-inference-strategy unfold-defined-constants (force-substitution "x+(v0+[-1]*x)" "x+v0+[-1]*x" (0)) (apply-macete-with-minor-premises %vector-zero-identity) (force-substitution "x+[-1]*x" "(1+[-1])*x" (0)) (force-substitution "(1+[-1])" "0" (0)) (apply-macete-with-minor-premises tr%scalar-multiplication-by-zero) simplify (apply-macete-with-minor-premises %vector-times-right-distributivity) (apply-macete-with-minor-premises %scalar-multiplication-by-one) (apply-macete-with-minor-premises %vector-plus-associativity) )))
(def-theory-processors vector-spaces-over-rr (algebraic-simplifier (vector-space-algebraic-processor ** ++ sub_vv)) (algebraic-term-comparator vector-space-algebraic-processor))
(def-language normed-linear-space-language (embedded-language vector-spaces-over-rr-language) (constants (norm "[uu,rr]")))
(def-theory normed-linear-spaces (language normed-linear-space-language) (component-theories vector-spaces-over-rr) (axioms (norm-totality "total_q{norm,[uu, rr]}" d-r-convergence transportable-macete) (positivity-of-norm "forall(x:uu, 0<=norm(x))" transportable-macete) (norm-zero "forall(x:uu, norm(x)=0 iff x = v0)" transportable-macete) (norm-scalar-multiplication "forall(x:uu, a:rr, norm(a**x) = abs(a) * norm(x))" transportable-macete) (norm-triangle-inequality "forall(x,y:uu, norm(x++y) <= norm(x) + norm(y))" transportable-macete)))
(def-theorem () "forall(x,y,z:uu,norm(x+[-1]*z)<=norm(x+[-1]*y)+norm(y+[-1]*z))" (theory normed-linear-spaces) (proof ( (force-substitution "x+[-1]*z" "(x+[-1]*y)+(y+[-1]*z)" (0)) (apply-macete-with-minor-premises norm-triangle-inequality) simplify )))
(def-theorem () "forall(x,y,z:uu, norm([-1]*z+x)<=norm([-1]*z+y)+norm(x+[-1]*y))" (theory normed-linear-spaces) (proof ( (force-substitution "[-1]*z+x" "([-1]*z+y)+(x+[-1]*y)" (0)) (apply-macete-with-minor-premises norm-triangle-inequality) simplify )))
(def-theorem () "forall(x,y:uu,norm(x+[-1]*y)=norm([-1]*x+y))" (theory normed-linear-spaces) (proof ( (force-substitution "x+[-1]*y" "[-1]*([-1]*x+y)" (0)) (apply-macete-with-minor-premises norm-scalar-multiplication) (apply-macete-with-minor-premises absolute-value-non-positive) simplify simplify )))
(def-theorem () "forall(x,y:uu,x=y iff norm(x+[-1]*y)=0)" (theory normed-linear-spaces) (proof ( (apply-macete-with-minor-premises norm-zero) simplify )))
(def-theory-ensemble-instances metric-spaces force-under-quick-load (target-theories normed-linear-spaces normed-linear-spaces) (multiples 1 2) (theory-interpretation-check using-simplification) (sorts (pp uu uu)) (constants (dist "lambda(x,y:uu, norm(x-y))" "lambda(x,y:uu, norm(x-y))")))
(def-theory-ensemble-overloadings metric-spaces (1 2))
(def-theorem closed-balls-are-defined "forall(b:uu,r:rr,#(ball(b,r)))" (theory normed-linear-spaces) (usages d-r-convergence) (proof ( unfold-defined-constants simplify-insistently )))
(def-theorem open-balls-are-defined "forall(b:uu,r:rr,#(open%ball(b,r)))" (theory normed-linear-spaces) (usages d-r-convergence) (proof ( unfold-defined-constants simplify-insistently )))
(def-theorem () "norm(v0)=0" (usages rewrite) (theory normed-linear-spaces) (proof ( (apply-macete-with-minor-premises norm-zero) )))
(def-theorem norm-continuity-lemma "forall(x,y,z:uu, norm(x)-norm(y)<=norm(x-y))" (theory normed-linear-spaces) (proof ( (force-substitution "norm(x)-norm(y)<=norm(x-y)" "norm((x-y)+y)<=norm(x-y)+norm(y)" (0)) (apply-macete-with-minor-premises norm-triangle-inequality) simplify )))
(def-theorem vs-addition-of-fractions-left "forall(a,b:rr,u,y:uu,a/b*u + y == (1/b)*(a*u+b*y))" (proof ( (apply-macete-with-minor-premises %vector-times-left-distributivity) (force-substitution "1/b*(b*y)" "(1/b*b)*y" (0)) direct-and-antecedent-inference-strategy (case-split ("b=0")) simplify simplify (apply-macete-with-minor-premises %vector-times-associativity) )) (theory vector-spaces-over-rr))
(def-theorem vs-addition-of-fractions-right "forall(a,b:rr,u,y:uu, y+a/b*u == (1/b)*(a*u+b*y))" (proof ( (apply-macete-with-minor-premises %vector-times-left-distributivity) (force-substitution "1/b*(b*y)" "(1/b*b)*y" (0)) direct-and-antecedent-inference-strategy (case-split ("b=0")) simplify simplify (apply-macete-with-minor-premises %vector-times-associativity) )) (theory vector-spaces-over-rr))
(def-theorem sub-replacement "forall(x,y:uu,x-y=x+[-1]*y)" (proof ( simplify )) (theory vector-spaces-over-rr))
(def-theorem vector-times-associativity-left "forall(a,b:rr,x:uu,a*(b*x)=(a*b)*x)" (proof ( simplify )) (theory vector-spaces-over-rr))
(def-compound-macete ns-fractional-expression-manipulation (repeat vs-addition-of-fractions-right vs-addition-of-fractions-left sub-replacement vector-times-associativity-left norm-scalar-multiplication))