# Proofs

proof_type: t_proof
decl_type: tcc
library: graphs
theory: meng_scaff_prelude
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "separable?")
   (expand "in?")
   (flatten)
   (expand "disjoint?")
   (ground))


proof_type: t_proof
decl_type: tcc
library: graphs
theory: meng_scaff_prelude
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand* "^" min empty_seq)
   (expand "o ")
   (expand "rev")
   (typepred "p2!1")
   (typepred "p1!1")
   (lemma "walk_concat")
   (inst?)
   (inst -1 "t!1" "p2!1")
   (assert)
   (hide -3 -5)
   (expand "o ")
   (expand "rev")
   (expand* "^" min empty_seq)
   (expand "walk_from?")
   (flatten)
   (assert)
   (expand "walk?")
   (expand "finseq_appl")
   (flatten)
   (split +)
   (("1" (hide -4) (expand "verts_in?") (propax)) ("2" (propax))))


proof_type: t_proof
decl_type: tcc
library: graphs
theory: meng_scaff_prelude
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "path_from_l")
   (inst?)
   (assert)
   (expand "path_from?")
   (expand "walk_from?")
   (expand "from?")
   (expand "path?")
   (flatten)
   (assert))


proof_type: t_proof
decl_type: tcc
library: graphs
theory: meng_scaff_prelude
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (hide -1 -3)
   (expand "path_from?")
   (expand "path?")
   (expand "from?")
   (expand "walk_from?")
   (flatten)
   (assert))


proof_type: f_proof
decl_type: formula
library: graphs
theory: h_menger
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (case "(FORALL (zz: T): NOT separates(G!1,singleton(zz),s!1,t!1))")
   (("1"
     (inst -1 "z!1")
     (expand "separates" 1)
     (expand "singleton")
     (assert)
     (skosimp*)
     (lemma "walk_to_path_from")
     (inst?)
     (("1"
       (assert)
       (hide -2)
       (skosimp*)
       (case-replace
        "del_verts(G!1, {y: T | y = z!1}) = del_vert(G!1, z!1)")
       (("1" (hide -1) (inst + "p!1"))
        ("2"
         (hide -1 -2 -3 4)
         (apply-extensionality :hide? t)
         (("1"
           (apply-extensionality :hide? t)
           (("1"
             (iff 1)
             (expand "del_verts")
             (expand "del_vert")
             (ground)
             (("1" (inst - "z!1")) ("2" (skosimp*) (assert))))
            ("2"
             (lemma "finite_singleton[T]")
             (inst?)
             (expand "singleton")
             (propax))))
          ("2"
           (apply-extensionality :hide? t)
           (("1"
             (expand "del_verts")
             (expand "del_vert")
             (expand "difference")
             (expand "remove")
             (expand "member")
             (iff)
             (ground))
            ("2"
             (lemma "finite_singleton[T]")
             (inst?)
             (expand "singleton")
             (propax))))
          ("3"
           (lemma "finite_singleton[T]")
           (inst?)
           (expand "singleton")
           (propax))))
        ("3"
         (lemma "finite_singleton[T]")
         (inst?)
         (expand "singleton")
         (propax))))
      ("2"
       (lemma "finite_singleton[T]")
       (inst?)
       (expand "singleton")
       (propax))))
    ("2"
     (skosimp*)
     (hide -2)
     (expand "sep_num")
     (lemma "min_sep_set_card")
     (inst?)
     (assert)
     (rewrite "card_singleton")
     (assert))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: h_menger
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (auto-rewrite finseq_appl)
   (expand "in?")
   (flatten)
   (lemma "path_not_thru")
   (inst?)
   (assert)
   (inst -1 "w1!1")
   (expand "disjoint?")
   (flatten)
   (assert)
   (skosimp*)
   (name "path2" "add1(gen_seq2(G!1,s!1,w1!1),t!1)")
   (case "independent?(pn!1,path2)")
   (("1"
     (lemma "path_from_l")
     (inst?)
     (assert)
     (expand "path_from?")
     (flatten)
     (lemma "path?_del_vert")
     (inst?)
     (assert)
     (case "path?[T](G!1, path2) AND from?[T](path2, s!1, t!1)")
     (("1" (flatten) (inst + "pn!1" "path2") (assert))
      ("2"
       (hide -1 -2 -3 -5 -6 -7 -8 -9 8)
       (replace -1 * rl)
       (hide -1)
       (split +)
       (("1"
         (expand "path?")
         (split +)
         (("1"
           (lemma "walk?_add1")
           (inst?)
           (assert)
           (expand "gen_seq2")
           (hide 2)
           (expand "walk?")
           (expand "verts_in?")
           (skosimp*)
           (expand "edge?")
           (assert)
           (rewrite "dbl_comm"))
          ("2"
           (skosimp*)
           (expand "add1")
           (expand "gen_seq2")
           (typepred "i!1")
           (typepred "j!1")
           (expand "add1")
           (expand "gen_seq2")
           (ground)
           (lift-if)
           (ground)
           (("1" (lift-if) (ground)) ("2" (lift-if) (ground))
            ("3" (lift-if) (ground))))))
        ("2"
         (expand "add1")
         (expand "from?")
         (expand "gen_seq2")
         (propax))))))
    ("2"
     (hide -3 -4 -5 8)
     (expand "independent?")
     (skosimp*)
     (replace -6 * rl)
     (hide -6)
     (expand "add1")
     (expand "gen_seq2")
     (lift-if)
     (ground)
     (expand "path_from?")
     (expand "path?")
     (expand "walk?")
     (flatten)
     (hide -8 -9)
     (expand "verts_in?")
     (inst?)
     (expand "del_vert")
     (expand "remove")
     (propax))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: h_menger
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "min_sep_set_seps")
   (inst?)
   (assert)
   (expand "sep_num")
   (lemma "min_sep_set_card")
   (inst?)
   (("1"
     (assert)
     (hide -2 2)
     (expand "separates")
     (skosimp*)
     (split 1)
     (("1" (propax)) ("2" (propax))
      ("3"
       (skosimp*)
       (inst?)
       (expand "walk_from?")
       (flatten)
       (assert)
       (expand "walk?")
       (split +)
       (("1"
         (flatten)
         (expand "verts_in?")
         (skosimp*)
         (hide -4)
         (inst?)
         (ground)
         (expand "del_verts")
         (expand "difference")
         (expand "member")
         (flatten)
         (expand "del_vert")
         (expand "remove")
         (expand "member")
         (flatten)
         (assert))
        ("2"
         (skosimp*)
         (expand "finseq_appl")
         (expand "edge?")
         (inst?)
         (assert)
         (flatten)
         (assert)
         (hide -4)
         (expand "del_verts")
         (flatten)
         (split +)
         (("1"
           (lemma "edges_del_vert")
           (inst?)
           (("1" (assert)) ("2" (inst?) (assert))))
          ("2" (propax))))))))
    ("2"
     (hide -1 2)
     (expand "del_vert")
     (expand "remove")
     (expand "member")
     (propax))
    ("3"
     (hide -1 4)
     (expand "del_vert")
     (expand "remove")
     (expand "member")
     (propax))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: h_menger
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "del_vert")
   (expand "separates")
   (expand "singleton")
   (expand "dbl")
   (flatten)
   (assert)
   (skosimp*)
   (inst?)
   (expand "walk_from?")
   (flatten)
   (assert)
   (expand "walk?")
   (flatten)
   (split +)
   (("1"
     (expand "verts_in?")
     (hide -7)
     (skosimp*)
     (expand "del_verts")
     (expand "difference")
     (expand "remove")
     (expand "member")
     (inst?)
     (flatten)
     (assert))
    ("2"
     (skosimp*)
     (expand "edge?")
     (inst?)
     (assert)
     (flatten)
     (assert)
     (expand "del_verts")
     (hide -7)
     (flatten)
     (assert)
     (split +)
     (("1" (expand "dbl") (inst-cp - "ajm!1"))
      ("2" (skosimp*) (assert) (inst - "z!1") (assert))))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: h_menger
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "separable?")
   (flatten)
   (assert)
   (expand "edge?")
   (expand "del_vert")
   (assert)
   (expand "remove")
   (expand "member")
   (propax))


proof_type: f_proof
decl_type: formula
library: graphs
theory: h_menger
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (induct "p" 1 "graph_induction_walk")
   (("1"
     (skosimp*)
     (inst -1 "trunc1(w!1)")
     (("1"
       (rewrite "l_trunc1")
       (assert)
       (case "NOT edge?(G!1)(seq(w!1)(length(w!1) - 3), t!1)
                              AND edge?(G!1)(seq(w!1)(length(w!1)-2), t!1)")
       (("1" (inst + "length(w!1)-2") (flatten) (assert))
        ("2"
         (inst -1 "G!1" "t!1")
         (case "length(w!1) = 4")
         (("1"
           (hide -2)
           (replace -1)
           (hide -1)
           (assert)
           (inst + "1")
           (assert))
          ("2"
           (assert)
           (expand "trunc1")
           (expand* "^" min empty_seq)
           (skosimp*)
           (inst + "j!1")
           (assert))))))
      ("2" (assert))))
    ("2" (skosimp*) (assert)) ("3" (skosimp*) (assert))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: h_menger
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (lemma "path_not_thru")
   (inst?)
   (assert)
   (inst?)
   (expand "edge?")
   (flatten)
   (assert)
   (skosimp*)
   (name "path2" "add1(gen_seq2(G!1,s!1,x!1),t!1)")
   (inst + "path2" "pn!1")
   (expand "path_from?")
   (flatten)
   (expand "from?")
   (flatten)
   (assert)
   (lemma "path?_del_vert")
   (inst?)
   (assert)
   (replace -2 * rl)
   (hide -2)
   (split +)
   (("1"
     (rewrite "path?_add1")
     (("1" (hide 2) (rewrite "path?_gen_seq2"))
      ("2" (expand "gen_seq2") (expand "edge?") (propax))
      ("3"
       (expand "verts_of" -1)
       (expand "finseq_appl")
       (expand "gen_seq2" -1)
       (skosimp*)
       (lift-if)
       (ground)
       (expand "separable?")
       (propax))))
    ("2" (expand "add1") (expand "gen_seq2") (propax))
    ("3" (expand "add1") (propax))
    ("4"
     (expand "independent?")
     (skosimp*)
     (expand "add1")
     (expand "gen_seq2")
     (lift-if)
     (expand "path?")
     (expand "walk?")
     (flatten)
     (hide -6 -7 -10 -11)
     (expand "verts_in?")
     (expand "finseq_appl")
     (inst-cp - "i!1" "j!1")
     (("1"
       (ground)
       (("1"
         (expand "del_vert")
         (expand "remove")
         (expand "member")
         (hide -7)
         (inst -7 "j!1")
         (flatten))
        ("2"
         (inst -9 "j!1")
         (expand "del_vert")
         (expand "remove")
         (propax))))
      ("2" (assert)) ("3" (typepred "i!1") (ground))))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: h_menger
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (auto-rewrite finseq_appl)
   (lemma "sep_num_gt_0")
   (inst?)
   (assert)
   (skosimp*)
   (lemma "walk_to_path_from")
   (inst?)
   (assert)
   (skosimp*)
   (hide -2)
   (case "length(p!1) <= 3")
   (("1"
     (lemma "path_from_l")
     (inst?)
     (assert)
     (expand "separable?")
     (flatten)
     (assert)
     (expand "path_from?" -)
     (expand "path?")
     (expand "walk?")
     (expand "verts_in?")
     (flatten)
     (inst - "1")
     (inst-cp - "0")
     (inst - "1")
     (assert)
     (expand "from?")
     (flatten)
     (case-replace "length(p!1) = 3")
     (("1" (assert) (lemma "short_path_case") (inst?) (inst?) (assert))
      ("2" (assert))))
    ("2"
     (case "  (EXISTS (j: nat): j > 1 AND j < length(p!1)-1  AND
                               NOT edge?(G!1)(seq(p!1)(j - 1), t!1)
                                   AND edge?(G!1)(seq(p!1)(j), t!1))")
     (("1"
       (skosimp*)
       (case "vert(G!1)(seq(p!1)(j!1 - 1)) AND vert(G!1)(seq(p!1)(j!1)) AND
                                      disjoint?(s!1,t!1,seq(p!1)(j!1-1),seq(p!1)(j!1))")
       (("1"
         (flatten)
         (case "separates(G!1,dbl(seq(p!1)(j!1-1),seq(p!1)(j!1)),s!1,t!1)")
         (("1"
           (lemma "prelude")
           (inst - "G!1" "s!1" "t!1" "_" "_")
           (inst?)
           (("1"
             (assert)
             (expand "in?")
             (split -1)
             (("1" (propax))
              ("2"
               (flatten)
               (lemma "adjacent_fact")
               (inst - "G!1" "s!1" "t!1" "seq(p!1)(j!1)"
                "seq(p!1)(j!1-1)")
               (assert)
               (expand "in?")
               (expand "disjoint?")
               (flatten)
               (assert)
               (rewrite "dbl_comm")
               (assert))))
            ("2" (assert))))
          ("2"
           (expand "separates")
           (expand "disjoint?")
           (flatten)
           (expand "dbl" 1 (1 2))
           (assert)
           (skosimp*)
           (lemma "walk_to_path_from")
           (inst?)
           (assert)
           (skosimp*)
           (hide -2)
           (case "edge?(G!1)(s!1,seq(p!1)(j!1-1))")
           (("1"
             (name "Pscat"
                   "add1(add1(gen_seq2(G!1,s!1,seq(p!1)(j!1-1)),seq(p!1)(j!1)),t!1)")
             (case "independent?(p!2,Pscat)")
             (("1"
               (inst + "p!2" "Pscat")
               (assert)
               (expand "path_from?")
               (flatten)
               (assert)
               (lemma "path?_del_verts")
               (inst?)
               (assert)
               (hide -1 -2 -5 -6)
               (replace -1 * rl)
               (hide -1)
               (split)
               (("1"
                 (expand "path?" -)
                 (flatten)
                 (expand "walk?")
                 (flatten)
                 (inst -8 "j!1-1")
                 (assert)
                 (rewrite "path?_add1")
                 (("1"
                   (hide 2)
                   (rewrite "path?_add1")
                   (("1" (hide 2) (rewrite "path?_gen_seq2"))
                    ("2" (expand "gen_seq2") (propax))
                    ("3"
                     (expand "verts_of" -1)
                     (expand "gen_seq2" -1)
                     (skosimp*)
                     (ground)
                     (lift-if)
                     (ground))))
                  ("2" (expand "add1") (propax))
                  ("3"
                   (hide 1)
                   (expand "verts_of" -1)
                   (expand "add1" -1)
                   (expand "gen_seq2" -1)
                   (skosimp*)
                   (ground)
                   (lift-if)
                   (ground))))
                ("2"
                 (expand "from?")
                 (expand "add1")
                 (expand "gen_seq2")
                 (propax))))
              ("2"
               (replace -1 * rl)
               (hide -1)
               (hide -1 -7 -9 -10 -13 8 10)
               (expand "path_from?")
               (expand "path?")
               (expand "walk?")
               (flatten)
               (hide -2)
               (expand "independent?")
               (skosimp*)
               (expand "add1")
               (expand "gen_seq2")
               (lift-if)
               (expand "verts_in?")
               (expand "del_verts")
               (expand "difference")
               (expand "member")
               (inst?)
               (("1" (flatten) (expand "dbl") (ground))
                ("2" (assert))))))
            ("2"
             (case "(FORALL (v:T): vert(G!1)(v) AND v /= s!1 AND v /= t!1
                                                                   IMPLIES sep_num(del_vert(G!1,v),s!1,t!1) <= 1)")
             (("1"
               (inst -1 "seq(p!1)(j!1-1)")
               (assert)
               (lemma "sep_num_le1")
               (inst -1 "del_vert(G!1, seq(p!1)(j!1 - 1))"
                "seq(p!1)(j!1)" "s!1" "t!1")
               (expand "separable?")
               (assert)
               (lemma "separable?_del")
               (inst -1 "G!1" "s!1" "t!1" "seq(p!1)(j!1 - 1)")
               (assert)
               (flatten)
               (assert)
               (split -4)
               (("1"
                 (skosimp*)
                 (expand "del_vert" -1)
                 (expand "remove")
                 (flatten)
                 (expand "member")
                 (lemma "separates_del")
                 (inst?)
                 (assert)
                 (lemma "prelude")
                 (inst?)
                 (assert)
                 (expand "in?")
                 (expand "disjoint?")
                 (expand "edge?")
                 (rewrite "dbl_comm")
                 (assert))
                ("2"
                 (expand "del_vert" 1)
                 (expand "remove")
                 (expand "member")
                 (propax))
                ("3" (expand "edge?") (expand "del_vert" -1) (flatten))))
              ("2"
               (skosimp*)
               (hide -2)
               (expand "induction_step")
               (inst - "del_vert(G!1,v!1)")
               (rewrite "size_del_vert")
               (assert)
               (inst - "s!1" "t!1")
               (lemma "sep_num_del")
               (inst?)
               (assert)
               (lemma "separable?_del")
               (inst?)
               (assert)
               (flatten)
               (assert)
               (skosimp*)
               (inst + "p1!1" "p2!1")
               (assert)
               (expand "path_from?")
               (flatten)
               (assert)
               (lemma "path?_del_vert")
               (inst?)
               (assert)
               (lemma "path?_del_vert")
               (inst -1 "G!1" "v!1" "p2!1")
               (assert))))))))
        ("2"
         (hide 4)
         (expand "path_from?")
         (flatten)
         (expand "from?")
         (hide 2 3)
         (expand "path?")
         (expand "walk?")
         (expand "verts_in?")
         (flatten)
         (inst-cp -4 "j!1")
         (inst -4 "j!1-1")
         (("1"
           (inst-cp -6 "j!1-1")
           (("1"
             (inst -6 "j!1")
             (assert)
             (expand "disjoint?")
             (inst-cp - "j!1-1" "j!1")
             (inst-cp - "j!1-1" "0")
             (inst-cp - "j!1-1" "length(p!1)-1")
             (inst-cp - "j!1" "0")
             (inst - "j!1" "length(p!1)-1")
             (assert)
             (expand "separable?")
             (assert))
            ("2" (assert))))
          ("2" (assert))))
        ("3" (assert)) ("4" (assert))))
      ("2"
       (lemma "seq_j")
       (ground)
       (inst?)
       (assert)
       (expand "path_from?")
       (expand "from?")
       (flatten)
       (assert)
       (inst -1 "p!1" "t!1")
       (assert)
       (expand "separable?")
       (flatten)
       (assert)
       (split -1)
       (("1"
         (skosimp*)
         (inst 2 "j!1")
         (assert)
         (case "j!1 = 1")
         (("1"
           (replace -1)
           (hide -1)
           (assert)
           (lemma "short_path_case")
           (inst -1 "G!1" "s!1" "t!1" "seq(p!1)(1)")
           (assert)
           (expand "path?" -5)
           (flatten)
           (expand "walk?")
           (flatten)
           (expand "verts_in?")
           (inst - "1")
           (assert)
           (inst - "0")
           (assert)
           (assert))
          ("2"
           (assert)
           (case "j!1 = length(p!1) - 1")
           (("1"
             (replace -1)
             (hide -1)
             (assert)
             (expand "path?" -4)
             (flatten)
             (expand "walk?")
             (flatten)
             (inst - "length(p!1)-2")
             (assert))
            ("2" (assert))))))
        ("2"
         (expand "path?" -1)
         (flatten)
         (expand "walk?")
         (flatten)
         (inst - "length(p!1)-2")
         (assert))))
      ("3" (skosimp*) (assert)) ("4" (skosimp*) (assert))))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: h_menger
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (induct "G" 1 "graph_induction_vert")
   (skosimp*)
   (lemma "finale")
   (inst?)
   (assert)
   (split -1)
   (("1" (propax)) ("2" (hide 2) (expand "induction_step") (propax))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: h_menger
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (lemma "h_menger")
   (inst?)
   (assert)
   (skosimp*)
   (inst + "add(p1!1,singleton[Path_from(G!1,s!1,t!1)](p2!1))")
   (rewrite "card_add[Path_from(G!1, s!1, t!1)]")
   (rewrite "card_singleton[Path_from(G!1, s!1, t!1)]")
   (assert)
   (split +)
   (("1"
     (lift-if)
     (ground)
     (expand "singleton")
     (replace -1)
     (hide -1)
     (case "length(p2!1) = 2")
     (("1"
       (expand "path_from?")
       (flatten)
       (hide -4 -5)
       (expand "path?")
       (expand "walk?")
       (flatten)
       (hide -2 -4)
       (inst - "0")
       (assert)
       (expand "finseq_appl")
       (expand "separable?")
       (flatten)
       (expand "from?")
       (flatten)
       (assert))
      ("2"
       (expand "independent?")
       (expand "path_from?")
       (flatten)
       (inst -5 "1" "1")
       (assert)
       (case "length(p2!1) = 1")
       (("1"
         (expand "from?")
         (flatten)
         (assert)
         (expand "separable?")
         (propax))
        ("2" (assert))))))
    ("2"
     (expand "ind_path_set?")
     (skosimp*)
     (expand "add")
     (expand "member")
     (expand "singleton")
     (lemma "independent?_comm")
     (inst -1 "p1!1" "p2!1")
     (assert)
     (ground))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: old_menger
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (lemma "h_menger")
   (inst?)
   (assert)
   (skosimp*)
   (inst + "add(p1!1,singleton[Path_from(G!1,s!1,t!1)](p2!1))")
   (("1"
     (rewrite "card_add[Path_from(G!1, s!1, t!1)]")
     (("1"
       (rewrite "card_singleton[Path_from(G!1, s!1, t!1)]")
       (assert)
       (split +)
       (("1"
         (lift-if)
         (ground)
         (expand "singleton")
         (replace -1)
         (hide -1)
         (case "length(p2!1) = 2")
         (("1"
           (expand "path_from?")
           (flatten)
           (hide -4 -5)
           (expand "path?")
           (expand "walk?")
           (flatten)
           (hide -2 -4)
           (inst - "0")
           (assert)
           (expand "finseq_appl")
           (expand "separable?")
           (flatten)
           (expand "from?")
           (flatten)
           (assert))
          ("2"
           (expand "independent?")
           (expand "path_from?")
           (flatten)
           (inst -5 "1" "1")
           (assert)
           (case "length(p2!1) = 1")
           (("1"
             (expand "from?")
             (flatten)
             (assert)
             (expand "separable?")
             (propax))
            ("2" (assert))))))
        ("2"
         (expand "ind_path_set?")
         (skosimp*)
         (expand "add")
         (expand "member")
         (expand "singleton")
         (lemma "independent?_comm")
         (inst -1 "p1!1" "p2!1")
         (assert)
         (ground))))
      ("2"
       (hide 2)
       (rewrite "finite_singleton[Path_from(G!1, s!1, t!1)]"))))
    ("2"
     (rewrite "finite_add[Path_from(G!1, s!1, t!1)]")
     (rewrite "finite_singleton[Path_from(G!1, s!1, t!1)]"))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: cycle_deg
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "conn_eq_path")
   (inst -1 "subgraph(G!1, reachable(G!1, x!1))")
   (iff -1)
   (bddsimp)
   (hide 1)
   (expand "path_connected?")
   (bddsimp)
   (("1"
     (install-rewrites "subgraphs")
     (assert)
     (inst -1 "x!1")
     (bddsimp)
     (("1"
       (inst 1 "(#length := 1, seq :=(LAMBDA (i:below(1)): x!1)#)")
       (assert))
      ("2" (typepred "x!1") (propax))))
    ("2"
     (skosimp*)
     (typepred "x!2")
     (typepred "y!1")
     (expand "subgraph" -)
     (flatten)
     (expand "reachable" -)
     (bddsimp)
     (skosimp*)
     (lemma "walk?_reverse")
     (inst-cp -1 "G!1" "x!1" "y!1" "w!1")
     (inst -1 "G!1" "x!1" "x!2" "w!2")
     (bddsimp)
     (skosimp*)
     (lemma "walk_merge")
     (inst -1 "G!1" "w!4" "w!3" "x!2" "y!1" "x!1")
     (bddsimp)
     (skosimp*)
     (inst 1 "p!1")
     (("1" (install-rewrites "walks") (assert) (bddsimp))
      ("2"
       (assert)
       (install-rewrites "walks")
       (assert)
       (skosimp*)
       (bddsimp)
       (("1"
         (skosimp*)
         (bddsimp)
         (("1" (typepred "p!1") (inst -11 "n!1") (bddsimp))
          ("2"
           (skosimp*)
           (inst-cp -9 "n!1")
           (("1"
             (inst -9 "1+n!1")
             (("1"
               (hide -3 -4 -5 -6)
               (bddsimp (-2 -5 -6 1))
               (("1"
                 (hide -8 -9 -11 -12)
                 (reveal -10 -11)
                 (reveal (-1 -2 -7 -8))
                 (lemma "walk?_caret")
                 (inst -1 "G!1" "0" "n!1" "p!1")
                 (stop-rewrite)
                 (assert)
                 (case "walk?(G!1,p!1)")
                 (("1"
                   (bddsimp)
                   (inst -8 "G!1" "x!2" "x!3" "p!1 ^ (0,  n!1)")
                   (expand "walk_from?" -8)
                   (expand "^" -8 (1 2 3))
                   (bddsimp (-2 -8))
                   (("1"
                     (skosimp*)
                     (inst -9 "G!1" "w!5" "w!2" "x!1" "x!3" "x!2")
                     (expand "walk_from?" -9 (1 2))
                     (typepred "w!2")
                     (case "walk?(G!1,w!2)")
                     (("1"
                       (bddsimp)
                       (skosimp*)
                       (inst 1 "p!2")
                       (("1"
                         (expand "walk_from?" -12)
                         (flatten)
                         (expand "walk?" -14)
                         (flatten)
                         (hide-all-but (-4 -7 -12 -13 -14 -15 -25 -26) -)
                         (grind))
                        ("2" (hide-all-but -12 -) (grind))))
                      ("2"
                       (hide-all-but (-2 -7 -8 -19) -)
                       (hide 2)
                       (install-rewrites "walks")
                       (assert))))
                    ("2" (expand min) (assert))))
                  ("2"
                   (reveal -10)
                   (hide (-16 -17))
                   (hide-all-but (-1 -9 -12 -13 -14 -15) -)
                   (hide 2)
                   (assert)
                   (grind))))
                ("2" (hide-all-but (-1 -3) -) (assert))
                ("3"
                 (reveal -6 -7)
                 (lemma "walk?_caret")
                 (inst -1 "G!1" "0" "1+n!1" "p!1")
                 (inst -3 "G!1" "x!2" "x!3" "p!1 ^ (0, 1 + n!1)")
                 (("1"
                   (typepred "n!1")
                   (bddsimp (-1 -2 -4 -5 -8))
                   (("1"
                     (skosimp*)
                     (inst -6 "G!1" "w!5" "w!2" "x!1" "x!3" "x!2")
                     (hide-all-but (-3 -6 -12 -13 -14) -)
                     (typepred "w!2")
                     (case "walk_from?(G!1, w!2, x!1, x!2)")
                     (("1"
                       (bddsimp (-1 -4 -5))
                       (skosimp*)
                       (inst 1 "p!2")
                       (("1" (hide-all-but -3 -) (assert) (grind))
                        ("2" (hide-all-but -3 -) (grind))))
                      ("2"
                       (hide-all-but (-1 -2 -5 -6 -7) -)
                       (hide 2)
                       (assert)
                       (grind))))
                    ("2"
                     (hide 2)
                     (hide (-5 -11 -12 -13 -14 -15 -16 -17 -18))
                     (assert)
                     (bddsimp)
                     (("1" (grind)) ("2" (grind))))
                    ("3"
                     (hide 2)
                     (hide -2 -5 -11 -12 -13 -14 -15 -16)
                     (assert)
                     (bddsimp)
                     (typepred "p!1")
                     (reveal -13)
                     (propax))
                    ("4"
                     (hide -4 -12 -15 3)
                     (reveal -8)
                     (hide 2)
                     (assert)
                     (bddsimp))
                    ("5" (assert)) ("6" (assert)) ("7" (assert))
                    ("8" (assert))))
                  ("2" (hide -2 -9 -12 -15 2) (hide -1) (grind))))
                ("4" (assert (-1 -2 1)))))
              ("2" (assert (-1 1)))))
            ("2" (assert (-1 1)))))
          ("3" (inst -9 "n!1") (assert))))
        ("2"
         (skosimp*)
         (inst -7 "i!1")
         (bddsimp)
         (lemma "walk?_caret")
         (inst -1 "G!1" "0" "i!1" "p!1")
         (typepred "i!1")
         (reveal -4)
         (inst -1 "G!1" "x!2" "seq(p!1)(i!1)" "p!1 ^ (0, i!1)")
         (("1"
           (case "walk?(G!1,p!1)")
           (("1"
             (bddsimp (-1 -3 -4))
             (("1"
               (expand "walk_from?" -4 1)
               (expand "^" -4 (1 2))
               (expand "^" -4 1)
               (bddsimp (-3 -4 -10))
               (("1"
                 (skosimp*)
                 (reveal -3)
                 (inst -1 "G!1" "w!5" "w!2" "x!1" "seq(p!1)(i!1)" "x!2")
                 (case "walk_from?(G!1, w!2, x!1, x!2)")
                 (("1"
                   (bddsimp (-1 -2 -5))
                   (skosimp*)
                   (inst 1 "p!2")
                   (("1" (hide-all-but -3 -) (grind))
                    ("2"
                     (typepred "p!2")
                     (hide-all-but (-1 -4) -)
                     (grind))))
                  ("2"
                   (expand "walk_from?" 1)
                   (hide-all-but (-14 -15 -16) -)
                   (hide 2)
                   (grind))))
                ("2" (expand min) (propax))))
              ("2" (grind))))
            ("2"
             (reveal -2)
             (hide-all-but (-1 -10 -11 -12) -)
             (hide 2)
             (grind))))
          ("2"
           (hide 2)
           (expand "^" 1)
           (assert)
           (expand min)
           (typepred i!1)
           (assert))))))))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: cycle_deg
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (inst 1 "subgraph(G!1,reachable(G!1,x!1))")
   (bddsimp)
   (("1"
     (skosimp*)
     (typepred "y!1")
     (expand "deg")
     (case "incident_edges(y!1, G!1) =
                            incident_edges(y!1, subgraph(G!1, reachable(G!1, x!1)))")
     (("1"
       (auto-rewrite-theories "finite_sets[doubleton[T]]")
       (replace -1 1)
       (propax))
      ("2"
       (hide 2)
       (expand "incident_edges")
       (apply-extensionality 1 :hide? t)
       (iff 1)
       (bddsimp)
       (("1"
         (expand "reachable")
         (expand "subgraph")
         (bddsimp)
         (skosimp*)
         (bddsimp)
         (("1"
           (case "y!1=x!3")
           (("1" (replace -1 1 rl) (inst 1 "w!1"))
            ("2"
             (inst 2 "add1(w!1,x!3)")
             (("1"
               (expand "walk_from?")
               (assert)
               (bddsimp)
               (("1"
                 (lemma "walk?_add1")
                 (inst -1 "G!1" "w!1" "x!3")
                 (bddsimp)
                 (("1"
                   (replace -7 1)
                   (hide -1 -6 -7 2)
                   (grind)
                   (lemma "edge_has_2_verts")
                   (inst -1 "x!2" "x!3" "y!1")
                   (bddsimp)
                   (("1" (assert)) ("2" (assert))))
                  ("2"
                   (typepred "G!1")
                   (inst -1 "x!2")
                   (bddsimp)
                   (inst -2 "x!3")
                   (assert))))
                ("2" (assert) (install-rewrites "walks") (assert))
                ("3" (assert) (hide -1 -2 -3 -7) (grind))))
              ("2"
               (expand "walk_from?")
               (bddsimp)
               (expand "walk?")
               (expand "verts_in?")
               (skosimp*)
               (typepred "i!1")
               (expand "add1" -1)
               (case "i!1=length(w!1)")
               (("1"
                 (replace -1 1)
                 (case "seq(add1[T](w!1, x!3))(length(w!1))=x!3")
                 (("1"
                   (replace -1 1)
                   (typepred "G!1")
                   (inst -1 "x!2")
                   (bddsimp)
                   (inst -2 "x!3")
                   (bddsimp))
                  ("2" (hide -3 -9 2) (grind))))
                ("2"
                 (inst -8 "i!1-1")
                 (("1"
                   (bddsimp)
                   (("1"
                     (assert -8)
                     (hide -2 -3 -4 -5 -6 -7)
                     (typepred "G!1")
                     (expand "add1")
                     (prop)
                     (("1" (typepred "w!1") (expand "verts_in?") (inst?))
                      ("2" (reveal -1 -3) (inst - "x!2") (assert))))
                    ("2" (assert))))
                  ("2"
                   (case "i!1=0")
                   (("1"
                     (replace -1 3)
                     (expand "add1")
                     (typepred "w!1")
                     (grind))
                    ("2" (assert))))))))))))
          ("2"
           (typepred "G!1")
           (inst? -1)
           (bddsimp)
           (inst -2 "x!3")
           (prop))))
        ("2" (install-rewrites "subgraphs[T]") (assert))))))
    ("2"
     (typepred "x!1")
     (assert)
     (expand "reachable")
     (assert)
     (expand "subgraph")
     (inst 1 "gen_seq1(G!1,x!1)")
     (install-rewrites "walks[T]")
     (assert))
    ("3" (lemma "reachable_conn") (inst? -1))
    ("4"
     (install-rewrites "subgraphs[T]")
     (stop-rewrite)
     (auto-rewrite-theory "subgraphs[T]")
     (typepred "x!1")
     (assert)
     (bddsimp)
     (("1"
       (install-rewrites "finite_sets[doubleton[T]]")
       (assert)
       (grind))
      ("2"
       (assert)
       (install-rewrites "finite_sets[T]")
       (assert)
       (grind))))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: cycle_deg
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "graph_connected[T].conn_eq_path")
   (inst -1 "del_edge(G!1, e!1)")
   (iff -1)
   (bddsimp)
   (hide -1)
   (typepred "e!1")
   (skosimp*)
   (expand "path_connected?" -3)
   (bddsimp)
   (inst -3 "x!1" "y!1")
   (("1"
     (lemma "path_ops[T].walk_to_path_from")
     (skosimp*)
     (inst -1 "del_edge(G!1, e!1)" "x!1" "y!1" "w!1")
     (typepred "w!1")
     (expand "walk_from?" -3)
     (bddsimp (-3 -6 -7))
     (skosimp*)
     (lemma "walks[T].edge_to_walk")
     (inst -1 "G!1" "x!1" "y!1")
     (bddsimp (-1 -8 1))
     (("1"
       (case "path_from?(G!1,gen_seq2(G!1, x!1, y!1),x!1,y!1)")
       (("1"
         (case "path_from?(G!1, p!1, x!1, y!1)")
         (("1"
           (expand "uniq_paths?" -11)
           (inst -11 "x!1" "y!1" "p!1" "gen_seq2(G!1, x!1, y!1)")
           (bddsimp (-1 -2 -11))
           (hide -1 -2 -4 -6 -7 -10)
           (typepred "p!1")
           (hide -5)
           (expand "path_from?" -4)
           (flatten)
           (expand "path?" -4)
           (flatten)
           (hide -5)
           (expand "walk?" -4)
           (flatten)
           (inst -5 "0")
           (replace -2 -5)
           (assert)
           (install-rewrites "walks[T]")
           (assert))
          ("2"
           (hide -1 -2 -4 -5 -7 -8 -10)
           (install-rewrites "paths[T]")
           (grind))))
        ("2"
         (hide -3 -4 -5 -6 -7 -9)
         (expand "path_from?" 1)
         (expand "path?" 1)
         (bddsimp)
         (("1" (grind)) ("2" (grind))))))
      ("2" (replace -7 -1) (hide -2 -3 -4 -5 -6 -8) (grind))
      ("3" (hide-all-but -1 -) (grind))))
    ("2"
     (hide -3)
     (grind)
     (typepred "G!1")
     (inst? -1)
     (bddsimp)
     (inst -2 "y!1")
     (grind))
    ("3"
     (lemma "graph_ops[T].vert_del_edge")
     (inst? -1)
     (typepred "G!1")
     (inst -1 "e!1")
     (bddsimp)
     (inst -2 "x!1")
     (assert)
     (replace -3 1)
     (hide -2 -3 -4 2 4)
     (grind))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: cycle_deg
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (lemma "size_prep")
   (inst -1
    "LAMBDA G:(connected?(G) AND uniq_paths?(G) IMPLIES tree?(G))")
   (bddsimp)
   (hide 1)
   (induct "n" 1 "nat_induction")
   (("1"
     (skosimp*)
     (hide -3 1)
     (lemma "graph_complected[T].connected_not_empty")
     (inst -1 "G!1")
     (bddsimp)
     (hide -1)
     (grind)
     (lemma "finite_sets[T].nonempty_card")
     (inst -1 "vert(G!1)")
     (bddsimp)
     (("1" (grind))
      ("2"
       (expand "nonempty?" 1)
       (expand "empty?" -1)
       (inst -1 "x!1")
       (expand "member" 1)
       (propax))))
    ("2"
     (skosimp*)
     (lemma "graph_complected[T].conn_lem3")
     (inst -1 "G!1")
     (bddsimp)
     (("1"
       (lemma "graph_complected[T].conn_eq_compl")
       (inst? -1)
       (bddsimp)
       (expand "tree?")
       (flatten)
       (expand "singleton?")
       (expand "size")
       (propax))
      ("2"
       (skosimp*)
       (typepred "v!1")
       (lemma "graph_complected[T].rev_lem2")
       (inst? -1)
       (bddsimp)
       (lemma "graph_ops[T].size_del_vert")
       (inst? -1)
       (lemma "uniq_del_vert")
       (inst? -1)
       (bddsimp)
       (inst -8 "del_vert(G!1, v!1)")
       (replace -9 -3)
       (assert -3)
       (bddsimp)
       (expand "tree?" 1)
       (flatten)
       (inst 2 "v!1")
       (assert))
      ("3"
       (lemma "del_edge_uniq")
       (inst? -1)
       (skolem! -3)
       (inst? -1)
       (bddsimp))))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: cycle_deg
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (expand "XOR")
   (flatten)
   (iff)
   (bddsimp)
   (("1"
     (skosimp*)
     (lemma "tree_no_circuits")
     (inst? -1)
     (inst -1 "w!1")
     (("1"
       (bddsimp)
       (hide -1 -2)
       (expand "cycle?")
       (flatten)
       (install-rewrites "circuits[T]")
       (assert)
       (bddsimp)
       (("1"
         (skosimp*)
         (typepred "k!1")
         (inst -7 "k!1-1" "k!1+1")
         (("1" (assert) (flatten) (assert)) ("2" (assert))))
        ("2"
         (case "length(w!1)=2")
         (("1" (replace -1 * lr) (assert)) ("2" (assert))))))
      ("2"
       (hide -1 -2)
       (expand "cycle?")
       (flatten)
       (expand "pre_circuit?")
       (flatten))))
    ("2"
     (case "uniq_paths?(G!1)")
     (("1" (lemma "charact_tree") (inst? -1) (bddsimp))
      ("2"
       (expand "uniq_paths?")
       (skosimp*)
       (hide 2)
       (case "tree_paths[T].dual_paths?(G!1,p!1,q!1)")
       (("1"
         (lemma "min_dual_exists")
         (inst? -1)
         (("1"
           (bddsimp (-1 -2))
           (hide -1)
           (skosimp*)
           (lemma "min_dual_distin")
           (inst -1 "G!1" "p!2" "q!2")
           (("1"
             (lemma "dual_cycle")
             (inst -1 "G!1" "p!2" "q!2")
             (("1"
               (bddsimp (-2 -3))
               (expand "is_min_dual?")
               (flatten)
               (bddsimp (-1 -3 -4))
               (inst 2 "trunc1(p!2) o rev(q!2)"))
              ("2"
               (lemma "graph_complected[T].connected_not_empty")
               (inst -1 "G!1")
               (bddsimp (-1 -6))
               (expand "empty?")
               (expand "nonempty?")
               (propax))))
            ("2"
             (lemma "graph_complected[T].connected_not_empty")
             (inst -1 "G!1")
             (bddsimp (-1 -5))
             (expand "empty?")
             (expand "nonempty?")
             (propax))))
          ("2"
           (typepred "q!1")
           (expand "path_from?")
           (flatten)
           (expand "nonempty?")
           (expand "empty?")
           (expand "member")
           (expand "path?" -6)
           (flatten)
           (expand "walk?")
           (flatten)
           (expand "verts_in?")
           (inst -6 "0")
           (inst - "seq(q!1)(0)"))))
        ("2"
         (expand "dual_paths?")
         (hide -3 3)
         (install-rewrites "paths[T]")
         (assert)
         (flatten)
         (assert))
        ("3" (expand "path_from?") (flatten))
        ("4" (expand "path_from?") (flatten))))))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: cycle_deg
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: RWB NEW
script:
  (""
   (lemma "size_prep[T]")
   (inst -1
    "LAMBDA G: (connected?(G) and num_edges(G)<size(G) IMPLIES tree?(G))")
   (assert)
   (ground)
   (hide 2 3)
   (induct "n" 1 "nat_induction")
   (("1"
     (skosimp*)
     (hide -3 1)
     (lemma "graph_complected[T].connected_not_empty")
     (inst -1 "G!1")
     (bddsimp)
     (hide -1)
     (grind)
     (lemma "finite_sets[T].nonempty_card")
     (inst -1 "vert(G!1)")
     (ground))
    ("2"
     (skosimp*)
     (lemma "graph_complected[T].connect_deg_0")
     (case "forall (v:(vert(G!1))):deg(v,G!1)>1")
     (("1"
       (lemma "graph_deg_sum[T].deg_gt_one")
       (inst -1 "G!1")
       (bddsimp (-1 -2))
       (assert (-2 -7)))
      ("2"
       (skosimp*)
       (case "deg(v!1,G!1)=0")
       (("1"
         (typepred "v!1")
         (inst -3 "G!1" "v!1")
         (bddsimp (-1 -2 -3 -6))
         (expand "tree?" 2)
         (prop)
         (hide -2 -3 -5 -6 -7 1 3)
         (grind)
         (grind)
         (expand "singleton" 1)
         (hide -2)
         (grind)
         (lemma "finite_sets[T].card_one")
         (inst -1 "{y: T | y = v!1}")
         (("1"
           (bddsimp)
           (inst 2 "v!1")
           (grind)
           (hide -1 1)
           (expand "singleton" 1)
           (propax))
          ("2" (inst 1 "1" "LAMBDA (y:T): 0"))))
        ("2"
         (case "deg(v!1,G!1)=1")
         (("1"
           (hide -2)
           (lemma "graph_complected[T].rev_lem2")
           (inst -1 "G!1" "v!1")
           (bddsimp (-1 -2 -5))
           (inst -4 "del_vert(G!1, v!1)")
           (lemma "graph_ops[T].size_del_vert")
           (inst? -1)
           (replace -6 -1)
           (assert -1)
           (bddsimp (-1 -5))
           (("1"
             (hide -1 -3 -5 -6 -7)
             (expand "tree?" 3)
             (flatten)
             (inst 4 "v!1")
             (assert))
            ("2"
             (hide -1 -2 -4 -5 2 3)
             (hide 2)
             (install-rewrites "graph_ops")
             (assert)
             (case "card[T](remove[T](v!1, vert(G!1)))=card[T](vert(G!1))-1")
             (("1"
               (case-replace
                "{e: doubleton[T] | edges(G!1)(e) AND NOT e(v!1)} = edges(del_vert(G!1,v!1))")
               (("1"
                 (case "card(edges(del_vert(G!1,v!1)))=card(edges(G!1))-1")
                 (("1" (expand "del_vert") (assert))
                  ("2"
                   (hide -1 -3 2)
                   (stop-rewrite "is_finite")
                   (lemma "finite_sets[doubleton[T]].card_one")
                   (inst -1 "incident_edges(v!1, G!1)")
                   (bddsimp)
                   (("1"
                     (skosimp*)
                     (expand "incident_edges" -2)
                     (lemma "finite_sets[doubleton[T]].card_disj_union")
                     (inst -1
                      "{e: doubleton[T] | edges(G!1)(e) AND e(v!1)}"
                      "{e: doubleton[T] | edges(G!1)(e) AND NOT e(v!1)}")
                     (("1"
                       (bddsimp)
                       (("1"
                         (expand "union" -1)
                         (expand "member" -1)
                         (case "{x: doubleton[T] |
                                                                                                                                                                                edges(G!1)(x) AND x(v!1) OR edges(G!1)(x) AND NOT x(v!1)}=edges(G!1)")
                         (("1"
                           (replace -1 -2)
                           (hide -1)
                           (expand "incident_edges" -2)
                           (replace -2 -1)
                           (assert (-1 1)))
                          ("2"
                           (hide -1 -2 -3 2)
                           (apply-extensionality 1)
                           (hide 2)
                           (iff 1)
                           (ground))))
                        ("2"
                         (hide -1 -2 2)
                         (install-rewrites "finite_sets[doubleton[T]]")
                         (assert)
                         (skosimp*))))
                      ("2"
                       (hide -1 -2 2)
                       (lemma "finite_subset[doubleton[T]]")
                       (inst - "edges(G!1)"
                        "{e: doubleton[T] | edges(G!1)(e) AND NOT e(v!1)}")
                       (assert)
                       (hide 2)
                       (grind))
                      ("3"
                       (hide -1 -2 2)
                       (lemma "finite_subset[doubleton[T]]")
                       (inst - "edges(G!1)"
                        "{e: doubleton[T] | edges(G!1)(e) AND e(v!1)}")
                       (assert)
                       (hide 2)
                       (grind))))
                    ("2" (assert))))))
                ("2" (hide-all-but 1) (expand "del_vert") (propax))))
              ("2"
               (hide -1 -2 2)
               (lemma "finite_sets[T].card_remove")
               (inst -1 "vert(G!1)" "v!1")
               (typepred "v!1")
               (assert))))
            ("3" (propax))))
          ("2" (hide -1 -2 -3 -4 -5 4) (assert))))))))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: cycle_deg
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (bddsimp)
   (("1" (lemma "num_edge_tree") (inst? -1) (assert))
    ("2"
     (lemma "tree_edge_card")
     (inst? -1)
     (assert)
     (install-rewrites "graph_ops")
     (assert))
    ("3"
     (assert)
     (install-rewrites "graph_ops")
     (lemma "iff_tree")
     (inst? -1)
     (stop-rewrite-theory "graph_ops")
     (stop-rewrite)
     (assert))))


proof_type: t_proof
decl_type: tcc
library: graphs
theory: cycle_deg
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (typepred "vert(G!1)")
   (lemma "finite_subset[T]")
   (inst -1 "vert(G!1)"
    "{y: T |
                      vert(G!1)(y) AND
                       (EXISTS (w: Seq[T](G!1)): walk_from?[T](G!1, w, x!1, y))}")
   (bddsimp)
   (hide 2)
   (expand "subset?")
   (expand "member")
   (skosimp*))


proof_type: t_proof
decl_type: tcc
library: graphs
theory: cycle_deg
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (typepred "w!1")
   (expand "verts_in?")
   (skosimp*)
   (expand "subgraph?")
   (flatten)
   (hide -5)
   (expand "subset?")
   (expand "member")
   (assert)
   (inst?)
   (inst?)
   (assert))


proof_type: f_proof
decl_type: formula
library: graphs
theory: reduce_walks
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "o ")
   (expand* "^" min empty_seq)
   (auto-rewrite "finseq_appl")
   (typepred "k!1")
   (apply-extensionality 1 :hide? t)
   (("1" (expand "reduce") (lift-if) (lift-if) (ground))
    ("2"
     (apply-extensionality 1 :hide? t)
     (("1" (typepred "x!1") (lift-if) (grind))
      ("2"
       (skosimp*)
       (expand* "^" min empty_seq)
       (expand "reduce")
       (lift-if)
       (assert)
       (ground))
      ("3"
       (skosimp*)
       (typepred "n!1")
       (expand* "^" min empty_seq)
       (lift-if)
       (ground))
      ("4"
       (skosimp*)
       (assert)
       (typepred "n!1")
       (expand* "^" min empty_seq)
       (lift-if)
       (ground))
      ("5"
       (skosimp*)
       (typepred "n!1")
       (expand* "^" min empty_seq)
       (lift-if)
       (ground))))
    ("3" (skosimp*) (expand* "^" min empty_seq))
    ("4"
     (skosimp*)
     (typepred "n!1")
     (expand* "^" min empty_seq)
     (lift-if)
     (ground))
    ("5"
     (skosimp*)
     (typepred "n!1")
     (expand* "^" min empty_seq)
     (lift-if)
     (ground))
    ("6"
     (skosimp*)
     (typepred "n!1")
     (expand* "^" min empty_seq)
     (lift-if)
     (ground))
    ("7" (lift-if) (ground))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: min_walk_reduced
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "finseq_appl")
   (lemma "min_walk_in")
   (inst?)
   (expand "walk_from?")
   (flatten)
   (expand "walk?")
   (flatten)
   (hide -4)
   (expand "verts_in?")
   (inst -3 "i!1"))


proof_type: f_proof
decl_type: formula
library: graphs
theory: min_walk_reduced
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "reduced?")
   (expand "finseq_appl")
   (skosimp*)
   (name MIN_W "min_walk_from(x!1,y!1,Gw!1)")
   (replace -1)
   (lemma "min_walk_is_min")
   (inst?)
   (lemma "min_walk_in")
   (inst?)
   (replace -3)
   (expand "walk_from?")
   (flatten)
   (case "k!1 = length(MIN_W) - 2")
   (("1"
     (replace -1)
     (hide -1)
     (assert)
     (name RED_W "MIN_W ^ (0, length(MIN_W) - 3)")
     (inst -5 "RED_W")
     (("1"
       (replace -1 * rl)
       (hide -1)
       (expand* "^" min empty_seq)
       (expand "walk?")
       (flatten)
       (expand "verts_in?")
       (split +)
       (("1" (skosimp*) (inst?))
        ("2"
         (skosimp*)
         (expand "finseq_appl")
         (hide -4)
         (inst -4 "n!1")
         (assert))))
      ("2"
       (prop)
       (("1"
         (replace -1 * rl)
         (hide -1)
         (expand* "^" min empty_seq)
         (propax))
        ("2"
         (expand "verts_in?")
         (skosimp*)
         (replace -1 * rl)
         (typepred "i!1")
         (replace -2 * rl)
         (hide -2)
         (expand* "^" min empty_seq)
         (expand "walk?")
         (flatten)
         (hide -5)
         (expand "verts_in?")
         (inst - "i!1")
         (assert))))))
    ("2"
     (inst -4
      "MIN_W ^ (0, k!1 - 1) o MIN_W ^ (2 + k!1, length(MIN_W) - 1)")
     (("1"
       (split -4)
       (("1"
         (expand "o ")
         (expand* "^" min empty_seq)
         (expand "empty_seq")
         (lift-if)
         (lift-if)
         (ground))
        ("2"
         (expand "o ")
         (expand* "^" min empty_seq)
         (lift-if)
         (expand "empty_seq")
         (lift-if)
         (ground))
        ("3"
         (expand "o ")
         (expand* "^" min empty_seq)
         (expand "empty_seq")
         (lift-if)
         (lift-if)
         (ground))
        ("4"
         (lemma "walk?_cut")
         (inst?)
         (("1"
           (inst -1 "Gw!1" "x!1" "y!1")
           (assert)
           (expand "walk_from?")
           (propax))
          ("2" (assert)) ("3" (assert))))))
      ("2"
       (split +)
       (("1"
         (expand "o ")
         (expand* "^" min empty_seq)
         (lift-if)
         (ground))
        ("2"
         (expand "verts_in?")
         (skosimp*)
         (typepred "i!1")
         (expand "o ")
         (expand* "^" min empty_seq)
         (lift-if)
         (expand "walk?")
         (flatten)
         (hide -5)
         (expand "verts_in?")
         (ground)
         (("1" (inst?)) ("2" (inst?))))))
      ("3" (assert)) ("4" (assert))))))


proof_type: t_proof
decl_type: tcc
library: graphs
theory: min_walk_reduced
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "verts_in?")
   (skosimp*)
   (lemma "min_walk_vert")
   (inst?)
   (inst?)
   (assert)
   (expand finseq_appl)
   (propax))


proof_type: f_proof
decl_type: formula
library: graphs
theory: ramsey_new
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (install-rewrites :defs !)
   (ground)
   (skosimp*)
   (inst? +)
   (prop)
   (("1" (skosimp*) (inst?) (assert))
    ("2" (skosimp*) (inst?) (assert) (inst?) (assert))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: ramsey_new
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (install-rewrites :defs !)
   (skosimp*)
   (ground)
   (skosimp*)
   (inst?)
   (prop)
   (("1" (skosimp*) (inst?) (assert))
    ("2"
     (skosimp*)
     (inst?)
     (assert)
     (inst?)
     (assert)
     (flatten)
     (skosimp*)
     (ground)
     (replace -1)
     (hide -1)
     (reveal -3)
     (inst -1 "j!1")
     (assert))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: ramsey_new
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (case "add(choose(vert(G!1)),union(r1(G!1),r2(G!1))) = vert(G!1)")
   (("1"
     (expand "size")
     (replace -1 * rl)
     (hide -1)
     (rewrite "card_add")
     (rewrite "card_union")
     (lift-if)
     (ground))
    ("2"
     (hide 2)
     (apply-extensionality 1 :hide? t)
     (grind :exclude "choose"))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: ramsey_new
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (induct "ii")
   (("1"
     (skosimp*)
     (inst 1 "ramsey(l1!1,l2!1)")
     (skosimp*)
     (expand "contains_clique")
     (inst 1 "emptyset[T]")
     (hide 2)
     (grind))
    ("2"
     (skosimp*)
     (case-replace "l1!1 = 0")
     (("1"
       (inst 1 "ramsey(l1!1,l2!1)")
       (skosimp*)
       (expand "contains_clique")
       (inst 1 "emptyset[T]")
       (hide -2 2)
       (grind))
      ("2"
       (case-replace "l2!1 = 0")
       (("1"
         (inst 2 "ramsey(l1!1,l2!1)")
         (skosimp*)
         (hide -2 2)
         (expand "contains_indep")
         (inst 2 "emptyset[T]")
         (grind))
        ("2"
         (inst-cp -1 "l1!1" "l2!1-1")
         (("1"
           (inst -1 "l1!1-1" "l2!1")
           (("1"
             (assert)
             (skosimp*)
             (inst 3 "n!1+n!2")
             (skosimp*)
             (lemma "card_r1_r2")
             (inst?)
             (assert)
             (case "card(r1(G!1)) >= n!1")
             (("1"
               (inst -3 "SG1(G!1)")
               (("1"
                 (expand "size")
                 (split -3)
                 (("1"
                   (hide -2 -3 -4 -5 -6 4)
                   (name "Vo" "choose(vert(G!1))")
                   (case "contains_clique(subgraph(G!1,add(Vo,
                                                                   vert(SG1(G!1)))), l1!1)")
                   (("1"
                     (lemma "subgraph_clique")
                     (inst -1 "G!1" "l1!1" "add(Vo, vert(SG1(G!1)))")
                     (assert))
                    ("2"
                     (hide 4)
                     (expand "contains_clique")
                     (skosimp*)
                     (inst 1 "add(Vo,C!1)")
                     (prop)
                     (("1"
                       (hide -1)
                       (hide -2 -3 2 3)
                       (expand "subset?")
                       (skosimp*)
                       (expand "member")
                       (inst -2 "x!1")
                       (grind :exclude ("choose" "r1")))
                      ("2"
                       (hide -4 2 3)
                       (rewrite "card_add")
                       (expand "SG1")
                       (expand "subgraph")
                       (expand "subset?")
                       (inst -2 "Vo")
                       (expand "member")
                       (grind :exclude "choose"))
                      ("3"
                       (skosimp*)
                       (hide -5 3 4)
                       (inst -5 "i!1" "j!2")
                       (expand "subset?")
                       (inst-cp -4 "i!1")
                       (inst -4 "j!2")
                       (expand "add")
                       (expand "member")
                       (grind :exclude "choose")
                       (rewrite "dbl_comm"))))))
                  ("2"
                   (hide -2 -3 -4 -5 -6 3)
                   (expand "SG1")
                   (expand "subgraph")
                   (expand "contains_indep")
                   (skosimp*)
                   (inst 3 "D!1")
                   (expand "subset?")
                   (expand "member")
                   (prop)
                   (("1" (skosimp*) (inst -2 "x!1") (assert))
                    ("2"
                     (skosimp*)
                     (assert)
                     (inst -6 "i!1" "j!2")
                     (assert)
                     (expand "edge?")
                     (prop)
                     (skosimp*)
                     (expand "r1")
                     (assert)
                     (inst?)
                     (expand "dbl")
                     (ground))))
                  ("3"
                   (hide -2 -3 -4 -5 2 3 4 5)
                   (case-replace "vert(SG1(G!1)) = r1(G!1)")
                   (hide -1 2)
                   (apply-extensionality 1 :hide? t)
                   (grind :exclude ("choose" "edge?")))))
                ("2"
                 (assert)
                 (hide -4 -6 2 3 4 5)
                 (expand "nonempty?")
                 (expand "SG1")
                 (case "card(r1(G!1)) = 0")
                 (("1" (assert))
                  ("2"
                   (hide -3 -4 -5)
                   (lemma "card_empty?[T]")
                   (inst -1 "vert(subgraph(G!1, r1(G!1)))")
                   (lemma "card_subset[T]")
                   (inst -1 "r1(G!1)" "vert(subgraph(G!1, r1(G!1)))")
                   (ground)
                   (hide -1 -2 -3 2)
                   (grind :exclude ("choose" "edge?")))))))
              ("2"
               (assert)
               (case "card(r2(G!1)) >= n!2")
               (("1"
                 (inst -4 "SG2(G!1)")
                 (("1"
                   (expand "size")
                   (hide -3)
                   (split -3)
                   (("1"
                     (hide -2 -3 -4 -5 1 5)
                     (expand "contains_clique")
                     (skosimp*)
                     (inst?)
                     (prop)
                     (("1"
                       (hide -2 -3 2 3)
                       (expand "subset?")
                       (skosimp*)
                       (grind :exclude ("choose" "r2")))
                      ("2"
                       (skosimp*)
                       (inst?)
                       (inst -5 "j!2")
                       (grind :exclude ("choose" "r2")))))
                    ("2"
                     (hide -2 -3 -4 -5 1 4)
                     (expand "SG2")
                     (expand "contains_indep")
                     (skosimp*)
                     (name "Vo" "choose(vert(G!1))")
                     (inst 3 "add(Vo,D!1)")
                     (prop)
                     (("1"
                       (hide -3 -4 2 3)
                       (case-replace
                        "vert(subgraph(G!1, r2(G!1))) = r2(G!1)")
                       (("1"
                         (hide -1)
                         (expand "subset?")
                         (skosimp*)
                         (inst?)
                         (grind :exclude "choose"))
                        ("2"
                         (hide -1 2)
                         (apply-extensionality 1 :hide? t)
                         (grind :exclude "choose"))))
                      ("2"
                       (hide -4)
                       (typepred "G!1")
                       (typepred "vert(G!1)")
                       (rewrite "card_add")
                       (lift-if)
                       (expand "subset?")
                       (expand "member")
                       (hide -1 -2 2 3)
                       (grind :exclude "choose"))
                      ("3"
                       (skosimp*)
                       (expand "add")
                       (expand "member")
                       (inst -7 "i!1" "j!2")
                       (expand "subset?")
                       (inst-cp -5 "i!1")
                       (inst -5 "j!2")
                       (expand "member")
                       (grind :exclude "choose")
                       (rewrite "dbl_comm"))))
                    ("3"
                     (hide -2 -3 -4 2 3 4 5 6)
                     (case-replace "vert(SG2(G!1)) = r2(G!1)")
                     (hide 2)
                     (apply-extensionality 1 :hide? t)
                     (hide -1)
                     (grind :exclude ("choose" "edge?")))))
                  ("2"
                   (assert)
                   (expand "nonempty?")
                   (case "card(r2(G!1)) = 0")
                   (("1" (assert))
                    ("2"
                     (hide -3 -4 -5 -6 -7 2 3 4 5 6)
                     (expand "SG2")
                     (lemma "card_empty?[T]")
                     (inst -1 "vert(subgraph(G!1, r2(G!1)))")
                     (lemma "card_subset[T]")
                     (inst -1 "r2(G!1)" "vert(subgraph(G!1, r2(G!1)))")
                     (ground)
                     (hide -1 -2 2 -3)
                     (grind :exclude ("choose" "edge?")))))))
                ("2" (assert))))))
            ("2" (assert))))
          ("2" (assert))))))))))


proof_type: t_proof
decl_type: tcc
library: graphs
theory: ramsey_new
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (case "subset?({n: T | vert(G!1)(n) AND
                                             n /= v0!1 AND
                                              edge?[T](G!1)(v0!1, n)},vert(G!1))")
   (("1" (lemma "finite_subset[T]") (inst?) (assert))
    ("2"
     (hide 2)
     (expand "subset?")
     (skosimp*)
     (expand "member")
     (flatten))))


proof_type: t_proof
decl_type: tcc
library: graphs
theory: ramsey_new
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (case "subset?({n: T | vert(G!1)(n) AND
                                             n /= v0!1 AND
                                              NOT edge?[T](G!1)(v0!1, n)},vert(G!1))")
   (("1" (lemma "finite_subset[T]") (inst?) (assert))
    ("2"
     (hide 2)
     (expand "subset?")
     (skosimp*)
     (expand "member")
     (assert))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: graph_from_edges
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (lemma "Union_finite[T]")
   (inst -1 "ES!1")
   (typepred "ES!1")
   (prop)
   (("1" (grind))
    ("2"
     (lemma "finite_dbl[T]")
     (expand "every")
     (hide (2 3))
     (hide -2)
     (skosimp)
     (typepred "x!1")
     (expand "extend")
     (prop)
     (skosimp)
     (inst -3 "x!2" "y!1")
     (grind))))


proof_type: f_proof
decl_type: formula
library: graphs
theory: graph_from_edges
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "Union")
   (skolem -1 "d!1")
   (flatten)
   (inst 1 "d!1")
   (expand "extend")
   (prop)
   (typepred "d!1")
   (propax))


proof_type: f_proof
decl_type: formula
library: graphs
theory: graph_from_edges
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (apply-extensionality 1 :hide? t)
   (expand "verts_of")
   (expand "verts_from")
   (iff 1)
   (prop)
   (("1"
     (lemma "Union_to_pred")
     (inst?)
     (assert)
     (skosimp*)
     (inst?)
     (assert))
    ("2"
     (lemma "pred_to_Union")
     (inst?)
     (assert)
     (hide 2)
     (skosimp*)
     (inst?)
     (assert))))


proof_type: t_proof
decl_type: tcc
library: graphs
theory: graph_from_edges
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "restrict")
   (lemma "verts_of_TCC1")
   (inst - "ES!1")
   (case-replace
    "{t: T | EXISTS (d: doubleton[T]): d(t) AND ES!1(d)} =  (Union[T](extend[setof[T], doubleton[T], bool, FALSE](ES!1)))")
   (hide -1 2)
   (apply-extensionality 1 :hide? t)
   (iff 1)
   (prop)
   (("1" (skosimp*) (expand "Union") (inst?) (expand "extend") (ground))
    ("2"
     (expand "Union")
     (skosimp*)
     (typepred "a!1")
     (expand "extend")
     (ground)
     (skosimp*)
     (inst?)
     (assert))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "empty?")
   (skosimp)
   (expand "member")
   (expand "add_element")
   (skosimp)
   (inst -1 "s!1")
   (assert))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand* "empty?" "member")
   (skosimp)
   (expand "add_set")
   (skosimp)
   (inst?)
   (assert))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (decompose-equality 1)
   (iff)
   (prop)
   (("1" (expand* "set_seq" "singleton") (rewrite "empty_0") (assert))
    ("2"
     (expand* "set_seq" "singleton")
     (rewrite "empty_0")
     (assert)
     (skosimp))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand* "empty?" "member")
   (skosimp)
   (expand "set_seq")
   (flatten)
   (inst -3 "0")
   (expand "member")
   (inst?))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (skoletin* 1)
   (skoletin* 2)
   (decompose-equality 1)
   (iff)
   (prop)
   (("1"
     (expand* "Union" "union" "member")
     (skosimp)
     (typepred "a!2")
     (expand "add_set" -1)
     (skosimp)
     (replaces -1)
     (replaces -2)
     (case-replace "a!3 = a!1")
     (hide 3)
     (inst?)
     (replaces -2)
     (expand "add_set")
     (inst?)
     (typepred "a!3")
     (expand "add")
     (expand "member")
     (assert))
    ("2"
     (expand* "Union" "union" "member")
     (prop)
     (("1"
       (skosimp)
       (typepred "a!2")
       (replaces -4)
       (inst?)
       (expand "add_set")
       (skosimp)
       (inst?)
       (expand "add")
       (expand "member")
       (propax))
      ("2"
       (replaces -2)
       (inst?)
       (expand "add_set")
       (inst?)
       (expand "add")
       (propax))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (skoletin 1)
   (inst 1 "LAMBDA (x: (A)): rest(x)")
   (("1"
     (expand "bijective?")
     (prop)
     (("1"
       (expand "injective?")
       (skosimp)
       (typepred "x1!1" "x2!1")
       (replaces -4)
       (expand "add_element")
       (skosimp*)
       (replace -1 -3)
       (replace -2 -3)
       (rewrite "rest_add_first")
       (rewrite "rest_add_first")
       (assert))
      ("2"
       (expand "surjective?")
       (skosimp)
       (inst 1 "add_first(a!1, y!1)")
       (("1" (rewrite "rest_add_first"))
        ("2" (replaces -1) (expand "add_element") (inst?))))))
    ("2"
     (skosimp)
     (typepred "x!1")
     (replaces -2)
     (expand "add_element")
     (skosimp)
     (replaces -1)
     (rewrite "rest_add_first")
     (assert))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (skoletin 1)
   (("1"
     (lemma "card_add_element_aux")
     (inst?)
     (replace -2 -1 rl)
     (assert)
     (lemma "card_eq_bij[finseq,finseq]")
     (inst?)
     (assert))
    ("2" (skosimp) (lemma "card_add_element_TCC1") (inst?) (assert))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (skoletin* 1)
   (prop)
   (expand "disjoint?")
   (expand* "empty?" "intersection")
   (skosimp)
   (expand "member")
   (flatten)
   (expand "Union")
   (skosimp)
   (typepred "a!2")
   (replaces -5)
   (replaces -4)
   (expand* "add_set" "add_element")
   (skosimp*)
   (replaces -1)
   (assert)
   (skosimp)
   (replaces -1)
   (lemma "first_equal")
   (inst?)
   (assert))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (skoletin* 1)
   (prop)
   (decompose-equality 1)
   (iff)
   (prop)
   (("1"
     (expand "Union")
     (skosimp)
     (typepred "a!2")
     (expand "B" -1)
     (expand "add_set" -1)
     (skosimp)
     (replaces -1)
     (typepred "a!3")
     (decompose-equality -3)
     (inst?)
     (iff)
     (prop)
     (expand "singleton")
     (assert))
    ("2"
     (expand "Union")
     (inst?)
     (replaces -4)
     (expand "add_set")
     (inst?)
     (decompose-equality -2)
     (inst?)
     (iff)
     (prop)
     (expand "singleton")
     (propax))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (skoletin 1)
   (inst 1 "LAMBDA (x: (M!1)): add_element(S!1)(x)")
   (("1"
     (expand "bijective?")
     (prop)
     (("1"
       (expand "injective?")
       (skosimp)
       (decompose-equality -1)
       (inst -1 "add_first(x1!1, choose(S!1))")
       (iff)
       (prop)
       (("1"
         (expand "add_element")
         (skosimp*)
         (replaces -1)
         (lemma "first_equal")
         (inst?)
         (assert))
        ("2" (hide (1 3)) (expand "add_element") (inst?))))
      ("2"
       (expand "surjective?")
       (skosimp)
       (typepred "y!1")
       (replaces -2)
       (expand "add_set")
       (skosimp)
       (inst?)
       (assert))))
    ("2" (skosimp) (replaces -1) (expand "add_set") (inst?))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (skoletin 1)
   (case "empty?(S!1)")
   (("1"
     (case "empty?(M!1)")
     (("1"
       (lemma "emptyset_gives_emptyset1")
       (inst?)
       (assert)
       (replace -4 -1 rl)
       (hide (-2 -3 -4))
       (rewrite "emptyset_is_empty?")
       (lemma "finite_emptyset[finseq]")
       (assert))
      ("2"
       (case "B = singleton(emptyset)")
       (("1" (hide (-2 -3 1)) (replaces -1) (rewrite "finite_singleton"))
        ("2"
         (hide 3)
         (decompose-equality 1)
         (iff)
         (prop)
         (("1"
           (expand "singleton")
           (replaces -3)
           (expand "add_set")
           (skosimp)
           (lemma "emptyset_gives_emptyset")
           (inst?)
           (assert)
           (replace -2 -1 rl)
           (hide (-2 -3))
           (rewrite "emptyset_is_empty?"))
          ("2"
           (expand "singleton")
           (replaces -3)
           (expand "add_set")
           (inst 1 "choose(M!1)")
           (("1"
             (lemma "emptyset_gives_emptyset")
             (inst?)
             (assert)
             (rewrite "emptyset_is_empty?"))
            ("2" (expand "nonempty?") (propax))))))))))
    ("2"
     (lemma "add_set_is_finite_aux")
     (inst?)
     (expand "nonempty?")
     (assert)
     (replaces -2)
     (lemma "bijection_finite_set2[T,set[finseq]]")
     (inst?)
     (assert))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (measure-induct+ "card(M)" "M")
   (("1"
     (skosimp)
     (case "empty?(x!1)")
     (("1"
       (hide -2)
       (lemma "empty_card[T]")
       (inst?)
       (assert)
       (replace -1 1)
       (assert)
       (case "empty?(Union(add_set(S!1)(x!1)))")
       (("1" (rewrite "empty_card" -1))
        ("2"
         (hide (-1 2))
         (lemma "Union_empty[finseq]")
         (inst?)
         (assert)
         (hide 2)
         (flatten)
         (hide 2)
         (lemma "emptyset_gives_emptyset1")
         (inst?)
         (assert))))
      ("2"
       (inst -1 "rest(x!1)" "S!1")
       (prop)
       (("1"
         (lemma "choose_rest[T]")
         (inst?)
         (assert)
         (replace -1 2 rl)
         (lemma "add_element_add_set")
         (inst -1 "rest(x!1)" "S!1" "choose(x!1)")
         (prop)
         (("1"
           (assert)
           (replaces -1)
           (replaces -1)
           (lemma "choose_not_member[T]")
           (inst?)
           (assert)
           (lemma "disjoint_add_set")
           (inst -1 "rest(x!1)" "S!1" "choose(x!1)")
           (assert)
           (lemma "card_disj_union[finseq]")
           (inst?)
           (("1"
             (assert)
             (replaces -1)
             (replaces -2)
             (hide (-1 1 2))
             (lemma "card_add_element")
             (inst?)
             (assert)
             (replaces -1)
             (lemma "card_rest[T]")
             (inst?)
             (assert)
             (replaces -1)
             (assert))
            ("2"
             (hide-all-but 1)
             (lemma "card_add_element_aux")
             (inst?)
             (assert)
             (lemma "bijection_finite_set1[finseq, finseq]")
             (inst -1 "S!1" "add_element(S!1)(choose[T](x!1))")
             (assert))))
          ("2"
           (hide (-2 -3 2))
           (lemma "choose_not_member[T]")
           (inst?)
           (assert))))
        ("2" (hide 3) (lemma "card_rest[T]") (inst?) (assert))))))
    ("2"
     (hide-all-but 1)
     (lemma "card_add_set_TCC1")
     (inst -1 "y!1" "S!1" "add_set(S!1)(y!1)"))
    ("3" (hide 2) (lemma "card_add_set_TCC1") (inst?) (assert))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (induct "n")
   (("1" (skosimp) (skoletin 1) (inst?) (assert))
    ("2"
     (skosimp)
     (lemma "set_seq_singleton")
     (inst?)
     (replaces -1)
     (rewrite "finite_singleton"))
    ("3"
     (skosimp*)
     (inst?)
     (name-replace "C!1" "set_seq(M!1)(1 + j!1)" :hide? nil)
     (name-replace "S!1" "set_seq(M!1)(j!1)" :hide? nil)
     (case "C!1 = Union(add_set(S!1)(M!1))")
     (("1"
       (replace -1 1)
       (lemma "card_add_set_TCC1")
       (inst -1 "M!1" "S!1" "add_set(S!1)(M!1)"))
      ("2"
       (hide 2)
       (decompose-equality 1)
       (iff)
       (prop)
       (("1"
         (expand "Union")
         (replace -3 -1 rl)
         (expand "set_seq" -1)
         (flatten)
         (inst 1 "add_element(S!1)(x!1(0))")
         (("1"
           (expand "add_element")
           (inst 1 "rest(x!1)")
           (("1"
             (lemma "seq_first_rest")
             (inst?)
             (assert)
             (expand "first")
             (propax))
            ("2"
             (replace -3 1 rl)
             (expand "set_seq" 1)
             (prop)
             (("1" (hide-all-but (-1 1)) (grind))
              ("2"
               (skosimp)
               (expand* "member" "finseq_appl")
               (case "rest(x!1)`length = 0")
               (("1" (hide-all-but (-1 -2 1)) (grind))
                ("2"
                 (inst -2 "i!1 + 1")
                 (lemma "rest_pos")
                 (inst?)
                 (assert)
                 (inst -1 "i!1")
                 (expand "finseq_appl")
                 (assert))))))))
          ("2"
           (expand "add_set" 1)
           (inst 1 "x!1(0)")
           (("1" (inst -2 "0") (expand " member") (propax))
            ("2" (assert))))
          ("3" (assert))))
        ("2"
         (replace -3 1 rl)
         (expand "Union")
         (skosimp)
         (typepred "a!1")
         (expand "add_set")
         (skosimp)
         (replaces -1)
         (expand "add_element")
         (skosimp)
         (typepred "s!1")
         (replace -3 -1 rl)
         (expand "set_seq" (-1 1))
         (flatten)
         (prop)
         (("1" (hide-all-but (-1 -3 1)) (grind))
          ("2"
           (skosimp)
           (expand "member")
           (case-replace "i!1 = 0")
           (("1"
             (hide-all-but (-4 1))
             (lemma "first_add")
             (inst?)
             (replace -2 -1 rl)
             (expand "first")
             (assert))
            ("2"
             (inst -2 "i!1 - 1")
             (("1"
               (lemma "rest_pos")
               (inst?)
               (prop)
               (("1"
                 (inst -1 "i!1 - 1")
                 (("1"
                   (assert)
                   (lemma "rest_add_first")
                   (inst?)
                   (assert))
                  ("2" (hide-all-but (-1 -3 1 2)) (grind))))
                ("2" (hide-all-but (-1 -2 -4 1)) (grind))))
              ("2" (hide-all-but (1 2)) (assert))))))))))
      ("3" (propax))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (skoletin* 1)
   (("1"
     (decompose-equality 1)
     (iff)
     (prop)
     (("1"
       (expand "Union")
       (replace -3 -1)
       (expand "set_seq" -1)
       (flatten)
       (inst 1 "add_element(D)(x!1(0))")
       (("1"
         (expand "add_element")
         (inst 1 "rest(x!1)")
         (("1"
           (lemma "seq_first_rest")
           (inst?)
           (assert)
           (expand "first")
           (propax))
          ("2"
           (replace -3 1)
           (expand "set_seq" 1)
           (prop)
           (("1" (hide-all-but (-1 1)) (grind))
            ("2"
             (skosimp)
             (expand* "member" "finseq_appl")
             (case "rest(x!1)`length = 0")
             (("1" (hide-all-but (-1 -2 1)) (grind))
              ("2"
               (inst -2 "i!1 + 1")
               (lemma "rest_pos")
               (inst?)
               (assert)
               (inst -1 "i!1")
               (expand "finseq_appl")
               (assert))))))))
        ("2"
         (expand "add_set" 1)
         (inst 1 "x!1(0)")
         (("1" (inst -2 "0") (expand " member") (propax))
          ("2" (assert))))
        ("3"
         (lemma "set_seq_is_finite")
         (inst -1 "M!1" "p!1 - 1")
         (assert))
        ("4" (assert))))
      ("2"
       (replace -3 1)
       (expand "Union")
       (skosimp)
       (typepred "a!1")
       (expand "add_set")
       (skosimp)
       (replaces -1)
       (expand "add_element")
       (skosimp)
       (typepred "s!1")
       (replace -3 -1)
       (expand "set_seq" (-1 1))
       (flatten)
       (prop)
       (("1" (hide-all-but (-1 -3 1)) (grind))
        ("2"
         (skosimp)
         (expand "member")
         (case-replace "i!1 = 0")
         (("1"
           (hide-all-but (-4 1))
           (lemma "first_add")
           (inst?)
           (replace -2 -1 rl)
           (expand "first")
           (assert))
          ("2"
           (inst -2 "i!1 - 1")
           (("1"
             (lemma "rest_pos")
             (inst?)
             (prop)
             (("1"
               (inst -1 "i!1 - 1")
               (("1" (assert) (lemma "rest_add_first") (inst?) (assert))
                ("2" (hide-all-but (-1 -3 1 2)) (grind))))
              ("2" (hide-all-but (-1 -2 -4 1)) (grind))))
            ("2" (hide-all-but (1 2)) (assert))))))))))
    ("2"
     (skosimp)
     (lemma "set_seq_is_finite")
     (inst -1 "M!1" "p!1 - 1")
     (assert))
    ("3"
     (skosimp*)
     (lemma "set_seq_is_finite")
     (inst -1 "M!1" "p!1 - 1")
     (assert))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (induct "n")
   (("1"
     (skosimp)
     (skoletin 1)
     (("1" (inst?) (assert))
      ("2"
       (skosimp)
       (hide -3)
       (lemma "set_seq_is_finite")
       (inst?)
       (assert))))
    ("2"
     (skosimp)
     (rewrite "expt_x0")
     (lemma "set_seq_singleton")
     (inst?)
     (replaces -1)
     (rewrite "card_singleton"))
    ("3"
     (skosimp*)
     (inst?)
     (case "empty?(M!1)")
     (("1"
       (hide -2)
       (lemma "set_seq_empty")
       (inst?)
       (assert)
       (rewrite "empty_card")
       (rewrite "empty_card")
       (lemma "expt_eq_0")
       (inst?)
       (assert))
      ("2"
       (lemma "set_seq_is_add_set")
       (inst?)
       (assert)
       (replaces -1)
       (lemma "card_add_set")
       (inst?)
       (assert)
       (replaces -1)
       (replaces -1)
       (lemma "expt_plus")
       (inst -1 "j!1" "1" "card(M!1)")
       (("1" (rewrite "expt_x1") (assert))
        ("2" (hide 3) (prop) (rewrite "empty_card"))))))
    ("4"
     (hide 2)
     (skosimp*)
     (lemma "set_seq_is_finite")
     (inst?)
     (assert))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: cauchy_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma "card_add_element_aux")
   (inst?)
   (replace -2 -1 rl)
   (assert)
   (lemma "bijection_finite_set1[finseq,finseq]")
   (inst -1 "S!1" "A!1")
   (assert))


proof_type: t_proof
decl_type: tcc
library: groups
theory: cauchy_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma "Union_finite[finseq]")
   (inst -1 "B!1")
   (assert)
   (hide 2)
   (prop)
   (("1" (lemma "add_set_is_finite") (inst?) (assert))
    ("2"
     (expand "every")
     (skosimp)
     (typepred "x!1")
     (replaces -2)
     (expand "add_set")
     (skosimp)
     (lemma "card_add_element_TCC1")
     (inst?)
     (assert))))


proof_type: f_proof
decl_type: formula
library: groups
theory: zp_group
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (expand "group?")
   (prop)
   (("1"
     (expand "monoid?")
     (prop)
     (("1"
       (expand "monad?")
       (prop)
       (("1"
         (expand "star_closed?")
         (skosimp)
         (expand* "member" "++" "Zn")
         (expand "restrict")
         (typepred "rem(n)(x!1 + y!1)")
         (propax))
        ("2" (expand* "member" "Zn") (expand "restrict") (assert))
        ("3"
         (expand "identity?")
         (skosimp)
         (prop)
         (("1"
           (expand "restrict")
           (expand "++")
           (typepred "x!1")
           (hide -2)
           (rewrite "rem_mod"))
          ("2" (expand "restrict") (expand "++") (rewrite "rem_mod"))))))
      ("2"
       (expand "associative?")
       (skosimp*)
       (expand "restrict")
       (expand "++")
       (rewrite "rem_sum1")
       (rewrite "rem_sum1"))))
    ("2"
     (expand "inv_exists?")
     (skosimp)
     (case-replace "x!1 = 0" :hide? T)
     (("1"
       (inst 1 "0")
       (("1" (expand "++") (rewrite "rem_zero"))
        ("2" (expand "Zn") (expand "restrict") (assert))))
      ("2"
       (inst 2 "rem(n)(n - x!1)")
       (("1"
         (expand "++")
         (rewrite "rem_mod")
         (assert)
         (rewrite "rem_self"))
        ("2" (expand "Zn") (expand "restrict") (assert))))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: zp_group
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (expand "is_finite")
   (inst 1 "n" "(LAMBDA (x:(Zn)): x)")
   (expand "injective?")
   (skosimp*))


proof_type: f_proof
decl_type: formula
library: groups
theory: zp_group
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (lemma "card_bij[below(n)]")
   (inst?)
   (assert)
   (hide 2)
   (inst 1 "(LAMBDA (x:(Zn)): x)")
   (expand "bijective?")
   (prop)
   (("1" (expand "injective?") (skosimp*))
    ("2"
     (expand "surjective?")
     (skosimp)
     (inst?)
     (expand "Zn")
     (expand "restrict")
     (typepred "y!1")
     (propax))))


proof_type: f_proof
decl_type: formula
library: groups
theory: right_left_cosets
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "left_coset")
   (expand "member")
   (expand "nonempty?")
   (expand "empty?")
   (expand "member")
   (expand "*")
   (inst - "a!1")
   (inst + "one")
   (("1" (rewrite "one_right")) ("2" (rewrite "one_in"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: right_left_cosets
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (assert)
   (typepred "G!1")
   (expand "finite_group?")
   (flatten)
   (expand "left_coset")
   (lemma "left_coset_subset")
   (inst -1 "G!1" "H!1" "a!1")
   (lemma "finite_subset[T]")
   (inst?)
   (assert))


proof_type: f_proof
decl_type: formula
library: groups
theory: right_left_cosets
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (typepred "G!1")
   (expand "subgroup?")
   (assert)
   (inst + "LAMBDA (x:(H!1)): a!1*x")
   (("1"
     (expand "bijective?")
     (split)
     (("1" (expand "injective?") (skosimp*) (rewrite "cancel_left"))
      ("2"
       (expand "surjective?")
       (skosimp*)
       (typepred "y!1")
       (replaces -5)
       (expand "left_coset")
       (expand "*")
       (skosimp)
       (inst?)
       (assert))))
    ("2"
     (skosimp)
     (replaces -4)
     (expand "left_coset")
     (expand "*")
     (inst 1 "x!1"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: right_left_cosets
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (typepred "G!1")
   (expand "subgroup?")
   (assert)
   (inst + "LAMBDA (x:(H!1)): a!1*x*inv(a!1)")
   (("1"
     (expand "bijective?")
     (split)
     (("1"
       (expand "injective?")
       (skosimp*)
       (rewrite "cancel_right")
       (rewrite "cancel_left"))
      ("2"
       (expand "surjective?")
       (skosimp*)
       (typepred "y!1")
       (hide (-2 -3 -4))
       (expand "*")
       (skosimp)
       (inst 1 "inv(a!1)*h!1")
       (("1" (replaces -1) (rewrite "assoc"))
        ("2"
         (typepred "h!1")
         (skosimp)
         (replaces -1)
         (typepred "h!2")
         (rewrite "assoc"))))))
    ("2"
     (skosimp*)
     (expand "*" 1 1)
     (typepred "x!1")
     (inst?)
     (expand "*" 1 1)
     (inst?))))


proof_type: f_proof
decl_type: formula
library: groups
theory: right_left_cosets
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (assert)
   (name-replace "A" "left_coset(G!1, H!1)(a!1)" :hide? nil)
   (name-replace "B" "left_coset(G!1, H!1)(b!1)" :hide? nil)
   (lemma "card_eq_bij[T,T]")
   (inst?)
   (assert)
   (hide (-4 -5 2))
   (lemma "left_coset_correspondence")
   (inst -1 "G!1" "H!1" "a!1" "A")
   (lemma "left_coset_correspondence")
   (inst -1 "G!1" "H!1" "b!1" "B")
   (assert)
   (skosimp*)
   (lemma "bijective_inverse_exists[(H!1), (A)]")
   (inst -1 "f!2")
   (expand "exists1")
   (flatten)
   (hide -2)
   (skolem * "f!3")
   (inst 1 "f!1 o f!3")
   (lemma "bij_inv_is_bij_alt[(H!1), (A)]")
   (inst -1 "f!2" "f!3")
   (hide-all-but (-1 -3 1))
   (lemma "composition_bijective[(A), (H!1), (B)]")
   (inst?)
   (assert))


proof_type: f_proof
decl_type: formula
library: groups
theory: right_left_cosets
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (apply-extensionality 1 :hide? t)
   (expand "Union")
   (iff 1)
   (prop)
   (("1"
     (skosimp*)
     (typepred "a!1")
     (expand "left_cosets")
     (skosimp*)
     (replace -1)
     (hide -1)
     (expand "*")
     (skosimp*)
     (replace -1)
     (hide -1)
     (typepred "a!2")
     (typepred "h!1")
     (typepred "H!1")
     (expand "subgroup?")
     (expand "subset?")
     (inst?)
     (expand "member")
     (rewrite "star_closed"))
    ("2"
     (inst + "x!1*H!1")
     (("1"
       (expand "*")
       (inst + "one")
       (("1" (rewrite "one_right")) ("2" (rewrite "one_in"))))
      ("2" (expand "left_cosets") (inst + "x!1"))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: right_left_cosets
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "disjoint?")
   (expand "empty?")
   (assert)
   (expand "intersection")
   (assert)
   (skosimp*)
   (typepred "B!1")
   (typepred "A!1")
   (skosimp*)
   (replace -1)
   (hide -1)
   (replace -1)
   (hide -1)
   (expand "*")
   (apply-extensionality 1 :hide? t)
   (iff 1)
   (skosimp*)
   (prop)
   (("1"
     (skosimp*)
     (inst + "h!2*inv(h!1)*h!3")
     (("1"
       (case-replace "x!1*inv(h!1) = a!1")
       (("1"
         (assert)
         (replace -4 -1)
         (rewrite "assoc" -1 :dir rl)
         (rewrite "associative" 1 :dir rl)
         (replace -1)
         (propax))
        ("2"
         (hide 2)
         (hide -1 -3)
         (replaces -1)
         (rewrite "assoc" :dir rl))))
      ("2"
       (rewrite "star_closed")
       (rewrite "star_closed")
       (rewrite "inv_in"))))
    ("2"
     (skosimp*)
     (inst + "h!1*inv(h!2)*h!3")
     (("1"
       (replace -1)
       (hide -1)
       (rewrite "assoc")
       (rewrite "assoc")
       (replace -1 1 rl)
       (case-replace "x!1*inv(h!2) = a!2")
       (hide -1 2)
       (replaces -1)
       (rewrite "associative" 1))
      ("2"
       (rewrite "star_closed")
       (rewrite "star_closed")
       (rewrite "inv_in"))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: right_left_cosets
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "finite_partition?")
   (lemma "set_left_cosets_full")
   (inst - "G!1" "H!1")
   (typepred "G!1")
   (prop)
   (("1"
     (expand "partition?")
     (skosimp*)
     (lemma "left_cosets_disjoint")
     (inst - "G!1" "H!1" "a!1" "b!1")
     (("1" (assert))
      ("2" (typepred "b!1") (expand "left_cosets") (propax))
      ("3" (typepred "a!1") (expand "left_cosets") (propax))))
    ("2"
     (lemma "Union_finite[T]")
     (inst?)
     (assert)
     (hide 2)
     (replace -2)
     (expand "finite_group?")
     (propax))
    ("3"
     (expand "every")
     (skosimp*)
     (typepred "x!1")
     (expand "left_cosets")
     (skosimp*)
     (replace -1)
     (lemma "left_coset_finite")
     (inst -1 "H!1" "a!1" "G!1")
     (assert)
     (expand "left_coset")
     (propax))))


proof_type: f_proof
decl_type: formula
library: groups
theory: right_left_cosets
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (apply-extensionality 1 :hide? t)
   (expand "Union")
   (iff 1)
   (prop)
   (("1"
     (skosimp*)
     (typepred "a!1")
     (expand "right_cosets")
     (skosimp*)
     (replaces -1)
     (expand "*")
     (skosimp*)
     (replaces -2)
     (replaces -1)
     (typepred "a!2")
     (typepred "h!1")
     (typepred "H!1")
     (expand "subgroup?")
     (expand "subset?")
     (inst?)
     (expand "member")
     (rewrite "star_closed"))
    ("2"
     (inst + "H!1*x!1")
     (("1"
       (expand "*")
       (inst + "one")
       (("1" (rewrite "one_left")) ("2" (rewrite "one_in"))))
      ("2" (expand "right_cosets") (inst + "x!1"))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: right_left_cosets
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (inst 1
    "(LAMBDA (A: (right_cosets(G!1,H!1))): inv(rc_gen(G!1,H!1,A)) * H!1)")
   (("1"
     (expand "bijective?")
     (split)
     (("1"
       (expand "injective?")
       (skosimp*)
       (typepred "x1!1" "x2!1")
       (lemma "lc_eq")
       (inst -1 "G!1" "H!1" "inv(rc_gen(G!1, H!1, x1!1))"
        "inv(rc_gen(G!1, H!1, x2!1))")
       (assert)
       (skosimp)
       (rewrite "divby")
       (case "rc_gen(G!1, H!1, x2!1) = h!1 * rc_gen(G!1, H!1, x1!1)")
       (("1"
         (hide (-2 -5))
         (lemma "rc_is_eq")
         (inst -1 "G!1" "H!1" "rc_gen(G!1, H!1, x2!1)"
          "rc_gen(G!1, H!1, x1!1)")
         (prop)
         (("1" (assert)) ("2" (hide-all-but (-1 1)) (inst?))))
        ("2"
         (hide-all-but (-1 1))
         (replace -1 1 rl)
         (rewrite "assoc" :dir rl))))
      ("2"
       (expand "surjective?")
       (skosimp)
       (typepred "y!1")
       (expand "left_cosets")
       (skosimp)
       (inst 1 "H!1 * inv(a!1)")
       (("1"
         (replace -1 1)
         (lemma "lc_is_eq")
         (inst -1 "G!1" "H!1" "inv(rc_gen(G!1, H!1, H!1 * inv(a!1)))"
          "a!1")
         (assert)
         (hide 2)
         (typepred "rc_gen(G!1, H!1, H!1 * inv(a!1))")
         (("1"
           (lemma "rc_eq")
           (inst -1 "G!1" "H!1" "inv(a!1)"
            "rc_gen(G!1, H!1, H!1 * inv(a!1))")
           (assert)
           (skosimp)
           (hide-all-but (-1 1))
           (inst 1 "h!1")
           (lemma "inv_inv")
           (inst?)
           (name-replace "c" "rc_gen(G!1, H!1, H!1 * inv(a!1))")
           (replaces -2)
           (rewrite "inv_star")
           (replace -1 1 rl)
           (rewrite "assoc" :dir rl))
          ("2" (hide (-1 -2 2)) (inst?) (rewrite "inv_in"))))
        ("2" (expand "right_cosets") (inst?) (rewrite "inv_in"))))))
    ("2"
     (skosimp)
     (expand "left_cosets")
     (inst?)
     (("1" (rewrite "inv_in"))
      ("2" (typepred "A!1") (expand "right_cosets") (propax))))
    ("3" (skosimp) (typepred "A!1") (expand "right_cosets") (propax))
    ("4" (skosimp))))


proof_type: f_proof
decl_type: formula
library: groups
theory: right_left_cosets
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma "card_eq_bij[set[T], set[T]]")
   (inst -1 "right_cosets(G!1, H!1)" "left_cosets(G!1, H!1)")
   (assert)
   (hide 2)
   (lemma "right_left_correspondence")
   (inst?)
   (assert))


proof_type: f_proof
decl_type: formula
library: groups
theory: right_left_cosets
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "index")
   (case "nonempty?(left_cosets(G!1, H!1))")
   (("1" (rewrite "nonempty_card") (assert))
    ("2"
     (hide 2)
     (expand* "nonempty?" "empty?" "member")
     (inst -1 "H!1")
     (expand "left_cosets")
     (inst 1 "one")
     (("1" (rewrite "left_coset_one")) ("2" (rewrite "one_in"))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: right_left_cosets
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "card_extend[set[T], left_cosets[T, *, one](G!1, N!1)]")
   (inst?)
   (("1"
     (replaces -1)
     (expand "/")
     (lemma "card_restrict[setof[T], left_cosets[T, *, one](G!1, N!1)]")
     (inst?)
     (("1"
       (expand "<=")
       (expand "index")
       (assert)
       (hide (-2 -3 1))
       (lemma "smaller_card_subset[set[T]]")
       (inst -1
        "restrict[setof[T], left_cosets[T, *, one](G!1, N!1), bool]
                             (left_cosets(G!1, N!1))"
        "left_cosets(G!1, N!1)")
       (("1"
         (prop)
         (("1"
           (skosimp)
           (assert)
           (expand "extend")
           (prop)
           (("1" (expand "restrict") (propax))
            ("2" (hide -2) (expand "left_cosets") (propax))))
          ("2"
           (expand* "subset?" "member")
           (skosimp)
           (hide -2)
           (expand "extend")
           (prop)
           (hide -2)
           (expand "left_cosets")
           (propax))
          ("3"
           (lemma
            "card_extend[set[T], left_cosets[T, *, one](G!1, N!1)]")
           (inst?)
           (replaces -1))))
        ("2"
         (hide -1)
         (lemma
          "finite_extension[set[T], left_cosets[T, *, one](G!1, N!1)]")
         (inst?)
         (assert)
         (hide 2)
         (rewrite
          "finite_restrict[setof[T], left_cosets[T, *, one](G!1, N!1)]")
         (hide 2)
         (rewrite "index_TCC1"))))
      ("2" (hide (-2 2)) (rewrite "index_TCC1"))))
    ("2"
     (hide (-2 2))
     (expand "/")
     (rewrite
      "finite_restrict[setof[T], left_cosets[T, *, one](G!1, N!1)]")
     (hide 2)
     (rewrite "index_TCC1"))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: right_left_cosets
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "set_right_cosets_full_1")
   (inst - "G!1" "H!1")
   (typepred "G!1")
   (lemma "Union_finite[T]")
   (inst?)
   (assert)
   (hide 2)
   (replace -2)
   (expand "finite_group?")
   (propax))


proof_type: t_proof
decl_type: tcc
library: groups
theory: right_left_cosets
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "set_left_cosets_full")
   (inst - "G!1" "H!1")
   (typepred "G!1")
   (lemma "Union_finite[T]")
   (inst?)
   (assert)
   (hide 2)
   (replace -2)
   (expand "finite_group?")
   (propax))


proof_type: t_proof
decl_type: tcc
library: groups
theory: right_left_cosets
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (inst 1 "N!1")
   (inst 1 "one")
   (("1" (rewrite "left_coset_one")) ("2" (rewrite "one_in"))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: right_left_cosets
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "group?")
   (prop)
   (("1"
     (expand "monoid?")
     (prop)
     (("1"
       (expand "monad?")
       (prop)
       (("1"
         (expand "star_closed?")
         (skosimp*)
         (assert)
         (expand "restrict")
         (expand "left_cosets")
         (lemma "mult_is_coset[T,*,one]")
         (inst?))
        ("2"
         (assert)
         (expand "restrict")
         (expand "left_cosets")
         (inst 1 "one")
         (("1" (rewrite "left_coset_one")) ("2" (rewrite "one_in"))))
        ("3"
         (expand "identity?")
         (skosimp*)
         (expand "restrict")
         (lemma "N_is_identity[T,*,one]")
         (inst?)
         (assert)
         (flatten)
         (assert))))
      ("2"
       (expand "associative?")
       (expand "restrict")
       (skosimp*)
       (typepred "z!1")
       (typepred "y!1")
       (typepred "x!1")
       (skosimp*)
       (replaces -1)
       (hide -1)
       (replaces -1)
       (hide -1)
       (replaces -1)
       (hide -1)
       (rewrite "mult_lem[T,*,one]")
       (lemma "mult_lem[T,*,one]")
       (inst?)
       (("1"
         (replaces -1)
         (lemma "mult_lem[T,*,one]")
         (inst?)
         (replaces -1)
         (lemma "mult_lem[T,*,one]")
         (inst?)
         (("1" (replaces -1) (rewrite "assoc"))
          ("2" (hide 2) (rewrite "star_closed"))))
        ("2" (hide 2) (rewrite "star_closed"))))))
    ("2"
     (expand "inv_exists?")
     (skosimp*)
     (typepred "x!1")
     (skosimp*)
     (replaces -1)
     (hide -1)
     (inst + "inv(a!1)*N!1")
     (("1"
       (lemma "mult_lem[T,*,one]")
       (inst?)
       (("1"
         (replaces -1)
         (lemma "mult_lem[T,*,one]")
         (inst?)
         (("1"
           (replaces -1)
           (rewrite "inv_right")
           (rewrite "inv_left")
           (rewrite "left_coset_one"))
          ("2" (hide 2) (typepred "a!1") (rewrite "inv_in"))))
        ("2" (rewrite "inv_in"))))
      ("2"
       (prop)
       (("1" (inst + "inv(a!1)") (rewrite "inv_in"))
        ("2"
         (expand "restrict")
         (expand "left_cosets")
         (inst + "inv(a!1)")
         (rewrite "inv_in"))))))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: right_left_cosets
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "/")
   (lemma "finite_extension[set[T], left_cosets[T, *, one](G!1, N!1)]")
   (inst?)
   (assert)
   (hide 2)
   (lemma "finite_restrict[setof[T], left_cosets[T, *, one](G!1, N!1)]")
   (inst?)
   (hide 2)
   (rewrite "index_TCC1"))


proof_type: f_proof
decl_type: formula
library: groups
theory: general_properties
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "divides")
   (skosimp)
   (lemma "rel_prime_lem")
   (inst -1 "x!1" "k!1")
   (assert)
   (expand "rel_prime")
   (skosimp)
   (lemma "both_sides_times1")
   (inst -1 "y!1" "1" "m!1 * x!1 + n!1 * k!1")
   (("1"
     (prop)
     (hide (-2 -3 -5))
     (assert)
     (rewrite "identity_mult")
     (lemma "commutative_mult")
     (inst -1 "k!1" "n!1")
     (replaces -1)
     (rewrite "associative_mult" :dir rl)
     (replaces -2)
     (inst 1 "n!1*x!2 + m!1*y!1")
     (assert))
    ("2" (prop) (inst 1 "0") (assert))))


proof_type: f_proof
decl_type: formula
library: groups
theory: general_properties
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (case "fs!1`length = 0")
   (("1" (grind))
    ("2"
     (expand* "divides" "product")
     (typepred "j!1")
     (typepred "fs!1`length")
     (lemma "product_middle")
     (inst?)
     (inst -1 "j!1")
     (assert)
     (replaces -1)
     (inst 2
      "product(0, j!1 - 1, fs!1`seq) * product(1 + j!1, length(fs!1) - 1, fs!1`seq)")
     (("1" (assert)) ("2" (grind))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: general_properties
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (induct "i")
   (("1" (typepred "i!1") (propax)) ("2" (assert))
    ("3"
     (skosimp*)
     (case-replace "j!1 = 0" :hide? T)
     (("1" (hide (-1 -2)) (grind))
      ("2"
       (assert)
       (inst -1 "p!1")
       (rewrite "expt_plus")
       (rewrite "expt_x1")
       (case-replace
        "seq_power(p!1, 1 + j!1) = seq_power(p!1, j!1) o fseq1(p!1)"
        :hide? T)
       (("1" (lemma "product_fseq_concat1") (inst?) (assert))
        ("2"
         (hide 3)
         (decompose-equality 1)
         (("1" (grind)) ("2" (decompose-equality 1) (grind))))))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: general_properties
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (measure-induct+ "fs`length" "fs")
   (skosimp*)
   (case "x!1`length = 0")
   (("1"
     (hide (-2 -3))
     (inst 1 "0")
     (expand "product")
     (assert)
     (rewrite "expt_x0"))
    ("2"
     (inst -1 "fseqs_ops_def[posnat,default].rest(x!1)")
     (inst -1 "p!1")
     (prop)
     (("1"
       (skosimp)
       (case "x!1 = fseq1(x!1`seq(0)) o fseqs_ops_def[posnat, default].rest(x!1)")
       (("1"
         (replace -1 2)
         (expand "only_power_p")
         (inst -3 "0")
         (("1"
           (skosimp)
           (inst 2 "n!1 + i!1")
           (rewrite "product_fseq_concat")
           (hide -1)
           (replaces -1)
           (replaces -1)
           (expand "product")
           (expand "fseq1")
           (assert)
           (rewrite "expt_plus"))
          ("2" (hide (-1 -2 3)) (assert))))
        ("2"
         (hide (-1 -2 3))
         (decompose-equality 1)
         (("1" (grind))
          ("2"
           (lemma "fseqs_ops_def[posnat, default].add_first_rest")
           (inst?)
           (replace -1 1 rl)
           (hide -1)
           (decompose-equality 1)
           (expand* "add" "first" "fseq1" "rest" "o" "^")
           (lift-if)
           (lift-if)
           (lift-if)
           (lift-if)
           (lift-if)
           (lift-if)
           (lift-if)
           (lift-if)
           (lift-if)
           (grind))))))
      ("2"
       (hide 3)
       (expand "only_power_p")
       (skosimp)
       (inst -1 "j!1 + 1")
       (("1"
         (skosimp)
         (inst 1 "i!1")
         (case-replace
          "fseqs_ops_def[posnat, default].rest(x!1)`seq(j!1) = x!1`seq(j!1 + 1)")
         (hide (-1 2))
         (expand "rest")
         (expand "^")
         (lift-if)
         (prop)
         (("1" (assert)) ("2" (typepred "j!1") (grind))
          ("3" (typepred "j!1") (expand "rest") (expand "^") (assert))))
        ("2" (hide 2) (typepred "j!1") (expand "rest") (grind))))
      ("3" (hide (-1 3)) (grind))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: general_properties
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "divides")
   (case-replace "i!1 = 1" :hide? T)
   (("1" (inst 1 "1") (grind))
    ("2"
     (inst 2 "p!1 ^ (i!1 - 1)")
     (("1" (lemma "expt_plus") (inst -1 "1" "i!1 - 1" "p!1") (grind))
      ("2" (typepred "p!1" "i!1") (grind))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: general_properties
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (case "j!1=0")
   (("1"
     (replaces -1)
     (inst 1 "0")
     (rewrite "expt_x0")
     (rewrite "one_div_one")
     (assert))
    ("2"
     (expand "divides")
     (skosimp)
     (lemma "prime_factors")
     (copy -1)
     (inst -1 "q!1")
     (inst -2 "x!1")
     (("1"
       (skosimp*)
       (lemma "product_power")
       (inst?)
       (("1"
         (copy -7)
         (replace -2 -1)
         (replace -3 -1)
         (replace -5 -1)
         (lemma "product_fseq_concat")
         (inst?)
         (replace -1 -2 rl)
         (hide -1)
         (lemma "product_sort")
         (inst -1 "fs!1 o fs!2")
         (replace -1 -2 rl)
         (hide -1)
         (lemma "Fundamental_Theorem_Arithmetic")
         (inst -1 "seq_power(p!1, j!1)" "sort(fs!1 o fs!2)"
          "product(seq_power(p!1, j!1))")
         (assert)
         (prop)
         (("1"
           (case "length(fs!1) = 0")
           (("1"
             (hide-all-but (-1 -5 2))
             (expand "product")
             (assert)
             (inst 1 "0")
             (rewrite "expt_x0")
             (assert))
            ("2"
             (case "fs!1 = seq_power(p!1,length(fs!1))")
             (("1"
               (replace -1 -5)
               (hide-all-but (-2 -5 1 3))
               (lemma "product_power")
               (inst -1 "length(fs!1)" "p!1")
               (replace -1 -3 rl)
               (inst?)
               (assert)
               (hide (-1 -3))
               (case "length(seq_power(p!1, j!1)) = length(sort(fs!1 o fs!2))")
               (("1" (hide -2) (grind)) ("2" (replaces -1))))
              ("2"
               (hide-all-but (-1 1))
               (decompose-equality 1)
               (("1" (hide -1) (grind))
                ("2"
                 (decompose-equality 1)
                 (case "x!2 >= fs!1`length")
                 (("1"
                   (hide -2)
                   (typepred "fs!1`seq")
                   (inst?)
                   (assert)
                   (grind))
                  ("2"
                   (lemma "sort_fseq_in?")
                   (inst -1 "fs!1 o fs!2" "fs!1`seq(x!2)")
                   (prop)
                   (("1"
                     (expand "in?")
                     (skosimp*)
                     (replace -3 -2 rl)
                     (replace -2 2)
                     (expand "seq_power" 2)
                     (lift-if)
                     (lift-if)
                     (lift-if)
                     (prop)
                     (("1" (assert))
                      ("2"
                       (typepred "ii!2")
                       (replace -5 -1 rl)
                       (hide-all-but (-1 2))
                       (grind))))
                    ("2"
                     (hide (1 4))
                     (expand "in?")
                     (inst?)
                     (("1"
                       (expand "o" 1)
                       (lift-if)
                       (prop)
                       (("1" (assert)) ("2" (assert))))
                      ("2" (hide -) (grind))))))))))
              ("3" (assert))))))
          ("2"
           (hide-all-but (-7 1))
           (expand "ordered_list_of_primes?")
           (prop)
           (("1"
             (expand "list_of_primes?")
             (skosimp)
             (expand "seq_power")
             (prop)
             (typepred "i!1")
             (hide (-2 2))
             (grind))
            ("2"
             (expand "non_decreasing?")
             (skosimp*)
             (expand "seq_power")
             (lift-if)
             (lift-if)
             (lift-if)
             (prop)
             (("1" (assert)) ("2" (typepred "j!2") (hide (-4 2)) (grind))
              ("3" (typepred "i!1") (hide (-3 1)) (grind))
              ("4" (typepred "i!1") (hide (-3 2)) (grind))))))
          ("3"
           (hide (-1 -2 -3 -5 -8 3))
           (expand "ordered_list_of_primes?")
           (prop)
           (("1"
             (hide (-2 -4 -5 2))
             (expand "list_of_primes?")
             (skosimp)
             (lemma "sort_fseq_in")
             (inst -1 "fs!1 o fs!2" "i!1")
             (("1"
               (expand "in?")
               (skosimp)
               (replaces -1)
               (expand "o")
               (prop)
               (("1" (inst -2 "ii!1"))
                ("2" (inst -3 "ii!1 - fs!1`length") (assert))
                ("3" (typepred "ii!1") (expand "o") (propax))))
              ("2" (typepred "i!1") (assert))))
            ("2"
             (typepred "sort(fs!1 o fs!2)")
             (hide-all-but (-2 1))
             (expand* "increasing?" "non_decreasing?")
             (skosimp)
             (typepred "j!2")
             (inst?)
             (assert))))))
        ("2" (assert))))
      ("2"
       (hide (-1 -2 3))
       (typepred "p!1 ^ j!1")
       (replaces -2)
       (typepred "q!1")
       (lemma "pos_times_gt")
       (inst?)
       (assert))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: general_properties
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (lemma "rel_prime_lem")
   (inst -1 "m!1" "1")
   (assert)
   (expand "rel_prime")
   (hide 2)
   (inst 1 "m!1 + 1" "-1")
   (assert))


proof_type: f_proof
decl_type: formula
library: groups
theory: general_properties
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "gcd")
   (rewrite "max_def")
   (("1"
     (expand "maximum?")
     (flatten)
     (inst -4 "p!1")
     (assert)
     (rewrite "divides_reflexive")
     (lemma "prime_gt_1")
     (inst?)
     (assert))
    ("2"
     (prop)
     (("1"
       (expand* "nonempty?" "empty?" "member")
       (inst -1 "p!1")
       (assert)
       (rewrite "divides_reflexive"))
      ("2"
       (inst?)
       (skosimp)
       (typepred "y!1")
       (hide-all-but (-3 -4 1))
       (expand "prime?")
       (flatten)
       (inst?)
       (prop)
       (("1" (hide -2) (assert)) ("2" (assert))))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: general_properties
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "gcd_1_nd")
   (inst -1 "m!1" "p!1")
   (assert)
   (prop)
   (("1"
     (expand "divides")
     (skosimp)
     (replaces -1)
     (replaces -3)
     (inst 1 "x!2 * y!1")
     (assert))
    ("2"
     (expand "divides")
     (skosimp)
     (replaces -1)
     (replaces -3)
     (inst 1 "x!1 * x!2")
     (assert))))


proof_type: f_proof
decl_type: formula
library: groups
theory: general_properties
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "gcd_1_ndp")
   (inst -1 "m!1" "p!1" "x!1" "y!1")
   (assert)
   (flatten)
   (lemma "gcd_is_1")
   (inst-cp -1 "x!1" "p!1")
   (inst -1 "y!1" "p!1")
   (assert))


proof_type: f_proof
decl_type: formula
library: groups
theory: groups_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (prop)
   (("1"
     (replace -1)
     (lemma "assoc[T, *, one]")
     (inst?)
     (replace -1 1 rl)
     (rewrite "inv_right[T, *, one]")
     (rewrite "right_identity[T, *, one]"))
    ("2"
     (replace - + rl)
     (hide -1)
     (lemma "assoc[T, *, one]")
     (inst?)
     (replace -1 1 rl)
     (rewrite "inv_left[T, *, one]")
     (rewrite "right_identity[T, *, one]"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: groups_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skeep)
   (expand "subgroup?")
   (expand* "subset?" "member")
   (skosimp*)
   (inst?)
   (inst?)
   (assert))


proof_type: f_proof
decl_type: formula
library: groups
theory: groups_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skeep)
   (expand "normal_subgroup?")
   (prop)
   (skosimp)
   (inst?)
   (expand "subgroup?" -1)
   (hide-all-but (-1 1))
   (expand* "subset?" "member")
   (inst?)
   (assert))


proof_type: f_proof
decl_type: formula
library: groups
theory: groups_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skeep)
   (lemma "subgroup_def[T,*,one]")
   (inst - "G" "intersection(H, K)")
   (assert)
   (hide 2)
   (prop)
   (("1"
     (expand "nonempty?")
     (expand "empty?")
     (expand "member")
     (expand "intersection")
     (expand "member")
     (inst - "one")
     (hide (-1 -2))
     (rewrite "one_in")
     (rewrite "one_in"))
    ("2"
     (expand* "subgroup?" "subset?" "member")
     (skosimp*)
     (inst?)
     (inst?)
     (expand "intersection")
     (assert)
     (assert))
    ("3"
     (expand "star_closed?")
     (expand "intersection")
     (assert)
     (skosimp*)
     (typepred "x!1")
     (typepred "y!1")
     (expand "intersection")
     (assert)
     (flatten)
     (rewrite "product_in")
     (rewrite "product_in"))
    ("4"
     (hide (-1 -2))
     (expand "inv_closed?")
     (expand "intersection")
     (expand "member")
     (skosimp*)
     (typepred "x!1")
     (expand "intersection")
     (assert)
     (rewrite "inv_in")
     (rewrite "inv_in"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: groups_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "subgroup_def[T,*,one]")
   (inst?)
   (assert)
   (hide 2)
   (prop)
   (("1"
     (expand* "nonempty?" "empty?" "member")
     (inst -1 "one")
     (expand "*")
     (inst 1 "a!1")
     (("1" (rewrite "inv_right"))
      ("2" (inst 1 "one") (("1" (assert)) ("2" (rewrite "one_in"))))))
    ("2"
     (typepred "H!1")
     (hide -1)
     (expand* "subgroup?" "subset?" "member")
     (skosimp*)
     (expand "*")
     (skosimp)
     (typepred "h!1")
     (skosimp)
     (replaces -1)
     (replaces -2)
     (inst -1 "h!2")
     (assert)
     (rewrite "product_in")
     (("1" (hide 2) (rewrite "product_in"))
      ("2" (hide 2) (rewrite "inv_in"))))
    ("3"
     (expand "star_closed?")
     (skosimp*)
     (expand "member")
     (typepred "x!1" "y!1")
     (expand "*")
     (skosimp*)
     (typepred "h!1" "h!2")
     (skosimp*)
     (replaces -1)
     (replaces -1)
     (replaces -1)
     (replaces -1)
     (rewrite "assoc")
     (rewrite "assoc")
     (rewrite "assoc" :dir rl)
     (rewrite "assoc" :dir rl)
     (rewrite "assoc" :dir rl)
     (inst 1 "a!1 * h!3 * h!4")
     (inst 1 "h!3 * h!4")
     (("1" (rewrite "assoc")) ("2" (rewrite "product_in"))))
    ("4"
     (expand "inv_closed?")
     (skosimp*)
     (expand "member")
     (typepred "x!1")
     (expand "*")
     (skosimp)
     (typepred "h!1")
     (skosimp)
     (replaces -1)
     (replaces -1)
     (rewrite "inv_star")
     (rewrite "inv_star")
     (rewrite "assoc")
     (inst 1 "a!1 * inv(h!2)")
     (inst 1 "inv(h!2)")
     (rewrite "inv_in"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: groups_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "normal_subgroup?")
   (lemma "center_subgroup")
   (inst?)
   (assert)
   (skosimp*)
   (typepred "a!1")
   (expand "subset?")
   (skosimp*)
   (expand "member")
   (expand "*")
   (skosimp*)
   (typepred "h!1")
   (skosimp*)
   (typepred "h!2")
   (rewrite "center_def" +)
   (prop)
   (("1"
     (replace -5)
     (replace -2)
     (typepred "center(G!1)")
     (expand "subset?")
     (assert)
     (inst - "h!2")
     (assert)
     (hide -2 -3 -5 -6)
     (lemma "inv_member")
     (inst?)
     (inst?)
     (assert)
     (lemma "product_in")
     (inst?)
     (assert)
     (hide 2)
     (lemma "product_in")
     (inst?)
     (assert))
    ("2"
     (replace -5)
     (skosimp)
     (hide -5)
     (replace -2)
     (hide -2)
     (name "w" "inv[T, *, one](a!1)")
     (replace -1)
     (hide -4)
     (rewrite "center_def")
     (flatten)
     (inst-cp -3 "w")
     (("1"
       (replace -4)
       (lemma "assoc")
       (inst - "h!2" "w" "a!1")
       (replace -1 + rl)
       (replace -2 + rl)
       (rewrite "inv_left")
       (assert)
       (inst?))
      ("2" (lemma "inv_in") (inst?) (assert))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: groups_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (prop)
   (("1"
     (decompose-equality 1)
     (iff)
     (prop)
     (("1"
       (expand "abelian_group?")
       (expand* "commutative?" "center")
       (expand "extend")
       (assert)
       (skosimp*)
       (inst -2 "x!2" "x!1")
       (expand "restrict")
       (propax))
      ("2" (hide -2) (expand "center") (expand "extend") (assert))))
    ("2"
     (expand* "abelian_group?" "commutative?")
     (skosimp*)
     (expand "restrict")
     (decompose-equality -1)
     (inst -1 "y!1")
     (iff)
     (typepred "y!1")
     (prop)
     (expand* "center" "extend")
     (inst?))))


proof_type: f_proof
decl_type: formula
library: groups
theory: groups_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (lemma "prime_gt_1")
   (inst -1 "p!1")
   (assert)
   (expand "divides")
   (skosimp)
   (hide -2)
   (lemma "eq1_gt")
   (inst?)
   (assert)
   (lemma "pos_times_lt")
   (inst?)
   (assert))


proof_type: f_proof
decl_type: formula
library: groups
theory: groups_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (lemma "prime_gt_1")
   (inst -1 "p!1")
   (prop)
   (expand "divides")
   (skosimp)
   (hide -2)
   (lemma "eq1_gt")
   (inst?)
   (assert)
   (lemma "pos_times_lt")
   (inst?)
   (assert)
   (replaces -3)
   (hide 1)
   (expand ">=")
   (lemma "le_times_le_pos")
   (inst -1 "p!1" "1" "x!1" "p!1")
   (assert))


proof_type: f_proof
decl_type: formula
library: groups
theory: groups_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "order")
   (lemma "card_2_has_2[T]")
   (inst?)
   (assert)
   (skosimp)
   (case "x!1 = one")
   (("1" (inst 2 "y!1") (assert)) ("2" (inst 3 "x!1") (assert))))


proof_type: f_proof
decl_type: formula
library: groups
theory: groups_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (prop)
   (("1"
     (name-replace "n!1" "period(G!1, a!1)" :hide? nil)
     (lemma "euclid_int")
     (inst -1 "n!1" "m!1")
     (skosimp)
     (case-replace "r!1 =0")
     (("1" (assert) (expand "divides") (inst 1 "q!1"))
      ("2"
       (hide 2)
       (replace -1 -3)
       (lemma "expt_mult")
       (inst?)
       (lemma "expt_expt")
       (inst?)
       (replace -1 -2 rl)
       (replace -2 -5 rl)
       (hide (-1 -2))
       (lemma "a_hat_period")
       (inst?)
       (assert)
       (replace -3 -1)
       (replaces -1)
       (rewrite "one_expt")
       (rewrite "one_left")
       (hide -1)
       (typepred "r!1")
       (expand "period")
       (lemma "min_def")
       (inst?)
       (("1" (assert) (expand "minimum?") (inst?) (assert))
        ("2" (expand "nonempty?") (expand "empty?") (inst?) (assert))))))
    ("2"
     (expand "divides")
     (skosimp)
     (replaces -1)
     (lemma "expt_expt")
     (inst?)
     (lemma "a_hat_period")
     (inst?)
     (assert)
     (replaces -1)
     (rewrite "one_expt")
     (assert))))


proof_type: f_proof
decl_type: formula
library: groups
theory: groups_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (skoletin 1)
   (("1"
     (case "(a!1^k!1)^(n / gcd(k!1, n)) = one")
     (("1"
       (lemma "one_iff_divides")
       (inst -1 "(n / gcd(k!1, n))" "G!1" "a!1^k!1")
       (("1"
         (assert)
         (name-replace "m!1" "period(G!1, a!1 ^ k!1)" :hide? nil)
         (case "a!1^(k!1*m!1) = one")
         (("1"
           (lemma "one_iff_divides")
           (inst -1 "k!1 * m!1" "G!1" "a!1")
           (assert)
           (hide (-2 -5))
           (replace -4 -1 rl)
           (case "divides(n/gcd(k!1, n) , (k!1/gcd(k!1, n))*m!1 )")
           (("1"
             (lemma "gcd_div_by_gcd")
             (inst -1 "n" "k!1")
             (expand "div_by_gcd")
             (rewrite "gcd_sym")
             (lemma "divides_rel_primes")
             (inst?)
             (("1"
               (assert)
               (lemma "mutual_divisors_nat")
               (inst -1 "n / gcd(k!1, n)" "m!1")
               (("1" (assert))
                ("2"
                 (hide-all-but 1)
                 (rewrite "gcd_sym")
                 (lemma "div_by_gcd_prep")
                 (inst?)
                 (assert))))
              ("2"
               (hide-all-but 1)
               (rewrite "gcd_sym")
               (lemma "div_by_gcd_prep")
               (inst -1 "n" "k!1")
               (assert))
              ("3"
               (hide-all-but 1)
               (lemma "div_by_gcd_prep")
               (inst -1 "k!1" "n"))))
            ("2"
             (hide-all-but (-1 1))
             (expand "divides")
             (skosimp)
             (inst 1 "x!1")
             (assert))
            ("3"
             (hide-all-but 1)
             (lemma "div_by_gcd_prep")
             (inst -1 "k!1" "n")
             (flatten)
             (rewrite "closed_times"))))
          ("2"
           (hide-all-but (-1 1))
           (rewrite "expt_expt" :dir rl)
           (lemma "a_hat_period")
           (inst?)
           (assert)
           (hide (-1 2))
           (lemma "expt_member")
           (inst -1 "G!1" "a!1" "k!1")
           (assert))))
        ("2"
         (hide-all-but 1)
         (rewrite "gcd_sym")
         (lemma "div_by_gcd_prep")
         (inst -1 "n" "k!1")
         (assert))))
      ("2"
       (hide 2)
       (rewrite "expt_expt")
       (rewrite "times_div1")
       (rewrite "commutative_mult")
       (rewrite "times_div1" :dir rl)
       (rewrite "expt_expt" :dir rl)
       (("1"
         (lemma "a_hat_period")
         (inst?)
         (assert)
         (replace -2 -1 rl)
         (replaces -1)
         (rewrite "one_expt")
         (hide-all-but 1)
         (lemma "div_by_gcd_prep")
         (inst -1 "k!1" "n")
         (assert))
        ("2"
         (hide-all-but 1)
         (lemma "div_by_gcd_prep")
         (inst -1 "k!1" "n")
         (assert))))
      ("3"
       (hide-all-but 1)
       (rewrite "gcd_sym")
       (lemma "div_by_gcd_prep")
       (inst -1 "n" "k!1")
       (assert))))
    ("2"
     (skosimp)
     (hide (-1 -2))
     (lemma "expt_member")
     (inst -1 "G!1" "a!1" "k!1")
     (assert))))


proof_type: f_proof
decl_type: formula
library: groups
theory: groups_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (induct "i")
   (("1"
     (skosimp*)
     (expand "^" 1 1)
     (expand "power")
     (rewrite "expt_0")
     (rewrite "left_coset_one"))
    ("2"
     (skosimp*)
     (inst?)
     (expand "^" -1 1)
     (expand "^" 1 1)
     (expand "power" 1)
     (replaces -1)
     (lemma "mult_lem[T,*,one]")
     (inst?)
     (("1"
       (replaces -1)
       (rewrite "expt_mult" :dir rl)
       (rewrite "expt_1"))
      ("2"
       (hide 2)
       (lemma "expt_member")
       (inst -1 "G!1" "x!1" "j!1")
       (assert))))
    ("3"
     (hide 2)
     (skosimp)
     (inst 1 "H!1")
     (inst 1 "one")
     (("1" (rewrite "left_coset_one")) ("2" (rewrite "one_in"))))
    ("4"
     (hide 2)
     (skosimp*)
     (lemma "left_cosets_group[T,*,one]")
     (inst?))
    ("5"
     (hide 2)
     (skosimp*)
     (inst 1 "one")
     (("1" (rewrite "left_coset_one")) ("2" (rewrite "one_in"))))
    ("6" (hide 2) (skosimp*) (inst 1 "x!1"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: groups_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (case "m!1 < 0")
   (("1"
     (expand "^")
     (assert)
     (case-replace
      "inv[left_cosets(G!1,H!1),mult(G!1,H!1),H!1](x!1 * H!1) = inv(x!1) * H!1"
      :hide? T)
     (("1"
       (lemma "coset_power_nat")
       (inst -1 "G!1" "-m!1" "inv(x!1)" "H!1")
       (("1" (expand "^" -1) (propax))
        ("2" (hide (-1 2)) (rewrite "inv_in"))))
      ("2"
       (hide (-1 2))
       (lemma "mult_lem[T,*,one]")
       (inst -1 "G!1" "H!1" "x!1" "inv(x!1)")
       (("1"
         (rewrite "inv_right")
         (rewrite "left_coset_one")
         (lemma "mult_lem[T,*,one]")
         (inst -1 "G!1" "H!1" "inv(x!1)" "x!1")
         (("1"
           (rewrite "inv_left")
           (rewrite "left_coset_one")
           (lemma "unique_inv[left_cosets(G!1,H!1),mult(G!1,H!1),H!1]")
           (("1" (inst -1 "x!1 * H!1" "inv(x!1) * H!1") (assert))
            ("2"
             (hide-all-but 1)
             (inst 1 "H!1")
             (inst 1 "one")
             (("1" (rewrite "left_coset_one")) ("2" (rewrite "one_in"))))
            ("3"
             (hide-all-but 1)
             (lemma "left_cosets_group[T,*,one]")
             (inst?))
            ("4"
             (hide-all-but 1)
             (inst 1 "one")
             (("1" (rewrite "left_coset_one"))
              ("2" (rewrite "one_in"))))))
          ("2" (hide-all-but 1) (rewrite "inv_in"))))
        ("2" (hide 2) (rewrite "inv_in"))))
      ("3"
       (hide-all-but 1)
       (inst 1 "H!1")
       (inst 1 "one")
       (("1" (rewrite "left_coset_one")) ("2" (rewrite "one_in"))))
      ("4" (hide-all-but 1) (lemma "left_cosets_group[T,*,one]") (inst?))
      ("5"
       (hide-all-but 1)
       (inst 1 "one")
       (("1" (rewrite "left_coset_one")) ("2" (rewrite "one_in"))))))
    ("2"
     (lemma "coset_power_nat")
     (inst -1 "G!1" "m!1" "x!1" "H!1")
     (hide 3)
     (assert))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: groups_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (inst 1 "H!1")
   (inst 1 "one")
   (("1" (rewrite "left_coset_one")) ("2" (rewrite "one_in"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: class_equation_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "card_Union_rest")
   (inst?)
   (assert)
   (replaces -1)
   (rewrite "card_disj_union")
   (hide 2)
   (typepred "FP!1")
   (expand "finite_partition?")
   (flatten)
   (expand "partition?")
   (expand "disjoint?")
   (expand "empty?")
   (skosimp*)
   (expand "member")
   (expand "intersection")
   (expand "member")
   (flatten)
   (expand "Union")
   (skosimp*)
   (inst -1 "a!1" "choose(FP!1)")
   (("1"
     (prop)
     (("1"
       (typepred "a!1")
       (replaces -2)
       (hide (-2 -3 -4 -5))
       (lemma "choose_not_member[setof[T]]")
       (inst?)
       (expand "nonempty?")
       (assert))
      ("2" (inst?) (assert))))
    ("2"
     (hide-all-but 1)
     (typepred "a!1")
     (lemma "rest_member[setof[T]]")
     (inst -1 "FP!1" "a!1")
     (expand "member")
     (propax))))


proof_type: f_proof
decl_type: formula
library: groups
theory: class_equation_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (measure-induct+ "card(FP)" "FP")
   (("1"
     (inst -1 "rest(x!1)")
     (("1"
       (prop)
       (("1"
         (lemma "choose_rest[setof[T]]")
         (inst?)
         (expand "nonempty?")
         (assert)
         (rewrite "add_as_union")
         (name "ZZ" "restrict[setof[T], finite_set[T], boolean](x!1)")
         (replace -1 2)
         (lemma "sigma_set.sigma_disjoint_union")
         (inst -1 "rest(x!1)" "singleton(choose(x!1))" "card")
         (("1"
           (prop)
           (("1"
             (replace -4 -1 rl)
             (case "ZZ = union(restrict[setof[T], finite_set[T], boolean](rest(x!1)),
                                                                       singleton(choose(x!1)))")
             (("1"
               (replace -1 -2 rl)
               (replace -2 2)
               (lemma "card_rest_aux")
               (inst -1 "x!1")
               (expand "nonempty?")
               (replaces -1)
               (assert)
               (hide-all-but 2)
               (rewrite "sigma_countable")
               (("1"
                 (lemma "sigma_countable.sigma_finite"
                  ("F" "singleton(choose(x!1))"))
                 (("1"
                   (inst?)
                   (case "card(singleton(choose(x!1))) = 1")
                   (("1"
                     (replaces -1)
                     (assert)
                     (replace -1)
                     (hide -1)
                     (expand "sigma")
                     (expand "o ")
                     (typepred
                      "finite_enumeration(singleton(choose(x!1)))(0)")
                     (expand "singleton")
                     (assert)
                     (replace -2)
                     (expand "sigma")
                     (propax))
                    ("2"
                     (hide (-1 2))
                     (rewrite "card_def")
                     (rewrite "Card_bijection")
                     (inst 1 "LAMBDA (y : (singleton(choose(x!1)))) : 0")
                     (grind)
                     (inst 1 "choose(x!1)"))))
                  ("2"
                   (hide 2)
                   (prop)
                   (("1"
                     (expand "empty?")
                     (inst -1 "choose[setof[T]](x!1)")
                     (("1"
                       (expand "member")
                       (expand "singleton")
                       (propax))
                      ("2"
                       (typepred "x!1")
                       (expand "finite_partition?")
                       (flatten)
                       (expand "every")
                       (inst -3 "choose[setof[T]](x!1)"))))
                    ("2"
                     (lemma "finite_singleton[(x!1)]")
                     (inst -1 "choose[setof[T]](x!1)")
                     (assert)
                     (grind))))))
                ("2"
                 (hide 2)
                 (expand "convergent?")
                 (prop)
                 (hide 2)
                 (lemma "finite_singleton[(x!1)]")
                 (inst?)
                 (grind))
                ("3"
                 (hide 2)
                 (rewrite "finite_countable")
                 (hide 2)
                 (lemma "finite_singleton[(x!1)]")
                 (inst?)
                 (grind))))
              ("2"
               (hide (-1 -4 -5 3))
               (replace -2 -1 rl)
               (hide -2)
               (replace -1 1 rl)
               (hide -1)
               (decompose-equality 1)
               (iff)
               (prop)
               (("1"
                 (expand* "restrict" "union" "member")
                 (prop)
                 (hide (1 3))
                 (grind))
                ("2"
                 (expand* "restrict" "union" "member")
                 (prop)
                 (hide (1 3))
                 (grind))))))
            ("2"
             (hide-all-but (1 2))
             (expand "disjoint?")
             (expand "empty?" 1)
             (skosimp*)
             (expand "member")
             (expand "intersection")
             (flatten)
             (expand "member")
             (expand "restrict")
             (expand "singleton")
             (lemma "choose_not_member[setof[T]]")
             (inst?)
             (expand "member")
             (assert))))
          ("2"
           (hide-all-but (1 2))
           (expand "convergent?")
           (prop)
           (("1"
             (rewrite "finite_countable")
             (hide 2)
             (lemma "finite_union[finite_set[T]]")
             (case "nonzero_elts[finite_set[T]]
                                  (card[T],
                                   union[finite_set[T]]
                                       (restrict[setof[T], finite_set[T], boolean]
                                            (rest[setof[T]](x!1)),
                                        singleton[(x!1)](choose[setof[T]](x!1)))) = union[finite_set[T]]
                                       (restrict[setof[T], finite_set[T], boolean]
                                            (rest[setof[T]](x!1)),
                                        singleton[(x!1)](choose[setof[T]](x!1)))")
             (("1"
               (replace -1)
               (hide -1)
               (inst?)
               (("1"
                 (hide 2)
                 (lemma "finite_singleton[(x!1)]")
                 (inst?)
                 (grind))
                ("2"
                 (hide 2)
                 (lemma "finite_rest[setof[T]]")
                 (inst?)
                 (("1"
                   (expand* "is_finite" "restrict")
                   (skosimp)
                   (inst 1 "N!1" "f!1")
                   (("1"
                     (expand "injective?")
                     (skosimp*)
                     (inst?)
                     (assert))
                    ("2"
                     (skosimp*)
                     (prop)
                     (("1"
                       (typepred "x!1")
                       (expand "finite_partition?")
                       (flatten)
                       (hide (-1 -2 -5 2))
                       (lemma "rest_member[setof[T]]")
                       (inst -1 "x!1" "x!2")
                       (expand "member")
                       (assert)
                       (expand "every")
                       (inst?))
                      ("2" (expand "restrict") (propax))
                      ("3" (expand "restrict") (propax))))))
                  ("2"
                   (hide (2 3))
                   (typepred "x!1")
                   (expand "finite_partition?")
                   (assert))))))
              ("2"
               (hide-all-but 1)
               (decompose-equality 1)
               (iff)
               (prop)
               (("1" (expand "nonzero_elts") (prop))
                ("2"
                 (expand "nonzero_elts")
                 (prop)
                 (expand "union")
                 (expand "member")
                 (expand "restrict")
                 (prop)
                 (("1"
                   (lemma "rest_member[setof[T]]")
                   (inst -1 "x!1" "x!2")
                   (expand "member")
                   (assert)
                   (reveal -7)
                   (inst?)
                   (assert))
                  ("2"
                   (expand "singleton")
                   (reveal -6)
                   (inst?)
                   (assert))))))))
            ("2"
             (expand "convergent?")
             (flatten)
             (hide 2)
             (case "nonzero_elts(card[T],
                                                union[finite_set[T]]
                                                    (restrict[setof[T], finite_set[T], boolean]
                                                         (rest[setof[T]](x!1)),
                                                     singleton[(x!1)](choose[setof[T]](x!1)))) = union[finite_set[T]]
                                                    (restrict[setof[T], finite_set[T], boolean]
                                                         (rest[setof[T]](x!1)),
                                                     singleton[(x!1)](choose[setof[T]](x!1)))")
             (("1"
               (replaces -1)
               (lemma "finite_union[finite_set[T]]")
               (inst?)
               (("1"
                 (hide 2)
                 (lemma "finite_singleton[(x!1)]")
                 (inst?)
                 (grind))
                ("2"
                 (hide 2)
                 (lemma "finite_rest[setof[T]]")
                 (inst?)
                 (("1"
                   (expand* "is_finite" "restrict")
                   (skosimp)
                   (inst 1 "N!1" "f!1")
                   (("1"
                     (expand "injective?")
                     (skosimp*)
                     (inst?)
                     (assert))
                    ("2"
                     (skosimp*)
                     (prop)
                     (("1"
                       (typepred "x!1")
                       (expand "finite_partition?")
                       (flatten)
                       (hide (-1 -2 -5 2))
                       (lemma "rest_member[setof[T]]")
                       (inst -1 "x!1" "x!2")
                       (expand "member")
                       (assert)
                       (expand "every")
                       (inst?))
                      ("2" (expand "restrict") (propax))
                      ("3" (expand "restrict") (propax))))))
                  ("2"
                   (hide (2 3))
                   (typepred "x!1")
                   (expand "finite_partition?")
                   (assert))))))
              ("2"
               (hide-all-but 1)
               (decompose-equality 1)
               (iff)
               (prop)
               (("1" (expand "nonzero_elts") (prop))
                ("2"
                 (expand "nonzero_elts")
                 (prop)
                 (expand "union")
                 (expand "member")
                 (expand "restrict")
                 (prop)
                 (("1"
                   (lemma "rest_member[setof[T]]")
                   (inst -1 "x!1" "x!2")
                   (expand "member")
                   (assert)
                   (reveal -6)
                   (inst?)
                   (assert))
                  ("2"
                   (expand "singleton")
                   (reveal -5)
                   (inst?)
                   (assert))))))))))
          ("3"
           (hide (-2 -3 3))
           (skosimp*)
           (prop)
           (("1"
             (hide (-2 -3 -4))
             (typepred "x!1")
             (expand "finite_partition?")
             (flatten)
             (expand "every")
             (inst?))
            ("2"
             (hide (-1 -3 -4))
             (expand "singleton")
             (lemma "choose_member[setof[T]]")
             (inst?)
             (assert))))))
        ("2"
         (expand "nonempty?")
         (lemma "rest_empty_lem[setof[T]]")
         (inst -1 "x!1")
         (assert)
         (lemma "card_Union_rest")
         (inst -1 "x!1")
         (expand "nonempty?")
         (case-replace "Union(rest(x!1)) = emptyset")
         (("1"
           (rewrite "union_commutative")
           (rewrite "union_empty")
           (replaces -2)
           (hide (-1 -3 -4 1))
           (name-replace "CC" "card(choose(x!1))")
           (replaces -1)
           (expand "CC")
           (case-replace
            "restrict[setof[T], finite_set[T], boolean]
                            (extend[setof[T], (x!1), bool, FALSE]
                                 (singleton(choose(x!1)))) = singleton(choose(x!1))"
            :hide? T)
           (("1"
             (rewrite "sigma_countable")
             (("1"
               (lemma "sigma_countable.sigma_finite"
                ("F" "singleton(choose(x!1))"))
               (("1"
                 (inst?)
                 (case "card(singleton(choose(x!1))) = 1")
                 (("1"
                   (replaces -1)
                   (assert)
                   (replace -1)
                   (hide -1)
                   (expand "sigma")
                   (expand "o ")
                   (typepred
                    "finite_enumeration(singleton(choose(x!1)))(0)")
                   (expand "singleton")
                   (assert)
                   (replace -2)
                   (expand "sigma")
                   (propax))
                  ("2"
                   (hide (-1 2))
                   (rewrite "card_def")
                   (rewrite "Card_bijection")
                   (inst 1 "LAMBDA (y : (singleton(choose(x!1)))) : 0")
                   (grind)
                   (inst 1 "choose(x!1)"))))
                ("2"
                 (hide 2)
                 (prop)
                 (("1"
                   (expand "empty?")
                   (inst -1 "choose[setof[T]](x!1)")
                   (("1" (expand "member") (expand "singleton") (propax))
                    ("2"
                     (typepred "x!1")
                     (expand "finite_partition?")
                     (flatten)
                     (expand "every")
                     (inst -3 "choose[setof[T]](x!1)"))
                    ("3" (reveal 2) (expand "nonempty?") (propax))))
                  ("2"
                   (lemma "finite_singleton[(x!1)]")
                   (inst -1 "choose[setof[T]](x!1)")
                   (assert)
                   (grind))))))
              ("2"
               (hide 2)
               (expand "convergent?")
               (prop)
               (hide 2)
               (lemma "finite_singleton[(x!1)]")
               (inst?)
               (grind))
              ("3"
               (hide 2)
               (rewrite "finite_countable")
               (hide 2)
               (lemma "finite_singleton[(x!1)]")
               (inst?)
               (grind))))
            ("2"
             (hide 2)
             (decompose-equality 1)
             (iff)
             (prop)
             (("1" (expand* "restrict" "extend") (prop))
              ("2"
               (expand* "restrict" "extend")
               (prop)
               (expand "singleton")
               (lemma "choose_not_member[setof[T]]")
               (inst?)
               (expand "member")
               (assert))))
            ("3"
             (hide 2)
             (skosimp*)
             (prop)
             (("1"
               (expand "singleton")
               (typepred "x!1")
               (expand "finite_partition?")
               (flatten)
               (expand "every")
               (inst?))
              ("2"
               (expand "singleton")
               (lemma "choose_member[setof[T]]")
               (inst?)
               (assert))))))
          ("2"
           (hide-all-but (-3 1))
           (decompose-equality 1)
           (iff)
           (prop)
           (("1" (expand "Union") (skosimp) (typepred "a!1") (grind))
            ("2" (grind))))))
        ("3"
         (hide 2)
         (skosimp*)
         (inst?)
         (("1" (assert))
          ("2"
           (typepred "A!1")
           (lemma "rest_member[setof[T]]")
           (inst -1 "x!1" "A!1")
           (expand "member")
           (propax))))
        ("4"
         (hide 2)
         (name-replace "ZZ"
          "restrict[setof[T], finite_set[T], boolean](x!1)" :hide? nil)
         (case-replace
          "ZZ = union(restrict[setof[T], finite_set[T], boolean](rest(x!1)),
                                                                               singleton(choose(x!1)))")
         (("1"
           (lemma "card_disj_union[finite_set[T]]")
           (inst -1
            "restrict[setof[T], finite_set[T], boolean](rest(x!1))"
            "singleton(choose(x!1))")
           (("1"
             (prop)
             (("1"
               (replaces -1)
               (lemma "nonempty_card[finite_set[T]]")
               (inst -1 "singleton(choose(x!1))")
               (prop)
               (("1" (assert))
                ("2"
                 (hide-all-but (-3 2))
                 (expand "nonempty?" 1)
                 (expand "empty?")
                 (inst -1 "choose(x!1)")
                 (("1" (expand "member") (expand "singleton") (propax))
                  ("2"
                   (typepred "x!1")
                   (expand "finite_partition?")
                   (flatten)
                   (expand "every")
                   (inst -3 "choose[setof[T]](x!1)"))))))
              ("2"
               (hide-all-but (-3 1))
               (expand "disjoint?")
               (expand "empty?")
               (skosimp*)
               (expand "member")
               (expand "intersection")
               (expand "member")
               (expand "restrict")
               (flatten)
               (expand "singleton")
               (lemma "choose_not_member[setof[T]]")
               (inst?)
               (expand "member")
               (expand "nonempty?")
               (assert))))
            ("2"
             (hide-all-but (-3 1))
             (lemma "finite_singleton[(x!1)]")
             (inst?)
             (expand "is_finite")
             (propax))))
          ("2"
           (replace -1 1 rl)
           (hide (-1 -3 2))
           (decompose-equality 1)
           (iff)
           (prop)
           (("1"
             (expand* "union" "member" "restrict")
             (prop)
             (expand "singleton")
             (expand "rest")
             (prop)
             (expand "remove")
             (prop)
             (("1" (assert)) ("2" (expand "member") (propax))))
            ("2"
             (expand* "union" "member" "restrict")
             (prop)
             (("1"
               (lemma "rest_member[setof[T]]")
               (inst -1 "x!1" "x!2")
               (expand "member")
               (assert))
              ("2"
               (expand "singleton")
               (lemma "choose_member[setof[T]]")
               (inst?)
               (expand "nonempty?")
               (assert))))))
          ("3"
           (hide (-1 -3 2))
           (skosimp*)
           (prop)
           (("1"
             (hide (-2 -3))
             (typepred "x!1")
             (expand "finite_partition?")
             (flatten)
             (expand "every")
             (inst?))
            ("2"
             (hide (-1 -3))
             (expand "singleton")
             (lemma "choose_member[setof[T]]")
             (inst?)
             (assert))))))))
      ("2"
       (hide 2)
       (typepred "x!1")
       (expand "finite_partition?")
       (prop)
       (("1"
         (expand "partition?")
         (skosimp*)
         (typepred "a!1" "b!1")
         (lemma "rest_member[setof[T]]")
         (copy -1)
         (inst -1 "x!1" "a!1")
         (inst -2 "x!1" "b!1")
         (expand "member")
         (inst -5 "a!1" "b!1")
         (assert))
        ("2" (rewrite "finite_rest"))
        ("3"
         (expand "every")
         (skosimp*)
         (lemma "rest_member[setof[T]]")
         (inst -1 "x!1" "x!2")
         (expand "member")
         (inst -4 "x!2"))))))
    ("2" (hide 2) (rewrite "card_partition_TCC2"))
    ("3" (hide 2) (rewrite "card_rest_aux_TCC1"))
    ("4"
     (hide 2)
     (skosimp*)
     (lemma "card_partition_TCC1")
     (inst?)
     (assert)
     (inst?))
    ("5"
     (hide 2)
     (typepred "FP!1")
     (expand "finite_partition?")
     (flatten)
     (hide (-1 -3))
     (expand* "is_finite" "restrict")
     (skosimp)
     (inst 1 "N!1" "f!1")
     (("1" (expand "injective?") (skosimp*) (inst?) (assert))
      ("2"
       (skosimp*)
       (prop)
       (("1"
         (typepred "FP!1")
         (expand "finite_partition?")
         (flatten)
         (expand "every")
         (inst?))
        ("2" (expand "restrict") (propax))
        ("3" (expand "restrict") (propax))))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: class_equation_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (measure-induct+ "card(FP)" "FP")
   (("1"
     (skosimp*)
     (inst -1 "rest(x!1)")
     (("1"
       (inst -1 "n!1")
       (prop)
       (("1"
         (lemma "sigma_set.sigma_disjoint_union")
         (inst -1 "rest(x!1)" "singleton(choose(x!1))" "card")
         (("1"
           (prop)
           (("1"
             (case-replace
              "restrict[setof[T], finite_set[T], boolean](x!1) = union(restrict[setof[T], finite_set[T], boolean](rest(x!1)), singleton(choose(x!1)))"
              :hide? T)
             (("1"
               (replace -1 1)
               (hide -1)
               (case-replace
                "sigma_set[finite_set[T]].sigma(singleton(choose(x!1)), card[T]) = card(choose(x!1))"
                :hide? T)
               (("1"
                 (lemma "divides_sum")
                 (inst?)
                 (("1" (assert) (hide (-1 2)) (inst?) (assert))
                  ("2"
                   (hide (-1 2))
                   (lemma "divide_sigma_TCC2")
                   (inst -1 "rest[setof[T]](x!1)" "n!1")
                   (("1"
                     (prop)
                     (("1"
                       (hide 1)
                       (skosimp*)
                       (inst -2 "A!1")
                       (hide 2)
                       (typepred "A!1")
                       (lemma "rest_member[setof[T]]")
                       (inst -1 "x!1" "A!1")
                       (expand "member")
                       (propax))
                      ("2"
                       (hide 1)
                       (skosimp*)
                       (inst -2 "A!1")
                       (hide 2)
                       (typepred "A!1")
                       (lemma "rest_member[setof[T]]")
                       (inst -1 "x!1" "A!1")
                       (expand "member")
                       (propax))
                      ("3"
                       (hide -2)
                       (expand "nonempty?")
                       (rewrite "sigma_countable")
                       (("1"
                         (expand "sigma")
                         (prop)
                         (("1" (assert))
                          ("2"
                           (hide (-1 1 3))
                           (expand "empty?")
                           (skosimp*)
                           (expand* "member" "restrict")
                           (inst?))
                          ("3"
                           (hide (1 2 4))
                           (expand "empty?")
                           (skosimp*)
                           (expand* "member" "restrict")
                           (inst?))))
                        ("2"
                         (hide 2)
                         (expand "convergent?")
                         (prop)
                         (hide 2)
                         (lemma "finite_rest[setof[T]]")
                         (inst?)
                         (("1"
                           (expand* "is_finite" "restrict")
                           (skosimp)
                           (inst 1 "N!1" "f!1")
                           (("1"
                             (expand "injective?")
                             (skosimp*)
                             (inst?)
                             (assert))
                            ("2"
                             (skosimp*)
                             (prop)
                             (("1"
                               (typepred "x!1")
                               (expand "finite_partition?")
                               (flatten)
                               (hide (-1 -2 -5 -6 2))
                               (lemma "rest_member[setof[T]]")
                               (inst -1 "x!1" "x!2")
                               (expand "member")
                               (assert)
                               (expand "every")
                               (inst?))
                              ("2" (expand "restrict") (propax))
                              ("3" (expand "restrict") (propax))))))
                          ("2"
                           (hide 2)
                           (typepred "x!1")
                           (expand "finite_partition?")
                           (assert))))
                        ("3"
                         (hide 2)
                         (rewrite "finite_countable")
                         (hide 2)
                         (lemma "finite_rest[setof[T]]")
                         (inst?)
                         (("1"
                           (expand* "is_finite" "restrict")
                           (skosimp)
                           (inst 1 "N!1" "f!1")
                           (("1"
                             (expand "injective?")
                             (skosimp*)
                             (inst?)
                             (assert))
                            ("2"
                             (skosimp*)
                             (prop)
                             (("1"
                               (typepred "x!1")
                               (expand "finite_partition?")
                               (flatten)
                               (hide (-1 -2 -5 -6 2))
                               (lemma "rest_member[setof[T]]")
                               (inst -1 "x!1" "x!2")
                               (expand "member")
                               (assert)
                               (expand "every")
                               (inst?))
                              ("2" (expand "restrict") (propax))
                              ("3" (expand "restrict") (propax))))))
                          ("2"
                           (hide 2)
                           (typepred "x!1")
                           (expand "finite_partition?")
                           (assert))))))
                      ("4"
                       (hide -2)
                       (expand "nonempty?")
                       (rewrite "sigma_countable")
                       (("1"
                         (expand "sigma")
                         (prop)
                         (("1" (assert))
                          ("2"
                           (hide (-1 1 3))
                           (expand "empty?")
                           (skosimp*)
                           (expand* "member" "restrict")
                           (inst?))
                          ("3"
                           (hide (1 2 4))
                           (expand "empty?")
                           (skosimp*)
                           (expand* "member" "restrict")
                           (inst?))))
                        ("2"
                         (hide 2)
                         (expand "convergent?")
                         (prop)
                         (hide 2)
                         (lemma "finite_rest[setof[T]]")
                         (inst?)
                         (("1"
                           (expand* "is_finite" "restrict")
                           (skosimp)
                           (inst 1 "N!1" "f!1")
                           (("1"
                             (expand "injective?")
                             (skosimp*)
                             (inst?)
                             (assert))
                            ("2"
                             (skosimp*)
                             (prop)
                             (("1"
                               (typepred "x!1")
                               (expand "finite_partition?")
                               (flatten)
                               (hide (-1 -2 -5 -6 2))
                               (lemma "rest_member[setof[T]]")
                               (inst -1 "x!1" "x!2")
                               (expand "member")
                               (assert)
                               (expand "every")
                               (inst?))
                              ("2" (expand "restrict") (propax))
                              ("3" (expand "restrict") (propax))))))
                          ("2"
                           (hide 2)
                           (typepred "x!1")
                           (expand "finite_partition?")
                           (assert))))
                        ("3"
                         (hide 2)
                         (hide 2)
                         (rewrite "finite_countable")
                         (hide 2)
                         (lemma "finite_rest[setof[T]]")
                         (inst?)
                         (("1"
                           (expand* "is_finite" "restrict")
                           (skosimp)
                           (inst 1 "N!1" "f!1")
                           (("1"
                             (expand "injective?")
                             (skosimp*)
                             (inst?)
                             (assert))
                            ("2"
                             (skosimp*)
                             (prop)
                             (("1"
                               (typepred "x!1")
                               (expand "finite_partition?")
                               (flatten)
                               (hide (-1 -2 -5 -6 2))
                               (lemma "rest_member[setof[T]]")
                               (inst -1 "x!1" "x!2")
                               (expand "member")
                               (assert)
                               (expand "every")
                               (inst?))
                              ("2" (expand "restrict") (propax))
                              ("3" (expand "restrict") (propax))))))
                          ("2"
                           (hide 2)
                           (typepred "x!1")
                           (expand "finite_partition?")
                           (assert))))))))
                    ("2"
                     (hide (-2 2))
                     (typepred "x!1")
                     (typepred "x!1")
                     (expand "finite_partition?")
                     (prop)
                     (("1"
                       (expand "partition?")
                       (skosimp*)
                       (typepred "a!1" "b!1")
                       (lemma "rest_member[setof[T]]")
                       (copy -1)
                       (inst -1 "x!1" "a!1")
                       (inst -2 "x!1" "b!1")
                       (expand "member")
                       (inst -5 "a!1" "b!1")
                       (assert))
                      ("2" (rewrite "finite_rest"))
                      ("3"
                       (expand "every")
                       (skosimp*)
                       (lemma "rest_member[setof[T]]")
                       (inst -1 "x!1" "x!2")
                       (expand "member")
                       (inst -4 "x!2"))))))))
                ("2"
                 (hide (-1 -3 2))
                 (rewrite "sigma_countable")
                 (("1"
                   (lemma "sigma_countable.sigma_finite"
                    ("F" "singleton(choose(x!1))"))
                   (("1"
                     (inst?)
                     (case "card(singleton(choose(x!1))) = 1")
                     (("1"
                       (replaces -1)
                       (assert)
                       (replace -1)
                       (hide -1)
                       (expand "sigma")
                       (expand "o ")
                       (typepred
                        "finite_enumeration(singleton(choose(x!1)))(0)")
                       (expand "singleton")
                       (assert)
                       (replace -2)
                       (expand "sigma")
                       (propax))
                      ("2"
                       (hide (-1 2))
                       (expand "nonempty?")
                       (rewrite "card_def")
                       (rewrite "Card_bijection")
                       (inst 1
                        "LAMBDA (y : (singleton(choose(x!1)))) : 0")
                       (expand "bijective?")
                       (prop)
                       (("1"
                         (expand "injective?")
                         (skosimp*)
                         (typepred "x1!1" "x2!1")
                         (expand "singleton")
                         (assert))
                        ("2"
                         (expand "surjective?")
                         (skosimp*)
                         (inst 1 "choose(x!1)")
                         (("1" (expand "singleton") (propax))
                          ("2" (expand "nonempty?") (propax))))))))
                    ("2"
                     (hide 2)
                     (prop)
                     (("1"
                       (expand "empty?")
                       (inst -1 "choose[setof[T]](x!1)")
                       (("1"
                         (expand "member")
                         (expand "singleton")
                         (propax))
                        ("2"
                         (typepred "x!1")
                         (expand "finite_partition?")
                         (flatten)
                         (expand "every")
                         (inst -3 "choose[setof[T]](x!1)"))))
                      ("2"
                       (lemma "finite_singleton[(x!1)]")
                       (inst -1 "choose[setof[T]](x!1)")
                       (assert)
                       (grind))))))
                  ("2"
                   (hide 2)
                   (expand "convergent?")
                   (prop)
                   (hide 2)
                   (lemma "finite_singleton[(x!1)]")
                   (inst?)
                   (grind))
                  ("3"
                   (hide 2)
                   (rewrite "finite_countable")
                   (hide 2)
                   (lemma "finite_singleton[(x!1)]")
                   (inst?)
                   (grind))))
                ("3"
                 (hide (-1 -3 2))
                 (hide (-1 2))
                 (typepred "x!1")
                 (expand "finite_partition?")
                 (flatten)
                 (expand "every")
                 (inst -3 "choose[setof[T]](x!1)"))))
              ("2"
               (hide (-1 -2 -4 2))
               (decompose-equality 1)
               (iff)
               (prop)
               (("1"
                 (expand* "restrict" "union" "member")
                 (prop)
                 (grind))
                ("2"
                 (expand* "restrict" "union" "member")
                 (prop)
                 (("1" (grind)) ("2" (expand "singleton") (assert))))))))
            ("2"
             (hide (-1 -3 2))
             (expand "nonempty?")
             (expand "disjoint?")
             (expand "empty?" 1)
             (skosimp*)
             (expand "member")
             (expand "intersection")
             (flatten)
             (expand "member")
             (expand "restrict")
             (expand "singleton")
             (lemma "choose_not_member[setof[T]]")
             (inst?)
             (expand "member")
             (assert))))
          ("2"
           (hide (-1 -3 2))
           (expand "convergent?")
           (prop)
           (("1"
             (rewrite "finite_countable")
             (hide 2)
             (lemma "finite_union[finite_set[T]]")
             (case "nonzero_elts[finite_set[T]]
                                                                    (card[T],
                                                                     union[finite_set[T]]
                                                                         (restrict[setof[T], finite_set[T], boolean]
                                                                              (rest[setof[T]](x!1)),
                                                                          singleton[(x!1)](choose[setof[T]](x!1)))) = union[finite_set[T]]
                                                                         (restrict[setof[T], finite_set[T], boolean]
                                                                              (rest[setof[T]](x!1)),
                                                                          singleton[(x!1)](choose[setof[T]](x!1)))")
             (("1"
               (replace -1)
               (hide -1)
               (inst?)
               (("1"
                 (hide 2)
                 (lemma "finite_singleton[(x!1)]")
                 (inst?)
                 (grind))
                ("2"
                 (hide 2)
                 (lemma "finite_rest[setof[T]]")
                 (inst?)
                 (("1"
                   (expand* "is_finite" "restrict")
                   (skosimp)
                   (inst 1 "N!1" "f!1")
                   (("1"
                     (expand "injective?")
                     (skosimp*)
                     (inst?)
                     (assert))
                    ("2"
                     (skosimp*)
                     (prop)
                     (("1"
                       (typepred "x!1")
                       (expand "finite_partition?")
                       (flatten)
                       (hide (-1 -2 -5))
                       (lemma "rest_member[setof[T]]")
                       (inst -1 "x!1" "x!2")
                       (expand "member")
                       (assert)
                       (expand "every")
                       (inst?))
                      ("2" (expand "restrict") (propax))
                      ("3" (expand "restrict") (propax))))))
                  ("2"
                   (hide 2)
                   (typepred "x!1")
                   (expand "finite_partition?")
                   (assert))))))
              ("2"
               (hide (-1 2))
               (decompose-equality 1)
               (iff)
               (prop)
               (("1" (expand "nonzero_elts") (prop))
                ("2"
                 (expand "nonzero_elts")
                 (prop)
                 (expand "union")
                 (expand "member")
                 (expand "restrict")
                 (prop)
                 (("1"
                   (lemma "rest_member[setof[T]]")
                   (inst -1 "x!1" "x!2")
                   (expand "member")
                   (assert)
                   (reveal -5)
                   (inst?)
                   (assert))
                  ("2"
                   (expand "singleton")
                   (reveal -4)
                   (inst?)
                   (assert))))))))
            ("2"
             (expand "convergent?")
             (flatten)
             (hide 2)
             (case "nonzero_elts(card[T],
                                                                                  union[finite_set[T]]
                                                                                      (restrict[setof[T], finite_set[T], boolean]
                                                                                           (rest[setof[T]](x!1)),
                                                                                       singleton[(x!1)](choose[setof[T]](x!1)))) = union[finite_set[T]]
                                                                                      (restrict[setof[T], finite_set[T], boolean]
                                                                                           (rest[setof[T]](x!1)),
                                                                                       singleton[(x!1)](choose[setof[T]](x!1)))")
             (("1"
               (replaces -1)
               (lemma "finite_union[finite_set[T]]")
               (inst?)
               (("1"
                 (hide 2)
                 (lemma "finite_singleton[(x!1)]")
                 (inst?)
                 (grind))
                ("2"
                 (hide 2)
                 (lemma "finite_rest[setof[T]]")
                 (inst?)
                 (("1"
                   (expand* "is_finite" "restrict")
                   (skosimp)
                   (inst 1 "N!1" "f!1")
                   (("1"
                     (expand "injective?")
                     (skosimp*)
                     (inst?)
                     (assert))
                    ("2"
                     (skosimp*)
                     (prop)
                     (("1"
                       (typepred "x!1")
                       (expand "finite_partition?")
                       (flatten)
                       (hide (-1 -2 -5))
                       (lemma "rest_member[setof[T]]")
                       (inst -1 "x!1" "x!2")
                       (expand "member")
                       (assert)
                       (expand "every")
                       (inst?))
                      ("2" (expand "restrict") (propax))
                      ("3" (expand "restrict") (propax))))))
                  ("2"
                   (hide 2)
                   (typepred "x!1")
                   (expand "finite_partition?")
                   (assert))))))
              ("2"
               (hide 2)
               (decompose-equality 1)
               (iff)
               (prop)
               (("1" (expand "nonzero_elts") (prop))
                ("2"
                 (expand "nonzero_elts")
                 (prop)
                 (expand "union")
                 (expand "member")
                 (expand "restrict")
                 (prop)
                 (("1"
                   (lemma "rest_member[setof[T]]")
                   (inst -1 "x!1" "x!2")
                   (expand "member")
                   (assert)
                   (reveal -4)
                   (inst?)
                   (assert))
                  ("2"
                   (expand "singleton")
                   (reveal -3)
                   (inst?)
                   (assert))))))))))
          ("3"
           (hide (-1 -3 2))
           (skosimp*)
           (prop)
           (("1"
             (hide (-2 -3))
             (typepred "x!1")
             (expand "finite_partition?")
             (flatten)
             (expand "every")
             (inst?))
            ("2" (hide (-1 -3)) (expand "singleton") (assert))))))
        ("2"
         (expand "nonempty?")
         (lemma "rest_empty_lem[setof[T]]")
         (inst -1 "x!1")
         (assert)
         (replace -1 2)
         (case-replace
          "restrict[setof[T], finite_set[T], boolean]
                                                            (extend[setof[T], (x!1), bool, FALSE]
                                                                 (singleton(choose(x!1)))) = singleton(choose(x!1))"
          :hide? T)
         (("1"
           (case-replace
            "sigma_set[finite_set[T]].sigma(singleton(choose(x!1)), card[T]) = card(choose(x!1))"
            :hide? T)
           (("1" (inst?) (assert))
            ("2"
             (hide (-1 -3 2 3))
             (rewrite "sigma_countable")
             (("1"
               (lemma "sigma_countable.sigma_finite"
                ("F" "singleton(choose(x!1))"))
               (("1"
                 (inst?)
                 (case "card(singleton(choose(x!1))) = 1")
                 (("1"
                   (replaces -1)
                   (assert)
                   (replace -1)
                   (hide -1)
                   (expand "sigma")
                   (expand "o ")
                   (typepred
                    "finite_enumeration(singleton(choose(x!1)))(0)")
                   (expand "singleton")
                   (assert)
                   (replace -2)
                   (expand "sigma")
                   (propax))
                  ("2"
                   (hide (-1 2))
                   (rewrite "card_def")
                   (rewrite "Card_bijection")
                   (inst 1 "LAMBDA (y : (singleton(choose(x!1)))) : 0")
                   (grind)
                   (inst 1 "choose(x!1)"))))
                ("2"
                 (hide 2)
                 (prop)
                 (("1"
                   (expand "empty?")
                   (inst -1 "choose[setof[T]](x!1)")
                   (("1" (expand "member") (expand "singleton") (propax))
                    ("2"
                     (typepred "x!1")
                     (expand "finite_partition?")
                     (flatten)
                     (expand "every")
                     (inst -3 "choose[setof[T]](x!1)"))
                    ("3" (reveal 2) (expand "nonempty?") (propax))))
                  ("2"
                   (lemma "finite_singleton[(x!1)]")
                   (inst -1 "choose[setof[T]](x!1)")
                   (assert)
                   (grind))))))
              ("2"
               (hide 2)
               (expand "convergent?")
               (prop)
               (hide 2)
               (lemma "finite_singleton[(x!1)]")
               (inst?)
               (grind))
              ("3"
               (hide 2)
               (rewrite "finite_countable")
               (hide 2)
               (lemma "finite_singleton[(x!1)]")
               (inst?)
               (grind))))
            ("3"
             (hide (-1 -3 3))
             (typepred "x!1")
             (expand "finite_partition?")
             (flatten)
             (expand "every")
             (inst -3 "choose[setof[T]](x!1)"))))
          ("2"
           (hide (-1 -3 3))
           (decompose-equality 1)
           (iff)
           (prop)
           (("1" (expand* "restrict" "extend") (prop))
            ("2"
             (expand* "restrict" "extend")
             (prop)
             (expand "singleton")
             (lemma "choose_not_member[setof[T]]")
             (inst?)
             (expand "member")
             (assert))))
          ("3"
           (hide (-1 -3 3))
           (skosimp*)
           (prop)
           (("1"
             (expand "singleton")
             (typepred "x!1")
             (expand "finite_partition?")
             (flatten)
             (expand "every")
             (inst?))
            ("2"
             (expand "singleton")
             (lemma "choose_member[setof[T]]")
             (inst?)
             (assert))))))
        ("3"
         (hide 2)
         (skosimp*)
         (lemma "rest_member[setof[T]]")
         (inst -1 "x!1" "A!1")
         (expand "member")
         (inst?))
        ("4"
         (hide (-2 2))
         (case-replace
          "restrict[setof[T], finite_set[T], boolean](x!1)= union(restrict[setof[T], finite_set[T], boolean](rest(x!1)), singleton(choose(x!1)))"
          :hide? T)
         (("1"
           (lemma "card_disj_union[finite_set[T]]")
           (inst -1
            "restrict[setof[T], finite_set[T], boolean](rest(x!1))"
            "singleton(choose(x!1))")
           (("1"
             (prop)
             (("1"
               (replaces -1)
               (lemma "nonempty_card[finite_set[T]]")
               (inst -1 "singleton(choose(x!1))")
               (prop)
               (("1" (assert))
                ("2"
                 (hide-all-but (-1 2))
                 (expand "nonempty?" 1)
                 (expand "empty?")
                 (inst -1 "choose(x!1)")
                 (("1" (expand "member") (expand "singleton") (propax))
                  ("2"
                   (typepred "x!1")
                   (expand "finite_partition?")
                   (flatten)
                   (expand "every")
                   (inst -3 "choose[setof[T]](x!1)"))))))
              ("2"
               (hide 2)
               (expand "disjoint?")
               (expand "empty?")
               (skosimp*)
               (expand "member")
               (expand "intersection")
               (expand "member")
               (expand "restrict")
               (flatten)
               (expand "singleton")
               (lemma "choose_not_member[setof[T]]")
               (inst?)
               (expand "member")
               (expand "nonempty?")
               (assert))))
            ("2"
             (hide 2)
             (lemma "finite_singleton[(x!1)]")
             (inst?)
             (expand "is_finite")
             (propax))))
          ("2"
           (hide 2)
           (decompose-equality 1)
           (iff)
           (prop)
           (("1"
             (expand* "union" "member" "restrict")
             (prop)
             (expand "singleton")
             (expand "rest")
             (prop)
             (expand "remove")
             (prop)
             (("1" (assert)) ("2" (expand "member") (propax))))
            ("2"
             (expand* "union" "member" "restrict")
             (prop)
             (("1"
               (lemma "rest_member[setof[T]]")
               (inst -1 "x!1" "x!2")
               (expand "member")
               (assert))
              ("2"
               (expand "singleton")
               (lemma "choose_member[setof[T]]")
               (inst?)
               (expand "nonempty?")
               (assert))))))
          ("3"
           (hide (-1 2))
           (skosimp*)
           (prop)
           (("1"
             (hide -2)
             (typepred "x!1")
             (expand "finite_partition?")
             (flatten)
             (expand "every")
             (inst?))
            ("2"
             (expand "singleton")
             (lemma "choose_member[setof[T]]")
             (inst?)
             (assert))))))))
      ("2"
       (hide (-2 2))
       (typepred "x!1")
       (expand "finite_partition?")
       (prop)
       (("1"
         (expand "partition?")
         (skosimp*)
         (typepred "a!1" "b!1")
         (lemma "rest_member[setof[T]]")
         (copy -1)
         (inst -1 "x!1" "a!1")
         (inst -2 "x!1" "b!1")
         (expand "member")
         (inst -5 "a!1" "b!1")
         (assert))
        ("2" (rewrite "finite_rest"))
        ("3"
         (expand "every")
         (skosimp*)
         (lemma "rest_member[setof[T]]")
         (inst -1 "x!1" "x!2")
         (expand "member")
         (inst -4 "x!2"))))))
    ("2" (hide (-3 -4 2)) (lemma "divide_sigma_TCC2") (inst?) (assert))
    ("3" (hide (-3 -4 2)) (lemma "divide_sigma_TCC2") (inst?) (assert))
    ("4" (hide (-3 -4 2)) (lemma "divide_sigma_TCC1") (inst?) (assert))
    ("5"
     (hide (-1 -3 2))
     (skosimp*)
     (typepred "y!1")
     (expand "finite_partition?")
     (flatten)
     (expand "every")
     (inst?))
    ("6"
     (hide (-1 -3 2))
     (skosimp*)
     (typepred "y!1")
     (expand "finite_partition?")
     (flatten)
     (expand "every")
     (inst?))
    ("7"
     (hide (-1 2))
     (typepred "x!1")
     (expand "finite_partition?")
     (flatten)
     (hide (-1 -3))
     (expand* "is_finite" "restrict")
     (skosimp)
     (inst 1 "N!1" "f!1")
     (("1" (expand "injective?") (skosimp*) (inst?) (assert))
      ("2"
       (skosimp*)
       (prop)
       (("1"
         (typepred "x!1")
         (expand "finite_partition?")
         (flatten)
         (expand "every")
         (inst?))
        ("2" (expand "restrict") (propax))
        ("3" (expand "restrict") (propax))))))
    ("8"
     (hide (1 3))
     (typepred "x!1")
     (expand "finite_partition?")
     (flatten)
     (hide (-1 -3))
     (expand* "is_finite" "restrict")
     (skosimp)
     (inst 1 "N!1" "f!1")
     (("1" (expand "injective?") (skosimp*) (inst?) (assert))
      ("2"
       (skosimp*)
       (prop)
       (("1"
         (typepred "x!1")
         (expand "finite_partition?")
         (flatten)
         (expand "every")
         (inst?))
        ("2" (expand "restrict") (propax))
        ("3" (expand "restrict") (propax))))))
    ("9" (hide 2) (lemma "divide_sigma_TCC2") (inst?) (assert) (prop))
    ("10"
     (hide 2)
     (rewrite "card_partition_TCC2")
     (skosimp*)
     (inst?)
     (assert))
    ("11"
     (hide 2)
     (skosimp*)
     (typepred "FP!1")
     (expand "finite_partition?")
     (flatten)
     (expand "every")
     (inst?))
    ("12"
     (hide 2)
     (typepred "FP!1")
     (expand "finite_partition?")
     (flatten)
     (expand "every")
     (propax))
    ("13"
     (hide 2)
     (typepred "FP!1")
     (expand "finite_partition?")
     (flatten)
     (hide (-1 -3))
     (expand* "is_finite" "restrict")
     (skosimp)
     (inst 1 "N!1" "f!1")
     (("1" (expand "injective?") (skosimp*) (inst?) (assert))
      ("2"
       (skosimp*)
       (prop)
       (("1"
         (typepred "FP!1")
         (expand "finite_partition?")
         (flatten)
         (expand "every")
         (inst?))
        ("2" (expand "restrict") (propax))
        ("3" (expand "restrict") (propax))))))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: class_equation_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (typepred "FP!1")
   (expand "finite_partition?")
   (flatten)
   (assert)
   (lemma "Union_finite[T]")
   (inst?)
   (assert))


proof_type: t_proof
decl_type: tcc
library: groups
theory: class_equation_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (typepred "FP!1")
   (expand "finite_partition?")
   (flatten)
   (hide (-1 -2))
   (expand "every")
   (inst?))


proof_type: t_proof
decl_type: tcc
library: groups
theory: class_equation_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (typepred "FP!1")
   (expand "finite_partition?")
   (flatten)
   (lemma "Union_finite[T]")
   (inst?)
   (assert)
   (hide (-1 2))
   (prop)
   (("1" (rewrite "finite_rest"))
    ("2"
     (expand "every")
     (skosimp*)
     (inst?)
     (typepred "x!1")
     (lemma "rest_member[setof[T]]")
     (inst -1 "FP!1" "x!1")
     (expand "member")
     (propax))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: class_equation_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (typepred "A!1")
   (typepred "FP!1")
   (expand "finite_partition?")
   (flatten)
   (expand "every")
   (inst?))


proof_type: t_proof
decl_type: tcc
library: groups
theory: class_equation_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "convergent?")
   (prop)
   (("1"
     (typepred "FP!1")
     (expand "finite_partition?")
     (flatten)
     (hide -1)
     (rewrite "finite_countable")
     (hide 2)
     (expand "is_finite" (-1 1))
     (skosimp)
     (inst 1 "N!1" "f!1")
     (("1" (hide (-2 -3)) (expand "injective?") (grind))
      ("2"
       (skosimp*)
       (prop)
       (("1" (expand "every") (inst?))
        ("2"
         (expand "nonzero_elts")
         (expand "restrict")
         (assert)
         (inst?))
        ("3" (expand "nonzero_elts") (expand "restrict") (flatten))))))
    ("2"
     (expand "convergent?")
     (flatten)
     (hide 2)
     (typepred "FP!1")
     (expand "finite_partition?")
     (flatten)
     (hide -1)
     (expand "is_finite" (-1 1))
     (skosimp)
     (inst 1 "N!1" "f!1")
     (("1" (hide (-2 -3)) (expand "injective?") (grind))
      ("2"
       (skosimp*)
       (prop)
       (("1" (expand "every") (inst?))
        ("2"
         (expand "nonzero_elts")
         (expand "restrict")
         (assert)
         (inst?))
        ("3" (expand "nonzero_elts") (expand "restrict") (flatten))))))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: class_equation_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (measure-induct+ "card(FP)" "FP")
   (("1"
     (skosimp*)
     (inst -1 "rest(x!1)")
     (("1"
       (inst -1 "n!1")
       (prop)
       (("1"
         (hide (-2 -3))
         (lemma "sigma_set.sigma_disjoint_union")
         (inst -1 "rest(x!1)" "singleton(choose(x!1))" "card")
         (("1"
           (prop)
           (("1"
             (case-replace
              "restrict[setof[T], finite_set[T], boolean](x!1) = union(restrict[setof[T], finite_set[T], boolean](rest(x!1)), singleton(choose(x!1)))"
              :hide? T)
             (("1"
               (replace -1 1)
               (hide -1)
               (case-replace
                "sigma_set[finite_set[T]].sigma(singleton(choose(x!1)), card[T]) = card(choose(x!1))"
                :hide? T)
               (("1"
                 (rewrite "card_def")
                 (typepred "Card(choose(x!1))")
                 (rewrite "closed_plus"))
                ("2"
                 (hide (-1 2))
                 (rewrite "sigma_countable")
                 (("1"
                   (lemma "sigma_countable.sigma_finite"
                    ("F" "singleton(choose(x!1))"))
                   (("1"
                     (inst?)
                     (case "card(singleton(choose(x!1))) = 1")
                     (("1"
                       (replaces -1)
                       (assert)
                       (replace -1)
                       (hide -1)
                       (expand "sigma")
                       (expand "o ")
                       (typepred
                        "finite_enumeration(singleton(choose(x!1)))(0)")
                       (expand "singleton")
                       (assert)
                       (replace -2)
                       (expand "sigma")
                       (propax))
                      ("2"
                       (hide (-1 2))
                       (expand "nonempty?")
                       (rewrite "card_def")
                       (rewrite "Card_bijection")
                       (inst 1
                        "LAMBDA (y : (singleton(choose(x!1)))) : 0")
                       (expand "bijective?")
                       (prop)
                       (("1"
                         (expand "injective?")
                         (skosimp*)
                         (typepred "x1!1" "x2!1")
                         (expand "singleton")
                         (assert))
                        ("2"
                         (expand "surjective?")
                         (skosimp*)
                         (inst 1 "choose(x!1)")
                         (("1" (expand "singleton") (propax))
                          ("2" (expand "nonempty?") (propax))))))))
                    ("2"
                     (hide 2)
                     (prop)
                     (("1"
                       (expand "empty?")
                       (inst -1 "choose[setof[T]](x!1)")
                       (("1"
                         (expand "member")
                         (expand "singleton")
                         (propax))
                        ("2"
                         (typepred "x!1")
                         (expand "finite_partition?")
                         (flatten)
                         (expand "every")
                         (inst -3 "choose[setof[T]](x!1)"))))
                      ("2"
                       (lemma "finite_singleton[(x!1)]")
                       (inst -1 "choose[setof[T]](x!1)")
                       (assert)
                       (grind))))))
                  ("2"
                   (hide 2)
                   (expand "convergent?")
                   (prop)
                   (hide 2)
                   (lemma "finite_singleton[(x!1)]")
                   (inst?)
                   (grind))
                  ("3"
                   (hide 2)
                   (rewrite "finite_countable")
                   (hide 2)
                   (lemma "finite_singleton[(x!1)]")
                   (inst?)
                   (grind))))
                ("3"
                 (hide (-1 2))
                 (typepred "x!1")
                 (expand "finite_partition?")
                 (flatten)
                 (expand "every")
                 (inst -3 "choose[setof[T]](x!1)"))))
              ("2"
               (hide (-1 -2 2))
               (decompose-equality 1)
               (iff)
               (prop)
               (("1"
                 (expand* "restrict" "union" "member")
                 (prop)
                 (grind))
                ("2"
                 (expand* "restrict" "union" "member")
                 (prop)
                 (("1" (grind)) ("2" (expand "singleton") (assert))))))))
            ("2"
             (hide (-1 2))
             (expand "nonempty?")
             (expand "disjoint?")
             (expand "empty?" 1)
             (skosimp*)
             (expand "member")
             (expand "intersection")
             (flatten)
             (expand "member")
             (expand "restrict")
             (expand "singleton")
             (lemma "choose_not_member[setof[T]]")
             (inst?)
             (expand "member")
             (assert))))
          ("2"
           (hide (-1 2))
           (expand "convergent?")
           (prop)
           (("1"
             (rewrite "finite_countable")
             (hide 2)
             (lemma "finite_union[finite_set[T]]")
             (case "nonzero_elts[finite_set[T]]
                                                   (card[T],
                                                    union[finite_set[T]]
                                                        (restrict[setof[T], finite_set[T], boolean]
                                                             (rest[setof[T]](x!1)),
                                                         singleton[(x!1)](choose[setof[T]](x!1)))) = union[finite_set[T]]
                                                        (restrict[setof[T], finite_set[T], boolean]
                                                             (rest[setof[T]](x!1)),
                                                         singleton[(x!1)](choose[setof[T]](x!1)))")
             (("1"
               (replace -1)
               (hide -1)
               (inst?)
               (("1"
                 (hide 2)
                 (lemma "finite_singleton[(x!1)]")
                 (inst?)
                 (grind))
                ("2"
                 (hide 2)
                 (lemma "finite_rest[setof[T]]")
                 (inst?)
                 (("1"
                   (expand* "is_finite" "restrict")
                   (skosimp)
                   (inst 1 "N!1" "f!1")
                   (("1"
                     (expand "injective?")
                     (skosimp*)
                     (inst?)
                     (assert))
                    ("2"
                     (skosimp*)
                     (prop)
                     (("1"
                       (typepred "x!1")
                       (expand "finite_partition?")
                       (flatten)
                       (hide (-1 -2 -5))
                       (lemma "rest_member[setof[T]]")
                       (inst -1 "x!1" "x!2")
                       (expand "member")
                       (assert)
                       (expand "every")
                       (inst?))
                      ("2" (expand "restrict") (propax))
                      ("3" (expand "restrict") (propax))))))
                  ("2"
                   (hide 2)
                   (typepred "x!1")
                   (expand "finite_partition?")
                   (assert))))))
              ("2"
               (hide (-1 -2 2))
               (decompose-equality 1)
               (iff)
               (prop)
               (("1" (expand "nonzero_elts") (prop))
                ("2"
                 (expand "nonzero_elts")
                 (prop)
                 (expand "union")
                 (expand "member")
                 (expand "restrict")
                 (prop)
                 (("1"
                   (lemma "rest_member[setof[T]]")
                   (inst -1 "x!1" "x!2")
                   (expand "member")
                   (assert)
                   (reveal -8)
                   (inst?)
                   (assert))
                  ("2"
                   (expand "singleton")
                   (reveal -7)
                   (inst?)
                   (assert))))))))
            ("2"
             (expand "convergent?")
             (flatten)
             (hide 2)
             (case "nonzero_elts(card[T],
                                                                 union[finite_set[T]]
                                                                     (restrict[setof[T], finite_set[T], boolean]
                                                                          (rest[setof[T]](x!1)),
                                                                      singleton[(x!1)](choose[setof[T]](x!1)))) = union[finite_set[T]]
                                                                     (restrict[setof[T], finite_set[T], boolean]
                                                                          (rest[setof[T]](x!1)),
                                                                      singleton[(x!1)](choose[setof[T]](x!1)))")
             (("1"
               (replaces -1)
               (lemma "finite_union[finite_set[T]]")
               (inst?)
               (("1"
                 (hide 2)
                 (lemma "finite_singleton[(x!1)]")
                 (inst?)
                 (grind))
                ("2"
                 (hide 2)
                 (lemma "finite_rest[setof[T]]")
                 (inst?)
                 (("1"
                   (expand* "is_finite" "restrict")
                   (skosimp)
                   (inst 1 "N!1" "f!1")
                   (("1"
                     (expand "injective?")
                     (skosimp*)
                     (inst?)
                     (assert))
                    ("2"
                     (skosimp*)
                     (prop)
                     (("1"
                       (typepred "x!1")
                       (expand "finite_partition?")
                       (flatten)
                       (hide (-1 -2 -5))
                       (lemma "rest_member[setof[T]]")
                       (inst -1 "x!1" "x!2")
                       (expand "member")
                       (assert)
                       (expand "every")
                       (inst?))
                      ("2" (expand "restrict") (propax))
                      ("3" (expand "restrict") (propax))))))
                  ("2"
                   (hide 2)
                   (typepred "x!1")
                   (expand "finite_partition?")
                   (assert))))))
              ("2"
               (hide (-1 2))
               (decompose-equality 1)
               (iff)
               (prop)
               (("1" (expand "nonzero_elts") (prop))
                ("2"
                 (expand "nonzero_elts")
                 (prop)
                 (expand "union")
                 (expand "member")
                 (expand "restrict")
                 (prop)
                 (("1"
                   (lemma "rest_member[setof[T]]")
                   (inst -1 "x!1" "x!2")
                   (expand "member")
                   (assert)
                   (reveal -7)
                   (inst?)
                   (assert))
                  ("2"
                   (expand "singleton")
                   (reveal -6)
                   (inst?)
                   (assert))))))))))
          ("3"
           (hide (-1 2))
           (skosimp*)
           (prop)
           (("1"
             (hide (-2 -3))
             (typepred "x!1")
             (expand "finite_partition?")
             (flatten)
             (expand "every")
             (inst?))
            ("2" (hide (-1 -3)) (expand "singleton") (assert))))))
        ("2"
         (hide -3)
         (lemma "sigma_set.sigma_disjoint_union")
         (inst -1 "rest(x!1)" "singleton(choose(x!1))" "card")
         (("1"
           (prop)
           (("1"
             (case-replace
              "restrict[setof[T], finite_set[T], boolean](x!1) = union(restrict[setof[T], finite_set[T], boolean](rest(x!1)), singleton(choose(x!1)))"
              :hide? T)
             (("1"
               (replace -1 1)
               (hide -1)
               (case-replace
                "sigma_set[finite_set[T]].sigma(singleton(choose(x!1)), card[T]) = card(choose(x!1))"
                :hide? T)
               (("1"
                 (rewrite "card_def")
                 (typepred "Card(choose(x!1))")
                 (rewrite "closed_plus"))
                ("2"
                 (hide (-1 -2 2))
                 (rewrite "sigma_countable")
                 (("1"
                   (lemma "sigma_countable.sigma_finite"
                    ("F" "singleton(choose(x!1))"))
                   (("1"
                     (inst?)
                     (case "card(singleton(choose(x!1))) = 1")
                     (("1"
                       (replaces -1)
                       (assert)
                       (replace -1)
                       (hide -1)
                       (expand "sigma")
                       (expand "o ")
                       (typepred
                        "finite_enumeration(singleton(choose(x!1)))(0)")
                       (expand "singleton")
                       (assert)
                       (replace -2)
                       (expand "sigma")
                       (propax))
                      ("2"
                       (hide (-1 2))
                       (expand "nonempty?")
                       (rewrite "card_def")
                       (rewrite "Card_bijection")
                       (inst 1
                        "LAMBDA (y : (singleton(choose(x!1)))) : 0")
                       (expand "bijective?")
                       (prop)
                       (("1"
                         (expand "injective?")
                         (skosimp*)
                         (typepred "x1!1" "x2!1")
                         (expand "singleton")
                         (assert))
                        ("2"
                         (expand "surjective?")
                         (skosimp*)
                         (inst 1 "choose(x!1)")
                         (("1" (expand "singleton") (propax))
                          ("2" (expand "nonempty?") (propax))))))))
                    ("2"
                     (hide 2)
                     (prop)
                     (("1"
                       (expand "empty?")
                       (inst -1 "choose[setof[T]](x!1)")
                       (("1"
                         (expand "member")
                         (expand "singleton")
                         (propax))
                        ("2"
                         (typepred "x!1")
                         (expand "finite_partition?")
                         (flatten)
                         (expand "every")
                         (inst -3 "choose[setof[T]](x!1)"))))
                      ("2"
                       (lemma "finite_singleton[(x!1)]")
                       (inst -1 "choose[setof[T]](x!1)")
                       (assert)
                       (grind))))))
                  ("2"
                   (hide 2)
                   (expand "convergent?")
                   (prop)
                   (hide 2)
                   (lemma "finite_singleton[(x!1)]")
                   (inst?)
                   (grind))
                  ("3"
                   (hide 2)
                   (rewrite "finite_countable")
                   (hide 2)
                   (lemma "finite_singleton[(x!1)]")
                   (inst?)
                   (grind))))
                ("3"
                 (hide (-1 -2 2))
                 (typepred "x!1")
                 (expand "finite_partition?")
                 (flatten)
                 (expand "every")
                 (inst -3 "choose[setof[T]](x!1)"))))
              ("2"
               (hide (-1 -2 -3 2))
               (decompose-equality 1)
               (iff)
               (prop)
               (("1"
                 (expand* "restrict" "union" "member")
                 (prop)
                 (grind))
                ("2"
                 (expand* "restrict" "union" "member")
                 (prop)
                 (("1" (grind)) ("2" (expand "singleton") (assert))))))))
            ("2"
             (hide (-1 -2 2))
             (expand "nonempty?")
             (expand "disjoint?")
             (expand "empty?" 1)
             (skosimp*)
             (expand "member")
             (expand "intersection")
             (flatten)
             (expand "member")
             (expand "restrict")
             (expand "singleton")
             (lemma "choose_not_member[setof[T]]")
             (inst?)
             (expand "member")
             (assert))))
          ("2"
           (hide (-1 -2 2))
           (expand "convergent?")
           (prop)
           (("1"
             (rewrite "finite_countable")
             (hide 2)
             (lemma "finite_union[finite_set[T]]")
             (case "nonzero_elts[finite_set[T]]
                                                                    (card[T],
                                                                     union[finite_set[T]]
                                                                         (restrict[setof[T], finite_set[T], boolean]
                                                                              (rest[setof[T]](x!1)),
                                                                          singleton[(x!1)](choose[setof[T]](x!1)))) = union[finite_set[T]]
                                                                         (restrict[setof[T], finite_set[T], boolean]
                                                                              (rest[setof[T]](x!1)),
                                                                          singleton[(x!1)](choose[setof[T]](x!1)))")
             (("1"
               (replace -1)
               (hide -1)
               (inst?)
               (("1"
                 (hide 2)
                 (lemma "finite_singleton[(x!1)]")
                 (inst?)
                 (grind))
                ("2"
                 (hide 2)
                 (lemma "finite_rest[setof[T]]")
                 (inst?)
                 (("1"
                   (expand* "is_finite" "restrict")
                   (skosimp)
                   (inst 1 "N!1" "f!1")
                   (("1"
                     (expand "injective?")
                     (skosimp*)
                     (inst?)
                     (assert))
                    ("2"
                     (skosimp*)
                     (prop)
                     (("1"
                       (typepred "x!1")
                       (expand "finite_partition?")
                       (flatten)
                       (hide (-1 -2 -5))
                       (lemma "rest_member[setof[T]]")
                       (inst -1 "x!1" "x!2")
                       (expand "member")
                       (assert)
                       (expand "every")
                       (inst?))
                      ("2" (expand "restrict") (propax))
                      ("3" (expand "restrict") (propax))))))
                  ("2"
                   (hide 2)
                   (typepred "x!1")
                   (expand "finite_partition?")
                   (assert))))))
              ("2"
               (hide (-1 -2 2))
               (decompose-equality 1)
               (iff)
               (prop)
               (("1" (expand "nonzero_elts") (prop))
                ("2"
                 (expand "nonzero_elts")
                 (prop)
                 (expand "union")
                 (expand "member")
                 (expand "restrict")
                 (prop)
                 (("1"
                   (lemma "rest_member[setof[T]]")
                   (inst -1 "x!1" "x!2")
                   (expand "member")
                   (assert)
                   (reveal -8)
                   (inst?)
                   (assert))
                  ("2"
                   (expand "singleton")
                   (reveal -7)
                   (inst?)
                   (assert))))))))
            ("2"
             (expand "convergent?")
             (flatten)
             (hide 2)
             (case "nonzero_elts(card[T],
                                                                                  union[finite_set[T]]
                                                                                      (restrict[setof[T], finite_set[T], boolean]
                                                                                           (rest[setof[T]](x!1)),
                                                                                       singleton[(x!1)](choose[setof[T]](x!1)))) = union[finite_set[T]]
                                                                                      (restrict[setof[T], finite_set[T], boolean]
                                                                                           (rest[setof[T]](x!1)),
                                                                                       singleton[(x!1)](choose[setof[T]](x!1)))")
             (("1"
               (replaces -1)
               (lemma "finite_union[finite_set[T]]")
               (inst?)
               (("1"
                 (hide 2)
                 (lemma "finite_singleton[(x!1)]")
                 (inst?)
                 (grind))
                ("2"
                 (hide 2)
                 (lemma "finite_rest[setof[T]]")
                 (inst?)
                 (("1"
                   (expand* "is_finite" "restrict")
                   (skosimp)
                   (inst 1 "N!1" "f!1")
                   (("1"
                     (expand "injective?")
                     (skosimp*)
                     (inst?)
                     (assert))
                    ("2"
                     (skosimp*)
                     (prop)
                     (("1"
                       (typepred "x!1")
                       (expand "finite_partition?")
                       (flatten)
                       (hide (-1 -2 -5))
                       (lemma "rest_member[setof[T]]")
                       (inst -1 "x!1" "x!2")
                       (expand "member")
                       (assert)
                       (expand "every")
                       (inst?))
                      ("2" (expand "restrict") (propax))
                      ("3" (expand "restrict") (propax))))))
                  ("2"
                   (hide 2)
                   (typepred "x!1")
                   (expand "finite_partition?")
                   (assert))))))
              ("2"
               (hide (-1 2))
               (decompose-equality 1)
               (iff)
               (prop)
               (("1" (expand "nonzero_elts") (prop))
                ("2"
                 (expand "nonzero_elts")
                 (prop)
                 (expand "union")
                 (expand "member")
                 (expand "restrict")
                 (prop)
                 (("1"
                   (lemma "rest_member[setof[T]]")
                   (inst -1 "x!1" "x!2")
                   (expand "member")
                   (assert)
                   (reveal -7)
                   (inst?)
                   (assert))
                  ("2"
                   (expand "singleton")
                   (reveal -6)
                   (inst?)
                   (assert))))))))))
          ("3"
           (hide (-1 -2 2))
           (skosimp*)
           (prop)
           (("1"
             (hide (-2 -3))
             (typepred "x!1")
             (expand "finite_partition?")
             (flatten)
             (expand "every")
             (inst?))
            ("2" (hide (-1 -3)) (expand "singleton") (assert))))))
        ("3"
         (hide 1)
         (skosimp*)
         (inst -1 "A!1")
         (hide 2)
         (typepred "A!1")
         (lemma "rest_member[setof[T]]")
         (inst -1 "x!1" "A!1")
         (expand "member")
         (propax))
        ("4"
         (hide 1)
         (skosimp*)
         (inst -1 "A!1")
         (hide 2)
         (typepred "A!1")
         (lemma "rest_member[setof[T]]")
         (inst -1 "x!1" "A!1")
         (expand "member")
         (propax))
        ("5"
         (hide -1)
         (expand "nonempty?")
         (lemma "rest_empty_lem[setof[T]]")
         (inst -1 "x!1")
         (assert)
         (replace -1 1)
         (case-replace
          "restrict[setof[T], finite_set[T], boolean]
                                                    (extend[setof[T], (x!1), bool, FALSE]
                                                         (singleton(choose(x!1)))) = singleton(choose(x!1))"
          :hide? T)
         (("1"
           (case-replace
            "sigma_set[finite_set[T]].sigma(singleton(choose(x!1)), card[T]) = card(choose(x!1))"
            :hide? T)
           (("1"
             (typepred "card(choose(x!1))")
             (replaces -1)
             (typepred "Card(choose(x!1))")
             (hide (-2 -3 2))
             (assert))
            ("2"
             (hide (-1 -2 2 3))
             (rewrite "sigma_countable")
             (("1"
               (lemma "sigma_countable.sigma_finite"
                ("F" "singleton(choose(x!1))"))
               (("1"
                 (inst?)
                 (case "card(singleton(choose(x!1))) = 1")
                 (("1"
                   (replaces -1)
                   (assert)
                   (replace -1)
                   (hide -1)
                   (expand "sigma")
                   (expand "o ")
                   (typepred
                    "finite_enumeration(singleton(choose(x!1)))(0)")
                   (expand "singleton")
                   (assert)
                   (replace -2)
                   (expand "sigma")
                   (propax))
                  ("2"
                   (hide (-1 2))
                   (rewrite "card_def")
                   (rewrite "Card_bijection")
                   (inst 1 "LAMBDA (y : (singleton(choose(x!1)))) : 0")
                   (grind)
                   (inst 1 "choose(x!1)"))))
                ("2"
                 (hide 2)
                 (prop)
                 (("1"
                   (expand "empty?")
                   (inst -1 "choose[setof[T]](x!1)")
                   (("1" (expand "member") (expand "singleton") (propax))
                    ("2"
                     (typepred "x!1")
                     (expand "finite_partition?")
                     (flatten)
                     (expand "every")
                     (inst -3 "choose[setof[T]](x!1)"))
                    ("3" (reveal 3) (expand "nonempty?") (propax))))
                  ("2"
                   (lemma "finite_singleton[(x!1)]")
                   (inst -1 "choose[setof[T]](x!1)")
                   (assert)
                   (grind))))))
              ("2"
               (hide 2)
               (expand "convergent?")
               (prop)
               (hide 2)
               (lemma "finite_singleton[(x!1)]")
               (inst?)
               (grind))
              ("3"
               (hide 2)
               (rewrite "finite_countable")
               (hide 2)
               (lemma "finite_singleton[(x!1)]")
               (inst?)
               (grind))))
            ("3"
             (hide (-1 2))
             (typepred "x!1")
             (expand "finite_partition?")
             (flatten)
             (expand "every")
             (inst -3 "choose[setof[T]](x!1)"))))
          ("2"
           (hide 2)
           (decompose-equality 1)
           (iff)
           (prop)
           (("1" (expand* "restrict" "extend") (prop))
            ("2"
             (expand* "restrict" "extend")
             (prop)
             (expand "singleton")
             (lemma "choose_not_member[setof[T]]")
             (inst?)
             (expand "member")
             (assert))))
          ("3"
           (hide 2)
           (skosimp*)
           (prop)
           (("1"
             (expand "singleton")
             (typepred "x!1")
             (expand "finite_partition?")
             (flatten)
             (expand "every")
             (inst?))
            ("2"
             (expand "singleton")
             (lemma "choose_member[setof[T]]")
             (inst?)
             (assert))))))
        ("6"
         (hide -1)
         (expand "nonempty?")
         (lemma "rest_empty_lem[setof[T]]")
         (inst -1 "x!1")
         (assert)
         (replace -1 1)
         (case-replace
          "restrict[setof[T], finite_set[T], boolean]
                                                            (extend[setof[T], (x!1), bool, FALSE]
                                                                 (singleton(choose(x!1)))) = singleton(choose(x!1))"
          :hide? T)
         (("1"
           (case-replace
            "sigma_set[finite_set[T]].sigma(singleton(choose(x!1)), card[T]) = card(choose(x!1))"
            :hide? T)
           (("1"
             (typepred "card(choose(x!1))")
             (replaces -1)
             (typepred "Card(choose(x!1))")
             (hide (-2 -3 2))
             (assert))
            ("2"
             (hide (-1 -2 2 3))
             (rewrite "sigma_countable")
             (("1"
               (lemma "sigma_countable.sigma_finite"
                ("F" "singleton(choose(x!1))"))
               (("1"
                 (inst?)
                 (case "card(singleton(choose(x!1))) = 1")
                 (("1"
                   (replaces -1)
                   (assert)
                   (replace -1)
                   (hide -1)
                   (expand "sigma")
                   (expand "o ")
                   (typepred
                    "finite_enumeration(singleton(choose(x!1)))(0)")
                   (expand "singleton")
                   (assert)
                   (replace -2)
                   (expand "sigma")
                   (propax))
                  ("2"
                   (hide (-1 2))
                   (rewrite "card_def")
                   (rewrite "Card_bijection")
                   (inst 1 "LAMBDA (y : (singleton(choose(x!1)))) : 0")
                   (grind)
                   (inst 1 "choose(x!1)"))))
                ("2"
                 (hide 2)
                 (prop)
                 (("1"
                   (expand "empty?")
                   (inst -1 "choose[setof[T]](x!1)")
                   (("1" (expand "member") (expand "singleton") (propax))
                    ("2"
                     (typepred "x!1")
                     (expand "finite_partition?")
                     (flatten)
                     (expand "every")
                     (inst -3 "choose[setof[T]](x!1)"))
                    ("3" (reveal 3) (expand "nonempty?") (propax))))
                  ("2"
                   (lemma "finite_singleton[(x!1)]")
                   (inst -1 "choose[setof[T]](x!1)")
                   (assert)
                   (grind))))))
              ("2"
               (hide 2)
               (expand "convergent?")
               (prop)
               (hide 2)
               (lemma "finite_singleton[(x!1)]")
               (inst?)
               (grind))
              ("3"
               (hide 2)
               (rewrite "finite_countable")
               (hide 2)
               (lemma "finite_singleton[(x!1)]")
               (inst?)
               (grind))))
            ("3"
             (hide (-1 2))
             (typepred "x!1")
             (expand "finite_partition?")
             (flatten)
             (expand "every")
             (inst -3 "choose[setof[T]](x!1)"))))
          ("2"
           (hide 2)
           (decompose-equality 1)
           (iff)
           (prop)
           (("1" (expand* "restrict" "extend") (prop))
            ("2"
             (expand* "restrict" "extend")
             (prop)
             (expand "singleton")
             (lemma "choose_not_member[setof[T]]")
             (inst?)
             (expand "member")
             (assert))))
          ("3"
           (hide 2)
           (skosimp*)
           (prop)
           (("1"
             (expand "singleton")
             (typepred "x!1")
             (expand "finite_partition?")
             (flatten)
             (expand "every")
             (inst?))
            ("2"
             (expand "singleton")
             (lemma "choose_member[setof[T]]")
             (inst?)
             (assert))))))
        ("7"
         (hide (-1 1))
         (case-replace
          "restrict[setof[T], finite_set[T], boolean](x!1)= union(restrict[setof[T], finite_set[T], boolean](rest(x!1)), singleton(choose(x!1)))"
          :hide? T)
         (("1"
           (lemma "card_disj_union[finite_set[T]]")
           (inst -1
            "restrict[setof[T], finite_set[T], boolean](rest(x!1))"
            "singleton(choose(x!1))")
           (("1"
             (prop)
             (("1"
               (replaces -1)
               (lemma "nonempty_card[finite_set[T]]")
               (inst -1 "singleton(choose(x!1))")
               (prop)
               (("1" (assert))
                ("2"
                 (hide-all-but (-1 2))
                 (expand "nonempty?" 1)
                 (expand "empty?")
                 (inst -1 "choose(x!1)")
                 (("1" (expand "member") (expand "singleton") (propax))
                  ("2"
                   (typepred "x!1")
                   (expand "finite_partition?")
                   (flatten)
                   (expand "every")
                   (inst -3 "choose[setof[T]](x!1)"))))))
              ("2"
               (hide-all-but (-1 1))
               (expand "disjoint?")
               (expand "empty?")
               (skosimp*)
               (expand "member")
               (expand "intersection")
               (expand "member")
               (expand "restrict")
               (flatten)
               (expand "singleton")
               (lemma "choose_not_member[setof[T]]")
               (inst?)
               (expand "member")
               (expand "nonempty?")
               (assert))))
            ("2"
             (hide 2)
             (lemma "finite_singleton[(x!1)]")
             (inst?)
             (expand "is_finite")
             (propax))))
          ("2"
           (hide 2)
           (decompose-equality 1)
           (iff)
           (prop)
           (("1"
             (expand* "union" "member" "restrict")
             (prop)
             (expand "singleton")
             (expand "rest")
             (prop)
             (expand "remove")
             (prop)
             (("1" (assert)) ("2" (expand "member") (propax))))
            ("2"
             (expand* "union" "member" "restrict")
             (prop)
             (("1"
               (lemma "rest_member[setof[T]]")
               (inst -1 "x!1" "x!2")
               (expand "member")
               (assert))
              ("2"
               (expand "singleton")
               (lemma "choose_member[setof[T]]")
               (inst?)
               (expand "nonempty?")
               (assert))))))
          ("3"
           (hide (-1 2))
           (skosimp*)
           (prop)
           (("1"
             (hide -2)
             (typepred "x!1")
             (expand "finite_partition?")
             (flatten)
             (expand "every")
             (inst?))
            ("2"
             (expand "singleton")
             (lemma "choose_member[setof[T]]")
             (inst?)
             (assert))))))
        ("8"
         (hide (-1 1))
         (case-replace
          "restrict[setof[T], finite_set[T], boolean](x!1)= union(restrict[setof[T], finite_set[T], boolean](rest(x!1)), singleton(choose(x!1)))"
          :hide? T)
         (("1"
           (lemma "card_disj_union[finite_set[T]]")
           (inst -1
            "restrict[setof[T], finite_set[T], boolean](rest(x!1))"
            "singleton(choose(x!1))")
           (("1"
             (prop)
             (("1"
               (replaces -1)
               (lemma "nonempty_card[finite_set[T]]")
               (inst -1 "singleton(choose(x!1))")
               (prop)
               (("1" (assert))
                ("2"
                 (hide-all-but (-1 2))
                 (expand "nonempty?" 1)
                 (expand "empty?")
                 (inst -1 "choose(x!1)")
                 (("1" (expand "member") (expand "singleton") (propax))
                  ("2"
                   (typepred "x!1")
                   (expand "finite_partition?")
                   (flatten)
                   (expand "every")
                   (inst -3 "choose[setof[T]](x!1)"))))))
              ("2"
               (hide-all-but (-1 1))
               (expand "disjoint?")
               (expand "empty?")
               (skosimp*)
               (expand "member")
               (expand "intersection")
               (expand "member")
               (expand "restrict")
               (flatten)
               (expand "singleton")
               (lemma "choose_not_member[setof[T]]")
               (inst?)
               (expand "member")
               (expand "nonempty?")
               (assert))))
            ("2"
             (hide 2)
             (lemma "finite_singleton[(x!1)]")
             (inst?)
             (expand "is_finite")
             (propax))))
          ("2"
           (hide 2)
           (decompose-equality 1)
           (iff)
           (prop)
           (("1"
             (expand* "union" "member" "restrict")
             (prop)
             (expand "singleton")
             (expand "rest")
             (prop)
             (expand "remove")
             (prop)
             (("1" (assert)) ("2" (expand "member") (propax))))
            ("2"
             (expand* "union" "member" "restrict")
             (prop)
             (("1"
               (lemma "rest_member[setof[T]]")
               (inst -1 "x!1" "x!2")
               (expand "member")
               (assert))
              ("2"
               (expand "singleton")
               (lemma "choose_member[setof[T]]")
               (inst?)
               (expand "nonempty?")
               (assert))))))
          ("3"
           (hide (-1 2))
           (skosimp*)
           (prop)
           (("1"
             (hide -2)
             (typepred "x!1")
             (expand "finite_partition?")
             (flatten)
             (expand "every")
             (inst?))
            ("2"
             (expand "singleton")
             (lemma "choose_member[setof[T]]")
             (inst?)
             (assert))))))))
      ("2"
       (hide (-1 2))
       (typepred "x!1")
       (expand "finite_partition?")
       (prop)
       (("1"
         (expand "partition?")
         (skosimp*)
         (typepred "a!1" "b!1")
         (lemma "rest_member[setof[T]]")
         (copy -1)
         (inst -1 "x!1" "a!1")
         (inst -2 "x!1" "b!1")
         (expand "member")
         (inst -5 "a!1" "b!1")
         (assert))
        ("2" (rewrite "finite_rest"))
        ("3"
         (expand "every")
         (skosimp*)
         (lemma "rest_member[setof[T]]")
         (inst -1 "x!1" "x!2")
         (expand "member")
         (inst -4 "x!2"))))))
    ("2"
     (hide-all-but (-2 -3 1))
     (lemma "divide_sigma_TCC1")
     (inst?)
     (assert))
    ("3"
     (hide-all-but (-1 -2 1))
     (lemma "divide_sigma_TCC1")
     (inst?)
     (assert))
    ("4"
     (hide (-1 -2 2))
     (skosimp*)
     (typepred "y!1")
     (expand "finite_partition?")
     (flatten)
     (expand "every")
     (inst?))
    ("5"
     (hide (-1 -2 2))
     (skosimp*)
     (typepred "y!1")
     (expand "finite_partition?")
     (flatten)
     (expand "every")
     (inst?))
    ("6"
     (hide (-1 2))
     (typepred "x!1")
     (expand "finite_partition?")
     (flatten)
     (hide (-1 -3))
     (expand* "is_finite" "restrict")
     (skosimp)
     (inst 1 "N!1" "f!1")
     (("1" (expand "injective?") (skosimp*) (inst?) (assert))
      ("2"
       (skosimp*)
       (prop)
       (("1"
         (typepred "x!1")
         (expand "finite_partition?")
         (flatten)
         (expand "every")
         (inst?))
        ("2" (expand "restrict") (propax))
        ("3" (expand "restrict") (propax))))))
    ("7"
     (hide (1 3))
     (typepred "x!1")
     (expand "finite_partition?")
     (flatten)
     (hide (-1 -3))
     (expand* "is_finite" "restrict")
     (skosimp)
     (inst 1 "N!1" "f!1")
     (("1" (expand "injective?") (skosimp*) (inst?) (assert))
      ("2"
       (skosimp*)
       (prop)
       (("1"
         (typepred "x!1")
         (expand "finite_partition?")
         (flatten)
         (expand "every")
         (inst?))
        ("2" (expand "restrict") (propax))
        ("3" (expand "restrict") (propax))))))
    ("8" (hide (-1 2)) (lemma "divide_sigma_TCC1") (inst?) (assert))
    ("9" (hide 2) (lemma "divide_sigma_TCC1") (inst?) (assert))
    ("10"
     (hide (1 3))
     (typepred "FP!1")
     (expand "finite_partition?")
     (flatten)
     (expand "every")
     (inst?))
    ("11"
     (hide 2)
     (typepred "FP!1")
     (expand "finite_partition?")
     (flatten)
     (expand "every")
     (inst?))
    ("12"
     (hide 2)
     (typepred "FP!1")
     (expand "finite_partition?")
     (flatten)
     (hide (-1 -3))
     (expand* "is_finite" "restrict")
     (skosimp)
     (inst 1 "N!1" "f!1")
     (("1" (expand "injective?") (skosimp*) (inst?) (assert))
      ("2"
       (skosimp*)
       (prop)
       (("1"
         (typepred "FP!1")
         (expand "finite_partition?")
         (flatten)
         (expand "every")
         (inst?))
        ("2" (expand "restrict") (propax))
        ("3" (expand "restrict") (propax))))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: lagrange_index
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (expand* "order" "index")
   (lemma "set_left_cosets_full")
   (inst - "G!1" "H!1")
   (lemma "card_eq_part[T]")
   (inst?)
   (("1"
     (assert)
     (hide (-1 2))
     (prop)
     (("1"
       (skosimp)
       (typepred "A!1" "B!1")
       (expand "left_cosets")
       (skosimp*)
       (lemma "finite_left_coset_correspondence")
       (inst -1 "H!1" "a!1" "a!2" "G!1")
       (assert)
       (expand "left_coset")
       (assert))
      ("2"
       (skosimp)
       (lemma "left_cosets_disjoint")
       (inst - "G!1" "H!1" "A!1" "B!1")
       (("1" (assert))
        ("2" (typepred "B!1") (expand "left_cosets") (propax))
        ("3" (typepred "A!1") (expand "left_cosets") (propax))))
      ("3"
       (expand "left_cosets")
       (inst + "one")
       (("1" (rewrite "left_coset_one")) ("2" (rewrite "one_in"))))))
    ("2" (hide (-1 2)) (lemma "left_cosets_partition") (inst?))))


proof_type: f_proof
decl_type: formula
library: groups
theory: lagrange_index
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (lemma "card_factor")
   (inst?)
   (assert)
   (replaces -1)
   (lemma "Lagrange_index")
   (inst?)
   (assert)
   (expand "normal_subgroup?")
   (propax))


proof_type: f_proof
decl_type: formula
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "subgroup_def")
   (inst?)
   (assert)
   (hide 2)
   (prop)
   (("1"
     (expand "nonempty?")
     (expand "empty?")
     (expand "member")
     (inst - "one")
     (expand "stabilizer")
     (expand "extend")
     (ground)
     (("1" (expand "group_action?") (inst -2 "one" "one" "x!1") (assert))
      ("2" (rewrite "one_in"))))
    ("2"
     (expand "star_closed?")
     (expand "member")
     (skosimp*)
     (typepred "x!2" "y!1")
     (expand "stabilizer")
     (expand "extend")
     (ground)
     (("1"
       (expand "group_action?")
       (copy -6)
       (inst -7 "x!2" "y!1" "x!1")
       (flatten)
       (replaces -8)
       (replaces -4))
      ("2" (hide (-2 -4 -5)) (rewrite "product_in"))))
    ("3"
     (expand "inv_closed?")
     (skosimp*)
     (expand "member")
     (typepred "x!2")
     (expand "stabilizer")
     (expand "extend")
     (ground)
     (("1"
       (expand "group_action?")
       (inst -4 "inv(x!2)" "x!2" "x!1")
       (("1" (flatten) (rewrite "inv_left") (assert))
        ("2" (hide (-2 -3 2)) (grind))))
      ("2" (rewrite "inv_in"))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (prop)
   (("1"
     (expand* "member" "Fix")
     (expand "extend" 1)
     (skosimp)
     (case "EXISTS (g:(G!1)): f!1(g,x!1) /= x!1")
     (("1"
       (skosimp)
       (decompose-equality -1)
       (inst -1 "f!1(g!2,x!1)")
       (iff)
       (prop)
       (("1" (expand "extend") (expand "singleton") (propax))
        ("2"
         (expand "orbit")
         (expand "extend")
         (hide (1 3 4))
         (inst 1 "g!2"))))
      ("2" (hide -1) (inst 1 "g!1") (assert))))
    ("2"
     (expand* "member" "Fix")
     (expand "extend")
     (decompose-equality 1)
     (iff)
     (prop)
     (("1"
       (expand "singleton")
       (expand "orbit")
       (expand "extend")
       (assert)
       (skosimp)
       (inst -3 "g!1")
       (replaces -3))
      ("2" (expand "orbit") (expand "extend") (assert))
      ("3"
       (expand "orbit")
       (expand "extend")
       (assert)
       (expand "singleton")
       (inst 1 "one")
       (("1"
         (replace -2 1)
         (hide (-1 -2 -3))
         (expand "group_action?")
         (inst -1 "one" "one" "x!1")
         (assert))
        ("2" (rewrite "one_in"))))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (prop)
   (("1"
     (decompose-equality 1)
     (iff)
     (prop)
     (("1"
       (expand "empty?")
       (inst -2 "orbit(G!1,X!1)(f!1,x!1)")
       (expand "member")
       (expand "orbits_nFix")
       (expand "extend")
       (prop)
       (("1" (inst 1 "x!1")) ("2" (expand "orbits") (inst 1 "x!1"))))
      ("2" (hide -2) (expand "Fix") (expand "extend") (ground))))
    ("2"
     (expand "empty?")
     (skosimp)
     (expand "member")
     (expand "orbits_nFix")
     (expand "extend")
     (ground)
     (skosimp)
     (typepred "x!2")
     (expand "member")
     (replace -4 -1)
     (propax))))


proof_type: f_proof
decl_type: formula
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "disjoint?")
   (expand "empty?")
   (skosimp*)
   (expand "member")
   (expand "intersection")
   (flatten)
   (expand "member")
   (expand "Union")
   (skosimp)
   (typepred "a!1")
   (expand "orbits_nFix")
   (expand "extend")
   (prop)
   (skosimp)
   (typepred "x!2")
   (expand "member")
   (replace -3 -6)
   (expand "orbit" -6)
   (expand "extend")
   (prop)
   (skosimp)
   (case "orbit(G!1, X!1)(f!1, x!1)(x!2)")
   (("1"
     (lemma "singleton_iff_Fix")
     (inst?)
     (assert)
     (decompose-equality -1)
     (inst -1 "x!2")
     (iff)
     (prop)
     (expand* "extend" "singleton")
     (assert))
    ("2"
     (hide-all-but (-2 -6 1))
     (expand "orbit")
     (expand "extend")
     (replaces -1)
     (inst 1 "inv(g!1)")
     (("1"
       (expand "group_action?")
       (inst -1 "inv(g!1)" "g!1" "x!2")
       (("1" (assert) (flatten) (assert))
        ("2" (lemma "inv_in") (inst?) (expand "inv") (propax))))
      ("2"
       (hide -1)
       (lemma "inv_in")
       (inst -1 "G!1" "g!1")
       (expand "inv")
       (propax))))
    ("3" (propax))))


proof_type: f_proof
decl_type: formula
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (decompose-equality 1)
   (iff)
   (prop)
   (("1"
     (expand* "union" "member")
     (flatten)
     (expand "Union")
     (skosimp)
     (typepred "a!1")
     (expand "orbits")
     (skosimp)
     (case "member(x!2, Fix(G!1, X!1)(f!1))")
     (("1"
       (hide 2)
       (lemma "singleton_iff_Fix")
       (inst?)
       (assert)
       (replaces -1)
       (replaces -2)
       (expand* "extend" "singleton"))
      ("2"
       (inst 3 "a!1")
       (expand "orbits_nFix")
       (expand "extend")
       (inst 1 "x!2")
       (expand "member")
       (propax))))
    ("2"
     (expand* "union" "member")
     (prop)
     (("1"
       (expand "Union")
       (lemma "singleton_iff_Fix")
       (inst -1 "G!1" "X!1" "x!1" "f!1")
       (("1"
         (assert)
         (inst 1 "orbit(G!1, X!1)(f!1, x!1)")
         (("1"
           (replaces -1)
           (expand* "extend" "singleton")
           (prop)
           (expand "Fix")
           (expand "extend")
           (assert))
          ("2" (expand "orbits") (inst 1 "x!1"))))
        ("2" (hide 2) (expand "Fix") (expand "extend") (assert))))
      ("2"
       (expand "Union")
       (skosimp)
       (inst?)
       (typepred "a!1")
       (expand "orbits_nFix")
       (expand "extend")
       (assert))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand* "group_action?" "nonempty?" "empty?")
   (inst -1 "one" "one" "x!1")
   (("1"
     (flatten)
     (hide -2)
     (inst -2 "x!1")
     (expand* "member" "orbit")
     (expand "extend")
     (inst?)
     (assert))
    ("2" (rewrite "one_in"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "nonempty?" 1)
   (expand "empty?")
   (inst -3 "orbit(G!1,X!1)(f!1, choose(X!1))")
   (expand "member")
   (expand "orbits")
   (inst?))


proof_type: f_proof
decl_type: formula
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (decompose-equality 1)
   (iff)
   (prop)
   (("1"
     (expand "Union")
     (skosimp)
     (typepred "a!1")
     (expand "orbits")
     (skosimp)
     (replaces -1)
     (expand "orbit")
     (expand "extend")
     (assert))
    ("2"
     (expand "Union")
     (inst 1 "orbit(G!1,X!1)(f!1, x!1)")
     (("1"
       (expand "orbit")
       (expand "extend")
       (assert)
       (inst 1 "one")
       (("1"
         (expand "group_action?")
         (inst -2 "one" "one" "x!1")
         (assert))
        ("2" (rewrite "one_in"))))
      ("2" (expand "orbits") (inst?))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "finite_subset[T1]")
   (inst -1 "X!1" "orbit(G!1, X!1)(f!1, x!1)")
   (assert))


proof_type: f_proof
decl_type: formula
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "disjoint?")
   (expand "empty?")
   (skosimp)
   (expand "intersection")
   (expand "member")
   (flatten)
   (typepred "B!1")
   (typepred "A!1")
   (expand "orbits")
   (skosimp*)
   (replaces -1)
   (replaces -1)
   (expand "orbit")
   (expand "extend" (-2 -3))
   (prop)
   (hide (-1 -3))
   (skosimp*)
   (decompose-equality 1)
   (iff)
   (prop)
   (("1"
     (expand "extend")
     (prop)
     (hide (-1 -2))
     (skosimp)
     (expand "group_action?")
     (copy -4)
     (inst -5 "g!3" "inv(g!2)*g!2" "x!2")
     (("1"
       (copy -1)
       (inst -2 "inv(g!2)" "g!2" "x!2")
       (("1"
         (flatten)
         (replaces -3)
         (replaces -5)
         (replaces -4)
         (copy -1)
         (inst -1 "inv(g!2)" "g!1" "x!3")
         (("1"
           (flatten)
           (replace -2 -7 rl)
           (inst -3 "g!3" "inv(g!2) * g!1" "x!3")
           (flatten)
           (replace -4 -8 rl)
           (rewrite "inv_left")
           (rewrite "one_right")
           (replaces -8)
           (inst?))
          ("2"
           (hide-all-but 1)
           (lemma "inv_in")
           (inst -1 "G!1" "g!2")
           (assert)
           (grind))))
        ("2"
         (hide-all-but 1)
         (lemma "inv_in")
         (inst -1 "G!1" "g!2")
         (grind))))
      ("2" (hide-all-but 1) (rewrite "one_in"))))
    ("2"
     (expand "extend")
     (prop)
     (hide (-1 -2))
     (skosimp)
     (expand "group_action?")
     (copy -4)
     (inst -5 "g!3" "inv(g!1)*g!1" "x!3")
     (("1"
       (copy -1)
       (inst -2 "inv(g!1)" "g!1" "x!3")
       (("1"
         (flatten)
         (replaces -3)
         (replaces -5)
         (replace -4 -6 rl)
         (copy -1)
         (inst -1 "inv(g!1)" "g!2" "x!2")
         (("1"
           (flatten)
           (replace -2 -8 rl)
           (inst -3 "g!3" "inv(g!1) * g!2" "x!2")
           (flatten)
           (replace -4 -9 rl)
           (rewrite "inv_left")
           (rewrite "one_right")
           (replaces -9)
           (inst?))
          ("2"
           (hide-all-but 1)
           (lemma "inv_in")
           (inst -1 "G!1" "g!1")
           (grind))))
        ("2"
         (hide-all-but 1)
         (lemma "inv_in")
         (inst -1 "G!1" "g!1")
         (grind))))
      ("2" (hide-all-but 1) (rewrite "one_in"))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "finite_partition?")
   (prop)
   (("1"
     (expand "partition?")
     (skosimp*)
     (lemma "orbits_disjoint")
     (inst?)
     (assert))
    ("2"
     (lemma "set_orbits_is")
     (inst?)
     (assert)
     (case "is_finite(Union(orbits(G!1, X!1)(f!1)))")
     (("1" (hide -2) (lemma "Union_finite[T1]") (inst?) (assert))
      ("2" (hide (-3 2)) (replaces -1))))
    ("3"
     (expand "every")
     (skosimp)
     (typepred "x!1")
     (expand "orbits")
     (skosimp)
     (lemma "orbit_is_finite")
     (inst -1 "G!1" "X!1" "x!2" "f!1")
     (assert))))


proof_type: f_proof
decl_type: formula
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "orbits_partition")
   (inst?)
   (assert)
   (expand "finite_partition?")
   (prop)
   (("1"
     (expand "partition?")
     (skosimp*)
     (inst?)
     (("1" (assert))
      ("2"
       (hide-all-but 1)
       (typepred "b!1")
       (expand "orbits_nFix")
       (expand "extend")
       (ground))
      ("3"
       (hide-all-but 1)
       (typepred "a!1")
       (expand "orbits_nFix")
       (expand "extend")
       (ground))))
    ("2"
     (hide (-1 -3))
     (lemma "finite_subset[set[T1]]")
     (inst -1 "orbits(G!1, X!1)(f!1)" "orbits_nFix(G!1, X!1)(f!1)")
     (assert)
     (hide (-1 2))
     (expand "subset?")
     (skosimp*)
     (expand "member")
     (expand "orbits_nFix")
     (expand "extend")
     (prop))
    ("3"
     (hide (-1 -2))
     (expand "every")
     (skosimp)
     (inst?)
     (typepred "x!1")
     (expand "orbits_nFix")
     (expand "extend")
     (ground))))


proof_type: f_proof
decl_type: formula
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (lemma "stabilizer_is_subgroup")
   (inst -1 "G!1" "X!1" "x!1" "f!1")
   (assert)
   (lemma "subgroup_is_group")
   (inst?)
   (assert)
   (inst 1
    "(LAMBDA (A:(left_cosets(G!1, stabilizer(G!1, X!1)(f!1, x!1)))) : f!1(lc_gen(G!1,stabilizer(G!1, X!1)(f!1, x!1), A), x!1))")
   (("1"
     (expand "bijective?")
     (prop)
     (("1"
       (expand "injective?")
       (skosimp)
       (name-replace "b"
        "lc_gen(G!1, stabilizer(G!1, X!1)(f!1, x!1), x1!1)")
       (name-replace "c"
        "lc_gen(G!1, stabilizer(G!1, X!1)(f!1, x!1), x2!1)")
       (typepred "x1!1" "x2!1")
       (expand "left_cosets")
       (skosimp*)
       (case "stabilizer(G!1, X!1)(f!1, x!1)(inv[T, *, one](c) * b)")
       (("1"
         (lemma "lc_is_eq")
         (inst -1 "G!1" "stabilizer(G!1, X!1)(f!1, x!1)" "b" "c")
         (assert)
         (hide (-2 -3 2))
         (inst 1 "inv[T, *, one](c) * b")
         (rewrite "assoc"))
        ("2"
         (hide (-1 -2 2))
         (expand "stabilizer" 1)
         (expand "extend")
         (ground)
         (("1"
           (expand "group_action?")
           (copy -5)
           (inst -6 "inv[T, *, one](c)" "b" "x!1")
           (("1"
             (flatten)
             (replaces -7)
             (replaces -3)
             (inst -1 "inv[T, *, one](c)" "c" "x!1")
             (("1" (assert)) ("2" (rewrite "inv_in"))))
            ("2" (rewrite "inv_in"))))
          ("2" (rewrite "product_in") (rewrite "inv_in"))))))
      ("2"
       (expand "surjective?")
       (skosimp)
       (typepred "y!1")
       (expand "orbit")
       (expand "extend")
       (ground)
       (skosimp)
       (inst 1 "g!1 * stabilizer(G!1, X!1)(f!1, x!1)")
       (("1"
         (typepred
          "lc_gen(G!1,stabilizer(G!1, X!1)(f!1, x!1) , g!1 * stabilizer(G!1, X!1)(f!1, x!1))")
         (name-replace "a!1"
          "lc_gen(G!1, stabilizer(G!1, X!1)(f!1, x!1), g!1 * stabilizer(G!1, X!1)(f!1, x!1))")
         (lemma "lc_eq")
         (inst -1 "G!1" "stabilizer(G!1, X!1)(f!1, x!1)" "g!1" "a!1")
         (prop)
         (skosimp*)
         (replaces -5)
         (hide (-2 -3 -4))
         (typepred "h!1")
         (expand "stabilizer" -1)
         (expand "extend")
         (ground)
         (replaces -3)
         (expand "group_action?")
         (inst -5 "a!1" "h!1" "x!1")
         (assert))
        ("2" (expand "left_cosets") (inst?))))))
    ("2"
     (skosimp)
     (expand "orbit")
     (expand "extend")
     (inst?)
     (typepred "A!1")
     (expand "left_cosets")
     (propax))
    ("3" (skosimp) (typepred "A!1") (expand "left_cosets") (propax))))


proof_type: f_proof
decl_type: formula
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (expand "index")
   (lemma "orbits_eq_index_aux")
   (inst -1 "G!1" "X!1" "x!1" "f!1")
   (assert)
   (skosimp)
   (lemma "card_eq_bij[set[T],T1]")
   (inst?)
   (assert))


proof_type: f_proof
decl_type: formula
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (lemma "card_partition")
   (inst?)
   (("1"
     (prop)
     (("1" (lemma "set_orbits_is") (inst -1 "G!1" "X!1" "f!1") (assert))
      ("2" (hide 2) (rewrite "orbits_nonempty"))
      ("3"
       (hide 2)
       (skosimp)
       (typepred "A!1")
       (expand "orbits")
       (skosimp)
       (replaces -1)
       (lemma "orbit_nonempty")
       (inst?)
       (assert)
       (expand "nonempty?")
       (rewrite "empty_card"))))
    ("2" (hide 2) (rewrite "orbits_partition"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (case "empty?(orbits_nFix(G!1, X!1)(f!1))")
   (("1"
     (case-replace
      "restrict[setof[T1], finite_set[T1], boolean](orbits_nFix(G!1, X!1)(f!1)) = emptyset"
      :hide? T)
     (("1"
       (rewrite "sigma_empty")
       (assert)
       (lemma "empty_iff_eq_Fix")
       (inst?)
       (assert))
      ("2" (hide 2) (decompose-equality 1) (grind))))
    ("2"
     (lemma "set_orbits_is")
     (inst?)
     (assert)
     (lemma "orbits_is_union")
     (inst?)
     (assert)
     (replaces -1)
     (lemma "orbits_nFix_disj_Fix")
     (inst?)
     (assert)
     (lemma "card_disj_union[T1]")
     (inst?)
     (("1"
       (assert)
       (lemma "card_partition")
       (inst?)
       (("1"
         (assert)
         (hide (-1 -2 -3 3))
         (expand "nonempty?")
         (hide 2)
         (skosimp)
         (typepred "A!1")
         (expand "orbits_nFix")
         (expand "extend")
         (prop)
         (hide -1)
         (skosimp)
         (replaces -1)
         (lemma "orbit_nonempty")
         (inst?)
         (assert)
         (expand "nonempty?")
         (rewrite "empty_card"))
        ("2" (hide-all-but 1) (rewrite "orbits_nFix_partition"))))
      ("2"
       (hide (-1 2 3))
       (lemma "union_subset1[T1]")
       (inst -1 "Union(orbits_nFix(G!1, X!1)(f!1))" "Fix(G!1, X!1)(f!1)")
       (rewrite "union_commutative")
       (replaces -2)
       (lemma "finite_subset[T1]")
       (inst?)
       (assert))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (lemma "divide_sigma")
   (inst -1 "orbits_nFix(G!1, X!1)(f!1)" "p!1")
   (("1"
     (prop)
     (("1" (lemma "class_equation") (inst?) (assert))
      ("2"
       (expand "nonempty?")
       (lemma "empty_iff_eq_Fix")
       (inst?)
       (assert)
       (replace -1 2 rl)
       (assert)
       (rewrite "divides_zero"))
      ("3"
       (hide 2)
       (skosimp)
       (prop)
       (("1"
         (typepred "A!1")
         (expand "orbits_nFix")
         (expand "extend")
         (ground)
         (skosimp)
         (replaces -2)
         (lemma "empty_card[T1]")
         (inst?)
         (assert)
         (lemma "orbit_nonempty")
         (inst?)
         (assert)
         (hide-all-but (-1 -2))
         (expand "nonempty?")
         (propax))
        ("2"
         (typepred "A!1")
         (expand "orbits_nFix")
         (expand "extend")
         (ground)
         (skosimp)
         (lemma "orbits_eq_index")
         (inst?)
         (assert)
         (hide -2)
         (replaces -2)
         (replace -1 1 rl)
         (hide -1)
         (lemma "Lagrange_index")
         (inst?)
         (("1"
           (prop)
           (("1"
             (expand "divides")
             (replace -3 -1)
             (lemma "divides_prime_power")
             (inst -1 "n!1" "p!1"
              "index(G!1, stabilizer(G!1, X!1)(f!1, x!1))")
             (("1"
               (assert)
               (prop)
               (("1"
                 (skosimp)
                 (case-replace "i!1 = 0" :hide? T)
                 (("1"
                   (rewrite "expt_x0")
                   (hide-all-but (-2 -3 -5))
                   (replaces -1)
                   (replaces -1)
                   (rewrite "identity_mult")
                   (expand "order")
                   (lemma "same_card_subset[T]")
                   (inst -1 "stabilizer(G!1, X!1)(f!1, x!1)" "G!1")
                   (assert)
                   (hide -2)
                   (decompose-equality -1)
                   (typepred "x!1")
                   (expand "member")
                   (expand "Fix")
                   (expand "extend")
                   (skosimp)
                   (inst?)
                   (iff)
                   (typepred "g!1")
                   (prop)
                   (expand "stabilizer")
                   (expand "extend")
                   (propax))
                  ("2"
                   (hide-all-but (-1 -2 1 2))
                   (inst 2 "p!1^(i!1 - 1)")
                   (("1"
                     (lemma "expt_plus")
                     (inst -1 "1" "i!1 - 1" "p!1")
                     (assert)
                     (rewrite "expt_x1")
                     (assert))
                    ("2" (hide -2) (rewrite "int_exp"))))))
                ("2" (hide-all-but (-1 1)) (expand "divides") (inst?))))
              ("2"
               (hide-all-but 1)
               (expand "index")
               (case "nonempty?(left_cosets(G!1, stabilizer(G!1, X!1)(f!1, x!1)))")
               (("1" (rewrite "nonempty_card"))
                ("2"
                 (hide 2)
                 (expand* "nonempty?" "empty?" "member")
                 (inst -1 "stabilizer(G!1, X!1)(f!1, x!1)")
                 (expand "left_cosets")
                 (inst 1 "one")
                 (("1" (rewrite "left_coset_one"))
                  ("2" (rewrite "one_in"))))))))
            ("2"
             (hide-all-but (-6 1))
             (rewrite "stabilizer_is_subgroup"))))
          ("2"
           (hide-all-but (-1 -6 1))
           (lemma "stabilizer_is_subgroup")
           (inst?)
           (assert)
           (hide -3)
           (lemma "finite_subgroups")
           (inst?)
           (assert))))))))
    ("2" (hide-all-but (-3 -6 1)) (rewrite "orbits_nFix_partition"))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "stabilizer_is_subgroup")
   (inst?)
   (assert)
   (expand "subgroup?")
   (propax))


proof_type: t_proof
decl_type: tcc
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (lemma "card_partition_TCC2")
   (inst?)
   (("1"
     (assert)
     (hide 2)
     (expand "nonempty?")
     (prop)
     (("1"
       (skosimp)
       (typepred "A!1")
       (expand "orbits")
       (skosimp)
       (replaces -1)
       (lemma "orbit_nonempty")
       (inst?)
       (assert)
       (expand "nonempty?")
       (rewrite "empty_card"))
      ("2"
       (lemma "orbits_nonempty")
       (inst?)
       (assert)
       (expand "nonempty?")
       (propax))))
    ("2" (hide 2) (rewrite "orbits_partition"))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (case "empty?(orbits_nFix(G!1, X!1)(f!1))")
   (("1"
     (case-replace
      "restrict[setof[T1], finite_set[T1], boolean](orbits_nFix(G!1, X!1)(f!1)) = emptyset"
      :hide? T)
     (("1" (rewrite "convergent_empty"))
      ("2"
       (hide 2)
       (decompose-equality 1)
       (expand "restrict")
       (expand* "emptyset" "empty?" "member")
       (inst -2 "x!1"))))
    ("2"
     (lemma "card_partition_TCC2")
     (inst?)
     (("1"
       (assert)
       (hide 3)
       (expand "nonempty?")
       (hide 2)
       (skosimp)
       (typepred "A!1")
       (expand "orbits_nFix")
       (expand "extend")
       (prop)
       (hide -2)
       (expand "orbits")
       (skosimp)
       (replaces -1)
       (lemma "orbit_nonempty")
       (inst?)
       (assert)
       (expand "nonempty?")
       (rewrite "empty_card"))
      ("2" (hide (2 3)) (rewrite "orbits_nFix_partition"))))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: group_action
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand* "finite_group?" "finite_monad?")
   (typepred "G!1")
   (expand "group?")
   (flatten)
   (expand "monoid?")
   (flatten)
   (assert))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (measure-induct+ "length(fs)" "fs")
   (skosimp)
   (expand* "member" "finseq_appl")
   (case "length(x!1) = 0")
   (("1"
     (hide (-2 -3))
     (expand "fseq_product")
     (assert)
     (rewrite "one_in"))
    ("2"
     (inst -1 "rest(x!1)")
     (inst?)
     (prop)
     (("1"
       (expand "fseq_product" 2)
       (assert)
       (expand "finseq_appl")
       (rewrite "product_in")
       (hide (-1 2 3))
       (inst?))
      ("2"
       (skosimp)
       (case "length(rest(x!1)) = 0")
       (("1" (hide 1) (expand "fseq_product") (assert))
        ("2"
         (hide 4)
         (typepred "i!1")
         (inst -2 "i!1 + 1")
         (("1"
           (lemma "rest_pos")
           (inst?)
           (assert)
           (inst -1 "i!1")
           (("1" (expand "finseq_appl") (assert))
            ("2" (hide (-2 3)) (grind))))
          ("2" (hide 3) (grind))))))
      ("3" (hide (-1 3)) (rewrite "length_rest"))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (measure-induct+ "length(fs1)" "fs1")
   (skosimp)
   (case "length(x!1) = 0")
   (("1"
     (hide (-2 -3))
     (expand "fseq_product" 1 2)
     (assert)
     (rewrite "empty_0")
     (replaces -1)
     (rewrite "empty_o_seq"))
    ("2"
     (expand "fseq_product" 2 (1 2))
     (lift-if)
     (lift-if)
     (lift-if)
     (ground)
     (("1" (hide-all-but (-1 1 3)) (grind))
      ("2"
       (expand "o" 2 1)
       (rewrite "rest_compo")
       (case "length(rest(x!1)) = 0")
       (("1"
         (hide-all-but (-1 2))
         (expand "fseq_product" 1 2)
         (assert)
         (rewrite "empty_0")
         (replaces -1)
         (rewrite "empty_o_seq"))
        ("2"
         (inst -1 "rest(x!1)")
         (inst -1 "G!1" "fs2!1")
         (prop)
         (("1" (replaces -1) (hide-all-but 3) (rewrite "assoc"))
          ("2"
           (hide (-2 4 5 6))
           (skosimp)
           (inst -1 "i!1 + 1")
           (("1"
             (lemma "rest_pos")
             (inst?)
             (assert)
             (inst -1 "i!1")
             (("1" (expand "finseq_appl") (assert))
              ("2" (hide (-1 2 3)) (typepred "i!1") (grind))))
            ("2" (hide (2 3 4)) (typepred "i!1") (grind))))
          ("3" (hide-all-but 1) (grind))))))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (measure-induct+ "length(fs)" "fs")
   (skosimp)
   (expand* "member" "finseq_appl")
   (case "length(x!1) = 0")
   (("1" (hide (-2 -3)) (expand "fseq_product") (assert))
    ("2"
     (inst -1 "rest(x!1)")
     (inst?)
     (prop)
     (("1" (expand "fseq_product" 2) (assert))
      ("2"
       (case "length(rest(x!1)) = 0")
       (("1" (hide (-2 1)) (expand "fseq_product") (assert))
        ("2"
         (hide 4)
         (skosimp)
         (typepred "i!1")
         (inst -2 "i!1 + 1")
         (("1"
           (lemma "rest_pos")
           (inst?)
           (assert)
           (inst -1 "i!1")
           (("1" (expand "finseq_appl") (assert))
            ("2" (hide (-2 3)) (grind))))
          ("2" (hide 3) (grind))))))
      ("3" (hide (-1 3)) (rewrite "length_rest"))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (measure-induct+ "length(fs)" "fs")
   (skosimp)
   (case "length(x!1) = 0")
   (("1"
     (hide (-2 -3))
     (expand "fseq_product")
     (assert)
     (replaces -1)
     (rewrite "expt_0"))
    ("2"
     (inst -1 "rest(x!1)")
     (inst -1 "G!1" "g!1")
     (prop)
     (("1"
       (expand "fseq_product" 2)
       (assert)
       (replaces -1)
       (expand "same_element")
       (inst?)
       (replaces -1)
       (lemma "expt_mult")
       (inst -1 "g!1" "1" "length(rest(x!1))")
       (rewrite "expt_1")
       (replaces -1)
       (case-replace "1 + length(rest(x!1)) = length(x!1)")
       (hide 3)
       (grind))
      ("2"
       (hide 3)
       (case "length(rest(x!1)) = 0")
       (("1" (hide (-2 2)) (expand "same_element") (grind))
        ("2"
         (expand "same_element")
         (skosimp)
         (inst -1 "i!1 + 1")
         (("1"
           (lemma "rest_pos")
           (inst?)
           (assert)
           (inst -1 "i!1")
           (("1" (expand "finseq_appl") (assert))
            ("2" (hide-all-but 1) (typepred "i!1") (grind))))
          ("2" (hide-all-but 1) (typepred "i!1") (grind))))))
      ("3" (hide (-1 3)) (grind))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "member")
   (expand "SE")
   (expand "extend")
   (prop)
   (("1" (inst?) (rewrite "one_in"))
    ("2"
     (expand "S")
     (assert)
     (prop)
     (("1"
       (skosimp)
       (expand "same_element")
       (inst?)
       (replaces -2)
       (rewrite "one_in"))
      ("2"
       (lemma "fseq_product_power")
       (inst -1 "G!1" "fs!1" "one")
       (("1" (assert) (replaces -2) (rewrite "one_expt"))
        ("2" (rewrite "one_in"))))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "member")
   (expand "SE")
   (expand "extend")
   (assert)
   (prop)
   (hide -2)
   (expand "S")
   (flatten)
   (hide -2)
   (lemma "fseq_product_power")
   (inst?)
   (assert)
   (replaces -2)
   (replaces -2)
   (lemma "one_iff_divides[T,*,one]")
   (("1"
     (inst?)
     (assert)
     (expand "prime?")
     (prop)
     (inst?)
     (assert)
     (prop)
     (hide (-1 -2 -4 -5 2))
     (lemma "period_is_generated_order")
     (inst?)
     (assert)
     (replaces -2)
     (expand "order")
     (lemma "generated_by_card_1")
     (inst -1 "G!1" "g!1")
     (assert))
    ("2" (hide-all-but 1) (rewrite "fullset_is_group"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (skoletin* 1)
   (inst 1 "(LAMBDA (s:(A)): add_first(inv(fseq_product(s)), s))")
   (("1"
     (expand "bijective?")
     (prop)
     (("1"
       (expand "injective?")
       (skosimp*)
       (lemma "first_equal")
       (inst -1 "x1!1" "x2!1" "inv(fseq_product(x1!1))"
        "inv(fseq_product(x2!1))")
       (assert))
      ("2"
       (expand "surjective?")
       (skosimp*)
       (typepred "y!1")
       (replaces -2)
       (expand "S")
       (flatten)
       (case "length(rest(y!1))=0")
       (("1"
         (inst 1 "rest(y!1)")
         (("1"
           (expand "fseq_product")
           (assert)
           (expand "finseq_appl")
           (expand "fseq_product" -4)
           (lemma "length_rest_0")
           (inst?)
           (assert)
           (hide (-3 -4 -6))
           (rewrite "empty_0")
           (replaces -2)
           (rewrite "add_first_empty_seq")
           (decompose-equality 1)
           (("1" (grind))
            ("2"
             (decompose-equality 1)
             (typepred "x!1")
             (expand "#" -1)
             (grind))))
          ("2"
           (replaces -5)
           (hide (-3 -4))
           (lemma "length_rest_0")
           (inst?)
           (assert)
           (replaces -1)
           (replace -2 1 rl)
           (assert)
           (expand "set_seq")
           (skosimp))))
        ("2"
         (inst 2 "rest(y!1)")
         (("1"
           (hide -4)
           (expand "fseq_product" -3)
           (lift-if)
           (assert)
           (expand "finseq_appl")
           (case-replace "inv(fseq_product(rest(y!1))) = y!1`seq(0)"
            :hide? T)
           (("1"
             (lemma "seq_first_rest")
             (inst?)
             (assert)
             (expand* "first" "finseq_appl")
             (assert))
            ("2"
             (hide (-1 -2 3))
             (lemma "divby")
             (inst -1 "one" "y!1`seq(0)" "fseq_product(rest(y!1))")
             (assert)
             (replace -1 1 rl)
             (rewrite "inv_inv"))))
          ("2"
           (replaces -4)
           (expand "set_seq")
           (prop)
           (("1" (hide (-2 -3)) (grind))
            ("2"
             (skosimp)
             (expand* "member" "finseq_appl")
             (inst -2 "i!1 + 1")
             (lemma "rest_pos")
             (inst?)
             (prop)
             (expand "finseq_appl")
             (inst -1 "i!1")
             (("1" (assert))
              ("2" (hide (-2 -3 2)) (typepred "i!1") (assert))))))))))))
    ("2"
     (skosimp)
     (typepred "s!1")
     (replaces -2)
     (replaces -2)
     (expand* "set_seq" "S")
     (prop)
     (("1" (hide -2) (expand "add_first") (expand "insert?") (assert))
      ("2"
       (skosimp)
       (expand* "member" "finseq_appl")
       (expand "add_first")
       (expand "insert?")
       (prop)
       (("1"
         (rewrite "inv_in")
         (hide 2)
         (lemma "fseq_product_in")
         (inst -1 "G!1" "s!1")
         (expand* "member" "finseq_appl")
         (skosimp)
         (inst?))
        ("2" (expand "finseq_appl") (inst?) (assert))))
      ("3"
       (expand "fseq_product" 1 1)
       (lift-if)
       (prop)
       (expand "finseq_appl")
       (rewrite "rest_add_first")
       (expand "add_first")
       (expand "insert?")
       (lemma "fseq_product_one")
       (inst -1 "G!1" "s!1")
       (assert))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (case "n!1 = 0")
   (("1"
     (replaces -1)
     (case-replace "S(G!1)(0) = singleton(empty_seq)" :hide? T)
     (("1" (rewrite "finite_singleton"))
      ("2"
       (hide 2)
       (decompose-equality 1)
       (iff)
       (prop)
       (("1" (expand* "S" "singleton") (rewrite "empty_0") (assert))
        ("2"
         (expand* "S" "singleton")
         (lemma "empty_0")
         (inst?)
         (assert)
         (prop)
         (("1" (skosimp)) ("2" (expand "fseq_product") (propax))))))))
    ("2"
     (lemma "S_bij_set_seq")
     (inst?)
     (("1"
       (assert)
       (lemma "set_seq_is_finite")
       (inst -1 "G!1" "n!1-1")
       (("1"
         (assert)
         (lemma "bijection_finite_set2[finseq,finseq]")
         (inst -1 "set_seq(G!1)(n!1-1)" "S(G!1)(n!1)")
         (assert))
        ("2"
         (hide (-1 2 3))
         (typepred "G!1")
         (expand "finite_group?")
         (assert))))
      ("2" (assert))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (lemma "S_bij_set_seq")
   (inst?)
   (assert)
   (lemma "set_seq_is_finite")
   (inst -1 "G!1" "p!1-1")
   (assert)
   (lemma "card_eq_bij[finseq,finseq]")
   (inst?)
   (prop)
   (hide (-2 -3 -4))
   (lemma "card_set_seq")
   (inst?)
   (assert))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (typepred "fs!1")
   (expand "S")
   (flatten)
   (hide (-2 -3))
   (decompose-equality 1)
   (("1" (expand* "o" "F" "F_1" "F_2") (assert))
    ("2"
     (decompose-equality 1)
     (expand* "o" "F" "F_1" "F_2")
     (lift-if)
     (assert)
     (prop)
     (case "x!1 = 0")
     (("1" (assert))
      ("2"
       (replaces -1)
       (lemma "rem_sum_floor")
       (inst?)
       (lemma "rem_mod")
       (inst -1 "p!1" "k!1")
       (replaces -1)
       (case-replace "floor((k!1 + x!1) / p!1) = 1" :hide? T)
       (("1" (assert))
        ("2"
         (hide (-1 4))
         (lemma "floor_val")
         (inst?)
         (assert)
         (hide 2)
         (typepred "k!1" "x!1")
         (hide -2)
         (expand "F")
         (lemma "lt_plus_lt2")
         (inst -1 "p!1" "k!1" "p!1" "x!1")
         (assert))))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (typepred "fs!1")
   (expand "S")
   (flatten)
   (hide (-2 -3))
   (decompose-equality 1)
   (("1" (expand* "o" "F" "F_1" "F_2"))
    ("2"
     (decompose-equality 1)
     (expand* "o" "F" "F_1" "F_2")
     (lift-if)
     (prop)
     (typepred "x!1")
     (replaces -2)
     (rewrite "rem_mod"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "member")
   (expand "S")
   (prop)
   (("1" (expand "F") (propax))
    ("2"
     (skosimp)
     (expand "member")
     (expand "F")
     (prop)
     (("1" (typepred "fs!1") (expand "S") (flatten) (inst?) (assert))
      ("2"
       (typepred "i!1")
       (typepred "k!1")
       (typepred "fs!1")
       (expand "S")
       (flatten)
       (inst?)
       (("1" (assert)) ("2" (assert))))))
    ("3"
     (lemma "F_o_F12")
     (inst?)
     (replaces -1)
     (lemma "fseq_product_o")
     (inst -1 "G!1" "F_1(fs!1)(k!1)" "F_2(fs!1)(k!1)")
     (prop)
     (("1"
       (replaces -1)
       (lemma "one_left")
       (inst -1 "fseq_product(F_1(fs!1)(k!1))")
       (replace -1 1 rl)
       (hide -1)
       (lemma "inv_left")
       (inst -1 "fseq_product(F_2(fs!1)(k!1))")
       (replace -1 1 rl)
       (hide -1)
       (lemma "fseq_product_o")
       (inst -1 "G!1" "F_2(fs!1)(k!1)" "F_1(fs!1)(k!1)")
       (prop)
       (("1"
         (lemma "fs_o_F21")
         (inst?)
         (replace -1 -2 rl)
         (hide -1)
         (rewrite "associative")
         (replace -1 1 rl)
         (typepred "fs!1")
         (expand "S")
         (flatten)
         (hide (-1 -2 -4))
         (replaces -1)
         (assert))
        ("2"
         (hide 2)
         (skosimp)
         (expand "member")
         (expand "F_2")
         (typepred "fs!1")
         (expand "S")
         (flatten)
         (inst?)
         (("1" (assert)) ("2" (hide (-2 2)) (typepred "i!1") (grind))))
        ("3"
         (hide 2)
         (skosimp)
         (expand "member")
         (expand "F_1")
         (typepred "fs!1")
         (expand "S")
         (flatten)
         (inst?)
         (("1" (assert))
          ("2"
           (hide (-2 2))
           (typepred "j!1")
           (typepred "k!1")
           (grind))))))
      ("2"
       (hide 2)
       (skosimp)
       (expand "member")
       (expand "F_1")
       (typepred "fs!1")
       (expand "S")
       (flatten)
       (inst?)
       (("1" (assert))
        ("2" (hide (-2 2)) (typepred "i!1") (typepred "k!1") (grind))))
      ("3"
       (hide 2)
       (skosimp)
       (expand "member")
       (expand "F_2")
       (typepred "fs!1")
       (expand "S")
       (flatten)
       (inst?)
       (("1" (assert)) ("2" (hide (-2 2)) (typepred "j!1") (grind))))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "group_action?")
   (skosimp)
   (prop)
   (("1"
     (decompose-equality 1)
     (("1" (expand "F") (typepred "x!1") (expand "S") (assert))
      ("2"
       (decompose-equality 1)
       (expand "F")
       (typepred "x!2")
       (expand "F")
       (rewrite "rem_mod"))))
    ("2"
     (expand "++")
     (decompose-equality 1)
     (("1" (expand "F") (propax))
      ("2"
       (decompose-equality 1)
       (expand "F")
       (assert)
       (rewrite "rem_sum1")
       (rewrite "rem_sum1"))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "SE")
   (decompose-equality 1)
   (iff)
   (prop)
   (("1"
     (expand "Fix")
     (expand "extend")
     (prop)
     (hide -1)
     (inst 1 "x!1`seq(0)")
     (("1"
       (expand "same_element")
       (skosimp)
       (inst -2 "i!1")
       (("1"
         (expand "F")
         (decompose-equality -2)
         (decompose-equality -2)
         (inst?)
         (assert)
         (typepred "i!1")
         (replace -3 -1 rl)
         (rewrite "rem_mod"))
        ("2"
         (expand "S")
         (flatten)
         (hide (-2 -3 2))
         (typepred "i!1")
         (expand "Zn")
         (expand "restrict")
         (assert))))
      ("2"
       (hide -2)
       (expand "S")
       (flatten)
       (hide (-1 -3))
       (inst?)
       (expand "member")
       (propax))
      ("3" (hide -2) (expand "S") (assert))))
    ("2"
     (expand "Fix")
     (expand "extend")
     (prop)
     (skosimp)
     (hide -1)
     (expand "F")
     (decompose-equality 1)
     (("1" (expand "S") (propax))
      ("2"
       (decompose-equality 1)
       (("1"
         (skosimp)
         (expand "same_element")
         (copy -2)
         (inst -1 "rem(p!1)(g!1 + x!2)")
         (inst -3 "x!2")
         (("1" (assert)) ("2" (hide (-1 2)) (expand "S") (assert))))
        ("2"
         (hide -2)
         (skosimp)
         (expand "S")
         (flatten)
         (hide (-2 -3))
         (replaces -1)
         (assert))))
      ("3"
       (hide -2)
       (prop)
       (("1"
         (skosimp)
         (expand "S")
         (flatten)
         (hide (-2 -3))
         (replaces -1)
         (assert))
        ("2" (expand "S") (assert))))
      ("4"
       (hide -2)
       (skosimp)
       (expand "S")
       (flatten)
       (hide (-2 -3))
       (assert))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (expand "order")
   (lemma "Fix_congruence[below(p!1),++,0,finseq]")
   (inst -1 "Zn[p!1]" "S(G!1)(p!1)" "1" "p!1" "F(p!1,G!1)")
   (("1"
     (prop)
     (("1"
       (lemma "S_card")
       (inst -1 "G!1" "p!1")
       (lemma "Fixed_subset")
       (inst -1 "G!1" "p!1")
       (assert)
       (replaces -1)
       (replaces -1)
       (lemma "order_gt_1[T,*,one]")
       (("1"
         (inst -1 "p!1" "G!1")
         (expand "order")
         (expand "divides")
         (skosimp*)
         (case "x!2 > 0")
         (("1"
           (case "card(SE(G!1)(p!1)) = (p!1 * x!2) ^ (p!1 - 1) - p!1 * x!1")
           (("1"
             (hide -4)
             (rewrite "mult_expt")
             (lemma "expt_plus")
             (inst -1 "1" "p!1 - 2" "p!1")
             (assert)
             (rewrite "expt_x1")
             (replaces -1)
             (rewrite "associative_mult" :dir rl)
             (lemma "distributive")
             (inst -1 "p!1" "(p!1 ^ (p!1 - 2)) * x!2 ^ (p!1 - 1)"
              "- x!1")
             (replace -1 -2 rl)
             (hide -1)
             (case "divides(p!1, card(SE(G!1)(p!1)))")
             (("1"
               (hide -2)
               (case "card(SE(G!1)(p!1)) > 1")
               (("1"
                 (hide -2)
                 (lemma "card_2_has_2[finseq]")
                 (inst?)
                 (assert)
                 (skosimp)
                 (case "same_element(one, y!1)")
                 (("1"
                   (inst 2 "x!3`seq(0)")
                   (("1"
                     (lemma "order_SE")
                     (inst -1 "G!1" "x!3" "p!1" "x!3`seq(0)")
                     (assert)
                     (hide (-4 -5 -6 -7 -8 3))
                     (prop)
                     (("1"
                       (decompose-equality 1)
                       (("1"
                         (hide (-1 -2))
                         (expand "SE")
                         (expand "extend")
                         (prop)
                         (hide (-2 -4))
                         (expand "S")
                         (flatten)
                         (hide (-2 -3 -5 -6))
                         (assert))
                        ("2"
                         (decompose-equality 1)
                         (expand "same_element")
                         (inst -2 "x!4")
                         (replaces -2)
                         (hide -3)
                         (expand "SE")
                         (expand "extend")
                         (prop)
                         (hide -1)
                         (skosimp)
                         (expand "same_element")
                         (inst-cp -1 "x!4")
                         (inst -1 "0")
                         (assert))))
                      ("2"
                       (hide (-1 -3 2))
                       (expand "SE")
                       (expand "extend")
                       (prop)
                       (hide -1)
                       (skosimp)
                       (expand "same_element")
                       (skosimp)
                       (inst-cp -1 "i!1")
                       (inst -1 "0")
                       (assert))))
                    ("2"
                     (hide (-1 -3 -4 -5 -6 -7 -8 2))
                     (expand "SE")
                     (expand "extend")
                     (prop)
                     (hide -1)
                     (skosimp)
                     (expand "same_element")
                     (inst?)
                     (assert))
                    ("3"
                     (hide (-1 -3 -4 -5 -6 -7 -8 2))
                     (expand "SE")
                     (expand "extend")
                     (prop)
                     (hide -2)
                     (expand "S")
                     (assert))))
                  ("2"
                   (hide (-3 -4 -5 -6 -7))
                   (inst 3 "y!1`seq(0)")
                   (("1"
                     (lemma "order_SE")
                     (inst -1 "G!1" "y!1" "p!1" "y!1`seq(0)")
                     (assert)
                     (hide (-1 3 4))
                     (prop)
                     (("1"
                       (expand* "SE" "same_element" "extend")
                       (prop)
                       (skosimp*)
                       (hide -1)
                       (inst-cp -1 "i!1")
                       (inst -1 "0")
                       (assert))
                      ("2"
                       (hide 2)
                       (expand* "SE" "same_element" "extend")
                       (prop)
                       (hide -1)
                       (skosimp*)
                       (inst-cp -1 "i!1")
                       (inst -1 "0")
                       (assert))))
                    ("2"
                     (hide (-1 2 3))
                     (expand "SE")
                     (expand "extend")
                     (prop)
                     (hide -1)
                     (skosimp)
                     (expand "same_element")
                     (inst?)
                     (assert))
                    ("3"
                     (hide (-1 2 3))
                     (expand "SE")
                     (expand "extend")
                     (prop)
                     (hide -2)
                     (expand "S")
                     (assert))))))
                ("2"
                 (hide 2)
                 (expand "divides")
                 (skosimp)
                 (typepred "card(SE(G!1)(p!1))")
                 (replaces -1)
                 (typepred "Card[finseq[T]](SE(G!1)(p!1))")
                 (case "Card[finseq[T]](SE(G!1)(p!1)) = 0")
                 (("1"
                   (hide (-2 -3 -4 -5 1))
                   (lemma "empty_card[finseq]")
                   (inst?)
                   (assert)
                   (hide -2)
                   (expand "empty?")
                   (lemma "one_in_SE")
                   (inst -1 "G!1"
                    "(# length := p!1, seq := (LAMBDA (i: below[p!1]): one) #)"
                    "p!1")
                   (expand "same_element")
                   (expand "member")
                   (inst -2
                    "(# length := p!1, seq := (LAMBDA (i: below[p!1]): one) #)"))
                  ("2"
                   (case "Card[finseq[T]](SE(G!1)(p!1)) = 1")
                   (("1"
                     (replaces -3)
                     (case "x!3 <= 0")
                     (("1"
                       (expand "<=")
                       (prop)
                       (("1" (lemma "neg_times_ge") (inst?) (assert))
                        ("2" (assert))))
                      ("2"
                       (expand "<=")
                       (flatten)
                       (lemma "prime_gt_1")
                       (inst -1 "p!1")
                       (assert)
                       (lemma "eq1_gt")
                       (inst?)
                       (assert))))
                    ("2" (assert))))))))
              ("2"
               (hide 2)
               (expand "divides")
               (inst?)
               (hide -1)
               (hide -2)
               (lemma "prime_gt_1")
               (inst?)
               (assert)
               (hide -3)
               (grind))))
            ("2" (hide (-1 -2 -4 2)) (replaces -2) (assert))))
          ("2"
           (hide (-2 2))
           (lemma "prime_gt_1")
           (inst -1 "p!1")
           (prop)
           (hide -3)
           (replaces -3)
           (lemma "pos_times_gt")
           (inst?)
           (assert))))
        ("2" (rewrite "fullset_is_group"))))
      ("2"
       (hide (-2 2))
       (expand "finite_group?")
       (rewrite "Zn_group")
       (rewrite "Zn_finite"))
      ("3"
       (hide (-2 2))
       (expand "order")
       (rewrite "expt_x1")
       (rewrite "Zn_card"))
      ("4" (hide (-1 -2 2)) (rewrite "S_is_finite"))
      ("5"
       (hide (-1 -2 2))
       (expand "nonempty?")
       (expand "empty?")
       (inst -1
        "(# length := p!1, seq := (LAMBDA (i: below[p!1]): one) #)")
       (expand "member")
       (expand "S")
       (prop)
       (("1" (skosimp) (expand "member") (rewrite "one_in"))
        ("2"
         (lemma "fseq_product_power")
         (inst -1 "G!1"
          "(# length := p!1, seq := (LAMBDA (i: below[p!1]): one) #)"
          "one")
         (("1" (expand "same_element") (rewrite "one_expt"))
          ("2" (hide 2) (rewrite "one_in"))))))
      ("6" (hide (-1 -2 2)) (rewrite "F_is_action"))))
    ("2"
     (hide (-1 -2 2))
     (skosimp)
     (lemma "F_in_S")
     (inst -1 "G!1" "p!1" "x1!1`1" "x1!1`2")
     (expand "member")
     (assert))
    ("3" (hide (-1 -2 2)) (rewrite "Zn_group"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (lemma "cauchy")
   (inst?)
   (assert)
   (skosimp)
   (inst 1 "generated_by(x!1)")
   (("1" (rewrite "period_is_generated_order"))
    ("2" (rewrite "generated_is_subgroup"))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "F_in_S")
   (inst -1 "G!1" "p!1" "x1!1`1" "x1!1`2")
   (expand "member")
   (assert))


proof_type: t_proof
decl_type: tcc
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (case-replace "fullset[below(p!1)] = Zn[p!1]")
   (("1" (rewrite "Zn_group"))
    ("2"
     (hide 2)
     (decompose-equality 1)
     (expand "fullset")
     (expand "Zn[p!1]")
     (expand "restrict")
     (assert))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (prop)
   (("1" (skosimp) (replaces -1) (assert))
    ("2" (skosimp) (replaces -2) (assert))
    ("3"
     (skosimp)
     (replaces -2)
     (replaces -2)
     (lemma "F_in_S")
     (inst -1 "G!1" "p!1" "x1!1`1" "x1!1`2")
     (expand "member")
     (assert))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: cauchy
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (hide (-1 -2))
   (typepred "G!1" "H!1")
   (expand "group?")
   (expand "monoid?")
   (flatten)
   (lemma "finite_subgroups")
   (inst?)
   (assert)
   (hide (-2 -4 -5 -6))
   (expand* "finite_group?" "finite_monad?"))


proof_type: f_proof
decl_type: formula
library: groups
theory: normalizer_centralizer
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "subgroup_def")
   (inst -1 "G!1" "normalizer(G!1,H!1)")
   (assert)
   (hide 2)
   (prop)
   (("1"
     (expand "nonempty?")
     (expand "empty?")
     (expand "member")
     (inst - "one")
     (expand "normalizer")
     (expand "extend")
     (ground)
     (("1" (rewrite "left_coset_one") (rewrite "right_coset_one"))
      ("2" (rewrite "one_in"))))
    ("2"
     (expand "star_closed?")
     (expand "member")
     (skosimp*)
     (typepred "x!1" "y!1")
     (expand "normalizer")
     (expand "extend")
     (ground)
     (("1"
       (rewrite "inv_star")
       (hide (-1 -2 -4 -6))
       (rewrite "right_coset_assoc" :dir rl)
       (rewrite "left_coset_assoc" :dir rl)
       (rewrite "lr_coset_assoc")
       (replace -2 1)
       (propax))
      ("2" (hide (-2 -4 -5)) (rewrite "product_in"))))
    ("3"
     (expand "inv_closed?")
     (skosimp*)
     (expand "member")
     (typepred "x!1")
     (expand "normalizer")
     (expand "extend")
     (ground)
     (("1"
       (replace -3 1 rl)
       (rewrite "lr_coset_assoc")
       (rewrite "lr_coset_assoc")
       (rewrite "lr_coset_assoc")
       (rewrite "right_coset_assoc")
       (rewrite "right_coset_one")
       (rewrite "left_coset_assoc")
       (rewrite "left_coset_one")
       (assert))
      ("2" (hide (-2 -3)) (rewrite "inv_in"))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: normalizer_centralizer
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (copy -1)
   (expand "subgroup?" -1)
   (expand* "subset?" "member")
   (skosimp)
   (inst?)
   (assert)
   (expand "normalizer")
   (expand "extend")
   (lemma "lc_is_eq")
   (inst -1 "G!1" "H!1" "inv(x!1)" "one")
   (assert)
   (prop)
   (("1"
     (rewrite "left_coset_one")
     (replaces -1)
     (lemma "rc_is_eq")
     (inst -1 "G!1" "H!1" "x!1" "one")
     (assert)
     (prop)
     (("1" (rewrite "right_coset_one")) ("2" (hide (-1 -2 2)) (inst?))))
    ("2"
     (hide (-1 -2 2))
     (inst 1 "inv(x!1)")
     (lemma "inv_in")
     (inst -1 "H!1" "x!1"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: normalizer_centralizer
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "normal_subgroup?")
   (prop)
   (("1" (expand "subgroup?" 1) (rewrite "subset_of_normalizer"))
    ("2"
     (skosimp)
     (typepred "a!1")
     (expand "normalizer")
     (expand "extend")
     (ground)
     (decompose-equality -2)
     (expand* "subset?" "member")
     (skosimp)
     (inst?)
     (iff)
     (assert))))


proof_type: f_proof
decl_type: formula
library: groups
theory: normalizer_centralizer
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "subgroup_def")
   (inst?)
   (assert)
   (hide 2)
   (prop)
   (("1"
     (expand "nonempty?")
     (expand "empty?")
     (expand "member")
     (inst - "one")
     (grind)
     (rewrite "one_in"))
    ("2"
     (expand "centralizer")
     (expand "star_closed?")
     (expand "member")
     (skosimp*)
     (typepred "x!1" "y!1")
     (expand "extend")
     (ground)
     (("1"
       (hide (-1 -2 -4))
       (rewrite "assoc" :dir rl)
       (replaces -1)
       (rewrite "assoc")
       (replaces -1)
       (rewrite "assoc" :dir rl))
      ("2" (hide (-2 -4)) (rewrite "product_in"))))
    ("3"
     (expand "inv_closed?")
     (skosimp*)
     (expand "member")
     (expand "centralizer")
     (typepred "x!1")
     (expand "centralizer")
     (expand "extend")
     (ground)
     (("1"
       (lemma "divby")
       (inst -1 "a!1 * x!1" "x!1" "a!1")
       (assert)
       (replace -1 1 rl)
       (rewrite "assoc" :dir rl)
       (rewrite "assoc" :dir rl)
       (replace -4 1 rl)
       (rewrite "assoc")
       (rewrite "assoc"))
      ("2" (rewrite "inv_in"))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: normalizer_centralizer
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (prop)
   (("1"
     (expand* "member" "center")
     (expand "extend" 1)
     (skosimp)
     (case "EXISTS (z:(G!1)): x!1 /= z * x!1 * inv(z)")
     (("1"
       (skosimp)
       (decompose-equality -1)
       (inst -1 "z!1 * x!1 * inv(z!1)")
       (iff)
       (prop)
       (("1"
         (expand "CL")
         (expand "extend")
         (prop)
         (expand "singleton")
         (assert))
        ("2"
         (expand "extend")
         (prop)
         (("1"
           (expand "singleton")
           (expand "CL")
           (expand "extend")
           (assert)
           (inst 2 "z!1"))
          ("2"
           (hide-all-but 1)
           (typepred "z!1" "x!1")
           (lemma "inv_in")
           (inst?)
           (rewrite "product_in")
           (rewrite "product_in"))))))
      ("2"
       (inst 1 "x!2")
       (prop)
       (hide -2)
       (lemma "cancel_right_inv")
       (inst -1 "x!1" "x!2 * x!1 * inv(x!2)" "inv(x!2)")
       (prop)
       (rewrite "inv_inv")
       (rewrite "associative")
       (rewrite "associative")
       (rewrite "associative")
       (assert))))
    ("2"
     (expand* "member" "center")
     (expand "extend")
     (decompose-equality 1)
     (iff)
     (prop)
     (("1"
       (expand "singleton")
       (expand "CL")
       (expand "extend")
       (assert)
       (skosimp)
       (inst -3 "g!1")
       (replaces -3)
       (rewrite "associative"))
      ("2" (expand "CL") (expand "extend") (assert))
      ("3"
       (expand "CL")
       (expand "extend")
       (assert)
       (expand "singleton")
       (inst 1 "one")
       (("1"
         (rewrite "inv_one")
         (rewrite "one_left")
         (rewrite "one_right"))
        ("2" (rewrite "one_in"))))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: normalizer_centralizer
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "group_action?")
   (skosimp*)
   (prop)
   (("1"
     (expand "a_by_c")
     (rewrite "inv_one")
     (rewrite "one_left")
     (rewrite "one_right"))
    ("2"
     (expand "a_by_c")
     (rewrite "inv_star")
     (rewrite "assoc")
     (rewrite "assoc")
     (rewrite "assoc"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: normalizer_centralizer
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (decompose-equality 1)
   (iff)
   (prop)
   (("1"
     (expand* "Fix" "center")
     (expand "extend")
     (prop)
     (expand "a_by_c")
     (skosimp)
     (inst?)
     (hide (-1 -2 -4))
     (name-replace "x!3" "x!2 * x!1" :hide? T)
     (replace -1 1 rl)
     (rewrite "assoc" :dir rl))
    ("2"
     (expand* "Fix" "center")
     (expand "extend")
     (prop)
     (expand "a_by_c")
     (skosimp)
     (inst?)
     (hide (-1 -2 -4))
     (replaces -1)
     (rewrite "assoc" :dir rl))))


proof_type: f_proof
decl_type: formula
library: groups
theory: normalizer_centralizer
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (decompose-equality 1)
   (iff)
   (prop)
   (("1"
     (expand* "stabilizer" "centralizer")
     (expand "extend")
     (prop)
     (expand "a_by_c")
     (hide (-1 -2))
     (name-replace "x!3" "x!2 * x!1" :hide? T)
     (replace -1 1 rl)
     (rewrite "assoc" :dir rl))
    ("2"
     (expand* "stabilizer" "centralizer")
     (expand "extend")
     (prop)
     (expand "a_by_c")
     (hide (-1 -2))
     (replaces -1)
     (rewrite "assoc" :dir rl))))


proof_type: f_proof
decl_type: formula
library: groups
theory: normalizer_centralizer
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (decompose-equality 1)
   (iff)
   (expand* "orbits" "orbit" "CLs" "CL" "a_by_c" "extend"))


proof_type: f_proof
decl_type: formula
library: groups
theory: normalizer_centralizer
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (decompose-equality 1)
   (iff)
   (expand* "orbits_nFix" "CLs_nc")
   (expand "extend")
   (lift-if)
   (lift-if)
   (lift-if)
   (lemma "Fix_is_center")
   (inst?)
   (prop)
   (("1"
     (skosimp)
     (inst?)
     (("1" (rewrite "orbit_is_CL"))
      ("2" (hide (-2 -3 -4)) (typepred "x!2") (assert))))
    ("2"
     (skosimp)
     (inst?)
     (("1" (rewrite "orbit_is_CL"))
      ("2" (hide (-2 -3 -4)) (typepred "x!2") (assert))))
    ("3" (skosimp) (hide (-1 -3)) (rewrite "orbits_is_CLs"))
    ("4" (skosimp) (rewrite "orbits_is_CLs"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: normalizer_centralizer
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (typepred "G!1")
   (expand "finite_group?")
   (flatten)
   (hide -1)
   (lemma "orbits_eq_index")
   (inst -1 "G!1" "G!1" "x!1" "a_by_c(G!1,G!1)")
   (("1"
     (assert)
     (prop)
     (("1" (rewrite "stabilizer_is_centralizer") (rewrite "orbit_is_CL"))
      ("2"
       (hide (-1 2))
       (rewrite "a_by_c_is_action")
       (hide 2)
       (rewrite "group_is_subgroup"))))
    ("2" (hide (-1 2)) (rewrite "group_is_subgroup"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: normalizer_centralizer
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (typepred "G!1")
   (expand "finite_group?")
   (flatten)
   (hide -1)
   (lemma "class_equation")
   (inst -1 "G!1" "G!1" "a_by_c(G!1,G!1)")
   (("1"
     (assert)
     (prop)
     (("1"
       (rewrite "Fix_is_center")
       (rewrite "orbits_nFix_is_CLs_nc")
       (expand "order")
       (propax))
      ("2"
       (hide (-1 2))
       (expand* "nonempty?" "empty?" "member")
       (inst -1 "one")
       (rewrite "one_in"))
      ("3"
       (hide 2)
       (lemma "a_by_c_is_action")
       (inst -1 "G!1" "G!1")
       (assert)
       (hide (-1 2))
       (rewrite "group_is_subgroup"))))
    ("2" (hide (-1 2)) (rewrite "group_is_subgroup"))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: normalizer_centralizer
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (typepred "h!1")
   (typepred "H!1")
   (hide -1)
   (expand "subgroup?")
   (expand* "subset?" "member")
   (inst -1 "h!1")
   (assert)
   (hide -2)
   (rewrite "product_in")
   (("1" (rewrite "product_in")) ("2" (rewrite "inv_in"))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: normalizer_centralizer
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (lemma "normalizer_is_subgroup")
   (inst?)
   (assert)
   (expand "subgroup?")
   (propax))


proof_type: t_proof
decl_type: tcc
library: groups
theory: normalizer_centralizer
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (lemma "centralizer_is_subgroup")
   (inst?)
   (assert)
   (lemma "subgroup_is_group")
   (inst?)
   (assert))


proof_type: t_proof
decl_type: tcc
library: groups
theory: normalizer_centralizer
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (lemma "orbit_is_CL")
   (inst?)
   (replace -1 1 rl)
   (hide -1)
   (typepred "G!1")
   (expand "finite_group?")
   (flatten)
   (hide -1)
   (rewrite "orbit_is_finite")
   (hide (-1 2))
   (rewrite "a_by_c_is_action")
   (hide 2)
   (rewrite "group_is_subgroup"))


proof_type: t_proof
decl_type: tcc
library: groups
theory: normalizer_centralizer
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (lemma "center_subgroup")
   (inst?)
   (expand "subgroup?")
   (typepred "G!1")
   (expand "finite_group?")
   (flatten)
   (hide (-1 -4))
   (lemma "finite_subset[T]")
   (inst?)
   (assert))


proof_type: t_proof
decl_type: tcc
library: groups
theory: normalizer_centralizer
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (case "empty?(CLs_nc(G!1))")
   (("1"
     (case-replace
      "restrict[setof[T], finite_set[T], boolean](CLs_nc(G!1)) = emptyset"
      :hide? T)
     (("1" (rewrite "convergent_empty"))
      ("2"
       (hide 2)
       (decompose-equality 1)
       (expand "restrict")
       (expand* "emptyset" "empty?" "member")
       (inst -2 "x!1"))))
    ("2"
     (lemma "card_partition_TCC2")
     (inst?)
     (("1"
       (assert)
       (hide 3)
       (expand "nonempty?")
       (hide 2)
       (skosimp)
       (typepred "A!1")
       (expand "CLs_nc")
       (expand "extend")
       (prop)
       (hide -2)
       (expand "CLs")
       (skosimp)
       (replaces -1)
       (lemma "orbit_is_CL")
       (inst?)
       (replace -1 -2 rl)
       (hide -1)
       (lemma "orbit_nonempty")
       (inst?)
       (prop)
       (("1" (expand "nonempty?") (rewrite "empty_card"))
        ("2"
         (hide -1)
         (rewrite "a_by_c_is_action")
         (hide 2)
         (rewrite "group_is_subgroup"))))
      ("2"
       (hide (2 3))
       (lemma "orbits_nFix_is_CLs_nc")
       (inst?)
       (replace -1 1 rl)
       (hide -1)
       (typepred "G!1")
       (expand "finite_group?")
       (flatten)
       (hide -1)
       (lemma "orbits_nFix_partition")
       (inst?)
       (assert)
       (hide (-1 2))
       (rewrite "a_by_c_is_action")
       (hide 2)
       (rewrite "group_is_subgroup"))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: p_groups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "group_action?")
   (skosimp*)
   (prop)
   (("1" (expand "alt") (rewrite "left_coset_one"))
    ("2" (expand "alt") (rewrite "left_coset_assoc"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: p_groups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand* "subset?" "member" "Fix" "alt")
   (expand "extend")
   (prop)
   (("1"
     (skosimp)
     (inst -2 "x!1")
     (rewrite "left_coset_assoc")
     (lemma "lc_eq")
     (inst -1 "G!1" "K!1" "x!1 * g!1" "g!1")
     (assert)
     (skosimp)
     (hide (-2 -3 -4))
     (expand "*" 1)
     (inst 1 "g!1 * h!1")
     (("1" (replace -1 1 rl) (rewrite "assoc" :dir rl)) ("2" (inst?))))
    ("2"
     (skosimp)
     (typepred "g!2")
     (inst?)
     (assert)
     (expand "*" -3)
     (skosimp)
     (hide -1)
     (rewrite "left_coset_assoc")
     (lemma "lc_is_eq")
     (inst -1 "G!1" "K!1" "g!2 * g!1" "g!1")
     (assert)
     (inst 1 "inv(g!1) * h!1")
     (("1"
       (hide 2)
       (replaces -2)
       (rewrite "assoc")
       (rewrite "assoc" :dir rl))
      ("2"
       (hide (-1 -2 2))
       (typepred "h!1")
       (skosimp)
       (replaces -1)
       (typepred "h!2")
       (rewrite "assoc"))))
    ("3" (hide -1) (expand "left_cosets") (inst?))))


proof_type: f_proof
decl_type: formula
library: groups
theory: p_groups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (lemma "Fix_iff_subset")
   (inst -1 "G!1" "H!1" "H!1" "g!1")
   (assert)
   (prop)
   (("1"
     (hide (-1 -2))
     (lemma "left_coset_correspondence_inv[T, *, one]")
     (inst -1 "G!1" "H!1" "g!1")
     (assert)
     (typepred "H!1")
     (hide -1)
     (lemma "finite_subgroups")
     (inst?)
     (assert)
     (hide -2)
     (expand "finite_group?")
     (lemma "card_eq_bij[T, T]")
     (inst -1 "H!1" "g!1 * H!1 * inv(g!1)")
     (("1" (prop) (hide (-2 -4)) (rewrite "same_card_subset"))
      ("2"
       (hide (-3 2))
       (lemma "bijection_finite_set2[T,T]")
       (inst -1 "H!1" "g!1 * H!1 * inv(g!1)")
       (assert))))
    ("2"
     (hide (1 3))
     (replace -1 1 rl)
     (hide -1)
     (rewrite "subset_reflexive"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: p_groups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (hide -1)
   (expand "p_group?")
   (skosimp)
   (inst -1 "a!1")
   (("1"
     (skosimp)
     (inst?)
     (replace -1 1 rl)
     (hide -1)
     (expand "period")
     (propax))
    ("2"
     (hide 2)
     (typepred "a!1" "H!1")
     (hide -2)
     (expand "subgroup?")
     (expand "subset?")
     (inst?)
     (assert))))


proof_type: f_proof
decl_type: formula
library: groups
theory: p_groups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (prop)
   (("1"
     (lemma "prime_factors")
     (inst -1 "order(G!1)")
     (skosimp)
     (lemma "product_only_power")
     (inst -1 "fs!1" "p!1")
     (prop)
     (("1" (skosimp) (inst?) (assert))
      ("2"
       (hide 2)
       (expand "ordered_list_of_primes?")
       (flatten)
       (hide -3)
       (expand* "only_power_p" "p_group?" "list_of_primes?")
       (skosimp)
       (lemma "divides_product")
       (inst -1 "fs!1" "j!1")
       (inst -3 "j!1")
       (replace -2 -1 rl)
       (hide -2)
       (lemma "cauchy")
       (inst?)
       (assert)
       (skosimp)
       (inst -4 "x!1")
       (skosimp)
       (replaces -1)
       (inst?))))
    ("2"
     (skosimp)
     (expand "p_group?")
     (skosimp)
     (lemma "Lagrange")
     (inst -1 "G!1" "generated_by(a!1)")
     (("1"
       (prop)
       (("1"
         (replaces -2)
         (lemma "divides_prime_power")
         (inst?)
         (assert)
         (skosimp)
         (hide -1)
         (lemma "period_is_generated_order")
         (inst?)
         (assert)
         (inst 1 "i!1")
         (assert))
        ("2" (hide-all-but 1) (rewrite "generated_is_subgroup"))))
      ("2"
       (hide-all-but 1)
       (expand "finite_group?")
       (lemma "finite_generated_by")
       (inst -1 "G!1" "a!1")
       (assert))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: p_groups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (typepred "G!1" "H!1")
   (hide -2)
   (lemma "finite_subgroups")
   (inst -1 "H!1" "G!1")
   (assert)
   (lemma "index_divides")
   (inst?)
   (assert)
   (lemma "p_group_iff_power")
   (inst?)
   (assert)
   (skosimp)
   (replaces -1)
   (lemma "divides_prime_power")
   (inst?)
   (("1"
     (assert)
     (skosimp)
     (hide (-1 -3 -8))
     (case-replace "i!1 = 0" :hide? T)
     (("1"
       (rewrite "expt_x0")
       (lemma "Lagrange_index")
       (inst?)
       (assert)
       (replaces -2 -1)
       (rewrite "identity_mult")
       (lemma "orders_equal")
       (inst -1 "G!1" "H!1")
       (assert))
      ("2" (hide (-2 -3 -4 2)) (replaces -1) (rewrite "divides_power"))))
    ("2" (hide (-1 -5 -6 2 3)) (lemma "index_gt1") (inst?) (assert))))


proof_type: f_proof
decl_type: formula
library: groups
theory: p_groups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "center_is_normal[T, *, one]")
   (("1"
     (inst?)
     (expand "cyclic?")
     (skosimp)
     (typepred "a!1")
     (skosimp)
     (decompose-equality -4)
     (("1"
       (hide -3)
       (expand "abelian_group?")
       (expand* "commutative?" "restrict")
       (skosimp)
       (inst-cp -1 "x!1 * center(G!1)")
       (("1"
         (iff)
         (prop)
         (("1"
           (hide -1)
           (inst -2 "y!1 * center(G!1)")
           (("1"
             (iff)
             (prop)
             (("1"
               (hide -1)
               (expand "generated_by")
               (skosimp*)
               (replaces -3)
               (lemma "coset_power_int[T,*,one]")
               (inst-cp -1 "G!1" "i!1" "a!2" "center(G!1)")
               (inst -1 "G!1" "i!2" "a!2" "center(G!1)")
               (replaces -1)
               (replaces -1)
               (lemma "lc_eq")
               (inst-cp -1 "G!1" "center(G!1)" "y!1" "a!2 ^ i!1")
               (inst -1 "G!1" "center(G!1)" "x!1" "a!2 ^ i!2")
               (expand "normal_subgroup?")
               (flatten)
               (assert)
               (hide (-3 -4 -5 -6))
               (skosimp*)
               (replaces -1)
               (replaces -1)
               (typepred "h!1" "h!2")
               (expand* "center" "extend")
               (prop)
               (hide (-1 -3))
               (rewrite "assoc")
               (rewrite "assoc")
               (rewrite "assoc" :dir rl)
               (inst -2 "a!2 ^ i!1")
               (("1"
                 (replace -2 1 rl)
                 (hide -2)
                 (rewrite "assoc" :dir rl)
                 (rewrite "assoc" :dir rl)
                 (inst-cp -1 "h!1")
                 (("1"
                   (replaces -2)
                   (rewrite "assoc" :dir rl)
                   (rewrite "assoc" :dir rl)
                   (inst -1 "a!2 ^ i!2")
                   (("1"
                     (replace -1 1 rl)
                     (hide -1)
                     (rewrite "assoc" :dir rl)
                     (rewrite "assoc")
                     (rewrite "assoc")
                     (rewrite "assoc")
                     (rewrite "assoc")
                     (rewrite "assoc")
                     (rewrite "assoc")
                     (rewrite "expt_mult")
                     (rewrite "expt_mult"))
                    ("2"
                     (hide 2)
                     (lemma "expt_member")
                     (inst -1 "G!1" "a!2" "i!2")
                     (assert))))
                  ("2"
                   (hide 2)
                   (typepred "h!1")
                   (expand* "center" "extend")
                   (assert))))
                ("2"
                 (hide (-1 2))
                 (lemma "expt_member")
                 (inst -1 "G!1" "a!2" "i!1")
                 (assert))))
              ("2"
               (hide-all-but 2)
               (expand "/")
               (expand "restrict")
               (expand "left_cosets")
               (inst?))))
            ("2" (hide-all-but 1) (inst 1 "y!1"))))
          ("2"
           (hide-all-but 2)
           (expand "/")
           (expand "restrict")
           (expand "left_cosets")
           (inst?))))
        ("2" (hide-all-but 1) (inst 1 "x!1"))))
      ("2" (hide-all-but (-3 1)) (rewrite "left_cosets_group"))
      ("3"
       (hide-all-but 1)
       (inst 1 "one")
       (("1" (rewrite "left_coset_one")) ("2" (rewrite "one_in"))))))
    ("2" (hide-all-but 1) (rewrite "fullset_is_group"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: p_groups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (lemma "p_group_iff_power")
   (inst?)
   (assert)
   (skosimp)
   (lemma "Fix_congruence[T,*,one,set[T]]")
   (inst -1 "H!1" "left_cosets(G!1,H!1)" "m!1" "p!1" "alt(G!1,H!1,H!1)")
   (("1"
     (prop)
     (("1"
       (expand "index")
       (case-replace
        "Fix(H!1, left_cosets(G!1, H!1))(alt(G!1, H!1, H!1)) = left_cosets(normalizer(G!1, H!1), H!1)"
        :hide? T)
       (("1"
         (hide (-2 -3 -4))
         (expand "divides")
         (skosimp*)
         (inst 1 "x!2 - x!1")
         (replaces -2)
         (assert))
        ("2"
         (hide-all-but 1)
         (decompose-equality 1)
         (iff)
         (prop)
         (("1"
           (copy -1)
           (expand "Fix" -1)
           (expand "extend")
           (prop)
           (hide -2)
           (expand "left_cosets" -1)
           (skosimp)
           (replaces -1)
           (lemma "Fix_iff_subset_cor")
           (inst -1 "G!1" "H!1" "H!1" "a!1")
           (assert)
           (hide -2)
           (expand "left_cosets")
           (inst?)
           (expand "normalizer")
           (expand "extend")
           (replace -1 1)
           (rewrite "lr_coset_assoc")
           (rewrite "left_coset_assoc")
           (rewrite "left_coset_one")
           (rewrite "right_coset_assoc")
           (rewrite "right_coset_one"))
          ("2"
           (expand "left_cosets" -1)
           (skosimp)
           (typepred "a!1")
           (replaces -2)
           (expand "normalizer")
           (expand "extend")
           (ground)
           (hide -1)
           (lemma "Fix_iff_subset_cor")
           (inst -1 "G!1" "H!1" "H!1" "a!1")
           (assert)
           (hide 2)
           (replace -1 1 rl)
           (rewrite "lr_coset_assoc")
           (rewrite "left_coset_assoc")
           (rewrite "left_coset_one")
           (rewrite "right_coset_assoc")
           (rewrite "right_coset_one"))))))
      ("2"
       (hide-all-but 1)
       (typepred "G!1" "H!1")
       (hide -2)
       (lemma "finite_subgroups")
       (inst?)
       (assert))
      ("3"
       (hide-all-but 1)
       (lemma "left_cosets_partition")
       (inst?)
       (expand "finite_partition?")
       (assert))
      ("4"
       (hide-all-but 1)
       (expand "nonempty?")
       (expand* "empty?" "member")
       (inst -1 "H!1")
       (expand "left_cosets")
       (inst 1 "one")
       (("1" (rewrite "left_coset_one")) ("2" (rewrite "one_in"))))
      ("5" (hide-all-but 1) (lemma "alt_is_action") (inst?))))
    ("2"
     (hide-all-but 1)
     (skosimp*)
     (expand "alt")
     (typepred "x1!1`2")
     (expand "left_cosets")
     (skosimp)
     (replaces -1)
     (inst 1 "x1!1`1 * a!1")
     (("1" (rewrite "left_coset_assoc"))
      ("2"
       (rewrite "product_in")
       (hide 2)
       (typepred "x1!1`1" "H!1")
       (hide -2)
       (expand "subgroup?")
       (expand* "subset?" "member")
       (inst?)
       (assert))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: p_groups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (lemma "Lagrange")
   (inst -1 "normalizer(G!1, H!1)" "H!1")
   (("1"
     (prop)
     (("1"
       (lemma "divisor_smaller")
       (inst?)
       (prop)
       (("1"
         (hide-all-but -1)
         (lemma "index_gt1")
         (inst -1 "normalizer(G!1, H!1)" "H!1")
         (("1" (assert))
          ("2" (lemma "normal_in_normalizer") (inst?) (assert))
          ("3" (lemma "normalizer_is_subgroup") (inst?) (assert))))
        ("2"
         (expand "<=")
         (prop)
         (("1" (hide-all-but (-1 -5)) (expand "order") (assert))
          ("2"
           (lemma "index_gt1")
           (inst -1 "normalizer(G!1, H!1)" "H!1")
           (("1"
             (lemma "prime_gt_1")
             (inst?)
             (assert)
             (hide -4)
             (case "index(normalizer(G!1, H!1), H!1) > 1")
             (("1"
               (hide (-2 -3))
               (lemma "Lagrange_index")
               (inst -1 "normalizer(G!1, H!1)" "H!1")
               (("1"
                 (prop)
                 (("1"
                   (replaces -3)
                   (lemma "both_sides_times1")
                   (inst -1 "order(normalizer(G!1, H!1))" "1"
                    "index(normalizer(G!1, H!1), H!1)")
                   (assert))
                  ("2"
                   (hide-all-but 1)
                   (lemma "normal_in_normalizer")
                   (inst?)
                   (assert)
                   (expand "normal_subgroup?")
                   (propax))))
                ("2"
                 (hide-all-but 1)
                 (typepred "H!1" "G!1")
                 (hide -1)
                 (lemma "finite_subgroups")
                 (inst?)
                 (assert))))
              ("2"
               (lemma "subgroup_is_p_group")
               (inst -1 "p!1" "G!1" "H!1")
               (assert)
               (hide (-4 -6 -7 2 3))
               (lemma "normalizer_index")
               (inst?)
               (assert)
               (prop)
               (("1"
                 (lemma "divisor_smaller")
                 (inst?)
                 (prop)
                 (("1" (assert)) ("2" (hide (-2 -3 -6)) (assert))))
                ("2" (lemma "p_divides_index") (inst?) (assert))))))
            ("2"
             (hide-all-but 1)
             (lemma "normal_in_normalizer")
             (inst?)
             (assert)
             (expand "normal_subgroup?")
             (propax))
            ("3"
             (hide-all-but 1)
             (lemma "normalizer_is_subgroup")
             (inst?)
             (assert)
             (lemma "finite_subgroups")
             (inst?)
             (assert))))))))
      ("2"
       (hide-all-but 1)
       (lemma "normal_in_normalizer")
       (inst?)
       (assert)
       (expand "normal_subgroup?")
       (propax))))
    ("2"
     (hide-all-but 1)
     (typepred "H!1" "G!1")
     (hide -1)
     (lemma "finite_subgroups")
     (inst?)
     (assert))
    ("3"
     (hide-all-but 1)
     (lemma "normalizer_is_subgroup")
     (inst?)
     (assert)
     (lemma "finite_subgroups")
     (inst?)
     (assert))))


proof_type: f_proof
decl_type: formula
library: groups
theory: p_groups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (lemma "p_group_iff_power")
   (inst?)
   (assert)
   (skosimp)
   (case-replace "m!1 = 0" :hide? T)
   (("1" (hide (-3 -4 1)) (rewrite "expt_x0") (assert))
    ("2"
     (case-replace "center(G!1) = G!1" :hide? T)
     (("1"
       (expand ">=")
       (replace -1 2)
       (lemma "prime_gt_1")
       (inst -1 "p!1")
       (prop)
       (hide (-2 -3 -4 -5))
       (lemma "both_sides_expt_gt1_le")
       (inst -1 "p!1" "1" "m!1")
       (rewrite "expt_x1")
       (assert))
      ("2"
       (case "nonempty?(CLs_nc(G!1))")
       (("1"
         (lemma "class_equation_2")
         (inst?)
         (lemma "divide_sigma")
         (inst -1 "CLs_nc(G!1)" "p!1")
         (("1"
           (prop)
           (("1"
             (name-replace "ZZ"
              "sigma_set.sigma(restrict[setof[T], finite_set[T], boolean](CLs_nc(G!1)), card)")
             (lemma "divides_power")
             (inst?)
             (("1"
               (replace -5 -1 rl)
               (replace -3 -1)
               (lemma "divides_element")
               (inst -1 "p!1" "ZZ" "card(center(G!1))")
               (("1"
                 (assert)
                 (hide-all-but (-1 -8 3))
                 (lemma "order_gt_p[T,*,one]")
                 (("1"
                   (inst?)
                   (("1" (expand "order") (propax))
                    ("2"
                     (hide (-1 -2 2))
                     (lemma "center_subgroup")
                     (inst?)
                     (typepred "G!1")
                     (lemma "finite_subgroups")
                     (inst?)
                     (assert))))
                  ("2" (rewrite "fullset_is_group"))))
                ("2"
                 (hide-all-but (-3 1))
                 (expand "order")
                 (lemma "integers.closed_minus")
                 (inst -1 "card(G!1)" "card(center(G!1))")
                 (assert))))
              ("2" (typepred "m!1") (assert))))
            ("2"
             (hide-all-but (-3 -5 1))
             (skosimp)
             (prop)
             (("1"
               (hide (-2 -3))
               (lemma "empty_card[T]")
               (inst?)
               (assert)
               (hide -2)
               (typepred "A!1")
               (expand "CLs_nc")
               (expand "extend")
               (prop)
               (skosimp)
               (expand "empty?")
               (inst?)
               (expand "member")
               (hide -1)
               (replaces -1)
               (expand "CL")
               (expand "extend")
               (inst 1 "one")
               (("1" (assert)) ("2" (rewrite "one_in"))))
              ("2"
               (typepred "A!1")
               (expand "CLs_nc")
               (expand "extend")
               (prop)
               (hide -1)
               (skosimp)
               (lemma "CLs_eq_index")
               (inst?)
               (replace -2 -1 rl)
               (hide -2)
               (case-replace "card(A!1) = 0" :hide? T)
               (("1" (hide (-1 -2 -3)) (rewrite "divides_zero"))
                ("2"
                 (lemma "divides_prime_power")
                 (inst -1 "m!1" "p!1" "card(A!1)")
                 (("1"
                   (assert)
                   (prop)
                   (("1"
                     (skosimp)
                     (case-replace "i!1 = 0" :hide? T)
                     (("1"
                       (hide-all-but (-2 -3))
                       (rewrite "expt_x0")
                       (replaces -1)
                       (lemma "Lagrange_index")
                       (inst?)
                       (("1"
                         (prop)
                         (("1"
                           (replaces -2)
                           (rewrite "identity_mult")
                           (expand "order")
                           (lemma "same_card_subset[T]")
                           (inst -1 "centralizer(G!1)(x!1)" "G!1")
                           (assert)
                           (hide -2)
                           (decompose-equality -1)
                           (typepred "x!1")
                           (expand "member")
                           (expand "center")
                           (expand "extend")
                           (skosimp)
                           (inst -2 "x!2")
                           (typepred "x!2")
                           (iff)
                           (prop)
                           (expand "centralizer")
                           (expand "extend")
                           (propax))
                          ("2"
                           (hide -1)
                           (rewrite "centralizer_is_subgroup"))))
                        ("2"
                         (hide -1)
                         (typepred "G!1")
                         (lemma "finite_subgroups")
                         (inst -1 "centralizer[T, *, one](G!1)(x!1)"
                          "G!1")
                         (assert)
                         (hide (-1 2))
                         (rewrite "centralizer_is_subgroup"))))
                      ("2"
                       (hide (-1 -3 -4 2))
                       (replaces -1)
                       (lemma "divides_power")
                       (inst?)
                       (assert))))
                    ("2"
                     (hide 3)
                     (lemma "Lagrange_index")
                     (inst?)
                     (("1"
                       (prop)
                       (("1"
                         (replaces -2)
                         (replaces -2)
                         (expand "divides")
                         (inst?))
                        ("2"
                         (hide-all-but 1)
                         (rewrite "centralizer_is_subgroup"))))
                      ("2"
                       (hide-all-but 1)
                       (typepred "G!1")
                       (lemma "finite_subgroups")
                       (inst -1 "centralizer[T, *, one](G!1)(x!1)" "G!1")
                       (assert)
                       (hide (-1 2))
                       (rewrite "centralizer_is_subgroup"))))))
                  ("2" (assert))))))))))
          ("2"
           (hide-all-but 1)
           (lemma "orbits_nFix_is_CLs_nc")
           (inst?)
           (replace -1 1 rl)
           (hide -1)
           (typepred "G!1")
           (expand "finite_group?")
           (flatten)
           (hide -1)
           (lemma "orbits_nFix_partition")
           (inst?)
           (assert)
           (hide (-1 2))
           (rewrite "a_by_c_is_action")
           (hide 2)
           (rewrite "group_is_subgroup"))))
        ("2"
         (hide-all-but (1 2))
         (expand* "nonempty?" "empty?" "member")
         (decompose-equality 1)
         (iff)
         (prop)
         (("1" (hide -2) (expand* "center" "extend") (assert))
          ("2"
           (inst -2 "CL(G!1)(x!1)")
           (expand "CLs_nc")
           (expand "extend")
           (prop)
           (("1" (inst 1 "x!1") (assert))
            ("2" (expand "CLs") (inst 1 "x!1"))))))))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: p_groups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp*)
   (lemma "Lagrange")
   (inst -1 "G!1" "center(G!1)")
   (("1"
     (prop)
     (("1"
       (replace -3 -1)
       (lemma "divides_prime_power")
       (inst -1 "2" "p!1" "order(center(G!1))")
       (assert)
       (skosimp)
       (hide -3)
       (case-replace "i!1 = 0" :hide? T)
       (("1"
         (hide -1)
         (rewrite "expt_x0")
         (lemma "prime_gt_1")
         (inst?)
         (assert)
         (lemma "burside_theorem")
         (inst -1 "p!1" "G!1")
         (prop)
         (("1" (hide (-4 -5 1)) (assert))
          ("2"
           (hide (-2 -3 2))
           (replaces -2)
           (lemma "expt_ge1")
           (inst?)
           (expand* ">=" ">")
           (expand "<=")
           (assert)
           (hide 1)
           (copy -2)
           (replace -2 -1)
           (hide -2)
           (lemma "both_sides_expt_gt1_lt")
           (inst -1 "p!1" "2" "1")
           (rewrite "expt_x1")
           (assert))
          ("3"
           (hide-all-but (-3 -4 1))
           (lemma "p_group_iff_power")
           (inst?)
           (assert)
           (inst?))))
        ("2"
         (case-replace "i!1 = 1" :hide? T)
         (("1"
           (rewrite "expt_x1")
           (hide 1)
           (lemma "order_factor")
           (inst -1 "G!1" "center(G!1)")
           (("1"
             (prop)
             (("1"
               (lemma
                "card_extend[set[T], left_cosets[T, *, one](G!1,center(G!1))]")
               (inst?)
               (("1"
                 (replaces -1)
                 (replaces -3)
                 (replaces -4)
                 (lemma "exponentiation.expt_div")
                 (inst -1 "2" "1" "p!1")
                 (rewrite "expt_x1")
                 (replaces -1)
                 (lemma
                  "prime_order_cycle[left_cosets(G!1,center(G!1)),mult(G!1,center(G!1)),center(G!1)]")
                 (("1"
                   (inst?)
                   (("1"
                     (expand "order")
                     (assert)
                     (hide -2)
                     (rewrite "factor_cyclic"))
                    ("2"
                     (hide-all-but 1)
                     (expand "finite_group?")
                     (lemma "card_factor_TCC1")
                     (inst?)
                     (assert)
                     (prop)
                     (("1"
                       (expand "/")
                       (rewrite
                        "finite_extension[set[T],left_cosets[T, *, one](G!1, center[T, *, one](G!1))]"))
                      ("2"
                       (hide 2)
                       (rewrite "center_is_normal[T, *, one]")
                       (hide 2)
                       (rewrite "fullset_is_group"))))))
                  ("2"
                   (hide-all-but 1)
                   (inst 1 "center(G!1)")
                   (inst 1 "one")
                   (("1" (rewrite "left_coset_one"))
                    ("2" (rewrite "one_in"))))
                  ("3"
                   (hide-all-but 1)
                   (rewrite "left_cosets_group")
                   (hide 2)
                   (lemma "center_is_normal[T, *, one]")
                   (("1"
                     (inst?)
                     (assert)
                     (expand "normal_subgroup?")
                     (flatten)
                     (hide -2)
                     (expand "subgroup?")
                     (propax))
                    ("2" (hide 2) (rewrite "fullset_is_group"))))
                  ("4"
                   (hide-all-but 1)
                   (inst 1 "one")
                   (("1" (rewrite "left_coset_one"))
                    ("2" (rewrite "one_in"))))))
                ("2"
                 (hide-all-but 1)
                 (lemma "card_factor_TCC1")
                 (inst?)
                 (assert)
                 (prop)
                 (("1"
                   (rewrite
                    "finite_extension[set[T],left_cosets[T, *, one](G!1, center[T, *, one](G!1))]"))
                  ("2"
                   (hide 2)
                   (rewrite "center_is_normal[T, *, one]")
                   (hide 2)
                   (rewrite "fullset_is_group"))))))
              ("2"
               (hide-all-but 1)
               (rewrite "center_is_normal[T, *, one]")
               (hide 2)
               (rewrite "fullset_is_group"))))
            ("2"
             (hide-all-but 1)
             (typepred "G!1")
             (lemma "finite_subgroups")
             (inst -1 "center(G!1)" "G!1")
             (assert)
             (hide (-1 2))
             (rewrite "center_subgroup"))))
          ("2"
           (expand "<=")
           (assert)
           (replaces -1)
           (hide (-2 1 2))
           (expand "order")
           (replace -1 -2 rl)
           (hide -1)
           (lemma "same_card_subset[T]")
           (inst -1 "center(G!1)" "G!1")
           (assert)
           (hide -2)
           (lemma "abelian_eq_center[T,*,one]")
           (("1" (inst?) (assert))
            ("2" (hide (-1 2)) (rewrite "fullset_is_group"))))))))
      ("2" (hide (-1 -2 2)) (rewrite "center_subgroup"))))
    ("2"
     (hide (-1 -2 2))
     (lemma "finite_subgroups")
     (inst -1 "center(G!1)" "G!1")
     (assert)
     (hide 2)
     (lemma "center_subgroup")
     (inst?))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: p_groups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (typepred "x1!1`2" "x1!1`1" "H!1")
   (expand "subgroup?")
   (expand* "subset?" "member")
   (inst?)
   (assert)
   (hide -3)
   (expand "left_cosets")
   (skosimp)
   (expand "alt")
   (inst 1 "x1!1`1 * a!1")
   (("1" (replaces -1) (rewrite "left_coset_assoc"))
    ("2" (rewrite "product_in"))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: p_groups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "center_subgroup")
   (inst?)
   (expand "normal_subgroup?")
   (assert)
   (expand "subgroup?")
   (assert)
   (skosimp)
   (expand* "subset?" "member")
   (skosimp)
   (hide -1)
   (expand "*")
   (skosimp)
   (typepred "h!1")
   (skosimp)
   (typepred "h!2")
   (expand "center")
   (expand "extend")
   (ground)
   (("1"
     (skosimp)
     (hide (-1 -2))
     (replaces -2)
     (replaces -2)
     (inst-cp -1 "a!1")
     (rewrite "assoc" :dir rl)
     (replace -2 1 rl)
     (rewrite "assoc")
     (inst -1 "x!2"))
    ("2"
     (hide -2)
     (replaces -2)
     (replaces -2)
     (rewrite "product_in")
     (rewrite "product_in")
     (rewrite "inv_in"))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: p_groups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (rewrite "left_cosets_group")
   (hide 2)
   (lemma "center_is_normal[T, *, one]")
   (("1"
     (inst?)
     (assert)
     (expand "normal_subgroup?")
     (flatten)
     (hide -2)
     (expand "subgroup?")
     (propax))
    ("2" (hide 2) (rewrite "fullset_is_group"))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: p_groups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (typepred "H!1" "G!1")
   (hide (-1 -4))
   (lemma "finite_subgroups")
   (inst?)
   (assert))


proof_type: t_proof
decl_type: tcc
library: groups
theory: p_groups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "normalizer_is_subgroup")
   (inst?)
   (assert)
   (hide (-2 -3 -4))
   (lemma "finite_subgroups")
   (inst?)
   (assert))


proof_type: t_proof
decl_type: tcc
library: groups
theory: p_groups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (hide-all-but 1)
   (lemma "normal_in_normalizer")
   (inst?)
   (assert)
   (expand "normal_subgroup?")
   (propax))


proof_type: t_proof
decl_type: tcc
library: groups
theory: p_groups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (typepred "G!1")
   (lemma "center_subgroup")
   (inst?)
   (lemma "finite_subgroups")
   (inst?)
   (assert)
   (hide (-2 -3))
   (expand* "finite_group?" "finite_monad?" "group?" "monoid?")
   (flatten)
   (assert))


proof_type: f_proof
decl_type: formula
library: groups
theory: products_subgroups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "subgroup_def")
   (inst?)
   (prop)
   (("1"
     (hide (-1 2 3))
     (expand "nonempty?")
     (expand "empty?")
     (expand "member")
     (inst -1 "one")
     (expand "prod")
     (inst 1 "one" "one")
     (("1" (rewrite "one_left"))
      ("2"
       (typepred "N!1")
       (expand* "group?" "monoid?" "monad?")
       (flatten)
       (expand "member")
       (propax))
      ("3"
       (typepred "H!1")
       (expand* "group?" "monoid?" "monad?")
       (flatten)
       (expand "member")
       (propax))))
    ("2"
     (hide (-1 2 3))
     (expand* "subset?" "member")
     (skosimp)
     (expand "prod")
     (skosimp*)
     (typepred "h!1" "k!1" "H!1" "N!1")
     (expand* "subgroup?" "subset?" "member")
     (hide (-3 -5))
     (inst -3 "h!1")
     (inst -4 "k!1")
     (assert)
     (replaces -5)
     (rewrite "product_in"))
    ("3"
     (hide (2 3))
     (expand "star_closed?")
     (skosimp)
     (expand* "member" "prod")
     (typepred "x!1" "y!1")
     (expand "prod")
     (skosimp*)
     (inst 1 "h!1 * h!2" "inv(h!2) * k!1 * h!2 * k!2")
     (("1"
       (rewrite "assoc")
       (rewrite "assoc")
       (rewrite "assoc")
       (lemma "assoc")
       (inst?)
       (replace -1 1 rl)
       (rewrite "inv_right")
       (rewrite "one_right")
       (replaces -2)
       (replaces -2)
       (rewrite "assoc"))
      ("2"
       (hide (-1 -2))
       (lemma "nsg_prop2")
       (inst -1 "h!2" "k!1" "G!1" "N!1")
       (typepred "k!1" "k!2")
       (prop)
       (("1"
         (lemma "product_in")
         (inst -1 "N!1" "inv(h!2) * k!1 * h!2" "k!2")
         (assert))
        ("2"
         (hide-all-but 1)
         (typepred "h!2" "H!1")
         (expand* "subgroup?" "subset?" "member")
         (inst?)
         (assert))))
      ("3" (hide -) (typepred "h!1" "h!2") (rewrite "product_in"))))
    ("4"
     (hide (2 3))
     (expand "inv_closed?")
     (skosimp)
     (expand "member")
     (expand "prod")
     (typepred "x!1")
     (expand "prod")
     (skosimp)
     (inst 1 "inv(h!1)" "h!1 * inv(k!1) * inv(h!1)")
     (("1"
       (replaces -1)
       (rewrite "inv_star")
       (rewrite "assoc")
       (rewrite "assoc"))
      ("2"
       (lemma "nsg_prop")
       (inst -1 "h!1" "inv(k!1)" "G!1" "N!1")
       (prop)
       (("1"
         (hide-all-but 1)
         (typepred "h!1" "H!1")
         (expand* "subgroup?" "subset?" "member")
         (inst?)
         (assert))
        ("2" (hide-all-but 1) (typepred "k!1") (rewrite "inv_in"))))
      ("3" (hide -) (typepred "h!1") (rewrite "inv_in"))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: products_subgroups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (prop)
   (("1"
     (decompose-equality 1)
     (iff)
     (prop)
     (("1"
       (expand "subgroup?")
       (flatten)
       (lemma "inv_in")
       (inst -1 "prod(H!1, K!1)" "x!1")
       (expand "prod" (-1 1))
       (skosimp)
       (typepred "h!1" "k!1")
       (lemma "inv_in")
       (copy -1)
       (inst -1 "H!1" "h!1")
       (inst -2 "K!1" "k!1")
       (inst 1 "inv(k!1)" "inv(h!1)")
       (lemma "inv_star")
       (inst?)
       (replace -1 1 rl)
       (replace -6 1 rl)
       (rewrite "inv_inv"))
      ("2"
       (expand "prod" -1)
       (skosimp*)
       (typepred "h!1" "k!1")
       (lemma "inv_in")
       (copy -1)
       (inst -1 "H!1" "k!1")
       (inst -2 "K!1" "h!1")
       (case "prod(H!1, K!1)(inv(h!1 * k!1))")
       (("1"
         (expand "subgroup?")
         (flatten)
         (lemma "inv_in")
         (inst -1 "prod(H!1, K!1)" "inv(h!1 * k!1)")
         (rewrite "inv_inv")
         (assert))
        ("2"
         (hide (-6 2))
         (expand "prod")
         (inst 1 "inv(k!1)" "inv(h!1)")
         (rewrite "inv_star"))))))
    ("2"
     (lemma "subgroup_def")
     (inst?)
     (prop)
     (("1"
       (hide (-1 2 3))
       (expand "nonempty?")
       (expand "empty?")
       (inst -1 "one")
       (expand "member")
       (expand "prod")
       (inst 1 "one" "one")
       (("1" (rewrite "one_left"))
        ("2"
         (typepred "K!1")
         (expand* "group?" "monoid?" "monad?")
         (flatten)
         (hide-all-but (-2 1))
         (expand "member")
         (propax))
        ("3"
         (typepred "H!1")
         (expand* "group?" "monoid?" "monad?")
         (flatten)
         (hide-all-but (-2 1))
         (expand "member")
         (propax))))
      ("2"
       (hide (-1 2 3))
       (expand* "subset?" "member")
       (skosimp)
       (expand "prod")
       (skosimp*)
       (typepred "h!1" "k!1")
       (typepred "H!1" "K!1")
       (expand* "subgroup?" "subset?" "member")
       (hide (-1 -3))
       (inst -1 "h!1")
       (inst -2 "k!1")
       (assert)
       (replaces -5)
       (rewrite "product_in"))
      ("3"
       (hide (2 3))
       (expand "star_closed?")
       (skosimp)
       (expand "member")
       (typepred "x!1" "y!1")
       (expand "prod" (-1 -2))
       (skosimp*)
       (replaces -1)
       (replaces -1)
       (rewrite "assoc")
       (lemma "assoc")
       (inst?)
       (replace -1 1 rl)
       (hide -1)
       (decompose-equality -1)
       (inst -1 "k!1 * h!2")
       (iff)
       (prop)
       (("1"
         (hide -2)
         (expand "prod" -1)
         (skosimp*)
         (replaces -1)
         (expand "prod")
         (inst 1 "h!1 * h!3" "k!3 * k!2")
         (("1" (rewrite "assoc") (rewrite "assoc"))
          ("2" (typepred "k!3" "k!2") (rewrite "product_in"))
          ("3" (typepred "h!3" "h!1") (rewrite "product_in"))))
        ("2" (hide (2 3)) (expand "prod") (inst?))))
      ("4"
       (hide (2 3))
       (expand* "inv_closed?" "member")
       (skosimp*)
       (typepred "x!1")
       (expand "prod" -1)
       (skosimp*)
       (replaces -1)
       (rewrite "inv_star")
       (decompose-equality -1)
       (inst -1 "inv(k!1) * inv(h!1)")
       (iff)
       (prop)
       (hide (2 3))
       (expand "prod")
       (inst 1 "inv(k!1)" "inv(h!1)")
       (("1" (typepred "h!1") (rewrite "inv_in"))
        ("2" (typepred "k!1") (rewrite "inv_in"))))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: products_subgroups
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (prop)
   (("1"
     (lemma "subgroup_def")
     (inst?)
     (assert)
     (hide (-1 2))
     (prop)
     (("1"
       (typepred "H!1")
       (hide -1)
       (lemma "subgroup_def")
       (inst?)
       (assert))
      ("2"
       (expand* "subset?" "member")
       (skosimp)
       (expand "prod")
       (inst 1 "x!1" "one")
       (("1" (rewrite "one_right"))
        ("2"
         (typepred "K!1")
         (expand* "group?" "monoid?" "monad?" "member")
         (assert))))
      ("3"
       (typepred "H!1")
       (hide -1)
       (lemma "subgroup_def")
       (inst?)
       (assert))
      ("4"
       (typepred "H!1")
       (hide -1)
       (lemma "subgroup_def")
       (inst?)
       (assert))))
    ("2"
     (lemma "subgroup_def")
     (inst?)
     (assert)
     (hide (-1 2))
     (prop)
     (("1"
       (typepred "K!1")
       (hide -1)
       (lemma "subgroup_def")
       (inst?)
       (assert))
      ("2"
       (expand* "subset?" "member")
       (skosimp)
       (expand "prod")
       (inst 1 "one" "x!1")
       (("1" (rewrite "one_left"))
        ("2"
         (typepred "H!1")
         (expand* "group?" "monoid?" "monad?" "member")
         (assert))))
      ("3"
       (typepred "K!1")
       (hide -1)
       (lemma "subgroup_def")
       (inst?)
       (assert))
      ("4"
       (typepred "K!1")
       (hide -1)
       (lemma "subgroup_def")
       (inst?)
       (assert))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: homomorphism_lemmas
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (inst 1 "(LAMBDA (x:(G!1)): *[T1, *, one1](x, K!1))")
   (("1"
     (prop)
     (("1"
       (expand "homomorphism?")
       (skosimp*)
       (rewrite "mult_lem[T1, *, one1]"))
      ("2"
       (expand "surjective?")
       (skosimp*)
       (typepred "y!1")
       (skosimp*)
       (inst 1 "a!1")
       (assert))
      ("3"
       (decompose-equality 1)
       (("1"
         (expand "kernel")
         (iff)
         (prop)
         (("1"
           (typepred "K!1")
           (expand "normal_subgroup?")
           (flatten)
           (expand "subgroup?")
           (expand* "subset?" "member")
           (inst -2 "x!1")
           (assert))
          ("2"
           (decompose-equality 1)
           (expand "*")
           (iff)
           (prop)
           (("1"
             (skosimp)
             (replaces -1)
             (typepred "h!1" "K!1")
             (expand* "group?" "monoid?" "monad?")
             (flatten)
             (hide-all-but (-1 -2 -8 1))
             (expand "star_closed?")
             (inst?)
             (expand "member")
             (propax))
            ("2"
             (inst 1 "inv[T1, *, one1](x!1) * x!2")
             (("1"
               (rewrite "assoc[T1, *, one1]")
               (rewrite "inv_right[T1, *, one1]")
               (rewrite "one_left[T1, *, one1]"))
              ("2"
               (typepred "K!1")
               (expand* "group?" "monoid?" "monad?")
               (flatten)
               (hide-all-but (-1 -7 -8 1))
               (expand* "star_closed?" "member")
               (lemma "inv_in[T1, *, one1]")
               (inst -1 "K!1" "x!1")
               (inst?))))))
          ("3"
           (expand "*")
           (decompose-equality -2)
           (inst?)
           (iff)
           (prop)
           (inst 2 "one1")
           (("1" (rewrite "one_right[T1, *, one1]"))
            ("2"
             (typepred "K!1")
             (expand* "group?" "monoid?" "monad?")
             (flatten)
             (expand "member")
             (propax))))))
        ("2" (rewrite "left_cosets_group[T1, *, one1]"))
        ("3" (rewrite "T1_is_group"))
        ("4"
         (inst 1 "one1")
         (("1" (rewrite "left_coset_one[T1, *, one1]"))
          ("2"
           (typepred "G!1")
           (expand* "group?" "monoid?" "monad?" "member")
           (assert))))
        ("5"
         (expand "homomorphism?")
         (skosimp*)
         (rewrite "mult_lem[T1, *, one1]"))
        ("6" (skosimp*) (prop) (("1" (inst 1 "x!1")) ("2" (grind))))))))
    ("2" (skosimp) (prop) (("1" (inst 1 "x!1")) ("2" (grind))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: homomorphism_lemmas
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "inv_left[T1, *, one1]")
   (lemma "inv_right[T1, *, one1]")
   (inst?)
   (inst?)
   (typepred "phi!1")
   (expand "homomorphism?")
   (copy -1)
   (inst -1 "x!1" "inv[T1, *, one1](x!1)")
   (("1"
     (inst -2 "inv[T1, *, one1](x!1)" "x!1")
     (("1"
       (replaces -3)
       (replaces -3)
       (lemma "homo_one[T1,*,one1,T2,o,one2]")
       (inst -1 "G!1" "GP!1" "phi!1")
       (replaces -1)
       (lemma "unique_inv[T2, o, one2]")
       (inst?)
       (assert))
      ("2" (rewrite "inv_in[T1, *, one1]"))))
    ("2" (rewrite "inv_in[T1, *, one1]"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: homomorphism_lemmas
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skeep)
   (skoletin* 1)
   (expand "normal_subgroup?")
   (assert)
   (skeep)
   (expand "subset?")
   (skeep)
   (expand "member")
   (expand "K" 1)
   (grind)
   (("1"
     (typepred "phi")
     (expand "homomorphism?")
     (copy -1)
     (inst -1 "inv[T1, *, one1](a) * h!2" "a")
     (("1"
       (replaces -1)
       (inst -1 "inv[T1, *, one1](a)" "h!2")
       (("1"
         (replaces -1)
         (replaces -2)
         (lemma "one_right[T2, o, one2]")
         (inst?)
         (replaces -1)
         (rewrite "homo_inv")
         (assert))
        ("2"
         (hide-all-but 1)
         (typepred "a")
         (rewrite "inv_in[T1, *, one1]"))))
      ("2"
       (hide-all-but 1)
       (typepred "a")
       (lemma "inv_in[T1, *, one1]")
       (inst?)
       (typepred "G")
       (expand "group?")
       (flatten)
       (expand "monoid?")
       (flatten)
       (expand "monad?")
       (flatten)
       (expand "star_closed?")
       (hide-all-but (-1 -6 -7 1))
       (inst?)
       (assert))))
    ("2"
     (hide-all-but (-1 1))
     (typepred "a")
     (lemma "inv_in[T1, *, one1]")
     (inst?)
     (typepred "G")
     (expand "group?")
     (flatten)
     (expand "monoid?")
     (flatten)
     (expand "monad?")
     (flatten)
     (expand "star_closed?")
     (hide-all-but (-1 -6 -7 -8 1))
     (copy -1)
     (inst -2 "inv[T1, *, one1](a)" "h!2")
     (expand "member")
     (inst -1 "inv[T1, *, one1](a) * h!2" "a"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: homomorphism_lemmas
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "subgroup_def[T2, o, one2]")
   (inst?)
   (assert)
   (hide 2)
   (prop)
   (("1"
     (expand "nonempty?")
     (expand "empty?")
     (expand "member")
     (expand "extend")
     (inst -1 "one2")
     (typepred "GP!1")
     (expand "group?")
     (flatten)
     (expand "monoid?")
     (flatten)
     (expand "monad?")
     (flatten)
     (hide-all-but (-2 1))
     (expand "member")
     (assert)
     (expand "image")
     (inst 1 "one1")
     (("1" (rewrite "homo_one[T1, *, one1,T2, o, one2]"))
      ("2"
       (prop)
       (("1"
         (typepred "G!1")
         (expand "group?")
         (flatten)
         (expand "monoid?")
         (flatten)
         (expand "monad?")
         (flatten)
         (expand "member")
         (propax))
        ("2"
         (expand "restrict")
         (typepred "H!1")
         (expand "group?")
         (flatten)
         (expand "monoid?")
         (flatten)
         (expand "monad?")
         (flatten)
         (expand "member")
         (propax))))))
    ("2"
     (expand "subset?")
     (skosimp*)
     (expand "member")
     (expand "extend")
     (assert))
    ("3"
     (expand "star_closed?")
     (skosimp*)
     (expand "member")
     (expand "extend")
     (prop)
     (("1"
       (typepred "x!1")
       (typepred "y!1")
       (expand "extend")
       (prop)
       (expand "image")
       (skosimp)
       (skosimp)
       (inst 1 "x!2 * x!3")
       (("1"
         (typepred "phi!1")
         (expand "homomorphism?")
         (inst -1 "x!2" "x!3")
         (assert))
        ("2"
         (prop)
         (("1"
           (typepred "x!2")
           (typepred "x!3")
           (typepred "G!1")
           (expand "group?")
           (flatten)
           (expand "monoid?")
           (flatten)
           (expand "monad?")
           (flatten)
           (hide-all-but (-1 -6 -8 1))
           (expand "star_closed?")
           (inst?)
           (expand "member")
           (propax))
          ("2"
           (expand "restrict")
           (typepred "x!2")
           (typepred "x!3")
           (typepred "H!1")
           (expand "group?")
           (flatten)
           (expand "monoid?")
           (flatten)
           (expand "monad?")
           (flatten)
           (hide-all-but (-1 -8 -10 1))
           (expand* "restrict" "star_closed?" "member")
           (inst?))))))
      ("2"
       (typepred "GP!1")
       (expand "group?")
       (flatten)
       (expand "monoid?")
       (flatten)
       (expand "monad?")
       (flatten)
       (typepred "x!1")
       (typepred "y!1")
       (expand* "extend" "star_closed?" "member" "image")
       (prop)
       (hide-all-but (-1 -3 -5 1))
       (inst?))))
    ("4"
     (expand "inv_closed?")
     (skosimp*)
     (expand* "member" "extend" "image" "restrict")
     (prop)
     (("1"
       (typepred "x!1")
       (expand* "extend" "image" "restrict")
       (prop)
       (skosimp)
       (typepred "x!2")
       (inst 1 "inv[T1, *, one1](x!2)")
       (("1" (rewrite "homo_inv") (assert))
        ("2"
         (prop)
         (("1" (hide-all-but (-1 1)) (rewrite "inv_in"))
          ("2"
           (expand "restrict")
           (hide-all-but (-2 1))
           (rewrite "inv_in"))))))
      ("2"
       (typepred "x!1")
       (expand "extend")
       (prop)
       (rewrite "inv_in"))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: homomorphism_lemmas
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (typepred "H!1")
   (hide -1)
   (expand "normal_subgroup?")
   (flatten)
   (lemma "homo_image")
   (inst?)
   (assert)
   (hide -1)
   (expand* "subset?" "member")
   (skosimp*)
   (expand "extend" 1)
   (prop)
   (("1"
     (expand "surjective?")
     (expand "*" -5)
     (skosimp)
     (typepred "h!1")
     (skosimp)
     (replaces -1)
     (typepred "h!2")
     (expand "extend")
     (prop)
     (expand "image")
     (skosimp)
     (inst -6 "a!1")
     (skosimp)
     (inst 1 "inv[T1, *, one1](x!3) * x!2 * x!3")
     (("1"
       (hide-all-but (-2 -6 -7 1))
       (typepred "phi!1")
       (expand "homomorphism?")
       (inst-cp -1 "inv[T1, *, one1](x!3) * x!2" "x!3")
       (("1"
         (inst -1 "inv[T1, *, one1](x!3)" "x!2")
         (("1"
           (replaces -1)
           (replaces -1)
           (lemma "homo_inv[T1, *, one1,T2, o, one2]")
           (inst?)
           (replaces -1)
           (replaces -2)
           (replace -1 1 rl)
           (propax))
          ("2" (hide-all-but 1) (rewrite "inv_in"))))
        ("2"
         (hide-all-but 1)
         (rewrite "product_in[T1, *, one1]")
         (hide 2)
         (rewrite "inv_in"))))
      ("2"
       (prop)
       (("1"
         (hide-all-but 1)
         (rewrite "product_in[T1, *, one1]")
         (hide 2)
         (rewrite "product_in[T1, *, one1]")
         (hide 2)
         (rewrite "inv_in"))
        ("2"
         (expand "restrict")
         (hide-all-but (-5 1))
         (typepred "x!2")
         (expand "restrict")
         (hide -1)
         (inst -2 "x!3")
         (inst -2 "inv[T1, *, one1](x!3) * x!2 * x!3")
         (assert)
         (hide 1)
         (expand "*")
         (inst 1 "inv[T1, *, one1](x!3) * x!2")
         (inst 1 "x!2"))))))
    ("2"
     (hide (-1 -2 -3))
     (expand "*")
     (skosimp)
     (typepred "h!1" "a!1")
     (skosimp)
     (replaces -1)
     (typepred "h!2")
     (expand "extend")
     (prop)
     (hide -2)
     (replaces -3)
     (rewrite "product_in[T2, o, one2]")
     (hide 2)
     (rewrite "product_in[T2, o, one2]")
     (hide 2)
     (rewrite "inv_in"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: homomorphism_lemmas
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "subgroup_def[T1, *, one1]")
   (inst?)
   (assert)
   (hide 2)
   (prop)
   (("1"
     (expand "nonempty?")
     (expand "empty?")
     (expand "member")
     (expand "extend")
     (inst -1 "one1")
     (typepred "G!1")
     (expand "group?")
     (flatten)
     (expand "monoid?")
     (flatten)
     (expand "monad?")
     (flatten)
     (hide-all-but (-2 1))
     (expand* "inverse_image" "member")
     (assert)
     (typepred "K!1")
     (hide -2)
     (expand "group?")
     (flatten)
     (expand "monoid?")
     (flatten)
     (expand "monad?")
     (flatten)
     (hide-all-but (-2 1))
     (expand "member")
     (rewrite "homo_one[T1, *, one1,T2, o, one2]"))
    ("2"
     (expand "subset?")
     (skosimp*)
     (expand "member")
     (expand "extend")
     (assert))
    ("3"
     (expand "star_closed?")
     (skosimp*)
     (expand "member")
     (expand "extend")
     (typepred "x!1")
     (typepred "y!1")
     (expand "extend")
     (expand "inverse_image")
     (expand "member")
     (prop)
     (("1"
       (hide (-1 -2 -4))
       (typepred "phi!1")
       (expand "homomorphism?")
       (inst -1 "x!1" "y!1")
       (replaces -1)
       (typepred "K!1")
       (hide -2)
       (expand "group?")
       (flatten)
       (expand "monoid?")
       (flatten)
       (expand "monad?")
       (flatten)
       (hide-all-but (-1 -6 -7 1))
       (expand* "star_closed?" "member")
       (inst?))
      ("2" (hide (-2 -4)) (rewrite "product_in[T1, *, one1]"))))
    ("4"
     (expand "inv_closed?")
     (skosimp*)
     (expand* "extend" "inverse_image" "member")
     (typepred "x!1")
     (expand* "extend" "inverse_image" "member")
     (prop)
     (("1"
       (hide (-1 -2))
       (rewrite "homo_inv")
       (rewrite "inv_in[T2, o, one2]"))
      ("2" (hide -2) (rewrite "inv_in[T1, *, one1]"))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: homomorphism_lemmas
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (typepred "K!1")
   (hide -1)
   (expand "normal_subgroup?")
   (flatten)
   (lemma "homo_inv_image")
   (inst?)
   (assert)
   (hide -1)
   (expand* "subset?" "member")
   (skosimp*)
   (expand "extend" 1)
   (prop)
   (("1"
     (expand "inverse_image")
     (expand "member")
     (expand "*" -4)
     (skosimp)
     (typepred "h!1")
     (skosimp)
     (replaces -1)
     (typepred "h!2")
     (expand "extend")
     (prop)
     (inst -5 "phi!1(a!1)")
     (inst -5 "phi!1(x!1)")
     (assert)
     (hide 1)
     (expand "*")
     (inst 1 "inv[T2, o, one2](phi!1(a!1)) o phi!1(h!2)")
     (("1"
       (replaces -5)
       (hide-all-but 1)
       (typepred "phi!1")
       (expand "homomorphism?")
       (inst-cp -1 "inv[T1, *, one1](a!1) * h!2" "a!1")
       (("1"
         (inst -1 "inv[T1, *, one1](a!1)" "h!2")
         (("1"
           (replaces -1)
           (replaces -1)
           (lemma "homo_inv[T1, *, one1,T2, o, one2]")
           (inst?)
           (replaces -1))
          ("2" (hide-all-but 1) (rewrite "inv_in"))))
        ("2"
         (hide-all-but 1)
         (rewrite "product_in[T1, *, one1]")
         (hide 2)
         (rewrite "inv_in"))))
      ("2" (inst?))))
    ("2"
     (hide (-1 -2))
     (expand "*")
     (skosimp)
     (typepred "h!1" "a!1")
     (skosimp)
     (typepred "h!2")
     (expand "extend")
     (prop)
     (hide -2)
     (replaces -2)
     (replaces -3)
     (rewrite "product_in[T1, *, one1]")
     (hide 2)
     (rewrite "product_in[T1, *, one1]")
     (hide 2)
     (rewrite "inv_in"))))


proof_type: f_proof
decl_type: formula
library: groups
theory: homomorphism_lemmas
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (skoletin* 1 "!1")
   (expand* "subset?" "member")
   (skosimp)
   (expand "extend")
   (typepred "K!1")
   (expand "subgroup?")
   (expand "subset?")
   (inst?)
   (assert)
   (expand "inverse_image")
   (expand "member")
   (replaces -4)
   (expand "kernel")
   (replaces -3)
   (typepred "S!1")
   (expand "group?")
   (flatten)
   (expand "monoid?")
   (flatten)
   (expand "monad?")
   (flatten)
   (assert))


proof_type: f_proof
decl_type: formula
library: groups
theory: homomorphism_lemmas
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (skoletin* 1 "!1")
   (decompose-equality 1)
   (iff)
   (prop)
   (("1"
     (expand* "inverse_image" "image" "prod" "member" "restrict")
     (skosimp)
     (lemma "cancel_left[T2,o,one2]")
     (inst -1 "phi!1(x!1)" "phi!1(x!2)" "inv[T2, o, one2](phi!1(x!2))")
     (("1"
       (prop)
       (hide -2)
       (rewrite "inv_left")
       (rewrite "homo_inv" :dir rl)
       (typepred "phi!1")
       (expand "homomorphism?")
       (inst?)
       (replaces -2)
       (typepred "x!2")
       (hide -1)
       (expand "restrict")
       (inst 1 "x!2" "inv[T1, *, one1](x!2) * x!1")
       (("1"
         (rewrite "assoc[T1, *, one1]")
         (rewrite "inv_right[T1, *, one1]")
         (rewrite "one_left[T1, *, one1]"))
        ("2"
         (hide -3)
         (replaces -3)
         (expand "kernel")
         (assert)
         (hide (-1 -2))
         (rewrite "product_in[T1, *, one1]")
         (hide 2)
         (rewrite "inv_in[T1, *, one1]"))))
      ("2" (hide-all-but 1) (rewrite "T2_is_group"))))
    ("2"
     (expand* "inverse_image" "image" "prod" "member" "restrict")
     (skosimp)
     (inst 1 "h!1")
     (("1"
       (replaces -1)
       (typepred "k!1")
       (replaces -2)
       (expand "kernel")
       (flatten)
       (typepred "phi!1")
       (expand "homomorphism?")
       (inst?)
       (replaces -1)
       (replaces -2)
       (rewrite "one_right[T2, o, one2]"))
      ("2"
       (typepred "h!1")
       (expand "restrict")
       (typepred "H!1")
       (hide (-1 -4 -5))
       (expand "subgroup?")
       (expand "subset?")
       (inst?)
       (assert))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: homomorphism_lemmas
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (skoletin* 1 "!1")
   (lemma "homo_inv_image_image")
   (inst?)
   (assert)
   (replaces -1)
   (prop)
   (("1"
     (expand* "subgroup?" "subset?" "member")
     (skosimp)
     (decompose-equality -1)
     (inst?)
     (("1"
       (iff)
       (prop)
       (("1" (expand "restrict") (propax))
        ("2"
         (expand "restrict")
         (expand "prod")
         (inst 2 "one1" "x!1")
         (("1" (rewrite "one_left[T1,*,one1]")) ("2" (assert))
          ("3"
           (typepred "H!1")
           (expand* "group?" "monoid?" "monad?")
           (flatten)
           (hide-all-but (-2 1))
           (expand "member")
           (propax))))))
      ("2" (replaces -2) (expand "kernel") (assert))))
    ("2"
     (decompose-equality 1)
     (iff)
     (prop)
     (("1"
       (expand "restrict")
       (expand "prod")
       (skosimp)
       (expand* "subgroup?" "subset?" "member")
       (inst -2 "k!1")
       (assert)
       (replaces -1)
       (hide -2)
       (typepred "h!1")
       (rewrite "product_in[T1, *, one1]"))
      ("2"
       (expand "restrict")
       (expand "prod")
       (inst 1 "x!1" "one1")
       (("1" (rewrite "one_right[T1,*,one1]"))
        ("2"
         (hide-all-but 1)
         (expand "kernel")
         (typepred "G!1")
         (expand* "group?" "monoid?" "monad?")
         (flatten)
         (hide-all-but (-2 1))
         (expand "member")
         (assert)
         (rewrite "homo_one[T1, *, one1,T2, o, one2]"))))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: homomorphism_lemmas
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (skoletin* 1)
   (("1"
     (expand "isomorphic?")
     (inst 1 "(LAMBDA (A: left_cosets(G!1,K)): phi!1(lc_gen(G!1,K,A)))")
     (("1"
       (expand "isomorphism?")
       (prop)
       (("1"
         (expand "bijective?")
         (prop)
         (("1"
           (expand "injective?")
           (skosimp*)
           (expand "restrict")
           (lemma "lc_is_eq[T1, *, one1]")
           (inst -1 "G!1" "K" "lc_gen(G!1, K, x1!1)"
            "lc_gen(G!1, K, x2!1)")
           (assert)
           (inst 1
            "inv[T1, *, one1](lc_gen(G!1, K, x2!1)) * lc_gen(G!1, K, x1!1)")
           (("1"
             (lemma "inv_right[T1, *, one1]")
             (inst?)
             (rewrite "assoc[T1, *, one1]")
             (replaces -1)
             (rewrite "one_left[T1,*,one1]"))
            ("2"
             (expand "K" 1)
             (expand "kernel" 1 1)
             (prop)
             (("1"
               (replace -2 1 rl)
               (hide (- 2))
               (typepred "lc_gen[T1, *, one1](G!1, K, x2!1)")
               (typepred "lc_gen[T1, *, one1](G!1, K, x1!1)")
               (hide (-2 -4))
               (lemma "inv_in[T1, *, one1]")
               (inst -1 "G!1" "lc_gen[T1, *, one1](G!1, K, x2!1)")
               (typepred "G!1")
               (expand "group?")
               (flatten)
               (expand "monoid?")
               (flatten)
               (expand "monad?")
               (flatten)
               (hide-all-but (-1 -6 -7 1))
               (expand "star_closed?")
               (inst?)
               (expand "member")
               (propax))
              ("2"
               (typepred "phi!1")
               (expand "homomorphism?")
               (inst?)
               (("1"
                 (rewrite "homo_inv")
                 (replace -3 * rl)
                 (replaces -2)
                 (rewrite "inv_left[T2, o, one2]"))
                ("2"
                 (hide (-1 2 3))
                 (replace -1 1 rl)
                 (typepred "lc_gen[T1, *, one1](G!1, K, x2!1)")
                 (rewrite "inv_in[T1, *, one1]"))))))))
          ("2"
           (expand "surjective?")
           (skosimp*)
           (typepred "y!1")
           (expand "extend" -1)
           (prop)
           (expand "image")
           (skosimp)
           (inst 1 "*[T1, *, one1](x!1, K)")
           (("1"
             (expand "restrict")
             (typepred "lc_gen(G!1, K, *[T1, *, one1](x!1, K))")
             (lemma "lc_eq[T1, *, one1]")
             (inst -1 "G!1" "K" "x!1"
              "lc_gen(G!1, K, *[T1, *, one1](x!1, K))")
             (assert)
             (skosimp*)
             (typepred "h!1")
             (expand "K" -1)
             (expand "kernel" -1)
             (flatten)
             (replace -3 -7)
             (replace -7 1)
             (typepred "phi!1")
             (expand "homomorphism?")
             (inst?)
             (replaces -1)
             (replaces -2)
             (rewrite "one_right[T2, o, one2]"))
            ("2"
             (prop)
             (("1" (inst 1 "x!1")) ("2" (expand "/") (grind))))))))
        ("2"
         (expand "homomorphism?")
         (skosimp*)
         (expand "restrict")
         (typepred "lc_gen(G!1, K, mult(G!1, K)(a!1, b!1))")
         (typepred "a!1")
         (typepred "b!1")
         (skosimp*)
         (name-replace "J" "lc_gen(G!1, K, mult(G!1, K)(a!1, b!1))")
         (replace -1 -6)
         (replace -3 -6)
         (rewrite "mult_lem[T1, *, one1]")
         (lemma "lc_eq[T1, *, one1]")
         (inst -1 "G!1" "K" "a!3 * a!2" "J")
         (assert)
         (skosimp)
         (lemma "divby_r[T1,*,one1]")
         (("1"
           (inst?)
           (assert)
           (replace -1 1 rl)
           (typepred "lc_gen(G!1, K, a!1)")
           (replace -7 -2)
           (lemma "lc_eq[T1, *, one1]")
           (inst?)
           (inst -1 "G!1")
           (assert)
           (skosimp)
           (lemma "divby_r[T1,*,one1]")
           (inst?)
           (assert)
           (replace -9 1)
           (replace -1 1 rl)
           (typepred "lc_gen(G!1, K, b!1)")
           (replace -9 -2)
           (lemma "lc_eq[T1, *, one1]")
           (inst?)
           (inst -1 "G!1")
           (assert)
           (skosimp)
           (lemma "divby_r[T1, *, one1]")
           (inst?)
           (assert)
           (replace -11 1)
           (replace -1 1 rl)
           (hide-all-but 1)
           (typepred "h!1")
           (typepred "h!2")
           (typepred "h!3")
           (expand* "K" "kernel")
           (flatten)
           (lemma "inv_in[T1, *, one1]")
           (copy -1)
           (copy -1)
           (inst -1 "G!1" "h!1")
           (inst -2 "G!1" "h!2")
           (inst -3 "G!1" "h!3")
           (lemma "homo_inv")
           (copy -1)
           (copy -1)
           (inst -1 "G!1" "GP!1" "phi!1" "h!1")
           (inst -2 "G!1" "GP!1" "phi!1" "h!2")
           (inst -3 "G!1" "GP!1" "phi!1" "h!3")
           (replace -12 -1)
           (replace -10 -2)
           (replace -8 -3)
           (rewrite "inv_one[T2,o,one2]")
           (typepred "phi!1")
           (expand "homomorphism?")
           (copy -1)
           (copy -1)
           (copy -1)
           (inst -1 "a!3 * a!2" "inv[T1, *, one1](h!1)")
           (("1"
             (inst -2 "a!3" "a!2")
             (inst -3 "a!3" "inv[T1, *, one1](h!2)")
             (inst -4 "a!2" "inv[T1, *, one1](h!3)")
             (replaces -1)
             (replaces -1)
             (replaces -1)
             (replaces -1)
             (replaces -1)
             (replaces -1)
             (replaces -1)
             (hide-all-but 1)
             (rewrite "one_right[T2,o,one2]")
             (rewrite "one_right[T2,o,one2]")
             (rewrite "one_right[T2,o,one2]"))
            ("2"
             (hide-all-but 1)
             (typepred "a!2" "a!3" "G!1")
             (expand "group?")
             (flatten)
             (expand "monoid?")
             (flatten)
             (expand "monad?")
             (flatten)
             (hide (-4 -5 -6 -7))
             (expand "star_closed?")
             (inst?)
             (expand "member")
             (propax))))
          ("2" (hide-all-but 1) (rewrite "T1_is_group"))))))
      ("2"
       (skosimp*)
       (expand "extend")
       (expand "image")
       (inst 1 "lc_gen[T1, *, one1](G!1, K, x1!1)")
       (expand "restrict")
       (propax))
      ("3" (lemma "kernel_normal") (inst?) (assert))
      ("4"
       (skosimp*)
       (expand "extend")
       (expand "image")
       (inst 1 "lc_gen[T1, *, one1](G!1, K, A!1)")
       (expand "restrict")
       (propax))))
    ("2" (skosimp*) (rewrite "T2_is_group"))
    ("3"
     (skosimp*)
     (rewrite "left_cosets_group[T1, *, one1]")
     (hide 2)
     (lemma "kernel_normal")
     (inst?)
     (assert))
    ("4" (skosimp*) (lemma "first_isomorphism_th_TCC3") (inst?) (assert))
    ("5"
     (skosimp*)
     (lemma "homo_image")
     (inst?)
     (("1" (expand "subgroup?") (assert))
      ("2" (hide 2) (rewrite "group_is_subgroup[T1, *, one1]"))))
    ("6" (skosimp*) (lemma "kernel_normal") (inst?) (assert))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: homomorphism_lemmas
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (inst 1 "one1")
   (("1" (rewrite "left_coset_one[T1, *, one1]"))
    ("2"
     (typepred "G!1")
     (expand* "group?" "monoid?" "monad?" "subset?" "member")
     (assert))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: homomorphism_lemmas
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "homo_image")
   (inst?)
   (("1" (lemma "subgroup_is_group[T2, o, one2]") (inst?) (assert))
    ("2" (hide 2) (typepred "H!1") (expand "normal_subgroup?") (assert))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: homomorphism_lemmas
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "homo_inv_image")
   (inst?)
   (("1" (lemma "subgroup_is_group[T1, *, one1]") (inst?) (assert))
    ("2" (hide 2) (typepred "K!1") (expand "normal_subgroup?") (assert))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: homomorphism_lemmas
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "homo_image[T1, *, one1,T2, o, one2]")
   (inst?)
   (("1" (expand "subgroup?") (assert))
    ("2" (hide (-1 2)) (rewrite "group_is_subgroup[T1, *, one1]"))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: homomorphism_lemmas
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (inst 1 "one1")
   (("1" (rewrite "left_coset_one"))
    ("2"
     (typepred "G!1")
     (expand "group?")
     (flatten)
     (expand "monoid?")
     (flatten)
     (expand "monad?")
     (flatten)
     (expand "member")
     (propax))))


proof_type: t_proof
decl_type: tcc
library: groups
theory: homomorphism_lemmas
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (lemma "left_cosets_group[T1, *, one1]")
   (inst?)
   (hide 2)
   (lemma "kernel_normal")
   (inst?)
   (assert))


proof_type: f_proof
decl_type: formula
library: groups
theory: isomorphism_theorems
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "subgroup?")
   (prop)
   (("1"
     (hide -1)
     (expand* "subset?" "member")
     (skosimp*)
     (expand "/")
     (expand "restrict")
     (expand "left_cosets")
     (skosimp)
     (inst?)
     (hide -1)
     (typepred "a!1" "M!1")
     (expand* "normal_subgroup?" "subgroup?" "subset?" "member")
     (flatten)
     (hide (-2 -4))
     (inst?)
     (assert))
    ("2"
     (hide -1)
     (expand "group?")
     (prop)
     (("1"
       (expand "monoid?")
       (prop)
       (("1"
         (expand "monad?")
         (prop)
         (("1"
           (expand "star_closed?")
           (skosimp*)
           (expand "member")
           (expand "/")
           (expand "restrict")
           (expand "left_cosets")
           (typepred "x!1" "y!1")
           (hide (-2 -4))
           (skosimp*)
           (inst 1 "a!1 * a!2")
           (("1"
             (replaces -1)
             (replaces -1)
             (lemma "mult_lem[T1, *, one1]")
             (inst?)
             (("1"
               (hide 2)
               (typepred "a!2" "M!1")
               (expand* "normal_subgroup?" "subgroup?" "subset?"
                "member")
               (flatten)
               (hide (-2 -4))
               (inst?)
               (assert))
              ("2"
               (hide 2)
               (typepred "a!1" "M!1")
               (expand* "normal_subgroup?" "subgroup?" "subset?"
                "member")
               (flatten)
               (hide (-2 -4))
               (inst?)
               (assert))))
            ("2" (hide (-1 -2)) (rewrite "product_in[T1, *, one1]"))))
          ("2"
           (expand* "member" "/" "left_cosets")
           (expand "restrict")
           (typepred "M!1")
           (expand* "group?" "monoid?" "monad?" "member")
           (flatten)
           (hide-all-but (-2 1))
           (inst 1 "one1")
           (rewrite "left_coset_one"))
          ("3"
           (expand "identity?")
           (skosimp*)
           (expand "restrict")
           (lemma "N_is_identity[T1, *, one1]")
           (inst?)
           (("1" (flatten) (assert))
            ("2"
             (hide 2)
             (typepred "x!1")
             (skosimp*)
             (inst?)
             (hide -)
             (typepred "a!1" "M!1")
             (expand* "normal_subgroup?" "subgroup?" "subset?" "member")
             (flatten)
             (inst?)
             (assert))))))
        ("2"
         (expand "associative?")
         (expand "restrict")
         (skosimp*)
         (typepred "z!1")
         (typepred "y!1")
         (typepred "x!1")
         (skosimp*)
         (replace -1)
         (hide -1)
         (replace -2)
         (hide -2)
         (replace -3)
         (hide -3)
         (rewrite "mult_lem[T1, *, one1]")
         (("1"
           (rewrite "mult_lem[T1, *, one1]")
           (("1"
             (rewrite "mult_lem[T1, *, one1]")
             (("1"
               (rewrite "mult_lem[T1, *, one1]")
               (("1" (rewrite "assoc[T1, *, one1]"))
                ("2"
                 (hide-all-but 1)
                 (typepred "a!2" "a!3" "G!1" "M!1")
                 (expand "normal_subgroup?")
                 (flatten)
                 (expand "subgroup?")
                 (expand "subset?")
                 (hide (-4 -6))
                 (copy -4)
                 (inst -1 "a!2")
                 (inst -5 "a!3")
                 (expand "member")
                 (expand* "group?" "monoid?" "monad?")
                 (flatten)
                 (hide-all-but (-1 -4 -9 1))
                 (expand "star_closed?")
                 (inst?)
                 (expand "member")
                 (propax))
                ("3"
                 (hide-all-but 1)
                 (typepred "a!1" "M!1")
                 (expand* "normal_subgroup?" "subgroup?" "subset?"
                  "member")
                 (flatten)
                 (hide (-2 -4))
                 (inst?)
                 (assert))))
              ("2"
               (hide-all-but 1)
               (typepred "a!3" "M!1")
               (expand* "normal_subgroup?" "subgroup?" "subset?"
                "member")
               (flatten)
               (hide (-2 -4))
               (inst?)
               (assert))
              ("3"
               (hide-all-but 1)
               (typepred "a!2" "M!1")
               (expand* "normal_subgroup?" "subgroup?" "subset?"
                "member")
               (flatten)
               (hide (-2 -4))
               (inst?)
               (assert))))
            ("2"
             (hide-all-but 1)
             (typepred "a!3" "M!1")
             (expand* "normal_subgroup?" "subgroup?" "subset?" "member")
             (flatten)
             (hide (-2 -4))
             (inst?)
             (assert))
            ("3"
             (hide-all-but 1)
             (typepred "a!1" "a!2" "G!1" "M!1")
             (expand "normal_subgroup?")
             (flatten)
             (expand "subgroup?")
             (expand "subset?")
             (hide (-4 -6))
             (copy -4)
             (inst -1 "a!1")
             (inst -5 "a!2")
             (expand "member")
             (expand* "group?" "monoid?" "monad?")
             (flatten)
             (hide-all-but (-1 -4 -9 1))
             (expand "star_closed?")
             (inst?)
             (expand "member")
             (propax))))
          ("2"
           (hide-all-but 1)
           (typepred "a!2" "M!1")
           (expand* "normal_subgroup?" "subgroup?" "subset?" "member")
           (flatten)
           (hide (-2 -4))
           (inst?)
           (assert))
          ("3"
           (hide-all-but 1)
           (typepred "a!1" "M!1")
           (expand* "normal_subgroup?" "subgroup?" "subset?" "member")
           (flatten)
           (hide (-2 -4))
           (inst?)
           (assert))))))
      ("2"
       (expand "inv_exists?")
       (skosimp*)
       (typepred "x!1")
       (skosimp*)
       (inst 1 "*[T1, *, one1](inv[T1, *, one1](a!1), N!1)")
       (("1"
         (replace -1)
         (hide -1)
         (rewrite "mult_lem[T1, *, one1]")
         (("1"
           (rewrite "mult_lem[T1, *, one1]")
           (("1"
             (rewrite "inv_right[T1, *, one1]")
             (rewrite "inv_left[T1, *, one1]")
             (rewrite "left_coset_one"))
            ("2"
             (hide-all-but 1)
             (typepred "a!1" "M!1")
             (expand* "normal_subgroup?" "subgroup?" "subset?" "member")
             (flatten)
             (hide (-2 -4))
             (inst?)
             (assert))
            ("3"
             (hide-all-but 1)
             (typepred "a!1" "M!1")
             (expand* "normal_subgroup?" "subgroup?" "subset?" "member")
             (flatten)
             (hide (-2 -4))
             (inst?)
             (assert)
             (rewrite "inv_in[T1, *, one1]"))))
          ("2"
           (hide-all-but 1)
           (typepred "a!1" "M!1")
           (expand* "normal_subgroup?" "subgroup?" "subset?" "member")
           (flatten)
           (hide (-2 -4))
           (inst?)
           (assert)
           (rewrite "inv_in[T1, *, one1]"))
          ("3"
           (hide-all-but 1)
           (typepred "a!1" "M!1")
           (expand* "normal_subgroup?" "subgroup?" "subset?" "member")
           (flatten)
           (hide (-2 -4))
           (inst?)
           (assert))))
        ("2"
         (prop)
         (("1"
           (expand "*")
           (inst + "inv[T1, *, one1](a!1)")
           (rewrite "inv_in[T1, *, one1]"))
          ("2"
           (expand "/")
           (hide -2)
           (expand "restrict")
           (expand "left_cosets")
           (inst 1 "inv[T1, *, one1](a!1)")
           (rewrite "inv_in[T1, *, one1]"))))))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: isomorphism_theorems
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (expand "homomorphism?")
   (inst 1 "(LAMBDA (x: (H!1)): *[T1, *, one1](x, N!1))")
   (("1"
     (prop)
     (("1"
       (skosimp*)
       (rewrite "mult_lem[T1, *, one1]")
       (("1"
         (hide 2)
         (typepred "b!1")
         (expand "prod")
         (inst 1 "one1" "b!1")
         (("1" (rewrite "one_left[T1, *, one1]"))
          ("2"
           (typepred "N!1")
           (expand* "group?" "monoid?" "monad?" "member")
           (flatten))))
        ("2"
         (hide 2)
         (typepred "a!1")
         (expand "prod")
         (inst 1 "one1" "a!1")
         (("1" (rewrite "one_left[T1, *, one1]"))
          ("2"
           (typepred "N!1")
           (expand* "group?" "monoid?" "monad?" "member")
           (assert))))))
      ("2"
       (expand "surjective?")
       (skosimp*)
       (typepred "y!1")
       (skosimp)
       (typepred "a!1")
       (hide -3)
       (expand "prod" -1)
       (skosimp)
       (typepred "k!1")
       (typepred "h!1")
       (replaces -4)
       (lemma "normal_left_is_right[T1, *, one1]")
       (inst -1 "G!1" "N!1")
       (assert)
       (flatten)
       (inst -2 "a!1")
       (("1"
         (replaces -2)
         (replaces -4)
         (inst 1 "k!1")
         (lemma "normal_left_is_right[T1, *, one1]")
         (inst -1 "G!1" "N!1")
         (assert)
         (inst -1 "k!1")
         (("1"
           (replaces -1)
           (hide-all-but 1)
           (lemma "rc_is_eq[T1, *, one1]")
           (inst -1 "G!1" "N!1" "one1" "h!1")
           (assert)
           (prop)
           (("1"
             (rewrite "right_coset_one")
             (lemma "right_coset_assoc[T1, *, one1]")
             (inst?)
             (assert))
            ("2"
             (inst 1 "inv[T1, *, one1](h!1)")
             (("1" (rewrite "inv_left[T1, *, one1]"))
              ("2" (hide 2) (typepred "h!1") (rewrite "inv_in"))))))
          ("2"
           (typepred "H!1")
           (hide-all-but (-2 -5 1))
           (expand "subgroup?")
           (expand* "subset?" "member")
           (inst?)
           (assert))))
        ("2"
         (replaces -4)
         (hide (- 2))
         (typepred "h!1" "k!1" "N!1" "H!1")
         (expand* "normal_subgroup?" "subgroup?" "subset?" "member")
         (flatten)
         (hide (-3 -5 -6))
         (inst -3 "h!1")
         (inst -4 "k!1")
         (assert)
         (rewrite "product_in[T1, *, one1]"))))
      ("3"
       (decompose-equality 1)
       (("1"
         (iff)
         (prop)
         (("1"
           (expand* "kernel" "intersection")
           (expand "member")
           (prop)
           (lemma "lc_eq[T1, *, one1]")
           (inst -1 "G!1" "N!1" "x!1" "one1")
           (assert)
           (rewrite "left_coset_one")
           (assert)
           (prop)
           (("1" (skosimp) (rewrite "one_left[T1, *, one1]") (assert))
            ("2"
             (hide-all-but 1)
             (typepred "N!1")
             (expand "normal_subgroup?")
             (assert))))
          ("2"
           (expand* "intersection" "kernel")
           (expand "member")
           (flatten)
           (assert)
           (lemma "lc_is_eq[T1, *, one1]")
           (inst -1 "G!1" "N!1" "x!1" "one1")
           (prop)
           (("1" (rewrite "left_coset_one"))
            ("2"
             (hide-all-but 1)
             (typepred "N!1")
             (expand "normal_subgroup?")
             (assert))
            ("3" (inst 1 "x!1") (rewrite "one_left[T1, *, one1]"))))))
        ("2"
         (rewrite "left_cosets_group[T1, *, one1]")
         (("1"
           (hide 2)
           (lemma "HK_subgroup[T1, *, one1]")
           (inst -1 "G!1" "H!1" "N!1")
           (("1"
             (assert)
             (lemma "HK_subgroup_permute[T1, *, one1]")
             (inst?)
             (("1"
               (assert)
               (replaces -1)
               (lemma "normal_subgroup_tran[T1, *, one1]")
               (("1"
                 (inst -1 "G!1" "prod[T1, *, one1](N!1, H!1)" "N!1")
                 (assert)
                 (expand "subgroup?" -1)
                 (flatten)
                 (hide -1)
                 (lemma "H_K_are_subgroups[T1, *, one1]")
                 (inst?)
                 (("1" (assert))
                  ("2"
                   (hide-all-but 1)
                   (typepred "N!1")
                   (expand "normal_subgroup?")
                   (assert))))
                ("2" (rewrite "T1_is_group"))))
              ("2"
               (hide (-1 2))
               (typepred "N!1")
               (expand "normal_subgroup?")
               (assert))))
            ("2"
             (hide-all-but 1)
             (typepred "N!1")
             (expand "normal_subgroup?")
             (assert))))
          ("2"
           (hide 2)
           (lemma "HK_subgroup[T1, *, one1]")
           (inst -1 "G!1" "H!1" "N!1")
           (("1"
             (assert)
             (lemma "HK_subgroup_permute[T1, *, one1]")
             (inst?)
             (("1" (assert) (replaces -1) (expand "subgroup?") (propax))
              ("2"
               (hide-all-but 1)
               (typepred "N!1")
               (expand "normal_subgroup?")
               (assert))))
            ("2"
             (hide-all-but 1)
             (typepred "N!1")
             (expand "normal_subgroup?")
             (assert))))))
        ("3" (rewrite "T1_is_group"))
        ("4"
         (inst 1 "one1")
         (("1" (rewrite "left_coset_one"))
          ("2"
           (lemma "HK_subgroup[T1, *, one1]")
           (inst -1 "G!1" "H!1" "N!1")
           (("1"
             (assert)
             (lemma "HK_subgroup_permute[T1, *, one1]")
             (inst?)
             (("1"
               (assert)
               (replaces -1)
               (expand "subgroup?")
               (flatten)
               (hide -1)
               (expand* "group?" "monoid?" "monad?" "member"))
              ("2"
               (hide-all-but 1)
               (typepred "N!1")
               (expand "normal_subgroup?")
               (assert))))
            ("2"
             (hide-all-but 1)
             (typepred "N!1")
             (expand "normal_subgroup?")
             (assert))))))
        ("5"
         (expand "homomorphism?")
         (skosimp*)
         (rewrite "mult_lem[T1, *, one1]")
         (("1"
           (hide 2)
           (typepred "b!1")
           (lemma "HK_subgroup[T1, *, one1]")
           (inst -1 "G!1" "H!1" "N!1")
           (("1"
             (assert)
             (expand "subgroup?")
             (flatten)
             (lemma "H_K_are_subgroups[T1, *, one1]")
             (inst?)
             (("1"
               (assert)
               (flatten)
               (lemma "HK_subgroup_permute[T1, *, one1]")
               (inst?)
               (("1"
                 (assert)
                 (replaces -1)
                 (hide-all-but (-1 -5 1))
                 (expand* "subgroup?" "subset?" "member")
                 (inst?)
                 (assert))
                ("2"
                 (hide-all-but 1)
                 (typepred "N!1")
                 (expand "normal_subgroup?")
                 (assert))))
              ("2"
               (hide-all-but 1)
               (typepred "N!1")
               (expand "normal_subgroup?")
               (assert))))
            ("2"
             (hide-all-but 1)
             (typepred "N!1")
             (expand "normal_subgroup?")
             (assert))))
          ("2"
           (hide 2)
           (typepred "a!1")
           (lemma "HK_subgroup[T1, *, one1]")
           (inst -1 "G!1" "H!1" "N!1")
           (("1"
             (assert)
             (expand "subgroup?")
             (flatten)
             (hide -1)
             (lemma "H_K_are_subgroups[T1, *, one1]")
             (inst?)
             (("1"
               (assert)
               (flatten)
               (hide -2)
               (lemma "HK_subgroup_permute[T1, *, one1]")
               (inst?)
               (("1"
                 (assert)
                 (replaces -1)
                 (expand* "subgroup?" "subset?" "member")
                 (inst?)
                 (assert))
                ("2"
                 (hide-all-but 1)
                 (typepred "N!1")
                 (expand "normal_subgroup?")
                 (assert))))
              ("2"
               (hide-all-but 1)
               (typepred "N!1")
               (expand "normal_subgroup?")
               (assert))))
            ("2"
             (hide-all-but 1)
             (typepred "N!1")
             (expand "normal_subgroup?")
             (hide-all-but 1)
             (typepred "N!1")
             (expand "normal_subgroup?")
             (assert))))))
        ("6"
         (skosimp*)
         (prop)
         (("1"
           (inst 1 "x!1")
           (typepred "x!1")
           (lemma "HK_subgroup[T1, *, one1]")
           (inst -1 "G!1" "H!1" "N!1")
           (("1"
             (assert)
             (expand "subgroup?")
             (flatten)
             (hide -1)
             (lemma "H_K_are_subgroups[T1, *, one1]")
             (inst?)
             (("1"
               (assert)
               (flatten)
               (hide -2)
               (lemma "HK_subgroup_permute[T1, *, one1]")
               (inst?)
               (("1"
                 (assert)
                 (replaces -1)
                 (expand* "subgroup?" "subset?" "member")
                 (inst?)
                 (assert))
                ("2"
                 (hide-all-but 1)
                 (typepred "N!1")
                 (expand "normal_subgroup?")
                 (assert))))
              ("2"
               (hide-all-but 1)
               (typepred "N!1")
               (expand "normal_subgroup?")
               (assert))))
            ("2"
             (hide-all-but 1)
             (typepred "N!1")
             (expand "normal_subgroup?")
             (assert))))
          ("2"
           (expand "/")
           (expand "restrict")
           (expand "left_cosets")
           (inst 1 "x!1")
           (lemma "HK_subgroup[T1, *, one1]")
           (inst -1 "G!1" "H!1" "N!1")
           (("1"
             (assert)
             (expand "subgroup?")
             (flatten)
             (hide -1)
             (lemma "H_K_are_subgroups[T1, *, one1]")
             (inst?)
             (("1"
               (assert)
               (flatten)
               (hide -2)
               (lemma "HK_subgroup_permute[T1, *, one1]")
               (inst?)
               (("1"
                 (assert)
                 (replaces -1)
                 (expand* "subgroup?" "subset?" "member")
                 (inst?)
                 (assert))
                ("2"
                 (hide-all-but 1)
                 (typepred "N!1")
                 (expand "normal_subgroup?")
                 (assert))))
              ("2"
               (hide-all-but 1)
               (typepred "N!1")
               (expand "normal_subgroup?")
               (assert))))
            ("2"
             (hide-all-but 1)
             (typepred "N!1")
             (expand "normal_subgroup?")
             (assert))))))))))
    ("2"
     (skosimp*)
     (prop)
     (("1"
       (inst 1 "x!1")
       (lemma "HK_subgroup[T1, *, one1]")
       (inst -1 "G!1" "H!1" "N!1")
       (("1"
         (assert)
         (expand "subgroup?")
         (flatten)
         (hide -1)
         (lemma "H_K_are_subgroups[T1, *, one1]")
         (inst?)
         (("1"
           (assert)
           (flatten)
           (hide -2)
           (lemma "HK_subgroup_permute[T1, *, one1]")
           (inst?)
           (("1"
             (assert)
             (replaces -1)
             (expand* "subgroup?" "subset?" "member")
             (inst?)
             (assert))
            ("2"
             (hide-all-but 1)
             (typepred "N!1")
             (expand "normal_subgroup?")
             (assert))))
          ("2"
           (hide-all-but 1)
           (typepred "N!1")
           (expand "normal_subgroup?")
           (assert))))
        ("2"
         (hide-all-but 1)
         (typepred "N!1")
         (expand "normal_subgroup?")
         (assert))))
      ("2"
       (expand "/")
       (expand "restrict")
       (expand "left_cosets")
       (inst 1 "x!1")
       (lemma "HK_subgroup[T1, *, one1]")
       (inst -1 "G!1" "H!1" "N!1")
       (("1"
         (assert)
         (expand "subgroup?")
         (flatten)
         (hide -1)
         (lemma "H_K_are_subgroups[T1, *, one1]")
         (inst?)
         (("1"
           (assert)
           (flatten)
           (hide -2)
           (lemma "HK_subgroup_permute[T1, *, one1]")
           (inst?)
           (("1"
             (assert)
             (replaces -1)
             (expand* "subgroup?" "subset?" "member")
             (inst?)
             (assert))
            ("2"
             (hide-all-but 1)
             (typepred "N!1")
             (expand "normal_subgroup?")
             (assert))))
          ("2"
           (hide-all-but 1)
           (typepred "N!1")
           (expand "normal_subgroup?")
           (assert))))
        ("2"
         (hide-all-but 1)
         (typepred "N!1")
         (expand "normal_subgroup?")
         (assert))))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: isomorphism_theorems
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (skoletin* 1)
   (("1"
     (lemma "second_isomorphism_th_aux")
     (inst -1 "G!1" "H!1" "N!1")
     (assert)
     (skosimp)
     (lemma
      "first_isomorphism_th[T1, *, one1, left_cosets[T1, *, one1](prod[T1, *, one1](N!1, H!1), N!1), mult(prod[T1, *, one1](N!1, H!1), N!1), N!1]")
     (("1"
       (inst -1 "H!1" "prod[T1, *, one1](N!1, H!1) / N!1" "varphi!1")
       (assert)
       (replace -4 -1)
       (case-replace
        "extend
                                       [left_cosets[T1, *, one1](prod[T1, *, one1](N!1, H!1), N!1),
                                        (prod[T1, *, one1](N!1, H!1) / N!1), bool, FALSE]
                                       (image(varphi!1, restrict[T1, (H!1), bool](H!1))) = prod[T1, *, one1](N!1, H!1) / N!1")
       (("1"
         (prop)
         (("1"
           (hide (-1 -2 -4))
           (lemma
            "kernel_normal[T1, *, one1, left_cosets[T1, *, one1](prod[T1, *, one1](N!1, H!1), N!1), mult(prod[T1, *, one1](N!1, H!1), N!1), N!1]")
           (inst -1 "H!1" "prod[T1, *, one1](N!1, H!1) / N!1" "varphi!1")
           (assert))
          ("2"
           (replaces -6)
           (hide-all-but (-2 1))
           (expand "isomorphic?")
           (skosimp)
           (inst 1 "phi!1")
           (expand "isomorphism?")
           (prop)
           (hide -1)
           (expand "homomorphism?")
           (skosimp*)
           (inst -1 "a!1" "b!1")
           (assert))))
        ("2"
         (hide (-1 -4 2))
         (decompose-equality 1)
         (expand "extend")
         (lift-if)
         (prop)
         (expand "image")
         (expand "surjective?")
         (inst -3 "x!1")
         (skosimp)
         (inst 1 "x!2")
         (("1" (assert)) ("2" (expand "restrict") (propax))))))
      ("2"
       (hide-all-but 1)
       (rewrite "left_cosets_group[T1, *, one1]")
       (("1"
         (hide-all-but 1)
         (lemma "HK_subgroup[T1, *, one1]")
         (inst -1 "G!1" "H!1" "N!1")
         (("1"
           (assert)
           (lemma "HK_subgroup_permute[T1, *, one1]")
           (inst?)
           (("1"
             (assert)
             (replaces -1)
             (lemma "H_K_are_subgroups[T1, *, one1]")
             (inst?)
             (("1"
               (prop)
               (("1"
                 (hide -2)
                 (lemma "normal_subgroup_tran[T1, *, one1]")
                 (("1"
                   (inst -1 "G!1" "prod[T1, *, one1](N!1, H!1)" "N!1")
                   (assert))
                  ("2" (rewrite "G_TCC1"))))
                ("2" (expand "subgroup?") (assert))))
              ("2"
               (hide 2)
               (hide-all-but 1)
               (typepred "N!1")
               (expand "normal_subgroup?")
               (assert))))
            ("2"
             (hide-all-but 1)
             (typepred "N!1")
             (expand "normal_subgroup?")
             (assert))))
          ("2"
           (hide-all-but 1)
           (typepred "N!1")
           (expand "normal_subgroup?")
           (assert))))
        ("2"
         (hide 2)
         (lemma "HK_subgroup[T1, *, one1]")
         (inst -1 "G!1" "H!1" "N!1")
         (("1"
           (assert)
           (lemma "HK_subgroup_permute[T1, *, one1]")
           (inst?)
           (("1"
             (assert)
             (replaces -1)
             (lemma "H_K_are_subgroups[T1, *, one1]")
             (inst?)
             (("1"
               (prop)
               (("1" (hide -2) (expand "subgroup?") (propax))
                ("2" (expand "subgroup?") (propax))))
              ("2"
               (hide 2)
               (typepred "N!1")
               (expand "normal_subgroup?")
               (assert))))
            ("2" (typepred "N!1") (expand "normal_subgroup?") (assert))))
          ("2" (typepred "N!1") (expand "normal_subgroup?") (assert))))))
      ("3" (hide-all-but 1) (rewrite "G_TCC1"))
      ("4"
       (hide-all-but 1)
       (inst 1 "one1")
       (("1" (rewrite "left_coset_one[T1,*,one1]"))
        ("2"
         (lemma "HK_subgroup[T1, *, one1]")
         (inst -1 "G!1" "H!1" "N!1")
         (("1"
           (assert)
           (lemma "HK_subgroup_permute[T1, *, one1]")
           (inst?)
           (("1"
             (assert)
             (replaces -1)
             (expand* "subgroup?" "group?" "monoid?" "monad?" "member"))
            ("2" (typepred "N!1") (expand "normal_subgroup?") (assert))))
          ("2"
           (typepred "N!1")
           (expand "normal_subgroup?")
           (assert))))))))
    ("2"
     (skosimp)
     (rewrite "left_cosets_group[T1, *, one1]")
     (("1"
       (replaces -1)
       (replaces -2)
       (hide (-1 2))
       (lemma "HK_subgroup[T1, *, one1]")
       (inst -1 "G!1" "H!1" "N!1")
       (("1"
         (assert)
         (lemma "HK_subgroup_permute[T1, *, one1]")
         (inst?)
         (("1"
           (assert)
           (replaces -1)
           (lemma "H_K_are_subgroups[T1, *, one1]")
           (inst?)
           (("1"
             (prop)
             (("1"
               (hide -2)
               (lemma "normal_subgroup_tran[T1, *, one1]")
               (("1"
                 (inst -1 "G!1" "prod[T1, *, one1](N!1, H!1)" "N!1")
                 (assert))
                ("2" (rewrite "G_TCC1"))))
              ("2" (expand "subgroup?") (assert))))
            ("2"
             (hide 2)
             (typepred "N!1")
             (expand "normal_subgroup?")
             (assert))))
          ("2" (typepred "N!1") (expand "normal_subgroup?") (assert))))
        ("2" (typepred "N!1") (expand "normal_subgroup?") (assert))))
      ("2"
       (replaces -1)
       (replaces -2)
       (hide (-1 2))
       (lemma "HK_subgroup[T1, *, one1]")
       (inst -1 "G!1" "H!1" "N!1")
       (("1"
         (assert)
         (lemma "HK_subgroup_permute[T1, *, one1]")
         (inst?)
         (("1" (assert) (replaces -1) (expand "subgroup?") (propax))
          ("2" (typepred "N!1") (expand "normal_subgroup?") (assert))))
        ("2" (typepred "N!1") (expand "normal_subgroup?") (assert))))))
    ("3" (skosimp) (rewrite "left_cosets_group[T1, *, one1]"))
    ("4"
     (skosimp)
     (hide -2)
     (inst 1 "one1")
     (("1" (rewrite "left_coset_one[T1,*,one1]"))
      ("2"
       (replaces -1)
       (replaces -1)
       (lemma "HK_subgroup[T1, *, one1]")
       (inst -1 "G!1" "H!1" "N!1")
       (("1"
         (assert)
         (lemma "HK_subgroup_permute[T1, *, one1]")
         (inst?)
         (("1"
           (assert)
           (replaces -1)
           (expand* "subgroup?" "group?" "monoid?" "monad?" "member"))
          ("2" (typepred "N!1") (expand "normal_subgroup?") (assert))))
        ("2" (typepred "N!1") (expand "normal_subgroup?") (assert))))))
    ("5"
     (skosimp)
     (hide -2)
     (inst 1 "one1")
     (("1" (rewrite "left_coset_one[T1,*,one1]"))
      ("2"
       (replaces -1)
       (replaces -1)
       (typepred "H!1")
       (expand* "subgroup?" "group?" "monoid?" "monad?" "member")
       (assert))))
    ("6"
     (skosimp)
     (replaces -1)
     (replaces -2)
     (hide -1)
     (lemma "HK_subgroup[T1, *, one1]")
     (inst -1 "G!1" "H!1" "N!1")
     (("1"
       (assert)
       (lemma "HK_subgroup_permute[T1, *, one1]")
       (inst?)
       (("1"
         (assert)
         (replaces -1)
         (lemma "H_K_are_subgroups[T1, *, one1]")
         (inst?)
         (("1"
           (prop)
           (("1"
             (hide -2)
             (lemma "normal_subgroup_tran[T1, *, one1]")
             (("1"
               (inst -1 "G!1" "prod[T1, *, one1](N!1, H!1)" "N!1")
               (assert))
              ("2" (rewrite "G_TCC1"))))
            ("2" (expand "subgroup?") (assert))))
          ("2" (typepred "N!1") (expand "normal_subgroup?") (assert))))
        ("2" (typepred "N!1") (expand "normal_subgroup?") (assert))))
      ("2" (typepred "N!1") (expand "normal_subgroup?") (assert))))
    ("7"
     (skosimp)
     (replaces -1)
     (replaces -2)
     (hide -1)
     (lemma "HK_subgroup[T1, *, one1]")
     (inst -1 "G!1" "H!1" "N!1")
     (("1"
       (assert)
       (lemma "HK_subgroup_permute[T1, *, one1]")
       (inst?)
       (("1"
         (assert)
         (replaces -1)
         (expand* "subgroup?" "group?" "monoid?" "monad?" "member"))
        ("2" (typepred "N!1") (expand "normal_subgroup?") (assert))))
      ("2" (typepred "N!1") (expand "normal_subgroup?") (assert))))
    ("8"
     (skosimp)
     (hide (-1 -3))
     (expand "normal_subgroup?")
     (flatten)
     (hide -2)
     (expand "subgroup?")
     (assert))
    ("9"
     (skosimp)
     (hide (-1 -2))
     (lemma "subgroup_intersection[T1, *, one1]")
     (("1"
       (inst -1 "G!1" "N!1" "H!1")
       (assert)
       (typepred "N!1")
       (expand "normal_subgroup?")
       (flatten)
       (assert)
       (hide (-1 -2 -3))
       (expand "subgroup?")
       (propax))
      ("2" (rewrite "G_TCC1"))))))


proof_type: f_proof
decl_type: formula
library: groups
theory: isomorphism_theorems
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp*)
   (inst 1
    "(LAMBDA (A: left_cosets(G!1,N!1)): *[T1, *, one1](lc_gen(G!1,N!1,A), M!1))")
   (("1"
     (prop)
     (("1"
       (expand "homomorphism?")
       (skosimp*)
       (expand "restrict")
       (typepred "a!1" "b!1")
       (hide (-2 -4))
       (skosimp*)
       (replace -1 1)
       (replace -2 1)
       (lemma "lc_gen_normal[T1, *, one1]")
       (copy -1)
       (inst -1 "G!1" "N!1" "a!2")
       (inst -2 "G!1" "N!1" "a!3")
       (assert)
       (skosimp*)
       (replaces -1)
       (replaces -1)
       (rewrite "mult_lem[T1, *, one1]")
       (lemma "lc_gen_normal[T1, *, one1]")
       (inst -1 "G!1" "N!1" "a!2 * a!3")
       (assert)
       (prop)
       (("1"
         (skosimp)
         (replaces -1)
         (typepred "h!1" "h!2" "h!3")
         (expand "subgroup?")
         (expand* "subset?" "member")
         (copy -6)
         (copy -7)
         (inst -1 "h!1")
         (inst -2 "h!2")
         (inst -8 "h!3")
         (assert)
         (hide (-3 -4 -5 -6 -7))
         (lemma "normal_left_is_right[T1, *, one1]")
         (copy -1)
         (copy -1)
         (inst -1 "G!1" "M!1")
         (assert)
         (inst -2 "G!1" "M!1")
         (assert)
         (inst -3 "G!1" "M!1")
         (assert)
         (typepred "M!1")
         (hide -1)
         (expand "normal_subgroup?")
         (flatten)
         (hide (-1 -2 -3 -5 -7))
         (inst -1 "h!3 * (a!2 * a!3)")
         (("1"
           (inst -2 "h!1 * a!2")
           (("1"
             (inst -3 "h!2 * a!3")
             (("1"
               (replaces -1)
               (replaces -1)
               (replaces -1)
               (lemma "right_coset_assoc[T1, *, one1]")
               (copy -1)
               (copy -1)
               (inst -1 "M!1" "h!3" "a!2 * a!3")
               (inst -2 "M!1" "h!1" "a!2")
               (inst -3 "M!1" "h!2" "a!3")
               (lemma "rc_is_eq[T1, *, one1]")
               (inst -1 "G!1" "M!1" "h!1" "one1")
               (reveal -8)
               (assert)
               (prop)
               (("1"
                 (lemma "rc_is_eq[T1, *, one1]")
                 (inst -1 "G!1" "M!1" "h!2" "one1")
                 (assert)
                 (prop)
                 (("1"
                   (lemma "rc_is_eq[T1, *, one1]")
                   (inst -1 "G!1" "M!1" "h!3" "one1")
                   (assert)
                   (prop)
                   (("1"
                     (rewrite "right_coset_one")
                     (replaces -1)
                     (replaces -1)
                     (replaces -1)
                     (replace -2 1 rl)
                     (replace -3 1 rl)
                     (replace -4 1 rl)
                     (lemma "normal_left_is_right[T1, *, one1]")
                     (inst?)
                     (assert)
                     (copy -1)
                     (copy -1)
                     (inst -1 "a!2 * a!3")
                     (("1"
                       (inst -2 "a!2")
                       (inst -3 "a!3")
                       (replace -1 1 rl)
                       (replace -2 1 rl)
                       (replace -3 1 rl)
                       (rewrite "mult_lem[T1, *, one1]"))
                      ("2"
                       (hide-all-but 1)
                       (typepred "a!2" "a!3" "G!1")
                       (expand* "group?" "monoid?" "monad?")
                       (flatten)
                       (hide (-4 -5 -6 -7))
                       (expand "star_closed?")
                       (inst?)
                       (expand "member")
                       (propax))))
                    ("2"
                     (hide-all-but 1)
                     (inst 1 "h!3")
                     (rewrite "one_right[T1, *, one1]"))))
                  ("2"
                   (hide-all-but 1)
                   (inst 1 "h!2")
                   (rewrite "one_right[T1, *, one1]"))))
                ("2"
                 (hide-all-but 1)
                 (inst 1 "h!1")
                 (rewrite "one_right[T1, *, one1]"))))
              ("2"
               (hide (-1 -2 -3 -5 2))
               (typepred "a!3")
               (reveal -7)
               (expand "subgroup?")
               (expand* "subgroup?" "subset?" "member")
               (inst -1 "h!2")
               (assert)
               (typepred "G!1")
               (expand* "group?" "monoid?" "monad?")
               (flatten)
               (hide (-2 -3 -4 -5))
               (expand "star_closed?")
               (inst?)
               (expand "member")
               (propax))))
            ("2"
             (hide (-1 -2 -4 -5 2))
             (typepred "a!2")
             (reveal -6)
             (expand "subgroup?")
             (expand* "subgroup?" "subset?" "member")
             (inst -1 "h!1")
             (assert)
             (typepred "G!1")
             (expand* "group?" "monoid?" "monad?")
             (flatten)
             (hide (-2 -3 -4 -5))
             (expand "star_closed?")
             (inst?)
             (expand "member")
             (propax))))
          ("2"
           (hide (-1 -2 -3 -4 2))
           (typepred "a!2" "a!3")
           (reveal -5)
           (expand "subgroup?")
           (expand* "subgroup?" "subset?" "member")
           (inst -1 "h!3")
           (assert)
           (typepred "G!1")
           (expand* "group?" "monoid?" "monad?")
           (flatten)
           (hide (-2 -3 -4 -5))
           (expand "star_closed?")
           (copy -1)
           (inst -1 "a!2" "a!3")
           (expand "member")
           (inst -2 "h!3" "a!2 * a!3"))))
        ("2"
         (hide-all-but 1)
         (typepred "a!2" "a!3")
         (typepred "G!1")
         (expand* "group?" "monoid?" "monad?")
         (flatten)
         (hide (-2 -3 -4 -5))
         (expand "star_closed?")
         (inst?)
         (expand "member")
         (propax))))
      ("2"
       (expand "surjective?")
       (skosimp*)
       (typepred "y!1")
       (skosimp)
       (typepred "a!1")
       (expand "restrict")
       (inst 1 "*[T1, *, one1](a!1, N!1)")
       (("1"
         (replaces -2)
         (lemma "lc_gen_normal[T1, *, one1]")
         (inst?)
         (assert)
         (skosimp)
         (replaces -1)
         (lemma "normal_left_is_right[T1, *, one1]")
         (inst -1 "G!1" "M!1")
         (assert)
         (typepred "M!1")
         (hide -1)
         (expand "normal_subgroup?" -1)
         (flatten)
         (hide -2)
         (inst -3 "h!1 * a!1")
         (("1"
           (replaces -3)
           (lemma "right_coset_assoc[T1,*,one1]")
           (inst -1 "M!1" "h!1" "a!1")
           (replace -1 1 rl)
           (hide (-1 -2 -4 -5))
           (lemma "rc_is_eq[T1,*,one1]")
           (inst -1 "G!1" "M!1" "h!1" "one1")
           (assert)
           (prop)
           (("1"
             (rewrite "right_coset_one")
             (replaces -1)
             (lemma "normal_left_is_right[T1,*,one1]")
             (inst?)
             (assert)
             (inst?)
             (assert))
            ("2"
             (hide 2)
             (inst 1 "h!1")
             (("1" (rewrite "one_right[T1,*,one1]"))
              ("2"
               (typepred "h!1")
               (hide -2)
               (expand* "subgroup?" "subset?" "member")
               (inst?)
               (assert))))))
          ("2"
           (hide-all-but (-3 1))
           (typepred "h!1")
           (typepred "N!1")
           (expand "normal_subgroup?")
           (flatten)
           (hide (-1 -3))
           (expand* "subgroup?" "subset?" "member")
           (inst -1 "h!1")
           (assert)
           (typepred "G!1")
           (expand* "group?" "monoid?" "monad?")
           (flatten)
           (hide (-2 -3 -4 -5))
           (expand "star_closed?")
           (inst?)
           (expand "member")
           (propax))))
        ("2"
         (prop)
         (("1" (inst 1 "a!1"))
          ("2"
           (hide (-2 -3 -4))
           (expand "/")
           (expand "restrict")
           (expand "left_cosets")
           (inst?))))))
      ("3"
       (expand "restrict")
       (expand "kernel")
       (decompose-equality 1)
       (("1"
         (iff)
         (prop)
         (("1"
           (lemma "lc_eq[T1, *, one1]")
           (inst -1 "G!1" "M!1" "lc_gen(G!1, N!1, x!1)" "one1")
           (rewrite "left_coset_one")
           (prop)
           (("1"
             (skosimp)
             (expand "/")
             (expand "restrict")
             (expand "left_cosets")
             (hide (-3 -4))
             (skosimp)
             (rewrite "one_left[T1, *, one1]")
             (inst 1 "h!1")
             (replace -1 1 rl)
             (hide -1)
             (replaces -1)
             (lemma "lc_gen_def[T1, *, one1]")
             (inst?)
             (typepred "a!1")
             (prop)
             (("1" (assert))
              ("2"
               (hide-all-but 1)
               (typepred "N!1")
               (expand "normal_subgroup?")
               (assert))))
            ("2"
             (hide-all-but 1)
             (typepred "M!1")
             (expand "normal_subgroup?")
             (assert))))
          ("2"
           (expand "/")
           (expand "restrict")
           (expand "left_cosets")
           (skosimp)
           (inst?)
           (typepred "a!1")
           (hide (-2 -3))
           (typepred "M!1")
           (hide -1)
           (expand "normal_subgroup?")
           (flatten)
           (hide -2)
           (expand "subgroup?")
           (expand* "subset?" "member")
           (inst?)
           (assert))
          ("3"
           (expand "/")
           (expand "restrict")
           (expand "left_cosets")
           (skosimp)
           (replaces -1)
           (lemma "lc_gen_normal[T1, *, one1]")
           (inst -1 "G!1" "N!1" "a!1")
           (prop)
           (("1"
             (skosimp)
             (replaces -1)
             (typepred "h!1" "a!1")
             (lemma "lc_is_eq[T1,*,one1]")
             (inst -1 "G!1" "M!1" "h!1 * a!1" "one1")
             (prop)
             (("1" (rewrite "left_coset_one"))
              ("2" (typepred "M!1") (expand "normal_subgroup?") (assert))
              ("3"
               (inst 1 "h!1 * a!1")
               (("1" (rewrite "one_left[T1,*,one1]"))
                ("2"
                 (hide 2)
                 (expand "subgroup?")
                 (expand* "subset?" "member")
                 (inst -3 "h!1")
                 (assert)
                 (rewrite "product_in[T1,*,one1]"))))))
            ("2" (hide 2) (typepred "N!1") (propax))
            ("3"
             (typepred "a!1" "M!1")
             (hide (-2 -4 2))
             (expand "normal_subgroup?")
             (expand "subgroup?")
             (expand* "subset?" "member")
             (flatten)
             (inst?)
             (assert))))))
        ("2"
         (skosimp)
         (inst 1 "one1")
         (("1" (rewrite "left_coset_one"))
          ("2"
           (hide (-1 -2))
           (typepred "G!1")
           (expand* "group?" "monoid?" "monad?" "subset?" "member")
           (assert))))
        ("3"
         (skosimp)
         (inst 1 "lc_gen[T1, *, one1](G!1, N!1, a!1)")
         (typepred "N!1")
         (expand "normal_subgroup?")
         (assert))
        ("4"
         (skosimp)
         (typepred "N!1")
         (expand "normal_subgroup?")
         (assert))))))
    ("2"
     (skosimp*)
     (prop)
     (("1"
       (inst 1 "lc_gen[T1, *, one1](G!1, N!1, x1!1)")
       (typepred "N!1")
       (expand "normal_subgroup?")
       (assert))
      ("2"
       (expand "/")
       (expand "restrict")
       (expand "left_cosets")
       (inst 1 "lc_gen[T1, *, one1](G!1, N!1, x1!1)")
       (typepred "N!1")
       (expand "normal_subgroup?")
       (assert))))
    ("3"
     (skosimp*)
     (prop)
     (("1"
       (inst 1 "lc_gen[T1, *, one1](G!1, N!1, A!1)")
       (typepred "N!1")
       (expand "normal_subgroup?")
       (assert))
      ("2"
       (expand "/")
       (expand "restrict")
       (expand "left_cosets")
       (inst 1 "lc_gen[T1, *, one1](G!1, N!1, A!1)")
       (typepred "N!1")
       (expand "normal_subgroup?")
       (assert))))
    ("4"
     (skosimp*)
     (typepred "N!1")
     (expand "normal_subgroup?")
     (assert))))


