# Proofs

proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: product_integral_def
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (typepred "S2")
   (expand "sigma_algebra?")
   (flatten)
   (expand "subset_algebra_empty?")
   (expand "member")
   (propax))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: product_integral_def
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (expand "integrable1?")
   (inst + "emptyset[T1]" "lambda x: 0")
   (("1"
     (skosimp)
     (hide 1)
     (rewrite "integrable_zero")
     (rewrite "integral_zero"))
    ("2" (rewrite "integrable_zero"))))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: product_integral_def
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (expand "integrable2?")
   (inst + "emptyset[T2]" "lambda y: 0")
   (("1"
     (skosimp)
     (hide 1)
     (rewrite "integrable_zero")
     (rewrite "integral_zero"))
    ("2" (rewrite "integrable_zero"))))


proof_type: j_proof
decl_type: tcc
library: measure_integration
theory: product_integral_def
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (typepred "h1!1")
   (typepred "g1!1")
   (expand "integrable1?")
   (skosimp*)
   (expand "member")
   (inst + "union(N1!1,N1!2)" "f!1+f!2")
   (skosimp)
   (inst - "x!1")
   (inst - "x!1")
   (expand "union")
   (expand "member")
   (flatten)
   (assert)
   (flatten)
   (expand "+" 3)
   (lemma "integrable_add"
    ("f1" "LAMBDA y: g1!1(x!1, y)" "f2" "LAMBDA y: h1!1(x!1, y)"))
   (("1"
     (expand "+" -1)
     (assert)
     (lemma "integral_add"
      ("f1" "LAMBDA y: g1!1(x!1, y)" "f2" "LAMBDA y: h1!1(x!1, y)"))
     (expand "+")
     (assert))
    ("2" (propax)) ("3" (propax))))


proof_type: j_proof
decl_type: tcc
library: measure_integration
theory: product_integral_def
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (typepred "h1!1")
   (expand "integrable1?")
   (skosimp)
   (inst + "N1!1" "c!1*f!1")
   (skosimp)
   (inst - "x!1")
   (assert)
   (flatten)
   (hide 1)
   (lemma "integrable_scal" ("c" "c!1" "f" "LAMBDA y: h1!1(x!1, y)"))
   (("1"
     (lemma "integral_scal" ("c" "c!1" "f" "LAMBDA y: h1!1(x!1, y)"))
     (expand "*")
     (assert))
    ("2" (propax))))


proof_type: j_proof
decl_type: tcc
library: measure_integration
theory: product_integral_def
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma "integrable1_scal" ("h1" "h1!1" "c" "-1"))
   (expand "*")
   (expand "-")
   (case-replace
    "(LAMBDA (x: [T1, T2]): -1 * h1!1(x))=(LAMBDA (x: [T1, T2]): -h1!1(x))")
   (apply-extensionality :hide? t))


proof_type: j_proof
decl_type: tcc
library: measure_integration
theory: product_integral_def
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma "integrable1_opp" ("h1" "h1!1"))
   (lemma "integrable1_add" ("g1" "g1!1" "h1" "-h1!1"))
   (case-replace
    "((+[[T1, T2]])(g1!1, -h1!1))=((-[[T1, T2]])(g1!1, h1!1))")
   (apply-extensionality :hide? t)
   (expand "+")
   (expand "-")
   (assert))


proof_type: j_proof
decl_type: tcc
library: measure_integration
theory: product_integral_def
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (typepred "h2!1")
   (typepred "g2!1")
   (expand "integrable2?")
   (skosimp*)
   (inst + "union(N2!1,N2!2)" "g!1+g!2")
   (skosimp)
   (inst - "y!1")
   (inst - "y!1")
   (expand "union")
   (assert)
   (flatten)
   (assert)
   (flatten)
   (expand "+")
   (lemma "integrable_add"
    ("f1" "LAMBDA x: g2!1(x, y!1)" "f2" "LAMBDA x: h2!1(x, y!1)"))
   (("1"
     (lemma "integral_add"
      ("f1" "LAMBDA x: g2!1(x, y!1)" "f2" "LAMBDA x: h2!1(x, y!1)"))
     (expand "+")
     (assert))
    ("2" (propax)) ("3" (propax))))


proof_type: j_proof
decl_type: tcc
library: measure_integration
theory: product_integral_def
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (typepred "h2!1")
   (expand "integrable2?")
   (skosimp)
   (inst + "N2!1" "c!1*g!1")
   (skosimp)
   (inst - "y!1")
   (assert)
   (flatten)
   (lemma "integrable_scal" ("c" "c!1" "f" "LAMBDA x: h2!1(x, y!1)"))
   (("1"
     (lemma "integral_scal" ("c" "c!1" "f" "LAMBDA x: h2!1(x, y!1)"))
     (expand "*")
     (assert))
    ("2" (propax))))


proof_type: j_proof
decl_type: tcc
library: measure_integration
theory: product_integral_def
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma "integrable2_scal" ("h2" "h2!1" "c" "-1"))
   (expand "*")
   (expand "-")
   (case-replace
    "(LAMBDA (x: [T1, T2]): -1 * h2!1(x))=(LAMBDA (x: [T1, T2]): -h2!1(x))")
   (apply-extensionality :hide? t))


proof_type: j_proof
decl_type: tcc
library: measure_integration
theory: product_integral_def
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma "integrable2_opp" ("h2" "h2!1"))
   (lemma "integrable2_add" ("g2" "g2!1" "h2" "-h2!1"))
   (case-replace
    "((+[[T1, T2]])(g2!1, -h2!1))=((-[[T1, T2]])(g2!1, h2!1))")
   (apply-extensionality :hide? t)
   (expand "+")
   (expand "-")
   (assert))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: product_integral_def
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (expand "nonempty?")
   (expand "empty?")
   (typepred "h1!1")
   (expand "integrable1?")
   (skosimp)
   (expand "member")
   (inst -2 "(N1!1,f!1)"))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: product_integral_def
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (typepred "h2!1")
   (expand "integrable2?")
   (skosimp)
   (expand "nonempty?")
   (expand "empty?")
   (inst -2 "(N2!1,g!1)")
   (expand "member")
   (propax))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: product_integral_def
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (name "DRL" "null_integrable1(h1!1)")
   (replace -1)
   (assert)
   (name "NN" "DRL`1")
   (name "FF" "DRL`2")
   (lemma "null_integral1_def" ("N1" "NN" "f" "FF" "h1" "h1!1"))
   (assert)
   (typepred "FF")
   (lemma "indefinite_integrable[T1, S1, mu]"
    ("E" "complement(NN)" "f" "FF"))
   (expand "complement")
   (expand "phi")
   (expand "member")
   (expand "*")
   (expand "FF")
   (expand "NN")
   (case-replace
    "(LAMBDA (x: T1):
                        IF NOT DRL`1(x) THEN 1 ELSE 0 ENDIF * DRL`2(x))=(LAMBDA x: IF DRL`1(x) THEN 0 ELSE DRL`2(x) ENDIF)")
   (apply-extensionality :hide? t)
   (lift-if)
   (assert))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: product_integral_def
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma "null_integral2_def" ("h2" "h2!1"))
   (name "DRL" "null_integrable2(h2!1)")
   (replace -1)
   (name "NN" "DRL`1")
   (name "GG" "DRL`2")
   (inst - "NN" "GG" "_")
   (assert)
   (replace -1)
   (replace -2)
   (lemma "indefinite_integrable[T2, S2, nu]"
    ("E" "complement(NN)" "f" "GG"))
   (expand "complement")
   (expand "phi")
   (expand "member")
   (expand "*")
   (case-replace
    "(LAMBDA (x: T2): IF NOT NN(x) THEN 1 ELSE 0 ENDIF * GG(x))=(LAMBDA y: IF NN(y) THEN 0 ELSE GG(y) ENDIF)")
   (apply-extensionality :hide? t)
   (lift-if)
   (assert))


