(def-language group-action-language
(embedded-language groups-language)
(base-types uu)
(constants
(act "[uu,gg,uu]")))
(def-theory group-actions
(language group-action-language)
(component-theories groups)
(axioms
(act-id
"forall(alpha:uu,g:gg, act(alpha,e) = alpha)"
rewrite transportable-macete)
(act-associativity
"forall(alpha:uu,g,h:gg, act(alpha,g mul h) = act(act(alpha,g),h))"
transportable-macete)))
(def-constant orbit
"lambda(alpha:uu, indic{beta:uu, forsome(g:gg, beta = act(alpha,g))})"
(theory group-actions))
(def-constant stabilizer
"lambda(alpha:uu, indic{g:gg, act(alpha,g)=alpha})"
(theory group-actions))
(def-theorem act-is-total
"total_q(act,[uu,gg,uu])"
(theory group-actions)
(usages d-r-convergence transportable-macete)
(proof
(
insistent-direct-inference
(instantiate-theorem act-associativity ("x_0" "x_1" "e"))
)))
(def-theorem orbit-is-total
"total_q(orbit,[uu,sets[uu]])"
(theory group-actions)
(usages d-r-convergence transportable-macete)
(proof
(
(unfold-single-defined-constant-globally orbit)
simplify-insistently
)))
(def-theorem stabilizer-is-total
"total_q(stabilizer,[uu,sets[gg]])"
(theory group-actions)
(usages d-r-convergence transportable-macete)
(proof
(
(unfold-single-defined-constant-globally stabilizer)
simplify-insistently
)))
(def-theorem reverse-act-associativity
"forall(alpha:uu,g,h:gg, act(act(alpha,g),h) = act(alpha,g mul h))"
(theory group-actions)
(usages transportable-macete)
(proof
(
(apply-macete-with-minor-premises act-associativity)
simplify
)))
(def-theorem action-by-stabilizer-member
"forall(alpha:uu,g:gg, g in stabilizer(alpha) implies act(alpha,g)=alpha)"
(theory group-actions)
(usages transportable-macete)
(proof
(
(unfold-single-defined-constant-globally stabilizer)
simplify
)))
(def-theorem left-act-inv
"forall(alpha:uu,g:gg, act(act(alpha,inv(g)),g) = alpha)"
(theory group-actions)
(usages rewrite transportable-macete)
(proof
(
(apply-macete-with-minor-premises reverse-act-associativity)
simplify
)))
(def-theorem right-act-inv
"forall(alpha:uu,g:gg, act(act(alpha,g),inv(g)) = alpha)"
(theory group-actions)
(usages rewrite transportable-macete)
(proof
(
(apply-macete-with-minor-premises reverse-act-associativity)
simplify
)))
(def-compound-macete simplify-actions
(series
(repeat reverse-act-associativity)
simplify))
(def-translation act->left-mul
(source group-actions)
(target groups)
(fixed-theories h-o-real-arithmetic)
(sort-pairs
(uu "gg"))
(constant-pairs
(mul "lambda(x,y:gg, y mul x)")
(act "lambda(x,y:gg, y mul x)"))
force-under-quick-load
(theory-interpretation-check using-simplification))
(def-translation act->right-mul
(source group-actions)
(target groups)
(fixed-theories h-o-real-arithmetic)
(sort-pairs
(uu "gg"))
(constant-pairs
(act "mul"))
force-under-quick-load
(theory-interpretation-check using-simplification))
(def-translation act->conjugate
(source group-actions)
(target groups)
(fixed-theories h-o-real-arithmetic)
(sort-pairs
(uu "gg"))
(constant-pairs
(act "lambda(g,h:gg, (inv(h) mul g) mul h)"))
force-under-quick-load
(theory-interpretation-check using-simplification))
(def-theorem action-macete
"forall(alpha,beta:uu,g:gg, alpha=beta iff act(alpha,g) = act(beta,g))"
reverse
(theory group-actions)
(usages transportable-macete)
(proof
(
direct-and-antecedent-inference-strategy
(instantiate-theorem act-associativity ("alpha" "g" "inv(g)"))
(contrapose "with(g,h:gg,alpha,beta:uu, act(alpha,g)=act(beta,h))")
(force-substitution "act(alpha,g)" "act(beta,g)" (0))
simplify
)))
(def-theorem stabilizers-are-subgroups
"forall(alpha:uu, subgroup(stabilizer(alpha)))"
(theory group-actions)
(usages transportable-macete)
(proof
(
unfold-defined-constants
simplify-insistently
direct-and-antecedent-inference-strategy
(instantiate-existential ("e"))
simplify
(apply-macete-with-minor-premises act-associativity)
simplify
(apply-macete-with-minor-premises action-macete)
(instantiate-existential ("g_$0"))
simplify
)))