proof_type: j_proof
decl_type: tcc
library: measure_integration
theory: finite_integral
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (case "forall (h:bounded_measurable): (FORALL (x:T): 0 <= h(x))=>integrable?[T, S, to_measure(mu)](h)")
   (("1"
     (skolem + "h!1")
     (inst-cp - "plus(h!1)")
     (("1"
       (inst - "minus(h!1)")
       (("1"
         (split)
         (("1"
           (split)
           (("1" (rewrite "integrable_pm_def" 1) (assert))
            ("2" (hide 2) (hide -1) (grind))))
          ("2" (hide-all-but 1) (grind))))
        ("2"
         (hide-all-but 1)
         (typepred "h!1")
         (expand "bounded_measurable?")
         (flatten)
         (expand "bounded?")
         (skosimp)
         (inst + "c!1")
         (skosimp)
         (inst - "x!1")
         (hide -2)
         (grind))))
      ("2"
       (typepred "h!1")
       (expand "bounded_measurable?")
       (flatten)
       (hide -2 2)
       (expand "bounded?")
       (skosimp)
       (inst + "c!1")
       (skosimp)
       (inst - "x!1")
       (grind))))
    ("2"
     (hide 2)
     (skosimp)
     (typepred "h!1")
     (lemma "nn_integrable_is_integrable[T, S, to_measure(mu)]")
     (inst - "h!1")
     (split)
     (("1" (skosimp) (inst - "x1!1") (assert))
      ("2"
       (hide 2)
       (expand "bounded_measurable?")
       (flatten)
       (expand "bounded?")
       (skosimp)
       (lemma "nn_isf_is_nn_integrable[T, S, to_measure(mu)]")
       (inst - "*[T](c!1,phi[T,S](fullset[T]))")
       (("1"
         (flatten)
         (lemma "nn_integrable_le[T, S, to_measure(mu)]"
          ("f" "*[T](c!1, phi[T, S](fullset[T]))" "g" "h!1"))
         (("1"
           (assert)
           (skosimp)
           (inst -3 "x!1")
           (inst -5 "x!1")
           (hide-all-but (-3 -5 1))
           (assert)
           (grind))
          ("2" (propax))))
        ("2"
         (expand "nn_isf?")
         (split)
         (("1"
           (expand "isf?")
           (expand "mu_fin?")
           (expand "to_measure")
           (propax))
          ("2"
           (skosimp)
           (expand "*")
           (expand "phi")
           (lift-if 1)
           (assert))))))))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: monotone_classes
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (name "S" "generated_sigma_algebra(C)")
   (name "TT" "{E:(S) | mu!1(E)=nu!1(E)}")
   (("1"
     (case "forall (x:set[T]): S(x) => TT(x)")
     (("1"
       (skosimp)
       (typepred "x!1")
       (inst - "x!1")
       (expand "S")
       (expand "TT")
       (propax))
      ("2"
       (hide 2)
       (skosimp)
       (case "generated_sigma_algebra(generated_subset_algebra(C))=S")
       (("1"
         (lemma "monotone_class[T]"
          ("B"
           "generated_subset_algebra[T](C)"
           "C"
           "{x:set[T] | S(x) & mu!1(x) = nu!1(x)}"))
         (("1"
           (replace -2 -1)
           (split)
           (("1"
             (expand "subset?")
             (inst - "x!1")
             (expand "member")
             (assert)
             (expand "TT")
             (propax))
            ("2"
             (hide -3 2)
             (expand "subset?")
             (skosimp)
             (expand "member")
             (lemma "disjoint_algebra_construction" ("NX" "C"))
             (replace -7)
             (expand "member")
             (lemma "generated_sigma_algebra_subset1[T]"
              ("X" "generated_subset_algebra(C)"))
             (expand "subset?" -1)
             (inst - "x!2")
             (expand "member")
             (assert)
             (replace -2 -3)
             (hide-all-but (-3 -9 1))
             (expand "finite_disjoint_unions")
             (expand "fullset")
             (expand "extend")
             (prop)
             (expand "finite_disjoint_union?")
             (skosimp)
             (expand "member")
             (typepred "mu!1")
             (typepred "nu!1")
             (expand "finite_measure?")
             (flatten)
             (case "disjoint_indexed_measurable?[T, (generated_sigma_algebra(C))](E!1)")
             (("1"
               (inst - "E!1")
               (inst - "E!1")
               (replace -7 * rl)
               (hide -1 -6 -7)
               (lemma "zero_tail_series_limit"
                ("n" "n!1" "a" "nu!1 o E!1"))
               (split)
               (("1"
                 (lemma "zero_tail_series_limit"
                  ("n" "n!1" "a" "mu!1 o E!1"))
                 (split)
                 (("1"
                   (rewrite "convergence_sequences.limit_def" -4 :dir rl)
                   (rewrite "convergence_sequences.limit_def" -6 :dir rl)
                   (replace -1)
                   (replace -2)
                   (replace -4 * rl)
                   (replace -6 * rl)
                   (hide -1 -2 -4 -6)
                   (expand "o ")
                   (expand "series")
                   (lemma "sigma_eq"
                    ("low"
                     "0"
                     "high"
                     "n!1"
                     "F"
                     "LAMBDA (x: nat): mu!1(E!1(x))"
                     "G"
                     "LAMBDA (x: nat): nu!1(E!1(x))"))
                   (assert)
                   (hide 2)
                   (skosimp)
                   (inst -3 "n!2")
                   (flatten)
                   (assert)
                   (typepred "n!2")
                   (expand "<=" -2)
                   (split)
                   (("1" (assert) (inst -7 "E!1(n!2)"))
                    ("2" (assert) (rewrite "emptyset_is_empty?"))))
                  ("2"
                   (skosimp)
                   (expand "o ")
                   (inst -7 "m!1")
                   (flatten)
                   (assert)
                   (rewrite "emptyset_is_empty?"))))
                ("2"
                 (skosimp)
                 (expand "o ")
                 (inst -6 "m!1")
                 (flatten)
                 (assert)
                 (rewrite "emptyset_is_empty?"))))
              ("2"
               (hide -1 -2 -3 -4 2)
               (expand "disjoint_indexed_measurable?")
               (propax))
              ("3"
               (hide -1 -2 -3 -4 -6 2 -8)
               (skolem + "n!2")
               (inst - "n!2")
               (flatten)
               (case-replace "n!2<n!1")
               (("1"
                 (lemma "generated_sigma_algebra_subset1[T]" ("X" "C"))
                 (expand "subset?")
                 (inst - "E!1(n!2)")
                 (assert))
                ("2"
                 (assert)
                 (rewrite "emptyset_is_empty?")
                 (typepred "generated_sigma_algebra[T](C)")
                 (expand "sigma_algebra?")
                 (flatten)
                 (expand "subset_algebra_empty?")
                 (assert))))))))
          ("2"
           (hide 2 -3)
           (expand "monotone?")
           (skosimp)
           (expand "member")
           (lemma "sigma_algebra_IUnion[T,S]" ("SS" "E!1"))
           (("1"
             (lemma "sigma_algebra_IIntersection[T,S]" ("SS" "E!1"))
             (expand "member")
             (replace -1)
             (replace -2)
             (split)
             (("1"
               (flatten)
               (lemma "m_increasing_convergence[T,S,to_measure(mu!1)]"
                ("E" "E!1"))
               (("1"
                 (assert)
                 (lemma "m_increasing_convergence[T,S,to_measure(nu!1)]"
                  ("E" "E!1"))
                 (("1"
                   (assert)
                   (expand "to_measure")
                   (name-replace "MU" "mu!1(IUnion(E!1))")
                   (name-replace "NU" "nu!1(IUnion(E!1))")
                   (expand "o ")
                   (expand "x_converges?")
                   (case-replace
                    "convergence_sequences.convergent?(LAMBDA (i:nat): nu!1(E!1(i)))")
                   (("1"
                     (case-replace
                      "convergence_sequences.convergent?(LAMBDA (i:nat): mu!1(E!1(i)))")
                     (("1"
                       (lemma "convergence_sequences.limit_lemma"
                        ("v" "LAMBDA (i: nat): nu!1(E!1(i))"))
                       (("1"
                         (lemma "convergence_sequences.limit_lemma"
                          ("v" "LAMBDA (i: nat): mu!1(E!1(i))"))
                         (("1"
                           (replace -5 * rl)
                           (replace -6 * rl)
                           (lemma "cnv_seq_diff"
                            ("s1"
                             "LAMBDA (i: nat): mu!1(E!1(i))"
                             "l1"
                             "MU"
                             "s2"
                             "LAMBDA (i: nat): nu!1(E!1(i))"
                             "l2"
                             "NU"))
                           (assert)
                           (lemma "cnv_seq_const" ("a" "0"))
                           (expand "const_fun")
                           (expand "-" -2)
                           (case-replace
                            "(LAMBDA (x: nat): mu!1(E!1(x)) - nu!1(E!1(x)))=(LAMBDA (x: nat): 0)")
                           (("1"
                             (lemma "convergence_sequences.unique_limit"
                              ("u"
                               "LAMBDA (x: nat): 0"
                               "l1"
                               "0"
                               "l2"
                               "MU-NU"))
                             (assert))
                            ("2"
                             (apply-extensionality :hide? t)
                             (("1" (inst -12 "x!2") (flatten) (assert))
                              ("2"
                               (skosimp)
                               (inst -12 "x!2")
                               (assert))))))
                          ("2" (propax))))
                        ("2" (propax))
                        ("3"
                         (skosimp)
                         (assert)
                         (inst -8 "i!1")
                         (flatten)
                         (assert))))
                      ("2" (assert))
                      ("3"
                       (skosimp)
                       (inst -7 "i!1")
                       (flatten)
                       (assert))))
                    ("2" (assert))
                    ("3" (skosimp) (inst -6 "i!1") (flatten) (assert))))
                  ("2"
                   (hide 2)
                   (split)
                   (("1" (skosimp) (assert) (replace -8) (assert))
                    ("2"
                     (hide-all-but (1 -9))
                     (typepred
                      "to_measure[T, (generated_sigma_algebra(C))](nu!1)")
                     (expand "measure?")
                     (expand "to_measure")
                     (expand "measure_empty?")
                     (flatten)
                     (assert)
                     (expand "measure_countably_additive?")
                     (skosimp)
                     (typepred "X!1")
                     (expand "o ")
                     (inst - "X!1")
                     (hide 2)
                     (split)
                     (("1" (skosimp) (assert))
                      ("2"
                       (expand "disjoint_indexed_measurable?")
                       (propax))))))))
                ("2"
                 (skolem + "n!1")
                 (expand "measurable_set?")
                 (inst - "n!1")
                 (flatten))
                ("3"
                 (split)
                 (("1" (skosimp) (replace -7) (assert))
                  ("2"
                   (typepred
                    "to_measure[T, (generated_sigma_algebra(C))](mu!1)")
                   (hide-all-but (-1 1 -8))
                   (expand "measure?")
                   (flatten)
                   (expand "measure_empty?")
                   (expand "to_measure")
                   (assert)
                   (hide -1)
                   (expand "measure_countably_additive?")
                   (skosimp)
                   (inst - "X!1")
                   (("1" (expand "o ") (propax))
                    ("2"
                     (hide 2)
                     (split)
                     (("1" (skosimp) (assert))
                      ("2"
                       (typepred "X!1")
                       (expand "disjoint_indexed_measurable?")
                       (propax))))))))))
              ("2"
               (flatten)
               (lemma "m_decreasing_convergence[T,S,to_measure(mu!1)]"
                ("E" "E!1"))
               (("1"
                 (lemma "m_decreasing_convergence[T,S,to_measure(nu!1)]"
                  ("E" "E!1"))
                 (("1"
                   (assert)
                   (expand "mu_fin?")
                   (expand "to_measure" -1 1)
                   (expand "to_measure" -2 1)
                   (expand "to_measure" (-1 -2))
                   (expand "o ")
                   (expand "x_converges?")
                   (case-replace
                    "convergence_sequences.convergent?(LAMBDA (i:nat): nu!1(E!1(i)))")
                   (("1"
                     (case-replace
                      "convergence_sequences.convergent?(LAMBDA (i:nat): mu!1(E!1(i)))")
                     (("1"
                       (lemma "convergence_sequences.limit_def"
                        ("v"
                         "LAMBDA (i: nat): mu!1(E!1(i))"
                         "l"
                         "mu!1(IIntersection(E!1))"))
                       (("1"
                         (assert)
                         (lemma "convergence_sequences.limit_def"
                          ("v"
                           "LAMBDA (i: nat): nu!1(E!1(i))"
                           "l"
                           "nu!1(IIntersection(E!1))"))
                         (assert)
                         (lemma "cnv_seq_diff"
                          ("s1"
                           "LAMBDA (i: nat): nu!1(E!1(i))"
                           "l1"
                           "nu!1(IIntersection(E!1))"
                           "s2"
                           "LAMBDA (i: nat): mu!1(E!1(i))"
                           "l2"
                           "mu!1(IIntersection(E!1))"))
                         (assert)
                         (expand "-" -1)
                         (lemma "cnv_seq_const" ("a" "0"))
                         (expand "const_fun")
                         (case-replace
                          "(LAMBDA (x: nat): nu!1(E!1(x)) - mu!1(E!1(x)))=(LAMBDA (x: nat): 0)")
                         (("1"
                           (lemma "convergence_sequences.unique_limit"
                            ("u"
                             "LAMBDA (x: nat): 0"
                             "l1"
                             "0"
                             "l2"
                             "nu!1(IIntersection(E!1)) - mu!1(IIntersection(E!1))"))
                           (assert))
                          ("2"
                           (apply-extensionality :hide? t)
                           (("1"
                             (inst -18 "E!1(x!2)")
                             (("1" (assert))
                              ("2" (inst - "x!2") (flatten) (assert))))
                            ("2"
                             (skosimp)
                             (inst - "x!2")
                             (flatten)
                             (assert))))))
                        ("2" (propax))
                        ("3"
                         (skosimp)
                         (inst - "i!1")
                         (flatten)
                         (assert))))
                      ("2" (assert))
                      ("3" (skosimp) (inst - "i!1") (flatten) (assert))))
                    ("2" (assert))
                    ("3" (skosimp) (inst - "i!1") (flatten) (assert))))
                  ("2"
                   (replace -8)
                   (split)
                   (("1" (skosimp) (assert))
                    ("2"
                     (hide-all-but 1)
                     (typepred
                      "to_measure[T, (generated_sigma_algebra(C))](nu!1)")
                     (expand "measure?")
                     (expand "to_measure")
                     (expand "measure_empty?")
                     (flatten)
                     (assert)
                     (expand "measure_countably_additive?")
                     (skosimp)
                     (typepred "X!1")
                     (expand "o ")
                     (inst - "X!1")
                     (split)
                     (("1"
                       (skosimp)
                       (assert)
                       (typepred "X!1(x1!1)")
                       (expand "S")
                       (propax))
                      ("2"
                       (expand "disjoint_indexed_measurable?")
                       (propax))))))))
                ("2"
                 (skosimp)
                 (expand "measurable_set?")
                 (inst - "x1!1")
                 (flatten))
                ("3"
                 (replace -7)
                 (split)
                 (("1" (skosimp) (assert))
                  ("2"
                   (hide-all-but 1)
                   (typepred
                    "to_measure[T, (generated_sigma_algebra(C))](mu!1)")
                   (expand "to_measure")
                   (expand "measure?")
                   (expand "measure_empty?")
                   (flatten)
                   (assert)
                   (expand "measure_countably_additive?")
                   (skosimp)
                   (typepred "X!1")
                   (expand "o ")
                   (inst - "X!1")
                   (split)
                   (("1"
                     (skosimp)
                     (typepred "X!1(x1!1)")
                     (expand "S")
                     (propax))
                    ("2"
                     (expand "disjoint_indexed_measurable?")
                     (propax))))))))))
            ("2" (skosimp) (inst - "x1!1") (flatten))))
          ("3" (skosimp) (assert))))
        ("2"
         (replace -3 1 rl)
         (hide-all-but 1)
         (lemma "generated_subset_algebra_subset1" ("X" "C"))
         (lemma "generated_sigma_algebra_subset2"
          ("X"
           "C"
           "Y"
           "generated_sigma_algebra(generated_subset_algebra(C))"))
         (assert)
         (split -1)
         (("1"
           (lemma "generated_sigma_algebra_subset2"
            ("X"
             "generated_subset_algebra(C)"
             "Y"
             "generated_sigma_algebra(C)"))
           (assert)
           (split -1)
           (("1"
             (apply-extensionality :hide? t)
             (expand "subset?")
             (inst - "x!2")
             (inst - "x!2")
             (expand "member")
             (name-replace "LHS"
              "generated_sigma_algebra(generated_subset_algebra(C))(x!2)")
             (name-replace "RHS" "generated_sigma_algebra(C)(x!2)")
             (hide -3)
             (assert)
             (grind))
            ("2"
             (hide 2)
             (hide-all-but 1)
             (lemma "sigma_algebra_is_subset_algebra[T]")
             (inst - "generated_sigma_algebra(C)")
             (lemma "generated_subset_algebra_subset2[T]"
              ("X" "C" "Y" "generated_sigma_algebra[T](C)"))
             (assert)
             (hide -1 2)
             (rewrite "generated_sigma_algebra_subset1[T]"))))
          ("2"
           (hide 2)
           (expand "subset?")
           (skosimp)
           (expand "member")
           (inst - "x!2")
           (assert)
           (lemma "generated_sigma_algebra_subset1"
            ("X" "generated_subset_algebra(C)"))
           (expand "subset?")
           (inst - "x!2")
           (expand "member")
           (propax))))))))
    ("2" (skosimp) (typepred "E!1") (expand "S") (propax))))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: monotone_classes
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (skolem + "a!1")
   (typepred "a!1")
   (lemma "generated_sigma_algebra_subset1" ("X" "C"))
   (expand "subset?")
   (inst - "a!1")
   (assert))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: sets_lemmas_aux
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (apply-extensionality :hide? t)
   (expand "complement")
   (expand "union")
   (expand "fullset")
   (flatten)
   (expand "member")
   (propax))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: sets_lemmas_aux
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (lemma "intersection_complement" ("a" "a!1"))
   (expand "disjoint?")
   (rewrite "emptyset_is_empty?"))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: sets_lemmas_aux
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "disjoint?")
   (expand "intersection")
   (expand "empty?")
   (skosimp*)
   (expand "member")
   (expand "emptyset")
   (propax))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: sets_lemmas_aux
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (lemma "subset_powerset" ("a" "a!1" "b" "a!1"))
   (rewrite "subset_reflexive")
   (assert))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: sets_lemmas_aux
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (apply-extensionality :hide? t)
   (expand "difference")
   (expand "intersection")
   (expand "union")
   (expand "member")
   (case-replace "a!1(x!1)")
   (("1" (flatten)) ("2" (assert))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: sets_lemmas_aux
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "disjoint?")
   (expand "intersection")
   (expand "difference")
   (expand "empty?")
   (expand "member")
   (skosimp*))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: sets_lemmas_aux
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (expand "disjoint?")
   (expand "intersection")
   (expand "empty?")
   (expand "member")
   (skosimp*)
   (inst - "x!1")
   (assert))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (typepred "mu")
   (expand "finite_measure?")
   (flatten)
   (inst - "X!1")
   (expand "disjoint_indexed_measurable?")
   (propax))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (name "AA"
         "lambda (n:nat): IF n=0 THEN A!1 ELSIF n=1 THEN B!1 ELSE emptyset[T] ENDIF")
   (lemma "fm_convergence" ("X" "AA"))
   (split -1)
   (("1"
     (hide -2)
     (lemma "zero_tail_series" ("a" "mu o AA" "n" "1"))
     (split)
     (("1"
       (rewrite "limit_equiv")
       (rewrite "limit_equiv")
       (flatten)
       (replace -2)
       (hide-all-but (-4 1))
       (expand "o ")
       (expand "series")
       (case-replace "IUnion(AA)=union(A!1, B!1)")
       (("1"
         (expand "sigma")
         (expand "sigma")
         (expand "sigma")
         (assert)
         (expand "AA")
         (assert))
        ("2"
         (hide-all-but 1)
         (apply-extensionality :hide? t)
         (expand "union")
         (expand "IUnion")
         (expand "AA")
         (expand "member")
         (case-replace "A!1(x!1)")
         (("1" (inst + "0"))
          ("2"
           (case-replace "B!1(x!1)")
           (("1" (inst + "1") (assert))
            ("2" (assert) (skosimp) (expand "emptyset") (propax))))))))
      ("2"
       (hide-all-but 1)
       (skosimp)
       (expand "AA")
       (expand "o")
       (typepred "mu")
       (expand "finite_measure?")
       (flatten)
       (replace -1)
       (assert))))
    ("2"
     (hide -1 2)
     (expand "AA")
     (expand "disjoint?")
     (skosimp)
     (case-replace "i!1=0")
     (("1"
       (assert)
       (case-replace "j!1=1")
       (("1" (expand "disjoint?") (propax))
        ("2"
         (expand "disjoint?")
         (assert)
         (expand "intersection")
         (expand "empty?")
         (expand "member")
         (skosimp)
         (expand "emptyset")
         (propax))))
      ("2"
       (case-replace "i!1=1")
       (("1"
         (assert)
         (case-replace "j!1=0")
         (("1"
           (expand "disjoint?")
           (expand "intersection")
           (expand "empty?")
           (expand "member")
           (skosimp)
           (inst - "x!1")
           (assert))
          ("2"
           (assert)
           (expand "disjoint?")
           (expand "intersection")
           (expand "empty?")
           (expand "member")
           (expand "emptyset")
           (propax))))
        ("2"
         (assert)
         (expand "disjoint?")
         (expand "emptyset")
         (expand "intersection")
         (expand "empty?")
         (expand "member")
         (propax))))))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (lemma "fm_disjointunion" ("A" "A!1" "B" "complement(A!1)"))
   (("1"
     (split -1)
     (("1" (rewrite "union_complement") (assert))
      ("2"
       (hide 2)
       (expand "complement")
       (expand "disjoint?")
       (expand "intersection")
       (expand "empty?")
       (expand "member")
       (skosimp*))))
    ("2"
     (lemma "sigma_algebra_complement" ("x" "A!1"))
     (expand "member")
     (propax))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (rewrite "union_difference")
   (lemma "difference_disjoint" ("a" "A!1" "b" "B!1"))
   (lemma "fm_disjointunion" ("A" "A!1" "B" "difference(B!1, A!1)"))
   (("1"
     (assert)
     (replace -1)
     (hide -1)
     (assert)
     (rewrite "intersection_commutative")
     (case "B!1 = union(difference(B!1, A!1),intersection(B!1, A!1))")
     (("1"
       (case "disjoint?(difference(B!1, A!1), intersection(B!1, A!1))")
       (("1"
         (lemma "fm_disjointunion"
          ("A" "difference(B!1, A!1)" "B" "intersection(B!1, A!1)"))
         (("1" (assert))
          ("2"
           (lemma "sigma_algebra_intersection" ("x" "B!1" "y" "A!1"))
           (expand "member")
           (propax))))
        ("2"
         (hide -1 -2 2)
         (expand "disjoint?")
         (expand "intersection")
         (expand "difference")
         (expand "empty?")
         (expand "member")
         (skosimp*))))
      ("2"
       (hide-all-but 1)
       (apply-extensionality :hide? t)
       (expand "intersection")
       (expand "difference")
       (expand "union")
       (expand "member")
       (case-replace "B!1(x!1)")
       (("1" (assert) (flatten)) ("2" (assert))))))
    ("2"
     (hide-all-but 1)
     (lemma "sigma_algebra_difference" ("x" "B!1" "y" "A!1"))
     (expand "member")
     (propax))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (lemma "disjoint_diff_inter" ("a" "A!1" "b" "B!1"))
   (lemma "disjoint_diff_inter" ("a" "B!1" "b" "A!1"))
   (lemma "fm_disjointunion"
    ("A" "difference(A!1, B!1)" "B" "intersection(A!1, B!1)"))
   (("1"
     (lemma "fm_disjointunion"
      ("A" "difference(B!1, A!1)" "B" "intersection(B!1, A!1)"))
     (("1"
       (assert)
       (rewrite "union_diff_inter")
       (rewrite "union_diff_inter")
       (rewrite "intersection_commutative")
       (assert))
      ("2"
       (lemma "sigma_algebra_intersection" ("x" "B!1" "y" "A!1"))
       (expand "member")
       (propax))
      ("3"
       (lemma "sigma_algebra_difference" ("x" "B!1" "y" "A!1"))
       (expand "member")
       (propax))))
    ("2"
     (lemma "sigma_algebra_intersection" ("y" "B!1" "x" "A!1"))
     (expand "member")
     (propax))
    ("3"
     (lemma "sigma_algebra_difference" ("y" "B!1" "x" "A!1"))
     (expand "member")
     (propax))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (lemma "fm_difference" ("A" "A!1" "B" "B!1"))
   (lemma "difference_subset2" ("a" "A!1" "b" "B!1"))
   (assert)
   (replace -1)
   (rewrite "fm_emptyset")
   (assert))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (lemma "fm_subset" ("A" "A!1" "B" "B!1"))
   (assert)
   (typepred "mu(difference(B!1, A!1))")
   (("1" (assert))
    ("2"
     (lemma "sigma_algebra_difference" ("x" "B!1" "y" "A!1"))
     (expand "member")
     (propax))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (name "DS"
         "LAMBDA (i:nat): IF i = 0 THEN X!1(i) ELSE difference(X!1(i),X!1(i-1)) ENDIF")
   (("1"
     (case "disjoint?(DS)")
     (("1"
       (case-replace "IUnion(X!1) = IUnion(DS)")
       (("1"
         (lemma "fm_convergence" ("X" "DS"))
         (assert)
         (expand "o")
         (case-replace
          "series(LAMBDA (x: nat): mu(DS(x))) = LAMBDA (x: nat): mu(X!1(x))")
         (hide-all-but (-3 -5 1))
         (expand "series")
         (rewrite "extensionality_postulate" 1 :dir rl)
         (induct "x_1")
         (("1" (expand "sigma") (expand "DS") (expand "sigma") (propax))
          ("2"
           (skosimp)
           (expand "sigma" 1)
           (replace -1 1)
           (expand "DS")
           (rewrite "fm_difference")
           (expand "increasing?")
           (inst - "j!1" "1+j!1")
           (assert)
           (lemma "difference_subset2"
            ("a" "X!1(j!1)" "b" "X!1(1 + j!1)"))
           (assert)
           (replace -1)
           (rewrite "fm_emptyset"))))
        ("2"
         (hide -2 2)
         (apply-extensionality :hide? t)
         (expand "IUnion")
         (expand "DS")
         (hide -1)
         (case-replace "EXISTS (i: nat): X!1(i)(x!1)")
         (("1"
           (skosimp)
           (case "forall (n:nat): X!1(n) = IUnion(lambda (i:nat): IF i <= n THEN DS(i) ELSE emptyset[T] ENDIF)")
           (("1"
             (inst - "i!1")
             (replace -1 -2)
             (hide -1)
             (expand "IUnion")
             (skosimp*)
             (expand "emptyset")
             (case-replace "i!2 <= i!1")
             (("1" (expand "DS") (inst + "i!2")) ("2" (assert))))
            ("2"
             (hide -1 2)
             (induct "n")
             (("1"
               (expand "IUnion")
               (apply-extensionality :hide? t)
               (case-replace "X!1(0)(x!2)")
               (("1" (inst + "0") (assert) (expand "DS") (propax))
                ("2"
                 (assert)
                 (expand "emptyset")
                 (skosimp*)
                 (assert)
                 (expand "<=")
                 (case-replace "i!2=0")
                 (("1" (expand "DS") (propax)) ("2" (assert))))))
              ("2"
               (skosimp*)
               (apply-extensionality :hide? t)
               (expand "IUnion")
               (expand "emptyset")
               (expand "increasing?")
               (inst - "j!1" "j!1+1")
               (rewrite "extensionality_postulate" -1 :dir rl)
               (inst - "x!2")
               (case-replace "X!1(j!1)(x!2)")
               (("1"
                 (expand "subset?")
                 (inst - "x!2")
                 (expand "member")
                 (assert)
                 (assert)
                 (skosimp*)
                 (inst + "i!2")
                 (case-replace "i!2 <= j!1")
                 (("1" (assert)) ("2" (assert))))
                ("2"
                 (assert)
                 (case-replace "X!1(1 + j!1)(x!2)")
                 (("1"
                   (inst + "1+j!1")
                   (assert)
                   (expand "DS")
                   (expand "difference")
                   (expand "member")
                   (propax))
                  ("2"
                   (replace 1 3)
                   (assert)
                   (skosimp)
                   (case-replace "i!2 <= 1 + j!1")
                   (("1"
                     (expand "<=" -1)
                     (split -1)
                     (("1" (inst + "i!2") (assert))
                      ("2"
                       (replace -1)
                       (expand "DS")
                       (expand "difference")
                       (expand "member")
                       (propax))))
                    ("2" (assert))))))))))))
          ("2"
           (replace 1 2)
           (assert)
           (skosimp*)
           (inst + "i!1")
           (case-replace "i!1=0")
           (assert)
           (expand "difference")
           (expand "member")
           (propax))))))
      ("2"
       (hide -1 2)
       (expand "disjoint?")
       (skosimp*)
       (expand "increasing?")
       (case "forall (i,j:nat): i < j => disjoint?(DS(i), DS(j))")
       (("1"
         (lemma "trich_lt" ("x" "i!1" "y" "j!1"))
         (split -1)
         (("1" (inst - "i!1" "j!1") (assert)) ("2" (propax))
          ("3"
           (inst - "j!1" "i!1")
           (assert)
           (rewrite "disjoint_commutative"))))
        ("2"
         (hide 2 3)
         (skolem 1 ("i" "_"))
         (induct "j")
         (("1" (assert))
          ("2"
           (skosimp*)
           (case-replace "j!2=i")
           (("1"
             (expand "disjoint?")
             (expand "intersection")
             (expand "empty?")
             (expand "member")
             (skosimp*)
             (expand "DS")
             (expand "difference")
             (flatten)
             (inst - "i" "i+1")
             (expand "subset?")
             (expand "member")
             (inst - "x!1")
             (assert))
            ("2"
             (assert)
             (expand "disjoint?")
             (expand "intersection")
             (expand "empty?")
             (expand "subset?")
             (expand "member")
             (skosimp*)
             (expand "DS")
             (expand "difference")
             (expand "member")
             (case-replace "i=0")
             (("1"
               (flatten)
               (inst - "0" "j!2")
               (assert)
               (inst -6 "x!1")
               (assert))
              ("2"
               (assert)
               (flatten)
               (assert)
               (inst - "i" "j!2")
               (assert)
               (inst -5 "x!1")
               (assert))))))))))))
    ("2" (skosimp) (assert))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (lemma "fm_IUnion" ("X" "IComplement(X!1)"))
   (("1"
     (split -1)
     (("1"
       (rewrite "IDemorgan2" -1 :dir rl)
       (hide -2)
       (rewrite "fm_complement")
       (("1"
         (expand "convergence")
         (skosimp*)
         (inst - "epsilon!1")
         (skosimp)
         (inst + "n!1")
         (skosimp)
         (inst - "i!1")
         (assert)
         (expand "IComplement")
         (expand "o")
         (rewrite "fm_complement")
         (assert)
         (lemma "abs_neg")
         (inst - "mu(IIntersection(X!1)) - mu(X!1(i!1))")
         (("1" (assert))
          ("2"
           (lemma "sigma_algebra_IIntersection" ("SS" "X!1"))
           (expand "member")
           (propax))))
        ("2"
         (lemma "sigma_algebra_IIntersection" ("SS" "X!1"))
         (expand "member")
         (propax))))
      ("2"
       (hide 2)
       (expand "decreasing?")
       (expand "increasing?")
       (expand "IComplement")
       (expand "subset?")
       (expand "complement")
       (expand "member")
       (skosimp*)
       (inst - "x!1" "y!1")
       (assert)
       (inst - "x!2")
       (assert))))
    ("2"
     (hide-all-but 1)
     (expand "IComplement")
     (skosimp)
     (lemma "sigma_algebra_complement" ("x" "X!1(x1!1)"))
     (expand "member")
     (propax))))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (typepred "mu")
   (expand "finite_measure?")
   (flatten)
   (expand "measure?")
   (split)
   (("1" (expand "measure_empty?") (propax))
    ("2"
     (expand "measure_countably_additive?")
     (skosimp)
     (inst - "X!1")
     (("1"
       (name-replace "RHS" "mu(IUnion(X!1))")
       (expand "x_eq")
       (expand "x_sum")
       (expand "o ")
       (case-replace
        "convergence_sequences.convergent?(series(LAMBDA (i:nat): mu(X!1(i))))")
       (("1" (rewrite "limit_def" +))
        ("2"
         (hide 2)
         (expand "convergence_sequences.convergent?")
         (inst + "RHS"))))
      ("2"
       (typepred "X!1")
       (expand "disjoint_indexed_measurable?")
       (propax))))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_sections
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "disjoint?")
   (expand "intersection")
   (expand "empty?")
   (expand "member")
   (skosimp)
   (expand "x_section")
   (inst - "(a!1,x!1)")
   (assert))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_sections
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "disjoint?")
   (expand "empty?")
   (skosimp)
   (inst - "(x!1,b!1)")
   (grind))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_sigma_def
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (expand "member")
   (skosimp)
   (name "G" "lambda y: (x!1,y)")
   (case-replace "x_section(Z!1, x!1) = inverse_image(G)(Z!1)")
   (("1"
     (hide -1)
     (name "U" "{Z | S2!1(inverse_image(G)(Z))}")
     (case "sigma_algebra?(U)")
     (("1"
       (hide -2 -3)
       (case "forall (M:measurable_rectangle(S1!1,S2!1)): U(M)")
       (("1"
         (typepred "sigma_times(S1!1,S2!1)")
         (lemma "generated_sigma_algebra_subset2" ("Y" "U"))
         (expand "sigma_times" -5)
         (inst -
          "extend
                                            [setof[[T1, T2]],
                                             measurable_rectangle(S1!1, S2!1), bool,
                                             FALSE]
                                            (fullset
                                                 [measurable_rectangle(S1!1, S2!1)])")
         (name-replace "AA"
          "generated_sigma_algebra(extend
                                            [setof[[T1, T2]],
                                             measurable_rectangle(S1!1, S2!1), bool,
                                             FALSE]
                                            (fullset
                                                 [measurable_rectangle(S1!1, S2!1)]))")
         (replace -4)
         (split -1)
         (("1"
           (expand "subset?")
           (inst - "Z!1")
           (assert)
           (expand "member")
           (expand "U")
           (propax))
          ("2"
           (hide 2)
           (expand "fullset")
           (expand "extend")
           (expand "subset?")
           (expand "member")
           (skosimp)
           (prop)
           (inst - "x!2"))))
        ("2"
         (hide 2)
         (skosimp)
         (typepred "M!1")
         (expand "measurable_rectangle?")
         (skosimp)
         (expand "U" 1)
         (expand "inverse_image")
         (expand "inverse_image")
         (expand "G")
         (expand "member")
         (case-replace "X!1(x!1)")
         (("1"
           (case-replace "{x: T2 | M!1(x!1, x)}=Y!1")
           (hide-all-but (-1 -2 1))
           (apply-extensionality :hide? t)
           (replace -2)
           (expand "cross_product")
           (propax))
          ("2"
           (case-replace "{x: T2 | M!1(x!1, x)}=emptyset[T2]")
           (("1"
             (typepred "S2!1")
             (expand "sigma_algebra?")
             (flatten)
             (expand "subset_algebra_empty?")
             (expand "member")
             (propax))
            ("2"
             (replace -1)
             (hide-all-but (1 2))
             (apply-extensionality :hide? t)
             (expand "emptyset")
             (expand "cross_product")
             (propax))))))))
      ("2"
       (hide-all-but (-3 1))
       (typepred "S2!1")
       (expand "U")
       (expand "sigma_algebra?")
       (flatten)
       (split)
       (("1"
         (expand "subset_algebra_empty?")
         (expand "member")
         (expand "inverse_image")
         (expand "inverse_image")
         (expand "member")
         (expand "G")
         (expand "emptyset")
         (propax))
        ("2"
         (expand "subset_algebra_complement?")
         (skosimp)
         (typepred "x!2")
         (expand "complement")
         (expand "member")
         (inst - "inverse_image(G)(x!2)")
         (expand "inverse_image")
         (expand "inverse_image")
         (expand "member")
         (propax))
        ("3"
         (expand "sigma_algebra_union?")
         (skosimp)
         (expand "member")
         (inst -5 "image[set[[T1,T2]],set[T2]](inverse_image(G),X!1)")
         (split)
         (("1"
           (case-replace
            "Union(image[set[[T1, T2]], set[T2]](inverse_image(G), X!1))=inverse_image(G)(Union(X!1))")
           (hide-all-but 1)
           (apply-extensionality :hide? t)
           (expand "inverse_image")
           (expand "image")
           (expand "inverse_image")
           (expand "member")
           (expand "Union")
           (case-replace "EXISTS (a: (X!1)): a(G(x!2))")
           (("1"
             (skosimp)
             (typepred "a!1")
             (inst + "a!1 o G")
             (("1" (expand "o ") (propax))
              ("2" (expand "o") (inst + "a!1"))))
            ("2"
             (replace 1 2)
             (assert)
             (skosimp)
             (typepred "a!1")
             (skosimp)
             (replace -1)
             (assert)
             (typepred "x!3")
             (inst + "x!3"))))
          ("2"
           (hide-all-but (-1 1))
           (lemma "countable_image" ("f" "inverse_image(G)" "S" "X!1"))
           (assert)
           (expand "image" -1)
           (propax))
          ("3"
           (hide 2)
           (skosimp)
           (typepred "x!2")
           (expand "image")
           (skosimp)
           (typepred "x!3")
           (expand "inverse_image")
           (replace -2 1)
           (inst - "x!3"))))))))
    ("2"
     (hide-all-but 1)
     (apply-extensionality :hide? t)
     (expand "G")
     (grind))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_sigma_def
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "member")
   (name "G" "lambda x: (x,y!1)")
   (case-replace "y_section(Z!1, y!1) = inverse_image(G)(Z!1)")
   (("1"
     (hide -1 -2)
     (name "U" "{Z | S1!1(inverse_image(G)(Z))}")
     (case "sigma_algebra?(U)")
     (("1"
       (hide -2)
       (case "forall (M:measurable_rectangle(S1!1,S2!1)): U(M)")
       (("1"
         (lemma "generated_sigma_algebra_subset2" ("Y" "U"))
         (expand "sigma_times" -4)
         (inst -
          "extend
                                            [setof[[T1, T2]],
                                             measurable_rectangle(S1!1, S2!1), bool,
                                             FALSE]
                                            (fullset
                                                 [measurable_rectangle(S1!1, S2!1)])")
         (name-replace "AA"
          "extend
                                            [setof[[T1, T2]],
                                             measurable_rectangle(S1!1, S2!1), bool,
                                             FALSE]
                                            (fullset
                                                 [measurable_rectangle(S1!1, S2!1)])")
         (replace -3)
         (split -1)
         (("1"
           (expand "subset?")
           (expand "member")
           (inst - "Z!1")
           (assert)
           (expand "U")
           (propax))
          ("2"
           (hide 2)
           (expand "subset?")
           (skosimp)
           (expand "member")
           (expand "AA")
           (expand "fullset")
           (expand "extend")
           (prop)
           (inst - "x!1"))))
        ("2"
         (hide 2)
         (skosimp)
         (typepred "M!1")
         (expand "measurable_rectangle?")
         (skosimp)
         (expand "U")
         (replace -1)
         (expand "inverse_image")
         (expand "inverse_image")
         (expand "cross_product")
         (expand "member")
         (expand "G")
         (case-replace "Y!1(y!1)")
         (("1"
           (assert)
           (case-replace "{x: T1 | X!1(x)}=X!1")
           (apply-extensionality 1 :hide? t))
          ("2"
           (replace 1)
           (typepred "S1!1")
           (expand "sigma_algebra?")
           (expand "subset_algebra_empty?")
           (expand "member")
           (expand "emptyset")
           (flatten))))))
      ("2"
       (hide-all-but 1)
       (typepred "S1!1")
       (expand "sigma_algebra?")
       (flatten)
       (split)
       (("1"
         (expand "subset_algebra_empty?")
         (expand "member")
         (expand "U")
         (expand "inverse_image")
         (expand "inverse_image")
         (expand "member")
         (expand "emptyset")
         (propax))
        ("2"
         (expand "subset_algebra_complement?")
         (skosimp)
         (expand "complement")
         (expand "member")
         (typepred "x!1")
         (expand "U")
         (inst - "inverse_image(G)(x!1)")
         (expand "inverse_image")
         (expand "G")
         (expand "inverse_image")
         (expand "member")
         (propax))
        ("3"
         (expand "sigma_algebra_union?")
         (skosimp)
         (expand "member")
         (inst -5 "image[set[[T1,T2]],set[T1]](inverse_image(G),X!1)")
         (split -5)
         (("1"
           (case-replace
            "Union(image[set[[T1, T2]], set[T1]](inverse_image(G), X!1))=inverse_image(G)(Union(X!1))")
           (("1" (expand "U") (propax))
            ("2"
             (hide-all-but 1)
             (apply-extensionality :hide? t)
             (expand "inverse_image")
             (expand "inverse_image")
             (expand "member")
             (expand "image")
             (expand "Union")
             (case-replace "EXISTS (a: (X!1)): a(G(x!1))")
             (("1"
               (skosimp)
               (typepred "a!1")
               (inst + "a!1 o G")
               (("1" (expand "o ") (propax))
                ("2" (expand "o") (inst + "a!1"))))
              ("2"
               (replace 1 2)
               (assert)
               (skosimp)
               (typepred "a!1")
               (skosimp)
               (replace -1)
               (assert)
               (inst + "x!2"))))))
          ("2"
           (lemma "countable_image" ("f" "inverse_image(G)" "S" "X!1"))
           (assert)
           (expand "image" -1)
           (propax))
          ("3"
           (skosimp)
           (typepred "x!1")
           (expand "image")
           (skosimp)
           (inst - "x!2")
           (expand "U")
           (assert))))))))
    ("2"
     (hide-all-but 1)
     (apply-extensionality :hide? t)
     (expand "y_section")
     (expand "inverse_image")
     (expand "G")
     (expand "inverse_image")
     (expand "member")
     (propax))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_sigma_def
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (typepred "NX!1")
   (typepred "NY!1")
   (expand "nonempty?")
   (expand "empty?")
   (skosimp*)
   (expand "member")
   (lemma "x_section_measurable")
   (inst - "S1!1" "S2!1" "_" "_")
   (inst - "cross_product(NX!1, NY!1)" "x!2")
   (expand "member")
   (lemma "y_section_measurable"
    ("S1" "S1!1" "S2" "S2!1" "Z" "cross_product(NX!1, NY!1)" "y" "x!1"))
   (expand "member")
   (replace -5)
   (expand "y_section")
   (expand "x_section")
   (expand "cross_product")
   (replace -3)
   (replace -4)
   (case-replace "{x | NX!1(x)}=NX!1")
   (("1"
     (case-replace "{y | NY!1(y)}=NY!1")
     (("1" (assert)) ("2" (apply-extensionality 1 :hide? t))))
    ("2" (apply-extensionality 1 :hide? t))))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: product_sigma_def
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "measurable_rectangle?")
   (inst + "emptyset[T1]" "emptyset[T2]")
   (assert)
   (typepred "S1!1")
   (typepred "S2!1")
   (expand "sigma_algebra?")
   (flatten)
   (expand "subset_algebra_empty?")
   (expand "member")
   (assert)
   (expand "cross_product")
   (apply-extensionality :hide? t)
   (expand "emptyset")
   (propax))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_sigma
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "sigma_times")
   (lemma "generated_sigma_algebra_subset1"
    ("X"
     "extend
                                       [setof[[T1, T2]],
                                        measurable_rectangle[T1, T2](S1, S2),
                                        bool, FALSE]
                                       (fullset
                                            [measurable_rectangle
                                             [T1, T2](S1, S2)])"))
   (expand "subset?")
   (expand "member")
   (inst - "cross_product(X!1, Y!1)")
   (assert)
   (hide 2)
   (expand "fullset")
   (expand "extend")
   (prop)
   (expand "measurable_rectangle?")
   (inst + "X!1" "Y!1")
   (assert)
   (apply-extensionality :hide? t)
   (expand "cross_product")
   (propax))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_sigma
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (case "FORALL (a, b: (measurable_rectangle?[T1, T2](S1, S2))):
                          measurable_rectangle?[T1, T2](S1, S2)(intersection(a,b))")
   (("1"
     (lemma "disjoint_algebra_construction[[T1,T2]]"
      ("NX" "measurable_rectangle?[T1, T2](S1, S2)"))
     (("1"
       (split -1)
       (("1" (propax)) ("2" (hide 2) (expand "member") (propax))
        ("3"
         (hide -1 2)
         (skosimp)
         (typepred "a!1")
         (expand "finite_disjoint_union?")
         (expand "member")
         (expand "measurable_rectangle?")
         (skosimp)
         (inst +
          "lambda (i:nat): if i=0 then cross_product(X!1,complement(Y!1)) elsif i=1 then cross_product(complement(X!1),complement(Y!1)) elsif i=2 then cross_product(complement(X!1),Y!1) else emptyset endif"
          "3")
         (split)
         (("1"
           (expand "disjoint?")
           (expand "cross_product")
           (expand "complement")
           (expand "disjoint?")
           (expand "intersection")
           (expand "empty?")
           (expand "member")
           (skosimp)
           (skosimp*)
           (expand "emptyset")
           (case-replace "i!1=0")
           (("1" (flatten) (assert))
            ("2"
             (case-replace "i!1=1")
             (("1" (assert) (flatten) (assert))
              ("2"
               (case-replace "i!1=2")
               (("1" (assert) (flatten) (assert)) ("2" (assert))))))))
          ("2"
           (replace -1)
           (hide -1)
           (apply-extensionality :hide? t)
           (expand "complement")
           (expand "cross_product")
           (expand "member")
           (expand "emptyset")
           (expand "IUnion")
           (case-replace "X!1(x!1)")
           (("1"
             (case-replace "Y!1(x!2)")
             (("1" (assert)) ("2" (assert) (inst + "0"))))
            ("2"
             (case-replace "Y!1(x!2)")
             (("1" (assert) (inst + "2") (assert))
              ("2" (assert) (inst + "1") (assert))))))
          ("3"
           (skosimp*)
           (hide -1)
           (case "i!1=0")
           (("1"
             (assert)
             (typepred "S2")
             (expand "sigma_algebra?")
             (expand "subset_algebra_complement?")
             (flatten)
             (inst - "Y!1")
             (expand "member")
             (inst + "X!1" "complement(Y!1)")
             (assert)
             (apply-extensionality :hide? t)
             (expand "cross_product")
             (propax))
            ("2"
             (case-replace "i!1=1")
             (("1"
               (assert)
               (typepred "S2")
               (typepred "S1")
               (expand "sigma_algebra?")
               (expand "subset_algebra_complement?")
               (flatten)
               (expand "member")
               (inst - "X!1")
               (inst - "Y!1")
               (inst + "complement(X!1)" "complement(Y!1)")
               (assert)
               (hide-all-but 2)
               (apply-extensionality :hide? t)
               (expand "cross_product")
               (propax))
              ("2"
               (case-replace "i!1=2")
               (("1"
                 (assert)
                 (typepred "S1")
                 (expand "sigma_algebra?")
                 (expand "subset_algebra_complement?")
                 (flatten)
                 (expand "member")
                 (inst - "X!1")
                 (inst + "complement(X!1)" "Y!1")
                 (assert)
                 (expand "cross_product")
                 (propax))
                ("2" (assert) (rewrite "emptyset_is_empty?"))))))))))))
      ("2"
       (hide-all-but 1)
       (expand "nonempty?")
       (expand "empty?")
       (expand "member")
       (inst - "emptyset")
       (expand "measurable_rectangle?")
       (inst + "emptyset" "emptyset")
       (typepred "S2")
       (typepred "S1")
       (expand "sigma_algebra?")
       (flatten)
       (expand "subset_algebra_empty?")
       (expand "member")
       (assert)
       (apply-extensionality :hide? t)
       (expand "emptyset")
       (expand "cross_product")
       (propax))))
    ("2"
     (hide 2)
     (skosimp)
     (typepred "b!1")
     (typepred "a!1")
     (expand "measurable_rectangle?")
     (skosimp*)
     (inst + "intersection(X!1,X!2)" "intersection(Y!1,Y!2)")
     (lemma "sigma_algebra_intersection[T1,S1]" ("x" "X!1" "y" "X!2"))
     (("1"
       (lemma "sigma_algebra_intersection[T2,S2]" ("x" "Y!1" "y" "Y!2"))
       (("1"
         (expand "member")
         (assert)
         (replace -3)
         (replace -6)
         (hide-all-but 1)
         (apply-extensionality :hide? t)
         (grind))
        ("2" (propax)) ("3" (propax))))
      ("2" (propax)) ("3" (propax))))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_sigma
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (split)
   (("1"
     (flatten)
     (expand "finite_disjoint_unions")
     (expand "fullset")
     (expand "extend")
     (prop)
     (expand "finite_disjoint_union?")
     (skosimp)
     (expand "member")
     (case "forall (i:nat): measurable_rectangle?[T1, T2](S1, S2)(E!1(i))")
     (("1"
       (inst +
        "image[nat,(measurable_rectangle?(S1, S2))](E!1,{n | n < n!1})")
       (split)
       (("1"
         (replace -3)
         (apply-extensionality :hide? t)
         (("1"
           (hide -3 -2)
           (case-replace "IUnion(E!1)(x!1, x!2)")
           (("1"
             (expand "IUnion")
             (skosimp)
             (expand "Union")
             (typepred "i!1")
             (inst -4 "i!1")
             (flatten)
             (case-replace "i!1<n!1")
             (("1"
               (inst + "E!1(i!1)")
               (assert)
               (expand "image")
               (inst + "i!1"))
              ("2"
               (assert)
               (expand "empty?")
               (inst -5 "(x!1,x!2)")
               (expand "member")
               (propax))))
            ("2"
             (assert)
             (expand "IUnion")
             (expand "Union")
             (skosimp)
             (typepred "a!1")
             (assert)
             (expand "image")
             (skolem - "i!1")
             (typepred "i!1")
             (inst + "i!1")
             (assert))))
          ("2" (skosimp))))
        ("2"
         (lemma "finite_image[nat, (measurable_rectangle?(S1, S2))]"
          ("f" "E!1" "S" "{n | n < n!1}"))
         (("1" (propax))
          ("2"
           (hide-all-but 1)
           (expand "is_finite")
           (inst + "n!1" "lambda (i:{n | n < n!1}): i")
           (expand "injective?")
           (skosimp))))
        ("3"
         (skosimp)
         (typepred "x!1")
         (typepred "y!1")
         (expand "image")
         (skolem - "i!1")
         (skolem - "i!2")
         (typepred "i!1")
         (typepred "i!2")
         (expand "disjoint?" -8)
         (replace -4)
         (replace -6)
         (hide-all-but (1 2 -8))
         (inst - "i!1" "i!2")
         (case-replace "i!1=i!2")
         (assert)
         (expand "disjoint?")
         (expand "intersection")
         (expand "empty?")
         (skosimp)
         (inst - "x!2")
         (expand "member")
         (flatten)
         (assert))))
      ("2"
       (hide -1 -2 2)
       (skosimp)
       (inst - "i!1")
       (case-replace "i!1<n!1")
       (("1" (flatten))
        ("2"
         (assert)
         (rewrite "emptyset_is_empty?")
         (replace -1)
         (expand "measurable_rectangle?")
         (inst + "emptyset" "emptyset")
         (split)
         (("1" (apply-extensionality :hide? t) (grind))
          ("2"
           (typepred "S1")
           (expand "sigma_algebra?")
           (expand "subset_algebra_empty?")
           (expand "member")
           (flatten))
          ("3"
           (typepred "S2")
           (expand "sigma_algebra?")
           (expand "subset_algebra_empty?")
           (expand "member")
           (flatten))))))))
    ("2"
     (skosimp*)
     (expand "finite_disjoint_unions")
     (expand "extend")
     (expand "fullset")
     (prop)
     (expand "finite_disjoint_union?")
     (case "forall (n:nat,R,Z): is_finite(R) & card(R) <= n & Union(LAMBDA (t: setof[[T1, T2]]):
                         IF measurable_rectangle?(S1, S2)(t) THEN R(t)
                         ELSE FALSE
                         ENDIF)
                  = Z & (FORALL (x, y: (R)): x = y OR disjoint?(x, y)) => EXISTS (E: sequence[set[[T1, T2]]]), n:
                   disjoint?(E) AND
                    Z = IUnion(E) AND
                     (FORALL i:
                        (i < n => member(E(i), measurable_rectangle?(S1, S2))) AND
                         (i >= n => empty?(E(i))))")
     (("1"
       (inst - "card(R!1)" "R!1" "Z!1")
       (assert)
       (replace -4)
       (propax))
      ("2"
       (hide-all-but 1)
       (induct "n")
       (("1"
         (skosimp)
         (expand "<=" -2)
         (split)
         (("1" (assert))
          ("2"
           (lemma "card_is_0" ("S" "R!2"))
           (replace -2 -1)
           (replace -1)
           (hide -2 -3)
           (case-replace "Z!2=emptyset[[T1,T2]]")
           (("1"
             (hide-all-but 1)
             (inst + "lambda (i:nat): emptyset[[T1,T2]]" "0")
             (split)
             (("1" (grind))
              ("2"
               (apply-extensionality :hide? t)
               (expand "emptyset")
               (expand "IUnion")
               (propax))
              ("3" (skosimp) (assert) (rewrite "emptyset_is_empty?"))))
            ("2"
             (hide-all-but (-1 -2 1))
             (apply-extensionality :hide? t)
             (replace -2 1 rl)
             (hide -2)
             (expand "emptyset")
             (expand "Union")
             (skosimp))))))
        ("2"
         (skosimp*)
         (expand "<=" -3)
         (split -3)
         (("1" (inst -2 "R!2" "Z!2") (assert) (replace -5) (propax))
          ("2"
           (lemma "nonempty_card" ("S" "R!2"))
           (flatten -1)
           (hide -1)
           (split -1)
           (("1"
             (lemma "card_rest" ("S" "R!2"))
             (copy -2)
             (expand "nonempty?" -1)
             (replace 1)
             (replace -3)
             (simplify -1)
             (lemma "choose_rest" ("a" "R!2"))
             (replace 1)
             (inst -5 "rest(R!2)" "Union(rest(R!2))")
             (split -5)
             (("1"
               (skosimp)
               (lemma "extensionality_postulate"
                ("f"
                 "Union(extend
                                 [setof[[T1, T2]],
                                  ((measurable_rectangle?[T1, T2](S1, S2))), bool, FALSE]
                                 (rest(R!2)))"
                 "g"
                 "IUnion(E!1)"))
               (flatten)
               (hide -1)
               (split -1)
               (("1"
                 (hide -3)
                 (case "Z!2 = union(choose(R!2), IUnion(E!1))")
                 (("1"
                   (case "forall (i:nat): disjoint?(choose(R!2),E!1(i))")
                   (("1"
                     (inst +
                      "lambda (i:nat): if i=0 then choose(R!2) else E!1(i-1) endif"
                      "n!1+1")
                     (("1"
                       (split)
                       (("1"
                         (expand "disjoint?" (-4 1))
                         (skosimp)
                         (case-replace "i!1=0")
                         (("1" (assert) (inst -2 "j!2-1"))
                          ("2"
                           (replace 1)
                           (case-replace "j!2=0")
                           (("1"
                             (inst -2 "i!1-1")
                             (("1"
                               (hide-all-but (-2 3))
                               (expand "disjoint?")
                               (expand "intersection")
                               (expand "empty?")
                               (expand "member")
                               (skosimp)
                               (inst - "x!1")
                               (assert))
                              ("2" (assert))))
                            ("2"
                             (assert)
                             (inst -4 "i!1-1" "j!2-1")
                             (assert))))))
                        ("2"
                         (apply-extensionality :hide? t)
                         (("1"
                           (replace -2 1)
                           (hide -2)
                           (expand "union")
                           (expand "member")
                           (case-replace "choose(R!2)(x!1, x!2)")
                           (("1" (expand "IUnion") (inst + "0"))
                            ("2"
                             (assert)
                             (case-replace "IUnion(E!1)(x!1, x!2)")
                             (("1"
                               (expand "IUnion")
                               (skosimp)
                               (inst + "i!1+1")
                               (assert))
                              ("2"
                               (assert)
                               (expand "IUnion")
                               (skosimp)
                               (replace 2)
                               (prop)
                               (inst + "i!1-1")
                               (assert))))))
                          ("2" (skosimp) (assert))))
                        ("3"
                         (skosimp*)
                         (expand "member")
                         (case-replace "i!1=0")
                         (("1" (assert))
                          ("2"
                           (assert)
                           (inst -5 "i!1-1")
                           (flatten)
                           (assert)
                           (case-replace "i!1 < 1 + n!1")
                           (("1" (assert)) ("2" (assert))))))))
                      ("2" (skosimp) (assert))))
                    ("2"
                     (hide 3)
                     (skosimp)
                     (expand "disjoint?" 1)
                     (expand "intersection")
                     (expand "empty?" 1)
                     (expand "member")
                     (skosimp)
                     (inst -4 "x!1")
                     (case-replace "IUnion(E!1)(x!1)")
                     (("1"
                       (expand "extend")
                       (expand "Union")
                       (skosimp)
                       (typepred "a!1")
                       (assert)
                       (inst -16 "choose(R!2)" "a!1")
                       (("1"
                         (lemma "choose_not_member" ("a" "R!2"))
                         (assert)
                         (expand "member")
                         (split)
                         (("1" (assert))
                          ("2"
                           (expand "disjoint?")
                           (expand "intersection")
                           (expand "empty?")
                           (expand "member")
                           (inst - "x!1")
                           (assert))))
                        ("2"
                         (expand "rest")
                         (expand "remove")
                         (expand "member")
                         (flatten))))
                      ("2" (expand "IUnion") (inst + "i!1"))))))
                  ("2"
                   (hide 3)
                   (apply-extensionality :hide? t)
                   (replace -9 1 rl)
                   (expand "union")
                   (expand "member")
                   (case-replace "choose(R!2)(x!1, x!2)")
                   (("1" (expand "Union") (inst + "choose(R!2)"))
                    ("2"
                     (assert)
                     (inst - "(x!1,x!2)")
                     (case-replace "IUnion(E!1)(x!1, x!2)")
                     (("1"
                       (expand "Union")
                       (skosimp)
                       (typepred "a!1")
                       (expand "extend")
                       (prop)
                       (inst + "a!1")
                       (assert)
                       (expand "rest")
                       (expand "remove")
                       (expand "member")
                       (propax))
                      ("2"
                       (assert)
                       (expand "extend")
                       (expand "Union")
                       (skosimp)
                       (typepred "a!1")
                       (assert)
                       (inst + "a!1")
                       (expand "rest")
                       (expand "remove")
                       (expand "member")
                       (propax))))))))
                ("2" (propax))))
              ("2" (lemma "finite_rest" ("A" "R!2")) (propax))
              ("3" (assert)) ("4" (hide 3) (expand "extend") (propax))
              ("5"
               (skosimp)
               (typepred "x!1")
               (typepred "y!1")
               (inst -11 "x!1" "y!1")
               (("1" (split) (("1" (propax)) ("2" (propax))))
                ("2"
                 (expand "rest")
                 (expand "remove")
                 (expand "member")
                 (assert))
                ("3"
                 (expand "rest")
                 (expand "remove")
                 (expand "member")
                 (assert))))))
            ("2" (assert))))))))))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_sigma
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (typepred "r2!1")
   (typepred "r1!1")
   (expand "measurable_rectangle?")
   (skosimp*)
   (expand "finite_disjoint_union?")
   (inst +
    "lambda (i:nat): if i=0 then cross_product(intersection(X!1,X!2),intersection(Y!1,Y!2)) else emptyset endif"
    "1")
   (split)
   (("1" (grind)) ("2" (apply-extensionality :hide? t) (grind))
    ("3"
     (skosimp)
     (case-replace "i!1=0")
     (("1"
       (assert)
       (expand "member")
       (inst + "intersection(X!1, X!2)" "intersection(Y!1, Y!2)")
       (lemma "sigma_algebra_intersection[T1,S1]" ("x" "X!1" "y" "X!2"))
       (expand "member")
       (assert)
       (lemma "sigma_algebra_intersection[T2,S2]" ("x" "Y!1" "y" "Y!2"))
       (expand "member")
       (expand "cross_product")
       (propax))
      ("2" (assert) (rewrite "emptyset_is_empty?"))))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_sigma
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (typepred "r!1")
   (expand "measurable_rectangle?")
   (skosimp)
   (expand "finite_disjoint_union?")
   (inst +
    "lambda (i:nat): if i=0 then cross_product(complement(X!1), Y!1) elsif i=1 then cross_product(X!1, complement(Y!1)) elsif i=2 then cross_product(complement(X!1),complement(Y!1)) else emptyset endif"
    "3")
   (split)
   (("1" (expand "disjoint?") (skosimp) (grind))
    ("2"
     (apply-extensionality :hide? t)
     (replace -1)
     (hide -1)
     (expand "complement")
     (expand "member")
     (expand "cross_product")
     (case-replace "X!1(x!1)")
     (("1"
       (case-replace "Y!1(x!2)")
       (("1"
         (assert)
         (expand "IUnion")
         (assert)
         (expand "emptyset")
         (propax))
        ("2"
         (assert)
         (expand "IUnion")
         (expand "emptyset")
         (inst + "1")
         (assert))))
      ("2"
       (case-replace "Y!1(x!2)")
       (("1" (assert) (expand "IUnion") (assert) (inst + "0"))
        ("2"
         (assert)
         (expand "IUnion")
         (assert)
         (inst + "2")
         (assert))))))
    ("3"
     (expand "cross_product")
     (expand "complement")
     (expand "empty?")
     (expand "member")
     (skosimp)
     (assert)
     (case-replace "i!1=0")
     (("1"
       (assert)
       (inst + "complement(X!1)" "Y!1")
       (assert)
       (lemma "sigma_algebra_complement[T1,S1]" ("x" "X!1"))
       (expand "member")
       (assert)
       (apply-extensionality :hide? t)
       (expand "complement")
       (expand "member")
       (propax))
      ("2"
       (case-replace "i!1=1")
       (("1"
         (assert)
         (inst + "X!1" "complement(Y!1)")
         (lemma "sigma_algebra_complement[T2,S2]" ("x" "Y!1"))
         (expand "member")
         (assert)
         (apply-extensionality 2 :hide? t)
         (expand "complement")
         (expand "member")
         (propax))
        ("2"
         (case-replace "i!1=2")
         (("1"
           (assert)
           (lemma "sigma_algebra_complement[T2,S2]" ("x" "Y!1"))
           (lemma "sigma_algebra_complement[T1,S1]" ("x" "X!1"))
           (expand "member")
           (inst + "complement(X!1)" "complement(Y!1)")
           (assert)
           (apply-extensionality 3 :hide? t)
           (expand "complement")
           (expand "member")
           (propax))
          ("2" (assert) (expand "emptyset") (propax))))))))))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: product_sigma
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (lemma "rectangle_algebra_aux")
   (typepred
    "generated_subset_algebra[[T1, T2]](measurable_rectangle?(S1, S2))")
   (assert))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "o ")
   (split)
   (("1" (assert))
    ("2"
     (expand "x_section")
     (lemma "x_section_measurable[T1,T2]"
      ("Z" "M!1" "x" "x!1" "S1" "S1" "S2" "S2"))
     (expand "member")
     (lemma "fm_monotone[T2,S2,nu!1]"
      ("A" "x_section(M!1, x!1)" "B" "fullset[T2]"))
     (split)
     (("1" (propax))
      ("2"
       (expand "subset?")
       (skosimp)
       (expand "member")
       (expand "fullset")
       (propax))))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "o")
   (split)
   (("1" (assert))
    ("2"
     (expand "y_section")
     (lemma "y_section_measurable[T1,T2]"
      ("Z" "M!1" "y" "y!1" "S1" "S1" "S2" "S2"))
     (expand "member")
     (lemma "m_monotone[T1,S1,to_measure(mu!1)]"
      ("a" "y_section(M!1, y!1)" "b" "fullset[T1]"))
     (("1"
       (split)
       (("1" (expand "to_measure") (expand "x_le") (propax))
        ("2"
         (expand "subset?")
         (expand "fullset")
         (expand "member")
         (propax))))
      ("2" (assert) (expand "measurable_set?") (propax))
      ("3" (expand "measurable_set?") (propax))))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (name "F" "lambda M: nu!1 o x_section(M)")
   (("1"
     (case-replace "nu!1 o x_section(M!1) = F(M!1)")
     (("1"
       (hide-all-but 1)
       (case "forall x,M: 0 <= F(M)(x) & F(M)(x) <= nu!1(fullset[T2])")
       (("1"
         (name "U"
               "{M:set[[T1,T2]] | sigma_times(S1,S2)(M) & measurable_function?[T1,S1](F(M))}")
         (case "forall (R:measurable_rectangle(S1,S2)): U(R)")
         (("1"
           (case "FORALL (a, b: (U)): disjoint?(a,b) => U(union(a, b))")
           (("1"
             (case "FORALL (a: (U)): U(complement(a))")
             (("1"
               (case "monotone?(U)")
               (("1"
                 (lemma "monotone_class" ("C" "U"))
                 (("1"
                   (typepred "rectangle_algebra")
                   (typepred "M!1")
                   (inst -3 "rectangle_algebra")
                   (split -3)
                   (("1"
                     (expand "subset?")
                     (inst - "M!1")
                     (expand "member")
                     (split)
                     (("1" (expand "U") (propax))
                      ("2"
                       (hide 2)
                       (expand "sigma_times" -1)
                       (lemma "generated_sigma_algebra_subset2"
                        ("X"
                         "extend
                                                           [setof[[T1, T2]],
                                                            measurable_rectangle[T1, T2](S1, S2),
                                                            bool, FALSE]
                                                           (fullset
                                                                [measurable_rectangle
                                                                 [T1, T2](S1, S2)])"
                         "Y"
                         "generated_sigma_algebra(rectangle_algebra)"))
                       (name-replace "SA"
                        "generated_sigma_algebra(extend
                                                          [setof[[T1, T2]],
                                                           measurable_rectangle[T1, T2](S1, S2),
                                                           bool, FALSE]
                                                          (fullset
                                                               [measurable_rectangle
                                                                [T1, T2](S1, S2)]))")
                       (split -1)
                       (("1" (expand "subset?") (inst - "M!1") (assert))
                        ("2"
                         (hide 2)
                         (expand "subset?")
                         (expand "fullset")
                         (expand "extend")
                         (expand "member")
                         (skosimp)
                         (prop)
                         (lemma "generated_sigma_algebra_subset1"
                          ("X" "rectangle_algebra"))
                         (expand "subset?")
                         (inst - "x!1")
                         (assert)
                         (hide-all-but (-1 1))
                         (expand "rectangle_algebra")
                         (expand "finite_disjoint_unions")
                         (expand "fullset")
                         (expand "extend")
                         (prop)
                         (expand "finite_disjoint_union?")
                         (inst +
                          "lambda (i:nat): if i = 0 then x!1 else emptyset[[T1,T2]] endif"
                          "1")
                         (split)
                         (("1" (hide -1) (grind))
                          ("2"
                           (apply-extensionality :hide? t)
                           (expand "IUnion")
                           (case-replace "x!1(x!2, x!3)")
                           (("1" (inst + "0"))
                            ("2"
                             (assert)
                             (skosimp)
                             (expand "emptyset")
                             (propax))))
                          ("3"
                           (skosimp)
                           (case-replace "i!1=0")
                           (("1" (assert))
                            ("2"
                             (assert)
                             (rewrite "emptyset_is_empty?"))))))
                        ("3" (assert))))))
                    ("2"
                     (hide 2)
                     (expand "subset?")
                     (skosimp)
                     (expand "member")
                     (expand "rectangle_algebra")
                     (expand "finite_disjoint_unions")
                     (hide -3)
                     (expand "fullset")
                     (expand "extend")
                     (prop)
                     (expand "finite_disjoint_union?")
                     (skosimp)
                     (case "forall (n:nat): U(IUnion(n,E!1))")
                     (("1"
                       (case-replace "IUnion(E!1)=IUnion(n!1,E!1)")
                       (("1" (inst - "n!1") (assert))
                        ("2"
                         (hide-all-but (1 -4))
                         (apply-extensionality :hide? t)
                         (expand "IUnion")
                         (expand "image")
                         (expand "Union")
                         (case-replace
                          "EXISTS (i: nat): E!1(i)(x!2, x!3)")
                         (("1"
                           (skosimp)
                           (inst - "i!1")
                           (flatten)
                           (case-replace "i!1<n!1")
                           (("1"
                             (inst + "E!1(i!1)")
                             (inst + "i!1")
                             (assert))
                            ("2"
                             (assert)
                             (expand "empty?")
                             (inst -3 "(x!2,x!3)")
                             (assert))))
                          ("2"
                           (replace 1 2)
                           (assert)
                           (skosimp)
                           (typepred "a!1")
                           (skolem - "n!2")
                           (inst + "n!2")
                           (assert))))))
                      ("2"
                       (hide-all-but (1 -7 -1 -8 -3))
                       (induct "n")
                       (("1"
                         (rewrite "IUnion_0_def")
                         (inst - "0")
                         (flatten)
                         (inst -5 "E!1(0)")
                         (assert)
                         (rewrite "emptyset_is_empty?")
                         (replace -2)
                         (hide-all-but 1)
                         (expand "measurable_rectangle?")
                         (inst + "emptyset" "emptyset")
                         (split)
                         (("1" (apply-extensionality :hide? t) (grind))
                          ("2"
                           (typepred "S1")
                           (expand "sigma_algebra?")
                           (flatten)
                           (expand "subset_algebra_empty?")
                           (expand "member")
                           (propax))
                          ("3"
                           (typepred "S2")
                           (expand "sigma_algebra?")
                           (flatten)
                           (expand "subset_algebra_empty?")
                           (expand "member")
                           (propax))))
                        ("2"
                         (skosimp)
                         (rewrite "IUnion_n_def")
                         (inst -5 "E!1(1 + j!1)")
                         (("1"
                           (inst -4 "IUnion(j!1, E!1)" "E!1(1 + j!1)")
                           (split)
                           (("1" (propax))
                            ("2"
                             (hide-all-but (-2 1))
                             (expand "disjoint?")
                             (expand "disjoint?")
                             (expand "intersection")
                             (expand "IUnion")
                             (expand "empty?")
                             (skosimp)
                             (expand "member")
                             (flatten)
                             (expand "image")
                             (expand "Union")
                             (skosimp)
                             (typepred "a!1")
                             (skolem - "n!2")
                             (inst - "n!2" "1+j!1")
                             (assert)
                             (inst - "x!2")
                             (assert))))
                          ("2"
                           (inst - "1+j!1")
                           (assert)
                           (flatten)
                           (assert)
                           (rewrite "emptyset_is_empty?")
                           (replace -3)
                           (hide-all-but 1)
                           (expand "measurable_rectangle?")
                           (inst + "emptyset" "emptyset")
                           (split)
                           (("1" (apply-extensionality :hide? t) (grind))
                            ("2"
                             (typepred "S1")
                             (expand "sigma_algebra?")
                             (flatten)
                             (expand "subset_algebra_empty?")
                             (expand "member")
                             (propax))
                            ("3"
                             (typepred "S2")
                             (expand "sigma_algebra?")
                             (flatten)
                             (expand "subset_algebra_empty?")
                             (expand "member")
                             (propax))))))))))))
                  ("2" (propax))))
                ("2"
                 (hide-all-but 1)
                 (expand "monotone?")
                 (skosimp)
                 (expand "member")
                 (split)
                 (("1"
                   (flatten)
                   (expand "U" 1)
                   (split)
                   (("1"
                     (lemma
                      "sigma_algebra_IUnion[[T1,T2],sigma_times(S1, S2)]"
                      ("SS" "E!1"))
                     (("1" (assert))
                      ("2"
                       (skosimp)
                       (inst - "x1!1")
                       (expand "U")
                       (flatten))))
                    ("2"
                     (lemma "pointwise_measurable[T1, S1]"
                      ("f"
                       "F(IUnion(E!1))"
                       "u"
                       "lambda (n:nat): F(E!1(n))"))
                     (("1"
                       (assert)
                       (hide 2)
                       (expand "pointwise_convergence?")
                       (skosimp)
                       (expand "U")
                       (lemma "fm_IUnion[T2,S2,nu!1]"
                        ("X" "lambda (n:nat): x_section(E!1(n),x!1)"))
                       (("1"
                         (split -1)
                         (("1"
                           (expand "o ")
                           (expand "F")
                           (expand "o ")
                           (expand "x_section" 1)
                           (name-replace "LHS"
                            "LAMBDA (n_1: nat): nu!1(x_section(E!1(n_1), x!1))")
                           (case-replace
                            "IUnion(LAMBDA (n: nat): x_section(E!1(n), x!1))=x_section(IUnion(E!1), x!1)")
                           (("1"
                             (name-replace "RHS"
                              "nu!1(x_section(IUnion(E!1), x!1))")
                             (hide-all-but (-2 1))
                             (rewrite "metric_convergence_def")
                             (expand "convergence")
                             (expand "metric_converges_to")
                             (skosimp)
                             (inst - "r!1")
                             (skosimp)
                             (inst + "n!1")
                             (skosimp)
                             (inst - "i!1")
                             (assert)
                             (grind))
                            ("2"
                             (hide-all-but 1)
                             (apply-extensionality :hide? t)
                             (expand "x_section")
                             (expand "IUnion")
                             (propax))))
                          ("2"
                           (hide -2 2)
                           (expand "increasing?")
                           (skosimp)
                           (inst - "x!2" "y!1")
                           (assert)
                           (expand "subset?")
                           (expand "x_section")
                           (expand "member")
                           (skosimp)
                           (inst - "(x!1,x!3)")
                           (assert))))
                        ("2"
                         (skosimp)
                         (inst - "n!1")
                         (flatten)
                         (lemma "x_section_measurable"
                          ("S1" "S1" "S2" "S2" "Z" "E!1(n!1)" "x" "x!1"))
                         (assert))))
                      ("2"
                       (skosimp)
                       (inst - "n!1")
                       (expand "U")
                       (flatten))
                      ("3"
                       (skosimp)
                       (inst - "n!1")
                       (expand "U")
                       (flatten))))))
                  ("2"
                   (flatten)
                   (expand "U")
                   (split)
                   (("1"
                     (lemma
                      "sigma_algebra_IIntersection[[T1,T2],sigma_times(S1, S2)]"
                      ("SS" "E!1"))
                     (("1" (assert))
                      ("2" (skosimp) (inst - "x1!1") (flatten))))
                    ("2"
                     (lemma "pointwise_measurable[T1, S1]"
                      ("f"
                       "F(IIntersection(E!1))"
                       "u"
                       "lambda (n:nat): F(E!1(n))"))
                     (("1"
                       (assert)
                       (hide 2)
                       (expand "pointwise_convergence?")
                       (skosimp)
                       (expand "F")
                       (expand "o ")
                       (lemma "fm_IIntersection[T2,S2,nu!1]"
                        ("X" "lambda (n:nat): x_section(E!1(n),x!1)"))
                       (("1"
                         (split)
                         (("1"
                           (expand "o ")
                           (expand "x_section" 1)
                           (name-replace "LHS"
                            "LAMBDA (n_1: nat): nu!1(x_section(E!1(n_1), x!1))")
                           (case-replace
                            "IIntersection(LAMBDA
                                                                 (n: nat):
                                                                 x_section(E!1(n), x!1))=x_section(IIntersection(E!1), x!1)")
                           (("1"
                             (name-replace "RHS"
                              "nu!1(x_section(IIntersection(E!1), x!1))")
                             (hide-all-but (-2 1))
                             (rewrite "metric_convergence_def")
                             (expand "convergence")
                             (expand "metric_converges_to")
                             (skosimp)
                             (inst - "r!1")
                             (skosimp)
                             (inst + "n!1")
                             (skosimp)
                             (inst - "i!1")
                             (assert)
                             (grind))
                            ("2"
                             (hide-all-but (-3 1))
                             (apply-extensionality :hide? t)
                             (expand "IIntersection")
                             (expand "x_section")
                             (propax))))
                          ("2"
                           (hide-all-but (-1 1))
                           (expand "decreasing?")
                           (skosimp)
                           (inst - "x!2" "y!1")
                           (assert)
                           (expand "subset?")
                           (expand "x_section")
                           (skosimp)
                           (expand "member")
                           (inst - "(x!1,x!3)")
                           (assert))))
                        ("2"
                         (skosimp)
                         (inst - "n!1")
                         (flatten)
                         (lemma "x_section_measurable"
                          ("S1" "S1" "S2" "S2" "Z" "E!1(n!1)" "x" "x!1"))
                         (assert))))
                      ("2" (skosimp) (inst - "n!1") (flatten))
                      ("3" (skosimp) (inst - "n!1") (flatten))))))))))
              ("2"
               (hide-all-but 1)
               (skosimp)
               (typepred "a!1")
               (expand "U")
               (flatten)
               (lemma
                "sigma_algebra_complement[[T1,T2],sigma_times(S1, S2)]"
                ("x" "a!1"))
               (assert)
               (lemma "const_measurable[T1,S1]"
                ("c" "nu!1(fullset[T2])"))
               (lemma "diff_measurable[T1,S1]"
                ("g1" "LAMBDA (x: T1): nu!1(fullset[T2])" "g2" "F(a!1)"))
               (("1"
                 (expand "-")
                 (case-replace
                  "(LAMBDA (x_1: T1):
                                               nu!1(fullset[T2]) - F(a!1)(x_1))=F(complement(a!1))")
                 (apply-extensionality :hide? t)
                 (hide 2 -1 -2 -5)
                 (expand "F")
                 (expand "o ")
                 (lemma "fm_disjointunion[T2,S2,nu!1]"
                  ("A"
                   "x_section(a!1)(x!1)"
                   "B"
                   "x_section(complement(a!1))(x!1)"))
                 (expand "x_section")
                 (split)
                 (("1"
                   (case-replace
                    "union(x_section(a!1, x!1), x_section(complement(a!1), x!1))=fullset[T2]")
                   (("1" (assert))
                    ("2"
                     (apply-extensionality :hide? t)
                     (hide-all-but 1)
                     (grind))))
                  ("2" (hide-all-but 1) (grind))))
                ("2" (propax))))))
            ("2"
             (hide 2)
             (skosimp)
             (hide -3)
             (typepred "b!1")
             (typepred "a!1")
             (expand "U")
             (flatten)
             (lemma "sigma_algebra_union[[T1,T2],sigma_times(S1, S2)]"
              ("x" "a!1" "y" "b!1"))
             (assert)
             (lemma "sum_measurable[T1, S1]"
              ("g1" "F(a!1)" "g2" "F(b!1)"))
             (expand "+" -1)
             (case-replace
              "(LAMBDA (x: T1): F(a!1)(x) + F(b!1)(x))=F(union(a!1, b!1))")
             (apply-extensionality :hide? t)
             (hide-all-but (-2 -3 -4 -7 1))
             (expand "F")
             (expand "o ")
             (expand "x_section")
             (lemma "fm_disjointunion[T2,S2,nu!1]"
              ("A" "x_section(a!1, x!1)" "B" "x_section(b!1, x!1)"))
             (rewrite "x_section_union")
             (assert)
             (hide-all-but (-4 1))
             (lemma "x_section_disjoint" ("X" "a!1" "Y" "b!1" "a" "x!1"))
             (assert))))
          ("2"
           (hide 2)
           (skosimp)
           (expand "U")
           (hide -1)
           (typepred "R!1")
           (expand "measurable_rectangle?")
           (skosimp)
           (split)
           (("1"
             (assert)
             (expand "sigma_times")
             (lemma "generated_sigma_algebra_subset1"
              ("X"
               "extend
                                                 [setof[[T1, T2]],
                                                  measurable_rectangle[T1, T2](S1, S2),
                                                  bool, FALSE]
                                                 (fullset
                                                      [measurable_rectangle
                                                       [T1, T2](S1, S2)])"))
             (name-replace "SA"
              "generated_sigma_algebra(extend
                                                [setof[[T1, T2]],
                                                 measurable_rectangle[T1, T2](S1, S2),
                                                 bool, FALSE]
                                                (fullset
                                                     [measurable_rectangle
                                                      [T1, T2](S1, S2)]))")
             (expand "subset?")
             (expand "fullset")
             (expand "extend")
             (expand "member")
             (inst - "R!1")
             (assert))
            ("2"
             (expand "F")
             (expand "o ")
             (expand "x_section")
             (hide -4)
             (lemma "phi_is_simple[T1,S1]" ("X" "X!1"))
             (("1"
               (expand "simple?")
               (flatten)
               (hide -2)
               (lemma "scal_measurable[T1,S1]"
                ("c" "nu!1(Y!1)" "g" "phi[T1,S1](X!1)"))
               (("1"
                 (expand "*")
                 (expand "phi")
                 (expand "member")
                 (case-replace
                  "(LAMBDA (x: T1):
                                               nu!1(Y!1) * IF X!1(x) THEN 1 ELSE 0 ENDIF)=(LAMBDA (x: T1): nu!1(x_section(R!1, x)))")
                 (("1"
                   (apply-extensionality :hide? t)
                   (("1"
                     (replace -3)
                     (expand "cross_product")
                     (expand "x_section")
                     (hide-all-but (-4 -5 1))
                     (case-replace "X!1(x!1)")
                     (("1"
                       (case-replace "{b: T2 | Y!1(b)}=Y!1")
                       (("1" (assert))
                        ("2" (apply-extensionality :hide? t))))
                      ("2"
                       (assert)
                       (typepred "nu!1")
                       (expand "finite_measure?")
                       (flatten)
                       (expand "emptyset")
                       (assert))))
                    ("2"
                     (skosimp)
                     (replace -3)
                     (expand "cross_product")
                     (expand "x_section")
                     (case-replace "X!1(x!1)")
                     (("1"
                       (case-replace "{b: T2 | Y!1(b)}=Y!1")
                       (apply-extensionality :hide? t))
                      ("2"
                       (assert)
                       (typepred "S2")
                       (expand "sigma_algebra?")
                       (flatten)
                       (expand "subset_algebra_empty?")
                       (expand "member")
                       (expand "emptyset")
                       (propax))))))
                  ("2"
                   (skosimp)
                   (expand "x_section")
                   (replace -3)
                   (expand "cross_product")
                   (case-replace "X!1(x!1)")
                   (("1"
                     (case-replace "{b: T2 | Y!1(b)}=Y!1")
                     (apply-extensionality :hide? t))
                    ("2"
                     (assert)
                     (typepred "S2")
                     (expand "sigma_algebra?")
                     (expand "subset_algebra_empty?")
                     (flatten)
                     (expand "member")
                     (expand "emptyset")
                     (propax))))
                  ("3" (skosimp))))
                ("2" (propax)) ("3" (propax))))
              ("2" (propax))))))))
        ("2"
         (hide 2)
         (expand "F")
         (skosimp)
         (lemma "x_section_bounded" ("nu" "nu!1" "M" "M!2" "x" "x!1"))
         (propax))))
      ("2" (expand "F") (propax))))
    ("2"
     (skosimp)
     (skosimp)
     (expand "x_section")
     (lemma "x_section_measurable"
      ("S1" "S1" "S2" "S2" "Z" "M!2" "x" "x1!1"))
     (assert))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (name "F" "lambda M: mu!1 o y_section(M)")
   (("1"
     (case-replace "mu!1 o y_section(M!1) = F(M!1)")
     (("1"
       (hide-all-but 1)
       (case "forall y,M: 0 <= F(M)(y) & F(M)(y) <= mu!1(fullset[T1])")
       (("1"
         (name "U"
               "{M:set[[T1,T2]] | sigma_times(S1,S2)(M) & measurable_function?[T2,S2](F(M))}")
         (case "forall (R:measurable_rectangle(S1,S2)): U(R)")
         (("1"
           (case "FORALL (a, b: (U)): disjoint?(a,b) => U(union(a, b))")
           (("1"
             (case "FORALL (a: (U)): U(complement(a))")
             (("1"
               (case "monotone?(U)")
               (("1"
                 (lemma "monotone_class" ("C" "U"))
                 (("1"
                   (typepred "rectangle_algebra")
                   (typepred "M!1")
                   (inst -3 "rectangle_algebra")
                   (split)
                   (("1"
                     (expand "subset?")
                     (inst - "M!1")
                     (expand "member")
                     (split)
                     (("1" (expand "U") (propax))
                      ("2"
                       (hide 2)
                       (expand "sigma_times" -1)
                       (lemma "generated_sigma_algebra_subset2"
                        ("X"
                         "extend
                                                           [setof[[T1, T2]],
                                                            measurable_rectangle[T1, T2](S1, S2),
                                                            bool, FALSE]
                                                           (fullset
                                                                [measurable_rectangle
                                                                 [T1, T2](S1, S2)])"
                         "Y"
                         "generated_sigma_algebra(rectangle_algebra)"))
                       (assert)
                       (split -1)
                       (("1"
                         (name-replace "SA"
                          "generated_sigma_algebra(extend
                                                            [setof[[T1, T2]],
                                                             measurable_rectangle[T1, T2](S1, S2),
                                                             bool, FALSE]
                                                            (fullset
                                                                 [measurable_rectangle
                                                                  [T1, T2](S1, S2)]))")
                         (expand "subset?")
                         (inst - "M!1")
                         (expand "member")
                         (propax))
                        ("2"
                         (hide 2)
                         (expand "subset?")
                         (skosimp)
                         (expand "fullset")
                         (expand "extend")
                         (expand "member")
                         (prop)
                         (lemma "generated_sigma_algebra_subset1"
                          ("X" "rectangle_algebra"))
                         (expand "subset?")
                         (expand "member")
                         (inst - "x!1")
                         (assert)
                         (hide-all-but (-1 1))
                         (expand "rectangle_algebra")
                         (rewrite "finite_disjoint_rectangles")
                         (inst +
                          "singleton[(measurable_rectangle?(S1, S2))](x!1)")
                         (assert)
                         (split)
                         (("1"
                           (apply-extensionality :hide? t)
                           (expand "singleton")
                           (expand "extend")
                           (expand "Union")
                           (case-replace "x!1(x!2,x!3)")
                           (("1" (inst + "x!1"))
                            ("2"
                             (assert)
                             (skosimp)
                             (typepred "a!1")
                             (assert))))
                          ("2"
                           (skosimp)
                           (typepred "x!2")
                           (typepred "y!1")
                           (expand "singleton")
                           (assert))))))))
                    ("2"
                     (hide 2)
                     (expand "subset?")
                     (skosimp)
                     (expand "member")
                     (hide -2)
                     (expand "rectangle_algebra")
                     (hide -2)
                     (expand "finite_disjoint_unions")
                     (expand "fullset")
                     (expand "extend")
                     (prop)
                     (expand "finite_disjoint_union?")
                     (skosimp)
                     (expand "member")
                     (case "forall (n:nat): U(IUnion(n,E!1))")
                     (("1"
                       (case-replace "IUnion(E!1)=IUnion(n!1, E!1)")
                       (("1" (inst - "n!1") (assert))
                        ("2"
                         (hide 2)
                         (apply-extensionality :hide? t)
                         (case-replace "IUnion(E!1)(x!2, x!3)")
                         (("1"
                           (expand "IUnion")
                           (skosimp)
                           (case "i!1>=n!1")
                           (("1"
                             (inst -6 "i!1")
                             (flatten)
                             (assert)
                             (expand "empty?")
                             (inst -7 "(x!2,x!3)")
                             (assert))
                            ("2"
                             (inst -5 "i!1")
                             (flatten)
                             (assert)
                             (expand "image")
                             (expand "Union")
                             (inst + "E!1(i!1)")
                             (inst + "i!1"))))
                          ("2"
                           (assert)
                           (expand "IUnion")
                           (expand "image")
                           (expand "Union")
                           (skosimp)
                           (typepred "a!1")
                           (skosimp)
                           (inst + "x!4")
                           (assert))))))
                      ("2"
                       (hide-all-but (-1 -6 1 -7 -3))
                       (induct "n")
                       (("1"
                         (rewrite "IUnion_0_def")
                         (inst - "0")
                         (flatten)
                         (case-replace "n!1>0")
                         (("1" (assert) (inst -6 "E!1(0)"))
                          ("2"
                           (assert)
                           (rewrite "emptyset_is_empty?")
                           (replace -2)
                           (inst -4 "emptyset")
                           (hide-all-but 1)
                           (expand "measurable_rectangle?")
                           (inst + "emptyset" "emptyset")
                           (split)
                           (("1"
                             (apply-extensionality :hide? t)
                             (expand "cross_product")
                             (grind))
                            ("2"
                             (typepred "S1")
                             (expand "sigma_algebra?")
                             (expand "subset_algebra_empty?")
                             (flatten)
                             (expand "member")
                             (propax))
                            ("3"
                             (typepred "S2")
                             (expand "sigma_algebra?")
                             (expand "subset_algebra_empty?")
                             (flatten)
                             (expand "member")
                             (propax))))))
                        ("2"
                         (skosimp)
                         (rewrite "IUnion_n_def")
                         (inst -4 "IUnion(j!1, E!1)" "E!1(1 + j!1)")
                         (("1"
                           (split -4)
                           (("1" (propax))
                            ("2"
                             (hide-all-but (-2 1))
                             (expand "disjoint?")
                             (expand "disjoint?")
                             (expand "intersection")
                             (expand "empty?")
                             (expand "member")
                             (skosimp)
                             (expand "IUnion")
                             (expand "image")
                             (expand "Union")
                             (skosimp)
                             (typepred "a!1")
                             (skolem - "n!2")
                             (typepred "n!2")
                             (inst - "n!2" "1+j!1")
                             (assert)
                             (inst - "x!2")
                             (assert))))
                          ("2"
                           (hide -1 2)
                           (inst - "1+j!1")
                           (inst - "E!1(1+j!1)")
                           (hide 2 -1)
                           (case-replace "1 + j!1 < n!1")
                           (("1" (flatten))
                            ("2"
                             (assert)
                             (rewrite "emptyset_is_empty?")
                             (replace -1)
                             (hide-all-but 2)
                             (expand "measurable_rectangle?")
                             (inst + "emptyset" "emptyset")
                             (split)
                             (("1"
                               (apply-extensionality :hide? t)
                               (grind))
                              ("2"
                               (typepred "S1")
                               (expand "sigma_algebra?")
                               (flatten)
                               (expand "subset_algebra_empty?")
                               (expand "member")
                               (propax))
                              ("3"
                               (typepred "S2")
                               (expand "sigma_algebra?")
                               (flatten)
                               (expand "subset_algebra_empty?")
                               (expand "member")
                               (propax))))))))))))))
                  ("2" (propax))))
                ("2"
                 (hide 2)
                 (expand "monotone?")
                 (skosimp)
                 (expand "member")
                 (split)
                 (("1"
                   (flatten)
                   (lemma
                    "sigma_algebra_IUnion[[T1,T2],sigma_times(S1,S2)]"
                    ("SS" "E!1"))
                   (("1"
                     (expand "member")
                     (expand "U" 1)
                     (assert)
                     (lemma "pointwise_measurable[T2, S2]"
                      ("f"
                       "F(IUnion(E!1))"
                       "u"
                       "lambda (n:nat): F(E!1(n))"))
                     (("1"
                       (assert)
                       (hide 2)
                       (expand "pointwise_convergence?")
                       (skolem + "y!1")
                       (expand "F")
                       (expand "o ")
                       (expand "y_section")
                       (hide -7)
                       (typepred "mu!1")
                       (expand "finite_measure?")
                       (flatten)
                       (lemma "disjoint_IUnion" ("A" "E!1"))
                       (skosimp)
                       (case "forall (n:nat): sigma_times(S1, S2)(B!1(n))")
                       (("1"
                         (inst -8
                          "lambda (n:nat): y_section(B!1(n), y!1)")
                         (("1"
                           (case-replace
                            "(IUnion(LAMBDA (n: nat): y_section(B!1(n), y!1)))=y_section(IUnion(E!1), y!1)")
                           (("1"
                             (hide -1)
                             (name-replace "RHS"
                              "mu!1(y_section(IUnion(E!1), y!1))")
                             (expand "o ")
                             (case "forall (n:nat): IUnion(n, E!1)=E!1(n)")
                             (("1"
                               (case "forall (n:nat): series(LAMBDA (x: nat): mu!1(y_section(B!1(x), y!1)))(n)= mu!1(y_section(E!1(n), y!1))")
                               (("1"
                                 (lemma
                                  "extensionality_postulate"
                                  ("f"
                                   "series(LAMBDA (x: nat): mu!1(y_section(B!1(x), y!1)))"
                                   "g"
                                   "lambda (n:nat): mu!1(y_section(E!1(n), y!1))"))
                                 (flatten -1)
                                 (hide -2)
                                 (split -1)
                                 (("1"
                                   (hide -2)
                                   (replace -1)
                                   (name-replace
                                    "LHS"
                                    "LAMBDA (n: nat): mu!1(y_section(E!1(n), y!1))")
                                   (hide-all-but (-10 1))
                                   (rewrite "metric_convergence_def")
                                   (expand "convergence")
                                   (expand "metric_converges_to")
                                   (skosimp)
                                   (inst - "r!1")
                                   (skosimp)
                                   (inst + "n!1")
                                   (skosimp)
                                   (inst - "i!1")
                                   (expand "member")
                                   (expand "ball")
                                   (assert)
                                   (grind))
                                  ("2" (skosimp) (inst - "x!1"))))
                                ("2"
                                 (hide 2)
                                 (induct "n")
                                 (("1"
                                   (expand "series")
                                   (expand "sigma")
                                   (expand "sigma")
                                   (replace -5)
                                   (propax))
                                  ("2"
                                   (skosimp*)
                                   (expand "series")
                                   (expand "sigma" 1)
                                   (replace -1)
                                   (hide -1)
                                   (inst -6 "j!1")
                                   (replace -6)
                                   (inst -1 "j!1")
                                   (replace -1)
                                   (lemma
                                    "fm_disjointunion[T1,S1,mu!1]"
                                    ("A"
                                     "y_section(difference(E!1(j!1 + 1), E!1(j!1)), y!1)"
                                     "B"
                                     "y_section(E!1(j!1), y!1)"))
                                   (split -1)
                                   (("1"
                                     (case-replace
                                      "union(y_section(difference(E!1(j!1 + 1), E!1(j!1)), y!1),
                                                       y_section(E!1(j!1), y!1))=y_section(E!1(1 + j!1), y!1)")
                                     (("1" (assert))
                                      ("2"
                                       (hide-all-but (-12 1))
                                       (apply-extensionality :hide? t)
                                       (expand "difference")
                                       (expand "y_section")
                                       (expand "union")
                                       (expand "member")
                                       (case-replace
                                        "E!1(1 + j!1)(x!1, y!1)")
                                       (("1" (flatten))
                                        ("2"
                                         (assert)
                                         (expand "increasing?")
                                         (inst - "j!1" "1+j!1")
                                         (assert)
                                         (expand "subset?")
                                         (inst - "(x!1,y!1)")
                                         (assert))))))
                                    ("2"
                                     (hide-all-but (1 -11))
                                     (expand "difference")
                                     (expand "y_section")
                                     (expand "disjoint?")
                                     (expand "intersection")
                                     (expand "increasing?")
                                     (expand "subset?")
                                     (expand "empty?")
                                     (expand "member")
                                     (skosimp))))
                                  ("3"
                                   (skosimp)
                                   (inst -12 "n!2")
                                   (expand "U")
                                   (flatten)
                                   (lemma
                                    "y_section_measurable"
                                    ("S1"
                                     "S1"
                                     "S2"
                                     "S2"
                                     "Z"
                                     "E!1(n!2)"
                                     "y"
                                     "y!1"))
                                   (assert))
                                  ("4"
                                   (skosimp)
                                   (inst - "x!1")
                                   (lemma
                                    "y_section_measurable"
                                    ("S1"
                                     "S1"
                                     "S2"
                                     "S2"
                                     "Z"
                                     "B!1(x!1)"
                                     "y"
                                     "y!1"))
                                   (assert))))
                                ("3"
                                 (skosimp)
                                 (inst -12 "n!1")
                                 (expand "U" -12)
                                 (flatten)
                                 (lemma
                                  "y_section_measurable"
                                  ("S1"
                                   "S1"
                                   "S2"
                                   "S2"
                                   "Z"
                                   "E!1(n!1)"
                                   "y"
                                   "y!1"))
                                 (assert))
                                ("4"
                                 (skosimp)
                                 (inst -2 "x!1")
                                 (lemma
                                  "y_section_measurable"
                                  ("S1"
                                   "S1"
                                   "S2"
                                   "S2"
                                   "Z"
                                   "B!1(x!1)"
                                   "y"
                                   "y!1"))
                                 (assert))))
                              ("2"
                               (hide-all-but (-10 1))
                               (skosimp)
                               (apply-extensionality :hide? t)
                               (expand "IUnion")
                               (expand "image")
                               (expand "Union")
                               (case-replace "E!1(n!1)(x!1, x!2)")
                               (("1" (inst + "E!1(n!1)") (inst + "n!1"))
                                ("2"
                                 (assert)
                                 (skosimp)
                                 (typepred "a!1")
                                 (skolem - "n!2")
                                 (expand "increasing?")
                                 (inst - "n!2" "n!1")
                                 (assert)
                                 (expand "subset?")
                                 (inst - "(x!1,x!2)")
                                 (assert))))))
                            ("2"
                             (apply-extensionality :hide? t)
                             (replace -6)
                             (expand "IUnion")
                             (expand "y_section")
                             (propax))))
                          ("2"
                           (expand "disjoint_indexed_measurable?")
                           (hide-all-but (-2 1))
                           (expand "disjoint?")
                           (skosimp)
                           (inst - "i!1" "j!1")
                           (assert)
                           (lemma "y_section_disjoint"
                            ("X" "B!1(i!1)" "Y" "B!1(j!1)" "b" "y!1"))
                           (assert))
                          ("3"
                           (skosimp)
                           (inst - "n!1")
                           (lemma "y_section_measurable"
                            ("S1"
                             "S1"
                             "S2"
                             "S2"
                             "Z"
                             "B!1(n!1)"
                             "y"
                             "y!1"))
                           (assert))))
                        ("2"
                         (hide -7 2 -14)
                         (induct "n")
                         (("1"
                           (replace -3)
                           (assert)
                           (inst -9 "0")
                           (expand "U")
                           (propax))
                          ("2"
                           (skosimp)
                           (inst -5 "j!1")
                           (replace -5)
                           (case-replace "IUnion(j!1, E!1)=E!1(j!1)")
                           (("1"
                             (inst-cp -11 "j!1")
                             (inst -11 "j!1+1")
                             (expand "U")
                             (flatten)
                             (lemma
                              "sigma_algebra_difference[[T1,T2],sigma_times(S1, S2)]"
                              ("x" "E!1(j!1 + 1)" "y" "E!1(j!1)"))
                             (("1" (expand "member") (assert))
                              ("2" (propax))))
                            ("2"
                             (hide-all-but (1 -9))
                             (assert)
                             (apply-extensionality :hide? t)
                             (case-replace "E!1(j!1)(x!1, x!2)")
                             (("1"
                               (expand "IUnion")
                               (expand "image")
                               (expand "Union")
                               (inst + "E!1(j!1)")
                               (inst + "j!1"))
                              ("2"
                               (assert)
                               (expand "IUnion")
                               (expand "image")
                               (expand "Union")
                               (skosimp)
                               (typepred "a!1")
                               (skolem - "n!1")
                               (replace -1)
                               (hide -1)
                               (expand "increasing?")
                               (typepred "n!1")
                               (inst - "n!1" "j!1")
                               (assert)
                               (expand "subset?")
                               (inst - "(x!1,x!2)")
                               (assert))))))))))
                      ("2"
                       (skosimp)
                       (inst -3 "n!1")
                       (expand "U")
                       (flatten))))
                    ("2"
                     (skosimp)
                     (inst - "x1!1")
                     (expand "U")
                     (flatten))))
                  ("2"
                   (flatten)
                   (expand "U" 1)
                   (split)
                   (("1"
                     (lemma
                      "sigma_algebra_IIntersection[[T1,T2],sigma_times(S1,S2)]"
                      ("SS" "E!1"))
                     (("1" (assert))
                      ("2"
                       (skosimp)
                       (inst - "x1!1")
                       (expand "U")
                       (flatten))))
                    ("2"
                     (lemma "pointwise_measurable[T2, S2]"
                      ("f"
                       "F(IIntersection(E!1))"
                       "u"
                       "lambda (n:nat): F(E!1(n))"))
                     (("1"
                       (assert)
                       (hide 2)
                       (expand "pointwise_convergence?")
                       (skolem + "y!1")
                       (expand "F")
                       (expand "o ")
                       (lemma "fm_IIntersection[T1,S1,mu!1]"
                        ("X" "lambda (n:nat): y_section(E!1(n),y!1)"))
                       (("1"
                         (expand "y_section" 1)
                         (expand "o ")
                         (name-replace "LHS"
                          "LAMBDA (x: nat): mu!1(y_section(E!1(x), y!1))")
                         (split)
                         (("1"
                           (case-replace
                            "IIntersection(LAMBDA
                                                                 (n: nat):
                                                                 y_section(E!1(n), y!1))=y_section(IIntersection(E!1), y!1)")
                           (("1"
                             (hide-all-but (-2 1))
                             (name-replace "RHS"
                              "mu!1(y_section(IIntersection(E!1), y!1))")
                             (rewrite "metric_convergence_def")
                             (expand "metric_converges_to")
                             (expand "convergence")
                             (skosimp)
                             (inst - "r!1")
                             (skosimp)
                             (inst + "n!1")
                             (skosimp)
                             (inst - "i!1")
                             (grind))
                            ("2"
                             (hide-all-but 1)
                             (apply-extensionality :hide? t)
                             (expand "IIntersection")
                             (expand "y_section")
                             (propax))))
                          ("2"
                           (hide-all-but (-1 1))
                           (expand "decreasing?")
                           (skosimp)
                           (inst - "x!1" "y!2")
                           (assert)
                           (expand "subset?")
                           (expand "y_section")
                           (expand "member")
                           (skosimp)
                           (inst - "(x!2,y!1)")
                           (assert))))
                        ("2"
                         (skosimp)
                         (inst - "n!1")
                         (expand "U")
                         (flatten)
                         (lemma "y_section_measurable"
                          ("S1" "S1" "S2" "S2" "Z" "E!1(n!1)" "y" "y!1"))
                         (assert))))
                      ("2"
                       (skosimp)
                       (inst - "n!1")
                       (expand "U")
                       (flatten))
                      ("3"
                       (skosimp)
                       (inst - "n!1")
                       (expand "U")
                       (flatten))))))))))
              ("2"
               (hide 2)
               (skosimp)
               (typepred "a!1")
               (expand "U")
               (flatten)
               (split)
               (("1"
                 (lemma
                  "sigma_algebra_complement[[T1,T2],sigma_times(S1, S2)]"
                  ("x" "a!1"))
                 (assert))
                ("2"
                 (expand "F")
                 (expand "y_section")
                 (hide -5)
                 (expand "o ")
                 (lemma "const_measurable[T2,S2]"
                  ("c" "mu!1(fullset[T1])"))
                 (lemma "diff_measurable[T2, S2]"
                  ("g1"
                   "(LAMBDA (x: T2): mu!1(fullset[T1]))"
                   "g2"
                   "(LAMBDA (x: T2): mu!1(y_section(a!1, x)))"))
                 (("1"
                   (expand "-")
                   (case-replace
                    "(LAMBDA (x_1: T2):
                                                 mu!1(fullset[T1]) - mu!1(y_section(a!1, x_1)))=(LAMBDA (x: T2): mu!1(y_section(complement(a!1), x)))")
                   (("1"
                     (apply-extensionality :hide? t)
                     (("1"
                       (hide 2)
                       (hide-all-but (-3 1))
                       (lemma "fm_disjointunion[T1,S1,mu!1]"
                        ("A"
                         "y_section(a!1, x!1)"
                         "B"
                         "y_section(complement(a!1), x!1)"))
                       (split)
                       (("1"
                         (case-replace
                          "union(y_section(a!1, x!1), y_section(complement(a!1), x!1))=fullset[T1]")
                         (("1" (assert))
                          ("2"
                           (apply-extensionality 1 :hide? t)
                           (hide-all-but 1)
                           (expand "fullset")
                           (expand "union")
                           (expand "complement")
                           (expand "y_section")
                           (expand "member")
                           (flatten))))
                        ("2"
                         (hide-all-but 1)
                         (expand "disjoint?")
                         (expand "complement")
                         (expand "intersection")
                         (expand "empty?")
                         (skosimp)
                         (expand "member")
                         (flatten)
                         (expand "y_section")
                         (propax))))
                      ("2"
                       (skosimp)
                       (hide-all-but (-3 1))
                       (lemma
                        "sigma_algebra_complement[[T1,T2],sigma_times(S1, S2)]"
                        ("x" "a!1"))
                       (expand "member")
                       (lemma "y_section_measurable"
                        ("S1"
                         "S1"
                         "S2"
                         "S2"
                         "Z"
                         "complement(a!1)"
                         "y"
                         "x!1"))
                       (assert))
                      ("3"
                       (skosimp)
                       (lemma "y_section_measurable"
                        ("S1" "S1" "S2" "S2" "Z" "a!1" "y" "x!1"))
                       (assert))))
                    ("2"
                     (skosimp)
                     (lemma "y_section_measurable"
                      ("S1"
                       "S1"
                       "S2"
                       "S2"
                       "Z"
                       "complement(a!1)"
                       "y"
                       "x!1"))
                     (assert)
                     (lemma
                      "sigma_algebra_complement[[T1,T2],sigma_times(S1, S2)]"
                      ("x" "a!1"))
                     (assert))))
                  ("2" (propax))
                  ("3"
                   (skosimp)
                   (lemma "y_section_measurable"
                    ("S1" "S1" "S2" "S2" "Z" "a!1" "y" "x!1"))
                   (assert))
                  ("4" (propax))))))))
            ("2"
             (hide 2)
             (skosimp)
             (typepred "a!1")
             (typepred "b!1")
             (expand "U")
             (flatten)
             (hide -7)
             (split)
             (("1"
               (lemma "sigma_algebra_union[[T1,T2],sigma_times(S1, S2)]"
                ("x" "a!1" "y" "b!1"))
               (expand "member")
               (propax))
              ("2"
               (lemma "sum_measurable[T2, S2]"
                ("g1" "F(a!1)" "g2" "F(b!1)"))
               (("1"
                 (case-replace
                  "F(union(a!1, b!1))=(reals@real_fun_ops[T2].+)(F(a!1), F(b!1))")
                 (hide-all-but (-6 -8 1))
                 (apply-extensionality :hide? t)
                 (("1"
                   (expand "+")
                   (expand "F")
                   (expand "o ")
                   (expand "y_section")
                   (rewrite "y_section_union")
                   (hide -2)
                   (lemma "y_section_disjoint"
                    ("X" "a!1" "Y" "b!1" "b" "x!1"))
                   (assert)
                   (lemma "fm_disjointunion[T1,S1,mu!1]"
                    ("A"
                     "y_section(a!1, x!1)"
                     "B"
                     "y_section(b!1, x!1)"))
                   (assert))
                  ("2"
                   (skosimp)
                   (expand "+")
                   (inst-cp - "x1!1" "a!1")
                   (inst - "x1!1" "b!1")
                   (flatten)
                   (assert))))
                ("2" (propax)) ("3" (propax))))))))
          ("2"
           (hide 2)
           (skosimp)
           (typepred "R!1")
           (expand "U")
           (hide -2)
           (assert)
           (split)
           (("1"
             (expand "sigma_times")
             (lemma "generated_sigma_algebra_subset1"
              ("X"
               "(extend
                                                 [setof[[T1, T2]],
                                                  measurable_rectangle[T1, T2](S1, S2),
                                                  bool, FALSE]
                                                 (fullset
                                                      [measurable_rectangle
                                                       [T1, T2](S1, S2)]))"))
             (name-replace "AA"
              "generated_sigma_algebra(extend
                                                [setof[[T1, T2]],
                                                 measurable_rectangle[T1, T2](S1, S2),
                                                 bool, FALSE]
                                                (fullset
                                                     [measurable_rectangle
                                                      [T1, T2](S1, S2)]))")
             (expand "fullset")
             (expand "extend")
             (expand "subset?")
             (expand "member")
             (inst - "R!1")
             (assert))
            ("2"
             (hide -2)
             (expand "F")
             (expand "measurable_rectangle?")
             (skosimp)
             (expand "o ")
             (lemma "phi_is_simple[T2,S2]" ("X" "Y!1"))
             (("1"
               (expand "simple?")
               (flatten)
               (hide -2)
               (lemma "scal_measurable[T2,S2]"
                ("c" "mu!1(X!1)" "g" "phi[T2,S2](Y!1)"))
               (("1"
                 (expand "*" -1)
                 (expand "y_section")
                 (expand "phi")
                 (expand "member")
                 (case-replace
                  "(LAMBDA (x: T2):
                                               mu!1(X!1) * IF Y!1(x) THEN 1 ELSE 0 ENDIF)=(LAMBDA (x: T2): mu!1(y_section(R!1, x)))")
                 (("1"
                   (apply-extensionality :hide? t)
                   (("1"
                     (replace -3)
                     (expand "cross_product")
                     (expand "y_section")
                     (case-replace "Y!1(x!1)")
                     (("1"
                       (case-replace "{a: T1 | X!1(a)}=X!1")
                       (("1" (assert))
                        ("2" (apply-extensionality :hide? t))))
                      ("2"
                       (assert)
                       (typepred "mu!1")
                       (expand "finite_measure?")
                       (flatten)
                       (expand "emptyset")
                       (assert))))
                    ("2"
                     (skosimp)
                     (expand "y_section")
                     (replace -3 1)
                     (expand "cross_product")
                     (case-replace "Y!1(x!1)")
                     (("1"
                       (case-replace "{a: T1 | X!1(a)}=X!1")
                       (apply-extensionality :hide? t))
                      ("2"
                       (assert)
                       (typepred "S1")
                       (expand "sigma_algebra?")
                       (flatten)
                       (expand "subset_algebra_empty?")
                       (expand "member")
                       (expand "emptyset")
                       (propax))))))
                  ("2"
                   (skosimp)
                   (expand "y_section")
                   (replace -3)
                   (expand "cross_product")
                   (case-replace "Y!1(x!1)")
                   (("1"
                     (case-replace "{a: T1 | X!1(a)}=X!1")
                     (apply-extensionality :hide? t))
                    ("2"
                     (assert)
                     (typepred "S1")
                     (expand "sigma_algebra?")
                     (flatten)
                     (expand "subset_algebra_empty?")
                     (expand "member")
                     (expand "emptyset")
                     (propax))))
                  ("3" (skosimp))))
                ("2" (propax)) ("3" (propax))))
              ("2" (propax))))))))
        ("2"
         (hide 2)
         (skosimp)
         (expand "F")
         (lemma "y_section_bounded" ("M" "M!2" "mu" "mu!1" "y" "y!1"))
         (propax))))
      ("2" (expand "F") (propax))))
    ("2"
     (skosimp*)
     (expand "y_section")
     (lemma "y_section_measurable[T1,T2]"
      ("Z" "M!2" "S1" "S1" "S2" "S2" "y" "x1!1"))
     (assert))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma "x_section_measurable" ("nu" "nu!1" "M" "M!1"))
   (lemma "nn_integrable_le[T1, S1, to_measure(mu!1)]"
    ("g" "nu!1 o x_section(M!1)"))
   (("1"
     (inst - "lambda (x:T1): nu!1(fullset[T2])")
     (("1"
       (split -1)
       (("1"
         (flatten)
         (hide -2 -3)
         (lemma "nn_integrable_is_integrable[T1, S1, to_measure(mu!1)]")
         (inst - "nu!1 o x_section(M!1)"))
        ("2"
         (hide 2)
         (skosimp)
         (expand "o")
         (assert)
         (split)
         (("1" (assert))
          ("2"
           (lemma "m_monotone[T2, S2, to_measure(nu!1)]"
            ("a" "x_section(M!1)(x!1)" "b" "fullset[T2]"))
           (("1"
             (split -1)
             (("1" (expand "to_measure") (expand "x_le") (propax))
              ("2"
               (hide-all-but 1)
               (expand "subset?")
               (expand "fullset")
               (expand "member")
               (propax))))
            ("2" (hide 2 -1) (expand "measurable_set?") (propax))
            ("3"
             (hide 2)
             (lemma "x_section_measurable[T1,T2]"
              ("Z" "M!1" "S1" "S1" "S2" "S2" "x" "x!1"))
             (expand "member")
             (expand "measurable_set?")
             (expand "x_section" 1)
             (propax))))))))
      ("2"
       (hide -1 2)
       (lemma "nn_isf_is_nn_integrable[T1, S1, to_measure(mu!1)]")
       (inst - "LAMBDA (x: T1): nu!1(fullset[T2])")
       (("1" (flatten))
        ("2"
         (hide 2)
         (expand "nn_isf?")
         (split)
         (("1"
           (expand "isf?")
           (split)
           (("1"
             (lemma "simple_const[T1,S1]" ("c" "nu!1(fullset[T2])"))
             (propax))
            ("2" (expand "mu_fin?") (expand "to_measure") (propax))))
          ("2" (skosimp) (typepred "nu!1") (assert))))))))
    ("2" (propax))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma "nn_integrable_le[T2, S2, to_measure(nu!1)]"
    ("g" "mu!1 o y_section(M!1)" "f" "lambda (x:T2): mu!1(fullset[T1])"))
   (("1"
     (split -1)
     (("1"
       (flatten)
       (lemma "nn_integrable_is_integrable[T2, S2, to_measure(nu!1)]")
       (inst - "mu!1 o y_section(M!1)"))
      ("2"
       (hide 2)
       (skosimp)
       (expand "o")
       (split)
       (("1" (assert))
        ("2"
         (expand "y_section")
         (lemma "m_monotone[T1,S1,to_measure(mu!1)]"
          ("a" "y_section(M!1, x!1)" "b" "fullset[T1]"))
         (("1"
           (split -1)
           (("1" (expand "to_measure") (expand "x_le") (propax))
            ("2"
             (hide 2)
             (expand "subset?")
             (expand "fullset")
             (expand "member")
             (propax))))
          ("2" (hide 2) (expand "measurable_set?") (propax))
          ("3"
           (hide 2)
           (expand "measurable_set?")
           (lemma "y_section_measurable[T1,T2]"
            ("Z" "M!1" "S1" "S1" "S2" "S2" "y" "x!1"))
           (expand "member")
           (propax))))))))
    ("2" (hide 2) (rewrite "y_section_measurable"))
    ("3"
     (hide 2)
     (lemma "nn_isf_is_nn_integrable[T2, S2, to_measure(nu!1)]")
     (inst - "LAMBDA (x: T2): mu!1(fullset[T1])")
     (("1" (flatten))
      ("2"
       (hide 2)
       (expand "nn_isf?")
       (split)
       (("1"
         (expand "isf?")
         (expand "mu_fin?")
         (expand "to_measure")
         (lemma "simple_const[T2,S2]" ("c" "mu!1(fullset[T1])"))
         (propax))
        ("2" (skosimp) (assert))))))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (expand "o ")
   (expand "x_section")
   (case-replace
    "(LAMBDA (x: T1): nu!1(x_section(M!1, x))) = lambda x: phi[T1,S1](X!1)(x)* nu!1(Y!1)")
   (("1"
     (hide -1)
     (lemma "integral_scal[T1, S1, to_measure(mu!1)]"
      ("c" "nu!1(Y!1)" "f" "phi[T1, S1](X!1)"))
     (("1"
       (lemma "integral_phi[T1, S1, to_measure(mu!1)]" ("F" "X!1"))
       (("1"
         (expand "mu" -1)
         (expand "to_measure")
         (replace -1)
         (expand "*")
         (expand "phi")
         (expand "member")
         (hide -1)
         (expand "integral")
         (case-replace
          "(LAMBDA (x: T1):
                                 nu!1(Y!1) * IF X!1(x) THEN 1 ELSE 0 ENDIF)=(LAMBDA x: IF X!1(x) THEN 1 ELSE 0 ENDIF * nu!1(Y!1))")
         (("1" (replace -2 1) (assert))
          ("2"
           (apply-extensionality :hide? t)
           (case-replace "X!1(x!1)")
           (("1" (assert)) ("2" (assert))))))
        ("2"
         (expand "mu_fin?")
         (expand "to_measure")
         (expand "measurable_set?")
         (propax))))
      ("2"
       (hide 2)
       (lemma "isf_phi[T1, S1, to_measure(mu!1)]" ("E" "X!1"))
       (("1"
         (lemma "isf_is_integrable[T1, S1, to_measure(mu!1)]")
         (inst - "phi[T1, S1](X!1)"))
        ("2"
         (expand "mu_fin?")
         (expand "to_measure")
         (expand "measurable_set?")
         (propax))))))
    ("2"
     (hide 2)
     (apply-extensionality :hide? t)
     (("1"
       (expand "x_section")
       (replace -1)
       (expand "cross_product")
       (hide -1)
       (expand "phi")
       (expand "member")
       (case-replace "X!1(x!1)")
       (("1"
         (case-replace "{y: T2 | Y!1(y)}=Y!1")
         (("1" (assert)) ("2" (apply-extensionality :hide? t))))
        ("2"
         (assert)
         (typepred "nu!1")
         (expand "finite_measure?")
         (expand "emptyset")
         (propax))))
      ("2"
       (skosimp)
       (lemma "x_section_measurable[T1,T2]"
        ("x" "x!1" "Z" "M!1" "S1" "S1" "S2" "S2"))
       (expand "member")
       (propax))))
    ("3"
     (skosimp)
     (lemma "x_section_measurable[T1,T2]"
      ("x" "x!1" "Z" "M!1" "S1" "S1" "S2" "S2"))
     (expand "member")
     (propax))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (expand "o ")
   (expand "y_section")
   (case-replace
    "(LAMBDA y: mu!1(y_section(M!1, y))) = lambda y: phi[T2,S2](Y!1)(y)* mu!1(X!1)")
   (("1"
     (hide -1)
     (hide -1)
     (lemma "isf_phi[T2, S2, to_measure(nu!1)]" ("E" "Y!1"))
     (("1"
       (lemma "isf_is_integrable[T2, S2, to_measure(nu!1)]")
       (inst - "phi[T2,S2](Y!1)")
       (hide -2)
       (lemma "integral_phi[T2, S2, to_measure(nu!1)]" ("F" "Y!1"))
       (lemma "integral_scal[T2, S2, to_measure(nu!1)]"
        ("c" "mu!1(X!1)" "f" "phi[T2, S2](Y!1)"))
       (expand "*")
       (case-replace
        "(LAMBDA (x: T2): mu!1(X!1) * phi[T2, S2](Y!1)(x))=(LAMBDA y: phi[T2, S2](Y!1)(y) * mu!1(X!1))")
       (("1"
         (replace -2)
         (replace -3)
         (expand "mu")
         (expand "to_measure")
         (propax))
        ("2" (hide-all-but 1) (apply-extensionality :hide? t))))
      ("2"
       (expand "measurable_set?")
       (expand "mu_fin?")
       (expand "to_measure")
       (propax))))
    ("2"
     (apply-extensionality :hide? t)
     (("1"
       (replace -1)
       (hide-all-but 1)
       (expand "cross_product")
       (expand "y_section")
       (expand "phi")
       (expand "member")
       (case-replace "Y!1(x!1)")
       (("1"
         (case-replace "{x_1: T1 | X!1(x_1)}=X!1")
         (("1" (assert)) ("2" (apply-extensionality :hide? t))))
        ("2"
         (assert)
         (typepred "mu!1")
         (expand "finite_measure?")
         (expand "emptyset")
         (propax))))
      ("2"
       (skosimp)
       (lemma "y_section_measurable[T1,T2]"
        ("Z" "M!1" "y" "y!1" "S1" "S1" "S2" "S2"))
       (expand "member")
       (propax))))
    ("3"
     (skosimp)
     (lemma "y_section_measurable[T1,T2]"
      ("Z" "M!1" "y" "y!1" "S1" "S1" "S2" "S2"))
     (expand "member")
     (propax))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma "fm_times_alt_TCC1" ("mu" "mu!1" "nu" "nu!1"))
   (lemma "fm_times_alt_TCC2" ("mu" "mu!1" "nu" "nu!1"))
   (rewrite "finite_measure_def" 1)
   (("1"
     (split)
     (("1"
       (inst -2 "emptyset[[T1, T2]]")
       (case-replace
        "y_section[T1, T2](emptyset[[T1, T2]])=lambda y: emptyset[T1]")
       (("1"
         (expand "o ")
         (rewrite "fm_emptyset[T1,S1,mu!1]")
         (rewrite "integral_zero[T2, S2, to_measure[T2, S2](nu!1)]" 1))
        ("2"
         (hide-all-but 1)
         (apply-extensionality :hide? t)
         (apply-extensionality :hide? t)
         (grind))))
      ("2"
       (skosimp)
       (expand "o ")
       (typepred "mu!1")
       (rewrite "finite_measure_def" -1)
       (flatten)
       (hide -3)
       (case-replace
        "(LAMBDA y: mu!1(y_section[T1, T2](union(a!1, b!1))(y)))=(reals@real_fun_ops.+)((LAMBDA y: mu!1(y_section[T1, T2](a!1)(y))),(LAMBDA y: mu!1(y_section[T1, T2](b!1)(y))))")
       (("1"
         (rewrite "integral_add[T2, S2, to_measure[T2, S2](nu!1)]" 1)
         (("1" (inst -6 "b!1"))
          ("2"
           (skosimp)
           (expand "y_section")
           (lemma "y_section_measurable[T1,T2]"
            ("Z" "b!1" "S1" "S1" "S2" "S2" "y" "y!1"))
           (assert))
          ("3" (inst -6 "a!1"))
          ("4"
           (skosimp)
           (expand "y_section")
           (lemma "y_section_measurable[T1,T2]"
            ("Z" "a!1" "S1" "S1" "S2" "S2" "y" "y!1"))
           (assert))))
        ("2"
         (hide 2)
         (apply-extensionality :hide? t)
         (("1"
           (expand "+")
           (expand "y_section")
           (rewrite "y_section_union")
           (inst - "y_section(a!1, x!1)" "y_section(b!1, x!1)")
           (assert)
           (hide 2 -4 -3)
           (lemma "fm_disjointunion[T1,S1,mu!1]"
            ("A" "y_section(a!1, x!1)" "B" "y_section(b!1, x!1)"))
           (split)
           (("1" (propax))
            ("2"
             (hide 2)
             (lemma "y_section_disjoint" ("X" "a!1" "Y" "b!1" "b" "x!1"))
             (assert))))
          ("2" (expand "+") (skosimp) (assert))
          ("3"
           (skosimp)
           (expand "y_section")
           (lemma "y_section_measurable[T1,T2]"
            ("Z" "b!1" "S1" "S1" "S2" "S2" "y" "y!1"))
           (assert))
          ("4"
           (skosimp)
           (expand "y_section")
           (lemma "y_section_measurable[T1,T2]"
            ("Z" "a!1" "S1" "S1" "S2" "S2" "y" "y!1"))
           (assert))
          ("5"
           (skosimp)
           (expand "y_section")
           (lemma "y_section_measurable[T1,T2]"
            ("Z" "union(a!1,b!1)" "S1" "S1" "S2" "S2" "y" "y!1"))
           (assert))))
        ("3"
         (skosimp)
         (expand "y_section")
         (lemma "y_section_measurable[T1,T2]"
          ("Z" "b!1" "S1" "S1" "S2" "S2" "y" "y!1"))
         (assert))
        ("4"
         (skosimp)
         (expand "y_section")
         (lemma "y_section_measurable[T1,T2]"
          ("Z" "a!1" "S1" "S1" "S2" "S2" "y" "y!1"))
         (assert))
        ("5"
         (skosimp)
         (expand "y_section")
         (lemma "y_section_measurable[T1,T2]"
          ("Z" "union(a!1,b!1)" "S1" "S1" "S2" "S2" "y" "y!1"))
         (assert))))
      ("3"
       (name "HH" "lambda M: mu!1 o y_section(M)")
       (("1"
         (case "FORALL (M):
                       integrable?[T2, S2, to_measure(nu!1)](HH(M))")
         (("1"
           (hide -4)
           (case "FORALL (M):
                         integral[T2, S2, to_measure[T2, S2](nu!1)](HH(M))>=0")
           (("1"
             (hide -4)
             (case "FORALL (X:
                                   disjoint_indexed_measurable
                                       [[T1, T2], sigma_times(S1, S2)]):
                           convergence_sequences.convergent?(series((LAMBDA M:
                                                integral[T2, S2, to_measure(nu!1)]
                                                    (HH(M)))
                                              o X))
                            =>
                            integral[T2, S2, to_measure(nu!1)](HH(IUnion(X))) <=
                             convergence_sequences.limit
                                 (series((LAMBDA M:
                                            integral[T2, S2, to_measure(nu!1)]
                                                (HH(M)))
                                          o X))")
             (("1"
               (skosimp)
               (inst - "X!1")
               (expand "HH")
               (assert)
               (expand "o ")
               (replace -5)
               (propax))
              ("2"
               (hide 2)
               (skosimp)
               (expand "o ")
               (hide -4)
               (name "SS"
                     "LAMBDA (n: nat):
                                          integral[T2, S2, to_measure[T2, S2](nu!1)](HH(X!1(n)))")
               (("1"
                 (replace -1)
                 (hide -1)
                 (lemma "convergence_sequences.limit_lemma"
                  ("v" "series(SS)"))
                 (name-replace "RHS"
                  "convergence_sequences.limit(series(SS))")
                 (hide -2)
                 (case "forall (n:nat): sigma_times(S1,S2)(IUnion(n,X!1))")
                 (("1"
                   (name "FF" "lambda (n:nat): HH(IUnion(n,X!1))")
                   (("1"
                     (case "forall (n: nat): integrable?[T2, S2, to_measure[T2, S2](nu!1)](FF(n))")
                     (("1"
                       (case "forall (n:nat): disjoint?(IUnion(n, X!1),X!1(1+n))")
                       (("1"
                         (case "forall (n:nat,y): 0<=FF(n)(y) & FF(n)(y)<=FF(n+1)(y)")
                         (("1"
                           (case-replace
                            "series(SS) = integral[T2, S2, to_measure(nu!1)] o FF")
                           (("1"
                             (hide -1)
                             (name-replace "ff" "HH(IUnion(X!1))")
                             (case "forall (n:nat,y): FF(n)(y)<=ff(y)")
                             (("1"
                               (lemma
                                "monotone_convergence_scaf[T2, S2, to_measure[T2, S2](nu!1)]"
                                ("F" "FF" "f" "ff"))
                               (split)
                               (("1"
                                 (flatten)
                                 (expand "converges_upto?")
                                 (flatten)
                                 (name-replace
                                  "LHS"
                                  "integral[T2, S2, to_measure(nu!1)](ff)")
                                 (name-replace
                                  "DRL"
                                  "integral[T2, S2, to_measure(nu!1)] o FF")
                                 (hide-all-but (-2 -10 1))
                                 (rewrite "metric_convergence_def")
                                 (expand "convergence")
                                 (expand "metric_converges_to")
                                 (case "LHS>RHS")
                                 (("1"
                                   (name "DELTA" "(LHS-RHS)/2")
                                   (case "DELTA>0")
                                   (("1"
                                     (inst - "DELTA")
                                     (("1"
                                       (inst - "DELTA")
                                       (("1"
                                         (skosimp*)
                                         (inst - "n!1+n!2")
                                         (inst - "n!1+n!2")
                                         (assert)
                                         (expand "ball")
                                         (lemma
                                          "triangle"
                                          ("x"
                                           "LHS - DRL(n!1 + n!2)"
                                           "y"
                                           "DRL(n!1 + n!2) - RHS"))
                                         (assert))
                                        ("2" (assert))))
                                      ("2" (assert))))
                                    ("2" (assert))))
                                  ("2" (assert))))
                                ("2"
                                 (hide 2)
                                 (expand "pointwise_converges_upto?")
                                 (split)
                                 (("1"
                                   (expand "pointwise_convergence?")
                                   (skolem + "y!1")
                                   (hide-all-but (1 -6 -3))
                                   (typepred "mu!1")
                                   (expand "ff")
                                   (expand "FF")
                                   (expand "HH")
                                   (expand "o ")
                                   (expand "y_section")
                                   (expand "finite_measure?")
                                   (flatten)
                                   (name
                                    "XX"
                                    "lambda (n:nat): y_section(X!1(n),y!1)")
                                   (inst - "XX")
                                   (("1"
                                     (case-replace
                                      "y_section(IUnion(X!1), y!1)=IUnion(XX)")
                                     (("1"
                                       (name-replace
                                        "RHS1"
                                        "mu!1(IUnion(XX))")
                                       (hide -1)
                                       (case-replace
                                        "(LAMBDA (n:nat): mu!1(y_section(IUnion(n, X!1), y!1)))=series(mu!1 o XX)")
                                       (("1"
                                         (hide-all-but (-4 1))
                                         (name-replace
                                          "DRL3"
                                          "series(mu!1 o XX)")
                                         (rewrite
                                          "metric_convergence_def")
                                         (expand "convergence")
                                         (expand "metric_converges_to")
                                         (skosimp)
                                         (inst - "r!1")
                                         (skosimp)
                                         (inst + "n!1")
                                         (skosimp)
                                         (inst - "i!1")
                                         (assert)
                                         (expand "ball")
                                         (grind))
                                        ("2"
                                         (hide 2)
                                         (case
                                          "forall (n:nat): FF(n)(y!1) = series(mu!1 o XX)(n)")
                                         (("1"
                                           (apply-extensionality
                                            :hide?
                                            t)
                                           (("1"
                                             (inst - "x!1")
                                             (expand "FF")
                                             (expand "HH")
                                             (expand "o ")
                                             (expand "y_section" -1 1)
                                             (propax))
                                            ("2"
                                             (expand "o")
                                             (expand "series")
                                             (induct "x1")
                                             (("1"
                                               (expand "sigma")
                                               (expand "sigma")
                                               (assert))
                                              ("2"
                                               (skosimp)
                                               (expand "sigma" 1)
                                               (assert))
                                              ("3"
                                               (skolem + "n!1")
                                               (expand "XX")
                                               (lemma
                                                "y_section_measurable[T1,T2]"
                                                ("Z"
                                                 "X!1(n!1)"
                                                 "S1"
                                                 "S1"
                                                 "S2"
                                                 "S2"
                                                 "y"
                                                 "y!1"))
                                               (assert))))
                                            ("3"
                                             (skosimp)
                                             (inst -6 "n!1")
                                             (lemma
                                              "y_section_measurable[T1,T2]"
                                              ("Z"
                                               "IUnion(n!1,X!1)"
                                               "S1"
                                               "S1"
                                               "S2"
                                               "S2"
                                               "y"
                                               "y!1"))
                                             (assert))))
                                          ("2"
                                           (hide 2)
                                           (induct "n")
                                           (("1"
                                             (expand "series")
                                             (expand "sigma")
                                             (expand "sigma")
                                             (expand "FF")
                                             (expand "HH")
                                             (expand "o ")
                                             (expand "XX")
                                             (rewrite "IUnion_0_def")
                                             (expand "y_section" 1 1)
                                             (propax))
                                            ("2"
                                             (skosimp)
                                             (expand "series")
                                             (expand "sigma" 1)
                                             (replace -1 * rl)
                                             (hide -1 -2)
                                             (expand "FF")
                                             (expand "HH")
                                             (expand "o ")
                                             (hide -2)
                                             (expand "y_section")
                                             (expand "XX")
                                             (inst - "j!1")
                                             (rewrite "IUnion_n_def" 1)
                                             (rewrite "y_section_union")
                                             (lemma
                                              "fm_disjointunion[T1,S1,mu!1]"
                                              ("A"
                                               "y_section(IUnion(j!1, X!1), y!1)"
                                               "B"
                                               "y_section(X!1(1 + j!1), y!1)"))
                                             (assert)
                                             (lemma
                                              "y_section_disjoint"
                                              ("X"
                                               "IUnion(j!1, X!1)"
                                               "Y"
                                               "X!1(1 + j!1)"
                                               "b"
                                               "y!1"))
                                             (assert))))))
                                        ("3"
                                         (skosimp)
                                         (inst -5 "n!1")
                                         (lemma
                                          "y_section_measurable[T1,T2]"
                                          ("Z"
                                           "IUnion(n!1,X!1)"
                                           "S1"
                                           "S1"
                                           "S2"
                                           "S2"
                                           "y"
                                           "y!1"))
                                         (assert))))
                                      ("2"
                                       (apply-extensionality :hide? t)
                                       (hide-all-but 1)
                                       (expand "y_section")
                                       (expand "XX")
                                       (expand "y_section")
                                       (expand "IUnion")
                                       (propax))))
                                    ("2"
                                     (hide 2)
                                     (split)
                                     (("1"
                                       (skolem + "n!1")
                                       (expand "XX")
                                       (lemma
                                        "y_section_measurable[T1,T2]"
                                        ("Z"
                                         "X!1(n!1)"
                                         "S1"
                                         "S1"
                                         "S2"
                                         "S2"
                                         "y"
                                         "y!1"))
                                       (assert))
                                      ("2"
                                       (hide-all-but 1)
                                       (typepred "X!1")
                                       (expand
                                        "disjoint_indexed_measurable?")
                                       (expand "disjoint?")
                                       (expand "XX")
                                       (skosimp)
                                       (inst - "i!1" "j!1")
                                       (assert)
                                       (lemma
                                        "y_section_disjoint"
                                        ("X"
                                         "X!1(i!1)"
                                         "Y"
                                         "X!1(j!1)"
                                         "b"
                                         "y!1"))
                                       (assert))))))
                                  ("2"
                                   (expand "pointwise_increasing?")
                                   (skosimp)
                                   (case
                                    "forall (i,j:nat): FF(i)(x!1)<=FF(i+j)(x!1)")
                                   (("1"
                                     (expand "increasing?")
                                     (skosimp)
                                     (inst - "x!2" "y!1-x!2")
                                     (("1" (assert)) ("2" (assert))))
                                    ("2"
                                     (hide-all-but (-2 1))
                                     (induct "j")
                                     (("1" (skosimp) (assert))
                                      ("2"
                                       (skosimp*)
                                       (inst - "i!1")
                                       (inst - "i!1+j!1" "x!1")
                                       (flatten)
                                       (assert))))))))
                                ("3"
                                 (hide 2)
                                 (expand "bounded?")
                                 (split)
                                 (("1"
                                   (expand "bounded_above?")
                                   (inst
                                    +
                                    "integral[T2, S2, to_measure[T2, S2](nu!1)](ff)")
                                   (("1"
                                     (skolem + "n!1")
                                     (expand "o")
                                     (lemma
                                      "integral_ae_le[T2, S2, to_measure[T2, S2](nu!1)]"
                                      ("f1" "FF(n!1)" "f2" "ff"))
                                     (assert)
                                     (hide 2)
                                     (expand "ae_le?")
                                     (expand "pointwise_ae?")
                                     (expand "ae?")
                                     (expand "fullset")
                                     (expand "ae_in?")
                                     (inst + "emptyset[T2]")
                                     (("1"
                                       (skosimp)
                                       (expand "member")
                                       (inst - "n!1" "x!1"))
                                      ("2"
                                       (expand "negligible_set?")
                                       (inst + "emptyset[T2]")
                                       (split)
                                       (("1"
                                         (expand "null_set?")
                                         (expand "measurable_set?")
                                         (expand "mu_fin?")
                                         (expand "mu")
                                         (expand "to_measure")
                                         (typepred "nu!1")
                                         (expand "finite_measure?")
                                         (flatten))
                                        ("2"
                                         (expand "subset?")
                                         (skosimp))))))
                                    ("2"
                                     (expand "ff")
                                     (inst -9 "IUnion(X!1)"))))
                                  ("2"
                                   (expand "bounded_below?")
                                   (inst + "0")
                                   (skolem + "n!1")
                                   (expand "o ")
                                   (lemma
                                    "integral_nonneg[T2, S2, to_measure(nu!1)]"
                                    ("f" "FF(n!1)"))
                                   (assert)
                                   (skosimp)
                                   (inst -2 "n!1" "x!1")
                                   (flatten)
                                   (assert))))))
                              ("2"
                               (hide 2)
                               (skosimp)
                               (expand "ff")
                               (expand "FF")
                               (expand "HH")
                               (expand "o ")
                               (expand "y_section")
                               (lemma "fm_monotone[T1,S1,mu!1]"
                                ("A"
                                 "y_section(IUnion(n!1, X!1), y!1)"
                                 "B"
                                 "y_section(IUnion(X!1), y!1)"))
                               (assert)
                               (hide-all-but 1)
                               (expand "subset?")
                               (expand "y_section")
                               (expand "member")
                               (expand "IUnion")
                               (expand "image")
                               (expand "Union")
                               (skosimp*)
                               (typepred "a!1")
                               (skolem - "n!2")
                               (inst + "n!2")
                               (assert))))
                            ("2"
                             (hide 2)
                             (case "forall (n:nat): series(SS)(n) = integral[T2, S2, to_measure(nu!1)](FF(n))")
                             (("1"
                               (apply-extensionality :hide? t)
                               (inst - "x!1")
                               (expand "o ")
                               (propax))
                              ("2"
                               (hide 2)
                               (induct "n")
                               (("1"
                                 (expand "series")
                                 (expand "sigma")
                                 (expand "sigma")
                                 (expand "SS")
                                 (expand "FF")
                                 (rewrite "IUnion_0_def"))
                                ("2"
                                 (skosimp)
                                 (expand "series")
                                 (expand "sigma" 1)
                                 (replace -1)
                                 (hide -1)
                                 (expand "SS")
                                 (case-replace
                                  "FF(1+j!1)=(reals@real_fun_ops.+)(FF(j!1),HH(X!1(1 + j!1)))")
                                 (("1"
                                   (rewrite
                                    "integral_add[T2, S2, to_measure(nu!1)]"
                                    1))
                                  ("2"
                                   (hide 2 -6)
                                   (apply-extensionality :hide? t)
                                   (("1"
                                     (expand "+")
                                     (expand "FF")
                                     (rewrite "IUnion_n_def" 1)
                                     (hide-all-but (-2 -4 1))
                                     (expand "HH")
                                     (expand "o ")
                                     (expand "y_section")
                                     (rewrite "y_section_union")
                                     (inst - "j!1")
                                     (lemma
                                      "y_section_disjoint"
                                      ("X"
                                       "IUnion(j!1, X!1)"
                                       "Y"
                                       "X!1(1 + j!1)"
                                       "b"
                                       "x!1"))
                                     (assert)
                                     (lemma
                                      "fm_disjointunion[T1,S1,mu!1]"
                                      ("A"
                                       "y_section(IUnion(j!1, X!1), x!1)"
                                       "B"
                                       "y_section(X!1(1 + j!1), x!1)"))
                                     (assert))
                                    ("2"
                                     (skosimp)
                                     (expand "+")
                                     (inst - "j!1" "x1!1")
                                     (flatten)
                                     (expand "HH")
                                     (expand "o ")
                                     (assert))))))))
                              ("3" (propax))))))
                          ("2"
                           (hide 2)
                           (skosimp)
                           (split)
                           (("1"
                             (expand "FF")
                             (expand "HH")
                             (expand "o ")
                             (assert))
                            ("2"
                             (expand "FF")
                             (expand "HH")
                             (expand "o ")
                             (rewrite "IUnion_n_def")
                             (expand "y_section")
                             (rewrite "y_section_union")
                             (inst - "n!1")
                             (lemma "fm_monotone[T1,S1,mu!1]"
                              ("A"
                               "y_section(IUnion(n!1, X!1), y!1)"
                               "B"
                               "union(y_section(IUnion(n!1, X!1), y!1),
                                                 y_section(X!1(1 + n!1), y!1))"))
                             (assert)
                             (hide-all-but 1)
                             (expand "subset?")
                             (expand "union")
                             (expand "member")
                             (skosimp))))))
                        ("2"
                         (hide-all-but 1)
                         (skosimp)
                         (typepred "X!1")
                         (expand "disjoint_indexed_measurable?")
                         (expand "disjoint?")
                         (expand "disjoint?")
                         (expand "intersection")
                         (expand "empty?")
                         (expand "member")
                         (skosimp*)
                         (expand "IUnion")
                         (expand "image")
                         (expand "Union")
                         (skosimp)
                         (typepred "a!1")
                         (skolem - "n!2")
                         (typepred "n!2")
                         (inst - "n!2" "1+n!1")
                         (assert)
                         (inst - "x!1")
                         (assert))))
                      ("2"
                       (skosimp)
                       (expand "FF")
                       (inst -2 "n!1")
                       (inst -5 "IUnion(n!1, X!1)"))))
                    ("2" (propax))))
                  ("2"
                   (hide-all-but 1)
                   (induct "n")
                   (("1" (rewrite "IUnion_0_def") (assert))
                    ("2"
                     (skosimp)
                     (rewrite "IUnion_n_def")
                     (lemma
                      "sigma_algebra_union[[T1,T2],sigma_times(S1, S2)]"
                      ("x" "IUnion(j!1, X!1)" "y" "X!1(1 + j!1)"))
                     (("1" (assert)) ("2" (propax))))))))
                ("2"
                 (skosimp)
                 (typepred "X!1(n!1)")
                 (inst -4 "X!1(n!1)"))))
              ("3" (hide 2) (skosimp))
              ("4" (skosimp) (inst -3 "IUnion(X!1)"))))
            ("2" (skosimp) (expand "HH") (inst -3 "M!1"))
            ("3" (propax))))
          ("2" (skosimp) (expand "HH") (inst -3 "M!1"))))
        ("2"
         (skosimp*)
         (expand "y_section")
         (lemma "y_section_measurable[T1,T2]"
          ("Z" "M!1" "S1" "S1" "S2" "S2" "y" "x1!1"))
         (assert))))))
    ("2"
     (skosimp*)
     (expand "y_section")
     (lemma "y_section_measurable[T1,T2]"
      ("Z" "M!1" "S1" "S1" "S2" "S2" "y" "x1!1"))
     (assert))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: product_finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (typepred "fm_times(mu!1, nu!1)")
   (lemma "fm_times_alt" ("nu" "nu!1" "mu" "mu!1"))
   (name "F" "fm_times(mu!1, nu!1)")
   (replace -1)
   (name "G"
         "LAMBDA M: integral[T2, S2, to_measure(nu!1)](mu!1 o y_section(M))")
   (("1"
     (replace -1)
     (lemma
      "monotone_finite_measures[[T1,T2],fullset[(measurable_rectangle?(S1,S2))]]"
      ("nu" "G" "mu" "F"))
     (("1"
       (split)
       (("1"
         (inst - "M!1")
         (("1" (expand "G") (propax))
          ("2" (typepred "M!1") (expand "sigma_times") (propax))))
        ("2"
         (hide-all-but 1)
         (skosimp)
         (typepred "b!1")
         (typepred "a!1")
         (expand "fullset")
         (expand "extend")
         (prop)
         (expand "intersection")
         (expand "member")
         (prop)
         (expand "measurable_rectangle?")
         (skosimp*)
         (inst + "intersection(X!1,X!2)" "intersection(Y!1,Y!2)")
         (split)
         (("1" (apply-extensionality :hide? t) (grind))
          ("2"
           (lemma "sigma_algebra_intersection[T1,S1]"
            ("x" "X!1" "y" "X!2"))
           (("1" (assert)) ("2" (propax)) ("3" (propax))))
          ("3"
           (lemma "sigma_algebra_intersection[T2,S2]"
            ("x" "Y!1" "y" "Y!2"))
           (("1" (assert)) ("2" (propax)) ("3" (propax))))))
        ("3"
         (hide-all-but 1)
         (skosimp)
         (typepred "a!1")
         (expand "fullset")
         (expand "extend")
         (prop)
         (lemma "complement_rectangle" ("r" "a!1"))
         (("1"
           (expand "finite_disjoint_union?")
           (skosimp)
           (inst + "E!1" "n!1")
           (assert)
           (skosimp)
           (inst - "i!1")
           (flatten)
           (replace -4)
           (flatten)
           (assert))
          ("2" (propax))))
        ("4"
         (hide-all-but 1)
         (skosimp)
         (typepred "a!1")
         (expand "fullset")
         (expand "extend")
         (prop)
         (expand "F")
         (expand "measurable_rectangle?")
         (skosimp)
         (lemma "rectangle_measure1"
          ("M" "a!1" "X" "X!1" "Y" "Y!1" "nu" "nu!1" "mu" "mu!1"))
         (("1"
           (lemma "rectangle_measure2"
            ("M" "a!1" "X" "X!1" "Y" "Y!1" "nu" "nu!1" "mu" "mu!1"))
           (assert)
           (expand "G")
           (expand "fm_times")
           (assert)
           (expand "cross_product")
           (replace -3 * rl)
           (assert))
          ("2" (propax)) ("3" (propax))))))
      ("2"
       (hide-all-but (-2 -4 1))
       (split)
       (("1" (skosimp) (expand "sigma_times") (propax))
        ("2"
         (expand "finite_measure?")
         (flatten)
         (assert)
         (skosimp)
         (typepred "X!1")
         (inst - "X!1")
         (("1" (assert) (expand "o ") (propax))
          ("2"
           (hide 2)
           (split)
           (("1"
             (skolem + "n!1")
             (typepred "X!1(n!1)")
             (expand "sigma_times")
             (propax))
            ("2" (expand "disjoint_indexed_measurable?") (propax))))))))
      ("3"
       (hide-all-but (1 -3))
       (split)
       (("1" (skosimp) (expand "sigma_times") (propax))
        ("2"
         (skosimp)
         (assert)
         (expand "G")
         (lemma "y_section_bounded" ("M" "x1!1" "mu" "mu!1"))
         (hide -2)
         (lemma "y_section_integrable"
          ("nu" "nu!1" "mu" "mu!1" "M" "x1!1"))
         (lemma "integral_nonneg[T2, S2, to_measure(nu!1)]"
          ("f" "mu!1 o y_section(x1!1)"))
         (assert)
         (skosimp)
         (inst - "x!1")
         (flatten)
         (assert))
        ("3"
         (expand "finite_measure?")
         (flatten)
         (assert)
         (skosimp)
         (typepred "X!1")
         (inst - "X!1")
         (("1" (expand "o ") (propax))
          ("2"
           (hide 2)
           (split)
           (("1"
             (skolem + "n!1")
             (typepred "X!1(n!1)")
             (expand "sigma_times")
             (propax))
            ("2" (expand "disjoint_indexed_measurable?") (propax))))))))
      ("4"
       (hide-all-but 1)
       (expand "nonempty?")
       (expand "empty?")
       (inst - "emptyset[[T1, T2]]")
       (expand "member")
       (expand "extend")
       (expand "fullset")
       (prop)
       (expand "measurable_rectangle?")
       (inst + "emptyset" "emptyset")
       (typepred "S1")
       (typepred "S2")
       (expand "sigma_algebra?")
       (flatten)
       (expand "subset_algebra_empty?")
       (expand "member")
       (hide -2 -3 -5 -6)
       (assert)
       (apply-extensionality :hide? t)
       (grind))))
    ("2"
     (skosimp)
     (lemma "y_section_integrable" ("nu" "nu!1" "mu" "mu!1" "M" "M!2"))
     (propax))
    ("3"
     (skosimp)
     (skosimp)
     (expand "y_section")
     (lemma "y_section_measurable[T1,T2]"
      ("Z" "M!2" "S1" "S1" "S2" "S2" "y" "x1!1"))
     (expand "member")
     (propax))))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: product_finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "x_section")
   (lemma "x_section_measurable[T1,T2]"
    ("Z" "M!1" "x" "x1!1" "S1" "S1" "S2" "S2"))
   (expand "member")
   (propax))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: product_finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "y_section")
   (lemma "y_section_measurable[T1,T2]"
    ("Z" "M!1" "y" "x1!1" "S1" "S1" "S2" "S2"))
   (expand "member")
   (propax))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: product_finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (expand "o")
   (lemma "integral_nonneg[T1, S1, to_measure[T1, S1](mu!1)]"
    ("f" "LAMBDA (x: T1): nu!1(x_section[T1, T2](M!1)(x))"))
   (("1"
     (split -1)
     (("1" (propax)) ("2" (hide -1 2) (skosimp) (assert))))
    ("2"
     (hide 2)
     (lemma "fm_times_TCC1" ("mu" "mu!1" "nu" "nu!1" "M" "M!1"))
     (expand "o")
     (propax))
    ("3"
     (hide 2)
     (skosimp)
     (expand "x_section")
     (lemma "x_section_measurable[T1,T2]"
      ("Z" "M!1" "S1" "S1" "S2" "S2" "x" "x!1"))
     (expand "member")
     (propax))))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: product_finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma "fm_times_TCC1" ("mu" "mu!1" "nu" "nu!1"))
   (lemma "fm_times_TCC2" ("mu" "mu!1" "nu" "nu!1"))
   (rewrite "finite_measure_def")
   (("1"
     (split 1)
     (("1"
       (inst -2 "emptyset[[T1,T2]]")
       (assert)
       (inst -1 "emptyset[[T1,T2]]")
       (case-replace
        "x_section[T1, T2](emptyset[[T1, T2]])=lambda (x:T1): emptyset[T2]")
       (("1"
         (hide -1)
         (expand "o")
         (rewrite "fm_emptyset[T2,S2,nu!1]")
         (rewrite "integral_zero[T1, S1, to_measure[T1, S1](mu!1)]" 1))
        ("2"
         (hide-all-but 1)
         (apply-extensionality :hide? t)
         (apply-extensionality :hide? t)
         (expand "emptyset")
         (expand "x_section")
         (expand "x_section")
         (propax))))
      ("2"
       (skosimp)
       (expand "o")
       (typepred "nu!1")
       (rewrite "finite_measure_def" -1)
       (flatten)
       (hide -3)
       (case-replace
        "(LAMBDA (x: T1): nu!1(x_section[T1, T2](union(a!1, b!1))(x)))=(reals@real_fun_ops.+)((LAMBDA (x: T1): nu!1(x_section[T1, T2](a!1)(x))),(LAMBDA (x: T1): nu!1(x_section[T1, T2](b!1)(x))))")
       (("1"
         (hide -1)
         (expand "x_section")
         (rewrite "integral_add[T1, S1, to_measure[T1, S1](mu!1)]" 1)
         (("1" (inst -5 "b!1"))
          ("2"
           (skosimp)
           (lemma "x_section_measurable[T1,T2]"
            ("Z" "b!1" "S1" "S1" "S2" "S2" "x" "x!1"))
           (expand "member")
           (propax))
          ("3" (inst -5 "a!1"))
          ("4"
           (skosimp)
           (lemma "x_section_measurable[T1,T2]"
            ("Z" "a!1" "S1" "S1" "S2" "S2" "x" "x!1"))
           (expand "member")
           (propax))))
        ("2"
         (hide -4 -5 2)
         (apply-extensionality :hide? t)
         (("1"
           (expand "+")
           (lemma "x_section_disjoint" ("X" "a!1" "Y" "b!1" "a" "x!1"))
           (assert)
           (inst - "x_section(a!1, x!1)" "x_section(b!1, x!1)")
           (("1"
             (assert)
             (expand "x_section" 1)
             (rewrite "x_section_union"))
            ("2"
             (lemma "x_section_measurable[T1,T2]"
              ("Z" "b!1" "S1" "S1" "S2" "S2" "x" "x!1"))
             (expand "member")
             (propax))
            ("3"
             (lemma "x_section_measurable[T1,T2]"
              ("Z" "a!1" "S1" "S1" "S2" "S2" "x" "x!1"))
             (expand "member")
             (propax))))
          ("2"
           (skosimp)
           (expand "+")
           (expand "x_section")
           (lemma "x_section_measurable[T1,T2]"
            ("Z" "a!1" "S1" "S1" "S2" "S2" "x" "x1!1"))
           (lemma "x_section_measurable[T1,T2]"
            ("Z" "b!1" "S1" "S1" "S2" "S2" "x" "x1!1"))
           (expand "member")
           (typepred "nu!1(x_section(a!1, x1!1))")
           (typepred "nu!1(x_section(b!1, x1!1))")
           (assert))
          ("3"
           (skosimp)
           (expand "x_section")
           (lemma "x_section_measurable[T1,T2]"
            ("Z" "b!1" "S1" "S1" "S2" "S2" "x" "x!1"))
           (expand "member")
           (propax))
          ("4"
           (skosimp)
           (expand "x_section")
           (lemma "x_section_measurable[T1,T2]"
            ("Z" "a!1" "S1" "S1" "S2" "S2" "x" "x!1"))
           (expand "member")
           (propax))
          ("5"
           (skosimp)
           (expand "x_section")
           (lemma "x_section_measurable[T1,T2]"
            ("Z" "union(a!1,b!1)" "S1" "S1" "S2" "S2" "x" "x!1"))
           (expand "member")
           (propax))))
        ("3"
         (hide-all-but 1)
         (skosimp)
         (expand "x_section")
         (lemma "x_section_measurable[T1,T2]"
          ("Z" "b!1" "S1" "S1" "S2" "S2" "x" "x!1"))
         (expand "member")
         (propax))
        ("4"
         (hide-all-but 1)
         (expand "x_section")
         (skosimp)
         (lemma "x_section_measurable[T1,T2]"
          ("Z" "a!1" "S1" "S1" "S2" "S2" "x" "x!1"))
         (expand "member")
         (propax))
        ("5"
         (hide-all-but 1)
         (skosimp)
         (expand "x_section")
         (lemma "x_section_measurable[T1,T2]"
          ("Z" "union(a!1,b!1)" "S1" "S1" "S2" "S2" "x" "x!1"))
         (expand "member")
         (propax))))
      ("3"
       (skosimp)
       (typepred "X!1")
       (expand "o ")
       (expand "x_section")
       (name "SS"
             "(LAMBDA (x_1: nat):
                                  integral[T1, S1, to_measure[T1, S1](mu!1)]
                                      (LAMBDA (x: T1): nu!1(x_section(X!1(x_1), x))))")
       (("1"
         (replace -1)
         (name "FF"
               "lambda (n:nat): LAMBDA x: nu!1(x_section(IUnion(n,X!1), x))")
         (("1"
           (case "forall (n:nat): sigma_times(S1,S2)(IUnion(n,X!1))")
           (("1"
             (case "forall (n: nat): integrable?[T1, S1, to_measure[T1, S1](mu!1)](FF(n))")
             (("1"
               (case "forall (n:nat,x): 0<=FF(n)(x) & FF(n)(x)<=FF(n+1)(x)")
               (("1"
                 (name "ff"
                       "LAMBDA (x: T1): nu!1(x_section(IUnion(X!1), x))")
                 (("1"
                   (replace -1)
                   (case "forall (n:nat,x): FF(n)(x)<=ff(x)")
                   (("1"
                     (lemma
                      "monotone_convergence_scaf[T1, S1, to_measure[T1, S1](mu!1)]"
                      ("F" "FF" "f" "ff"))
                     (("1"
                       (case-replace
                        "series(SS) = integral[T1, S1, to_measure[T1, S1](mu!1)] o FF")
                       (("1"
                         (hide -1)
                         (split -1)
                         (("1"
                           (flatten)
                           (expand "converges_upto?")
                           (flatten)
                           (name-replace "LHS"
                            "integral[T1, S1, to_measure[T1, S1](mu!1)](ff)")
                           (name-replace "DRL1"
                            "integral[T1, S1, to_measure[T1, S1](mu!1)] o FF")
                           (hide-all-but (-2 -12 1))
                           (lemma "convergence_sequences.limit_lemma"
                            ("v" "DRL1"))
                           (hide -3)
                           (rewrite "metric_convergence_def")
                           (expand "convergence")
                           (name-replace "RHS"
                            "convergence_sequences.limit(DRL1)")
                           (expand "metric_converges_to")
                           (expand "ball")
                           (expand "member")
                           (case "LHS>RHS")
                           (("1"
                             (hide 1)
                             (name "DELTA" "(LHS-RHS)/2")
                             (inst - "DELTA")
                             (("1"
                               (inst - "DELTA")
                               (("1"
                                 (skosimp*)
                                 (inst - "n!1+n!2")
                                 (inst - "n!1+n!2")
                                 (assert)
                                 (lemma "triangle")
                                 (inst
                                  -
                                  "LHS - DRL1(n!1 + n!2)"
                                  "DRL1(n!1 + n!2) - RHS")
                                 (assert))
                                ("2" (assert))))
                              ("2" (assert))))
                            ("2" (assert))))
                          ("2"
                           (hide 2)
                           (expand "pointwise_converges_upto?")
                           (split)
                           (("1"
                             (expand "pointwise_convergence?")
                             (skosimp)
                             (typepred "nu!1")
                             (expand "finite_measure?")
                             (flatten)
                             (name "XX"
                                   "lambda (n:nat): x_section(X!1(n), x!1)")
                             (case "disjoint?(XX)")
                             (("1"
                               (inst - "XX")
                               (("1"
                                 (case-replace
                                  "nu!1(IUnion(XX)) = ff(x!1)")
                                 (("1"
                                   (name-replace "RHS" "ff(x!1)")
                                   (hide -1)
                                   (case-replace
                                    "series(nu!1 o XX)=LAMBDA (n:nat): FF(n)(x!1)")
                                   (("1"
                                     (name-replace
                                      "LHS"
                                      "LAMBDA (n:nat): FF(n)(x!1)")
                                     (hide-all-but (-5 1))
                                     (rewrite "metric_convergence_def")
                                     (expand "convergence")
                                     (expand "metric_converges_to")
                                     (skosimp)
                                     (inst - "r!1")
                                     (skosimp)
                                     (inst + " n!1")
                                     (skosimp)
                                     (inst - "i!1")
                                     (assert)
                                     (expand "ball")
                                     (grind))
                                    ("2"
                                     (hide 2)
                                     (case
                                      "forall (n:nat): series(nu!1 o XX)(n) = FF(n)(x!1)")
                                     (("1"
                                       (apply-extensionality :hide? t))
                                      ("2"
                                       (hide 2)
                                       (induct "n")
                                       (("1"
                                         (expand "FF")
                                         (rewrite "IUnion_0_def")
                                         (expand "o ")
                                         (expand "series")
                                         (expand "sigma")
                                         (expand "sigma")
                                         (expand "XX")
                                         (propax))
                                        ("2"
                                         (skosimp*)
                                         (expand "series")
                                         (expand "sigma" 1)
                                         (replace -1)
                                         (expand "o ")
                                         (expand "FF")
                                         (rewrite "IUnion_n_def")
                                         (expand "XX")
                                         (rewrite "x_section_union")
                                         (lemma
                                          "fm_disjointunion[T2,S2,nu!1]"
                                          ("A"
                                           "x_section(IUnion(j!1, X!1), x!1)"
                                           "B"
                                           "x_section(X!1(1 + j!1), x!1)"))
                                         (assert)
                                         (hide-all-but (-2 1))
                                         (expand "disjoint?")
                                         (expand "disjoint?")
                                         (expand "intersection")
                                         (expand "empty?")
                                         (expand "member")
                                         (skosimp)
                                         (expand "x_section")
                                         (expand "IUnion")
                                         (expand "image")
                                         (expand "Union")
                                         (skosimp)
                                         (typepred "a!1")
                                         (skolem - "n!2")
                                         (typepred "n!2")
                                         (inst - "n!2" "1+j!1")
                                         (assert)
                                         (inst - "x!2")
                                         (assert))))))))
                                  ("2"
                                   (expand "ff")
                                   (expand "XX")
                                   (case-replace
                                    "IUnion(LAMBDA (n: nat): x_section(X!1(n), x!1))=x_section(IUnion(X!1), x!1)")
                                   (hide-all-but 1)
                                   (apply-extensionality :hide? t)
                                   (expand "IUnion")
                                   (expand "x_section")
                                   (propax))))
                                ("2"
                                 (expand "disjoint_indexed_measurable?")
                                 (assert)
                                 (skolem + "n!1")
                                 (expand "XX")
                                 (lemma
                                  "x_section_measurable[T1,T2]"
                                  ("Z"
                                   "X!1(n!1)"
                                   "S1"
                                   "S1"
                                   "S2"
                                   "S2"
                                   "x"
                                   "x!1"))
                                 (assert))))
                              ("2"
                               (hide-all-but (-11 1))
                               (expand "XX")
                               (expand "disjoint_indexed_measurable?")
                               (expand "disjoint?")
                               (skosimp)
                               (inst - "i!1" "j!1")
                               (assert)
                               (lemma "x_section_disjoint"
                                ("X"
                                 "X!1(i!1)"
                                 "Y"
                                 "X!1(j!1)"
                                 "a"
                                 "x!1"))
                               (assert))))
                            ("2"
                             (expand "pointwise_increasing?")
                             (skosimp)
                             (case "forall (i,j:nat): FF(i)(x!1)<=FF(i+j)(x!1)")
                             (("1"
                               (expand "increasing?")
                               (skosimp)
                               (inst - "x!2" "y!1-x!2")
                               (("1" (assert)) ("2" (assert))))
                              ("2"
                               (hide-all-but (-3 1))
                               (induct "j")
                               (("1" (skosimp) (assert))
                                ("2"
                                 (skosimp*)
                                 (inst - "i!1")
                                 (inst - "i!1+j!1" "x!1")
                                 (assert))))))))
                          ("3"
                           (hide 2)
                           (expand "bounded?")
                           (split)
                           (("1"
                             (expand "bounded_above?")
                             (inst +
                              "integral[T1, S1, to_measure(mu!1)](ff)")
                             (("1"
                               (expand "o ")
                               (skolem + "n!1")
                               (inst - "n!1")
                               (inst - "n!1" "_")
                               (lemma
                                "integral_ae_le[T1, S1, to_measure(mu!1)]"
                                ("f1" "FF(n!1)" "f2" "ff"))
                               (assert)
                               (expand "ae_le?")
                               (expand "pointwise_ae?")
                               (expand "ae?")
                               (expand "fullset")
                               (expand "ae_in?")
                               (inst + "emptyset")
                               (("1"
                                 (skosimp)
                                 (expand "member")
                                 (inst - "x!1"))
                                ("2"
                                 (expand "negligible_set?")
                                 (inst + "emptyset[T1]")
                                 (assert)
                                 (hide-all-but 1)
                                 (split)
                                 (("1"
                                   (expand "null_set?")
                                   (expand "measurable_set?")
                                   (typepred "mu!1")
                                   (expand "mu_fin?")
                                   (expand "mu")
                                   (expand "to_measure")
                                   (expand "finite_measure?")
                                   (flatten))
                                  ("2" (expand "subset?") (skosimp))))))
                              ("2"
                               (expand "ff")
                               (inst -11 "IUnion(X!1)"))))
                            ("2"
                             (expand "bounded_below?")
                             (inst + "0")
                             (skosimp)
                             (expand "o ")
                             (lemma
                              "integral_nonneg[T1, S1, to_measure(mu!1)]"
                              ("f" "FF(x!1)"))
                             (assert)
                             (skosimp)
                             (inst -3 "x!1" "x!2")
                             (flatten)
                             (assert))))))
                        ("2"
                         (hide -1 2)
                         (case "forall (n:nat): series(SS)(n) = integral[T1, S1, to_measure[T1, S1](mu!1)](FF(n))")
                         (("1"
                           (apply-extensionality :hide? t)
                           (inst - "x!1")
                           (assert)
                           (expand "o ")
                           (propax))
                          ("2"
                           (hide 2)
                           (induct "n")
                           (("1"
                             (expand "series")
                             (expand "sigma")
                             (expand "sigma")
                             (expand "SS")
                             (expand "FF")
                             (rewrite "IUnion_0_def"))
                            ("2"
                             (skosimp*)
                             (expand "series")
                             (expand "sigma" 1)
                             (replace -1)
                             (hide -1)
                             (expand "FF")
                             (rewrite "IUnion_n_def" 1)
                             (expand "SS")
                             (case-replace
                              "(LAMBDA x:
                                            nu!1(x_section(union(IUnion(j!1, X!1), X!1(1 + j!1)), x)))=(reals@real_fun_ops.+)(LAMBDA x: nu!1(x_section(IUnion(j!1, X!1), x)),LAMBDA (x: T1): nu!1(x_section(X!1(1 + j!1), x)))")
                             (("1"
                               (rewrite
                                "integral_add[T1, S1, to_measure[T1, S1](mu!1)]")
                               (("1" (inst -10 "X!1(1 + j!1)"))
                                ("2"
                                 (skosimp)
                                 (hide-all-but 1)
                                 (lemma
                                  "x_section_measurable[T1,T2]"
                                  ("Z"
                                   "X!1(1+j!1)"
                                   "S1"
                                   "S1"
                                   "S2"
                                   "S2"
                                   "x"
                                   "x!1"))
                                 (assert))
                                ("3"
                                 (inst -10 "IUnion[[T1, T2]](j!1, X!1)")
                                 (inst -6 "j!1"))
                                ("4"
                                 (skosimp)
                                 (inst -6 "j!1")
                                 (lemma
                                  "x_section_measurable[T1,T2]"
                                  ("Z"
                                   "IUnion(j!1,X!1)"
                                   "S1"
                                   "S1"
                                   "S2"
                                   "S2"
                                   "x"
                                   "x!1"))
                                 (assert))))
                              ("2"
                               (hide 2)
                               (hide -9 -10 -6 -8)
                               (apply-extensionality :hide? t)
                               (("1"
                                 (expand "+")
                                 (rewrite "x_section_union")
                                 (lemma
                                  "fm_disjointunion[T2,S2,nu!1]"
                                  ("A"
                                   "x_section(IUnion(j!1, X!1), x!1)"
                                   "B"
                                   "x_section(X!1(1 + j!1), x!1)"))
                                 (assert)
                                 (hide-all-but (1 -6))
                                 (expand "disjoint_indexed_measurable?")
                                 (expand "disjoint?")
                                 (expand "disjoint?")
                                 (expand "intersection")
                                 (expand "empty?")
                                 (skosimp)
                                 (expand "member")
                                 (expand "x_section")
                                 (flatten)
                                 (expand "IUnion")
                                 (expand "image")
                                 (expand "Union")
                                 (skosimp)
                                 (typepred "a!1")
                                 (skolem - "n!2")
                                 (typepred "n!2")
                                 (inst - "n!2" "1+j!1")
                                 (assert)
                                 (inst - "(x!1, x!2)")
                                 (assert))
                                ("2" (skosimp) (expand "+") (assert))
                                ("3"
                                 (skosimp)
                                 (lemma
                                  "x_section_measurable[T1,T2]"
                                  ("Z"
                                   "X!1(1+j!1)"
                                   "S1"
                                   "S1"
                                   "S2"
                                   "S2"
                                   "x"
                                   "x!1"))
                                 (assert))
                                ("4"
                                 (skosimp)
                                 (inst -5 "j!1")
                                 (lemma
                                  "x_section_measurable[T1,T2]"
                                  ("Z"
                                   "IUnion(j!1,X!1)"
                                   "S1"
                                   "S1"
                                   "S2"
                                   "S2"
                                   "x"
                                   "x!1"))
                                 (assert))
                                ("5"
                                 (skosimp)
                                 (inst -5 "1+j!1")
                                 (lemma
                                  "x_section_measurable[T1,T2]"
                                  ("Z"
                                   "IUnion(1+j!1,X!1)"
                                   "S1"
                                   "S1"
                                   "S2"
                                   "S2"
                                   "x"
                                   "x!1"))
                                 (expand "member")
                                 (assert)
                                 (rewrite "IUnion_n_def"))))
                              ("3"
                               (skosimp)
                               (lemma "x_section_measurable[T1,T2]"
                                ("Z"
                                 "X!1(1+j!1)"
                                 "S1"
                                 "S1"
                                 "S2"
                                 "S2"
                                 "x"
                                 "x!1"))
                               (assert))
                              ("4"
                               (skosimp)
                               (inst -5 "j!1")
                               (lemma "x_section_measurable[T1,T2]"
                                ("Z"
                                 "IUnion(j!1,X!1)"
                                 "S1"
                                 "S1"
                                 "S2"
                                 "S2"
                                 "x"
                                 "x!1"))
                               (assert))
                              ("5"
                               (skosimp)
                               (hide 2)
                               (inst -5 "j!1+1")
                               (hide-all-but (1 -5))
                               (lemma "x_section_measurable[T1,T2]"
                                ("Z"
                                 "IUnion(1+j!1,X!1)"
                                 "S1"
                                 "S1"
                                 "S2"
                                 "S2"
                                 "x"
                                 "x!1"))
                               (assert)
                               (rewrite "IUnion_n_def"))))))))))
                      ("2" (propax))))
                    ("2"
                     (hide -9 -10 2 -6 -8)
                     (skosimp)
                     (expand "ff")
                     (expand "FF")
                     (lemma "fm_monotone[T2,S2,nu!1]"
                      ("A"
                       "x_section(IUnion(n!1, X!1), x!1)"
                       "B"
                       "x_section(IUnion(X!1), x!1)"))
                     (assert)
                     (hide-all-but 1)
                     (expand "subset?")
                     (expand "member")
                     (skosimp)
                     (expand "x_section")
                     (expand "IUnion")
                     (expand "image")
                     (expand "Union")
                     (skosimp)
                     (typepred "a!1")
                     (skosimp)
                     (inst + "x!3")
                     (assert))))
                  ("2"
                   (skosimp)
                   (lemma "x_section_measurable[T1,T2]"
                    ("Z"
                     "IUnion[nat, [T1, T2]](X!1)"
                     "S1"
                     "S1"
                     "S2"
                     "S2"
                     "x"
                     "x!1"))
                   (assert))))
                ("2"
                 (hide-all-but 1)
                 (skosimp)
                 (expand "FF")
                 (assert)
                 (split)
                 (("1" (assert))
                  ("2"
                   (rewrite "IUnion_n_def")
                   (lemma "fm_subset_le[T2,S2,nu!1]"
                    ("A"
                     "x_section(IUnion(n!1, X!1), x!1)"
                     "B"
                     "x_section(union(IUnion(n!1, X!1), X!1(1 + n!1)), x!1)"))
                   (assert)
                   (hide 2)
                   (rewrite "x_section_union")
                   (expand "union")
                   (expand "subset?")
                   (expand "member")
                   (skosimp))))))
              ("2"
               (skosimp)
               (inst - "n!1")
               (inst -7 "IUnion(n!1, X!1)")
               (expand "FF")
               (propax))))
            ("2"
             (hide-all-but 1)
             (induct "n")
             (("1" (rewrite "IUnion_0_def") (assert))
              ("2"
               (skosimp)
               (rewrite "IUnion_n_def")
               (assert)
               (typepred "X!1(1 + j!1)")
               (lemma "sigma_algebra_union[[T1,T2],sigma_times(S1, S2)]"
                ("x" "IUnion(j!1, X!1)" "y" "X!1(1 + j!1)"))
               (expand "member")
               (propax))))))
          ("2"
           (hide-all-but 1)
           (skolem + ("_" "x!1"))
           (induct "n")
           (("1"
             (rewrite "IUnion_0_def")
             (lemma "x_section_measurable[T1,T2]"
              ("Z" "X!1(0)" "S1" "S1" "S2" "S2" "x" "x!1"))
             (expand "member")
             (propax))
            ("2"
             (skosimp*)
             (lemma "x_section_measurable[T1,T2]"
              ("Z" "X!1(j!1+1)" "S1" "S1" "S2" "S2" "x" "x!1"))
             (expand "member")
             (rewrite "IUnion_n_def")
             (rewrite "x_section_union")
             (lemma "sigma_algebra_union[T2,S2]"
              ("x"
               "x_section(IUnion(j!1, X!1), x!1)"
               "y"
               "x_section(X!1(1 + j!1), x!1)"))
             (("1" (expand "member") (propax)) ("2" (propax))
              ("3" (propax))))))))
        ("2"
         (skosimp)
         (lemma "x_section_integrable"
          ("mu" "mu!1" "nu" "nu!1" "M" "X!1(x!1)"))
         (expand "o ")
         (expand "x_section" -1)
         (propax))
        ("3"
         (skosimp)
         (lemma "x_section_measurable[T1,T2]"
          ("S1" "S1" "S2" "S2" "Z" "X!1(x!1)" "x" "x!2"))
         (expand "member")
         (propax))))))
    ("2"
     (hide-all-but 1)
     (skosimp*)
     (lemma "x_section_measurable[T1,T2]"
      ("Z" "M!1" "S1" "S1" "S2" "S2" "x" "x1!1"))
     (expand "member")
     (expand "x_section" 1)
     (propax))))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: product_finite_measure
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma "y_section_integrable" ("mu" "mu!1" "nu" "nu!1" "M" "M!1"))
   (lemma "integral_nonneg[T2, S2, to_measure[T2, S2](nu!1)]"
    ("f" "mu!1 o y_section(M!1)"))
   (assert)
   (skosimp)
   (lemma "y_section_bounded" ("mu" "mu!1" "M" "M!1" "y" "x!1"))
   (flatten)
   (assert))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_fubini_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (typepred "m!1")
   (rewrite "measurable_gt")
   (rewrite "measurable_gt")
   (skosimp)
   (inst - "c!1")
   (lemma "x_section_measurable"
    ("S1" "S1" "S2" "S2" "Z" "{z: [T1, T2] | m!1(z) > c!1}" "x" "x!1"))
   (expand "member")
   (assert)
   (expand "x_section")
   (propax))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_fubini_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (typepred "m!1")
   (rewrite "measurable_gt")
   (rewrite "measurable_gt")
   (skosimp)
   (inst - "c!1")
   (lemma "y_section_measurable"
    ("S1" "S1" "S2" "S2" "Z" "{z: [T1, T2] | m!1(z) > c!1}" "y" "y!1"))
   (expand "member")
   (assert)
   (expand "y_section")
   (propax))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_fubini_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (typepred "i!1")
   (expand "isf?")
   (flatten)
   (expand "simple?")
   (flatten)
   (expand "mu_fin?")
   (expand "to_measure")
   (hide -3)
   (lemma "finite_subset[real]"
    ("A"
     "image(i!1, fullset[[T1, T2]])"
     "s"
     "image(LAMBDA y: i!1(x!1, y), fullset[T2])"))
   (("1"
     (assert)
     (split)
     (("1"
       (assert)
       (hide -1 -3)
       (lemma "measurable_x_section" ("m" "i!1" "x" "x!1"))
       (propax))
      ("2"
       (hide-all-but 1)
       (expand "fullset")
       (expand "image")
       (expand "subset?")
       (expand "member")
       (skosimp*)
       (inst + "(x!1,x!3)"))))
    ("2" (propax))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_fubini_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (typepred "i!1")
   (expand "isf?")
   (expand "simple?")
   (flatten)
   (lemma "measurable_y_section" ("y" "y!1" "m" "i!1"))
   (assert)
   (expand "mu_fin?")
   (expand "to_measure")
   (hide-all-but (-3 1))
   (lemma "finite_subset[real]"
    ("A"
     "image(i!1, fullset[[T1, T2]])"
     "s"
     "image(LAMBDA x: i!1(x, y!1), fullset[T1])"))
   (assert)
   (hide-all-but 1)
   (expand "fullset")
   (expand "image")
   (expand "subset?")
   (expand "member")
   (skosimp*)
   (inst + "(x!2, y!1)"))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_fubini_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (apply-extensionality :hide? t)
   (("1"
     (expand "x_section")
     (expand "o ")
     (lemma "isf_integral_phi[T2, S2, to_measure(nu)]"
      ("E" "x_section(E!1, x!1)"))
     (("1"
       (expand "mu")
       (expand "to_measure")
       (expand "x_section" -1 1)
       (expand "phi")
       (expand "member")
       (propax))
      ("2"
       (expand "mu_fin?")
       (expand "to_measure")
       (expand "measurable_set?")
       (lemma "x_section_measurable"
        ("Z" "E!1" "x" "x!1" "S1" "S1" "S2" "S2"))
       (expand "member")
       (propax))))
    ("2"
     (skosimp)
     (lemma "isf_phi[T2, S2, to_measure(nu)]"
      ("E" "x_section(E!1)(x!1)"))
     (("1"
       (expand "x_section")
       (expand "x_section")
       (expand "phi")
       (expand "member")
       (propax))
      ("2"
       (expand "mu_fin?")
       (expand "to_measure")
       (hide 2)
       (lemma "x_section_measurable"
        ("Z" "E!1" "x" "x!1" "S1" "S1" "S2" "S2"))
       (expand "member")
       (expand "measurable_set?")
       (expand "x_section" 1)
       (propax))))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_fubini_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (apply-extensionality :hide? t)
   (("1"
     (expand "o")
     (expand "y_section")
     (lemma "isf_integral_phi[T1, S1, to_measure(mu)]"
      ("E" "y_section(E!1, x!1)"))
     (("1"
       (expand "y_section" -1 1)
       (expand "phi")
       (expand "member")
       (assert)
       (expand "mu" -1)
       (expand "to_measure")
       (propax))
      ("2"
       (expand "mu_fin?")
       (expand "to_measure")
       (hide 2)
       (lemma "y_section_measurable"
        ("Z" "E!1" "y" "x!1" "S1" "S1" "S2" "S2"))
       (expand "member")
       (expand "measurable_set?")
       (propax))))
    ("2"
     (skosimp)
     (lemma "isf_y_section"
      ("y" "y!1" "i" "phi[[T1, T2], sigma_times(S1, S2)](E!1)"))
     (("1" (propax))
      ("2"
       (rewrite "isf_phi")
       (expand "mu_fin?")
       (expand "product_measure")
       (expand "to_measure")
       (expand "measurable_set?")
       (propax))))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_fubini_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (rewrite "isf_integral_phi")
   (("1"
     (expand "mu")
     (expand "product_measure")
     (expand "to_measure")
     (expand "fm_times")
     (rewrite "integral_phi1"))
    ("2"
     (expand "mu_fin?")
     (expand "product_measure")
     (expand "to_measure")
     (typepred "E!1")
     (expand "measurable_set?")
     (propax))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_fubini_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (rewrite "isf_integral_phi")
   (("1"
     (expand "mu")
     (expand "product_measure")
     (expand "to_measure")
     (rewrite "finite_product_alt")
     (rewrite "integral_phi2"))
    ("2"
     (expand "mu_fin?")
     (expand "measurable_set?")
     (expand "product_measure")
     (expand "to_measure")
     (propax))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_fubini_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma
    "isf_induction[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu,nu))]"
    ("P"
     "lambda i: integrable?(LAMBDA x: isf_integral(LAMBDA y: i(x, y)))"))
   (("1"
     (inst - "i!1")
     (assert)
     (hide 2)
     (split)
     (("1" (rewrite "isf_integral_zero") (rewrite "integrable_zero"))
      ("2"
       (skosimp)
       (case-replace
        "(LAMBDA x:
                            isf_integral(LAMBDA y: (c!1 * phi(E!1) + i!2)(x, y)))=+[T1](*[T1](c!1,LAMBDA x:
                            isf_integral(LAMBDA y: phi(E!1)(x, y))),LAMBDA x: isf_integral(LAMBDA y: i!2(x, y)))")
       (("1"
         (hide -1)
         (rewrite "integrable_add")
         (("1" (skosimp) (rewrite "isf_x_section"))
          ("2"
           (rewrite "integrable_scal")
           (("1"
             (rewrite "integral_phi1")
             (("1"
               (rewrite "x_section_integrable")
               (typepred "E!1")
               (expand "measurable_set?")
               (propax))
              ("2"
               (typepred "E!1")
               (expand "measurable_set?")
               (propax))))
            ("2" (skosimp) (rewrite "isf_x_section"))))
          ("3" (skosimp) (rewrite "isf_x_section"))))
        ("2"
         (hide 2)
         (apply-extensionality :hide? t)
         (("1"
           (lemma
            "isf_phi[[T1,T2],sigma_times(S1,S2),to_measure(fm_times(mu,nu))]"
            ("E" "E!1"))
           (lemma
            "isf_scal[[T1,T2],sigma_times(S1,S2),to_measure(fm_times(mu,nu))]"
            ("c" "c!1" "i" "phi[[T1, T2], sigma_times(S1, S2)](E!1)"))
           (typepred "i!2")
           (expand "+" 1)
           (expand "*" 1)
           (assert)
           (lemma "isf_integral_add[T2,S2,to_measure(nu)]"
            ("i1"
             "LAMBDA y: i!2(x!1, y)"
             "i2"
             "LAMBDA y:c!1 * phi(E!1)(x!1, y)"))
           (("1"
             (expand "+" -1 1)
             (replace -1)
             (hide -1)
             (assert)
             (rewrite "isf_integral_scal" 1 :dir rl)
             (("1" (expand "*") (propax))
              ("2" (rewrite "isf_x_section" 1))))
            ("2"
             (lemma "isf_x_section"
              ("i"
               "(*[[T1, T2]](c!1, phi[[T1, T2], sigma_times(S1, S2)](E!1)))"
               "x"
               "x!1"))
             (expand "*")
             (propax))
            ("3" (rewrite "isf_x_section" 1))))
          ("2" (skosimp) (rewrite "isf_x_section"))
          ("3" (skosimp) (rewrite "isf_x_section"))
          ("4" (skosimp) (rewrite "isf_x_section"))))
        ("3" (skosimp) (rewrite "isf_x_section"))
        ("4" (skosimp) (rewrite "isf_x_section"))
        ("5" (skosimp) (rewrite "isf_x_section"))))))
    ("2" (skosimp) (rewrite "isf_x_section"))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_fubini_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma
    "isf_induction[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu,nu))]"
    ("P"
     "lambda i: integrable?(LAMBDA y: isf_integral(LAMBDA x: i(x, y)))"))
   (("1"
     (inst - "i!1")
     (assert)
     (hide 2)
     (rewrite "isf_integral_zero")
     (rewrite "integrable_zero")
     (skosimp)
     (case "forall y: isf?(phi(lambda x: E!1(x,y)))")
     (("1"
       (expand "+" 1)
       (expand "*" 1)
       (case "forall y: isf_integral(LAMBDA x:
                                                i!2(x, y) + c!1 * phi(E!1)(x, y)) = isf_integral(LAMBDA x: i!2(x, y))+c!1*isf_integral(phi(LAMBDA x: E!1(x, y)))")
       (("1"
         (rewrite "extensionality_postulate" -1)
         (replace -1)
         (hide -1)
         (lemma "integrable_add"
          ("f1"
           "LAMBDA (y):
                               isf_integral(LAMBDA x: i!2(x, y))"
           "f2"
           "lambda y: c!1 * isf_integral(phi(LAMBDA x: E!1(x, y)))"))
         (("1" (expand "+" -1) (propax))
          ("2"
           (hide 2)
           (hide -2)
           (lemma "integrable_scal[T2, S2, to_measure(nu)]"
            ("c"
             "c!1"
             "f"
             "lambda y: isf_integral[T1, S1, to_measure(mu)]
                               (phi[T1, S1](LAMBDA x: E!1(x, y)))"))
           (("1" (expand "*" -1) (propax))
            ("2"
             (hide 2)
             (lemma "integral_phi2" ("E" "E!1"))
             (("1"
               (expand "phi")
               (expand "member")
               (replace -1)
               (hide -1)
               (lemma "y_section_integrable"
                ("mu" "mu" "M" "E!1" "nu" "nu"))
               (propax))
              ("2"
               (typepred "E!1")
               (expand "measurable_set?")
               (propax))))))
          ("3" (propax))))
        ("2"
         (skosimp)
         (inst - "y!1")
         (hide 2 -2)
         (lemma "isf_integral_scal"
          ("c" "c!1" "i" "phi(LAMBDA x: E!1(x, y!1))"))
         (replace -1 1 rl)
         (rewrite "isf_integral_add" 1 :dir rl)
         (("1"
           (expand "*")
           (expand "+")
           (expand "phi")
           (expand "member")
           (propax))
          ("2" (rewrite "isf_y_section"))))
        ("3" (propax)) ("4" (skosimp) (rewrite "isf_y_section"))
        ("5"
         (skosimp)
         (inst - "y!1")
         (lemma "isf_scal" ("c" "c!1" "i" "phi(LAMBDA x: E!1(x, y!1))"))
         (("1"
           (lemma "isf_add"
            ("i1"
             "LAMBDA x:
                          i!2(x, y!1)"
             "i2"
             "*[T1](c!1, phi(LAMBDA x: E!1(x, y!1)))"))
           (("1"
             (hide 2)
             (expand "+")
             (expand "*")
             (expand "phi")
             (expand "member")
             (propax))
            ("2" (propax)) ("3" (rewrite "isf_y_section"))))
          ("2" (propax))))))
      ("2"
       (hide -1 2)
       (skosimp)
       (rewrite "isf_phi")
       (typepred "E!1")
       (expand "mu_fin?")
       (expand "to_measure")
       (expand "measurable_set?")
       (hide -2 2)
       (lemma "y_section_measurable"
        ("Z" "E!1" "y" "y!1" "S1" "S1" "S2" "S2"))
       (expand "member")
       (expand "y_section")
       (assert))))
    ("2" (hide 2) (skosimp) (rewrite "isf_y_section"))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_fubini_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma
    "isf_induction[[T1,T2],sigma_times(S1,S2),to_measure(fm_times(mu,nu))]"
    ("i1"
     "i!1"
     "P"
     "lambda (i: isf[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu,nu))]):
             isf_integral(i) =
              integral(LAMBDA x: isf_integral(LAMBDA y: i(x, y)))"))
   (("1"
     (assert)
     (hide 2)
     (split)
     (("1"
       (rewrite "isf_integral_zero")
       (rewrite "isf_integral_zero")
       (rewrite "integral_zero"))
      ("2"
       (skosimp)
       (typepred "E!1")
       (lemma "isf_phi" ("E" "E!1"))
       (lemma "isf_scal" ("c" "c!1" "i" "phi(E!1)"))
       (lemma "isf_add" ("i1" "*[[T1, T2]](c!1, phi(E!1))" "i2" "i!2"))
       (rewrite "isf_integral_add" 1)
       (rewrite "isf_integral_scal" 1)
       (rewrite "integral_phi3")
       (("1"
         (replace -6)
         (hide -6)
         (rewrite "integral_scal" 1 :dir rl)
         (("1"
           (rewrite "integral_add" 1 :dir rl)
           (("1"
             (expand "*" 1 1)
             (expand "+" 1 1)
             (case-replace
              "(LAMBDA (x_1: T1):
                               isf_integral(LAMBDA y: i!2(x_1, y)) +
                                c!1 * isf_integral(LAMBDA y: phi(E!1)(x_1, y)))=(LAMBDA x:
                                isf_integral(LAMBDA y: (+[[T1,T2]]((*[[T1, T2]](c!1, phi(E!1))),i!2)(x, y))))")
             (("1"
               (hide 2)
               (apply-extensionality :hide? t)
               (("1"
                 (rewrite "isf_integral_scal" 1 :dir rl)
                 (("1"
                   (lemma "isf_integral_add[T2,S2,to_measure(nu)]"
                    ("i1"
                     "*[T2](c!1,LAMBDA y: phi(E!1)(x!1, y))"
                     "i2"
                     "LAMBDA y: i!2(x!1, y)"))
                   (("1"
                     (replace -1 1 rl)
                     (expand "*")
                     (expand "+")
                     (propax))
                    ("2" (rewrite "isf_x_section"))))
                  ("2" (rewrite "isf_x_section"))))
                ("2" (skosimp) (rewrite "isf_x_section"))
                ("3" (skosimp) (rewrite "isf_x_section"))
                ("4" (skosimp) (rewrite "isf_x_section"))))
              ("2" (skosimp) (rewrite "isf_x_section"))
              ("3" (skosimp) (rewrite "isf_x_section"))
              ("4" (skosimp) (rewrite "isf_x_section"))))
            ("2" (rewrite "isf_integral_x"))
            ("3" (skosimp) (rewrite "isf_x_section"))
            ("4" (skosimp) (rewrite "isf_x_section"))))
          ("2" (rewrite "isf_integral_x") (expand "phi") (propax))
          ("3" (skosimp) (rewrite "isf_x_section"))))
        ("2" (expand "measurable_set?") (propax))))))
    ("2" (hide 2) (skosimp) (rewrite "isf_integral_x"))
    ("3" (skosimp) (rewrite "isf_x_section"))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_fubini_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma
    "isf_induction[[T1,T2],sigma_times(S1,S2),to_measure(fm_times(mu,nu))]"
    ("i1"
     "i!1"
     "P"
     "lambda (i: isf[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu,nu))]):
             isf_integral(i) =
              integral(LAMBDA y: isf_integral(LAMBDA x: i(x, y)))"))
   (("1"
     (assert)
     (hide 2)
     (split)
     (("1"
       (rewrite "isf_integral_zero")
       (rewrite "isf_integral_zero")
       (rewrite "integral_zero"))
      ("2"
       (skosimp*)
       (typepred "E!1")
       (lemma "isf_phi" ("E" "E!1"))
       (lemma "isf_scal" ("c" "c!1" "i" "phi(E!1)"))
       (lemma "isf_add" ("i1" "*[[T1, T2]](c!1, phi(E!1))" "i2" "i!2"))
       (rewrite "isf_integral_add" 1)
       (rewrite "isf_integral_scal" 1)
       (rewrite "integral_phi4")
       (("1"
         (replace -6)
         (rewrite "integral_scal" 1 :dir rl)
         (("1"
           (rewrite "integral_add" 1 :dir rl)
           (("1"
             (expand "*" 1 1)
             (expand "+" 1 1)
             (case-replace
              "(LAMBDA y:
                               isf_integral(LAMBDA x: i!2(x, y)) +
                                c!1 * isf_integral(LAMBDA x: phi(E!1)(x, y)))=(LAMBDA y:
                                isf_integral(LAMBDA x: (c!1 * phi(E!1) + i!2)(x, y)))")
             (("1"
               (hide 2)
               (apply-extensionality :hide? t)
               (("1"
                 (rewrite "isf_integral_scal" 1 :dir rl)
                 (("1"
                   (rewrite "isf_integral_add" 1 :dir rl)
                   (("1" (expand "*") (expand "+") (propax))
                    ("2" (rewrite "isf_y_section"))))
                  ("2" (rewrite "isf_y_section"))))
                ("2"
                 (skosimp)
                 (expand "+")
                 (expand "*")
                 (expand "phi")
                 (expand "member")
                 (lemma "isf_y_section"
                  ("i"
                   "LAMBDA (x: [T1, T2]):
                                i!2(x) + c!1 * IF E!1(x) THEN 1 ELSE 0 ENDIF"
                   "y"
                   "y!1"))
                 (("1" (assert)) ("2" (propax))))
                ("3" (skosimp) (rewrite "isf_y_section"))
                ("4" (skosimp) (rewrite "isf_y_section"))))
              ("2" (skosimp) (hide 2) (rewrite "isf_y_section"))
              ("3" (skosimp) (rewrite "isf_y_section"))
              ("4" (skosimp) (rewrite "isf_y_section"))))
            ("2" (hide 2) (rewrite "isf_integral_y"))
            ("3" (skosimp) (rewrite "isf_y_section"))
            ("4" (skosimp) (rewrite "isf_y_section"))))
          ("2"
           (hide 2)
           (rewrite "isf_integral_y")
           (hide 2)
           (expand "phi")
           (propax))
          ("3" (skosimp) (rewrite "isf_y_section"))))
        ("2" (expand "measurable_set?") (propax))))))
    ("2" (skosimp) (rewrite "isf_integral_y"))
    ("3" (skosimp) (rewrite "isf_y_section"))))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: finite_fubini_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (typepred "S2")
   (expand "sigma_algebra?")
   (expand "subset_algebra_empty?")
   (flatten)
   (expand "member")
   (propax))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: finite_fubini_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma "isf_x_section"
    ("i" "phi[[T1, T2], sigma_times(S1, S2)](E!1)" "x" "x!1"))
   (("1" (propax))
    ("2"
     (rewrite "isf_phi")
     (expand "mu_fin?")
     (expand "product_measure")
     (expand "to_measure")
     (expand "measurable_set?")
     (propax))))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: finite_fubini_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "x_section")
   (lemma "x_section_measurable"
    ("Z" "E!1" "x" "x1!1" "S1" "S1" "S2" "S2"))
   (expand "member")
   (propax))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: finite_fubini_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma "isf_y_section"
    ("i" "phi[[T1, T2], sigma_times(S1, S2)](E!1)" "y" "y!1"))
   (("1" (propax))
    ("2"
     (hide 2)
     (rewrite "isf_phi")
     (expand "mu_fin?")
     (expand "product_measure")
     (expand "to_measure")
     (expand "measurable_set?")
     (propax))))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: finite_fubini_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-complete
description: nil
script:
  (""
   (skosimp)
   (expand "y_section")
   (lemma "y_section_measurable"
    ("Z" "E!1" "y" "x1!1" "S1" "S1" "S2" "S2"))
   (expand "member")
   (propax))


proof_type: t_proof
decl_type: tcc
library: measure_integration
theory: finite_fubini_scaf
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (lemma "integral_phi1" ("E" "E!1"))
   (replace -1)
   (rewrite "x_section_integrable"))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_fubini_tonelli
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (split)
   (("1"
     (flatten)
     (typepred "h!1")
     (expand "nn_measurable?")
     (flatten)
     (lemma "nn_integrable_is_nn_integrable" ("f" "h!1"))
     (("1"
       (split)
       (("1"
         (hide -4)
         (lemma "nn_integral_def" ("f" "h!1"))
         (("1"
           (skolem - "HH")
           (flatten)
           (typepred "HH")
           (case "FORALL (n: nat): isf?(HH(n))")
           (("1"
             (case "FORALL (n: nat,z:[T1,T2]): HH(n)(z)>=0")
             (("1"
               (name "FF"
                     "lambda (n:nat): lambda (x:T1): isf_integral(lambda (y:T2): HH(n)(x,y))")
               (("1"
                 (case "FORALL (n: nat): integrable?[T1, S1, to_measure(mu)](FF(n))")
                 (("1"
                   (case "forall (n:nat): integral[T1,S1,to_measure(mu)](FF(n))=integral[[T1,T2],sigma_times(S1,S2),to_measure(fm_times(mu,nu))](HH(n))")
                   (("1"
                     (case-replace "(isf_integral o HH)=integral o FF")
                     (("1"
                       (case "forall (n:nat,x:T1): FF(n)(x)>=0")
                       (("1"
                         (case "pointwise_increasing?(FF)")
                         (("1"
                           (case "bounded?(integral o FF)")
                           (("1"
                             (lemma
                              "monotone_convergence[T1, S1, to_measure(mu)]"
                              ("F" "FF"))
                             (split -1)
                             (("1"
                               (flatten)
                               (hide -1)
                               (split -1)
                               (("1"
                                 (skolem - "F")
                                 (inst - "F")
                                 (assert)
                                 (typepred "F")
                                 (expand "integrable1?")
                                 (expand "ae_convergence?")
                                 (expand "fullset")
                                 (expand "ae_convergence_in?")
                                 (expand "ae_in?")
                                 (skosimp)
                                 (expand "member")
                                 (typepred "E!1")
                                 (expand "negligible_set?")
                                 (skolem - "N1")
                                 (flatten)
                                 (inst + "N1" "F")
                                 (skosimp)
                                 (expand "subset?")
                                 (inst - "x!1")
                                 (expand "member")
                                 (inst - "x!1")
                                 (assert)
                                 (lemma
                                  "monotone_convergence_scaf[T2,S2,to_measure(nu)]"
                                  ("f"
                                   "LAMBDA (y: T2): h!1(x!1, y)"
                                   "F"
                                   "lambda (n:nat): lambda (y:T2): HH(n)(x!1,y)"))
                                 (("1"
                                   (split -1)
                                   (("1"
                                     (flatten)
                                     (replace -1)
                                     (name-replace
                                      "LHS"
                                      "integral(LAMBDA (y: T2): h!1(x!1, y))")
                                     (case-replace
                                      "(integral o
                                                              (LAMBDA (n: nat): LAMBDA (y: T2): HH(n)(x!1, y)))=LAMBDA (n:nat): FF(n)(x!1)")
                                     (("1"
                                       (expand "converges_upto?")
                                       (flatten)
                                       (hide-all-but (-3 -7 3))
                                       (lemma
                                        "hausdorff_convergence.unique_limit"
                                        ("u"
                                         "LAMBDA (n: nat): FF(n)(x!1)"
                                         "l1"
                                         "LHS"
                                         "l2"
                                         "F(x!1)"))
                                       (assert))
                                      ("2"
                                       (apply-extensionality :hide? t)
                                       (("1"
                                         (expand "FF" 1)
                                         (expand "o" 1)
                                         (inst -15 "x!2")
                                         (lemma
                                          "isf_x_section"
                                          ("x" "x!1" "i" "HH(x!2)"))
                                         (rewrite "isf_integral" 1))
                                        ("2"
                                         (skosimp)
                                         (inst -15 "n!1")
                                         (lemma
                                          "isf_x_section"
                                          ("x" "x!1" "i" "HH(n!1)"))
                                         (lemma
                                          "isf_is_integrable[T2, S2, to_measure(nu)]")
                                         (inst
                                          -
                                          "LAMBDA (y: T2): HH(n!1)(x!1, y)"))))))
                                    ("2"
                                     (hide-all-but (1 -14 -15))
                                     (expand "increasing_nn_isf?")
                                     (expand "pointwise_converges_upto?")
                                     (split)
                                     (("1"
                                       (expand "pointwise_convergence?")
                                       (skolem + "y!1")
                                       (inst - "(x!1,y!1)"))
                                      ("2"
                                       (expand "pointwise_increasing?")
                                       (skolem + "y!1")
                                       (inst - "(x!1,y!1)"))))
                                    ("3"
                                     (replace -8 -5 rl)
                                     (hide-all-but
                                      (-7 1 -13 -12 -8 -3 -6))
                                     (expand "FF")
                                     (expand "o ")
                                     (expand "pointwise_increasing?")
                                     (inst -2 "x!1")
                                     (hide -4)
                                     (expand "bounded?")
                                     (split)
                                     (("1"
                                       (expand "bounded_above?")
                                       (inst + "F(x!1)")
                                       (skolem + "n!1")
                                       (inst-cp -5 "n!1")
                                       (lemma
                                        "isf_x_section"
                                        ("i" "HH(n!1)" "x" "x!1"))
                                       (rewrite "isf_integral")
                                       (rewrite "metric_convergence_def")
                                       (("1"
                                         (expand "metric_converges_to")
                                         (inst
                                          -
                                          "isf_integral(LAMBDA (y: T2): HH(n!1)(x!1, y))-F(x!1)")
                                         (("1"
                                           (skosimp)
                                           (inst - "n!1+n!2")
                                           (assert)
                                           (expand "ball")
                                           (expand "increasing?")
                                           (inst -3 "n!1" "n!1+n!2")
                                           (assert))
                                          ("2" (assert))))
                                        ("2"
                                         (skosimp)
                                         (rewrite "isf_x_section"))))
                                      ("2"
                                       (expand "bounded_below?")
                                       (inst + "0")
                                       (skolem + "n!1")
                                       (inst -5 "n!1")
                                       (lemma
                                        "isf_x_section"
                                        ("i" "HH(n!1)" "x" "x!1"))
                                       (rewrite "isf_integral" 1)
                                       (inst -4 "n!1" "x!1")
                                       (assert))))))
                                  ("2"
                                   (skosimp)
                                   (inst -13 "n!1")
                                   (lemma
                                    "isf_x_section"
                                    ("i" "HH(n!1)" "x" "x!1"))
                                   (lemma
                                    "isf_is_integrable[T2, S2, to_measure(nu)]")
                                   (inst
                                    -
                                    "LAMBDA (y: T2): HH(n!1)(x!1, y)"))))
                                ("2"
                                 (hide-all-but (-2 1 -7))
                                 (expand "bounded?")
                                 (skosimp)
                                 (split)
                                 (("1"
                                   (expand "bounded_above?")
                                   (inst + "c!1")
                                   (skolem + "n!1")
                                   (inst - "n!1")
                                   (assert))
                                  ("2"
                                   (expand "bounded_below?")
                                   (inst + "-c!1")
                                   (skolem + "n!1")
                                   (inst - "n!1")
                                   (assert))))))
                              ("2"
                               (hide-all-but (1 -2))
                               (expand "ae_increasing?")
                               (inst + "emptyset")
                               (skosimp)
                               (expand "pointwise_increasing?")
                               (inst - "x!1")
                               (expand "increasing?")
                               (propax))))
                            ("2"
                             (replace -3 * rl)
                             (hide-all-but (1 -11 -12 -9 -8 -7))
                             (expand "bounded?")
                             (inst + "nn_integral(h!1)")
                             (skolem + "n!1")
                             (lemma "isf_integral_pos" ("i" "HH(n!1)"))
                             (split)
                             (("1"
                               (expand "abs" 1)
                               (assert)
                               (expand "o" 1)
                               (rewrite "metric_convergence_def")
                               (expand "metric_converges_to")
                               (inst -5
                                "isf_integral(HH(n!1))-nn_integral(h!1)")
                               (("1"
                                 (skosimp)
                                 (inst -5 "n!1+n!2")
                                 (assert)
                                 (expand "ball")
                                 (expand "increasing_nn_isf?")
                                 (expand "pointwise_increasing?")
                                 (inst-cp -3 "n!1")
                                 (inst -3 "n!1+n!2")
                                 (case
                                  "isf_integral(HH(n!1)) <= isf_integral(HH(n!1+n!2))")
                                 (("1" (expand "o ") (assert))
                                  ("2"
                                   (assert)
                                   (hide 2 -6)
                                   (lemma
                                    "isf_integral_le"
                                    ("i1"
                                     "HH(n!1)"
                                     "i2"
                                     "HH(n!1 + n!2)"))
                                   (assert)
                                   (skolem + "z!1")
                                   (inst -5 "z!1")
                                   (expand "increasing?")
                                   (inst -5 "n!1" "n!1+n!2")
                                   (assert))))
                                ("2" (assert))))
                              ("2"
                               (skolem + "z!1")
                               (inst - "n!1" "z!1"))))))
                          ("2"
                           (expand "increasing_nn_isf?")
                           (hide-all-but (1 -8 -7))
                           (expand "FF")
                           (expand "pointwise_increasing?")
                           (skosimp)
                           (expand "increasing?")
                           (skolem + ("i!1" "j!1"))
                           (flatten)
                           (inst-cp - "j!1")
                           (inst - "i!1")
                           (lemma "isf_x_section"
                            ("x" "x!1" "i" "HH(j!1)"))
                           (lemma "isf_x_section"
                            ("x" "x!1" "i" "HH(i!1)"))
                           (lemma "isf_integral_le"
                            ("i1"
                             "LAMBDA (y: T2): HH(i!1)(x!1, y)"
                             "i2"
                             "LAMBDA (y: T2): HH(j!1)(x!1, y)"))
                           (("1"
                             (assert)
                             (skolem + "y!1")
                             (inst -6 "(x!1,y!1)")
                             (inst - "i!1" "j!1")
                             (assert))
                            ("2" (propax)) ("3" (propax))))))
                        ("2"
                         (skosimp)
                         (expand "FF" 1)
                         (hide-all-but (-5 -6 1))
                         (inst - "n!1")
                         (lemma "isf_x_section"
                          ("x" "x!1" "i" "HH(n!1)"))
                         (lemma "isf_integral_pos"
                          ("i" "LAMBDA (y: T2): HH(n!1)(x!1, y)"))
                         (("1"
                           (assert)
                           (skolem + "y!1")
                           (inst - "n!1" "(x!1,y!1)"))
                          ("2" (propax))))))
                      ("2"
                       (apply-extensionality :hide? t)
                       (expand "o")
                       (inst - "x!1")
                       (replace -1)
                       (inst -5 "x!1")
                       (rewrite "isf_integral"))))
                    ("2"
                     (skosimp)
                     (inst - "n!1")
                     (expand "FF")
                     (inst -4 "n!1")
                     (rewrite
                      "isf_integral[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu, nu))]"
                      1)
                     (lemma "isf_fubini_tonelli_3" ("i" "HH(n!1)"))
                     (assert))
                    ("3" (propax))))
                  ("2"
                   (skosimp)
                   (expand "FF")
                   (inst -3 "n!1")
                   (rewrite "isf_integral_x")
                   (case-replace
                    "(LAMBDA (x: T1, y: T2): HH(n!1)(x, y))=HH(n!1)")
                   (apply-extensionality :hide? t))))
                ("2"
                 (skosimp)
                 (inst -2 "n!1")
                 (rewrite "isf_x_section"))))
              ("2"
               (skosimp)
               (typepred "HH(n!1)")
               (expand "nn_isf?")
               (inst - "z!1"))))
            ("2" (skosimp) (typepred "HH(n!1)") (propax))))
          ("2" (propax))))
        ("2" (skosimp) (inst - "x!1") (assert))))
      ("2" (propax))))
    ("2"
     (flatten)
     (expand "integrable1?")
     (skolem - ("N!1" "f!1"))
     (expand "member")
     (typepred "N!1")
     (name "N" "complement(N!1)")
     (name "NN" "cross_product(complement(N!1),fullset[T2])")
     (lemma "sigma_algebra_complement[T1,S1]" ("x" "N!1"))
     (("1"
       (expand "member")
       (replace -3)
       (lemma "cross_product_is_sigma_times" ("Y" "fullset[T2]" "X" "N"))
       (("1"
         (name "H" "*[[T1,T2]](phi(NN),h!1)")
         (name "F" "*[T1](phi(N),f!1)")
         (case "forall (x:T1): integrable?(LAMBDA (y: T2): H(x, y))")
         (("1"
           (case "forall (x:T1): integral(LAMBDA (y: T2): H(x, y))=F(x)")
           (("1"
             (hide -10)
             (case "integrable?(F)")
             (("1"
               (case "forall (x:T1): F(x)>=0")
               (("1"
                 (case "forall (z:[T1,T2]): H(z)>=0")
                 (("1"
                   (case "nn_integrable?(H)")
                   (("1"
                     (lemma "integral_ae_eq" ("f" "H" "h" "h!1"))
                     (("1"
                       (assert)
                       (hide 2 -1)
                       (expand "ae_eq?")
                       (expand "restrict")
                       (expand "pointwise_ae?")
                       (expand "ae?")
                       (expand "fullset" 1)
                       (expand "H")
                       (expand "*")
                       (expand "ae_in?")
                       (expand "member")
                       (inst + "cross_product(N!1,fullset[T2])")
                       (("1"
                         (skolem + "y!1")
                         (flatten)
                         (expand "NN")
                         (expand "fullset")
                         (expand "complement")
                         (expand "cross_product")
                         (expand "phi")
                         (expand "member")
                         (assert))
                        ("2"
                         (expand "negligible_set?")
                         (inst +
                          "cross_product[T1, T2](N!1, fullset[T2])")
                         (split)
                         (("1"
                           (hide-all-but (-12 1))
                           (expand "null_set?")
                           (expand "mu_fin?")
                           (expand "to_measure")
                           (expand "mu")
                           (expand "to_measure")
                           (flatten)
                           (expand "measurable_set?")
                           (rewrite "cross_product_is_sigma_times")
                           (expand "fm_times")
                           (lemma "rectangle_measure1"
                            ("M"
                             "cross_product[T1, T2](N!1,fullset[T2])"
                             "Y"
                             "fullset[T2]"
                             "X"
                             "N!1"
                             "mu"
                             "mu"
                             "nu"
                             "nu"))
                           (("1" (assert))
                            ("2"
                             (rewrite "cross_product_is_sigma_times"))))
                          ("2" (expand "subset?") (skosimp))))))
                      ("2"
                       (typepred "h!1")
                       (expand "nn_measurable?")
                       (flatten))
                      ("3"
                       (lemma
                        "nn_integrable_is_integrable[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu, nu))]")
                       (inst - "H"))))
                    ("2"
                     (hide 2)
                     (case "nn_measurable?(H)")
                     (("1"
                       (hide (-7 -8 -9 -10 -11 -12 -13))
                       (lemma "nn_integrable_is_nn_integrable" ("f" "F"))
                       (("1"
                         (replace -4)
                         (lemma "nn_measurable_def" ("f" "H"))
                         (split -1)
                         (("1"
                           (flatten)
                           (hide -2)
                           (split -1)
                           (("1"
                             (skolem - "HH")
                             (typepred "HH")
                             (hide -3 -4)
                             (case "forall (n:nat): isf?(HH(n))")
                             (("1"
                               (case "forall (n:nat,z:[T1, T2]): HH(n)(z) >= 0")
                               (("1"
                                 (name
                                  "FF"
                                  "lambda (n:nat): lambda (x:T1): isf_integral(LAMBDA (y: T2): HH(n)(x, y))")
                                 (("1"
                                   (case
                                    "forall (n:nat): integrable?(FF(n))")
                                   (("1"
                                     (case "pointwise_increasing?(FF)")
                                     (("1"
                                       (case
                                        "pointwise_converges_upto?(FF, F)")
                                       (("1"
                                         (case "bounded?(integral o HH)")
                                         (("1"
                                           (lemma
                                            "monotone_convergence_scaf[[T1, T2], sigma_times(S1, S2),
                                                   to_measure(fm_times(mu, nu))]"
                                            ("F" "HH" "f" "H"))
                                           (assert)
                                           (split -1)
                                           (("1"
                                             (flatten)
                                             (lemma
                                              "nn_integrable_is_nn_integrable"
                                              ("f" "H"))
                                             (replace -13)
                                             (propax))
                                            ("2"
                                             (hide-all-but (-1 1))
                                             (expand "bounded?")
                                             (skosimp)
                                             (split)
                                             (("1"
                                               (expand "bounded_above?")
                                               (inst + "c!1")
                                               (skosimp)
                                               (inst - "x!1")
                                               (assert))
                                              ("2"
                                               (expand "bounded_below?")
                                               (inst + "-c!1")
                                               (skosimp)
                                               (inst - "x!1")
                                               (assert))))))
                                          ("2"
                                           (case-replace
                                            "integral o HH=isf_integral o HH")
                                           (("1"
                                             (expand "bounded?")
                                             (inst + "integral(F)")
                                             (("1"
                                               (skolem + "n!1")
                                               (expand "o ")
                                               (expand "abs")
                                               (lemma
                                                "isf_integral_pos"
                                                ("i" "HH(n!1)"))
                                               (("1"
                                                 (inst -7 "n!1" "_")
                                                 (replace -7)
                                                 (assert)
                                                 (hide -1 2)
                                                 (rewrite
                                                  "isf_fubini_tonelli_3")
                                                 (lemma
                                                  "integral_ae_le"
                                                  ("f1"
                                                   "FF(n!1)"
                                                   "f2"
                                                   "F"))
                                                 (("1"
                                                   (split -1)
                                                   (("1"
                                                     (expand "FF")
                                                     (propax))
                                                    ("2"
                                                     (hide-all-but
                                                      (-2 -3 1))
                                                     (expand
                                                      "pointwise_converges_upto?")
                                                     (expand
                                                      "pointwise_increasing?")
                                                     (expand
                                                      "pointwise_convergence?")
                                                     (expand "ae_le?")
                                                     (expand
                                                      "pointwise_ae?")
                                                     (expand "ae?")
                                                     (expand "fullset")
                                                     (expand "ae_in?")
                                                     (inst + "emptyset")
                                                     (skosimp)
                                                     (hide 1)
                                                     (inst - "x!1")
                                                     (inst - "x!1")
                                                     (rewrite
                                                      "metric_convergence_def")
                                                     (expand
                                                      "metric_converges_to")
                                                     (assert)
                                                     (inst
                                                      -
                                                      "FF(n!1)(x!1)-F(x!1)")
                                                     (skosimp)
                                                     (expand
                                                      "increasing?")
                                                     (inst - "n!1+n!2")
                                                     (inst
                                                      -
                                                      "n!1"
                                                      "n!1+n!2")
                                                     (expand "ball")
                                                     (assert))))
                                                  ("2" (inst -4 "n!1"))))
                                                ("2" (inst -7 "n!1"))))
                                              ("2"
                                               (lemma
                                                "integral_nonneg"
                                                ("f" "F"))
                                               (assert))))
                                            ("2"
                                             (hide -4 2 3)
                                             (apply-extensionality
                                              :hide?
                                              t)
                                             (expand "o ")
                                             (inst -5 "x!1")
                                             (rewrite "isf_integral"))))
                                          ("3"
                                           (skolem + "n!1")
                                           (inst -6 "n!1")
                                           (lemma
                                            "isf_is_integrable[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu, nu))]")
                                           (inst - "HH(n!1)"))))
                                        ("2"
                                         (expand
                                          "pointwise_converges_upto?")
                                         (assert)
                                         (hide 2)
                                         (expand
                                          "pointwise_convergence?")
                                         (skosimp)
                                         (inst -12 "x!1")
                                         (inst -13 "x!1")
                                         (replace -12 1 rl)
                                         (expand "FF" 1)
                                         (lemma
                                          "monotone_convergence_scaf[T2,S2,to_measure(nu)]"
                                          ("f"
                                           "LAMBDA (y: T2): H(x!1, y)"
                                           "F"
                                           "lambda (n:nat): lambda (y:T2): HH(n)(x!1, y)"))
                                         (("1"
                                           (split -1)
                                           (("1"
                                             (flatten)
                                             (expand "converges_upto?")
                                             (flatten)
                                             (expand "o")
                                             (case-replace
                                              "(LAMBDA (x_1: nat):
                                                                   integral(LAMBDA (y: T2): HH(x_1)(x!1, y)))=LAMBDA (n:nat): isf_integral(LAMBDA (y: T2): HH(n)(x!1, y))")
                                             (("1"
                                               (apply-extensionality
                                                :hide?
                                                t)
                                               (("1"
                                                 (inst -8 "x!2")
                                                 (lemma
                                                  "isf_x_section"
                                                  ("x"
                                                   "x!1"
                                                   "i"
                                                   "HH(x!2)"))
                                                 (("1"
                                                   (rewrite
                                                    "isf_integral"
                                                    1))
                                                  ("2" (propax))))
                                                ("2"
                                                 (skosimp)
                                                 (inst -8 "n!1")
                                                 (rewrite
                                                  "isf_x_section"))
                                                ("3"
                                                 (skolem + "n!1")
                                                 (inst -8 "n!1")
                                                 (lemma
                                                  "isf_x_section"
                                                  ("x"
                                                   "x!1"
                                                   "i"
                                                   "HH(n!1)"))
                                                 (("1"
                                                   (lemma
                                                    "isf_is_integrable[T2, S2, to_measure(nu)]")
                                                   (inst
                                                    -
                                                    "LAMBDA (y: T2): HH(n!1)(x!1, y)"))
                                                  ("2" (propax))))))
                                              ("2"
                                               (skosimp)
                                               (inst -8 "n!1")
                                               (rewrite
                                                "isf_x_section"))))
                                            ("2"
                                             (hide 2)
                                             (expand
                                              "pointwise_converges_upto?")
                                             (split 1)
                                             (("1"
                                               (expand
                                                "pointwise_convergence?")
                                               (skolem + "y!1")
                                               (inst -7 "(x!1,y!1)"))
                                              ("2"
                                               (expand
                                                "pointwise_increasing?")
                                               (skolem + "y!1")
                                               (inst -8 "(x!1,y!1)"))))
                                            ("3"
                                             (hide 2)
                                             (expand "bounded?")
                                             (expand "o")
                                             (split 1)
                                             (("1"
                                               (expand "bounded_above?")
                                               (inst + "F(x!1)")
                                               (skolem + "n!1")
                                               (lemma
                                                "integral_ae_le[T2,S2,to_measure(nu)]"
                                                ("f1"
                                                 "LAMBDA (y: T2): HH(n!1)(x!1, y)"
                                                 "f2"
                                                 "LAMBDA (y: T2): H(x!1,y)"))
                                               (("1"
                                                 (split -1)
                                                 (("1" (assert))
                                                  ("2"
                                                   (hide-all-but
                                                    (1 -6 -7))
                                                   (expand
                                                    "increasing_nn_simple?")
                                                   (flatten)
                                                   (hide -1)
                                                   (expand
                                                    "pointwise_increasing?")
                                                   (expand "ae_le?")
                                                   (expand
                                                    "pointwise_ae?")
                                                   (expand "ae?")
                                                   (expand "fullset")
                                                   (expand "ae_in?")
                                                   (inst + "emptyset")
                                                   (skolem + "y!1")
                                                   (expand "member")
                                                   (flatten)
                                                   (hide 1)
                                                   (inst - "(x!1,y!1)")
                                                   (inst - "(x!1,y!1)")
                                                   (rewrite
                                                    "metric_convergence_def")
                                                   (expand
                                                    "metric_converges_to")
                                                   (inst
                                                    -
                                                    "HH(n!1)(x!1, y!1)-H(x!1, y!1)")
                                                   (("1"
                                                     (skosimp)
                                                     (inst - "n!1+n!2")
                                                     (expand "ball")
                                                     (expand
                                                      "increasing?")
                                                     (inst
                                                      -
                                                      "n!1"
                                                      "n!1+n!2")
                                                     (assert))
                                                    ("2" (assert))))))
                                                ("2" (propax))
                                                ("3"
                                                 (lemma
                                                  "isf_x_section"
                                                  ("x"
                                                   "x!1"
                                                   "i"
                                                   "HH(n!1)"))
                                                 (("1"
                                                   (lemma
                                                    "isf_is_integrable[T2, S2, to_measure(nu)]")
                                                   (inst
                                                    -
                                                    "LAMBDA (y: T2): HH(n!1)(x!1, y)"))
                                                  ("2"
                                                   (inst -5 "n!1"))))))
                                              ("2"
                                               (expand "bounded_below?")
                                               (inst + "0")
                                               (skolem + "n!1")
                                               (inst -5 "n!1")
                                               (lemma
                                                "isf_x_section"
                                                ("x"
                                                 "x!1"
                                                 "i"
                                                 "HH(n!1)"))
                                               (("1"
                                                 (rewrite
                                                  "isf_integral"
                                                  1)
                                                 (lemma
                                                  "isf_integral_pos"
                                                  ("i"
                                                   "LAMBDA (y: T2): HH(n!1)(x!1, y)"))
                                                 (("1"
                                                   (assert)
                                                   (skolem + "y!1")
                                                   (inst
                                                    -5
                                                    "n!1"
                                                    "(x!1,y!1)"))
                                                  ("2" (propax))))
                                                ("2" (propax))))))))
                                          ("2"
                                           (skosimp)
                                           (inst -5 "n!1")
                                           (lemma
                                            "isf_x_section"
                                            ("x" "x!1" "i" "HH(n!1)"))
                                           (("1"
                                             (lemma
                                              "isf_is_integrable[T2, S2, to_measure(nu)]")
                                             (inst
                                              -
                                              "LAMBDA (y: T2): HH(n!1)(x!1, y)"))
                                            ("2" (propax))))))))
                                      ("2"
                                       (expand "increasing_nn_simple?")
                                       (flatten)
                                       (expand "pointwise_increasing?")
                                       (skosimp)
                                       (expand "FF")
                                       (hide-all-but (-4 -6 1))
                                       (expand "increasing?")
                                       (skolem + ("i!1" "j!1"))
                                       (flatten)
                                       (inst-cp - "j!1")
                                       (inst - "i!1")
                                       (lemma
                                        "isf_x_section"
                                        ("x" "x!1" "i" "HH(j!1)"))
                                       (("1"
                                         (lemma
                                          "isf_x_section"
                                          ("x" "x!1" "i" "HH(i!1)"))
                                         (("1"
                                           (lemma
                                            "isf_integral_le"
                                            ("i1"
                                             "LAMBDA (y: T2): HH(i!1)(x!1, y)"
                                             "i2"
                                             "LAMBDA (y: T2): HH(j!1)(x!1, y)"))
                                           (("1"
                                             (assert)
                                             (skolem + "y!1")
                                             (inst -6 "(x!1,y!1)")
                                             (inst -6 "i!1" "j!1")
                                             (assert))
                                            ("2" (propax))
                                            ("3" (propax))))
                                          ("2" (propax))))
                                        ("2" (propax))))))
                                    ("2"
                                     (skosimp)
                                     (hide 2 -1)
                                     (expand "FF")
                                     (inst -2 "n!1")
                                     (lemma
                                      "isf_integral_x"
                                      ("i" "HH(n!1)"))
                                     (("1" (propax)) ("2" (propax))))))
                                  ("2"
                                   (skosimp)
                                   (inst -2 "n!1")
                                   (rewrite "isf_x_section"))))
                                ("2"
                                 (skosimp)
                                 (expand "increasing_nn_simple?")
                                 (expand "nn_simple?")
                                 (flatten)
                                 (inst -2 "n!1")
                                 (flatten)
                                 (inst -2 "z!1")
                                 (assert))))
                              ("2"
                               (skosimp)
                               (expand "increasing_nn_simple?")
                               (flatten)
                               (inst - "n!1")
                               (expand "nn_simple?")
                               (flatten)
                               (expand "isf?")
                               (expand "mu_fin?")
                               (expand "to_measure")
                               (propax))))
                            ("2" (expand "nn_measurable?") (flatten))))
                          ("2" (skosimp) (inst - "x!1") (assert))))
                        ("2" (propax))))
                      ("2"
                       (hide -3 -4 -5 2)
                       (typepred "h!1")
                       (expand "nn_measurable?")
                       (flatten)
                       (split)
                       (("1"
                         (expand "H")
                         (rewrite "prod_measurable")
                         (lemma
                          "phi_is_simple[[T1, T2], sigma_times(S1, S2)]"
                          ("X" "NN"))
                         (expand "simple?")
                         (propax))
                        ("2" (skosimp) (inst -3 "x!1") (assert))))))
                    ("3" (propax))))
                  ("2"
                   (skosimp)
                   (expand "H")
                   (typepred "h!1")
                   (expand "nn_measurable?")
                   (flatten)
                   (inst - "z!1")
                   (expand "*")
                   (expand "phi")
                   (lift-if 1)
                   (assert))))
                ("2"
                 (skosimp)
                 (inst - "x!1")
                 (inst - "x!1")
                 (lemma "integral_nonneg"
                  ("f" "LAMBDA (y: T2): H(x!1, y)"))
                 (("1"
                   (assert)
                   (skolem + "y!1")
                   (expand "H")
                   (expand "*")
                   (expand "phi")
                   (lift-if)
                   (typepred "h!1")
                   (expand "nn_measurable?")
                   (flatten)
                   (inst - "(x!1,y!1)")
                   (assert))
                  ("2" (propax))))))
              ("2"
               (typepred "f!1")
               (expand "F")
               (rewrite "indefinite_integrable"))))
            ("2"
             (hide 2)
             (skosimp)
             (inst - "x!1")
             (inst -9 "x!1")
             (expand "H")
             (expand "F")
             (expand "*")
             (expand "phi")
             (expand "NN")
             (expand "cross_product")
             (expand "fullset")
             (expand "complement")
             (expand "member")
             (expand "N")
             (expand "complement")
             (expand "member")
             (lift-if 1)
             (case-replace "N!1(x!1)")
             (("1" (rewrite "integral_zero") (assert)) ("2" (assert))))
            ("3" (propax))))
          ("2"
           (skosimp)
           (expand "H")
           (expand "NN")
           (expand "cross_product")
           (expand "fullset")
           (expand "complement")
           (expand "phi")
           (expand "member")
           (expand "*")
           (inst -8 "x!1")
           (case-replace "N!1(x!1)")
           (("1" (rewrite "integrable_zero")) ("2" (assert))))))
        ("2" (propax))))
      ("2" (expand "null_set?") (expand "measurable_set?") (flatten))))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_fubini_tonelli
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skosimp)
   (split)
   (("1"
     (flatten)
     (typepred "h!1")
     (expand "nn_measurable?")
     (flatten)
     (lemma "nn_integrable_is_nn_integrable" ("f" "h!1"))
     (("1"
       (split)
       (("1"
         (hide -4)
         (lemma "nn_integral_def" ("f" "h!1"))
         (("1"
           (skolem - "HH")
           (flatten)
           (typepred "HH")
           (case "FORALL (n: nat): isf?(HH(n))")
           (("1"
             (case "FORALL (n: nat,z:[T1,T2]): HH(n)(z)>=0")
             (("1"
               (name "GG"
                     "lambda (n:nat): lambda (y:T2): isf_integral(lambda (x:T1): HH(n)(x,y))")
               (("1"
                 (case "FORALL (n: nat): integrable?[T2, S2, to_measure(nu)](GG(n))")
                 (("1"
                   (case "forall (n:nat): integral[T2,S2,to_measure(nu)](GG(n))=integral[[T1,T2],sigma_times(S1,S2),to_measure(fm_times(mu,nu))](HH(n))")
                   (("1"
                     (case-replace "(isf_integral o HH)=integral o GG")
                     (("1"
                       (hide -1)
                       (case "forall (n:nat,y:T2): GG(n)(y)>=0")
                       (("1"
                         (case "pointwise_increasing?(GG)")
                         (("1"
                           (case "bounded?(integral o GG)")
                           (("1"
                             (lemma
                              "monotone_convergence[T2, S2, to_measure(nu)]"
                              ("F" "GG"))
                             (split -1)
                             (("1"
                               (flatten)
                               (hide -1)
                               (split -1)
                               (("1"
                                 (skolem - "G")
                                 (inst - "G")
                                 (assert)
                                 (typepred "G")
                                 (expand "integrable2?")
                                 (expand "ae_convergence?")
                                 (expand "fullset")
                                 (expand "ae_convergence_in?")
                                 (expand "ae_in?")
                                 (skosimp)
                                 (typepred "E!1")
                                 (expand "negligible_set?")
                                 (skolem - "N2")
                                 (flatten)
                                 (inst + "N2" "G")
                                 (skosimp)
                                 (expand "subset?")
                                 (expand "member")
                                 (inst - "y!1")
                                 (assert)
                                 (inst -3 "y!1")
                                 (assert)
                                 (lemma
                                  "monotone_convergence_scaf[T1,S1,to_measure(mu)]"
                                  ("f"
                                   "LAMBDA (x: T1): h!1(x, y!1)"
                                   "F"
                                   "lambda (n:nat): lambda (x:T1): HH(n)(x,y!1)"))
                                 (("1"
                                   (split -1)
                                   (("1"
                                     (flatten)
                                     (replace -1)
                                     (name-replace
                                      "LHS"
                                      "integral(LAMBDA (x: T1): h!1(x, y!1))")
                                     (case-replace
                                      "(integral o
                                                              (LAMBDA (n: nat): LAMBDA (x: T1): HH(n)(x, y!1)))=LAMBDA (n:nat): GG(n)(y!1)")
                                     (("1"
                                       (hide -1)
                                       (expand "converges_upto?")
                                       (flatten)
                                       (hide-all-but (-2 -6 3))
                                       (lemma
                                        "hausdorff_convergence.unique_limit"
                                        ("u"
                                         "LAMBDA (n: nat): GG(n)(y!1)"
                                         "l1"
                                         "LHS"
                                         "l2"
                                         "G(y!1)"))
                                       (assert))
                                      ("2"
                                       (hide 4)
                                       (apply-extensionality :hide? t)
                                       (("1"
                                         (expand "GG" 1)
                                         (expand "o" 1)
                                         (inst -14 "x!1")
                                         (lemma
                                          "isf_y_section"
                                          ("y" "y!1" "i" "HH(x!1)"))
                                         (rewrite "isf_integral"))
                                        ("2"
                                         (skosimp)
                                         (inst -14 "n!1")
                                         (lemma
                                          "isf_y_section"
                                          ("y" "y!1" "i" "HH(n!1)"))
                                         (lemma
                                          "isf_is_integrable[T1, S1, to_measure(mu)]")
                                         (inst
                                          -
                                          "LAMBDA (x: T1): HH(n!1)(x, y!1)"))))))
                                    ("2"
                                     (hide-all-but (1 -14 -13))
                                     (expand "increasing_nn_isf?")
                                     (expand "pointwise_converges_upto?")
                                     (split)
                                     (("1"
                                       (expand "pointwise_convergence?")
                                       (skosimp)
                                       (inst - "(x!1,y!1)"))
                                      ("2"
                                       (expand "pointwise_increasing?")
                                       (skosimp)
                                       (inst - "(x!1,y!1)"))))
                                    ("3"
                                     (hide-all-but (-3 -6 1 -11 -12 -7))
                                     (expand "bounded?")
                                     (expand "o")
                                     (split)
                                     (("1"
                                       (expand "bounded_above?")
                                       (inst + "G(y!1)")
                                       (skolem + "n!1")
                                       (expand "GG")
                                       (expand "pointwise_increasing?")
                                       (inst - "y!1")
                                       (rewrite "metric_convergence_def")
                                       (("1"
                                         (expand "metric_converges_to")
                                         (inst-cp -5 "n!1")
                                         (lemma
                                          "isf_y_section"
                                          ("y" "y!1" "i" "HH(n!1)"))
                                         (rewrite "isf_integral" 1)
                                         (inst
                                          -
                                          "isf_integral(LAMBDA (x: T1): HH(n!1)(x, y!1))-G(y!1)")
                                         (("1"
                                           (skosimp)
                                           (inst - "n!1+n!2")
                                           (assert)
                                           (expand "ball")
                                           (expand "increasing?")
                                           (inst -3 "n!1" "n!1+n!2")
                                           (assert))
                                          ("2" (assert))))
                                        ("2"
                                         (skosimp)
                                         (rewrite "isf_y_section"))))
                                      ("2"
                                       (expand "bounded_below?")
                                       (inst + "0")
                                       (skolem + "n!1")
                                       (inst -5 "n!1")
                                       (lemma
                                        "isf_y_section"
                                        ("y" "y!1" "i" "HH(n!1)"))
                                       (rewrite "isf_integral")
                                       (lemma
                                        "isf_integral_pos"
                                        ("i"
                                         "LAMBDA (x: T1): HH(n!1)(x, y!1)"))
                                       (("1"
                                         (assert)
                                         (skosimp)
                                         (assert)
                                         (inst -5 "n!1" "(x!1,y!1)"))
                                        ("2" (propax))))))))
                                  ("2"
                                   (skosimp)
                                   (inst -12 "n!1")
                                   (lemma
                                    "isf_y_section"
                                    ("y" "y!1" "i" "HH(n!1)"))
                                   (lemma
                                    "isf_is_integrable[T1, S1, to_measure(mu)]")
                                   (inst
                                    -
                                    "LAMBDA (x: T1): HH(n!1)(x, y!1)"))))
                                ("2"
                                 (hide -1 -5 2)
                                 (expand "bounded?")
                                 (skosimp)
                                 (split 1)
                                 (("1"
                                   (expand "bounded_above?")
                                   (inst + "c!1")
                                   (skolem + "n!1")
                                   (inst - "n!1")
                                   (assert))
                                  ("2"
                                   (expand "bounded_below?")
                                   (inst + "-c!1")
                                   (skolem + "n!1")
                                   (inst - "n!1")
                                   (assert))))))
                              ("2"
                               (hide-all-but (-2 1))
                               (expand "ae_increasing?")
                               (expand "pointwise_increasing?")
                               (expand "increasing?")
                               (inst + "emptyset")
                               (skolem + "y!1")
                               (inst - "y!1")
                               (flatten))))
                            ("2"
                             (hide -5 2)
                             (expand "bounded?")
                             (inst + "nn_integral(h!1)")
                             (skolem + "n!1")
                             (expand "o ")
                             (lemma "integral_nonneg" ("f" "GG(n!1)"))
                             (inst-cp -3 "n!1" "_")
                             (replace -4)
                             (expand "abs")
                             (assert)
                             (rewrite "metric_convergence_def")
                             (expand "metric_converges_to")
                             (inst -11
                              "integral(GG(n!1))-nn_integral(h!1)")
                             (skosimp)
                             (inst -11 "n!1+n!2")
                             (assert)
                             (expand "ball")
                             (expand "pointwise_increasing?")
                             (inst-cp -6 "n!1")
                             (inst -6 "n!1+n!2")
                             (case "integral(GG(n!1)) <= integral(GG(n!1 + n!2))")
                             (("1" (assert))
                              ("2"
                               (hide 2)
                               (lemma "integral_ae_le"
                                ("f1" "GG(n!1)" "f2" "GG(n!1 + n!2)"))
                               (assert)
                               (hide 2)
                               (expand "ae_le?")
                               (expand "pointwise_ae?")
                               (expand "ae?")
                               (expand "fullset")
                               (expand "ae_in?")
                               (inst + "emptyset")
                               (skolem + "y!1")
                               (expand "member")
                               (flatten)
                               (inst - "y!1")
                               (expand "increasing?")
                               (inst - "n!1" "n!1+n!2")
                               (assert))))))
                          ("2"
                           (expand "pointwise_increasing?")
                           (skolem + "y!1")
                           (expand "increasing_nn_isf?")
                           (expand "pointwise_increasing?")
                           (expand "increasing?")
                           (skolem + ("i!1" "j!1"))
                           (flatten)
                           (hide -3 -4 2 -5)
                           (expand "GG")
                           (inst-cp -4 "i!1")
                           (inst -4 "j!1")
                           (lemma "isf_y_section"
                            ("i" "HH(i!1)" "y" "y!1"))
                           (lemma "isf_y_section"
                            ("i" "HH(j!1)" "y" "y!1"))
                           (lemma "isf_integral_le"
                            ("i1"
                             "LAMBDA (x: T1): HH(i!1)(x, y!1)"
                             "i2"
                             "LAMBDA (x: T1): HH(j!1)(x, y!1)"))
                           (("1"
                             (assert)
                             (skosimp)
                             (inst -8 "(x!1,y!1)")
                             (inst -8 "i!1" "j!1")
                             (assert))
                            ("2" (propax)) ("3" (propax))))))
                        ("2"
                         (hide 2 -1 -2 -3)
                         (skosimp)
                         (expand "GG")
                         (inst - "n!1" "_")
                         (inst -2 "n!1")
                         (lemma "isf_y_section"
                          ("y" "y!1" "i" "HH(n!1)"))
                         (lemma "isf_integral_pos"
                          ("i" "LAMBDA (x: T1): HH(n!1)(x, y!1)"))
                         (("1" (assert) (skosimp) (inst - "(x!1,y!1)"))
                          ("2" (propax))))))
                      ("2"
                       (hide 2)
                       (apply-extensionality :hide? t)
                       (expand "o ")
                       (inst - "x!1")
                       (replace -1)
                       (inst -5 "x!1")
                       (rewrite
                        "isf_integral[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu, nu))]"
                        +))))
                    ("2"
                     (skosimp)
                     (inst - "n!1")
                     (inst -4 "n!1")
                     (hide -2 2)
                     (rewrite
                      "isf_integral[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu, nu))]")
                     (rewrite "isf_fubini_tonelli_4" +)
                     (expand "GG")
                     (propax))
                    ("3" (propax))))
                  ("2"
                   (hide -1 2)
                   (skosimp)
                   (expand "GG")
                   (rewrite "isf_integral_y")
                   (case-replace
                    "(LAMBDA (x: T1, y: T2): HH(n!1)(x, y))=HH(n!1)")
                   (("1" (assert))
                    ("2" (apply-extensionality :hide? t))))))
                ("2" (skosimp) (rewrite "isf_y_section"))))
              ("2"
               (skosimp)
               (typepred "HH(n!1)")
               (expand "nn_isf?")
               (inst - "z!1"))))
            ("2" (skosimp) (typepred "HH(n!1)") (propax))))
          ("2" (propax))))
        ("2" (skosimp) (inst - "x!1") (assert))))
      ("2" (propax))))
    ("2"
     (flatten)
     (expand "integrable2?")
     (skolem - ("N!1" "g!1"))
     (expand "member")
     (typepred "N!1")
     (name "N" "complement(N!1)")
     (name "NN" "cross_product(fullset[T1],complement(N!1))")
     (lemma "sigma_algebra_complement[T2,S2]" ("x" "N!1"))
     (("1"
       (expand "member")
       (replace -3)
       (lemma "cross_product_is_sigma_times" ("X" "fullset[T1]" "Y" "N"))
       (("1"
         (replace -3)
         (name "H" "*[[T1,T2]](phi(NN),h!1)")
         (name "G" "*[T2](phi(N),g!1)")
         (case "forall (y:T2): integrable?(LAMBDA (x: T1): H(x, y))")
         (("1"
           (case "forall (y:T2): integral(LAMBDA (x: T1): H(x, y))=G(y)")
           (("1"
             (hide -10)
             (case "integrable?(G)")
             (("1"
               (case "forall (y:T2): G(y)>=0")
               (("1"
                 (case "forall (z:[T1,T2]): H(z)>=0")
                 (("1"
                   (case "nn_integrable?(H)")
                   (("1"
                     (lemma "integral_ae_eq" ("f" "H" "h" "h!1"))
                     (("1"
                       (assert)
                       (hide 2 -1)
                       (expand "ae_eq?")
                       (expand "pointwise_ae?")
                       (expand "restrict")
                       (expand "ae?")
                       (expand "fullset" 1)
                       (expand "H")
                       (expand "*")
                       (expand "phi")
                       (expand "ae_in?")
                       (expand "member")
                       (inst + "cross_product(fullset[T1], N!1)")
                       (("1"
                         (skolem + "z!1")
                         (expand "NN")
                         (expand "fullset")
                         (expand "cross_product")
                         (expand "complement")
                         (expand "member")
                         (flatten)
                         (assert))
                        ("2"
                         (expand "negligible_set?")
                         (inst +
                          "cross_product[T1, T2](fullset[T1], N!1)")
                         (split)
                         (("1"
                           (hide-all-but (-12 1))
                           (expand "null_set?")
                           (flatten)
                           (expand "mu_fin?")
                           (expand "mu")
                           (expand "to_measure")
                           (lemma "cross_product_is_sigma_times"
                            ("X" "fullset[T1]" "Y" "N!1"))
                           (expand "measurable_set?")
                           (assert)
                           (expand "fm_times")
                           (lemma "rectangle_measure1"
                            ("M"
                             "cross_product[T1, T2](fullset[T1], N!1)"
                             "X"
                             "fullset[T1]"
                             "Y"
                             "N!1"
                             "mu"
                             "mu"
                             "nu"
                             "nu"))
                           (assert))
                          ("2" (expand "subset?") (skosimp))))))
                      ("2"
                       (typepred "h!1")
                       (expand "nn_measurable?")
                       (flatten))
                      ("3"
                       (lemma
                        "nn_integrable_is_integrable[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu, nu))]")
                       (inst - "H"))))
                    ("2"
                     (hide 2)
                     (case "nn_measurable?(H)")
                     (("1"
                       (hide (-7 -8 -9 -10 -11 -12 -13))
                       (lemma "nn_integrable_is_nn_integrable" ("f" "G"))
                       (("1"
                         (replace -4)
                         (lemma "nn_measurable_def" ("f" "H"))
                         (split)
                         (("1"
                           (flatten)
                           (split -1)
                           (("1"
                             (skolem - "HH")
                             (typepred "HH")
                             (hide -3 -4)
                             (case "forall (n:nat): isf?(HH(n))")
                             (("1"
                               (case "forall (n:nat,z:[T1, T2]): HH(n)(z) >= 0")
                               (("1"
                                 (name
                                  "GG"
                                  "lambda (n:nat): lambda (y:T2): isf_integral(LAMBDA (x: T1): HH(n)(x, y))")
                                 (("1"
                                   (case
                                    "forall (n:nat): integrable?(GG(n))")
                                   (("1"
                                     (case "pointwise_increasing?(GG)")
                                     (("1"
                                       (case
                                        "pointwise_converges_upto?(GG, G)")
                                       (("1"
                                         (case "bounded?(integral o HH)")
                                         (("1"
                                           (lemma
                                            "monotone_convergence_scaf[[T1, T2], sigma_times(S1, S2),
                                                   to_measure(fm_times(mu, nu))]"
                                            ("F" "HH" "f" "H"))
                                           (assert)
                                           (split -1)
                                           (("1"
                                             (flatten)
                                             (lemma
                                              "nn_integrable_is_nn_integrable"
                                              ("f" "H"))
                                             (replace -14)
                                             (propax))
                                            ("2"
                                             (hide-all-but (-1 1))
                                             (expand "o ")
                                             (assert)
                                             (expand "bounded?")
                                             (skosimp)
                                             (split)
                                             (("1"
                                               (expand "bounded_above?")
                                               (inst + "c!1")
                                               (skolem + "n!1")
                                               (inst - "n!1")
                                               (assert))
                                              ("2"
                                               (expand "bounded_below?")
                                               (inst + "-c!1")
                                               (skolem + "n!1")
                                               (inst - "n!1")
                                               (assert))))))
                                          ("2"
                                           (hide 2)
                                           (case-replace
                                            "integral o HH=isf_integral o HH")
                                           (("1"
                                             (hide -1)
                                             (expand "bounded?")
                                             (inst + "integral(G)")
                                             (("1"
                                               (skolem + "n!1")
                                               (expand "o" 1)
                                               (expand "abs" 1)
                                               (inst-cp -6 "n!1")
                                               (lemma
                                                "isf_integral_pos"
                                                ("i" "HH(n!1)"))
                                               (("1"
                                                 (inst -6 "n!1" "_")
                                                 (replace -6)
                                                 (assert)
                                                 (hide -1)
                                                 (rewrite
                                                  "isf_fubini_tonelli_4")
                                                 (lemma
                                                  "integral_ae_le"
                                                  ("f1"
                                                   "GG(n!1)"
                                                   "f2"
                                                   "G"))
                                                 (("1"
                                                   (split)
                                                   (("1"
                                                     (expand "GG" -1)
                                                     (propax))
                                                    ("2"
                                                     (hide 2)
                                                     (hide-all-but
                                                      (-1 -2 -12 1))
                                                     (expand "ae_le?")
                                                     (expand
                                                      "pointwise_ae?")
                                                     (expand "ae?")
                                                     (expand "fullset")
                                                     (expand "ae_in?")
                                                     (inst + "emptyset")
                                                     (skolem + "y!1")
                                                     (expand "member")
                                                     (flatten)
                                                     (expand
                                                      "pointwise_converges_upto?")
                                                     (expand
                                                      "pointwise_convergence?")
                                                     (expand
                                                      "pointwise_increasing?")
                                                     (inst - "y!1")
                                                     (inst - "y!1")
                                                     (inst - "y!1")
                                                     (hide 1)
                                                     (rewrite
                                                      "metric_convergence_def")
                                                     (expand
                                                      "metric_converges_to")
                                                     (expand
                                                      "increasing?")
                                                     (inst
                                                      -
                                                      "GG(n!1)(y!1)-G(y!1)")
                                                     (("1"
                                                       (skosimp)
                                                       (inst - "n!1+n!2")
                                                       (expand "ball")
                                                       (assert)
                                                       (inst
                                                        -
                                                        "n!1"
                                                        "n!1+n!2")
                                                       (assert))
                                                      ("2" (assert))))))
                                                  ("2" (inst - "n!1"))))
                                                ("2" (propax))))
                                              ("2"
                                               (lemma
                                                "integral_nonneg"
                                                ("f" "G"))
                                               (assert))))
                                            ("2"
                                             (hide 2)
                                             (apply-extensionality
                                              :hide?
                                              t)
                                             (expand "o ")
                                             (inst -6 "x!1")
                                             (rewrite "isf_integral"))))
                                          ("3"
                                           (skolem + "n!1")
                                           (inst -6 "n!1")
                                           (lemma
                                            "isf_is_integrable[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu, nu))]")
                                           (inst - "HH(n!1)"))))
                                        ("2"
                                         (expand
                                          "pointwise_converges_upto?")
                                         (assert)
                                         (flatten)
                                         (hide 2)
                                         (expand
                                          "pointwise_convergence?")
                                         (skolem + "y!1")
                                         (inst -13 "y!1")
                                         (inst -14 "y!1")
                                         (replace -13 1 rl)
                                         (expand "GG" 1)
                                         (lemma
                                          "monotone_convergence_scaf[T1,S1,to_measure(mu)]"
                                          ("f"
                                           "LAMBDA (x: T1): H(x, y!1)"
                                           "F"
                                           "lambda (n:nat): lambda (x:T1): HH(n)(x, y!1)"))
                                         (("1"
                                           (split -1)
                                           (("1"
                                             (flatten)
                                             (expand "converges_upto?")
                                             (flatten)
                                             (expand "o" -2)
                                             (case-replace
                                              "(LAMBDA (x_1: nat):
                                                                   integral(LAMBDA (x: T1): HH(x_1)(x, y!1)))=LAMBDA (n:nat): isf_integral(LAMBDA (x: T1): HH(n)(x, y!1))")
                                             (("1"
                                               (apply-extensionality
                                                :hide?
                                                t)
                                               (("1"
                                                 (inst -8 "x!1")
                                                 (lemma
                                                  "isf_y_section"
                                                  ("y"
                                                   "y!1"
                                                   "i"
                                                   "HH(x!1)"))
                                                 (("1"
                                                   (rewrite
                                                    "isf_integral"
                                                    1))
                                                  ("2" (propax))))
                                                ("2"
                                                 (skosimp)
                                                 (inst -8 "n!1")
                                                 (rewrite
                                                  "isf_y_section"))
                                                ("3"
                                                 (skolem + "n!1")
                                                 (inst -8 "n!1")
                                                 (lemma
                                                  "isf_y_section"
                                                  ("y"
                                                   "y!1"
                                                   "i"
                                                   "HH(n!1)"))
                                                 (("1"
                                                   (lemma
                                                    "isf_is_integrable"
                                                    ("x"
                                                     "LAMBDA (x: T1): HH(n!1)(x, y!1)"))
                                                   (("1" (propax))
                                                    ("2" (propax))))
                                                  ("2" (propax))))))
                                              ("2"
                                               (skosimp)
                                               (inst -8 "n!1")
                                               (rewrite
                                                "isf_y_section"))))
                                            ("2"
                                             (hide 2)
                                             (expand
                                              "pointwise_converges_upto?")
                                             (split)
                                             (("1"
                                               (expand
                                                "pointwise_convergence?")
                                               (skosimp)
                                               (inst -7 "(x!1,y!1)"))
                                              ("2"
                                               (hide-all-but (-8 1))
                                               (expand
                                                "pointwise_increasing?")
                                               (skosimp)
                                               (inst - "(x!1,y!1)"))))
                                            ("3"
                                             (hide 2)
                                             (expand "bounded?")
                                             (split)
                                             (("1"
                                               (expand "o")
                                               (expand "bounded_above?")
                                               (inst + "G(y!1)")
                                               (skolem + "n!1")
                                               (lemma
                                                "integral_ae_le[T1,S1,to_measure(mu)]"
                                                ("f1"
                                                 "LAMBDA (x: T1): HH(n!1)(x, y!1)"
                                                 "f2"
                                                 "LAMBDA (x: T1): H(x, y!1)"))
                                               (("1"
                                                 (assert)
                                                 (hide 2)
                                                 (expand "ae_le?")
                                                 (expand "pointwise_ae?")
                                                 (expand "ae?")
                                                 (expand "fullset")
                                                 (expand "ae_in?")
                                                 (inst + "emptyset")
                                                 (skosimp)
                                                 (expand "member")
                                                 (hide-all-but (-7 -8 2))
                                                 (expand
                                                  "pointwise_increasing?")
                                                 (inst - "(x!1,y!1)")
                                                 (inst - "(x!1,y!1)")
                                                 (expand "increasing?")
                                                 (rewrite
                                                  "metric_convergence_def")
                                                 (expand
                                                  "metric_converges_to")
                                                 (inst
                                                  -
                                                  "HH(n!1)(x!1, y!1)-H(x!1, y!1)")
                                                 (("1"
                                                   (skosimp)
                                                   (inst - "n!1+n!2")
                                                   (assert)
                                                   (expand "ball")
                                                   (inst
                                                    -
                                                    "n!1"
                                                    "n!1+n!2")
                                                   (assert))
                                                  ("2" (assert))))
                                                ("2" (propax))
                                                ("3"
                                                 (inst -5 "n!1")
                                                 (lemma
                                                  "isf_y_section"
                                                  ("y"
                                                   "y!1"
                                                   "i"
                                                   "HH(n!1)"))
                                                 (("1"
                                                   (lemma
                                                    "isf_is_integrable[T1, S1, to_measure(mu)]")
                                                   (inst
                                                    -
                                                    "LAMBDA (x: T1): HH(n!1)(x, y!1)"))
                                                  ("2" (propax))))))
                                              ("2"
                                               (expand "bounded_below?")
                                               (inst + "0")
                                               (skolem + "n!1")
                                               (expand "o ")
                                               (inst -5 "n!1")
                                               (lemma
                                                "isf_y_section"
                                                ("y"
                                                 "y!1"
                                                 "i"
                                                 "HH(n!1)"))
                                               (("1"
                                                 (rewrite
                                                  "isf_integral"
                                                  1)
                                                 (lemma
                                                  "isf_integral_pos[T1,S1,to_measure(mu)]"
                                                  ("i"
                                                   "LAMBDA (x: T1): HH(n!1)(x, y!1)"))
                                                 (("1"
                                                   (assert)
                                                   (skosimp)
                                                   (inst
                                                    -5
                                                    "n!1"
                                                    "(x!1,y!1)"))
                                                  ("2" (propax))))
                                                ("2" (propax))))))))
                                          ("2"
                                           (skosimp)
                                           (inst -5 "n!1")
                                           (lemma
                                            "isf_y_section"
                                            ("i" "HH(n!1)" "y" "y!1"))
                                           (("1"
                                             (lemma
                                              "isf_is_integrable"
                                              ("x"
                                               "LAMBDA (x: T1): HH(n!1)(x, y!1)"))
                                             (("1" (propax))
                                              ("2" (propax))))
                                            ("2" (propax))))))))
                                      ("2"
                                       (hide 2 -2 -1)
                                       (expand "increasing_nn_simple?")
                                       (flatten)
                                       (expand "pointwise_increasing?")
                                       (skolem + "y!1")
                                       (expand "increasing?")
                                       (skolem + ("i!1" "j!1"))
                                       (flatten)
                                       (expand "GG")
                                       (lemma
                                        "isf_integral_le"
                                        ("i1"
                                         "LAMBDA (x: T1): HH(i!1)(x, y!1)"
                                         "i2"
                                         "LAMBDA (x: T1): HH(j!1)(x, y!1)"))
                                       (("1"
                                         (assert)
                                         (hide 2)
                                         (skosimp)
                                         (inst -5 "(x!1, y!1)")
                                         (inst -5 "i!1" "j!1")
                                         (assert))
                                        ("2"
                                         (inst -3 "j!1")
                                         (rewrite "isf_y_section"))
                                        ("3"
                                         (inst -3 "i!1")
                                         (rewrite "isf_y_section"))))))
                                    ("2"
                                     (hide -1 2)
                                     (skosimp)
                                     (expand "GG")
                                     (inst -2 "n!1")
                                     (rewrite "isf_integral_y")
                                     (case-replace
                                      "(LAMBDA (x: T1, y: T2): HH(n!1)(x, y))=HH(n!1)")
                                     (apply-extensionality :hide? t))))
                                  ("2"
                                   (skosimp)
                                   (rewrite "isf_y_section")
                                   (inst -2 "n!1"))))
                                ("2"
                                 (skosimp)
                                 (expand "increasing_nn_simple?")
                                 (expand "nn_simple?")
                                 (flatten)
                                 (inst -2 "n!1")
                                 (flatten)
                                 (inst -2 "z!1")
                                 (assert))))
                              ("2"
                               (expand "increasing_nn_simple?")
                               (flatten)
                               (skosimp)
                               (inst - "n!1")
                               (expand "nn_simple?")
                               (flatten)
                               (expand "isf?")
                               (assert)
                               (expand "mu_fin?")
                               (expand "to_measure")
                               (propax))))
                            ("2" (expand "nn_measurable?") (flatten))))
                          ("2" (skosimp) (inst - "x!1") (assert))))
                        ("2" (propax))))
                      ("2"
                       (hide 2)
                       (typepred "h!1")
                       (expand "nn_measurable?")
                       (flatten)
                       (split 1)
                       (("1"
                         (expand "H")
                         (rewrite "prod_measurable")
                         (lemma
                          "phi_is_simple[[T1, T2], sigma_times(S1, S2)]"
                          ("X" "NN"))
                         (expand "simple?")
                         (propax))
                        ("2"
                         (skosimp)
                         (inst - "x!1")
                         (assert)
                         (expand "H")
                         (expand "*")
                         (expand "phi")
                         (lift-if 1)
                         (assert))))))
                    ("3" (propax))))
                  ("2"
                   (skosimp)
                   (expand "H")
                   (expand "*")
                   (typepred "h!1")
                   (expand "nn_measurable?")
                   (flatten)
                   (inst - "z!1")
                   (expand "phi")
                   (lift-if 1)
                   (assert))))
                ("2"
                 (hide 2)
                 (skosimp)
                 (inst - "y!1")
                 (inst - "y!1")
                 (replace -2 1 rl)
                 (lemma "integral_nonneg"
                  ("f" "LAMBDA (x: T1): H(x, y!1)"))
                 (("1"
                   (assert)
                   (hide 2)
                   (skosimp)
                   (expand "H")
                   (expand "*")
                   (expand "phi")
                   (expand "member")
                   (expand "NN")
                   (expand "cross_product")
                   (expand "fullset")
                   (expand "complement")
                   (expand "member")
                   (lift-if 1)
                   (assert)
                   (prop)
                   (typepred "h!1")
                   (expand "nn_measurable?")
                   (flatten)
                   (inst - "(x!1,y!1)")
                   (assert))
                  ("2" (propax))))))
              ("2"
               (typepred "g!1")
               (expand "G")
               (rewrite "indefinite_integrable"))))
            ("2"
             (skosimp)
             (inst - "y!1")
             (inst -9 "y!1")
             (hide -2 -3 2)
             (expand "H")
             (expand "G")
             (expand "*")
             (expand "phi")
             (expand "member")
             (expand "NN")
             (expand "cross_product")
             (expand "fullset")
             (expand "N")
             (expand "complement")
             (expand "member")
             (case-replace "N!1(y!1)")
             (("1" (rewrite "integral_zero") (assert)) ("2" (assert))))
            ("3" (propax))))
          ("2"
           (hide -1 -2 2)
           (skosimp)
           (inst -6 "y!1")
           (expand "H")
           (expand "*")
           (expand "phi")
           (expand "member")
           (expand "NN")
           (expand "cross_product")
           (expand "fullset")
           (expand "complement")
           (expand "member")
           (case-replace "N!1(y!1)")
           (("1" (rewrite "integrable_zero")) ("2" (assert))))))
        ("2" (propax))))
      ("2"
       (typepred "N!1")
       (expand "null_set?")
       (expand "measurable_set?")
       (flatten))))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_fubini_tonelli
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skolem + "f!1")
   (typepred "f!1")
   (lemma
    "nn_integrable_is_integrable[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu, nu))]")
   (inst - "f!1")
   (lemma "finite_fubini_tonelli_1" ("h" "f!1"))
   (("1"
     (assert)
     (name "DRL1" "integral1(f!1)")
     (replace -1)
     (expand "integral1")
     (expand "member")
     (lemma "null_integral1_def"
      ("h1"
       "f!1"
       "N1"
       "null_integrable1(f!1)`1"
       "f"
       "null_integrable1(f!1)`2"))
     (expand "member")
     (case-replace
      "(null_integrable1(f!1)`1, null_integrable1(f!1)`2) =
               null_integrable1(f!1)")
     (("1"
       (hide -1)
       (name-replace "NN" "null_integrable1(f!1)`1")
       (name-replace "FF" "null_integrable1(f!1)`2")
       (case-replace "DRL1=*[T1](phi(complement(NN)),FF)")
       (("1"
         (lemma "cross_product_is_sigma_times"
          ("X" "complement(NN)" "Y" "fullset[T2]"))
         (("1"
           (lemma
            "indefinite_integrable[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu, nu))]"
            ("f" "f!1" "E" "cross_product(complement(NN),fullset[T2])"))
           (("1"
             (lemma
              "integral_ae_eq[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu, nu))]"
              ("f"
               "f!1"
               "h"
               "phi(cross_product(complement(NN),fullset[T2])) * f!1"))
             (("1"
               (replace -2)
               (name "f!2"
                     "phi(cross_product(complement(NN), fullset[T2])) * f!1")
               (replace -1)
               (case-replace "ae_eq?(f!1, f!2)")
               (("1"
                 (replace -3)
                 (hide -3)
                 (case "FORALL (x: T1):integrable?(LAMBDA (y: T2): f!2(x, y))")
                 (("1"
                   (name "F2" "phi(complement(NN)) * FF")
                   (case "FORALL (x: T1):integral(LAMBDA (y: T2): f!2(x, y))=F2(x)")
                   (("1"
                     (case "forall (z:[T1,T2]): f!2(z)>=0")
                     (("1"
                       (hide -5 -6 -9 -10 -11 -12 -13 -14)
                       (case "forall (x:T1): F2(x) >= 0")
                       (("1"
                         (case "integrable?[T1,S1,to_measure(mu)](F2)")
                         (("1"
                           (lemma
                            "nn_integrable_is_nn_integrable[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu, nu))]"
                            ("f" "f!2"))
                           (replace -4)
                           (rewrite "integral_nn")
                           (lemma
                            "nn_integral_def[[T1, T2], sigma_times(S1, S2),
                                   to_measure(fm_times(mu, nu))]"
                            ("f" "f!2"))
                           (skolem - "HH")
                           (typepred "HH")
                           (flatten)
                           (name-replace "LHS" "nn_integral(f!2)")
                           (case "forall (n:nat): isf?(HH(n))")
                           (("1"
                             (case "forall (n:nat,z:[T1,T2]): HH(n)(z)>=0")
                             (("1"
                               (case "isf_integral o HH = integral o lambda (n:nat): lambda (x:T1): isf_integral(lambda (y:T2): HH(n)(x,y))")
                               (("1"
                                 (replace -12)
                                 (hide -15 -12)
                                 (replace -1)
                                 (replace -1 * rl)
                                 (expand "increasing_nn_isf?")
                                 (name
                                  "FF2"
                                  "lambda (n:nat): lambda (x: T1): isf_integral(LAMBDA (y: T2): HH(n)(x, y))")
                                 (case "pointwise_increasing?(FF2)")
                                 (("1"
                                   (lemma
                                    "monotone_convergence[T1,S1,to_measure(mu)]"
                                    ("F"
                                     "LAMBDA (n: nat):
                                                            LAMBDA (x: T1):
                                                              isf_integral(LAMBDA (y: T2):HH(n)(x, y))"))
                                   (split -1)
                                   (("1"
                                     (flatten)
                                     (hide -1)
                                     (split -1)
                                     (("1"
                                       (skosimp)
                                       (inst - "f!3")
                                       (assert)
                                       (replace -4)
                                       (expand "converges_upto?")
                                       (flatten)
                                       (lemma
                                        "hausdorff_convergence.unique_limit"
                                        ("u"
                                         "isf_integral o HH"
                                         "l1"
                                         "LHS"
                                         "l2"
                                         "integral(f!3)"))
                                       (assert)
                                       (replace -1)
                                       (lemma
                                        "integral_ae_eq[T1,S1,to_measure(mu)]"
                                        ("f" "F2" "h" "f!3"))
                                       (assert)
                                       (hide 2 -1)
                                       (expand "ae_eq?")
                                       (expand "restrict")
                                       (expand "ae_convergence?")
                                       (expand "pointwise_ae?")
                                       (expand "ae?")
                                       (expand "fullset")
                                       (expand "ae_convergence_in?")
                                       (expand "ae_in?")
                                       (skosimp)
                                       (inst + "E!1")
                                       (skosimp)
                                       (inst - "x!1")
                                       (assert)
                                       (lemma
                                        "monotone_convergence_scaf[T2,S2,to_measure(nu)]"
                                        ("f"
                                         "LAMBDA (y: T2): f!2(x!1, y)"
                                         "F"
                                         "lambda (n:nat): lambda (y:T2): HH(n)(x!1,y)"))
                                       (("1"
                                         (split -1)
                                         (("1"
                                           (flatten)
                                           (expand "converges_upto?")
                                           (flatten)
                                           (inst -19 "x!1")
                                           (replace -19)
                                           (expand "o" -2)
                                           (case-replace
                                            "(LAMBDA (x: nat):
                                                                 integral(LAMBDA (y: T2): HH(x)(x!1, y)))=LAMBDA (n:nat): FF2(n)(x!1)")
                                           (("1"
                                             (hide -1)
                                             (hide-all-but (2 -4 -2))
                                             (lemma
                                              "hausdorff_convergence.unique_limit"
                                              ("u"
                                               "LAMBDA (n: nat): FF2(n)(x!1)"
                                               "l1"
                                               " F2(x!1)"
                                               "l2"
                                               "f!3(x!1)"))
                                             (assert))
                                            ("2"
                                             (apply-extensionality
                                              :hide?
                                              t)
                                             (("1"
                                               (expand "FF2")
                                               (hide-all-but (-11 1))
                                               (inst - "x!2")
                                               (lemma
                                                "isf_x_section"
                                                ("x"
                                                 "x!1"
                                                 "i"
                                                 "HH(x!2)"))
                                               (rewrite "isf_integral"))
                                              ("2"
                                               (skosimp)
                                               (inst -11 "x!2")
                                               (lemma
                                                "isf_x_section"
                                                ("x"
                                                 "x!1"
                                                 "i"
                                                 "HH(x!2)"))
                                               (lemma
                                                "isf_is_integrable[T2, S2, to_measure(nu)]")
                                               (inst
                                                -
                                                "LAMBDA (y: T2): HH(x!2)(x!1, y)"))))))
                                          ("2"
                                           (expand
                                            "pointwise_converges_upto?")
                                           (split 1)
                                           (("1"
                                             (expand
                                              "pointwise_convergence?")
                                             (skolem + "y!1")
                                             (inst -10 "(x!1, y!1)"))
                                            ("2"
                                             (expand
                                              "pointwise_increasing?")
                                             (skolem + "y!1")
                                             (inst -9 "(x!1, y!1)"))))
                                          ("3"
                                           (case-replace
                                            "integral o (LAMBDA (n: nat): LAMBDA (y: T2): HH(n)(x!1, y))=LAMBDA (n: nat):FF2(n)(x!1)")
                                           (("1"
                                             (hide-all-but
                                              (-2 -5 1 -8 -9))
                                             (expand "bounded?")
                                             (split)
                                             (("1"
                                               (expand "bounded_above?")
                                               (inst + "f!3(x!1)")
                                               (skolem + "n!1")
                                               (expand
                                                "pointwise_increasing?")
                                               (inst - "x!1")
                                               (rewrite
                                                "metric_convergence_def")
                                               (expand
                                                "metric_converges_to")
                                               (inst
                                                -
                                                "FF2(n!1)(x!1)-f!3(x!1)")
                                               (("1"
                                                 (skosimp)
                                                 (inst - "n!1+n!2")
                                                 (assert)
                                                 (expand "ball")
                                                 (expand "increasing?")
                                                 (inst - "n!1" "n!1+n!2")
                                                 (assert))
                                                ("2" (assert))))
                                              ("2"
                                               (expand "bounded_below?")
                                               (inst + "0")
                                               (skolem + "n!1")
                                               (expand "FF2")
                                               (inst - "n!1")
                                               (lemma
                                                "isf_x_section"
                                                ("x"
                                                 "x!1"
                                                 "i"
                                                 "HH(n!1)"))
                                               (lemma
                                                "isf_integral_pos"
                                                ("i"
                                                 "LAMBDA (y: T2): HH(n!1)(x!1, y)"))
                                               (("1"
                                                 (assert)
                                                 (skolem + "y!1")
                                                 (inst
                                                  -
                                                  "n!1"
                                                  "(x!1,y!1)"))
                                                ("2" (propax))))))
                                            ("2"
                                             (apply-extensionality
                                              :hide?
                                              t)
                                             (("1"
                                               (expand "o")
                                               (expand "FF2")
                                               (hide-all-but (-8 1))
                                               (inst - "x!2")
                                               (lemma
                                                "isf_x_section"
                                                ("x"
                                                 "x!1"
                                                 "i"
                                                 "HH(x!2)"))
                                               (rewrite "isf_integral"))
                                              ("2"
                                               (skosimp)
                                               (inst -8 "n!1")
                                               (lemma
                                                "isf_x_section"
                                                ("x"
                                                 "x!1"
                                                 "i"
                                                 "HH(n!1)"))
                                               (lemma
                                                "isf_is_integrable[T2, S2, to_measure(nu)]")
                                               (inst
                                                -
                                                "LAMBDA (y: T2): HH(n!1)(x!1, y)"))))))))
                                        ("2"
                                         (skosimp)
                                         (inst -8 "n!1")
                                         (lemma
                                          "isf_x_section"
                                          ("i" "HH(n!1)" "x" "x!1"))
                                         (lemma
                                          "isf_is_integrable[T2, S2, to_measure(nu)]")
                                         (inst
                                          -
                                          "LAMBDA (y: T2): HH(n!1)(x!1, y)"))))
                                      ("2"
                                       (replace -4 1 rl)
                                       (hide 2 -1 -4 -3 -2)
                                       (expand "bounded?")
                                       (split)
                                       (("1"
                                         (expand "bounded_above?")
                                         (inst + "LHS")
                                         (skolem + "n!1")
                                         (expand "o" 1)
                                         (hide-all-but (-2 -1 -3 -5 1))
                                         (expand "o ")
                                         (rewrite
                                          "metric_convergence_def")
                                         (expand "metric_converges_to")
                                         (inst
                                          -4
                                          "isf_integral(HH(n!1))-LHS")
                                         (("1"
                                           (skosimp)
                                           (inst -4 "n!1+n!2")
                                           (assert)
                                           (expand "ball")
                                           (inst-cp - "n!1")
                                           (inst - "n!1+n!2")
                                           (lemma
                                            "isf_integral_le"
                                            ("i1"
                                             "HH(n!1)"
                                             "i2"
                                             "HH(n!1 + n!2)"))
                                           (assert)
                                           (skosimp)
                                           (hide-all-but (-4 1))
                                           (expand
                                            "pointwise_increasing?")
                                           (inst - "x!1")
                                           (expand "increasing?")
                                           (inst - "n!1" "n!1+n!2")
                                           (assert))
                                          ("2" (assert))))
                                        ("2"
                                         (expand "bounded_below?")
                                         (inst + "0")
                                         (skolem + "n!1")
                                         (expand "o ")
                                         (lemma
                                          "isf_integral_pos"
                                          ("i" "HH(n!1)"))
                                         (split -1)
                                         (("1" (assert))
                                          ("2"
                                           (skosimp)
                                           (inst - "n!1" "x!1"))))))))
                                    ("2"
                                     (replace -2)
                                     (hide-all-but (-1 1))
                                     (expand "ae_increasing?")
                                     (expand "pointwise_increasing?")
                                     (expand "increasing?")
                                     (inst + "emptyset")
                                     (skosimp)
                                     (inst - "x!1"))))
                                  ("2"
                                   (hide-all-but (1 -4 -5))
                                   (expand "pointwise_increasing?")
                                   (skosimp)
                                   (expand "increasing?")
                                   (skolem + ("i!1" "j!1"))
                                   (flatten)
                                   (inst-cp - "i!1")
                                   (inst - "j!1")
                                   (expand "FF2")
                                   (lemma
                                    "isf_x_section"
                                    ("x" "x!1" "i" "HH(i!1)"))
                                   (lemma
                                    "isf_x_section"
                                    ("x" "x!1" "i" "HH(j!1)"))
                                   (lemma
                                    "isf_integral_le"
                                    ("i1"
                                     "LAMBDA (y: T2): HH(i!1)(x!1, y)"
                                     "i2"
                                     "LAMBDA (y: T2): HH(j!1)(x!1, y)"))
                                   (("1"
                                     (assert)
                                     (skolem + "y!1")
                                     (inst -6 "(x!1,y!1)")
                                     (inst -6 "i!1" "j!1")
                                     (assert))
                                    ("2" (propax))
                                    ("3" (propax))))))
                                ("2"
                                 (hide 2)
                                 (apply-extensionality :hide? t)
                                 (("1"
                                   (expand "o")
                                   (inst -2 "x!1")
                                   (rewrite "isf_fubini_tonelli_3"))
                                  ("2"
                                   (skosimp)
                                   (inst -2 "n!1")
                                   (lemma
                                    "isf_integral_x"
                                    ("i" "HH(n!1)"))
                                   (propax))
                                  ("3"
                                   (skosimp)
                                   (inst -2 "n!1")
                                   (rewrite "isf_x_section"))))
                                ("3"
                                 (skosimp)
                                 (inst -2 "n!1")
                                 (lemma "isf_integral_x" ("i" "HH(n!1)"))
                                 (propax))
                                ("4"
                                 (skosimp)
                                 (inst -2 "n!1")
                                 (rewrite "isf_x_section"))))
                              ("2"
                               (skosimp)
                               (typepred "HH(n!1)")
                               (expand "nn_isf?")
                               (inst - "z!1"))))
                            ("2"
                             (skosimp)
                             (typepred "HH(n!1)")
                             (propax))))
                          ("2"
                           (typepred "FF")
                           (expand "F2")
                           (rewrite "indefinite_integrable" 1))))
                        ("2"
                         (skosimp)
                         (inst -2 "x!1")
                         (replace -2 1 rl)
                         (lemma "integral_nonneg"
                          ("f" "LAMBDA (y: T2): f!2(x!1, y)"))
                         (("1"
                           (assert)
                           (skolem + "y!1")
                           (inst - "(x!1,y!1)"))
                          ("2" (inst -4 "x!1"))))))
                      ("2"
                       (skosimp)
                       (assert)
                       (expand "f!2" 1)
                       (expand "*" 1)
                       (expand "phi")
                       (lift-if 1)
                       (assert)
                       (lemma "nn_integrable_is_nonneg" ("f" "f!1"))
                       (inst - "z!1")
                       (assert))))
                    ("2"
                     (skosimp)
                     (inst -8 "x!1")
                     (hide-all-but (1 -8))
                     (expand "f!2")
                     (expand "F2")
                     (expand "*")
                     (expand "fullset")
                     (expand "complement")
                     (expand "cross_product")
                     (expand "phi")
                     (expand "member")
                     (case-replace "NN(x!1)")
                     (("1" (rewrite "integral_zero") (assert))
                      ("2" (assert))))
                    ("3" (propax))))
                  ("2"
                   (hide-all-but (-6 1))
                   (skosimp)
                   (inst - "x!1")
                   (expand "f!2")
                   (expand "fullset")
                   (expand "*")
                   (expand "cross_product")
                   (expand "phi")
                   (expand "complement")
                   (expand "member")
                   (case-replace "NN(x!1)")
                   (("1" (rewrite "integrable_zero")) ("2" (assert))))))
                ("2"
                 (hide -1 -2 2 -6 -7 -3)
                 (expand "f!2")
                 (expand "ae_eq?")
                 (expand "restrict")
                 (expand "pointwise_ae?")
                 (expand "ae?")
                 (expand "fullset" 1 2)
                 (expand "ae_in?")
                 (expand "member")
                 (typepred "NN")
                 (inst + "cross_product(NN, fullset[T2])")
                 (("1"
                   (skolem + "z!1")
                   (expand "fullset")
                   (expand "cross_product")
                   (expand "complement")
                   (expand "phi")
                   (expand "member")
                   (expand "*")
                   (assert)
                   (flatten)
                   (assert))
                  ("2"
                   (expand "negligible_set?")
                   (inst + "cross_product[T1, T2](NN, fullset[T2])")
                   (split)
                   (("1"
                     (hide-all-but (-1 1))
                     (expand "null_set?")
                     (expand "measurable_set?")
                     (expand "mu_fin?")
                     (expand "mu")
                     (expand "to_measure")
                     (flatten)
                     (rewrite "cross_product_is_sigma_times")
                     (expand "fm_times")
                     (lemma "rectangle_measure1"
                      ("M"
                       "cross_product[T1, T2](NN, fullset[T2])"
                       "X"
                       "NN"
                       "Y"
                       "fullset[T2]"
                       "mu"
                       "mu"
                       "nu"
                       "nu"))
                     (("1" (assert))
                      ("2" (rewrite "cross_product_is_sigma_times"))))
                    ("2" (expand "subset?") (skosimp))))))))
              ("2"
               (lemma
                "integrable_is_measurable[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu, nu))]")
               (inst -
                "phi(cross_product(complement(NN), fullset[T2])) * f!1"))))
            ("2" (expand "measurable_set?") (propax))))
          ("2"
           (lemma "sigma_algebra_complement[T1,S1]" ("x" "NN"))
           (("1" (expand "member") (propax))
            ("2"
             (typepred "NN")
             (expand "null_set?")
             (flatten)
             (expand "measurable_set?")
             (propax))))))
        ("2"
         (replace -2 1 rl)
         (apply-extensionality :hide? t)
         (expand "*")
         (expand "complement")
         (expand "phi")
         (expand "member")
         (lift-if 1)
         (assert))))
      ("2" (decompose-equality))))
    ("2"
     (hide 2)
     (expand "nn_measurable?")
     (lemma "nn_integrable_is_nonneg" ("f" "f!1"))
     (lemma
      "integrable_is_measurable[[T1,T2],sigma_times(S1,S2),to_measure(fm_times(mu,nu))]")
     (inst - "f!1")
     (assert)
     (skeep)
     (inst? -2)
     (assert))))


proof_type: f_proof
decl_type: formula
library: measure_integration
theory: finite_fubini_tonelli
signature: nil
run_date: Unknown date
run_time: ----
status: proved-incomplete
description: nil
script:
  (""
   (skolem + "f!1")
   (typepred "f!1")
   (use "nn_integrable_is_integrable[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu, nu))]")
   (lemma "finite_fubini_tonelli_2" ("h" "f!1"))
   (("1"
     (assert)
     (name "DRL1" "integral2(f!1)")
     (replace -1)
     (expand "integral2")
     (expand "member")
     (lemma "null_integral2_def"
      ("h2"
       "f!1"
       "N2"
       "null_integrable2(f!1)`1"
       "g"
       "null_integrable2(f!1)`2"))
     (case-replace
      "(null_integrable2(f!1)`1, null_integrable2(f!1)`2) =
               null_integrable2(f!1)")
     (("1"
       (name-replace "NN" "null_integrable2(f!1)`1")
       (name-replace "GG" "null_integrable2(f!1)`2")
       (expand "member")
       (case-replace "DRL1=phi(complement(NN))*GG")
       (("1"
         (hide -1 -2 -4)
         (case "sigma_times(S1,S2)(cross_product(fullset[T1], complement(NN)))")
         (("1"
           (lemma
            "indefinite_integrable[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu, nu))]"
            ("f" "f!1" "E" "cross_product(fullset[T1], complement(NN))"))
           (("1"
             (lemma
              "integral_ae_eq[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu, nu))]"
              ("f"
               "f!1"
               "h"
               "phi(cross_product(fullset[T1], complement(NN))) * f!1"))
             (("1"
               (replace -2)
               (name "f!2"
                     "phi(cross_product(fullset[T1], complement(NN))) * f!1")
               (case "forall (x:T1,y:T2): if NN(y) then f!2(x,y) = 0 else f!2(x,y)=f!1(x,y) endif")
               (("1"
                 (replace -2)
                 (case-replace "ae_eq?(f!1, f!2)")
                 (("1"
                   (replace -4)
                   (hide -4 -3)
                   (case "forall (y:T2): integrable?(LAMBDA (x: T1): f!2(x, y))")
                   (("1"
                     (name "G2" "phi(complement(NN)) * GG")
                     (replace -1)
                     (case "(lambda (y:T2): integral(LAMBDA (x: T1): f!2(x, y))) = G2")
                     (("1"
                       (hide -2 -8)
                       (case "forall (z:[[T1,T2]]): f!2(z)>=0")
                       (("1"
                         (case "forall (y:T2): G2(y) >= 0")
                         (("1"
                           (case "integrable?[T2,S2,to_measure(nu)](G2)")
                           (("1"
                             (hide -6 -7 -8 -9 -10 -11 -12)
                             (lemma
                              "nn_integrable_is_nn_integrable[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu, nu))]"
                              ("f" "f!2"))
                             (replace -4)
                             (rewrite "integral_nn")
                             (lemma
                              "nn_integral_def[[T1, T2], sigma_times(S1, S2),
                                     to_measure(fm_times(mu, nu))]"
                              ("f" "f!2"))
                             (skolem - "FF")
                             (flatten)
                             (typepred "FF")
                             (name-replace "LHS" "nn_integral(f!2)")
                             (case-replace
                              "isf_integral o FF = integral o lambda (n:nat): lambda (y:T2): isf_integral(lambda (x:T1): FF(n)(x,y))")
                             (("1"
                               (hide -1)
                               (lemma
                                "monotone_convergence[T2,S2,to_measure(nu)]"
                                ("F"
                                 "LAMBDA (n: nat):
                                                        LAMBDA (y: T2):
                                                          isf_integral(LAMBDA (x: T1): FF(n)(x, y))"))
                               (("1"
                                 (split -1)
                                 (("1"
                                   (flatten)
                                   (hide -1)
                                   (split -1)
                                   (("1"
                                     (skosimp)
                                     (inst -2 "f!3")
                                     (assert)
                                     (name-replace
                                      "HH"
                                      "LAMBDA (n: nat):
                                                              LAMBDA (y: T2):
                                                                isf_integral(LAMBDA (x: T1): FF(n)(x, y))")
                                     (lemma
                                      "integral_ae_eq[T2,S2,to_measure(nu)]"
                                      ("f" "G2" "h" "f!3"))
                                     (split)
                                     (("1"
                                       (flatten)
                                       (replace -2)
                                       (expand "converges_upto?")
                                       (flatten)
                                       (name-replace
                                        "RHS"
                                        "integral(f!3)")
                                       (hide-all-but (-4 -8 1))
                                       (use
                                        "hausdorff_convergence.unique_limit")
                                       (assert))
                                      ("2"
                                       (hide 2 -2 -5)
                                       (expand "ae_convergence?")
                                       (expand "ae_eq?")
                                       (expand "restrict")
                                       (expand "pointwise_ae?")
                                       (expand "ae?")
                                       (expand "fullset")
                                       (expand "ae_convergence_in?")
                                       (expand "ae_in?")
                                       (skosimp)
                                       (expand "member")
                                       (inst + "E!1")
                                       (skolem + "y!1")
                                       (inst - "y!1")
                                       (flatten)
                                       (assert)
                                       (replace -8 2 rl)
                                       (assert)
                                       (expand "HH")
                                       (name-replace "RHS2" "f!3(y!1)")
                                       (case-replace
                                        "integral(LAMBDA (x: T1): f!2(x, y!1))=G2(y!1)")
                                       (("1"
                                         (hide -1)
                                         (name
                                          "F2"
                                          "lambda (n:nat): LAMBDA (x: T1): FF(n)(x, y!1)")
                                         (case-replace
                                          "(LAMBDA (n:nat): isf_integral(LAMBDA (x: T1): FF(n)(x, y!1)))=integral o F2")
                                         (("1"
                                           (hide -1)
                                           (case
                                            "forall (i,j:nat): forall (x:T1): i <= j => F2(i)(x) <= F2(j)(x)")
                                           (("1"
                                             (lemma
                                              "monotone_convergence_scaf[T1,S1,to_measure(mu)]"
                                              ("F" "F2"))
                                             (inst
                                              -
                                              "LAMBDA (x: T1): f!2(x, y!1)")
                                             (split -1)
                                             (("1"
                                               (flatten)
                                               (expand "converges_upto?")
                                               (flatten)
                                               (hide-all-but
                                                (-2 -6 2 -13))
                                               (use
                                                "hausdorff_convergence.unique_limit")
                                               (assert)
                                               (replace -3 1 rl)
                                               (assert))
                                              ("2"
                                               (expand
                                                "pointwise_converges_upto?")
                                               (split 1)
                                               (("1"
                                                 (expand
                                                  "pointwise_convergence?")
                                                 (skosimp)
                                                 (replace -2 1 rl)
                                                 (assert)
                                                 (inst -5 "(x!1,y!1)"))
                                                ("2"
                                                 (expand
                                                  "pointwise_increasing?")
                                                 (skosimp)
                                                 (expand "increasing?")
                                                 (skolem + ("i!1" "j!1"))
                                                 (flatten)
                                                 (inst - "i!1" "j!1")
                                                 (inst - "x!1")
                                                 (assert))))
                                              ("3"
                                               (hide 3)
                                               (expand "bounded?")
                                               (split)
                                               (("1"
                                                 (expand
                                                  "bounded_above?")
                                                 (inst + "RHS2")
                                                 (skolem + "n!1")
                                                 (hide 2)
                                                 (rewrite
                                                  "metric_convergence_def")
                                                 (case
                                                  "RHS2 < (integral o F2)(n!1)")
                                                 (("1"
                                                   (hide 1)
                                                   (expand
                                                    "metric_converges_to")
                                                   (inst
                                                    -4
                                                    "(integral o F2)(n!1)-RHS2")
                                                   (("1"
                                                     (skosimp)
                                                     (expand "member")
                                                     (expand "o ")
                                                     (expand "ball")
                                                     (inst -4 "n!1+n!2")
                                                     (assert)
                                                     (inst
                                                      -2
                                                      "n!1"
                                                      "n!1+n!2")
                                                     (assert)
                                                     (lemma
                                                      "integral_ae_le[T1,S1,to_measure(mu)]"
                                                      ("f1"
                                                       "F2(n!1)"
                                                       "f2"
                                                       "F2(n!1 + n!2)"))
                                                     (split)
                                                     (("1"
                                                       (expand "abs")
                                                       (assert))
                                                      ("2"
                                                       (hide-all-but
                                                        (-2 1))
                                                       (expand "ae_le?")
                                                       (expand
                                                        "pointwise_ae?")
                                                       (expand "ae?")
                                                       (expand "fullset")
                                                       (expand "ae_in?")
                                                       (inst
                                                        +
                                                        "emptyset")
                                                       (skosimp)
                                                       (expand "member")
                                                       (inst - "x!1"))))
                                                    ("2"
                                                     (expand "o")
                                                     (assert))))
                                                  ("2" (assert))))
                                                ("2"
                                                 (expand
                                                  "bounded_below?")
                                                 (inst + "0")
                                                 (skolem + "n!1")
                                                 (expand "o ")
                                                 (replace -2 1 rl)
                                                 (assert)
                                                 (typepred "FF(n!1)")
                                                 (expand "nn_isf?")
                                                 (lemma
                                                  "integral_nonneg[T1, S1, to_measure(mu)]"
                                                  ("f"
                                                   "LAMBDA (x: T1): FF(n!1)(x, y!1)"))
                                                 (("1"
                                                   (assert)
                                                   (skosimp)
                                                   (inst - "(x!1,y!1)"))
                                                  ("2"
                                                   (lemma
                                                    "isf_y_section"
                                                    ("i"
                                                     "FF(n!1)"
                                                     "y"
                                                     "y!1"))
                                                   (use
                                                    "isf_is_integrable[T1, S1, to_measure(mu)]"))))))))
                                            ("2"
                                             (skosimp)
                                             (skosimp)
                                             (expand "F2")
                                             (expand
                                              "increasing_nn_isf?")
                                             (expand
                                              "pointwise_increasing?")
                                             (inst -4 "(x!1, y!1)")
                                             (expand "increasing?")
                                             (inst -4 "i!1" "j!1")
                                             (assert))))
                                          ("2"
                                           (apply-extensionality
                                            :hide?
                                            t)
                                           (("1"
                                             (expand "o")
                                             (expand "F2")
                                             (rewrite
                                              "isf_integral"
                                              1
                                              :dir
                                              rl)
                                             (rewrite "isf_y_section"))
                                            ("2"
                                             (skosimp)
                                             (rewrite "isf_y_section"))))
                                          ("3"
                                           (skolem + "n!1")
                                           (expand "F2")
                                           (lemma
                                            "isf_y_section"
                                            ("i" "FF(n!1)" "y" "y!1"))
                                           (hide-all-but (-1 1))
                                           (use
                                            "isf_is_integrable[T1, S1, to_measure(mu)]"))
                                          ("4"
                                           (skosimp)
                                           (rewrite "isf_y_section"))))
                                        ("2" (replace -8 1 rl) (assert))
                                        ("3" (inst -9 "y!1"))))))
                                    ("2"
                                     (hide -1 2)
                                     (expand "bounded?" 1)
                                     (split 1)
                                     (("1"
                                       (expand "bounded_above?")
                                       (inst + "integral(f!2)")
                                       (("1"
                                         (skolem + "n!1")
                                         (expand "o" 1)
                                         (rewrite
                                          "metric_convergence_def"
                                          -3)
                                         (expand "metric_converges_to")
                                         (expand "member")
                                         (expand "o")
                                         (case-replace
                                          "integral(f!2)=LHS")
                                         (("1"
                                           (expand "ball")
                                           (name
                                            "HH"
                                            "lambda (i:nat): integral(LAMBDA (y: T2): isf_integral(LAMBDA (x: T1): FF(i)(x, y)))")
                                           (case "LHS < HH(n!1)")
                                           (("1"
                                             (case
                                              "EXISTS (n_1: nat):
                                                        FORALL (i:nat):
                                                          i >= n_1 =>
                                                           abs(LHS-HH(i))
                                                            < HH(n!1)-LHS")
                                             (("1"
                                               (hide -7)
                                               (skosimp)
                                               (inst - "n!1+n!2")
                                               (assert)
                                               (case "increasing?(HH)")
                                               (("1"
                                                 (expand "increasing?")
                                                 (inst - "n!1" "n!1+n!2")
                                                 (assert))
                                                ("2"
                                                 (hide -1 -2 -3 2)
                                                 (expand
                                                  "increasing_nn_isf?")
                                                 (expand
                                                  "pointwise_increasing?")
                                                 (expand "increasing?")
                                                 (skolem + ("i!1" "j!1"))
                                                 (flatten)
                                                 (expand "HH")
                                                 (lemma
                                                  "integral_ae_le[T2,S2,to_measure(nu)]"
                                                  ("f1"
                                                   "LAMBDA (y: T2): isf_integral(LAMBDA (x: T1): FF(i!1)(x, y))"
                                                   "f2"
                                                   "LAMBDA (y: T2): isf_integral(LAMBDA (x: T1): FF(j!1)(x, y))"))
                                                 (("1"
                                                   (assert)
                                                   (hide 2)
                                                   (expand "ae_le?")
                                                   (expand
                                                    "pointwise_ae?")
                                                   (expand "ae?")
                                                   (expand "fullset")
                                                   (expand "ae_in?")
                                                   (inst + "emptyset")
                                                   (skolem + "y!1")
                                                   (flatten)
                                                   (assert)
                                                   (lemma
                                                    "isf_integral_le[T1,S1,to_measure(mu)]"
                                                    ("i1"
                                                     "LAMBDA (x: T1): FF(i!1)(x, y!1)"
                                                     "i2"
                                                     "LAMBDA (x: T1): FF(j!1)(x, y!1)"))
                                                   (("1"
                                                     (assert)
                                                     (skosimp)
                                                     (inst
                                                      -3
                                                      "(x!1,y!1)")
                                                     (inst - "i!1" "j!1")
                                                     (assert))
                                                    ("2"
                                                     (rewrite
                                                      "isf_y_section"))
                                                    ("3"
                                                     (rewrite
                                                      "isf_y_section"))))
                                                  ("2"
                                                   (rewrite
                                                    "isf_integral_y")
                                                   (case-replace
                                                    "(LAMBDA (x: T1, y: T2): FF(j!1)(x, y))=FF(j!1)")
                                                   (("1" (assert))
                                                    ("2"
                                                     (apply-extensionality
                                                      :hide?
                                                      t))))
                                                  ("3"
                                                   (skosimp)
                                                   (rewrite
                                                    "isf_y_section"))
                                                  ("4"
                                                   (rewrite
                                                    "isf_integral_y")
                                                   (case-replace
                                                    "(LAMBDA (x: T1, y: T2): FF(i!1)(x, y))=FF(i!1)")
                                                   (("1" (assert))
                                                    ("2"
                                                     (apply-extensionality
                                                      :hide?
                                                      t))))
                                                  ("5"
                                                   (skosimp)
                                                   (rewrite
                                                    "isf_y_section"))))))
                                              ("2"
                                               (inst -6 "HH(n!1)-LHS")
                                               (("1"
                                                 (skosimp)
                                                 (inst + "n!2")
                                                 (skosimp)
                                                 (inst - "i!1")
                                                 (assert)
                                                 (hide 2)
                                                 (expand "HH" 1 1)
                                                 (propax))
                                                ("2" (assert))))))
                                            ("2"
                                             (expand "HH")
                                             (assert))))
                                          ("2"
                                           (hide 2)
                                           (expand "LHS")
                                           (rewrite "integral_nn"))))
                                        ("2"
                                         (assert)
                                         (lemma
                                          "nn_integrable_is_integrable[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu, nu))]")
                                         (inst - "f!2"))))
                                      ("2"
                                       (expand "bounded_below?")
                                       (inst + "0")
                                       (skolem + "n!1")
                                       (expand "o")
                                       (lemma
                                        "integral_nonneg[T2,S2,to_measure(nu)]"
                                        ("f"
                                         "LAMBDA (y: T2): isf_integral(LAMBDA (x: T1): FF(n!1)(x, y))"))
                                       (("1"
                                         (assert)
                                         (hide 2)
                                         (skolem + "y!1")
                                         (lemma
                                          "isf_integral_pos[T1,S1,to_measure(mu)]"
                                          ("i"
                                           "LAMBDA (x: T1): FF(n!1)(x, y!1)"))
                                         (("1"
                                           (assert)
                                           (skosimp)
                                           (typepred "FF(n!1)")
                                           (expand "nn_isf?")
                                           (inst - "(x!1,y!1)"))
                                          ("2"
                                           (rewrite "isf_y_section"))))
                                        ("2"
                                         (rewrite "isf_integral_y")
                                         (case-replace
                                          "(LAMBDA (x: T1, y: T2): FF(n!1)(x, y))=FF(n!1)")
                                         (("1" (assert))
                                          ("2"
                                           (apply-extensionality
                                            :hide?
                                            t))))
                                        ("3"
                                         (skosimp)
                                         (rewrite "isf_y_section"))))))))
                                  ("2"
                                   (hide 2 -3)
                                   (expand "increasing_nn_isf?")
                                   (expand "ae_increasing?")
                                   (inst + "emptyset")
                                   (skolem + "y!1")
                                   (flatten)
                                   (skosimp)
                                   (hide 1)
                                   (expand "pointwise_increasing?")
                                   (expand "increasing?")
                                   (lemma
                                    "isf_integral_le[T1,S1,to_measure(mu)]"
                                    ("i1"
                                     "LAMBDA (x: T1): FF(i!1)(x, y!1)"
                                     "i2"
                                     "LAMBDA (x: T1): FF(j!1)(x, y!1)"))
                                   (("1"
                                     (assert)
                                     (skosimp)
                                     (inst - "(x!1,y!1)")
                                     (inst - "i!1" "j!1")
                                     (assert))
                                    ("2" (rewrite "isf_y_section"))
                                    ("3" (rewrite "isf_y_section"))))))
                                ("2"
                                 (skosimp)
                                 (rewrite "isf_integral_y")
                                 (case-replace
                                  "(LAMBDA (x: T1, y: T2): FF(n!1)(x, y))=FF(n!1)")
                                 (("1" (assert))
                                  ("2" (apply-extensionality :hide? t))))
                                ("3"
                                 (skosimp)
                                 (rewrite "isf_y_section"))))
                              ("2"
                               (hide 2)
                               (expand "o ")
                               (apply-extensionality :hide? t)
                               (("1" (rewrite "isf_fubini_tonelli_4"))
                                ("2"
                                 (skolem + "n!1")
                                 (rewrite "isf_integral_y")
                                 (case-replace
                                  "(LAMBDA (x: T1, y: T2): FF(n!1)(x, y))=FF(n!1)")
                                 (("1" (assert))
                                  ("2" (apply-extensionality :hide? t))))
                                ("3"
                                 (skolem + ("n!1" "y!1"))
                                 (rewrite "isf_y_section"))))
                              ("3"
                               (skosimp)
                               (rewrite "isf_integral_y")
                               (case-replace
                                "(LAMBDA (x: T1, y: T2): FF(n!1)(x, y))=FF(n!1)")
                               (("1" (assert))
                                ("2" (apply-extensionality :hide? t))))
                              ("4" (skosimp) (rewrite "isf_y_section"))))
                            ("2"
                             (hide 2)
                             (expand "G2")
                             (rewrite
                              "indefinite_integrable[T2, S2, to_measure(nu)]"
                              1))))
                          ("2"
                           (skosimp)
                           (replace -2 1 rl)
                           (assert)
                           (lemma "integral_nonneg[T1,S1,to_measure(mu)]"
                            ("f" "LAMBDA (x: T1): f!2(x, y!1)"))
                           (("1" (assert) (skosimp) (inst - "(x!1,y!1)"))
                            ("2" (inst -3 "y!1"))))))
                        ("2"
                         (skosimp)
                         (inst -4 "z!1`1" "z!1`2")
                         (case-replace "(z!1`1, z!1`2)=z!1")
                         (("1" (assert) (prop) (assert))
                          ("2" (decompose-equality))))))
                      ("2"
                       (apply-extensionality :hide? t)
                       (inst -7 "x!1")
                       (hide 2 -1)
                       (expand "G2")
                       (inst -3 "_" "x!1")
                       (expand "*")
                       (expand "complement")
                       (expand "phi")
                       (expand "member")
                       (case-replace "NN(x!1)")
                       (("1"
                         (case-replace
                          "(LAMBDA (x: T1): f!2(x, x!1))=LAMBDA (x: T1):0")
                         (("1" (rewrite "integral_zero") (assert))
                          ("2" (apply-extensionality :hide? t))))
                        ("2"
                         (assert)
                         (flatten)
                         (case-replace
                          "(LAMBDA (x: T1): f!2(x, x!1))=(LAMBDA (x: T1): f!1(x, x!1))")
                         (("1" (assert))
                          ("2" (apply-extensionality :hide? t))))))
                      ("3" (propax))))
                    ("2"
                     (skosimp)
                     (inst -5 "y!1")
                     (inst -2 "_" "y!1")
                     (case-replace "NN(y!1)")
                     (("1"
                       (hide-all-but (-3 -4 1))
                       (case-replace
                        "(LAMBDA (x: T1): f!2(x, y!1))=lambda (x:T1):0")
                       (("1" (rewrite "integrable_zero"))
                        ("2" (apply-extensionality :hide? t))))
                      ("2"
                       (assert)
                       (flatten)
                       (case-replace
                        "(LAMBDA (x: T1): f!2(x, y!1))=(LAMBDA (x: T1): f!1(x, y!1))")
                       (apply-extensionality :hide? t))))))
                  ("2"
                   (hide 2)
                   (expand "ae_eq?")
                   (expand "restrict")
                   (expand "pointwise_ae?")
                   (expand "ae?")
                   (expand "fullset" 1)
                   (expand "ae_in?")
                   (expand "member")
                   (inst + "cross_product(fullset[T1],NN)")
                   (("1"
                     (skolem + "z!1")
                     (flatten)
                     (expand "fullset" 1)
                     (expand "cross_product" 1)
                     (inst - "z!1`1" "z!1`2")
                     (assert)
                     (case-replace "(z!1`1, z!1`2)=z!1")
                     (("1" (assert)) ("2" (decompose-equality))))
                    ("2"
                     (expand "negligible_set?")
                     (inst + "cross_product[T1, T2](fullset[T1], NN)")
                     (split)
                     (("1"
                       (expand "null_set?")
                       (expand "measurable_set?")
                       (assert)
                       (hide-all-but 1)
                       (typepred "NN")
                       (expand "null_set?")
                       (flatten)
                       (expand "measurable_set?")
                       (expand "mu_fin?")
                       (expand "to_measure")
                       (expand "mu")
                       (expand "to_measure")
                       (expand "fm_times")
                       (case "sigma_times(S1, S2)(cross_product[T1, T2](fullset[T1], NN))")
                       (("1"
                         (replace -1)
                         (lemma "rectangle_measure1[T1,T2,S1,S2]"
                          ("M"
                           "cross_product[T1, T2](fullset[T1], NN)"
                           "X"
                           "fullset[T1]"
                           "Y"
                           "NN"
                           "mu"
                           "mu"
                           "nu"
                           "nu"))
                         (("1" (assert)) ("2" (propax))))
                        ("2"
                         (hide 2)
                         (expand "sigma_times")
                         (lemma "generated_sigma_algebra_subset1"
                          ("X"
                           "extend
                                                             [setof[[T1, T2]],
                                                              measurable_rectangle[T1, T2](S1, S2),
                                                              bool, FALSE]
                                                             (fullset
                                                                  [measurable_rectangle
                                                                   [T1, T2](S1, S2)])"))
                         (expand "subset?")
                         (inst -
                          "cross_product[T1, T2](fullset[T1], NN)")
                         (assert)
                         (hide 2)
                         (expand "fullset" 1 1)
                         (expand "extend")
                         (prop)
                         (expand "measurable_rectangle?")
                         (inst + "fullset" "NN")
                         (assert))))
                      ("2" (expand "subset?") (skosimp))))))))
                ("2"
                 (hide-all-but 1)
                 (skosimp)
                 (expand "f!2")
                 (expand "*")
                 (expand "phi")
                 (expand "complement")
                 (expand "fullset")
                 (expand "cross_product")
                 (expand "member")
                 (propax))))
              ("2"
               (hide-all-but (-1 -2 1))
               (lemma
                "integrable_is_measurable[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu, nu))]"
                ("x"
                 "phi(cross_product(fullset[T1], complement(NN))) * f!1"))
               (("1" (propax)) ("2" (propax))))))
            ("2" (expand "measurable_set?") (propax))))
          ("2"
           (hide-all-but 1)
           (expand "sigma_times")
           (lemma "generated_sigma_algebra_subset1"
            ("X"
             "extend
                                               [setof[[T1, T2]],
                                                measurable_rectangle[T1, T2](S1, S2),
                                                bool, FALSE]
                                               (fullset
                                                    [measurable_rectangle
                                                     [T1, T2](S1, S2)])"))
           (expand "subset?")
           (expand "member")
           (inst - "cross_product(fullset[T1], complement(NN))")
           (assert)
           (hide 2)
           (expand "fullset" 1 1)
           (expand "extend")
           (prop)
           (expand "measurable_rectangle?")
           (inst + "fullset" "complement(NN)")
           (assert)
           (typepred "NN")
           (expand "null_set?")
           (flatten)
           (expand "measurable_set?")
           (lemma "sigma_algebra_complement[T2,S2]" ("x" "NN"))
           (assert))))
        ("2"
         (replace -3 1 rl)
         (apply-extensionality :hide? t)
         (hide-all-but 1)
         (grind))))
      ("2" (decompose-equality))))
    ("2"
     (expand "nn_measurable?")
     (split)
     (("1"
       (use "nn_integrable_is_measurable[[T1, T2], sigma_times(S1, S2), to_measure(fm_times(mu, nu))]"))
      ("2" (skosimp) (assert))))))


